[lxc-devel] [lxd/master] lxd init tweaks and Go tip gofmt

stgraber on Github lxc-bot at linuxcontainers.org
Thu Apr 5 19:16:43 UTC 2018


A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 301 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20180405/4dd89682/attachment.bin>
-------------- next part --------------
From b7ac372d4ccf60402010b70d0cb513d8bd0f5a1d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Wed, 4 Apr 2018 13:26:04 -0400
Subject: [PATCH 1/2] lxd/init: Consistency
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxd/main_init_interactive.go | 57 ++++++++++++++++++++++----------------------
 1 file changed, 29 insertions(+), 28 deletions(-)

diff --git a/lxd/main_init_interactive.go b/lxd/main_init_interactive.go
index 240acf0da0..14d9b519f9 100644
--- a/lxd/main_init_interactive.go
+++ b/lxd/main_init_interactive.go
@@ -72,7 +72,7 @@ func (c *cmdInit) RunInteractive(cmd *cobra.Command, args []string, d lxd.Contai
 	}
 
 	// Print the YAML
-	if cli.AskBool("Would you like a YAML \"lxd init\" preseed to be printed [default=no]? ", "no") {
+	if cli.AskBool("Would you like a YAML \"lxd init\" preseed to be printed? (yes/no) [default=no]: ", "no") {
 		out, err := yaml.Marshal(config)
 		if err != nil {
 			return nil, errors.Wrap(err, "Failed to render the config")
@@ -123,8 +123,9 @@ func (c *cmdInit) askClustering(config *initData, d lxd.ContainerServer) error {
 				}
 
 				certDigest := shared.CertFingerprint(cert)
-				fmt.Printf("Cluster certificate fingerprint: %s\n", certDigest)
-				if !cli.AskBool("ok? (yes/no) [default=no]: ", "no") {
+				fmt.Printf("Cluster fingerprint: %s\n", certDigest)
+				fmt.Printf("You can validate this fingerpring by running \"lxc info\" locally on an existing node.\n")
+				if !cli.AskBool("Is this the correct fingerprint? (yes/no) [default=no]: ", "no") {
 					return fmt.Errorf("User aborted configuration")
 				}
 				config.Cluster.ClusterCertificate = string(pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: cert.Raw}))
@@ -207,7 +208,7 @@ func (c *cmdInit) askClustering(config *initData, d lxd.ContainerServer) error {
 			// Prompt for network config
 			targetNetworks, err := client.GetNetworks()
 			if err != nil {
-				return errors.Wrap(err, "failed to retrieve networks from the cluster")
+				return errors.Wrap(err, "Failed to retrieve networks from the cluster")
 			}
 
 			config.Networks = []api.NetworksPost{}
@@ -247,7 +248,7 @@ func (c *cmdInit) askClustering(config *initData, d lxd.ContainerServer) error {
 }
 
 func (c *cmdInit) askMAAS(config *initData, d lxd.ContainerServer) error {
-	if !cli.AskBool("Would you like to connect to a MAAS server (yes/no) [default=no]? ", "no") {
+	if !cli.AskBool("Would you like to connect to a MAAS server? (yes/no) [default=no]: ", "no") {
 		return nil
 	}
 
@@ -256,20 +257,20 @@ func (c *cmdInit) askMAAS(config *initData, d lxd.ContainerServer) error {
 		serverName = "lxd"
 	}
 
-	maasHostname := cli.AskString(fmt.Sprintf("What's the name of this host in MAAS? [default=%s]? ", serverName), serverName, nil)
+	maasHostname := cli.AskString(fmt.Sprintf("What's the name of this host in MAAS? [default=%s]: ", serverName), serverName, nil)
 	if maasHostname != serverName {
 		config.Config["maas.machine"] = maasHostname
 	}
 
-	config.Config["maas.api.url"] = cli.AskString("What's the URL of your MAAS server? ", "", nil)
-	config.Config["maas.api.key"] = cli.AskString("What's a valid API key for your MAAS server? ", "", nil)
+	config.Config["maas.api.url"] = cli.AskString("URL of your MAAS server (e.g. http://1.2.3.4:5240/MAAS): ", "", nil)
+	config.Config["maas.api.key"] = cli.AskString("API key for your MAAS server: ", "", nil)
 
 	return nil
 }
 
 func (c *cmdInit) askNetworking(config *initData, d lxd.ContainerServer) error {
-	if !cli.AskBool("Would you like to create a new network bridge (yes/no) [default=yes]? ", "yes") {
-		if cli.AskBool("Would you like to configure LXD to use an existing bridge or host interface (yes/no) [default=no]? ", "no") {
+	if !cli.AskBool("Would you like to create a new network bridge? (yes/no) [default=yes]: ", "yes") {
+		if cli.AskBool("Would you like to configure LXD to use an existing bridge or host interface? (yes/no) [default=no]: ", "no") {
 			for {
 				name := cli.AskString("Name of the existing bridge or host interface: ", "", nil)
 
@@ -290,15 +291,15 @@ func (c *cmdInit) askNetworking(config *initData, d lxd.ContainerServer) error {
 					config.Profiles[0].Devices["eth0"]["nictype"] = "bridged"
 				}
 
-				if config.Config["maas.api.url"] != "" && cli.AskBool("Is this interface connected to your MAAS server? (yes/no) [default=yes]? ", "yes") {
-					maasSubnetV4 := cli.AskString("What's the name of the MAAS IPv4 subnet for this interface (empty for no subnet)? ", "",
+				if config.Config["maas.api.url"] != "" && cli.AskBool("Is this interface connected to your MAAS server? (yes/no) [default=yes]: ", "yes") {
+					maasSubnetV4 := cli.AskString("MAAS IPv4 subnet name for this interface (empty for no subnet): ", "",
 						func(input string) error { return nil })
 
 					if maasSubnetV4 != "" {
 						config.Profiles[0].Devices["eth0"]["maas.subnet.ipv4"] = maasSubnetV4
 					}
 
-					maasSubnetV6 := cli.AskString("What's the name of the MAAS IPv6 subnet for this interface (empty for no subnet)? ", "",
+					maasSubnetV6 := cli.AskString("MAAS IPv6 subnet name for this interface (empty for no subnet): ", "",
 						func(input string) error { return nil })
 
 					if maasSubnetV6 != "" {
@@ -319,7 +320,7 @@ func (c *cmdInit) askNetworking(config *initData, d lxd.ContainerServer) error {
 		network.Config = map[string]string{}
 
 		// Network name
-		network.Name = cli.AskString("What should the new bridge be called [default=lxdbr0]? ", "lxdbr0", networkValidName)
+		network.Name = cli.AskString("What should the new bridge be called? [default=lxdbr0]: ", "lxdbr0", networkValidName)
 		_, _, err := d.GetNetwork(network.Name)
 		if err == nil {
 			fmt.Printf("The requested network bridge \"%s\" already exists. Please choose another name.\n", network.Name)
@@ -335,7 +336,7 @@ func (c *cmdInit) askNetworking(config *initData, d lxd.ContainerServer) error {
 		}
 
 		// IPv4
-		network.Config["ipv4.address"] = cli.AskString("What IPv4 address should be used (CIDR subnet notation, “auto” or “none”) [default=auto]? ", "auto", func(value string) error {
+		network.Config["ipv4.address"] = cli.AskString("What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: ", "auto", func(value string) error {
 			if shared.StringInSlice(value, []string{"auto", "none"}) {
 				return nil
 			}
@@ -345,11 +346,11 @@ func (c *cmdInit) askNetworking(config *initData, d lxd.ContainerServer) error {
 
 		if !shared.StringInSlice(network.Config["ipv4.address"], []string{"auto", "none"}) {
 			network.Config["ipv4.nat"] = fmt.Sprintf("%v",
-				cli.AskBool("Would you like LXD to NAT IPv4 traffic on your bridge? [default=yes]? ", "yes"))
+				cli.AskBool("Would you like LXD to NAT IPv4 traffic on your bridge? [default=yes]: ", "yes"))
 		}
 
 		// IPv6
-		network.Config["ipv6.address"] = cli.AskString("What IPv6 address should be used (CIDR subnet notation, “auto” or “none”) [default=auto]? ", "auto", func(value string) error {
+		network.Config["ipv6.address"] = cli.AskString("What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: ", "auto", func(value string) error {
 			if shared.StringInSlice(value, []string{"auto", "none"}) {
 				return nil
 			}
@@ -359,7 +360,7 @@ func (c *cmdInit) askNetworking(config *initData, d lxd.ContainerServer) error {
 
 		if !shared.StringInSlice(network.Config["ipv6.address"], []string{"auto", "none"}) {
 			network.Config["ipv6.nat"] = fmt.Sprintf("%v",
-				cli.AskBool("Would you like LXD to NAT IPv6 traffic on your bridge? [default=yes]? ", "yes"))
+				cli.AskBool("Would you like LXD to NAT IPv6 traffic on your bridge? [default=yes]: ", "yes"))
 		}
 
 		// Add the new network
@@ -372,14 +373,14 @@ func (c *cmdInit) askNetworking(config *initData, d lxd.ContainerServer) error {
 
 func (c *cmdInit) askStorage(config *initData, d lxd.ContainerServer) error {
 	if config.Cluster != nil {
-		if cli.AskBool("Do you want to configure a new local storage pool (yes/no) [default=yes]? ", "yes") {
+		if cli.AskBool("Do you want to configure a new local storage pool? (yes/no) [default=yes]: ", "yes") {
 			err := c.askStoragePool(config, d, "local")
 			if err != nil {
 				return err
 			}
 		}
 
-		if cli.AskBool("Do you want to configure a new remote storage pool (yes/no) [default=no]? ", "no") {
+		if cli.AskBool("Do you want to configure a new remote storage pool? (yes/no) [default=no]: ", "no") {
 			err := c.askStoragePool(config, d, "remote")
 			if err != nil {
 				return err
@@ -389,7 +390,7 @@ func (c *cmdInit) askStorage(config *initData, d lxd.ContainerServer) error {
 		return nil
 	}
 
-	if !cli.AskBool("Do you want to configure a new storage pool (yes/no) [default=yes]? ", "yes") {
+	if !cli.AskBool("Do you want to configure a new storage pool? (yes/no) [default=yes]: ", "yes") {
 		return nil
 	}
 
@@ -462,14 +463,14 @@ func (c *cmdInit) askStoragePool(config *initData, d lxd.ContainerServer, poolTy
 
 		// Optimization for btrfs on btrfs
 		if pool.Driver == "btrfs" && backingFs == "btrfs" {
-			if cli.AskBool(fmt.Sprintf("Would you like to create a new btrfs subvolume under %s (yes/no) [default=yes]: ", shared.VarPath("")), "yes") {
+			if cli.AskBool(fmt.Sprintf("Would you like to create a new btrfs subvolume under %s? (yes/no) [default=yes]: ", shared.VarPath("")), "yes") {
 				pool.Config["source"] = shared.VarPath("storage-pools", pool.Name)
 				config.StoragePools = append(config.StoragePools, pool)
 				break
 			}
 		}
 
-		if cli.AskBool(fmt.Sprintf("Create a new %s pool (yes/no) [default=yes]? ", strings.ToUpper(pool.Driver)), "yes") {
+		if cli.AskBool(fmt.Sprintf("Create a new %s pool? (yes/no) [default=yes]: ", strings.ToUpper(pool.Driver)), "yes") {
 			if pool.Driver == "ceph" {
 				// Ask for the name of the cluster
 				pool.Config["ceph.cluster_name"] = cli.AskString("Name of the existing CEPH cluster [default=ceph]: ", "ceph", nil)
@@ -479,7 +480,7 @@ func (c *cmdInit) askStoragePool(config *initData, d lxd.ContainerServer, poolTy
 
 				// Ask for the number of placement groups
 				pool.Config["ceph.osd.pg_num"] = cli.AskString("Number of placement groups [default=32]: ", "32", nil)
-			} else if cli.AskBool("Would you like to use an existing block device (yes/no) [default=no]? ", "no") {
+			} else if cli.AskBool("Would you like to use an existing block device? (yes/no) [default=no]: ", "no") {
 				deviceExists := func(path string) error {
 					if !shared.IsBlockdevPath(path) {
 						return fmt.Errorf("'%s' is not a block device", path)
@@ -566,13 +567,13 @@ they otherwise would.
 
 `)
 
-		if cli.AskBool("Would you like to have your containers share their parent's allocation (yes/no) [default=yes]? ", "yes") {
+		if cli.AskBool("Would you like to have your containers share their parent's allocation? (yes/no) [default=yes]: ", "yes") {
 			config.Profiles[0].Config["security.privileged"] = "true"
 		}
 	}
 
 	// Network listener
-	if config.Cluster == nil && cli.AskBool("Would you like LXD to be available over the network (yes/no) [default=no]? ", "no") {
+	if config.Cluster == nil && cli.AskBool("Would you like LXD to be available over the network? (yes/no) [default=no]: ", "no") {
 		isIPAddress := func(s string) error {
 			if s != "all" && net.ParseIP(s) == nil {
 				return fmt.Errorf("'%s' is not an IP address", s)
@@ -595,8 +596,8 @@ they otherwise would.
 		config.Config["core.trust_password"] = cli.AskPassword("Trust password for new clients: ")
 	}
 
-	// Ask if the user wants images to be automatically refreshed.
-	if !cli.AskBool("Would you like stale cached images to be updated automatically (yes/no) [default=yes]? ", "yes") {
+	// Ask if the user wants images to be automatically refreshed
+	if !cli.AskBool("Would you like stale cached images to be updated automatically? (yes/no) [default=yes] ", "yes") {
 		config.Config["images.auto_update_interval"] = "0"
 	}
 

From 9e6650a284fc6246e4dc764b45b1a1fe12a0680e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 5 Apr 2018 15:16:06 -0400
Subject: [PATCH 2/2] Make new gofmt happy
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxd/db/migration_test.go | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lxd/db/migration_test.go b/lxd/db/migration_test.go
index fe7da56da5..153736b545 100644
--- a/lxd/db/migration_test.go
+++ b/lxd/db/migration_test.go
@@ -107,8 +107,8 @@ func TestImportPreClusteringData(t *testing.T) {
 		require.NoError(t, err)
 		assert.Equal(t,
 			map[string]string{
-				"source": "/foo/bar",
-				"size":   "123",
+				"source":                  "/foo/bar",
+				"size":                    "123",
 				"volatile.initial_source": "/foo/bar",
 				"zfs.pool_name":           "mypool",
 			}, config)


More information about the lxc-devel mailing list