Skip to content

Commit

Permalink
Merge pull request #16853 from felipedf/new_rack_obj
Browse files Browse the repository at this point in the history
Add a Physical Rack model
  • Loading branch information
agrare committed Apr 4, 2018
2 parents 3e0933f + 3e9d09a commit c7a5c17
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 18 deletions.
35 changes: 18 additions & 17 deletions app/models/ems_refresh/save_inventory_physical_infra.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#
# Calling order for EmsPhysicalInfra:
# - ems
# - physical_racks
# - physical_servers
#

Expand All @@ -21,10 +22,7 @@ def save_ems_physical_infra_inventory(ems, hashes, target = nil)
_log.debug("#{log_header} hashes:\n#{YAML.dump(hashes)}")
end

child_keys = [
:physical_servers,
:customization_scripts
]
child_keys = %i(physical_racks physical_servers customization_scripts)

# Save and link other subsections
save_child_inventory(ems, hashes, child_keys, target)
Expand All @@ -37,30 +35,33 @@ def save_ems_physical_infra_inventory(ems, hashes, target = nil)
ems
end

def save_physical_racks_inventory(ems, hashes, target = nil)
target = ems if target.nil?

deletes = target == ems ? :use_association : []

save_inventory_multi(ems.physical_racks, hashes, deletes, [:ems_ref])
store_ids_for_new_records(ems.physical_racks, hashes, :ems_ref)
end

def save_physical_servers_inventory(ems, hashes, target = nil)
target = ems if target.nil?

ems.physical_servers.reset
deletes = if target == ems
:use_association
else
[]
end
deletes = target == ems ? :use_association : []

child_keys = %i(computer_system asset_detail hosts)
hashes.each do |h|
h[:physical_rack_id] = h.delete(:physical_rack).try(:[], :id)
end

child_keys = [:computer_system, :asset_detail, :hosts]
save_inventory_multi(ems.physical_servers, hashes, deletes, [:ems_ref], child_keys)
store_ids_for_new_records(ems.physical_servers, hashes, :ems_ref)
end

def save_customization_scripts_inventory(ems, hashes, target = nil)
target = ems if target.nil?

ems.customization_scripts.reset
deletes = if target == ems
:use_association
else
[]
end
deletes = target == ems ? :use_association : []

save_inventory_multi(ems.customization_scripts, hashes, deletes, [:manager_ref])
store_ids_for_new_records(ems.customization_scripts, hashes, :manager_ref)
Expand Down
1 change: 1 addition & 0 deletions app/models/ext_management_system.rb
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ def self.api_allowed_attributes
has_many :resource_pools, :foreign_key => "ems_id", :dependent => :destroy, :inverse_of => :ext_management_system
has_many :customization_specs, :foreign_key => "ems_id", :dependent => :destroy, :inverse_of => :ext_management_system
has_many :storage_profiles, :foreign_key => "ems_id", :dependent => :destroy, :inverse_of => :ext_management_system
has_many :physical_racks, :foreign_key => "ems_id", :dependent => :destroy, :inverse_of => :ext_management_system
has_many :physical_servers, :foreign_key => "ems_id", :dependent => :destroy, :inverse_of => :ext_management_system
has_many :customization_scripts, :foreign_key => "manager_id", :dependent => :destroy, :inverse_of => :ext_management_system

Expand Down
1 change: 1 addition & 0 deletions app/models/manageiq/providers/physical_infra_manager.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ module ManageIQ::Providers
class PhysicalInfraManager < BaseManager
include SupportsFeatureMixin

virtual_total :total_physical_racks, :physical_racks
virtual_total :total_physical_servers, :physical_servers
virtual_column :total_hosts, :type => :integer
virtual_column :total_vms, :type => :integer
Expand Down
5 changes: 5 additions & 0 deletions app/models/physical_rack.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class PhysicalRack < ApplicationRecord
belongs_to :ext_management_system, :foreign_key => :ems_id, :inverse_of => :physical_racks

has_many :physical_servers, :dependent => :nullify, :inverse_of => :physical_rack
end
3 changes: 2 additions & 1 deletion app/models/physical_server.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ class PhysicalServer < ApplicationRecord
}.freeze

validates :vendor, :inclusion =>{:in => VENDOR_TYPES}
belongs_to :ext_management_system, :foreign_key => :ems_id, :class_name => "ManageIQ::Providers::PhysicalInfraManager"
belongs_to :ext_management_system, :foreign_key => :ems_id, :inverse_of => :physical_servers
belongs_to :physical_rack, :inverse_of => :physical_servers

has_one :computer_system, :as => :managed_entity, :dependent => :destroy
has_one :hardware, :through => :computer_system
Expand Down

0 comments on commit c7a5c17

Please sign in to comment.