Jelajahi Sumber

Standardizing deletes

almahmoud 7 tahun lalu
induk
melakukan
ec20e62a63

+ 3 - 3
cloudbridge/cloud/interfaces/services.py

@@ -1274,12 +1274,12 @@ class VMFirewallService(PageableObjectMixin, CloudService):
         pass
         pass
 
 
     @abstractmethod
     @abstractmethod
-    def delete(self, firewall):
+    def delete(self, vm_firewall):
         """
         """
         Delete an existing VMFirewall.
         Delete an existing VMFirewall.
 
 
-        :type firewall: ``str`` or :class:`.VMFirewall`
-        :param firewall: The object or VM firewall ID to be deleted.
+        :type vm_firewall: ``str`` or :class:`.VMFirewall`
+        :param vm_firewall: The object or VM firewall ID to be deleted.
         """
         """
         pass
         pass
 
 

+ 0 - 8
cloudbridge/cloud/providers/aws/resources.py

@@ -1116,14 +1116,6 @@ class AWSInternetGateway(BaseInternetGateway):
             return self._gateway.attachments[0].get('VpcId')
             return self._gateway.attachments[0].get('VpcId')
         return None
         return None
 
 
-    def delete(self):
-        try:
-            if self.network_id:
-                self._gateway.detach_from_vpc(VpcId=self.network_id)
-            self._gateway.delete()
-        except ClientError as e:
-            log.warn("Error deleting gateway {0}: {1}".format(self.id, e))
-
     @property
     @property
     def floating_ips(self):
     def floating_ips(self):
         return self._fips_container
         return self._fips_container

+ 23 - 18
cloudbridge/cloud/providers/aws/services.py

@@ -137,8 +137,9 @@ class AWSKeyPairService(BaseKeyPairService):
 
 
     @dispatch(event="provider.security.key_pairs.delete",
     @dispatch(event="provider.security.key_pairs.delete",
               priority=BaseKeyPairService.STANDARD_EVENT_PRIORITY)
               priority=BaseKeyPairService.STANDARD_EVENT_PRIORITY)
-    def delete(self, kp):
-        key_pair = kp if isinstance(kp, AWSKeyPair) else self.get(kp)
+    def delete(self, key_pair):
+        key_pair = (key_pair if isinstance(key_pair, AWSKeyPair) else
+                    self.get(key_pair))
         if key_pair:
         if key_pair:
             # pylint:disable=protected-access
             # pylint:disable=protected-access
             key_pair._key_pair.delete()
             key_pair._key_pair.delete()
@@ -191,8 +192,9 @@ class AWSVMFirewallService(BaseVMFirewallService):
 
 
     @dispatch(event="provider.security.vm_firewalls.delete",
     @dispatch(event="provider.security.vm_firewalls.delete",
               priority=BaseVMFirewallService.STANDARD_EVENT_PRIORITY)
               priority=BaseVMFirewallService.STANDARD_EVENT_PRIORITY)
-    def delete(self, vmf):
-        firewall = vmf if isinstance(vmf, AWSVMFirewall) else self.get(vmf)
+    def delete(self, vm_firewall):
+        firewall = (vm_firewall if isinstance(vm_firewall, AWSVMFirewall)
+                    else self.get(vm_firewall))
         if firewall:
         if firewall:
             # pylint:disable=protected-access
             # pylint:disable=protected-access
             firewall._vm_firewall.delete()
             firewall._vm_firewall.delete()
@@ -402,8 +404,9 @@ class AWSSnapshotService(BaseSnapshotService):
 
 
     @dispatch(event="provider.storage.snapshots.delete",
     @dispatch(event="provider.storage.snapshots.delete",
               priority=BaseSnapshotService.STANDARD_EVENT_PRIORITY)
               priority=BaseSnapshotService.STANDARD_EVENT_PRIORITY)
-    def delete(self, snap):
-        snapshot = snap if isinstance(snap, AWSSnapshot) else self.get(snap)
+    def delete(self, snapshot):
+        snapshot = (snapshot if isinstance(snapshot, AWSSnapshot) else
+                    self.get(snapshot))
         if snapshot:
         if snapshot:
             # pylint:disable=protected-access
             # pylint:disable=protected-access
             snapshot._snapshot.delete()
             snapshot._snapshot.delete()
