Skip to content

Commit 3823b28

Browse files
committed
Don't include all types in Vm children
The parent class includes all classes (that are VMs) No reason to include a `type` query. Before ====== ``` vmdb(dev)> puts Vm.all.to_sql SELECT "vms".* FROM "vms" WHERE "vms"."type" IN ('Vm', 'VmServer', 'ManageIQ::Providers::PhysicalInfraManager::Vm', 'ManageIQ::Providers::InfraManager::Vm', 'ManageIQ::Providers::CloudManager::Vm', 'ManageIQ::Providers::CiscoIntersight::PhysicalInfraManager::Vm', 'ManageIQ::Providers::Vmware::InfraManager::Vm', 'ManageIQ::Providers::Ovirt::InfraManager::Vm', 'ManageIQ::Providers::Nutanix::InfraManager::Vm', 'ManageIQ::Providers::Kubevirt::InfraManager::Vm', 'ManageIQ::Providers::IbmPowerHmc::InfraManager::Vm', 'ManageIQ::Providers::Redhat::InfraManager::Vm', 'ManageIQ::Providers::Openshift::InfraManager::Vm', 'ManageIQ::Providers::IbmPowerHmc::InfraManager::Vios', 'ManageIQ::Providers::IbmPowerHmc::InfraManager::Lpar', 'ManageIQ::Providers::Vmware::CloudManager::Vm', 'ManageIQ::Providers::OracleCloud::CloudManager::Vm', 'ManageIQ::Providers::Openstack::CloudManager::Vm', 'ManageIQ::Providers::IbmCloud::VPC::CloudManager::Vm', 'ManageIQ::Providers::IbmCloud::PowerVirtualServers::CloudManager::Vm', 'ManageIQ::Providers::Google::CloudManager::Vm', 'ManageIQ::Providers::AzureStack::CloudManager::Vm', 'ManageIQ::Providers::Azure::CloudManager::Vm', 'ManageIQ::Providers::Amazon::CloudManager::Vm', 'ManageIQ::Providers::IbmPowerVc::CloudManager::Vm', 'ManageIQ::Providers::IbmCic::CloudManager::Vm') AND "vms"."template" = FALSE => nil vmdb(dev)> puts ManageIQ::Providers::Vmware::InfraManager::Vm.all.to_sql SELECT "vms".* FROM "vms" WHERE "vms"."type" = 'ManageIQ::Providers::Vmware::InfraManager::Vm' AND "vms"."template" = FALSE ``` After ===== ``` vmdb(dev)> puts Vm.all.to_sql SELECT "vms".* FROM "vms" WHERE "vms"."template" = FALSE => nil vmdb(dev)> puts ManageIQ::Providers::Vmware::InfraManager::Vm.all.to_sql SELECT "vms".* FROM "vms" WHERE "vms"."type" = 'ManageIQ::Providers::Vmware::InfraManager::Vm' AND "vms"."template" = FALSE ```
1 parent 8694efe commit 3823b28

File tree

3 files changed

+13
-1
lines changed

3 files changed

+13
-1
lines changed

app/models/miq_template.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@ def self.base_model
1616
MiqTemplate
1717
end
1818

19+
# Don't tack on `type IN []` query for the top level classes (default scope already filters out the vms)
20+
def self.finder_needs_type_condition?
21+
self != base_model
22+
end
23+
1924
def self.corresponding_model
2025
module_parent::Vm
2126
end

app/models/vm.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ def self.base_model
1414
Vm
1515
end
1616

17+
# Don't tack on `type IN []` query for the top level classes (default scope already filters out the templates)
18+
def self.finder_needs_type_condition?
19+
self < base_model
20+
end
21+
1722
def self.corresponding_model
1823
if self == Vm
1924
MiqTemplate

spec/models/miq_report/generator_spec.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,12 @@
7373
FactoryBot.create(:template) # filtered out by report.where_clause
7474
vm = FactoryBot.create(:vm, :vendor => "redhat")
7575

76+
expect(vm.type).to match(/Vm/)
77+
7678
rpt = FactoryBot.create(
7779
:miq_report,
7880
:db => "VmOrTemplate",
79-
:where_clause => ["vms.type = ?", "Vm"],
81+
:where_clause => ["vms.type = ?", vm.type],
8082
:col_order => %w[id name host.name vendor]
8183
)
8284
rpt.generate_table(:userid => @user.userid, :where_clause => {"vms.vendor" => "redhat"})

0 commit comments

Comments
 (0)