diff --git a/app/models/ems_refresh/save_inventory_physical_infra.rb b/app/models/ems_refresh/save_inventory_physical_infra.rb index 1d30455a4fcc..4476c4e30266 100644 --- a/app/models/ems_refresh/save_inventory_physical_infra.rb +++ b/app/models/ems_refresh/save_inventory_physical_infra.rb @@ -3,6 +3,7 @@ # - ems # - physical_racks # - physical_chassis +# - physical_storages # - physical_servers # - physical_switches # @@ -24,7 +25,7 @@ def save_ems_physical_infra_inventory(ems, hashes, target = nil) _log.debug("#{log_header} hashes:\n#{YAML.dump(hashes)}") end - child_keys = %i(physical_racks physical_chassis physical_servers physical_switches customization_scripts) + child_keys = %i(physical_racks physical_chassis physical_storages physical_servers physical_switches customization_scripts) # Save and link other subsections save_child_inventory(ems, hashes, child_keys, target) @@ -91,6 +92,19 @@ def save_physical_chassis_inventory(ems, hashes, target = nil) store_ids_for_new_records(ems.physical_chassis, hashes, :ems_ref) end + def save_physical_storages_inventory(ems, hashes, target = nil) + target = ems if target.nil? + deletes = target == ems ? :use_association : [] + + hashes.each do |h| + h[:physical_rack_id] = h.delete(:physical_rack).try(:[], :id) + end + + child_keys = %i(computer_system asset_detail) + save_inventory_multi(ems.physical_storages, hashes, deletes, [:ems_ref], child_keys) + store_ids_for_new_records(ems.physical_storages, hashes, :ems_ref) + end + # # Saves asset details information of a resource # diff --git a/app/models/manageiq/providers/physical_infra_manager.rb b/app/models/manageiq/providers/physical_infra_manager.rb index c377a45384f4..7966b62bb972 100644 --- a/app/models/manageiq/providers/physical_infra_manager.rb +++ b/app/models/manageiq/providers/physical_infra_manager.rb @@ -11,6 +11,7 @@ class PhysicalInfraManager < BaseManager virtual_total :total_physical_racks, :physical_racks virtual_total :total_physical_servers, :physical_servers virtual_total :total_physical_switches, :physical_switches + virtual_total :total_physical_storages, :physical_storages virtual_column :total_hosts, :type => :integer virtual_column :total_vms, :type => :integer diff --git a/app/models/physical_storage.rb b/app/models/physical_storage.rb new file mode 100644 index 000000000000..465d497b364f --- /dev/null +++ b/app/models/physical_storage.rb @@ -0,0 +1,9 @@ +class PhysicalStorage < ApplicationRecord + belongs_to :ext_management_system, :foreign_key => :ems_id, :inverse_of => :physical_storages + belongs_to :physical_rack, :foreign_key => :physical_rack_id, :inverse_of => :physical_storages + + has_one :computer_system, :as => :managed_entity, :dependent => :destroy, :inverse_of => false + has_one :hardware, :through => :computer_system + has_one :asset_detail, :as => :resource, :dependent => :destroy, :inverse_of => false + has_many :guest_devices, :through => :hardware +end