################################################################# # # Copyright 2015 Ericsson AB # All Rights Reserved # # Author: Manuel Buil # 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