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
73
74
75
76
77
|
#################################################################
#
# 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 is 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 is 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
|