The following pull request was submitted through Github.
It can be accessed and reviewed at: https://github.com/lxc/lxd/pull/1801

This e-mail was sent by the LXC bot, direct replies will not reach the author
unless they happen to be subscribed to this list.

=== Description (from pull-request) ===
And fix output of existing config get to be vaguely parsable.

Signed-off-by: Stéphane Graber <stgra...@ubuntu.com>
From 45cbd3936a46e9ef39a6dc8d555adc924126dd99 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgra...@ubuntu.com>
Date: Wed, 23 Mar 2016 17:02:06 -0400
Subject: [PATCH] Implement "lxc config device get"
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

And fix output of existing config get to be vaguely parsable.

Signed-off-by: Stéphane Graber <stgra...@ubuntu.com>
---
 lxc/config.go  | 71 +++++++++++++++++++++++++++++++++++++++++++++++-----------
 lxc/profile.go |  7 ++++--
 po/lxd.pot     | 66 ++++++++++++++++++++++++++---------------------------
 3 files changed, 96 insertions(+), 48 deletions(-)

diff --git a/lxc/config.go b/lxc/config.go
index 54e8452..4bf7cc5 100644
--- a/lxc/config.go
+++ b/lxc/config.go
@@ -59,19 +59,18 @@ func (c *configCmd) usage() string {
                `Manage configuration.
 
 lxc config device add <[remote:]container> <name> <type> [key=value]...     
Add a device to a container.
+lxc config device get <[remote:]container> <name> <key>                     
Get a device property.
 lxc config device set <[remote:]container> <name> <key> <value>             
Set a device property.
 lxc config device unset <[remote:]container> <name> <key>                   
Unset a device property.
-lxc config device list [remote:]<container>                                 
List devices for container.
-lxc config device show [remote:]<container>                                 
Show full device details for container.
-lxc config device remove [remote:]<container> <name>                        
Remove device from container.
-
-lxc config get [remote:]<container> key                                     
Get configuration key.
-lxc config set [remote:]<container> key value                               
Set container configuration key.
-lxc config unset [remote:]<container> key                                   
Unset container configuration key.
-lxc config set key value                                                    
Set server configuration key.
-lxc config unset key                                                        
Unset server configuration key.
-lxc config show [--expanded] [remote:]<container>                           
Show container configuration.
-lxc config edit [remote:][container]                                        
Edit container configuration in external editor.
+lxc config device list <[remote:]container>                                 
List devices for container.
+lxc config device show <[remote:]container>                                 
Show full device details for container.
+lxc config device remove <[remote:]container> <name>                        
Remove device from container.
+
+lxc config get [remote:][container] <key>                                   
Get container or server configuration key.
+lxc config set [remote:][container] <key> <value>                           
Set container or server configuration key.
+lxc config unset [remote:][container] <key>                                 
Unset container or server configuration key.
+lxc config show [remote:][container] [--expanded]                           
Show container or server configuration.
+lxc config edit [remote:][container]                                        
Edit container or server configuration in external editor.
     Edit configuration, either by launching external editor or reading STDIN.
     Example: lxc config edit <container> # launch editor
              cat config.yml | lxc config edit <config> # read from config.yml
@@ -381,7 +380,7 @@ func (c *configCmd) run(config *lxd.Config, args []string) 
error {
                        if err != nil {
                                return err
                        }
-                       fmt.Printf("%s: %s\n", key, resp.Config[key])
+                       fmt.Println(resp.Config[key])
                } else {
                        resp, err := d.ServerStatus()
                        if err != nil {
@@ -397,7 +396,7 @@ func (c *configCmd) run(config *lxd.Config, args []string) 
error {
                                value = "false"
                        }
 
-                       fmt.Printf("%s: %s\n", key, value)
+                       fmt.Println(value)
                }
                return nil
 
@@ -413,6 +412,8 @@ func (c *configCmd) run(config *lxd.Config, args []string) 
error {
                        return c.deviceAdd(config, "container", args)
                case "remove":
                        return c.deviceRm(config, "container", args)
+               case "get":
+                       return c.deviceGet(config, "container", args)
                case "set":
                        return c.deviceSet(config, "container", args)
                case "unset":
@@ -618,6 +619,50 @@ func (c *configCmd) deviceAdd(config *lxd.Config, which 
string, args []string) e
        return err
 }
 
+func (c *configCmd) deviceGet(config *lxd.Config, which string, args []string) 
error {
+       if len(args) < 5 {
+               return errArgs
+       }
+
+       remote, name := config.ParseRemoteAndContainer(args[2])
+
+       client, err := lxd.NewClient(config, remote)
+       if err != nil {
+               return err
+       }
+
+       devname := args[3]
+       key := args[4]
+
+       if which == "profile" {
+               st, err := client.ProfileConfig(name)
+               if err != nil {
+                       return err
+               }
+
+               dev, ok := st.Devices[devname]
+               if !ok {
+                       return fmt.Errorf(i18n.G("The device doesn't exist"))
+               }
+
+               fmt.Println(dev[key])
+       } else {
+               st, err := client.ContainerInfo(name)
+               if err != nil {
+                       return err
+               }
+
+               dev, ok := st.Devices[devname]
+               if !ok {
+                       return fmt.Errorf(i18n.G("The device doesn't exist"))
+               }
+
+               fmt.Println(dev[key])
+       }
+
+       return nil
+}
+
 func (c *configCmd) deviceSet(config *lxd.Config, which string, args []string) 
error {
        if len(args) < 6 {
                return errArgs
diff --git a/lxc/profile.go b/lxc/profile.go
index 1b42ce2..a85c9c4 100644
--- a/lxc/profile.go
+++ b/lxc/profile.go
@@ -72,8 +72,9 @@ Devices:
 lxc profile device list <profile>                                   List 
devices in the given profile.
 lxc profile device show <profile>                                   Show full 
device details in the given profile.
 lxc profile device remove <profile> <name>                          Remove a 
device from a profile.
-lxc profile device set <[remote:]container> <name> <key> <value>    Set a 
device property.
-lxc profile device unset <[remote:]container> <name> <key>          Unset a 
device property.
+lxc profile device get <[remote:]profile> <name> <key>              Get a 
device property.
+lxc profile device set <[remote:]profile> <name> <key> <value>      Set a 
device property.
+lxc profile device unset <[remote:]profile> <name> <key>            Unset a 
device property.
 lxc profile device add <profile name> <device name> <device type> 
[key=value]...
     Add a profile device, such as a disk or a nic, to the containers
     using the specified profile.`)
