Beispiel #1
0
def migrateVM(request):
    print "Inside the migrate VM API"

    env_ip = request.GET.get('env_ip')
    print env_ip
    cursor = connections['default'].cursor()
    sql = "SELECT * FROM vnf_env where env_ip='" + str(env_ip) + "'"
    print 'sql:' + sql
    cursor.execute(sql)
    results = namedtuplefetchall(cursor)
    for row in results:
        env_ip = str(row.env_ip)
        user = str(row.user)
        tenant = str(row.tenant)
        password = str(row.password)


    #ip = properties.openstack_IP
    #user = properties.openstack_user
    #tenant = properties.openstack_tenant
    #password = properties.openstack_password

    auth_token = generalfunctions.funcCreateAuthToken(env_ip, user, tenant, password)
    print auth_token

    server_id = request.GET.get('server_id')
    print 'server_id'+str(server_id)

    # List all Tenants
    headers = {'Content-type': 'application/json', 'Accept': 'application/json', 'X-Auth-Token': auth_token}
    response = requests.get('http://' + env_ip + ':35357/v2.0/tenants', headers=headers)

    tenant_response = response.json()
    tenant_details = tenant_response["tenants"]

    tenant_id = ''
    for tenant in tenant_details:
        if tenant["name"] == 'demo':
            tenant_id = tenant["id"]

    host = request.GET.get('host')

    print 'host'+str(host)
    headers = {'Content-type': 'application/json', 'Accept': 'application/json', 'X-Auth-Token': auth_token}
    #host = 'Compute1'
    payload = { "os-migrateLive": {
        "host": host,
        "block_migration": True,
        "disk_over_commit": False}
    }
    response = requests.post('http://'+ env_ip +':8774/v2.1/'+ tenant_id + '/servers/' + server_id + '/action' ,data=json.dumps(payload),headers=headers)
    status = response.status_code
    print status
    #response = response.json()
    if status ==202:
        print 'Live Migration Success...'
        return JsonResponse({"status":"success"})
    else:
        print 'Live Migration Failure... Status Code:'+status
        return JsonResponse({"status":"failure"})
Beispiel #2
0
def CreateGlanceImage(request):
    uploadFromFile = request.POST.get('uploadFromFile')
    print uploadFromFile
    ip = properties.openstack_IP
    user = properties.openstack_user
    tenant = properties.openstack_tenant
    password = properties.openstack_password

    auth_token = generalfunctions.funcCreateAuthToken(ip, user, tenant, password)
    print "auth token:" + auth_token

    if uploadFromFile == 'true':
        name = request.POST.get('name')
        imageFormat = request.POST.get('imageFormat')
        containerFormat = request.POST.get('containerFormat')
        print name
        path = handle_uploaded_file_image(request.FILES['imageFile'])
        headers = {'Content-type': 'application/json', 'Accept': 'application/json', 'X-Auth-Token': auth_token}
        data = {'name': str(name), 'visibility':'public', 'disk_format': imageFormat, 'container_format': containerFormat}
        print data
        print 'http://' + ip + ':9292/v2/images'
        response = requests.post('http://' + ip + ':9292/v2/images', data=json.dumps(data), headers=headers)
        print response.status_code
        print response
        print '****************************************************************'
        response=response.json()
        image_file = response["file"]

        # upload Image Data
        headers = {'Content-type': 'application/octet-stream', 'X-Auth-Token': auth_token}
        data = open(path, 'rb').read()
        response = requests.put('http://' + ip + ':9292' + image_file, data=data, headers=headers)
        print response.status_code
        print response
        if response.status_code == 204:
            messages.error(request, 'Image created successfully')
            return HttpResponseRedirect('/Images/')
        else:
            messages.error(request, 'Some problem occurred when creating the image')
            return HttpResponseRedirect('/Images/')
    else:
        imageUrl = request.POST.get('imageUrl')
        imageFormat = request.POST.get('imageFormat')
        containerFormat = request.POST.get('containerFormat')
        print imageUrl
        name = request.POST.get('name')
        print name
        headers = {'Content-type': 'application/json', 'Accept': 'application/json', 'X-Auth-Token': auth_token, 'x-glance-api-copy-from':imageUrl, 'x-image-meta-name': name, 'x-image-meta-disk_format':imageFormat, 'x-image-meta-container_format':containerFormat}
        response = requests.post('http://' + ip + ':9292/v1/images', headers=headers)
        print response.status_code
        print response.json()
        if response.status_code == 201:
            messages.error(request, 'Image created successfully')
            return HttpResponseRedirect('/Images/')
        else:
            messages.error(request, 'Some problem occurred when creating the image')
            return HttpResponseRedirect('/Images/')
