Revision 693391ba
Added by Dominic Cleal almost 10 years ago
app/models/compute_resources/foreman/model/vmware.rb | ||
---|---|---|
end
|
||
|
||
def parse_args args
|
||
dc_networks = networks
|
||
args["interfaces_attributes"].each do |key, interface|
|
||
# Convert network id into name
|
||
net = dc_networks.find { |n| n.id == interface["network"] }
|
||
raise "Unknown Network ID: #{interface["network"]}" if net.nil?
|
||
interface["network"] = net.name
|
||
end
|
||
args = args.symbolize_keys
|
||
|
||
# convert rails nested_attributes into a plain, symbolized hash
|
||
... | ... | |
args
|
||
end
|
||
|
||
def create_vm controller_args = { }
|
||
args = parse_args controller_args.dup
|
||
# Change network IDs for names only at the point of creation, as IDs are
|
||
# used in the UI for select boxes etc.
|
||
def parse_networks args
|
||
args = args.deep_dup
|
||
dc_networks = networks
|
||
args["interfaces_attributes"].each do |key, interface|
|
||
# Convert network id into name
|
||
net = dc_networks.find { |n| [n.id, n.name].include?(interface["network"]) }
|
||
raise "Unknown Network ID: #{interface["network"]}" if net.nil?
|
||
interface["network"] = net.name
|
||
end if args["interfaces_attributes"]
|
||
args
|
||
end
|
||
|
||
def create_vm args = { }
|
||
test_connection
|
||
return unless errors.empty?
|
||
|
||
args = parse_networks(args)
|
||
if args[:image_id].present?
|
||
clone_vm(args)
|
||
else
|
||
... | ... | |
end
|
||
|
||
def new_vm args
|
||
args = parse_args args
|
||
opts = vm_instance_defaults.symbolize_keys.merge(args.symbolize_keys)
|
||
client.servers.new opts
|
||
end
|
||
... | ... | |
# +searchIndex.FindChild("Resources")+ in RbVmomi that then returns nil
|
||
# because it has no children.
|
||
def clone_vm args
|
||
args = parse_args args
|
||
path_replace = %r{/Datacenters/#{datacenter}/vm(/|)}
|
||
|
||
interfaces = client.list_vm_interfaces(args[:image_id])
|
Also available in: Unified diff
fixes #5652 - run parse_args when calling new_vm for compute profiles