def create_vm_with_network_mapping(from_vm, image='default', network_name='none'): nova = get_nova('to') flavor = get_flavor_by_id('to', from_vm.flavor['id']) if flavor is None: print "Error: Cannot continue for this VM without proper flavor" return None if image == 'default': image = glance_common.get_image_by_original_id('to', from_vm.image['id']) # networks = from_vm.networks net = neutron_common.get_network_by_name('to', network_name) nics = [{'net-id': net['id']}] #include original image info as metadata: img = glance_common.get_image('from', from_vm.image['id']) metadata = from_vm.metadata metadata.update({'original_vm_id': from_vm.id}) metadata.update({'original_image_id': img.id}) metadata.update({'original_image_name': img.name}) #attaching security groups during server creation does not seem to work, so moved to a separate task server = nova.servers.create(name=from_vm.name, image=image, flavor=flavor.id, nics=nics, meta=metadata, key_name=from_vm.key_name) print "Server created:", server.name return server
def create_vm(from_vm, image='default'): nova = get_nova('to') flavor = get_flavor_by_id('to', from_vm.flavor['id']) if flavor is None: print "Error: Cannot continue for this VM without proper flavor" return None if image == 'default': image = glance_common.get_image_by_original_id('to', from_vm.image['id']) networks = from_vm.networks nics = [] for network, nets in networks.iteritems(): for ip in nets: port = neutron_common.find_port_by_ip('to', ip) # nic = {'net-id': net['id'], 'v4-fixed-ip': ip} if port: if not port['device_owner'].startswith('network:floatingip'): nic = {'port-id': port['id']} nics.append(nic) #include original image info as metadata: img = glance_common.get_image('from', from_vm.image['id']) metadata = from_vm.metadata metadata.update({'original_vm_id':from_vm.id}) metadata.update({'original_image_id': img.id}) metadata.update({'original_image_name': img.name}) #attaching security groups during server creation does not seem to work, so moved to a separate task server = nova.servers.create(name=from_vm.name, image=image, flavor=flavor.id, nics=nics, meta=metadata, key_name=from_vm.key_name) print "Server created:", from_vm.name