mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-20 10:50:08 +03:00
feature #3330: Filter existing templates and nets
(cherry picked from commit 3af8bad7cdb665d2de2b823146d2147e582d63f4)
This commit is contained in:
parent
199e070f6d
commit
7ca6790f6b
@ -182,7 +182,7 @@ cmd=CommandParser::CmdParser.new(ARGV) do
|
||||
next if STDIN.gets.strip.downcase != 'y'
|
||||
|
||||
if tmps.empty?
|
||||
STDOUT.print " No VM Templates found in #{dc}...\n\n"
|
||||
STDOUT.print " No new VM Templates found in #{dc}...\n\n"
|
||||
next
|
||||
end
|
||||
|
||||
@ -253,7 +253,7 @@ cmd=CommandParser::CmdParser.new(ARGV) do
|
||||
next if STDIN.gets.strip.downcase != 'y'
|
||||
|
||||
if tmps.empty?
|
||||
STDOUT.print " No Networks found in #{dc}...\n\n"
|
||||
STDOUT.print " No new Networks found in #{dc}...\n\n"
|
||||
next
|
||||
end
|
||||
|
||||
|
@ -204,12 +204,18 @@ class VIClient
|
||||
|
||||
########################################################################
|
||||
# Builds a hash with the Datacenter / VM Templates for this VCenter
|
||||
# @param one_client [OpenNebula::Client] Use this client instead of @one
|
||||
# @return [Hash] in the form
|
||||
# { dc_name [String] => }
|
||||
########################################################################
|
||||
def vm_templates
|
||||
def vm_templates(one_client=nil)
|
||||
vm_templates = {}
|
||||
|
||||
tpool = OpenNebula::TemplatePool.new(
|
||||
(one_client||@one), OpenNebula::Pool::INFO_ALL)
|
||||
rc = tpool.info
|
||||
# TODO check error
|
||||
|
||||
datacenters = get_entities(@root, 'Datacenter')
|
||||
|
||||
datacenters.each { |dc|
|
||||
@ -222,12 +228,16 @@ class VIClient
|
||||
tmp.each { |t|
|
||||
vi_tmp = VCenterVm.new(self, t)
|
||||
|
||||
one_tmp << {
|
||||
:name => vi_tmp.vm.name,
|
||||
:uuid => vi_tmp.vm.config.uuid,
|
||||
:host => vi_tmp.vm.runtime.host.parent.name,
|
||||
:one => vi_tmp.to_one
|
||||
}
|
||||
if !tpool["VMTEMPLATE/TEMPLATE/PUBLIC_CLOUD[\
|
||||
TYPE=\"vcenter\" \
|
||||
and VM_TEMPLATE=\"#{vi_tmp.vm.config.uuid}\"]"]
|
||||
one_tmp << {
|
||||
:name => vi_tmp.vm.name,
|
||||
:uuid => vi_tmp.vm.config.uuid,
|
||||
:host => vi_tmp.vm.runtime.host.parent.name,
|
||||
:one => vi_tmp.to_one
|
||||
}
|
||||
end
|
||||
}
|
||||
|
||||
vm_templates[dc.name] = one_tmp
|
||||
@ -239,12 +249,18 @@ class VIClient
|
||||
########################################################################
|
||||
# Builds a hash with the Datacenter / CCR (Distributed)Networks
|
||||
# for this VCenter
|
||||
# @param one_client [OpenNebula::Client] Use this client instead of @one
|
||||
# @return [Hash] in the form
|
||||
# { dc_name [String] => Networks [Array] }
|
||||
########################################################################
|
||||
def vcenter_networks
|
||||
def vcenter_networks(one_client=nil)
|
||||
vcenter_networks = {}
|
||||
|
||||
vnpool = OpenNebula::VirtualNetworkPool.new(
|
||||
(one_client||@one), OpenNebula::Pool::INFO_ALL)
|
||||
rc = vnpool.info
|
||||
# TODO check error
|
||||
#
|
||||
datacenters = get_entities(@root, 'Datacenter')
|
||||
|
||||
datacenters.each { |dc|
|
||||
@ -252,51 +268,57 @@ class VIClient
|
||||
one_nets = []
|
||||
|
||||
networks.each { |n|
|
||||
one_nets << {
|
||||
:name => n.name,
|
||||
:bridge => n.name,
|
||||
:type => "Port Group",
|
||||
:one => "NAME = \"#{n[:name]}\"\n" \
|
||||
"BRIDGE = \"#{n[:name]}\"\n" \
|
||||
"VCENTER_TYPE = \"Port Group\""
|
||||
}
|
||||
if !vnpool["VNET[BRIDGE=\"#{n[:name]}\"]/\
|
||||
TEMPLATE[VCENTER_TYPE=\"Port Group\"]"]
|
||||
one_nets << {
|
||||
:name => n.name,
|
||||
:bridge => n.name,
|
||||
:type => "Port Group",
|
||||
:one => "NAME = \"#{n[:name]}\"\n" \
|
||||
"BRIDGE = \"#{n[:name]}\"\n" \
|
||||
"VCENTER_TYPE = \"Port Group\""
|
||||
}
|
||||
end
|
||||
}
|
||||
|
||||
networks = get_entities(dc.networkFolder,
|
||||
'DistributedVirtualPortgroup' )
|
||||
|
||||
networks.each { |n|
|
||||
vnet_template = "NAME = \"#{n[:name]}\"\n" \
|
||||
"BRIDGE = \"#{n[:name]}\"\n" \
|
||||
"VCENTER_TYPE = \"Distributed Port Group\""
|
||||
if !vnpool["VNET[BRIDGE=\"#{n[:name]}\"]/\
|
||||
TEMPLATE[VCENTER_TYPE=\"Distributed Port Group\"]"]
|
||||
vnet_template = "NAME = \"#{n[:name]}\"\n" \
|
||||
"BRIDGE = \"#{n[:name]}\"\n" \
|
||||
"VCENTER_TYPE = \"Distributed Port Group\""
|
||||
|
||||
vlan = n.config.defaultPortConfig.vlan.vlanId
|
||||
vlan_str = ""
|
||||
vlan = n.config.defaultPortConfig.vlan.vlanId
|
||||
vlan_str = ""
|
||||
|
||||
if vlan != 0
|
||||
if vlan.is_a? Array
|
||||
vlan.each{|v|
|
||||
vlan_str += v.start.to_s + ".." + v.end.to_s + ","
|
||||
}
|
||||
vlan_str.chop!
|
||||
else
|
||||
vlan_str = vlan.to_s
|
||||
if vlan != 0
|
||||
if vlan.is_a? Array
|
||||
vlan.each{|v|
|
||||
vlan_str += v.start.to_s + ".." + v.end.to_s + ","
|
||||
}
|
||||
vlan_str.chop!
|
||||
else
|
||||
vlan_str = vlan.to_s
|
||||
end
|
||||
end
|
||||
|
||||
if !vlan_str.empty?
|
||||
vnet_template << "VLAN=\"YES\"\n" \
|
||||
"VLAN_ID=#{vlan_str}\n"
|
||||
end
|
||||
|
||||
one_net = {:name => n.name,
|
||||
:bridge => n.name,
|
||||
:type => "Distributed Port Group",
|
||||
:one => vnet_template}
|
||||
|
||||
one_net[:vlan] = vlan_str if !vlan_str.empty?
|
||||
|
||||
one_nets << one_net
|
||||
end
|
||||
|
||||
if !vlan_str.empty?
|
||||
vnet_template << "VLAN=\"YES\"\n" \
|
||||
"VLAN_ID=#{vlan_str}\n"
|
||||
end
|
||||
|
||||
one_net = {:name => n.name,
|
||||
:bridge => n.name,
|
||||
:type => "Distributed Port Group",
|
||||
:one => vnet_template}
|
||||
|
||||
one_net[:vlan] = vlan_str if !vlan_str.empty?
|
||||
|
||||
one_nets << one_net
|
||||
}
|
||||
|
||||
vcenter_networks[dc.name] = one_nets
|
||||
|
Loading…
x
Reference in New Issue
Block a user