Skip to content

Commit 83ba063

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 5f16931 commit 83ba063

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

app/models/miq_template.rb

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,22 @@ class MiqTemplate < VmOrTemplate
1212

1313
include Operations
1414

15+
def self.finder_needs_type_condition?
16+
false
17+
end
18+
19+
def self.inherited(subclass)
20+
super
21+
# if you are inheriting from top level class (i.e.: Vm), then use type instead of template
22+
unless self.name.to_s.include?(":")
23+
subclass.instance_eval do
24+
def self.finder_needs_type_condition?
25+
true
26+
end
27+
end
28+
end
29+
end
30+
1531
def self.base_model
1632
MiqTemplate
1733
end

app/models/vm.rb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,23 @@ class Vm < VmOrTemplate
1010

1111
include Operations
1212

13+
# Don't tack on type query for this class (instead we use scope)
14+
def self.finder_needs_type_condition?
15+
false
16+
end
17+
18+
def self.inherited(subclass)
19+
super
20+
# if you are inheriting from top level class (i.e.: Vm), then use type instead of template
21+
unless self.name.to_s.include?(":")
22+
subclass.instance_eval do
23+
def self.finder_needs_type_condition?
24+
true
25+
end
26+
end
27+
end
28+
end
29+
1330
def self.base_model
1431
Vm
1532
end

0 commit comments

Comments
 (0)