Revision dc6342d0
Added by Shlomi Zadok about 9 years ago
app/models/concerns/fog_extensions.rb | ||
---|---|---|
require 'fog/vsphere/models/compute/folder'
|
||
Fog::Compute::Vsphere::Folder.send(:include, FogExtensions::Vsphere::Folder)
|
||
|
||
require 'fog/vsphere/requests/compute/get_virtual_machine'
|
||
Fog::Compute::Vsphere::Real.send(:include, FogExtensions::Vsphere::Template)
|
||
|
||
require 'fog/rackspace'
|
||
require 'fog/rackspace/models/compute_v2/server'
|
||
Fog::Compute::RackspaceV2::Server.send(:include, FogExtensions::RackspaceV2::Server)
|
app/models/concerns/fog_extensions/vsphere/template.rb | ||
---|---|---|
module FogExtensions
|
||
module Vsphere
|
||
module Template
|
||
extend ActiveSupport::Concern
|
||
included do
|
||
alias_method_chain :get_vm_by_name, :nested_template
|
||
end
|
||
|
||
def get_vm_by_name_with_nested_template(name, dc)
|
||
# In fog v1.29.0 get_templates is broken when the template is in a folder.
|
||
# A fix was merged into Fog https://github.com/fog/fog/commit/6f205bbe0cb9dd2fab3c6b0d371b9933aba41507
|
||
# this method override should be removed when fog v.1.30.0 will be used in Foreman.
|
||
vms = raw_list_all_virtual_machines(dc)
|
||
|
||
if name.include?('/')
|
||
folder, basename = name.split('/')
|
||
vms.keep_if { |v| v["name"] == basename && v.parent["name"] == folder }.first
|
||
else
|
||
vms.keep_if { |v| v["name"] == name }.first
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
Also available in: Unified diff
fixes #10030 - use override method to display templates in folders
(cherry picked from commit 0af12f79a6e6c3a3ecf72d39df89a2edd7e9b39b)