Pārlūkot izejas kodu

Azure delete on terminate cleanup

almahmoud 7 gadi atpakaļ
vecāks
revīzija
41a3a531a8

+ 2 - 2
cloudbridge/cloud/providers/azure/azure_client.py

@@ -598,8 +598,8 @@ class AzureClient(object):
             result_delete.wait()
         except CloudError as cloud_error:
             log.exception(cloud_error.message)
-            print(cloud_error.code)
-            if cloud_error.code != "InUseSubnetCannotBeDeleted":
+            if "Subnet" not in cloud_error.message \
+                    or 'in use' not in cloud_error.message:
                 raise cloud_error
 
             else:

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

@@ -1278,11 +1278,8 @@ class AzureInstance(BaseInstance):
             self._provider.azure_client.delete_nic(nic_id)
         for data_disk in self._vm.storage_profile.data_disks:
             if data_disk.managed_disk:
-                disk = self._provider.azure_client.\
-                    get_disk(data_disk.managed_disk.id)
-                if disk and disk.tags \
-                        and disk.tags.get('delete_on_terminate',
-                                          'False') == 'True':
+                if self._vm.tags.get('delete_on_terminate',
+                                     'False') == 'True':
                     self._provider.azure_client.\
                         delete_disk(data_disk.managed_disk.id)
         if self._vm.storage_profile.os_disk.managed_disk:

+ 3 - 0
cloudbridge/cloud/providers/azure/services.py

@@ -550,6 +550,9 @@ class AzureInstanceService(BaseInstanceService):
         if key_pair:
             params['tags'].update(Key_Pair=key_pair.name)
 
+        for disk_def in storage_profile.get('data_disks', []):
+            params['tags'] = dict(disk_def.get('tags', {}), **params['tags'])
+
         if user_data:
             custom_data = base64.b64encode(bytes(ud, 'utf-8'))
             params['os_profile']['custom_data'] = str(custom_data, 'utf-8')