@@ -5,6 +5,10 @@ class ManageIQ::Providers::IbmPowerHmc::InfraManager::Lpar < ManageIQ::Providers
55
66 supports :reconfigure_network_adapters
77
8+ supports :terminate do
9+ unsupported_reason_add ( :terminate , unsupported_reason ( :control ) ) unless supports_control?
10+ end
11+
812 def provider_object ( connection = nil )
913 connection ||= ext_management_system . connect
1014 connection . lpar ( ems_ref )
@@ -32,6 +36,35 @@ def poweroff(params = {})
3236 end
3337 end
3438
39+ def raw_destroy
40+ ext_management_system . with_provider_connection do |connection |
41+ # Delete associated VIOS VSCSI and VFC mappings.
42+ adapters_by_vios = connection . vscsi_client_adapter ( ems_ref ) . group_by ( &:vios_uuid )
43+ adapters_by_vios . merge! ( connection . vfc_client_adapter ( ems_ref ) . group_by ( &:lpar_uuid ) ) { |_ , v1 , v2 | v1 . concat ( v2 ) }
44+
45+ adapters_by_vios . each do |vios_uuid , adapters |
46+ connection . modify_object do
47+ connection . vios ( vios_uuid ) . tap do |vios |
48+ adapters . each do |adapt |
49+ case adapt
50+ when IbmPowerHmc ::VirtualSCSIClientAdapter
51+ vios . vscsi_mapping_delete! ( adapt . server . location )
52+ when IbmPowerHmc ::VirtualFibreChannelClientAdapter
53+ vios . vfc_mapping_delete! ( adapt . server . location )
54+ end
55+ end
56+ end
57+ end
58+ end
59+
60+ # Delete LPAR.
61+ connection . lpar_delete ( ems_ref )
62+ rescue IbmPowerHmc ::Connection ::HttpError => e
63+ $ibm_power_hmc_log. error ( "error deleting LPAR #{ ems_ref } : #{ e } " )
64+ raise
65+ end
66+ end
67+
3568 def do_request ( request_type , options )
3669 case request_type
3770 when 'clone_to_template'
0 commit comments