From: xinhuili Date: Thu, 7 Sep 2017 11:40:23 +0000 (+0000) Subject: Merge "Add registry API to MultiCloud framework" X-Git-Tag: v1.0.0~32 X-Git-Url: https://gerrit.onap.org/r/gitweb?p=multicloud%2Fframework.git;a=commitdiff_plain;h=bce887641f3a8217f472e8bd20e0a4d59b90496a;hp=a9562c1a7a41f0da36779193811f79fba2974e9b Merge "Add registry API to MultiCloud framework" --- diff --git a/multivimbroker/docker/Dockerfile b/multivimbroker/docker/Dockerfile new file mode 100644 index 0000000..4cd71c0 --- /dev/null +++ b/multivimbroker/docker/Dockerfile @@ -0,0 +1,23 @@ +FROM python:2 + +ENV MSB_ADDR "127.0.0.1" +ENV MSB_PORT "80" +ENV AAI_ADDR "aai.api.simpledemo.openecomp.org" +ENV AAI_PORT "8443" +ENV AAI_SCHEMA_VERSION "v11" +ENV AAI_USERNAME "AAI" +ENV AAI_PASSWORD "AAI" + +EXPOSE 9001 + +# COPY ./ /opt/multivimbroker/ +RUN apt-get update && \ + apt-get install -y unzip && \ + cd /opt/ && \ + wget -O multicloud-framework.zip "https://nexus.onap.org/service/local/artifact/maven/redirect?r=snapshots&g=org.onap.multicloud.framework&a=multicloud-framework&e=zip&v=LATEST" && \ + unzip -q -o -B multicloud-framework.zip && \ + rm -f multicloud-framework.zip && \ + pip install -r /opt/multivimbroker/requirements.txt + +WORKDIR /opt/multivimbroker +CMD /bin/sh -c /opt/multivimbroker/run.sh \ No newline at end of file diff --git a/multivimbroker/docker/build-image.sh b/multivimbroker/docker/build-image.sh new file mode 100644 index 0000000..b6f4dd4 --- /dev/null +++ b/multivimbroker/docker/build-image.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +IMAGE="multicloud-framework" +VERSION="latest" + +docker build -t ${IMAGE}:${VERSION} . \ No newline at end of file diff --git a/multivimbroker/multivimbroker/pub/config/config.py b/multivimbroker/multivimbroker/pub/config/config.py index 5f340ea..71b4d2a 100644 --- a/multivimbroker/multivimbroker/pub/config/config.py +++ b/multivimbroker/multivimbroker/pub/config/config.py @@ -15,8 +15,17 @@ import os MSB_SERVICE_IP = '127.0.0.1' MSB_SERVICE_PORT = '10080' + # [ESR] -ESR_GET_VIM_URI = "/api/extsys/v1/vims" +# ESR_GET_VIM_URI = "/api/extsys/v1/vims" + +# [A&AI] +AAI_ADDR = "aai.api.simpledemo.openecomp.org" +AAI_PORT = "8443" +AAI_SERVICE_URL = 'https://%s:%s/aai' % (AAI_ADDR, AAI_PORT) +AAI_SCHEMA_VERSION = "v11" +AAI_USERNAME = 'AAI' +AAI_PASSWORD = 'AAI' # [IMAGE LOCAL PATH] ROOT_PATH = os.path.dirname( @@ -27,15 +36,8 @@ REDIS_HOST = '127.0.0.1' REDIS_PORT = '6379' REDIS_PASSWD = '' -# [mysql] -DB_IP = "127.0.0.1" -DB_PORT = 3306 -DB_NAME = "multivimbroker" -DB_USER = "root" -DB_PASSWD = "password" - # [register] -REG_TO_MSB_WHEN_START = True +REG_TO_MSB_WHEN_START = False REG_TO_MSB_REG_URL = "/api/microservices/v1/services" REG_TO_MSB_REG_PARAM = { "serviceName": "multivim", diff --git a/multivimbroker/multivimbroker/pub/msapi/extsys.py b/multivimbroker/multivimbroker/pub/msapi/extsys.py index 75959a4..2058801 100644 --- a/multivimbroker/multivimbroker/pub/msapi/extsys.py +++ b/multivimbroker/multivimbroker/pub/msapi/extsys.py @@ -13,26 +13,29 @@ import json import logging from multivimbroker.pub.exceptions import VimBrokerException -from multivimbroker.pub.utils.restcall import req_by_msb -from multivimbroker.pub.config.config import ESR_GET_VIM_URI +from multivimbroker.pub.utils.restcall import get_res_from_aai logger = logging.getLogger(__name__) -def get_vims(): - ret = req_by_msb(ESR_GET_VIM_URI, "GET") - if ret[0] != 0: - logger.error("Status code is %s, detail is %s.", ret[2], ret[1]) - raise VimBrokerException( - status_code=404, content="Failed to query VIMs from extsys.") - return json.JSONDecoder().decode(ret[1]) +def split_vim_to_owner_region(vim_id): + split_vim = vim_id.split('_') + cloud_owner = split_vim[0] + cloud_region = "".join(split_vim[1:]) + return cloud_owner, cloud_region def get_vim_by_id(vim_id): - ret = req_by_msb("%s/%s" % (ESR_GET_VIM_URI, vim_id), "GET") + cloud_owner, cloud_region = split_vim_to_owner_region(vim_id) + ret = get_res_from_aai("/cloud-infrastructure/cloud-regions/cloud-region" + "/%s/%s" % (cloud_owner, cloud_region)) if ret[0] != 0: - logger.error("Status code is %s, detail is %s.", ret[2], ret[1]) + logger.error("Status code is %s, detail is %s." % (ret[2], ret[1])) raise VimBrokerException( status_code=404, content="Failed to query VIM with id (%s) from extsys." % vim_id) - return json.JSONDecoder().decode(ret[1]) + ret = json.JSONDecoder().decode(ret[1]) + ret['type'] = ret['cloud-type'] + ret['version'] = ret['cloud-region-version'] + ret['vimId'] = vim_id + return ret diff --git a/multivimbroker/multivimbroker/pub/utils/restcall.py b/multivimbroker/multivimbroker/pub/utils/restcall.py index b25b389..ccdbada 100644 --- a/multivimbroker/multivimbroker/pub/utils/restcall.py +++ b/multivimbroker/multivimbroker/pub/utils/restcall.py @@ -16,7 +16,10 @@ import urllib2 import uuid import httplib2 - +from multivimbroker.pub.config.config import AAI_SCHEMA_VERSION +from multivimbroker.pub.config.config import AAI_SERVICE_URL +from multivimbroker.pub.config.config import AAI_USERNAME +from multivimbroker.pub.config.config import AAI_PASSWORD from multivimbroker.pub.config.config import MSB_SERVICE_IP, MSB_SERVICE_PORT rest_no_auth, rest_oneway_auth, rest_bothway_auth = 0, 1, 2 @@ -100,6 +103,18 @@ def req_by_msb(resource, method, content='', headers=None): rest_no_auth, resource, method, content, headers) +def get_res_from_aai(resource, content=''): + headers = { + 'X-FromAppId': 'MultiCloud', + 'X-TransactionId': '9001', + 'content-type': 'application/json', + 'accept': 'application/json' + } + base_url = "%s/%s" % (AAI_SERVICE_URL, AAI_SCHEMA_VERSION) + return call_req(base_url, AAI_USERNAME, AAI_PASSWORD, rest_no_auth, + resource, "GET", content, headers) + + def combine_url(base_url, resource): full_url = None if base_url.endswith('/') and resource.startswith('/'): diff --git a/multivimbroker/pom.xml b/multivimbroker/pom.xml index 57a49fc..8affa09 100644 --- a/multivimbroker/pom.xml +++ b/multivimbroker/pom.xml @@ -11,7 +11,9 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. --> - + org.onap.oparent oparent @@ -26,25 +28,72 @@ multicloud/framework multivim broker - - - maven-assembly-plugin - - false - - assembly.xml - - - - - make-assembly - package - - single - - - - - + + + maven-assembly-plugin + + false + + assembly.xml + + + + + make-assembly + package + + single + + + + + - + + + docker + + + + io.fabric8 + docker-maven-plugin + 0.16.5 + false + + + + onap/multicloud/multicloud-framework + + try + ${basedir}/docker/ + ${basedir}/docker/Dockerfile + + ${project.version}-STAGING-latest + + + + + + + + generate-images + package + + build + + + + push-images + deploy + + build + push + + + + + + + + + \ No newline at end of file diff --git a/multivimbroker/run.sh b/multivimbroker/run.sh index 3fb6e80..48b8476 100755 --- a/multivimbroker/run.sh +++ b/multivimbroker/run.sh @@ -1,13 +1,17 @@ #!/bin/bash -# Copyright (c) 2017 Wind River Systems, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - -nohup python manage.py runserver 127.0.0.1:9001 > /dev/null & + +sed -i "s/MSB_SERVICE_IP =.*/MSB_SERVICE_IP = \"${MSB_ADDR}\"/g" multivimbroker/pub/config/config.py +sed -i "s/MSB_SERVICE_PORT =.*/MSB_SERVICE_PORT = \"${MSB_PORT}\"/g" multivimbroker/pub/config/config.py +sed -i "s/AAI_ADDR =.*/AAI_ADDR = \"${AAI_ADDR}\"/g" multivimbroker/pub/config/config.py +sed -i "s/AAI_PORT =.*/AAI_PORT = \"${AAI_PORT}\"/g" multivimbroker/pub/config/config.py +sed -i "s/AAI_SCHEMA_VERSION =.*/AAI_SCHEMA_VERSION = \"${AAI_SCHEMA_VERSION}\"/g" multivimbroker/pub/config/config.py +sed -i "s/AAI_USERNAME =.*/AAI_USERNAME = \"${AAI_USERNAME}\"/g" multivimbroker/pub/config/config.py +sed -i "s/AAI_PASSWORD =.*/AAI_PASSWORD = \"${AAI_PASSWORD}\"/g" multivimbroker/pub/config/config.py + +nohup python manage.py runserver 0.0.0.0:9001 2>&1 & + +while [ ! -f logs/runtime_multivimbroker.log ]; do + sleep 1 +done + +tail -F logs/runtime_multivimbroker.log