Exemple #1
0
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
Exemple #2
0
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