def repair_instance(accounts, admin, instance, provider, new_fixed_ip=None):
    tenant_id = instance.extra['tenantId']
    tenant = accounts.user_manager.get_project_by_id(tenant_id)
    tenant_name = tenant.name
    identity = Identity.objects.get(
        created_by__username=tenant_name,
        provider__id=provider.id)
    network_init(identity)
    network_resources = accounts.network_manager.find_tenant_resources(
        tenant_id)
    network = network_resources['networks']
    if not network:
        network, subnet = accounts.create_network(identity)
    else:
        network = network[0]
        subnet = network_resources['subnets'][0]

    # Ensure the network,subnet exist
    if not new_fixed_ip:
        new_fixed_ip = get_next_ip(network_resources['ports'])

    user_driver = get_esh_driver(identity)
    port = accounts.network_manager.create_port(
        instance.id,
        network['id'],
        subnet['id'],
        new_fixed_ip,
        tenant_id)
    print "Created new port: %s" % port
    attached_intf = user_driver._connection.ex_attach_interface(
        instance.id,
        port['id'])
    print "Attached port to driver: %s" % attached_intf
def repair_instance(accounts, admin, instance, provider, new_fixed_ip=None):
    tenant_id = instance.extra['tenantId']
    tenant = accounts.user_manager.get_project_by_id(tenant_id)
    tenant_name = tenant.name
    identity = Identity.objects.get(created_by__username=tenant_name,
                                    provider__id=provider.id)
    network_init(identity)
    network_resources = accounts.network_manager.find_tenant_resources(
        tenant_id)
    network = network_resources['networks']
    if not network:
        network, subnet = accounts.create_network(identity)
    else:
        network = network[0]
        subnet = network_resources['subnets'][0]

    #Ensure the network,subnet exist
    if not new_fixed_ip:
        new_fixed_ip = get_next_ip(network_resources['ports'])

    user_driver = get_esh_driver(identity)
    port = accounts.network_manager.create_port(instance.id, network['id'],
                                                subnet['id'], new_fixed_ip,
                                                tenant_id)
    print "Created new port: %s" % port
    attached_intf = user_driver._connection.ex_attach_interface(
        instance.id, port['id'])
    print "Attached port to driver: %s" % attached_intf
示例#3
0
def boot_volume(esh_driver, identity_id, name, size, source_obj=None, source_type=None, **kwargs):
    """
    If not image and volume: boot the volume, it already has na image on it
    If image and not volume: boot a new volume with a copy of image on it
    If image and volume: raise
    """
    #TODO: Prepare a network for the user
    core_identity = Identity.objects.get(id=identity_id)
    network = network_init(core_identity)
    success, server_obj = esh_driver._connection.ex_boot_volume(
            source_obj, source_type, name, size, network,
            **kwargs)
    if server_obj.has_key('server'):
        instance_id = server_obj["server"]["id"]
        instance = esh_driver.get_instance(instance_id)
        return instance
    else:
        logger.info(server_obj)
        return server_obj
示例#4
0
def boot_volume(esh_driver,
                identity_id,
                name,
                size,
                source_obj=None,
                source_type=None,
                **kwargs):
    """
    If not image and volume: boot the volume, it already has na image on it
    If image and not volume: boot a new volume with a copy of image on it
    If image and volume: raise
    """
    #TODO: Prepare a network for the user
    core_identity = Identity.objects.get(id=identity_id)
    network = network_init(core_identity)
    success, server_obj = esh_driver._connection.ex_boot_volume(
        source_obj, source_type, name, size, network, **kwargs)
    if server_obj.has_key('server'):
        instance_id = server_obj["server"]["id"]
        instance = esh_driver.get_instance(instance_id)
        return instance
    else:
        logger.info(server_obj)
        return server_obj