Skip to content

Commit 58cf199

Browse files
committed
Don't include all types in Vm children
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' ```
1 parent 5f16931 commit 58cf199

File tree

2 files changed

+45
-1
lines changed

2 files changed

+45
-1
lines changed

app/models/miq_template.rb

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

1313
include Operations
1414

15+
def self.finder_needs_type_condition?
16+
false
17+
end
18+
19+
def self.default_scope
20+
where(:template => true)
21+
end
22+
23+
def self.inherited(subclass)
24+
super
25+
# if you are inheriting from top level class (i.e.: Vm), then use type instead of template
26+
unless self.name.to_s.include?(":")
27+
subclass.instance_eval do
28+
def self.finder_needs_type_condition?
29+
true
30+
end
31+
def self.default_scope
32+
end
33+
end
34+
end
35+
end
36+
1537
def self.base_model
1638
MiqTemplate
1739
end

app/models/vm.rb

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
class Vm < VmOrTemplate
2-
default_scope { where(:template => false) }
32
virtual_has_one :supported_consoles, :class_name => "Hash"
43

54
extend InterRegionApiMethodRelay
@@ -10,6 +9,29 @@ class Vm < VmOrTemplate
109

1110
include Operations
1211

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

0 commit comments

Comments
 (0)