Revision 7875f359
Added by Tom Caspy about 9 years ago
app/models/compute_resource.rb | ||
---|---|---|
|
||
def save_vm(uuid, attr)
|
||
vm = find_vm_by_uuid(uuid)
|
||
vm.attributes.merge!(attr.symbolize_keys)
|
||
vm.attributes.merge!(attr.deep_symbolize_keys)
|
||
vm.save
|
||
end
|
||
|
||
... | ... | |
# returns a new fog server instance
|
||
def new_vm(attr = {})
|
||
test_connection
|
||
client.servers.new vm_instance_defaults.merge(attr.to_hash.symbolize_keys) if errors.empty?
|
||
client.servers.new vm_instance_defaults.merge(attr.to_hash.deep_symbolize_keys) if errors.empty?
|
||
end
|
||
|
||
# return fog new interface ( network adapter )
|
||
... | ... | |
end
|
||
|
||
def create_vm(args = {})
|
||
options = vm_instance_defaults.merge(args.to_hash.symbolize_keys)
|
||
options = vm_instance_defaults.merge(args.to_hash.deep_symbolize_keys)
|
||
logger.debug("creating VM with the following options: #{options.inspect}")
|
||
client.servers.create options
|
||
end
|
||
... | ... | |
def nested_attributes_for(type, opts)
|
||
return [] unless opts
|
||
opts = opts.dup #duplicate to prevent changing the origin opts.
|
||
opts.delete("new_#{type}") # delete template
|
||
opts.delete("new_#{type}") || opts.delete("new_#{type}".to_sym) # delete template
|
||
# convert our options hash into a sorted array (e.g. to preserve nic / disks order)
|
||
opts = opts.sort { |l, r| l[0].sub('new_','').to_i <=> r[0].sub('new_','').to_i }.map { |e| Hash[e[1]] }
|
||
opts = opts.sort { |l, r| l[0].to_s.sub('new_','').to_i <=> r[0].to_s.sub('new_','').to_i }.map { |e| Hash[e[1]] }
|
||
opts.map do |v|
|
||
if v[:"_delete"] == '1' && v[:id].blank?
|
||
nil
|
||
else
|
||
v.symbolize_keys # convert to symbols deeper hashes
|
||
v.deep_symbolize_keys # convert to symbols deeper hashes
|
||
end
|
||
end.compact
|
||
end
|
Also available in: Unified diff
fixes #9240 - in case of hash with indifferent access, serialize as hash
(cherry picked from commit 3059cea1c207718217f07b9cdc706bc516f5db1b)