almahmoud 7 лет назад
Родитель
Сommit
db5b993d95

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

@@ -642,7 +642,7 @@ class BaseVMFirewallRule(BaseCloudResource, VMFirewallRule):
         return js
 
     def delete(self):
-        self._provider.sercurity._vm_firewall_rules.delete(self.firewall, self)
+        self._provider.security._vm_firewall_rules.delete(self.firewall, self)
 
 
 class BasePlacementZone(BaseCloudResource, PlacementZone):
@@ -880,3 +880,7 @@ class BaseInternetGateway(BaseCloudResource, BaseObjectLifeCycleMixin,
             terminal_states=[GatewayState.ERROR, GatewayState.UNKNOWN],
             timeout=timeout,
             interval=interval)
+
+    def delete(self):
+        return self._provider.networking._gateways.delete(self.network_id,
+                                                          self)

+ 7 - 3
cloudbridge/cloud/base/services.py

@@ -72,7 +72,7 @@ class BaseSecurityService(SecurityService, BaseCloudService):
 
     @property
     def _vm_firewall_rules(self):
-        return self._vm_firewall_rules
+        return self._vm_firewall_rule_svc
 
 
 class BaseKeyPairService(
@@ -108,9 +108,11 @@ class BaseVMFirewallService(
 
 
 class BaseVMFirewallRuleService(BasePageableObjectMixin,
-                                VMFirewallRuleService):
+                                VMFirewallRuleService,
+                                BaseCloudService):
 
     def __init__(self, provider):
+        super(BaseVMFirewallRuleService, self).__init__(provider)
         self._provider = provider
 
     @property
@@ -372,6 +374,7 @@ class BaseRouterService(
 class BaseGatewayService(GatewayService, BaseCloudService):
 
     def __init__(self, provider):
+        super(BaseGatewayService, self).__init__(provider)
         self._provider = provider
 
     @property
@@ -379,9 +382,10 @@ class BaseGatewayService(GatewayService, BaseCloudService):
         return self._provider
 
 
-class BaseFloatingIPService(FloatingIPService):
+class BaseFloatingIPService(FloatingIPService, BaseCloudService):
 
     def __init__(self, provider):
+        super(BaseFloatingIPService, self).__init__(provider)
         self._provider = provider
 
     @property

+ 2 - 1
cloudbridge/cloud/base/subservices.py

@@ -74,7 +74,8 @@ class BaseVMFirewallRuleSubService(BasePageableObjectMixin,
         return self.__provider
 
     def get(self, rule_id):
-        return self._provider.security._vm_firewall_rules.get(self._firewall)
+        return self._provider.security._vm_firewall_rules.get(self._firewall,
+                                                              rule_id)
 
     def list(self, limit=None, marker=None):
         return self._provider.security._vm_firewall_rules.list(self._firewall,

+ 5 - 5
cloudbridge/cloud/providers/aws/services.py

@@ -80,7 +80,7 @@ class AWSSecurityService(BaseSecurityService):
         # Initialize provider services
         self._key_pairs = AWSKeyPairService(provider)
         self._vm_firewalls = AWSVMFirewallService(provider)
-        self._vm_firewall_rules = AWSVMFirewallRuleService(provider)
+        self._vm_firewall_rule_svc = AWSVMFirewallRuleService(provider)
 
 
 class AWSKeyPairService(BaseKeyPairService):
@@ -1193,13 +1193,13 @@ class AWSGatewayService(BaseGatewayService):
               priority=BaseGatewayService.STANDARD_EVENT_PRIORITY)
     def delete(self, network, gateway):
         gw = (gateway if isinstance(gateway, AWSInternetGateway)
-              else self.get(gateway))
+              else self.svc.get(gateway))
         try:
             if gw.network_id:
                 gw._gateway.detach_from_vpc(VpcId=gw.network_id)
-            gw._gateway.delete()
         except ClientError as e:
             log.warn("Error deleting gateway {0}: {1}".format(self.id, e))
+        gw._gateway.delete()
 
     @dispatch(event="provider.networking.gateways.list",
               priority=BaseGatewayService.STANDARD_EVENT_PRIORITY)
@@ -1212,8 +1212,8 @@ class AWSGatewayService(BaseGatewayService):
 
 class AWSFloatingIPService(BaseFloatingIPService):
 
-    def __init__(self, provider, gateway):
-        super(AWSFloatingIPService, self).__init__(provider, gateway)
+    def __init__(self, provider):
+        super(AWSFloatingIPService, self).__init__(provider)
         self.svc = BotoEC2Service(provider=self.provider,
                                   cb_resource=AWSFloatingIP,
                                   boto_collection_name='vpc_addresses')

+ 1 - 2
cloudbridge/cloud/providers/azure/resources.py

@@ -1509,8 +1509,7 @@ class AzureInternetGateway(BaseInternetGateway):
         self._network_id = gateway_net.id if isinstance(
             gateway_net, AzureNetwork) else gateway_net
         self._state = ''
-        self._fips_container = AzureFloatingIPSubService(
-            provider, self, self._network_id)
+        self._fips_container = AzureFloatingIPSubService(provider, self)
 
     @property
     def id(self):

+ 9 - 9
cloudbridge/cloud/providers/azure/services.py

@@ -71,7 +71,7 @@ class AzureSecurityService(BaseSecurityService):
         # Initialize provider services
         self._key_pairs = AzureKeyPairService(provider)
         self._vm_firewalls = AzureVMFirewallService(provider)
-        self._vm_firewall_rules = AzureVMFirewallRuleService(provider)
+        self._vm_firewall_rule_svc = AzureVMFirewallRuleService(provider)
 
 
 class AzureVMFirewallService(BaseVMFirewallService):
@@ -164,7 +164,7 @@ class AzureVMFirewallRuleService(BaseVMFirewallRuleService):
         rules = [AzureVMFirewallRule(firewall, rule) for rule
                  in firewall._vm_firewall.security_rules
                  if rule.priority < 3500]
-        return ClientPagedResultList(self._provider, rules,
+        return ClientPagedResultList(self.provider, rules,
                                      limit=limit, marker=marker)
 
     @dispatch(event="provider.security.vm_firewall_rules.create",
@@ -172,11 +172,11 @@ class AzureVMFirewallRuleService(BaseVMFirewallRuleService):
     def create(self, firewall, direction, protocol=None, from_port=None,
                to_port=None, cidr=None, src_dest_fw=None):
         if protocol and from_port and to_port:
-            return self._create_rule(direction, protocol, from_port,
+            return self._create_rule(firewall, direction, protocol, from_port,
                                      to_port, cidr)
         elif src_dest_fw:
             result = None
-            fw = (self._provider.security.vm_firewalls.get(src_dest_fw)
+            fw = (self.provider.security.vm_firewalls.get(src_dest_fw)
                   if isinstance(src_dest_fw, str) else src_dest_fw)
             for rule in fw.rules:
                 result = self._create_rule(
@@ -210,7 +210,7 @@ class AzureVMFirewallRuleService(BaseVMFirewallRuleService):
                       "destination_address_prefix": destination_address_prefix,
                       "access": access,
                       "direction": direction}
-        result = self._provider.azure_client. \
+        result = self.provider.azure_client. \
             create_vm_firewall_rule(firewall.id,
                                     rule_name, parameters)
         # pylint:disable=protected-access
@@ -1228,7 +1228,7 @@ class AzureSubnetService(BaseSubnetService):
             net_id = sn.network_id
             az_network = self.provider.azure_client.get_network(net_id)
             az_network.tags.pop(sn.tag_name)
-            self._provider.azure_client.update_network_tags(
+            self.provider.azure_client.update_network_tags(
                 az_network.id, az_network)
 
 
@@ -1303,7 +1303,7 @@ class AzureGatewayService(BaseGatewayService):
     # http://bit.ly/2BqGdVh
     # Singleton returned by the list and get methods
     def _gateway_singleton(self, network):
-        return AzureInternetGateway(self._provider, None, network)
+        return AzureInternetGateway(self.provider, None, network)
 
     @dispatch(event="provider.networking.gateways.get_or_create",
               priority=BaseGatewayService.STANDARD_EVENT_PRIORITY)
@@ -1314,7 +1314,7 @@ class AzureGatewayService(BaseGatewayService):
               priority=BaseGatewayService.STANDARD_EVENT_PRIORITY)
     def list(self, network, limit=None, marker=None):
         gws = [self._gateway_singleton(network)]
-        return ClientPagedResultList(self._provider,
+        return ClientPagedResultList(self.provider,
                                      gws,
                                      limit=limit, marker=marker)
 
@@ -1365,4 +1365,4 @@ class AzureFloatingIPService(BaseFloatingIPService):
               priority=BaseFloatingIPService.STANDARD_EVENT_PRIORITY)
     def delete(self, gateway, fip):
         fip_id = fip if isinstance(fip, AzureFloatingIP) else fip
-        self._provider.azure_client.delete_floating_ip(fip_id)
+        self.provider.azure_client.delete_floating_ip(fip_id)

+ 2 - 1
cloudbridge/cloud/providers/gce/resources.py

@@ -453,7 +453,8 @@ class GCEVMFirewall(BaseVMFirewall):
                              .get_or_create_default())
         else:
             self._network = network
-        self._rule_container = GCEVMFirewallRuleSubService(self)
+        self._rule_container = GCEVMFirewallRuleSubService(self._provider,
+                                                           self)
 
     @property
     def id(self):

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

@@ -68,7 +68,7 @@ class GCESecurityService(BaseSecurityService):
         # Initialize provider services
         self._key_pairs = GCEKeyPairService(provider)
         self._vm_firewalls = GCEVMFirewallService(provider)
-        self._vm_firewall_rules = GCEVMFirewallRuleService(provider)
+        self._vm_firewall_rule_svc = GCEVMFirewallRuleService(provider)
 
 
 class GCEKeyPairService(BaseKeyPairService):
@@ -1526,8 +1526,8 @@ class GCEGatewayService(BaseGatewayService):
 
 class GCEFloatingIPService(BaseFloatingIPService):
 
-    def __init__(self, provider, gateway):
-        super(GCEFloatingIPService, self).__init__(provider, gateway)
+    def __init__(self, provider):
+        super(GCEFloatingIPService, self).__init__(provider)
 
     @dispatch(event="provider.networking.floating_ips.get",
               priority=BaseFloatingIPService.STANDARD_EVENT_PRIORITY)

+ 1 - 1
cloudbridge/cloud/providers/gce/subservices.py

@@ -24,7 +24,7 @@ class GCEGatewaySubService(BaseGatewaySubService):
 class GCEVMFirewallRuleSubService(BaseVMFirewallRuleSubService):
 
     def __init__(self, provider, firewall):
-        super(GCEVMFirewallRuleSubService, self).__init__(provider)
+        super(GCEVMFirewallRuleSubService, self).__init__(provider, firewall)
 
 
 class GCEFloatingIPSubService(BaseFloatingIPSubService):

+ 10 - 9
cloudbridge/cloud/providers/openstack/services.py

@@ -84,7 +84,7 @@ class OpenStackSecurityService(BaseSecurityService):
         # Initialize provider services
         self._key_pairs = OpenStackKeyPairService(provider)
         self._vm_firewalls = OpenStackVMFirewallService(provider)
-        self._vm_firewall_rules = OpenStackVMFirewallRuleService(provider)
+        self._vm_firewall_rule_svc = OpenStackVMFirewallRuleService(provider)
 
     def get_or_create_ec2_credentials(self):
         """
@@ -260,7 +260,7 @@ class OpenStackVMFirewallService(BaseVMFirewallService):
 
 class OpenStackVMFirewallRuleService(BaseVMFirewallRuleService):
 
-    def __init__(self, provider, firewall):
+    def __init__(self, provider):
         super(OpenStackVMFirewallRuleService, self).__init__(provider)
 
     @dispatch(event="provider.security.vm_firewall_rules.list",
@@ -302,9 +302,10 @@ class OpenStackVMFirewallRuleService(BaseVMFirewallRuleService):
             firewall.refresh()
             # 409=Conflict, raised for duplicate rule
             if e.status_code == 409:
-                existing = self.find(direction=direction, protocol=protocol,
-                                     from_port=from_port, to_port=to_port,
-                                     cidr=cidr, src_dest_fw_id=src_dest_fw_id)
+                existing = self.find(firewall, direction=direction,
+                                     protocol=protocol, from_port=from_port,
+                                     to_port=to_port, cidr=cidr,
+                                     src_dest_fw_id=src_dest_fw_id)
                 return existing[0]
             else:
                 raise e
@@ -1160,7 +1161,7 @@ class OpenStackGatewayService(BaseGatewayService):
         external_nets = (n for n in self._provider.networking.networks
                          if n.external)
         for net in external_nets:
-            if self._check_fip_connectivity(net):
+            if self._check_fip_connectivity(network, net):
                 return OpenStackInternetGateway(self._provider, net)
         return None
 
@@ -1175,15 +1176,15 @@ class OpenStackGatewayService(BaseGatewayService):
         log.debug("OpenStack listing of all current internet gateways")
         igl = [OpenStackInternetGateway(self._provider, n)
                for n in self._provider.networking.networks
-               if n.external and self._check_fip_connectivity(n)]
+               if n.external and self._check_fip_connectivity(network, n)]
         return ClientPagedResultList(self._provider, igl, limit=limit,
                                      marker=marker)
 
 
 class OpenStackFloatingIPService(BaseFloatingIPService):
 
-    def __init__(self, provider, gateway):
-        super(OpenStackFloatingIPService, self).__init__(provider, gateway)
+    def __init__(self, provider):
+        super(OpenStackFloatingIPService, self).__init__(provider)
 
     @dispatch(event="provider.networking.floating_ips.get",
               priority=BaseFloatingIPService.STANDARD_EVENT_PRIORITY)