aboutsummaryrefslogtreecommitdiffstats
path: root/juju/openo_connect.py
diff options
context:
space:
mode:
Diffstat (limited to 'juju/openo_connect.py')
-rwxr-xr-x[-rw-r--r--]juju/openo_connect.py154
1 files changed, 125 insertions, 29 deletions
diff --git a/juju/openo_connect.py b/juju/openo_connect.py
index caae216..387ae98 100644..100755
--- a/juju/openo_connect.py
+++ b/juju/openo_connect.py
@@ -11,8 +11,11 @@
import argparse
import sys
import os
+import time
import requests
import json
+from pprint import pprint
+
class RaiseError(Exception):
def __init__(self, msg):
@@ -21,33 +24,42 @@ class RaiseError(Exception):
def __str__(self):
return repr(self.msg)
+
def request_get(url):
try:
resp = requests.get(url)
if resp.status_code not in (200,201):
+ pprint (resp.json())
raise RaiseError('get url: %s fail %d' % (url, resp.status_code))
except Exception:
raise
return resp.json()
+
def request_post(url, data, headers):
try:
resp = requests.post(url, data=json.dumps(data), headers=headers)
- if resp.status_code not in (200,201):
+ if resp.status_code not in (200,201,202):
+ pprint (resp.json())
raise RaiseError('post url: %s fail %d' % (url, resp.status_code))
except Exception:
raise
+ return resp.json()
+
+
def request_delete(url):
try:
resp = requests.delete(url)
if resp.status_code not in (200,201,204):
+ pprint (resp.json())
raise RaiseError('delete url: %s fail %d' % (url, resp.status_code))
except Exception:
raise
-def add_common_tosca_aria(msb_ip, tosca_aria_ip):
+
+def add_common_tosca_aria(msb_ip, tosca_aria_ip, tosca_aria_port):
url = 'http://' + msb_ip + '/openoapi/microservices/v1/apiRoute'
headers = {'Content-Type': 'application/json'}
data = {"serviceName":"tosca",
@@ -58,11 +70,24 @@ def add_common_tosca_aria(msb_ip, tosca_aria_ip):
"apiJsonType":"1",
"control":"0",
"status":"1",
- "servers":[{"ip":tosca_aria_ip,"port":"8204","weight":0}]}
+ "servers":[{"ip":tosca_aria_ip,"port":tosca_aria_port,"weight":0}]}
request_post(url, data, headers)
+
+def get_vim_id(msb_ip, vim_type):
+ vim_url = 'http://' + msb_ip + '/openoapi/extsys/v1/vims/'
+ get_vim = request_get(vim_url)
+ vimId = []
+ for i in get_vim:
+ if i["type"] == vim_type:
+ vimId.append(i['vimId'])
+
+ return vimId
+
+
def add_openo_vim(msb_ip, auth_url):
- url = 'http://' + msb_ip + '/openoapi/extsys/v1/vims/'
+ vim_url = 'http://' + msb_ip + '/openoapi/extsys/v1/vims/'
+ vnfm_url = 'http://' + msb_ip + '/openoapi/extsys/v1/vnfms/'
headers = {'Content-Type': 'application/json'}
data = {"name":"openstack",
"url":auth_url,
@@ -74,34 +99,32 @@ def add_openo_vim(msb_ip, auth_url):
"version":"newton",
"description":"",
"type":"openstack"}
- get = request_get(url)
- for i in get:
- if i["type"] == "openstack":
- request_delete(url + i["vimId"])
+ vimId = get_vim_id(msb_ip, "openstack")
+ if len(vimId) != 0:
+ get_vnfm = request_get(vnfm_url)
+ for i in get_vnfm:
+ if i["vimId"] == vimId[0]:
+ request_delete(vnfm_url + i["vnfmId"])
+ request_delete(vim_url + vimId[0])
+
+ request_post(vim_url, data, headers)
- request_post(url, data, headers)
def add_openo_vnfm(msb_ip, juju_client_ip):
- vim_url = 'http://' + msb_ip + '/openoapi/extsys/v1/vims'
- vnfm_url = 'http://' + msb_ip + '/openoapi/extsys/v1/vnfms'
+ vim_url = 'http://' + msb_ip + '/openoapi/extsys/v1/vims/'
+ vnfm_url = 'http://' + msb_ip + '/openoapi/extsys/v1/vnfms/'
headers = {'Content-Type': 'application/json'}
- get_vim = request_get(vim_url)
- vimId = ''
- for i in get_vim:
- if i["type"] == "openstack":
- vimId = i['vimId']
- break
-
- if vimId is None:
+ vimId = get_vim_id(msb_ip, "openstack")
+ if len(vimId) == 0:
raise RaiseError("vim openstack not found")
get_vnfm = request_get(vnfm_url)
for i in get_vnfm:
- if i["vimId"] == vimId:
+ if i["vimId"] == vimId[0]:
request_delete(vnfm_url + i["vnfmId"])
data = {"name":"Juju-VNFM",
- "vimId":vimId,
+ "vimId":vimId[0],
"vendor":"jujuvnfm",
"version":"jujuvnfm",
"type":"jujuvnfm",
@@ -112,27 +135,100 @@ def add_openo_vnfm(msb_ip, juju_client_ip):
"password":""}
request_post(vnfm_url, data, headers)
+
+def upload_csar(msb_ip, package):
+ csar_url = 'http://' + msb_ip + '/openoapi/catalog/v1/csars'
+ files = {'file': open(package, 'rb')}
+ res = requests.post(csar_url, files=files)
+ if res.status_code != 200:
+ pprint(res.json())
+ raise Exception('Error with uploading csar package: %s' % package)
+
+
+def delete_csars(msb_ip):
+ csar_url = 'http://' + msb_ip + '/openoapi/catalog/v1/csars/'
+ csars = request_get(csar_url)
+ for csar in csars:
+ csarId = csar["csarId"]
+ request_delete(csar_url + csarId)
+ pprint("csar %s is deleted" % csarId)
+
+
+def package_onboard(msb_ip):
+ csar_url = 'http://' + msb_ip + '/openoapi/catalog/v1/csars'
+ vnf_url = 'http://' + msb_ip + '/openoapi/nslcm/v1/vnfpackage'
+ ns_url = 'http://' + msb_ip + '/openoapi/nslcm/v1/nspackage'
+ headers = {'Content-Type': 'application/json'}
+ get_csar = request_get(csar_url)
+ vnf_csarId = ''
+ ns_csarId = ''
+ for i in get_csar:
+ if i["type"] == "NFAR":
+ vnf_csarId = i["csarId"]
+ if i["type"] == "NSAR":
+ ns_csarId = i["csarId"]
+
+ if vnf_csarId is None:
+ raise RaiseError("vnf package not found")
+ if ns_csarId is None:
+ raise RaiseError("ns package not found")
+
+ vnf_data = {"csarId": vnf_csarId}
+ ns_data = {"csarId": ns_csarId}
+ request_post(vnf_url, vnf_data, headers)
+ time.sleep(5)
+ request_post(ns_url, ns_data, headers)
+ get_csar_after = request_get(csar_url)
+ for i in get_csar_after:
+ if i["onBoardState"] == "non-onBoarded":
+ raise RaiseError("csar onboard fail")
+
+
+def create_service(msb_ip, ns_name, description, nsdId):
+ service_url = 'http://' + msb_ip + '/openoapi/servicegateway/v1/services'
+ headers = {'Content-Type': 'application/json'}
+ data1 = {"nsdId": nsdId,
+ "nsName": ns_name,
+ "description": description,
+ "gatewayUri":"/openoapi/nslcm/v1/ns"}
+ vimId = get_vim_id(msb_ip, "openstack")
+ resp = request_post(service_url, data1, headers)
+ instance_id = resp["serviceId"]
+ data2 = {"gatewayUri":"/openoapi/nslcm/v1/ns/" + instance_id + "/instantiate",
+ "nsInstanceId":instance_id,
+ "additionalParamForNs":{
+ "location":vimId[0],
+ "sdncontroller":"select"}
+ }
+ request_post(service_url, data2, headers)
+
+
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--msb_ip", action='store', help="common_services_msb ip")
parser.add_argument("--tosca_aria_ip", action='store', help="common_tosca_aria ip")
+ parser.add_argument("--tosca_aria_port", action='store', help="common_tosca_aria port")
parser.add_argument("--juju_client_ip", action='store', help="juju client ip")
parser.add_argument("--auth_url", action='store', help="openstack auth url")
+ parser.add_argument("--ns_pkg", action='store', help="ns package")
+ parser.add_argument("--vnf_pkg", action='store', help="vnf package")
args = parser.parse_args()
msb_ip = args.msb_ip
tosca_aria_ip = args.tosca_aria_ip
+ tosca_aria_port = args.tosca_aria_port
juju_client_ip = args.juju_client_ip
auth_url = args.auth_url
+ ns_pkg = args.ns_pkg
+ vnf_pkg = args.vnf_pkg
- if None in (msb_ip, tosca_aria_ip, juju_client_ip, auth_url):
- missing = []
- for i in (msb_ip, tosca_aria_ip, juju_client_ip, auth_url):
- if i is None:
- missing.append(i)
- raise RaiseError('missing parameter: %s' % missing)
-
- add_common_tosca_aria(msb_ip, tosca_aria_ip)
+ add_common_tosca_aria(msb_ip, tosca_aria_ip, tosca_aria_port)
add_openo_vim(msb_ip, auth_url)
add_openo_vnfm(msb_ip, juju_client_ip)
+
+ delete_csars(msb_ip)
+ upload_csar(msb_ip, vnf_pkg)
+ upload_csar(msb_ip, ns_pkg)
+ package_onboard(msb_ip)
+