4
4
from bs4 import BeautifulSoup
5
5
6
6
import cli .storage .storage as storage
7
+ import cli .storage .virtual_storage as vstorage
7
8
import cli .utils .common as common
8
9
import cli .utils .command_util as command_util
9
10
import cli .utils .string_util as util
@@ -160,20 +161,33 @@ def cleanup_vios(config, cookies, sys_uuid, partition_uuid, vios_uuid_list):
160
161
vios = get_vios_details (config , cookies , sys_uuid , vios_uuid )
161
162
162
163
# remove SCSI mappings from VIOS
163
- found , phys_disk = storage .check_if_storage_attached (
164
+ phys_disk_found , phys_disk = storage .check_if_storage_attached (
164
165
vios , partition_uuid )
165
- if found and not storage_cleaned :
166
+ if phys_disk_found and not storage_cleaned :
166
167
logger .info (
167
168
f"Removing SCSI mapping for physical disk '{ phys_disk } '" )
168
169
command_util .remove_scsi_mappings (
169
170
config , cookies , sys_uuid , partition_uuid , vios_uuid , vios , phys_disk )
170
171
storage_cleaned = True
172
+ # Check if attached disk is virtual disk
173
+ if not phys_disk_found :
174
+ vdisk_found , vdisk = storage .check_if_vdisk_attached (vios , partition_uuid )
175
+ if vdisk_found :
176
+ logger .info (
177
+ f"Removing SCSI mapping for virtual disk '{ vdisk } '" )
178
+ command_util .remove_scsi_mappings (
179
+ config , cookies , sys_uuid , partition_uuid , vios_uuid , vios , vdisk )
180
+ if not util .use_existing_vd (config ):
181
+ # delete associated virtual disk
182
+ vg_id = get_volume_group (config , cookies , vios_uuid , util .get_volume_group_name (config ))
183
+ command_util .remove_virtual_disk (config , cookies , vios_uuid , vg_id , vdisk )
184
+ logger .info (f"Delete virtualdisk '{ vdisk } ' associated to partition '{ util .get_partition_name (config )} '" )
185
+ storage_cleaned = True
171
186
172
187
vios = get_vios_details (config , cookies , sys_uuid , vios_uuid )
173
188
logger .info (f"Removing SCSI mapping for vOPT device '{ vopt } '" )
174
189
command_util .remove_scsi_mappings (
175
190
config , cookies , sys_uuid , partition_uuid , vios_uuid , vios , vopt )
176
- # TODO: delete virtual disk, volumegroup if created by the script during launch
177
191
178
192
vios = get_vios_details (config , cookies , sys_uuid , vios_uuid )
179
193
@@ -189,13 +203,26 @@ def cleanup_vios(config, cookies, sys_uuid, partition_uuid, vios_uuid_list):
189
203
if vios_uuid not in processed_vios_list :
190
204
vios = get_vios_details (
191
205
config , cookies , sys_uuid , vios_uuid )
192
- found , phys_disk = storage .check_if_storage_attached (
206
+ phys_disk_found , phys_disk = storage .check_if_storage_attached (
193
207
vios , partition_uuid )
194
- if found :
208
+ if phys_disk_found :
195
209
logger .debug (
196
210
f"Removing SCSI mapping for physical disk '{ phys_disk } '" )
197
211
command_util .remove_scsi_mappings (
198
212
config , cookies , sys_uuid , partition_uuid , vios_uuid , vios , phys_disk )
213
+ # Check if attached disk is virtual disk
214
+ if not phys_disk_found :
215
+ vdisk_found , vdisk = storage .check_if_vdisk_attached (vios , partition_uuid )
216
+ if vdisk_found :
217
+ logger .info (
218
+ f"Removing SCSI mapping for virtual disk '{ vdisk } '" )
219
+ command_util .remove_scsi_mappings (
220
+ config , cookies , sys_uuid , partition_uuid , vios_uuid , vios , vdisk )
221
+ # delete associated virtual disk
222
+ vg_id = get_volume_group (config , cookies , vios_uuid , util .get_volume_group_name (config ))
223
+ command_util .remove_virtual_disk (config , cookies , vios_uuid , vg_id , vdisk )
224
+ logger .info (
225
+ f"Delete virtualdisk '{ vdisk } ' associated to partition '{ util .get_partition_name (config )} '" )
199
226
except Exception as e :
200
227
logger .error (f"failed to clean up VIOS, error: { e } " )
201
228
0 commit comments