Sophie

Sophie

distrib > Fedora > 18 > i386 > by-pkgid > 0305113317f9e80328b139dce3f45533 > files > 7

python-quantumclient-2.1-1.fc18.src.rpm

From 5dff8c653031954a75f531c2459220abd2ec7d10 Mon Sep 17 00:00:00 2001
From: Kyle Mestery <kmestery@cisco.com>
Date: Thu, 1 Nov 2012 15:53:14 +0000
Subject: [PATCH] Correct the verbose output formatting when creating routers.

fixes bug 1070460

Change-Id: Id9157e7226f906ec608aa95766eeed1e62b5cc50
---
 quantumclient/quantum/v2_0/__init__.py | 48 +++++++++++++---------------------
 quantumclient/quantum/v2_0/router.py   |  1 +
 2 files changed, 19 insertions(+), 30 deletions(-)

diff --git a/quantumclient/quantum/v2_0/__init__.py b/quantumclient/quantum/v2_0/__init__.py
index c719d15..b067d32 100644
--- a/quantumclient/quantum/v2_0/__init__.py
+++ b/quantumclient/quantum/v2_0/__init__.py
@@ -200,6 +200,20 @@ class QuantumCommand(command.OpenStackCommand):
 
         return parser
 
+    def format_output_data(self, data):
+        # Modify data to make it more readable
+        if self.resource in data:
+            for k, v in data[self.resource].iteritems():
+                if isinstance(v, list):
+                    value = '\n'.join(utils.dumps(i) if isinstance(i, dict)
+                                      else str(i) for i in v)
+                    data[self.resource][k] = value
+                elif isinstance(v, dict):
+                    value = utils.dumps(v)
+                    data[self.resource][k] = value
+                elif v is None:
+                    data[self.resource][k] = ''
+
 
 class CreateCommand(QuantumCommand, show.ShowOne):
     """Create a resource for a given tenant
@@ -239,25 +253,13 @@ class CreateCommand(QuantumCommand, show.ShowOne):
         obj_creator = getattr(quantum_client,
                               "create_%s" % self.resource)
         data = obj_creator(body)
+        self.format_output_data(data)
         # {u'network': {u'id': u'e9424a76-6db4-4c93-97b6-ec311cd51f19'}}
         info = self.resource in data and data[self.resource] or None
         if info:
             print >>self.app.stdout, _('Created a new %s:' % self.resource)
         else:
             info = {'': ''}
-        for k, v in info.iteritems():
-            if isinstance(v, list):
-                value = ""
-                for _item in v:
-                    if value:
-                        value += "\n"
-                    if isinstance(_item, dict):
-                        value += utils.dumps(_item)
-                    else:
-                        value += str(_item)
-                info[k] = value
-            elif v is None:
-                info[k] = ''
         return zip(*sorted(info.iteritems()))
 
 
@@ -435,23 +437,9 @@ class ShowCommand(QuantumCommand, show.ShowOne):
 
         obj_shower = getattr(quantum_client, "show_%s" % self.resource)
         data = obj_shower(_id, **params)
+        self.format_output_data(data)
+        resource = data[self.resource]
         if self.resource in data:
-            for k, v in data[self.resource].iteritems():
-                if isinstance(v, list):
-                    value = ""
-                    for _item in v:
-                        if value:
-                            value += "\n"
-                        if isinstance(_item, dict):
-                            value += utils.dumps(_item)
-                        else:
-                            value += str(_item)
-                    data[self.resource][k] = value
-                elif isinstance(v, dict):
-                    value = utils.dumps(v)
-                    data[self.resource][k] = value
-                elif v is None:
-                    data[self.resource][k] = ''
-            return zip(*sorted(data[self.resource].iteritems()))
+            return zip(*sorted(resource.iteritems()))
         else:
             return None
diff --git a/quantumclient/quantum/v2_0/router.py b/quantumclient/quantum/v2_0/router.py
index 9d6787d..db85b80 100644
--- a/quantumclient/quantum/v2_0/router.py
+++ b/quantumclient/quantum/v2_0/router.py
@@ -56,6 +56,7 @@ class CreateRouter(CreateCommand):
 
     resource = 'router'
     log = logging.getLogger(__name__ + '.CreateRouter')
+    _formatters = {'external_gateway_info': _format_external_gateway_info, }
 
     def add_known_arguments(self, parser):
         parser.add_argument(