Jelajahi Sumber

Fixed paging issues in openstack networking

Nuwan Goonasekera 8 tahun lalu
induk
melakukan
1f168d42bc

+ 10 - 2
cloudbridge/cloud/base/services.py

@@ -114,13 +114,13 @@ class BaseInstanceTypesService(
         super(BaseInstanceTypesService, self).__init__(provider)
 
     def get(self, instance_type_id):
-        itype = (t for t in self.list() if t.id == instance_type_id)
+        itype = (t for t in self if t.id == instance_type_id)
         return next(itype, None)
 
     def find(self, **kwargs):
         name = kwargs.get('name')
         if name:
-            return [itype for itype in self.list() if itype.name == name]
+            return [itype for itype in self if itype.name == name]
         else:
             raise TypeError(
                 "Invalid parameters for search. Supported attributes: {name}")
@@ -161,3 +161,11 @@ class BaseSubnetService(
 
     def __init__(self, provider):
         super(BaseSubnetService, self).__init__(provider)
+
+    def find(self, **kwargs):
+        name = kwargs.get('name')
+        if name:
+            return [subnet for subnet in self if subnet.name == name]
+        else:
+            raise TypeError(
+                "Invalid parameters for search. Supported attributes: {name}")

+ 2 - 3
cloudbridge/cloud/providers/openstack/services.py

@@ -699,7 +699,7 @@ class OpenStackNetworkService(BaseNetworkService):
         self._subnet_svc = OpenStackSubnetService(self.provider)
 
     def get(self, network_id):
-        network = (n for n in self.list() if n.id == network_id)
+        network = (n for n in self if n.id == network_id)
         return next(network, None)
 
     def list(self, limit=None, marker=None):
@@ -710,10 +710,9 @@ class OpenStackNetworkService(BaseNetworkService):
                                      limit=limit, marker=marker)
 
     def find(self, name, limit=None, marker=None):
-        search_opts = {'name': name}
         networks = [OpenStackNetwork(self.provider, network)
                     for network in self.provider.neutron.list_networks(
-                        search_opts=search_opts)
+                        name=name)
                     .get('networks', [])]
         return ClientPagedResultList(self.provider, networks,
                                      limit=limit, marker=marker)

+ 1 - 1
test/test_compute_service.py

@@ -332,7 +332,7 @@ class CloudComputeServiceTestCase(ProviderTestBase):
 
                 # TODO: Cloud specific code, needs fixing
                 if self.provider.PROVIDER_ID == 'openstack':
-                    for n in self.provider.network.list():
+                    for n in self.provider.network:
                         if n.external:
                             external_net = n
                             break

+ 1 - 1
test/test_network_service.py

@@ -178,7 +178,7 @@ class CloudNetworkServiceTestCase(ProviderTestBase):
             # On OpenStack only one network is external and on AWS every
             # network is external, yet we need to use the one we've created?!
             if self.provider.PROVIDER_ID == 'openstack':
-                for n in self.provider.network.list():
+                for n in self.provider.network:
                     if n.external:
                         external_net = n
                         break