Beispiel #3
0
def listInstances(request):
    print "Inside the listInstances API"

    env_ip = request.GET.get('env_ip')
    print env_ip
    cursor = connections['default'].cursor()
    sql = "SELECT * FROM vnf_env where env_ip='" + str(env_ip)+"'"
    print 'sql:' + sql
    cursor.execute(sql)
    results = namedtuplefetchall(cursor)
    for row in results:
        env_ip = str(row.env_ip)
        user = str(row.user)
        tenant = str(row.tenant)
        password = str(row.password)

    #ip = properties.openstack_IP
    #user = properties.openstack_user
    #tenant = properties.openstack_tenant
    #password = properties.openstack_password

    auth_token = generalfunctions.funcCreateAuthToken(env_ip, user, tenant, password)
    print auth_token

    # List all Tenants
    headers = {'Content-type': 'application/json','Accept':'application/json','X-Auth-Token': auth_token}
    response = requests.get('http://'+ env_ip +':35357/v2.0/tenants' , headers=headers)

    tenant_response = response.json()
    tenant_details = tenant_response["tenants"]

    print str(tenant_details)
    tenant_id = ''
    for tenant in tenant_details:
        if tenant["name"] == 'demo':
            tenant_id = tenant["id"]


    # List all stack

    #headers = {'Content-type': 'application/json','Accept':'application/json','X-Auth-Token': auth_token}
    #response = requests.get('http://'+ ip +':8004/v1/' + tenant_id + '/stacks' , headers=headers)

    #stack_response = response.json()

    #print stack_response

    # List all servers

    headers = {'Content-type': 'application/json','Accept':'application/json','X-Auth-Token': auth_token}
    response = requests.get('http://'+ env_ip +':8774/v2/' + tenant_id + '/servers' , headers=headers)

    server_response = response.json()
    print server_response
    return JsonResponse(server_response)
Beispiel #4
0
def ListGlanceImages(request):

    ip = properties.openstack_IP
    user = properties.openstack_user
    tenant = properties.openstack_tenant
    password = properties.openstack_password

    auth_token = generalfunctions.funcCreateAuthToken(ip, user, tenant, password)
    print "auth token:" + auth_token

    headers = {'Content-type': 'application/json', 'Accept': 'application/json', 'X-Auth-Token': auth_token}

    response = requests.get('http://' + ip + ':9292/v2/images', headers=headers)

    return JsonResponse(response.json())
Beispiel #5
0
def TerminateVNF(request):
    id = request.GET.get('id')

    ip = properties.openstack_IP
    user = properties.openstack_user
    tenant = properties.openstack_tenant
    password = properties.openstack_password

    auth_token = generalfunctions.funcCreateAuthToken(ip, user, tenant, password)
    print "auth token:" + auth_token

    headers = {'Content-type': 'application/json', 'Accept': 'application/json', 'X-Auth-Token': auth_token}

    response = requests.delete('http://' + ip + ':8888/v1.0/vnfs/'+str(id), headers=headers)
    print response.status_code
    if response.status_code == 204:
        return JsonResponse({"status": "success", "content": "VNF terminated successfully"})
    else:
        return JsonResponse({"status": "failed", "content": "Problem occurred when terminating the VNF"})
