def save
raise "Operation not supported" if self.identity
requires :flavor_id, :image_id, :zoneid
unless networkids
networks = connection.list_networks(:zoneid => zoneid)
if networks.empty?
raise "No networks. Please create one, or specify a network ID"
else
self.networkids = networks.sort {|x,y| x['id'] <=> y['id']}[0]['id']
end
end
options = {
:serviceofferingid => flavor_id,
:templateid => image_id,
:name => name,
:zoneid => zoneid,
:networkids => networkids,
:account => account,
:diskofferingid => diskofferingid,
:displayname => displayname,
:domainid => domainid,
:group => group,
:hypervisor => hypervisor,
:keypair => keypair,
:securitygroupids => securitygroupids,
:size => size,
:userdata => userdata
}.delete_if {|k,v| v.nil? || v == "" }
data = connection.deploy_virtual_machine(options)
merge_attributes(data)
true
end