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
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