Ehsan Chiniforooshan 7 лет назад
Родитель
Сommit
c18bc99035
2 измененных файлов с 8 добавлено и 1 удалено
  1. 1 1
      cloudbridge/cloud/base/resources.py
  2. 7 0
      cloudbridge/cloud/providers/gce/services.py

+ 1 - 1
cloudbridge/cloud/base/resources.py

@@ -359,7 +359,7 @@ class BasePageableObjectMixin(PageableObjectMixin):
         for result in self.list_all():
         for result in self.list_all():
             yield result
             yield result
 
 
-    def list_all(**kwargs):
+    def list_all(self, **kwargs):
         result_list = self.list(**kwargs)
         result_list = self.list(**kwargs)
         if result_list.supports_server_paging:
         if result_list.supports_server_paging:
             for result in result_list:
             for result in result_list:

+ 7 - 0
cloudbridge/cloud/providers/gce/services.py

@@ -880,10 +880,17 @@ class GCESubnetService(BaseSubnetService):
         region_name = self._zone_to_region_name(zone)
         region_name = self._zone_to_region_name(zone)
         for subnet in self.list_all(network=network):
         for subnet in self.list_all(network=network):
             if BaseNetwork.cidr_blocks_overlap(subnet.cidr_block, cidr_block):
             if BaseNetwork.cidr_blocks_overlap(subnet.cidr_block, cidr_block):
+                if subnet.region_name != region_name:
+                    cb.log.error('Failed to create subnetwork in region %s: '
+                                 'the given IP range %s overlaps with a '
+                                 'subnetwork in a different region %s',
+                                 region_name, cidr_block, subnet.region_name)
+                    return None
                 return subnet
                 return subnet
             if subnet.name == name and subnet.region_name == region_name:
             if subnet.name == name and subnet.region_name == region_name:
                 return subnet
                 return subnet
 
 
+
         body = {'ipCidrRange': cidr_block,
         body = {'ipCidrRange': cidr_block,
                 'name': name,
                 'name': name,
                 'network': network.resource_url,
                 'network': network.resource_url,