Project

General

Profile

« Previous | Next » 

Revision dc6342d0

Added by Shlomi Zadok about 9 years ago

fixes #10030 - use override method to display templates in folders

(cherry picked from commit 0af12f79a6e6c3a3ecf72d39df89a2edd7e9b39b)

View differences:

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