Przeglądaj źródła

Add custom to_json implementation for OpenStack Region

Enis Afgan 10 lat temu
rodzic
commit
be9c855e14

+ 6 - 0
cloudbridge/cloud/providers/openstack/resources.py

@@ -375,6 +375,12 @@ class OpenStackRegion(BaseRegion):
         # value requires Admin privileges
         return self._provider.nova.availability_zones.list(detailed=False)
 
+    def to_json(self):
+        attr = inspect.getmembers(self, lambda a: not(inspect.isroutine(a)))
+        js = {k: v for(k, v) in attr if not k.startswith('_')}
+        js['zones'] = [z.zoneName for z in self.zones]
+        return json.dumps(js, sort_keys=True)
+
 
 class OpenStackVolume(BaseVolume):
 

+ 5 - 0
test/test_region_service.py

@@ -38,3 +38,8 @@ class CloudRegionServiceTestCase(ProviderTestBase):
             region.id in repr(region),
             "repr(obj) should contain the object id so that the object"
             " can be reconstructed, but does not.")
+
+        self.assertTrue(
+            region.name in region.to_json(),
+            "Region name {0} not in JSON representation {1}".format(
+                region.name, region.to_json()))