Răsfoiți Sursa

Implement iterating throught the list with args

Ehsan Chiniforooshan 7 ani în urmă
părinte
comite
bab071b459

+ 6 - 2
cloudbridge/cloud/base/resources.py

@@ -356,12 +356,16 @@ class BasePageableObjectMixin(PageableObjectMixin):
     """
 
     def __iter__(self):
-        result_list = self.list()
+        for result in self.list_all():
+            yield result
+
+    def list_all(**kwargs):
+        result_list = self.list(**kwargs)
         if result_list.supports_server_paging:
             for result in result_list:
                 yield result
             while result_list.is_truncated:
-                result_list = self.list(marker=result_list.marker)
+                result_list = self.list(marker=result_list.marker, **kwargs)
                 for result in result_list:
                     yield result
         else:

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

@@ -878,8 +878,7 @@ class GCESubnetService(BaseSubnetService):
             name = 'subnet-{0}'.format(uuid.uuid4())
         GCESubnet.assert_valid_resource_name(name)
         region_name = self._zone_to_region_name(zone)
-        subnets = self.list(network)
-        for subnet in subnets:
+        for subnet in self.list_all(network=network):
             if BaseNetwork.cidr_blocks_overlap(subnet.cidr_block, cidr_block):
                 return subnet
             if subnet.name == name and subnet.region_name == region_name:
@@ -915,7 +914,7 @@ class GCESubnetService(BaseSubnetService):
         zone.
         """
         network = self.provider.networking.networks.get_or_create_default()
-        subnets = self.list(network, zone)
+        subnets = list(self.list_all(network=network, zone=zone))
         if len(subnets) > 1:
             cb.log.warning('The default network has more than one subnetwork '
                            'in a region')