4747DEVICE_NAME_PROPERTY = 'device_name'
4848
4949VOLUME_OPENSTACK_TYPE = 'volume'
50+ VOLUME_OPENSTACK_ID_KEY = 'name'
5051
5152RUNTIME_PROPERTIES_KEYS = COMMON_RUNTIME_PROPERTIES_KEYS
5253
5354
55+ def _set_volume_runtime_properties (volume ):
56+ try :
57+ ctx .instance .runtime_properties [OPENSTACK_AZ_PROPERTY ] = \
58+ volume .availability_zone
59+ except AttributeError :
60+ ctx .logger .error ('Volume availability_zone not found.' )
61+
62+
5463@operation
5564@with_cinder_client
5665def create (cinder_client , status_attempts , status_timeout , args , ** kwargs ):
5766
58- if use_external_resource (ctx , cinder_client , VOLUME_OPENSTACK_TYPE ,
59- 'name' ):
67+ external_volume = use_external_resource (
68+ ctx , cinder_client , VOLUME_OPENSTACK_TYPE , VOLUME_OPENSTACK_ID_KEY )
69+
70+ if external_volume :
71+ _set_volume_runtime_properties (external_volume )
6072 return
6173
6274 volume_dict = create_object_dict (ctx , VOLUME_OPENSTACK_TYPE , args , {})
@@ -68,15 +80,14 @@ def create(cinder_client, status_attempts, status_timeout, args, **kwargs):
6880 ctx .instance .runtime_properties [OPENSTACK_TYPE_PROPERTY ] = \
6981 VOLUME_OPENSTACK_TYPE
7082 ctx .instance .runtime_properties [OPENSTACK_NAME_PROPERTY ] = \
71- volume_dict ['name' ]
83+ volume_dict [VOLUME_OPENSTACK_ID_KEY ]
7284 wait_until_status (cinder_client = cinder_client ,
7385 volume_id = v .id ,
7486 status = VOLUME_STATUS_AVAILABLE ,
7587 num_tries = status_attempts ,
7688 timeout = status_timeout ,
7789 )
78- ctx .instance .runtime_properties [OPENSTACK_AZ_PROPERTY ] = \
79- v .availability_zone
90+ _set_volume_runtime_properties (v )
8091
8192
8293def _delete_snapshot (cinder_client , search_opts ):
@@ -115,8 +126,8 @@ def _delete_backup(cinder_client, search_opts):
115126 return
116127
117128 for backup in backups :
118- if search_opts .get ('name' ):
119- if backup .name != search_opts ['name' ]:
129+ if search_opts .get (VOLUME_OPENSTACK_ID_KEY ):
130+ if backup .name != search_opts [VOLUME_OPENSTACK_ID_KEY ]:
120131 continue
121132 ctx .logger .debug ("Check backup before delete: {}:{} with state {}"
122133 .format (backup .id , backup .name , backup .status ))
@@ -131,8 +142,8 @@ def _delete_backup(cinder_client, search_opts):
131142 for backup in backups :
132143 ctx .logger .debug ("Check backup after delete: {}:{} with state {}"
133144 .format (backup .id , backup .name , backup .status ))
134- if search_opts .get ('name' ):
135- if backup .name == search_opts ['name' ]:
145+ if search_opts .get (VOLUME_OPENSTACK_ID_KEY ):
146+ if backup .name == search_opts [VOLUME_OPENSTACK_ID_KEY ]:
136147 return ctx .operation .retry (
137148 message = '{} is still alive' .format (backup .name ),
138149 retry_after = 30 )
@@ -214,7 +225,7 @@ def snapshot_apply(cinder_client, **kwargs):
214225 ctx .logger .info ("Backup apply {} to {}" .format (backup_name , volume_id ))
215226 search_opts = {
216227 'volume_id' : volume_id ,
217- 'name' : backup_name
228+ VOLUME_OPENSTACK_ID_KEY : backup_name
218229 }
219230
220231 backups = cinder_client .backups .list (
@@ -245,7 +256,7 @@ def snapshot_delete(cinder_client, **kwargs):
245256 # search snaphot for delete
246257 search_opts = {
247258 'volume_id' : volume_id ,
248- 'name' : backup_name
259+ VOLUME_OPENSTACK_ID_KEY : backup_name
249260 }
250261 _delete_backup (cinder_client , search_opts )
251262 else :
@@ -263,7 +274,7 @@ def snapshot_delete(cinder_client, **kwargs):
263274@with_cinder_client
264275def creation_validation (cinder_client , ** kwargs ):
265276 validate_resource (ctx , cinder_client , VOLUME_OPENSTACK_TYPE ,
266- 'name' )
277+ VOLUME_OPENSTACK_ID_KEY )
267278
268279
269280@operation
0 commit comments