@@ -773,8 +776,9 @@ class AWSInstanceService(BaseInstanceService):
 
 
     @dispatch(event="provider.compute.instances.delete",
     @dispatch(event="provider.compute.instances.delete",
               priority=BaseInstanceService.STANDARD_EVENT_PRIORITY)
               priority=BaseInstanceService.STANDARD_EVENT_PRIORITY)
-    def delete(self, inst):
-        aws_inst = inst if isinstance(inst, AWSInstance) else self.get(inst)
+    def delete(self, instance):
+        aws_inst = (instance if isinstance(instance, AWSInstance) else
+                    self.get(instance))
         if aws_inst:
         if aws_inst:
             # pylint:disable=protected-access
             # pylint:disable=protected-access
             aws_inst._ec2_instance.terminate()
             aws_inst._ec2_instance.terminate()
@@ -905,8 +909,9 @@ class AWSNetworkService(BaseNetworkService):
 
 
     @dispatch(event="provider.networking.networks.delete",
     @dispatch(event="provider.networking.networks.delete",
               priority=BaseNetworkService.STANDARD_EVENT_PRIORITY)
               priority=BaseNetworkService.STANDARD_EVENT_PRIORITY)
-    def delete(self, net):
-        network = net if isinstance(net, AWSNetwork) else self.get(net)
+    def delete(self, network):
+        network = (network if isinstance(network, AWSNetwork)
+                   else self.get(network))
         if network:
         if network:
             # pylint:disable=protected-access
             # pylint:disable=protected-access
             network._vpc.delete()
             network._vpc.delete()
@@ -1158,8 +1163,6 @@ class AWSGatewayService(BaseGatewayService):
                                   boto_collection_name='internet_gateways')
                                   boto_collection_name='internet_gateways')
 
 
     def get_or_create_inet_gateway(self, network):
     def get_or_create_inet_gateway(self, network):
-        log.debug("Get or create inet gateway on net %s",
-                  network)
         network_id = network.id if isinstance(
         network_id = network.id if isinstance(
             network, AWSNetwork) else network
             network, AWSNetwork) else network
         # Don't filter by label because it may conflict with at least the
         # Don't filter by label because it may conflict with at least the
@@ -1179,12 +1182,14 @@ class AWSGatewayService(BaseGatewayService):
         return cb_gateway
         return cb_gateway
 
 
     def delete(self, network, gateway):
     def delete(self, network, gateway):