@@ -278,6 +279,8 @@ func (c *profileCmd) doProfileDevice(config *lxd.Config, 
args []string) error {
                return cfg.deviceList(config, "profile", args)
        case "show":
                return cfg.deviceShow(config, "profile", args)
+       case "get":
+               return cfg.deviceGet(config, "profile", args)
        case "set":
                return cfg.deviceSet(config, "profile", args)
        case "unset":
diff --git a/po/lxd.pot b/po/lxd.pot
index d5a1545..5d98666 100644
--- a/po/lxd.pot
+++ b/po/lxd.pot
@@ -7,7 +7,7 @@
 msgid   ""
 msgstr  "Project-Id-Version: lxd\n"
         "Report-Msgid-Bugs-To: lxc-devel@lists.linuxcontainers.org\n"
-        "POT-Creation-Date: 2016-03-22 21:56-0400\n"
+        "POT-Creation-Date: 2016-03-23 17:02-0400\n"
         "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
         "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
         "Language-Team: LANGUAGE <l...@li.org>\n"
@@ -74,7 +74,7 @@ msgstr  ""
 msgid   "'/' not allowed in snapshot name"
 msgstr  ""
 
-#: lxc/profile.go:225
+#: lxc/profile.go:226
 msgid   "(none)"
 msgstr  ""
 
@@ -121,7 +121,7 @@ msgstr  ""
 msgid   "Available commands:"
 msgstr  ""
 
-#: lxc/config.go:271
+#: lxc/config.go:270
 msgid   "COMMON NAME"
 msgstr  ""
 
@@ -129,17 +129,17 @@ msgstr  ""
 msgid   "CREATED AT"
 msgstr  ""
 
-#: lxc/config.go:115
+#: lxc/config.go:114
 #, c-format
 msgid   "Can't read from stdin: %s"
 msgstr  ""
 
-#: lxc/config.go:128 lxc/config.go:161 lxc/config.go:183
+#: lxc/config.go:127 lxc/config.go:160 lxc/config.go:182
 #, c-format
 msgid   "Can't unset key '%s', it's not currently set."
 msgstr  ""
 
-#: lxc/profile.go:340
+#: lxc/profile.go:343
 msgid   "Cannot provide container name to list"
 msgstr  ""
 
@@ -167,7 +167,7 @@ msgstr  ""
 msgid   "Config key/value to apply to the new container"
 msgstr  ""
 
-#: lxc/config.go:499 lxc/config.go:564 lxc/image.go:669 lxc/profile.go:189
+#: lxc/config.go:500 lxc/config.go:565 lxc/image.go:669 lxc/profile.go:190
 #, c-format
 msgid   "Config parsing error: %s"
 msgstr  ""
@@ -251,12 +251,12 @@ msgid   "Delete containers or container snapshots.\n"
         "Destroy containers or snapshots with any attached data 
(configuration, snapshots, ...)."
 msgstr  ""
 
-#: lxc/config.go:616
+#: lxc/config.go:617
 #, c-format
 msgid   "Device %s added to %s"
 msgstr  ""
 
-#: lxc/config.go:759
+#: lxc/config.go:804
 #, c-format
 msgid   "Device %s removed from %s"
 msgstr  ""
@@ -265,7 +265,7 @@ msgstr  ""
 msgid   "EPHEMERAL"
 msgstr  ""
 
-#: lxc/config.go:273
+#: lxc/config.go:272
 msgid   "EXPIRY DATE"
 msgstr  ""
 
@@ -306,7 +306,7 @@ msgstr  ""
 msgid   "Expires: never"
 msgstr  ""
 
-#: lxc/config.go:270 lxc/image.go:591 lxc/image.go:616
+#: lxc/config.go:269 lxc/image.go:591 lxc/image.go:616
 msgid   "FINGERPRINT"
 msgstr  ""
 
@@ -349,7 +349,7 @@ msgstr  ""
 msgid   "IPV6"
 msgstr  ""
 
-#: lxc/config.go:272
+#: lxc/config.go:271
 msgid   "ISSUE DATE"
 msgstr  ""
 
@@ -505,8 +505,9 @@ msgid   "Manage configuration profiles.\n"
         "lxc profile device list <profile>                                   
List devices in the given profile.\n"
         "lxc profile device show <profile>                                   
Show full device details in the given profile.\n"
         "lxc profile device remove <profile> <name>                          
Remove a device from a profile.\n"
-        "lxc profile device set <[remote:]container> <name> <key> <value>    
Set a device property.\n"
-        "lxc profile device unset <[remote:]container> <name> <key>          
Unset a device property.\n"
+        "lxc profile device get <[remote:]profile> <name> <key>              
Get a device property.\n"
+        "lxc profile device set <[remote:]profile> <name> <key> <value>      
Set a device property.\n"
+        "lxc profile device unset <[remote:]profile> <name> <key>            
Unset a device property.\n"
         "lxc profile device add <profile name> <device name> <device type> 
[key=value]...\n"
         "    Add a profile device, such as a disk or a nic, to the 
containers\n"
         "    using the specified profile."
@@ -516,19 +517,18 @@ msgstr  ""
 msgid   "Manage configuration.\n"
         "\n"
         "lxc config device add <[remote:]container> <name> <type> 
[key=value]...     Add a device to a container.\n"
+        "lxc config device get <[remote:]container> <name> <key>               
      Get a device property.\n"
         "lxc config device set <[remote:]container> <name> <key> <value>       
      Set a device property.\n"
         "lxc config device unset <[remote:]container> <name> <key>             
      Unset a device property.\n"
-        "lxc config device list [remote:]<container>                           
      List devices for container.\n"
-        "lxc config device show [remote:]<container>                           
      Show full device details for container.\n"
-        "lxc config device remove [remote:]<container> <name>                  
      Remove device from container.\n"
-        "\n"
-        "lxc config get [remote:]<container> key                               
      Get configuration key.\n"
-        "lxc config set [remote:]<container> key value                         
      Set container configuration key.\n"
-        "lxc config unset [remote:]<container> key                             
      Unset container configuration key.\n"
-        "lxc config set key value                                              
      Set server configuration key.\n"
-        "lxc config unset key                                                  
      Unset server configuration key.\n"
-        "lxc config show [--expanded] [remote:]<container>                     
      Show container configuration.\n"
-        "lxc config edit [remote:][container]                                  
      Edit container configuration in external editor.\n"
+        "lxc config device list <[remote:]container>                           
      List devices for container.\n"
+        "lxc config device show <[remote:]container>                           
      Show full device details for container.\n"
+        "lxc config device remove <[remote:]container> <name>                  
      Remove device from container.\n"
+        "\n"
+        "lxc config get [remote:][container] <key>                             
      Get container or server configuration key.\n"
+        "lxc config set [remote:][container] <key> <value>                     
      Set container or server configuration key.\n"
+        "lxc config unset [remote:][container] <key>                           
      Unset container or server configuration key.\n"
+        "lxc config show [remote:][container] [--expanded]                     
      Show container or server configuration.\n"
+        "lxc config edit [remote:][container]                                  
      Edit container or server configuration in external editor.\n"
         "    Edit configuration, either by launching external editor or 
reading STDIN.\n"
         "    Example: lxc config edit <container> # launch editor\n"
         "             cat config.yml | lxc config edit <config> # read from 
config.yml\n"
@@ -686,11 +686,11 @@ msgstr  ""
 msgid   "New alias to define at target"
 msgstr  ""
 
-#: lxc/config.go:282
+#: lxc/config.go:281
 msgid   "No certificate provided to add"
 msgstr  ""
 
-#: lxc/config.go:305
+#: lxc/config.go:304
 msgid   "No fingerprint specified."
 msgstr  ""
 
@@ -758,11 +758,11 @@ msgid   "Presents details on how to use LXD.\n"
         "lxd help [--all]"
 msgstr  ""
 
-#: lxc/profile.go:190
+#: lxc/profile.go:191
 msgid   "Press enter to open the editor again"
 msgstr  ""
 
-#: lxc/config.go:500 lxc/config.go:565 lxc/image.go:670
+#: lxc/config.go:501 lxc/config.go:566 lxc/image.go:670
 msgid   "Press enter to start the editor again"
 msgstr  ""
 
@@ -789,17 +789,17 @@ msgstr  ""
 msgid   "Processes: %d"
 msgstr  ""
 
-#: lxc/profile.go:227
+#: lxc/profile.go:228
 #, c-format
 msgid   "Profile %s applied to %s"
 msgstr  ""
 
-#: lxc/profile.go:141
+#: lxc/profile.go:142
 #, c-format
 msgid   "Profile %s created"
 msgstr  ""
 
-#: lxc/profile.go:211
+#: lxc/profile.go:212
 #, c-format
 msgid   "Profile %s deleted"
 msgstr  ""
@@ -958,7 +958,7 @@ msgstr  ""
 msgid   "The container is currently running. Use --force to have it stopped 
and restarted."
 msgstr  ""
 
-#: lxc/config.go:645 lxc/config.go:663 lxc/config.go:701 lxc/config.go:719
+#: lxc/config.go:645 lxc/config.go:657 lxc/config.go:690 lxc/config.go:708 
lxc/config.go:746 lxc/config.go:764
 msgid   "The device doesn't exist"
 msgstr  ""
 
_______________________________________________
lxc-devel mailing list
lxc-devel@lists.linuxcontainers.org
http://lists.linuxcontainers.org/listinfo/lxc-devel

Reply via email to