From 41a5fc2586e6084e0983303156b9599350989c02 Mon Sep 17 00:00:00 2001 From: Adam Grare Date: Tue, 26 Feb 2019 10:28:33 -0500 Subject: [PATCH 1/3] Skip VMs missing a cluster when saving relats Skip over VMs without an ems_cluster when saving cluster child relationships. --- .../definitions/infra_group/vms_dependency_collections.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/manageiq/providers/redhat/inventory/persister/definitions/infra_group/vms_dependency_collections.rb b/app/models/manageiq/providers/redhat/inventory/persister/definitions/infra_group/vms_dependency_collections.rb index bfdb61bb0..542b285dc 100644 --- a/app/models/manageiq/providers/redhat/inventory/persister/definitions/infra_group/vms_dependency_collections.rb +++ b/app/models/manageiq/providers/redhat/inventory/persister/definitions/infra_group/vms_dependency_collections.rb @@ -47,7 +47,7 @@ def ems_folder_children_custom_save_block template_collection = inventory_collection.dependency_attributes[:templates].try(:first) datacenter_collection = inventory_collection.dependency_attributes[:datacenters].try(:first) - vms_and_templates = vm_collection.data + template_collection.data + vms_and_templates = (vm_collection.data + template_collection.data).reject { |vm| vm.ems_cluster.nil? } indexed_vms_and_templates = vms_and_templates.each_with_object({}) { |vm, obj| (obj[vm.ems_cluster.ems_ref] ||= []) << vm } datacenter_collection.data.each do |dc| From 960689cfba483322988d081cc54c9206bc94edbf Mon Sep 17 00:00:00 2001 From: Adam Grare Date: Thu, 28 Feb 2019 11:38:44 -0500 Subject: [PATCH 2/3] Add secondary_refs by_uid_ems to ems_clusters Add a secondary_ref index on ems_clusters to allow lookup by uid_ems --- .../inventory/persister/definitions/infra_collections.rb | 2 +- .../definitions/infra_group/cluster_collections.rb | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/models/manageiq/providers/redhat/inventory/persister/definitions/infra_collections.rb b/app/models/manageiq/providers/redhat/inventory/persister/definitions/infra_collections.rb index 34f6066f2..83e4d6aa0 100644 --- a/app/models/manageiq/providers/redhat/inventory/persister/definitions/infra_collections.rb +++ b/app/models/manageiq/providers/redhat/inventory/persister/definitions/infra_collections.rb @@ -21,7 +21,7 @@ def initialize_infra_inventory_collections # --- IC groups definitions --- def add_clusters_group - add_collection(infra, :ems_clusters) + add_ems_clusters add_resource_pools end diff --git a/app/models/manageiq/providers/redhat/inventory/persister/definitions/infra_group/cluster_collections.rb b/app/models/manageiq/providers/redhat/inventory/persister/definitions/infra_group/cluster_collections.rb index fa08db7f3..602e28931 100644 --- a/app/models/manageiq/providers/redhat/inventory/persister/definitions/infra_group/cluster_collections.rb +++ b/app/models/manageiq/providers/redhat/inventory/persister/definitions/infra_group/cluster_collections.rb @@ -1,6 +1,14 @@ module ManageIQ::Providers::Redhat::Inventory::Persister::Definitions::InfraGroup::ClusterCollections extend ActiveSupport::Concern + def add_ems_clusters + add_collection(infra, :ems_clusters) do |builder| + builder.add_properties( + :secondary_refs => {:by_uid_ems => %i(uid_ems)} + ) + end + end + # group :ems_clusters def add_resource_pools add_collection(infra, :resource_pools) do |builder| From bf83d1200f2a34c7bc51f38d05771c09c1c8e69b Mon Sep 17 00:00:00 2001 From: Adam Grare Date: Thu, 28 Feb 2019 11:39:16 -0500 Subject: [PATCH 3/3] Find ems_clusters by uid_ems not ems_ref --- .../providers/redhat/inventory/parser/infra_manager.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/models/manageiq/providers/redhat/inventory/parser/infra_manager.rb b/app/models/manageiq/providers/redhat/inventory/parser/infra_manager.rb index b5dd6cafd..fffdd3d78 100644 --- a/app/models/manageiq/providers/redhat/inventory/parser/infra_manager.rb +++ b/app/models/manageiq/providers/redhat/inventory/parser/infra_manager.rb @@ -25,7 +25,7 @@ def ems_clusters ems_ref = ManageIQ::Providers::Redhat::InfraManager.make_ems_ref(cluster.href) - persister.ems_clusters.find_or_build(ems_ref).assign_attributes( + persister.ems_clusters.build( :ems_ref => ems_ref, :ems_ref_obj => ems_ref, :uid_ems => cluster.id, @@ -151,7 +151,7 @@ def hosts :connection_state => connection_state, :power_state => power_state, :maintenance => power_state == 'maintenance', - :ems_cluster => persister.ems_clusters.lazy_find(ManageIQ::Providers::Redhat::InfraManager.make_ems_ref(cluster.href)), + :ems_cluster => persister.ems_clusters.lazy_find({:uid_ems => cluster.id}, :ref => :by_uid_ems), :ipmi_address => ipmi_address, ) @@ -365,7 +365,7 @@ def vms :raw_power_state => template ? "never" : vm.status, :boot_time => vm.try(:start_time), :host => persister.hosts.lazy_find(host_ems_ref), - :ems_cluster => persister.ems_clusters.lazy_find(ManageIQ::Providers::Redhat::InfraManager.make_ems_ref(vm.cluster.href)), + :ems_cluster => persister.ems_clusters.lazy_find({:uid_ems => vm.cluster.id}, :ref => :by_uid_ems), :storages => storages, :storage => storages.first, )