-        log.debug("Service deleting AWS Gateway %s", gateway)
-        gateway_id = gateway.id if isinstance(
-            gateway, AWSInternetGateway) else gateway
-        gateway = self.svc.get(gateway_id)
-        if gateway:
-            gateway.delete()
+        gw = (gateway if isinstance(gateway, AWSInternetGateway)
+              else self.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))
 
 
     def list(self, network, limit=None, marker=None):
     def list(self, network, limit=None, marker=None):
         log.debug("Listing current AWS internet gateways for net %s.",
         log.debug("Listing current AWS internet gateways for net %s.",

+ 16 - 12
cloudbridge/cloud/providers/azure/services.py

@@ -143,8 +143,9 @@ class AzureVMFirewallService(BaseVMFirewallService):
 
 
     @dispatch(event="provider.security.vm_firewalls.delete",
     @dispatch(event="provider.security.vm_firewalls.delete",
               priority=BaseVMFirewallService.STANDARD_EVENT_PRIORITY)
               priority=BaseVMFirewallService.STANDARD_EVENT_PRIORITY)
-    def delete(self, vmf):
-        fw_id = vmf.id if isinstance(vmf, AzureVMFirewall) else vmf
+    def delete(self, vm_firewall):
+        fw_id = (vm_firewall.id if isinstance(vm_firewall, AzureVMFirewall)
+                 else vm_firewall)
         self.provider.azure_client.delete_vm_firewall(fw_id)
         self.provider.azure_client.delete_vm_firewall(fw_id)
 
 
 
 
@@ -213,11 +214,12 @@ class AzureVMFirewallRuleService(BaseVMFirewallRuleService):
         return AzureVMFirewallRule(firewall, result)
         return AzureVMFirewallRule(firewall, result)
 
 
     def delete(self, firewall, rule):
     def delete(self, firewall, rule):
-        vm_firewall = firewall.name
+        rule_id = rule.id if isinstance(rule, AzureVMFirewallRule) else rule
+        fw_name = firewall.name
         self.provider.azure_client. \
         self.provider.azure_client. \
-            delete_vm_firewall_rule(rule.id, vm_firewall)
+            delete_vm_firewall_rule(rule_id, fw_name)
         for i, o in enumerate(firewall._vm_firewall.security_rules):
         for i, o in enumerate(firewall._vm_firewall.security_rules):
-            if o.id == rule.id:
+            if o.id == rule_id:
                 del firewall._vm_firewall.security_rules[i]
                 del firewall._vm_firewall.security_rules[i]
                 break
                 break
 
 
@@ -300,8 +302,9 @@ class AzureKeyPairService(BaseKeyPairService):
 
 
     @dispatch(event="provider.security.key_pairs.delete",
     @dispatch(event="provider.security.key_pairs.delete",
               priority=BaseKeyPairService.STANDARD_EVENT_PRIORITY)
               priority=BaseKeyPairService.STANDARD_EVENT_PRIORITY)
-    def delete(self, kp):
-        key_pair = kp if isinstance(kp, AzureKeyPair) else self.get(kp)
+    def delete(self, key_pair):
+        key_pair = (key_pair if isinstance(key_pair, AzureKeyPair) else
+                    self.get(key_pair))
         if key_pair:
         if key_pair:
             # pylint:disable=protected-access
             # pylint:disable=protected-access
             self.provider.azure_client.delete_public_key(key_pair._key_pair)
             self.provider.azure_client.delete_public_key(key_pair._key_pair)
@@ -982,15 +985,16 @@ class AzureInstanceService(BaseInstanceService):
 
 
     @dispatch(event="provider.compute.instances.delete",
     @dispatch(event="provider.compute.instances.delete",
               priority=BaseInstanceService.STANDARD_EVENT_PRIORITY)
               priority=BaseInstanceService.STANDARD_EVENT_PRIORITY)
-    def delete(self, inst):
+    def delete(self, instance):
         """
         """
         Permanently terminate this instance.
         Permanently terminate this instance.
         After deleting the VM. we are deleting the network interface
         After deleting the VM. we are deleting the network interface
         associated to the instance, and also removing OS disk and data disks
         associated to the instance, and also removing OS disk and data disks
         where tag with name 'delete_on_terminate' has value True.
         where tag with name 'delete_on_terminate' has value True.
         """
         """
-        ins = inst if isinstance(inst, AzureInstance) else self.get(inst)
-        if not inst:
+        ins = (instance if isinstance(instance, AzureInstance) else
+               self.get(instance))
+        if not instance:
             return
             return
 
 
         # Remove IPs first to avoid a network interface conflict
         # Remove IPs first to avoid a network interface conflict
@@ -1114,8 +1118,8 @@ class AzureNetworkService(BaseNetworkService):
 
 
     @dispatch(event="provider.networking.networks.delete",
     @dispatch(event="provider.networking.networks.delete",
               priority=BaseNetworkService.STANDARD_EVENT_PRIORITY)
               priority=BaseNetworkService.STANDARD_EVENT_PRIORITY)
-    def delete(self, net):
-        net_id = net.id if isinstance(net, AzureNetwork) else net
+    def delete(self, network):
+        net_id = network.id if isinstance(network, AzureNetwork) else network
         if net_id:
         if net_id:
             self.provider.azure_client.delete_network(net_id)
             self.provider.azure_client.delete_network(net_id)
 
 

+ 19 - 14
cloudbridge/cloud/providers/gce/services.py

@@ -147,11 +147,12 @@ class GCEKeyPairService(BaseKeyPairService):
 
 
     @dispatch(event="provider.security.key_pairs.delete",
     @dispatch(event="provider.security.key_pairs.delete",
               priority=BaseKeyPairService.STANDARD_EVENT_PRIORITY)
               priority=BaseKeyPairService.STANDARD_EVENT_PRIORITY)
-    def delete(self, kp):
-        kp = kp if isinstance(kp, GCEKeyPair) else self.get(kp)
-        if kp:
+    def delete(self, key_pair):
+        key_pair = (key_pair if isinstance(key_pair, GCEKeyPair) else
+                    self.get(key_pair))
+        if key_pair:
             helpers.remove_metadata_item(
             helpers.remove_metadata_item(
-                self.provider, GCEKeyPair.KP_TAG_PREFIX + kp.name)
+                self.provider, GCEKeyPair.KP_TAG_PREFIX + key_pair.name)
 
 
 
 
 class GCEVMFirewallService(BaseVMFirewallService):
 class GCEVMFirewallService(BaseVMFirewallService):
@@ -199,8 +200,9 @@ class GCEVMFirewallService(BaseVMFirewallService):
 
 
     @dispatch(event="provider.security.vm_firewalls.delete",
     @dispatch(event="provider.security.vm_firewalls.delete",
               priority=BaseVMFirewallService.STANDARD_EVENT_PRIORITY)
               priority=BaseVMFirewallService.STANDARD_EVENT_PRIORITY)
-    def delete(self, vmf):
-        fw_id = vmf.id if isinstance(vmf, GCEVMFirewall) else vmf
+    def delete(self, vm_firewall):
+        fw_id = (vm_firewall.id if isinstance(vm_firewall, GCEVMFirewall)
+                 else vm_firewall)
         return self._delegate.delete_tag_network_with_id(fw_id)
         return self._delegate.delete_tag_network_with_id(fw_id)
 
 
     def find_by_network_and_tags(self, network_name, tags):
     def find_by_network_and_tags(self, network_name, tags):
@@ -280,6 +282,7 @@ class GCEVMFirewallRuleService(BaseVMFirewallRuleService):
                                          to_port, cidr, src_dest_fw)
                                          to_port, cidr, src_dest_fw)
 
 
     def delete(self, firewall, rule):
     def delete(self, firewall, rule):