Beispiel #6
0
def GetHost(request):
    server_id = request.GET.get('server_id')
    env_ip = request.GET.get('env_ip')

    cursor = connections['default'].cursor()
    sql = "SELECT * FROM vnf_env where env_ip='"+env_ip+"'"
    print 'sql:' + sql
    cursor.execute(sql)
    results = namedtuplefetchall(cursor)
    for row in results:
        env_ip = str(row.env_ip)
        user = str(row.user)
        tenant = str(row.tenant)
        password = str(row.password)

    auth_token = generalfunctions.funcCreateAuthToken(env_ip, user, tenant, password)
    print "auth token:" + auth_token

    # List all Tenants
    headers = {'Content-type': 'application/json', 'Accept': 'application/json', 'X-Auth-Token': auth_token}
    response = requests.get('http://' + env_ip + ':35357/v2.0/tenants', headers=headers)

    tenant_response = response.json()
    tenant_details = tenant_response["tenants"]

    print str(tenant_details)
    tenant_id = ''
    for tenant in tenant_details:
        if tenant["name"] == 'demo':
            tenant_id = tenant["id"]


    headers = {'Content-type': 'application/json', 'Accept': 'application/json', 'X-Auth-Token': auth_token}
    url = 'http://' + env_ip + ':8774/v2/' + tenant_id + '/servers/' + server_id
    print url
    response = requests.get(url, headers=headers)
    response = response.json()
    print response
    host = response["server"]["OS-EXT-SRV-ATTR:host"]
    print 'host' + str(host)
    return JsonResponse({"host": host})
Beispiel #7
0
def DeployVnfdTemplate(request):
    # Creation of VNF Image using template ID
    vnfd_template_id = request.GET.get('vnfCatalogId')
    vnfd_name = request.GET.get('vndfname')

    ip = properties.openstack_IP
    user = properties.openstack_user
    tenant = properties.openstack_tenant
    password = properties.openstack_password

    auth_token = generalfunctions.funcCreateAuthToken(ip, user, tenant, password)
    print "auth token:" + auth_token
    headers = {'Content-type': 'application/json', 'Accept': 'application/json', 'X-Auth-Token': auth_token}

    vnf_image_payload = {
        "auth": {
            "tenantName": "admin",
            "passwordCredentials": {
                "username": "******",
                "password": "******"
            }
        },
        "vnf": {
            "vnfd_id": vnfd_template_id,
            "name": vnfd_name
        }
    }

    response = requests.post('http://' + ip + ':8888/v1.0/vnfs', data=json.dumps(vnf_image_payload),
                                       headers=headers)
    vnf_image_response = response.json()
    print "List create VNF response:" + str(vnf_image_response)

    print response.status_code
    print response
    if response.status_code == 201:
        return JsonResponse({"status":"success"})
    else:
        return JsonResponse({"status": "failed"})
Beispiel #8
0
def CreateVnfdTemplate(request):

    jsonrequest = json.loads(request.body)
    vnfdname = jsonrequest["vndfname"]
    vnfdcontent = jsonrequest["vnfdcontent"]
    print vnfdname
    print vnfdcontent
    yaml_string = '';
    for line in vnfdcontent.splitlines():
        print line
        line = line.rstrip('\n')
        yaml_string = yaml_string + line + '\\r\\n';
        # data = f.read().replace('\n','')
    print 'YAML_String:' + yaml_string

    ip = properties.openstack_IP
    user = properties.openstack_user
    tenant = properties.openstack_tenant
    password = properties.openstack_password

    auth_token = generalfunctions.funcCreateAuthToken(ip, user, tenant, password)
    print "auth token:" + auth_token

    ###Creation the VNFD template
    headers = {'Content-type': 'application/json', 'Accept': 'application/json', 'X-Auth-Token': auth_token}
    payload = {
	    "auth": {
		"tenantName": "admin",
		"passwordCredentials": {
		    "username": "******",
		    "password": "******"
		}
	    },
	    "vnfd": {
		"service_types": [
		    {
		        "service_type": "vnfd"
		    }
		],
		"mgmt_driver": "noop",
		"infra_driver": "heat",
		"attributes": {
		    "vnfd": vnfdcontent
		},
		"name": vnfdname
	    }
	}
    print '*********************************************************'
    print json.dumps(payload)
    print '*********************************************************'
    print payload

    response = requests.post('http://' + ip + ':8888/v1.0/vnfds', data=json.dumps(payload), headers=headers)


    if response.status_code == 201:
        vnfd_create_response = response.json()
        vnfd_template_id = vnfd_create_response["vnfd"]["id"]
        print "vnfd_template_id:" + str(vnfd_template_id)
        print "vnfd_create_response:" + str(vnfd_create_response)
        return JsonResponse({"status": "success", 'content': "VNF catalog created successfully"})
    else:
        return JsonResponse({"status": "failed", 'content': "Problem occurred when creating VNF catalog"})