aboutsummaryrefslogtreecommitdiffstats
path: root/vnfmgr/vnfmgr_main.py
blob: b5ab8be1e74cd8a03c5ca2f7c0356d185fc57780 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#################################################################
#								#
# Copyright 2015 Ericsson AB					#
# All Rights Reserved						#
#								#
#	Author: Manuel Buil <Manuel.Buil@ericsson.com>		#
#	Version: 0.1						#
#								#
#################################################################

import pdb
from vnfmgr_os.vnfmgr_os import OpenStack_API
import vnfmgr_odl.vnfmgr_odl as odlscript
import time
import json

if __name__ == "__main__":
    #OpenStack environment information
    authurl = "http://localhost:5000/v2.0"
    adminTenantName = 'admin'
    adminTenantUser = 'admin'
    adminTenantPass = 'abc123'
    tenantName = adminTenantName
    tenantUser = adminTenantUser
    tenantPass = adminTenantPass

    openstack = OpenStack_API(authurl, tenantName, tenantUser, tenantPass)

    # 1 - Get the SF type
    # Provide the file with the SFC configuration
    file_json = "vnfmgr_odl/sample_config/RestConf-SFCs-HttpPut.json"
    # Read the config files which refer to SF
    json_data=open(file_json).read()
    data = json.loads(json_data)
    pdb.set_trace()

    # Grab the SF type
    chains = data['service-function-chains']['service-function-chain']
    for chain in chains:
        SFs = chain['sfc-service-function']
        for SF in SFs:
            sf_type = SF['type']
            name = SF['name']
            #2 - Search the image in glance with that SF type
            image = openstack.find_image(sf_type)
            if image == None:
                print("There is no image with that sf_name")
                exit(1)
                # 3 - Boot the VM without network
                flavor = 1
                print("About to deploy")
                vm = openstack.create_vm(name,image,flavor)
                if vm == None:
                    print("Problems to deploy the VM")
                    exit(1)
	
    #Make the call to ODL to deploy SFC
    context = odlscript.Context()
    context.set_path_prefix_paths("vnfmgr_odl/sample_config")
    pdb.set_trace()
    odlscript.send_rest(context, "PUT", context.rest_url_sf_sel,  context.rest_path_sf_sel)
    odlscript.send_rest(context, "PUT", context.rest_url_sf,  context.rest_path_sf)
    odlscript.send_rest(context, "PUT", context.rest_url_sff, context.rest_path_sff)
    odlscript.send_rest(context, "PUT", context.rest_url_sfc, context.rest_path_sfc)
    odlscript.send_rest(context, "PUT", context.rest_url_sfp, context.rest_path_sfp)
    time.sleep(1);
    odlscript.send_rest(context, "POST", context.rest_url_rsp_rpc, context.rest_path_rsp)


	#TO DO
	# Check if the SF_VM already exists before creating it
	# Network of the VM