+        rule = rule if isinstance(rule, GCEVMFirewallRule) else self.get(rule)
         if rule.is_dummy_rule():
         if rule.is_dummy_rule():
             return True
             return True
         firewall.delegate.delete_firewall_id(rule._rule)
         firewall.delegate.delete_firewall_id(rule._rule)
@@ -653,8 +656,9 @@ class GCEInstanceService(BaseInstanceService):
 
 
     @dispatch(event="provider.compute.instances.delete",
     @dispatch(event="provider.compute.instances.delete",
               priority=BaseInstanceService.STANDARD_EVENT_PRIORITY)
               priority=BaseInstanceService.STANDARD_EVENT_PRIORITY)
-    def delete(self, inst):
-        instance = inst if isinstance(inst, GCEInstance) else self.get(inst)
+    def delete(self, instance):
+        instance = (instance if isinstance(instance, GCEInstance) else
+                    self.get(instance))
         if instance:
         if instance:
             (self._provider
             (self._provider
              .gce_compute
              .gce_compute
@@ -1207,8 +1211,8 @@ class GCEVolumeService(BaseVolumeService):
 
 
     @dispatch(event="provider.storage.volumes.delete",
     @dispatch(event="provider.storage.volumes.delete",
               priority=BaseVolumeService.STANDARD_EVENT_PRIORITY)
               priority=BaseVolumeService.STANDARD_EVENT_PRIORITY)
-    def delete(self, vol):
-        volume = vol if isinstance(vol, GCEVolume) else self.get(vol)
+    def delete(self, volume):
+        volume = volume if isinstance(volume, GCEVolume) else self.get(volume)
         if volume:
         if volume:
             (self._provider.gce_compute
             (self._provider.gce_compute
                            .disks()
                            .disks()
@@ -1307,8 +1311,9 @@ class GCESnapshotService(BaseSnapshotService):
 
 
     @dispatch(event="provider.storage.snapshots.delete",
     @dispatch(event="provider.storage.snapshots.delete",
               priority=BaseSnapshotService.STANDARD_EVENT_PRIORITY)
               priority=BaseSnapshotService.STANDARD_EVENT_PRIORITY)
-    def delete(self, snap):
-        snapshot = snap if isinstance(snap, GCESnapshot) else self.get(snap)
+    def delete(self, snapshot):
+        snapshot = (snapshot if isinstance(snapshot, GCESnapshot)
+                    else self.get(snapshot))
         if snapshot:
         if snapshot:
             (self.provider
             (self.provider
                  .gce_compute
                  .gce_compute
@@ -1550,8 +1555,8 @@ class GCEFloatingIPService(BaseFloatingIPService):
         return self.get(ip_name)
         return self.get(ip_name)
 
 
     def delete(self, gateway, fip):
     def delete(self, gateway, fip):
-        fip = fip if isinstance(fip, GCEFloatingIP) else \
-            gateway.floating_ips.get(fip)
+        fip = (fip if isinstance(fip, GCEFloatingIP)
+               else gateway.floating_ips.get(fip))
         project_name = self.provider.project_name
         project_name = self.provider.project_name
         # First, delete the forwarding rule, if there is any.
         # First, delete the forwarding rule, if there is any.
         if fip._rule:
         if fip._rule:

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

@@ -1059,10 +1059,6 @@ class OpenStackInternetGateway(BaseInternetGateway):
         return self.GATEWAY_STATE_MAP.get(
         return self.GATEWAY_STATE_MAP.get(
             self._gateway_net.state, GatewayState.UNKNOWN)
             self._gateway_net.state, GatewayState.UNKNOWN)
 
 
-    def delete(self):
-        """Do nothing on openstack"""
-        pass
-
     @property
     @property
     def floating_ips(self):
     def floating_ips(self):
         return self._fips_container
         return self._fips_container

+ 22 - 15
cloudbridge/cloud/providers/openstack/services.py

@@ -191,8 +191,9 @@ class OpenStackKeyPairService(BaseKeyPairService):
 
 
     @dispatch(event="provider.security.key_pairs.delete",
     @dispatch(event="provider.security.key_pairs.delete",
               priority=BaseKeyPairService.STANDARD_EVENT_PRIORITY)
               priority=BaseKeyPairService.STANDARD_EVENT_PRIORITY)
-    def delete(self, kp):
-        keypair = kp if isinstance(kp, OpenStackKeyPair) else self.get(kp)
+    def delete(self, key_pair):
+        keypair = (key_pair if isinstance(key_pair, OpenStackKeyPair)
+                   else self.get(key_pair))
         if keypair:
         if keypair:
             # pylint:disable=protected-access
             # pylint:disable=protected-access
             keypair._key_pair.delete()
             keypair._key_pair.delete()
@@ -249,8 +250,9 @@ class OpenStackVMFirewallService(BaseVMFirewallService):
 
 
     @dispatch(event="provider.security.vm_firewalls.delete",
     @dispatch(event="provider.security.vm_firewalls.delete",
               priority=BaseVMFirewallService.STANDARD_EVENT_PRIORITY)
               priority=BaseVMFirewallService.STANDARD_EVENT_PRIORITY)
-    def delete(self, vmf):
-        fw = vmf if isinstance(vmf, OpenStackVMFirewall) else self.get(vmf)
+    def delete(self, vm_firewall):
+        fw = (vm_firewall if isinstance(vm_firewall, OpenStackVMFirewall)
+              else self.get(vm_firewall))
         if fw:
         if fw:
             # pylint:disable=protected-access
             # pylint:disable=protected-access
             fw._vm_firewall.delete(self.provider.os_conn.session)
             fw._vm_firewall.delete(self.provider.os_conn.session)
@@ -304,7 +306,9 @@ class OpenStackVMFirewallRuleService(BaseVMFirewallRuleService):
                 raise e
                 raise e
 
 
     def delete(self, firewall, rule):
     def delete(self, firewall, rule):
-        self.provider.os_conn.network.delete_security_group_rule(rule.id)
+        rule_id = (rule.id if isinstance(rule, OpenStackVMFirewallRule)
+                   else rule)
+        self.provider.os_conn.network.delete_security_group_rule(rule_id)
         firewall.refresh()
         firewall.refresh()
 
 
 
 
@@ -399,8 +403,9 @@ class OpenStackVolumeService(BaseVolumeService):
 
 
     @dispatch(event="provider.storage.volumes.delete",
     @dispatch(event="provider.storage.volumes.delete",
               priority=BaseVolumeService.STANDARD_EVENT_PRIORITY)
               priority=BaseVolumeService.STANDARD_EVENT_PRIORITY)
-    def delete(self, vol):
-        volume = vol if isinstance(vol, OpenStackVolume) else self.get(vol)
+    def delete(self, volume):
+        volume = (volume if isinstance(volume, OpenStackVolume)
+                  else self.get(volume))
         if volume:
         if volume:
             # pylint:disable=protected-access
             # pylint:disable=protected-access
             volume._volume.delete()
             volume._volume.delete()
@@ -470,8 +475,9 @@ class OpenStackSnapshotService(BaseSnapshotService):
 
 
     @dispatch(event="provider.storage.snapshots.delete",
     @dispatch(event="provider.storage.snapshots.delete",
               priority=BaseSnapshotService.STANDARD_EVENT_PRIORITY)
               priority=BaseSnapshotService.STANDARD_EVENT_PRIORITY)
-    def delete(self, snap):
-        s = snap if isinstance(snap, OpenStackSnapshot) else self.get(snap)
+    def delete(self, snapshot):
+        s = (snapshot if isinstance(snapshot, OpenStackSnapshot) else
+             self.get(snapshot))
         if s:
         if s:
             # pylint:disable=protected-access
             # pylint:disable=protected-access
             s._snapshot.delete()
             s._snapshot.delete()
@@ -853,8 +859,9 @@ class OpenStackInstanceService(BaseInstanceService):
 
 
     @dispatch(event="provider.compute.instances.delete",
     @dispatch(event="provider.compute.instances.delete",
               priority=BaseInstanceService.STANDARD_EVENT_PRIORITY)
               priority=BaseInstanceService.STANDARD_EVENT_PRIORITY)
-    def delete(self, inst):
-        ins = inst if isinstance(inst, OpenStackInstance) else self.get(inst)
+    def delete(self, instance):
+        ins = (instance if isinstance(instance, OpenStackInstance) else
+               self.get(instance))
         if ins:
         if ins:
             # pylint:disable=protected-access
             # pylint:disable=protected-access
             os_instance = ins._os_instance
             os_instance = ins._os_instance
@@ -987,8 +994,9 @@ class OpenStackNetworkService(BaseNetworkService):
 
 
     @dispatch(event="provider.networking.networks.delete",
     @dispatch(event="provider.networking.networks.delete",
               priority=BaseNetworkService.STANDARD_EVENT_PRIORITY)
               priority=BaseNetworkService.STANDARD_EVENT_PRIORITY)
-    def delete(self, net):
-        network = net if isinstance(net, OpenStackNetwork) else self.get(net)
+    def delete(self, network):
+        network = (network if isinstance(network, OpenStackNetwork) else
+                   self.get(network))
         if not network:
         if not network:
             return
             return
         if not network.external and network.id in str(
         if not network.external and network.id in str(
@@ -1149,8 +1157,7 @@ class OpenStackGatewayService(BaseGatewayService):
         return None
         return None
 
 
     def delete(self, network, gateway):
     def delete(self, network, gateway):
-        log.debug("Deleting OpenStack Gateway: %s", gateway)
-        gateway.delete()
+        pass
 
 
     def list(self, network, limit=None, marker=None):
     def list(self, network, limit=None, marker=None):
         log.debug("OpenStack listing of all current internet gateways")
         log.debug("OpenStack listing of all current internet gateways")