diff options
author | Huang Haibin <haibin.huang@intel.com> | 2018-03-08 22:05:26 +0800 |
---|---|---|
committer | Huang Haibin <haibin.huang@intel.com> | 2018-03-10 00:38:17 +0800 |
commit | 51fde27c2a12f525e94ecd3a83238a46215d9392 (patch) | |
tree | 4b9b72d4048209d410c0f9bc8a25a9561f3fcfa0 /newton/newton/pub | |
parent | c701ab185721e50cca3d432220361aaa723358cc (diff) |
newton use share library
Change-Id: I0ed8ced042862edf8afa87fec3b457d019e811b4
Issue-ID: MULTICLOUD-138
Signed-off-by: Huang Haibin <haibin.huang@intel.com>
Diffstat (limited to 'newton/newton/pub')
21 files changed, 0 insertions, 3492 deletions
diff --git a/newton/newton/pub/__init__.py b/newton/newton/pub/__init__.py deleted file mode 100644 index afa702d3..00000000 --- a/newton/newton/pub/__init__.py +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright (c) 2017-2018 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. -# See the License for the specific language governing permissions and -# limitations under the License. - diff --git a/newton/newton/pub/config/__init__.py b/newton/newton/pub/config/__init__.py deleted file mode 100644 index ae1ce9db..00000000 --- a/newton/newton/pub/config/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright (c) 2017-2018 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. -# See the License for the specific language governing permissions and -# limitations under the License. diff --git a/newton/newton/pub/config/config.py b/newton/newton/pub/config/config.py deleted file mode 100644 index ec9b92c8..00000000 --- a/newton/newton/pub/config/config.py +++ /dev/null @@ -1,38 +0,0 @@ -# Copyright (c) 2017-2018 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. -# See the License for the specific language governing permissions and -# limitations under the License. - -import os - -# [MSB] -MSB_SERVICE_ADDR = '127.0.0.1' -MSB_SERVICE_PORT = '80' - - -#[Multicloud] -MULTICLOUD_PREFIX = "http://%s:%s/api/multicloud-newton/v0" %(MSB_SERVICE_ADDR, MSB_SERVICE_PORT) - -# [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' - -AAI_BASE_URL = "%s/%s" % (AAI_SERVICE_URL, AAI_SCHEMA_VERSION) - -MULTICLOUD_APP_ID = 'MultiCloud-Newton' - -# [IMAGE LOCAL PATH] -ROOT_PATH = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) diff --git a/newton/newton/pub/database/__init__.py b/newton/newton/pub/database/__init__.py deleted file mode 100644 index afa702d3..00000000 --- a/newton/newton/pub/database/__init__.py +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright (c) 2017-2018 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. -# See the License for the specific language governing permissions and -# limitations under the License. - diff --git a/newton/newton/pub/database/models.py b/newton/newton/pub/database/models.py deleted file mode 100644 index 22785b65..00000000 --- a/newton/newton/pub/database/models.py +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright (c) 2017-2018 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. -# See the License for the specific language governing permissions and -# limitations under the License. - -from django.db import models - -class VimInstModel(models.Model): - class Meta: - db_table = 'vim_inst_type_mapping' - - vimid = models.CharField(db_column='VIMID', primary_key=True, max_length=200) - vimtype = models.CharField(db_column="VIMTYPE", max_length=200) - viminst_url = models.CharField(db_column="VIMINSTURL", max_length=200) diff --git a/newton/newton/pub/exceptions.py b/newton/newton/pub/exceptions.py deleted file mode 100644 index 80cf7ed1..00000000 --- a/newton/newton/pub/exceptions.py +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright (c) 2017-2018 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. -# See the License for the specific language governing permissions and -# limitations under the License. - -class VimDriverNewtonException(Exception): - def __init__(self, message, status_code="", content=""): - super(VimDriverNewtonException, self).__init__(message) - self.status_code = status_code - self.content = content diff --git a/newton/newton/pub/msapi/__init__.py b/newton/newton/pub/msapi/__init__.py deleted file mode 100644 index afa702d3..00000000 --- a/newton/newton/pub/msapi/__init__.py +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright (c) 2017-2018 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. -# See the License for the specific language governing permissions and -# limitations under the License. - diff --git a/newton/newton/pub/msapi/extsys.py b/newton/newton/pub/msapi/extsys.py deleted file mode 100644 index 2553958c..00000000 --- a/newton/newton/pub/msapi/extsys.py +++ /dev/null @@ -1,101 +0,0 @@ -# Copyright (c) 2017-2018 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. -# See the License for the specific language governing permissions and -# limitations under the License. - -import json -import logging -import re - -from newton.pub.exceptions import VimDriverNewtonException -from newton.pub.utils import restcall - - -logger = logging.getLogger(__name__) - -def get_vim_by_id(vim_id): - - cloud_owner,cloud_region_id = decode_vim_id(vim_id) - - if cloud_owner and cloud_region_id: - retcode, content, status_code = \ - restcall.req_to_aai("/cloud-infrastructure/cloud-regions/cloud-region/%s/%s?depth=1" - % (cloud_owner,cloud_region_id),"GET") - if retcode != 0: - logger.error("Status code is %s, detail is %s.", status_code, content) - raise VimDriverNewtonException( - "Failed to query VIM with id (%s:%s,%s)." % (vim_id,cloud_owner,cloud_region_id), - status_code, content) - tmp_viminfo = json.JSONDecoder().decode(content) - - #assume esr-system-info-id is composed by {cloud-owner} _ {cloud-region-id} -# retcode2,content2,status_code2 = \ -# restcall.req_to_aai(("/cloud-infrastructure/cloud-regions/cloud-region/%(owner)s/%(region)s" -# "/esr-system-info-list/esr-system-info/%(owner)s_%(region)s" % { -# "owner": cloud_owner, "region": cloud_region_id}), "GET") -# if retcode2 != 0: -# logger.error("Status code is %s, detail is %s.", status_code, content) -# raise VimDriverNewtonException( -# "Failed to query ESR system with id (%s:%s,%s)." % (vim_id,cloud_owner,cloud_region_id), -# status_code2, content2) -# tmp_authinfo = json.JSONDecoder().decode(content2) - tmp_authinfo = tmp_viminfo['esr-system-info-list']['esr-system-info'][0] if tmp_viminfo else None - - #convert vim information - if tmp_viminfo and tmp_authinfo: - viminfo = {} - viminfo['vimId'] = vim_id - viminfo['resource-version'] = tmp_viminfo.get('resource-version') - viminfo['cloud_owner'] = cloud_owner - viminfo['cloud_region_id'] = cloud_region_id - viminfo['type'] = tmp_viminfo.get('cloud-type') - viminfo['name'] = tmp_viminfo.get('complex-name') - viminfo['version'] = tmp_viminfo.get('cloud-region-version') - viminfo['cloud_extra_info'] = tmp_viminfo.get('cloud-extra-info') - viminfo['cloud_epa_caps'] = tmp_viminfo.get('cloud-epa-caps') - - viminfo['userName'] = tmp_authinfo['user-name'] - viminfo['password'] = tmp_authinfo['password'] - viminfo['domain'] = tmp_authinfo.get('cloud-domain') - viminfo['url'] = tmp_authinfo.get('service-url') - viminfo['tenant'] = tmp_authinfo.get('default-tenant') - viminfo['cacert'] = tmp_authinfo.get('ssl-cacert') - viminfo['insecure'] = tmp_authinfo.get('ssl-insecure') - - return viminfo - return None - -def delete_vim_by_id(vim_id): - cloud_owner, cloud_region_id = decode_vim_id(vim_id) - if cloud_owner and cloud_region_id: - #get the vim info - viminfo = get_vim_by_id(vim_id) - if not viminfo or not viminfo['resource-version']: - return 0 - - retcode, content, status_code = \ - restcall.req_to_aai("/cloud-infrastructure/cloud-regions/cloud-region/%s/%s?resource-version=%s" - % ( cloud_owner, cloud_region_id, viminfo['resource-version']), "DELETE") - if retcode != 0: - logger.error("Status code is %s, detail is %s.", status_code, content) - raise VimDriverNewtonException( - "Failed to delete VIM in AAI with id (%s:%s,%s)." % (vim_id,cloud_owner,cloud_region_id), - status_code, content) - return 0 - # return non zero if failed to decode cloud owner and region id - return 1 - -def decode_vim_id(vim_id): - m = re.search(r'^([0-9a-zA-Z-]+)_([0-9a-zA-Z_-]+)$', vim_id) - cloud_owner, cloud_region_id = m.group(1), m.group(2) - return cloud_owner, cloud_region_id - diff --git a/newton/newton/pub/tests/__init__.py b/newton/newton/pub/tests/__init__.py deleted file mode 100644 index afa702d3..00000000 --- a/newton/newton/pub/tests/__init__.py +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright (c) 2017-2018 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. -# See the License for the specific language governing permissions and -# limitations under the License. - diff --git a/newton/newton/pub/tests/test_extsys.py b/newton/newton/pub/tests/test_extsys.py deleted file mode 100644 index 9e67dcc0..00000000 --- a/newton/newton/pub/tests/test_extsys.py +++ /dev/null @@ -1,131 +0,0 @@ -# Copyright (c) 2017 Intel Corporation. -# -# 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. -# See the License for the specific language governing permissions and -# limitations under the License. - -import json - -import mock -from rest_framework import status -import six -import unittest - -from newton.pub.exceptions import VimDriverNewtonException -from newton.pub.msapi import extsys -from newton.pub.utils import restcall - - -MOCK_ESR_SYSTEM_INFO = { - "user-name": "test", - "password": "secret", - "cloud-domain": "Default", - "service-url": "http://localhost", - "default-tenant": "demo", - "ssl-cacert": None, - "ssl-insecure": None, - "resource-version":"1978882" -} - -MOCK_VIM_INFO = { - "resource-version":"1978883", - "cloud-type": "openstack", - "complex-name": "complex", - "cloud-region-version": "Regionv1", - "cloud-extra-info": "type", - "cloud-epa-caps": "epa", - "esr-system-info-list" : - { - "esr-system-info": [ - MOCK_ESR_SYSTEM_INFO - ] - } -} - - - -def returnList(items): - def func(): - for item in items: - yield item - yield mock.DEFAULT - - generator = func() - - def effect(*args, **kwargs): - return six.next(generator) - - return effect - - -class TestEpaCaps(unittest.TestCase): - cloud_onwer = "windriver-hudson-cd" - cloud_region_id = "RegionOne" - vim_id = cloud_onwer + "_" + cloud_region_id - - def setUp(self): - self.req_to_aai_backup = restcall.req_to_aai - - def tearDown(self): - restcall.req_to_aai = self.req_to_aai_backup - - def test_get_vim_by_id(self): - values = [ - (1, "test_content", - status.HTTP_500_INTERNAL_SERVER_ERROR), # Failure first call - (0, json.dumps(MOCK_VIM_INFO), None), - (1, "test_content", - status.HTTP_500_INTERNAL_SERVER_ERROR), # Failure second call - (0, json.dumps(MOCK_VIM_INFO), None), - (0, json.dumps(MOCK_ESR_SYSTEM_INFO), None) # Success calls - ] - - restcall.req_to_aai = mock.Mock(side_effect=returnList(values)) - self.assertRaises(VimDriverNewtonException, extsys.get_vim_by_id, self.vim_id) - restcall.req_to_aai.assert_called_once() - - #self.assertRaises(VimDriverNewtonException, extsys.get_vim_by_id, self.vim_id) - - viminfo = extsys.get_vim_by_id(self.vim_id) - self.assertIsNotNone(viminfo) - self.assertEquals(self.vim_id, viminfo['vimId']) - self.assertEquals(self.cloud_onwer, viminfo['cloud_owner']) - self.assertEquals(self.cloud_region_id, viminfo['cloud_region_id']) - self.assertEquals(MOCK_VIM_INFO['cloud-type'], viminfo['type']) - self.assertEquals(MOCK_VIM_INFO['complex-name'], viminfo['name']) - self.assertEquals(MOCK_VIM_INFO['cloud-region-version'], viminfo['version']) - self.assertEquals(MOCK_VIM_INFO['cloud-extra-info'], viminfo['cloud_extra_info']) - self.assertEquals(MOCK_VIM_INFO['cloud-epa-caps'], viminfo['cloud_epa_caps']) - - self.assertEquals(MOCK_ESR_SYSTEM_INFO['user-name'], viminfo['userName']) - self.assertEquals(MOCK_ESR_SYSTEM_INFO['password'], viminfo['password']) - self.assertEquals(MOCK_ESR_SYSTEM_INFO['cloud-domain'], viminfo['domain']) - self.assertEquals(MOCK_ESR_SYSTEM_INFO['service-url'], viminfo['url']) - self.assertEquals(MOCK_ESR_SYSTEM_INFO['default-tenant'], viminfo['tenant']) - self.assertEquals(MOCK_ESR_SYSTEM_INFO['ssl-cacert'], viminfo['cacert']) - self.assertEquals(MOCK_ESR_SYSTEM_INFO['ssl-insecure'], viminfo['insecure']) - - def test_delete_vim_by_id(self): - values = [ - (0, json.dumps(MOCK_VIM_INFO), None), - (1, "test_content", 500), - (0, json.dumps(MOCK_VIM_INFO), None), - (0, None, None) - ] - - restcall.req_to_aai = mock.Mock(side_effect=returnList(values)) - self.assertRaises(VimDriverNewtonException, extsys.delete_vim_by_id, self.vim_id) - self.assertEquals(0, extsys.delete_vim_by_id(self.vim_id)) - - def test_decode_vim_id_successfuly(self): - owner, region_id = extsys.decode_vim_id(self.vim_id) - self.assertEquals(self.cloud_onwer, owner) - self.assertEquals(self.cloud_region_id, region_id) diff --git a/newton/newton/pub/tests/test_restcall.py b/newton/newton/pub/tests/test_restcall.py deleted file mode 100644 index 063beb35..00000000 --- a/newton/newton/pub/tests/test_restcall.py +++ /dev/null @@ -1,111 +0,0 @@ -# Copyright (c) 2017 Intel Corporation. -# -# 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. -# See the License for the specific language governing permissions and -# limitations under the License. - -from httplib2 import Http -import mock -from rest_framework import status -import unittest - -from newton.pub.utils import restcall - -rest_no_auth, rest_oneway_auth, rest_bothway_auth = 0, 1, 2 - -class TestRestCall(unittest.TestCase): - base_url = "http://localhost" - resource = "compute" - - @mock.patch.object(Http, 'request') - def test_unknown_failure_call_req(self, mock_http): - mock_http.raiseError.side_effect = mock.Mock( - side_effect=Exception('Test')) - args = [ - self.base_url, None, None, rest_no_auth, - self.resource, "get", {"extra": "test"} - ] - - ret = restcall._call_req(*args) - self.assertEquals(3, ret[0]) - self.assertEquals(status.HTTP_500_INTERNAL_SERVER_ERROR, ret[2]) - - - @mock.patch.object(Http, 'request') - def test_invalid_output_call_req(self, mock_http): - args = [ - self.base_url, None, None, rest_no_auth, - self.resource, "get", {"extra": "test"} - ] - - mock_http.return_value = ({'status': None}, - str.encode("test", 'utf-8')) - - ret = restcall._call_req(*args) - self.assertEquals(1, ret[0]) - self.assertEquals("test", ret[1]) - self.assertIsNone(ret[2]) - - @mock.patch.object(Http, 'request') - def test_req_by_msb(self, mock_http): - resp_body = "test_body" - resp_status='200' #status.HTTP_200_OK - mock_http.return_value = ( - {'status': resp_status}, - str.encode(resp_body, 'utf-8')) - - - ret = restcall.req_by_msb(self.resource, "delete") - self.assertEquals(0, ret[0]) - self.assertEquals(resp_body, ret[1]) - self.assertEquals(resp_status, ret[2]) - - @mock.patch.object(Http, 'request') - def test_req_to_vim(self, mock_http): - resp_body = "test_body" - resp_status='200' #status.HTTP_200_OK - mock_http.return_value = ( - {'status': resp_status}, - str.encode(resp_body, 'utf-8')) - - ret = restcall.req_to_vim(self.base_url, self.resource, "get") - self.assertEquals(0, ret[0]) - self.assertEquals(resp_body, ret[1]) - self.assertEquals(resp_status, ret[2]) - - @mock.patch.object(Http, 'request') - def test_req_to_aai(self, mock_http): - resp_body = "test_body" - resp_status='200' #status.HTTP_200_OK - mock_http.return_value = ( - {'status': resp_status}, - str.encode(resp_body, 'utf-8')) - - ret = restcall.req_to_aai(self.resource, "post") - self.assertEquals(0, ret[0]) - self.assertEquals(resp_body, ret[1]) - self.assertEquals(resp_status, ret[2]) - - def test_combine_url(self): - self.assertEquals(self.base_url, - restcall._combine_url(self.base_url, "")) - self.assertEquals(self.base_url + "/" + self.resource, - restcall._combine_url(self.base_url + "/", - "/" + self.resource)) - self.assertEquals(self.base_url + "/" + self.resource, - restcall._combine_url(self.base_url + "/", - self.resource)) - self.assertEquals(self.base_url + "/" + self.resource, - restcall._combine_url(self.base_url, - "/" + self.resource)) - self.assertEquals(self.base_url + "/" + self.resource, - restcall._combine_url(self.base_url, - self.resource)) diff --git a/newton/newton/pub/utils/__init__.py b/newton/newton/pub/utils/__init__.py deleted file mode 100644 index afa702d3..00000000 --- a/newton/newton/pub/utils/__init__.py +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright (c) 2017-2018 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. -# See the License for the specific language governing permissions and -# limitations under the License. - diff --git a/newton/newton/pub/utils/enumutil.py b/newton/newton/pub/utils/enumutil.py deleted file mode 100644 index df2bc308..00000000 --- a/newton/newton/pub/utils/enumutil.py +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright (c) 2017-2018 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. -# See the License for the specific language governing permissions and -# limitations under the License. - -def enum(**enums): - return type('Enum', (), enums) diff --git a/newton/newton/pub/utils/fileutil.py b/newton/newton/pub/utils/fileutil.py deleted file mode 100644 index 2ceffdd5..00000000 --- a/newton/newton/pub/utils/fileutil.py +++ /dev/null @@ -1,52 +0,0 @@ -# Copyright (c) 2017-2018 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. -# See the License for the specific language governing permissions and -# limitations under the License. - -import os -import shutil -import logging -import traceback -from six.moves import urllib - -logger = logging.getLogger(__name__) - - -def make_dirs(path): - if not os.path.exists(path): - os.makedirs(path, 0777) - - -def delete_dirs(path): - try: - if os.path.exists(path): - shutil.rmtree(path) - except Exception as e: - logger.error(traceback.format_exc()) - logger.error("Failed to delete %s:%s", path, e.message) - - -def download_file_from_http(url, local_dir, file_name): - local_file_name = os.path.join(local_dir, file_name) - is_download_ok = False - try: - make_dirs(local_dir) - req = urllib.request.urlopen(url) - save_file = open(local_file_name, 'wb') - save_file.write(req.read()) - save_file.close() - req.close() - is_download_ok = True - except: - logger.error(traceback.format_exc()) - logger.error("Failed to download %s to %s.", url, local_file_name) - return is_download_ok, local_file_name diff --git a/newton/newton/pub/utils/idutil.py b/newton/newton/pub/utils/idutil.py deleted file mode 100644 index ef53ce57..00000000 --- a/newton/newton/pub/utils/idutil.py +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright (c) 2017-2018 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. -# See the License for the specific language governing permissions and -# limitations under the License. - -from redisco import containers as cont - - -def get_auto_id(id_type, id_group="auto_id_hash"): - auto_id_hash = cont.Hash(id_group) - auto_id_hash.hincrby(id_type, 1) - return auto_id_hash.hget(id_type) diff --git a/newton/newton/pub/utils/restcall.py b/newton/newton/pub/utils/restcall.py deleted file mode 100644 index a34a44e4..00000000 --- a/newton/newton/pub/utils/restcall.py +++ /dev/null @@ -1,149 +0,0 @@ -# Copyright (c) 2017-2018 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. -# See the License for the specific language governing permissions and -# limitations under the License. - -import six -import base64 - -import codecs -import json -import traceback -import sys - -import logging -from six.moves import urllib -import httplib2 -import uuid - -from rest_framework import status -from newton.pub.config import config - -rest_no_auth, rest_oneway_auth, rest_bothway_auth = 0, 1, 2 -HTTP_200_OK, HTTP_201_CREATED = '200', '201' -HTTP_204_NO_CONTENT, HTTP_202_ACCEPTED = '204', '202' -status_ok_list = [HTTP_200_OK, HTTP_201_CREATED, - HTTP_204_NO_CONTENT, HTTP_202_ACCEPTED] -HTTP_404_NOTFOUND, HTTP_403_FORBIDDEN = '404', '403' -HTTP_401_UNAUTHORIZED, HTTP_400_BADREQUEST = '401', '400' - -MAX_RETRY_TIME = 3 - -logger = logging.getLogger(__name__) - - -def _call_req(base_url, user, passwd, auth_type, - resource, method, extra_headers='', content=''): - callid = str(uuid.uuid1()) - ret = None - resp_status = None - try: - full_url = _combine_url(base_url, resource) - headers = { - 'content-type': 'application/json', - 'accept': 'application/json' - } - - if extra_headers: - headers.update(extra_headers) -# if user: -# headers['Authorization'] = \ -# 'Basic ' + str(codecs.encode('%s:%s' % (user, passwd), "ascii")) - - if user: - tmpauthsource = '%s:%s' % (user, passwd) - if six.PY3: - tmpauthsource = tmpauthsource.encode('utf-8') - headers['Authorization'] = 'Basic ' + \ - base64.b64encode(tmpauthsource).decode('utf-8') - - ca_certs = None - for retry_times in range(MAX_RETRY_TIME): - http = httplib2.Http( - ca_certs=ca_certs, - disable_ssl_certificate_validation=(auth_type == rest_no_auth)) - http.follow_all_redirects = True - try: - resp, resp_content = http.request(full_url, - method=method.upper(), - body=content, - headers=headers) - resp_status, resp_body = \ - resp['status'], codecs.decode( - resp_content, 'UTF-8') - if resp_status in status_ok_list: - ret = [0, resp_body, resp_status] - else: - ret = [1, resp_body, resp_status] - break - except Exception as ex: - if 'httplib.ResponseNotReady' in str(sys.exc_info()): - logger.debug("retry_times=%d", retry_times) - logger.error(traceback.format_exc()) - ret = [1, "Unable to connect to %s" % full_url, resp_status] - continue - raise ex - except urllib.error.URLError as err: - ret = [2, str(err), resp_status] - except Exception: - logger.error(traceback.format_exc()) - logger.error("[%s]ret=%s" % (callid, str(sys.exc_info()))) - if not resp_status: - resp_status = status.HTTP_500_INTERNAL_SERVER_ERROR - ret = [3, str(sys.exc_info()), resp_status] - except: - logger.error(traceback.format_exc()) - ret = [4, str(sys.exc_info()), resp_status] - return ret - - -def req_by_msb(resource, method, content=''): - base_url = "http://%s:%s/" % (config.MSB_SERVICE_ADDR, config.MSB_SERVICE_PORT) - return _call_req(base_url, "", "", rest_no_auth, - resource, method, "", content) - - -def req_to_vim(base_url, resource, method, extra_headers='', content=''): - return _call_req(base_url, "", "", rest_no_auth, - resource, method, extra_headers, content) - - -def req_to_aai(resource, method, content='', appid=config.MULTICLOUD_APP_ID): - tmp_trasaction_id = '9003' #str(uuid.uuid1()) - headers = { - 'X-FromAppId': appid, - 'X-TransactionId': tmp_trasaction_id, - 'content-type': 'application/json', - 'accept': 'application/json' - } - - logger.debug("req_to_aai--%s::> %s, %s" % - (tmp_trasaction_id, method, _combine_url(config.AAI_BASE_URL,resource))) - return _call_req(config.AAI_BASE_URL, config.AAI_USERNAME, config.AAI_PASSWORD, rest_no_auth, - resource, method, content=json.dumps(content), extra_headers=headers) - - -def _combine_url(base_url, resource): - full_url = None - - if not resource: - return base_url - - if base_url.endswith('/') and resource.startswith('/'): - full_url = base_url[:-1] + resource - elif base_url.endswith('/') and not resource.startswith('/'): - full_url = base_url + resource - elif not base_url.endswith('/') and resource.startswith('/'): - full_url = base_url + resource - else: - full_url = base_url + '/' + resource - return full_url diff --git a/newton/newton/pub/utils/share_lock.py b/newton/newton/pub/utils/share_lock.py deleted file mode 100644 index b63f691c..00000000 --- a/newton/newton/pub/utils/share_lock.py +++ /dev/null @@ -1,80 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -# Copyright (c) 2017-2018 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. -# See the License for the specific language governing permissions and -# limitations under the License. - -import time - -import redis - -from newton.pub.config.config import REDIS_HOST, REDIS_PORT, REDIS_PASSWD - - -class SharedLock: - def __init__(self, lock_key, host=REDIS_HOST, port=REDIS_PORT, password=REDIS_PASSWD, db=9, lock_timeout=5 * 60): - self.lock_key = lock_key - self.lock_timeout = lock_timeout - self.redis = redis.Redis(host=host, port=port, db=db, password=password) - self.acquire_time = -1 - - def acquire(self): - begin = now = int(time.time()) - while (now - begin) < self.lock_timeout: - - result = self.redis.setnx(self.lock_key, now + self.lock_timeout + 1) - if result == 1 or result is True: - self.acquire_time = now - return True - - current_lock_timestamp = self.redis.get(self.lock_key) - if not current_lock_timestamp: - time.sleep(1) - continue - - current_lock_timestamp = int(current_lock_timestamp) - - if now > current_lock_timestamp: - next_lock_timestamp = self.redis.getset(self.lock_key, now + self.lock_timeout + 1) - if not next_lock_timestamp: - time.sleep(1) - continue - next_lock_timestamp = int(next_lock_timestamp) - - if next_lock_timestamp == current_lock_timestamp: - self.acquire_time = now - return True - else: - time.sleep(1) - continue - return False - - def release(self): - now = int(time.time()) - if now > self.acquire_time + self.lock_timeout: - # key expired, do nothing and let other clients handle it - return - self.acquire_time = None - self.redis.delete(self.lock_key) - - -def do_biz_with_share_lock(lock_name, callback): - lock = SharedLock(lock_name) - try: - if not lock.acquire(): - raise Exception(lock_name + " timeout") - callback() - except Exception as e: - raise e - finally: - lock.release() diff --git a/newton/newton/pub/utils/syscomm.py b/newton/newton/pub/utils/syscomm.py deleted file mode 100644 index 9b46f42a..00000000 --- a/newton/newton/pub/utils/syscomm.py +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright (c) 2017-2018 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. -# See the License for the specific language governing permissions and -# limitations under the License. - -import inspect - - -def fun_name(): - return inspect.stack()[1][3] diff --git a/newton/newton/pub/utils/timeutil.py b/newton/newton/pub/utils/timeutil.py deleted file mode 100644 index 0c3dd658..00000000 --- a/newton/newton/pub/utils/timeutil.py +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright (c) 2017-2018 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. -# See the License for the specific language governing permissions and -# limitations under the License. - -import datetime - - -def now_time(fmt="%Y-%m-%d %H:%M:%S"): - return datetime.datetime.now().strftime(fmt) diff --git a/newton/newton/pub/utils/toscautil.py b/newton/newton/pub/utils/toscautil.py deleted file mode 100644 index 5c2135ea..00000000 --- a/newton/newton/pub/utils/toscautil.py +++ /dev/null @@ -1,2606 +0,0 @@ -# Copyright (c) 2017-2018 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. -# See the License for the specific language governing permissions and -# limitations under the License. - -import json - -def safe_get(key_val, key): - return key_val[key] if key in key_val else "" - - -def find_node_name(node_id, node_list): - for node in node_list: - if node['id'] == node_id: - return node['template_name'] - raise Exception('can not find node(%s).' % node_id) - - -def find_node_type(node_id, node_list): - for node in node_list: - if node['id'] == node_id: - return node['type_name'] - raise Exception('can not find node(%s).' % node_id) - - -def find_related_node(node_id, src_json_model, requirement_name): - related_nodes = [] - for model_tpl in safe_get(src_json_model, "node_templates"): - for rt in safe_get(model_tpl, 'requirement_templates'): - if safe_get(rt, 'name') == requirement_name and \ - safe_get(rt, 'target_node_template_name') == node_id: - related_nodes.append(model_tpl['name']) - return related_nodes - - -def convert_props(src_node, dest_node): - if 'properties' in src_node and src_node['properties']: - for prop_name, prop_info in src_node['properties'].items(): - if 'value' in prop_info: - dest_node['properties'][prop_name] = prop_info['value'] - - -def convert_metadata(src_json): - return src_json['metadata'] if 'metadata' in src_json else {} - - -def convert_inputs(src_json): - inputs = {} - if 'inputs' in src_json: - src_inputs = src_json['inputs'] - for param_name, param_info in src_inputs.items(): - input_param = {} - if 'type_name' in param_info: - input_param['type'] = param_info['type_name'] - if 'description' in param_info: - input_param['description'] = param_info['description'] - if 'value' in param_info: - input_param['value'] = param_info['value'] - inputs[param_name] = input_param - return inputs - - -def convert_vnf_node(src_node, src_json_model): - vnf_node = {'type': src_node['type_name'], 'vnf_id': src_node['template_name'], - 'description': '', 'properties': {}, 'dependencies': [], 'networks': []} - convert_props(src_node, vnf_node) - for model_tpl in safe_get(src_json_model, "node_templates"): - if model_tpl['name'] != vnf_node['vnf_id']: - continue - vnf_node['dependencies'] = [{ - 'key_name': requirement['name'], - 'vl_id': requirement['target_node_template_name']} for \ - requirement in safe_get(model_tpl, 'requirement_templates') if \ - safe_get(requirement, 'target_capability_name') == 'virtual_linkable'] - vnf_node['networks'] = [requirement['target_node_template_name'] for \ - requirement in safe_get(model_tpl, 'requirement_templates') if \ - safe_get(requirement, 'name') == 'dependency'] - return vnf_node - - -def convert_pnf_node(src_node, src_json_model): - pnf_node = {'pnf_id': src_node['template_name'], 'description': '', 'properties': {}} - convert_props(src_node, pnf_node) - pnf_node['cps'] = find_related_node(src_node['id'], src_json_model, 'virtualbinding') - return pnf_node - - -def convert_vl_node(src_node, src_node_list): - vl_node = {'vl_id': src_node['template_name'], 'description': '', 'properties': {}} - convert_props(src_node, vl_node) - vl_node['route_id'] = '' - for relation in safe_get(src_node, 'relationships'): - if safe_get(relation, 'type_name').endswith('.VirtualLinksTo'): - vl_node['route_id'] = find_node_name(relation['target_node_id'], src_node_list) - break - vl_node['route_external'] = (src_node['type_name'].find('.RouteExternalVL') > 0) - return vl_node - - -def convert_cp_node(src_node, src_node_list, model_type='NSD'): - cp_node = {'cp_id': src_node['template_name'], 'description': '', 'properties': {}} - convert_props(src_node, cp_node) - src_relationships = src_node['relationships'] - for relation in src_relationships: - if safe_get(relation, 'name') == 'virtualLink': - cp_node['vl_id'] = find_node_name(relation['target_node_id'], src_node_list) - elif safe_get(relation, 'name') == 'virtualbinding': - node_key = 'pnf_id' if model_type == 'NSD' else 'vdu_id' - cp_node[node_key] = find_node_name(relation['target_node_id'], src_node_list) - return cp_node - - -def convert_router_node(src_node, src_node_list): - router_node = {'router_id': src_node['template_name'], 'description': '', 'properties': {}} - convert_props(src_node, router_node) - for relation in src_node['relationships']: - if safe_get(relation, 'name') != 'external_virtual_link': - continue - router_node['external_vl_id'] = find_node_name(relation['target_node_id'], src_node_list) - router_node['external_ip_addresses'] = [] - if 'properties' not in relation: - continue - for prop_name, prop_info in relation['properties'].items(): - if prop_name == 'router_ip_address': - router_node['external_ip_addresses'].append(prop_info['value']) - break - return router_node - - -def convert_fp_node(src_node, src_node_list, src_json_model): - fp_node = {'fp_id': src_node['template_name'], 'description': '', - 'properties': {}, 'forwarder_list': []} - convert_props(src_node, fp_node) - for relation in safe_get(src_node, 'relationships'): - if safe_get(relation, 'name') != 'forwarder': - continue - forwarder_point = {'type': 'vnf'} - target_node_type = find_node_type(relation['target_node_id'], src_node_list).upper() - if target_node_type.find('.CP.') >= 0 or target_node_type.endswith('.CP'): - forwarder_point['type'] = 'cp' - forwarder_point['node_name'] = find_node_name(relation['target_node_id'], src_node_list) - forwarder_point['capability'] = '' - if forwarder_point['type'] == 'vnf': - for node_tpl in src_json_model["node_templates"]: - if fp_node['fp_id'] != node_tpl["name"]: - continue - for r_tpl in safe_get(node_tpl, "requirement_templates"): - if safe_get(r_tpl, "target_node_template_name") != forwarder_point['node_name']: - continue - forwarder_point['capability'] = safe_get(r_tpl, "target_capability_name") - break - break - fp_node['forwarder_list'].append(forwarder_point) - return fp_node - - -def convert_vnffg_group(src_group, src_group_list, src_node_list): - vnffg = {'vnffg_id': src_group['template_name'], 'description': '', - 'properties': {}, 'members': []} - convert_props(src_group, vnffg) - for member_node_id in src_group['member_node_ids']: - vnffg['members'].append(find_node_name(member_node_id, src_node_list)) - return vnffg - - -def convert_imagefile_node(src_node, src_node_list): - image_node = {'image_file_id': src_node['template_name'], 'description': '', - 'properties': {}} - convert_props(src_node, image_node) - return image_node - - -def convert_localstorage_node(src_node, src_node_list): - localstorage_node = {'local_storage_id': src_node['template_name'], 'description': '', - 'properties': {}} - convert_props(src_node, localstorage_node) - return localstorage_node - - -def convert_vdu_node(src_node, src_node_list, src_json_model): - vdu_node = {'vdu_id': src_node['template_name'], 'description': '', 'properties': {}, - 'image_file': '', 'local_storages': [], 'dependencies': [], 'nfv_compute': {}, - 'vls': [], 'artifacts': []} - convert_props(src_node, vdu_node) - - for relation in src_node['relationships']: - r_id, r_name = safe_get(relation, 'target_node_id'), safe_get(relation, 'name') - if r_name == 'guest_os': - vdu_node['image_file'] = find_node_name(r_id, src_node_list) - elif r_name == 'local_storage': - vdu_node['local_storages'].append(find_node_name(r_id, src_node_list)) - elif r_name.endswith('.AttachesTo'): - nt = find_node_type(r_id, src_node_list) - if nt.endswith('.BlockStorage.Local') or nt.endswith('.LocalStorage'): - vdu_node['local_storages'].append(find_node_name(r_id, src_node_list)) - - for capability in src_node['capabilities']: - if capability['name'] != 'nfv_compute': - continue - for prop_name, prop_info in capability['properties'].items(): - if 'value' in prop_info: - vdu_node['nfv_compute'][prop_name] = prop_info['value'] - - vdu_node['cps'] = find_related_node(src_node['id'], src_json_model, 'virtualbinding') - - for cp_node in vdu_node['cps']: - for src_cp_node in src_node_list: - if src_cp_node['template_name'] != cp_node: - continue - for relation in safe_get(src_cp_node, 'relationships'): - if relation['name'] != 'virtualLink': - continue - vl_node_name = find_node_name(relation['target_node_id'], src_node_list) - if vl_node_name not in vdu_node['vls']: - vdu_node['vls'].append(vl_node_name) - - for item in safe_get(src_node, 'artifacts'): - artifact = {'artifact_name': item['name'], 'type': item['type_name'], - 'file': item['source_path']} - vdu_node['artifacts'].append(artifact) - - return vdu_node - - -def convert_exposed_node(src_json, src_nodes, exposed): - for item in safe_get(safe_get(src_json, 'substitution'), 'requirements'): - exposed['external_cps'].append({'key_name': item['mapped_name'], - "cp_id": find_node_name(item['node_id'], src_nodes)}) - for item in safe_get(safe_get(src_json, 'substitution'), 'capabilities'): - exposed['forward_cps'].append({'key_name': item['mapped_name'], - "cp_id": find_node_name(item['node_id'], src_nodes)}) - - -def convert_vnffgs(src_json_inst, src_nodes): - vnffgs = [] - src_groups = safe_get(src_json_inst, 'groups') - for group in src_groups: - type_name = group['type_name'].upper() - if type_name.find('.VNFFG.') >= 0 or type_name.endswith('.VNFFG'): - vnffgs.append(convert_vnffg_group(group, src_groups, src_nodes)) - return vnffgs - - -def convert_common(src_json, target_json): - if isinstance(src_json, (unicode, str)): - src_json_dict = json.loads(src_json) - else: - src_json_dict = src_json - src_json_inst = src_json_dict["instance"] - src_json_model = src_json_dict["model"] if "model" in src_json_dict else {} - - target_json['metadata'] = convert_metadata(src_json_inst) - target_json['inputs'] = convert_inputs(src_json_inst) - target_json['vls'] = [] - target_json['cps'] = [] - target_json['routers'] = [] - - return src_json_inst, src_json_model - - -def convert_nsd_model(src_json): - target_json = {'vnfs': [], 'pnfs': [], 'fps': []} - src_json_inst, src_json_model = convert_common(src_json, target_json) - - src_nodes = src_json_inst['nodes'] - for node in src_nodes: - type_name = node['type_name'] - if type_name.find('.VNF.') > 0 or type_name.endswith('.VNF'): - target_json['vnfs'].append(convert_vnf_node(node, src_json_model)) - elif type_name.find('.PNF.') > 0 or type_name.endswith('.PNF'): - target_json['pnfs'].append(convert_pnf_node(node, src_json_model)) - elif type_name.find('.VL.') > 0 or type_name.endswith('.VL') \ - or node['type_name'].find('.RouteExternalVL') > 0: - target_json['vls'].append(convert_vl_node(node, src_nodes)) - elif type_name.find('.CP.') > 0 or type_name.endswith('.CP'): - target_json['cps'].append(convert_cp_node(node, src_nodes)) - elif type_name.find('.FP.') > 0 or type_name.endswith('.FP'): - target_json['fps'].append(convert_fp_node(node, src_nodes, src_json_model)) - elif type_name.endswith('.Router'): - target_json['routers'].append(convert_router_node(node, src_nodes)) - - target_json['vnffgs'] = convert_vnffgs(src_json_inst, src_nodes) - - target_json['ns_exposed'] = {'external_cps': [], 'forward_cps': []} - convert_exposed_node(src_json_inst, src_nodes, target_json['ns_exposed']) - return json.dumps(target_json) - - -def convert_vnfd_model(src_json): - target_json = {'image_files': [], 'local_storages': [], 'vdus': []} - src_json_inst, src_json_model = convert_common(src_json, target_json) - - src_nodes = src_json_inst['nodes'] - for node in src_nodes: - type_name = node['type_name'] - if type_name.endswith('.ImageFile'): - target_json['image_files'].append(convert_imagefile_node(node, src_nodes)) - elif type_name.endswith('.BlockStorage.Local') or type_name.endswith('.LocalStorage'): - target_json['local_storages'].append(convert_localstorage_node(node, src_nodes)) - elif type_name.find('.VDU.') > 0 or type_name.endswith('.VDU'): - target_json['vdus'].append(convert_vdu_node(node, src_nodes, src_json_model)) - elif type_name.find('.VL.') > 0 or type_name.endswith('.VL') \ - or node['type_name'].find('.RouteExternalVL') > 0: - target_json['vls'].append(convert_vl_node(node, src_nodes)) - elif type_name.find('.CP.') > 0 or type_name.endswith('.CP'): - target_json['cps'].append(convert_cp_node(node, src_nodes, 'VNFD')) - elif type_name.endswith('.Router'): - target_json['routers'].append(convert_router_node(node, src_nodes)) - - target_json['vnf_exposed'] = {'external_cps': [], 'forward_cps': []} - convert_exposed_node(src_json_inst, src_nodes, target_json['vnf_exposed']) - return json.dumps(target_json) - -if __name__ == '__main__': - src_json = json.dumps( - { - "instance":{ - "metadata":{ - "vendor":"ZTE", - "name":"VCPE_NS", - "csarVersion":"v1.0", - "csarType":"NSAR", - "csarProvider":"ZTE", - "version":1, - "invariant_id":"vcpe_ns_sff_1", - "id":"VCPE_NS", - "description":"vcpe_ns" - }, - "nodes":[ - { - "id":"path2_kgmfqr5ldqs9lj3oscrgxqefc", - "type_name":"tosca.nodes.nfv.ext.FP", - "template_name":"path2", - "properties":{ - "symmetric":{ - "type_name":"boolean", - "value":False - }, - "policy":{ - "type_name":"tosca.datatypes.nfv.ext.FPPolicy", - "value":{ - "type":"ACL", - "criteria":{ - "dest_port_range":"1-100", - "ip_protocol":"tcp", - "source_ip_range":[ - "119.1.1.1-119.1.1.10" - ], - "dest_ip_range":[ - {"get_input":"NatIpRange"} - ], - "dscp":0, - "source_port_range":"1-100" - } - } - } - }, - "interfaces":[ - { - "name":"Standard", - "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.", - "type_name":"tosca.interfaces.node.lifecycle.Standard", - "operations":[ - { - "name":"create", - "description":"Standard lifecycle create operation." - }, - { - "name":"stop", - "description":"Standard lifecycle stop operation." - }, - { - "name":"start", - "description":"Standard lifecycle start operation." - }, - { - "name":"delete", - "description":"Standard lifecycle delete operation." - }, - { - "name":"configure", - "description":"Standard lifecycle configure operation." - } - ] - } - ], - "capabilities":[ - { - "name":"feature", - "type_name":"tosca.capabilities.Node" - } - ], - "relationships":[ - { - "name":"forwarder", - "source_requirement_index":0, - "target_node_id":"m6000_data_out_qeukdtf6g87cnparxi51fa8s6" - }, - { - "name":"forwarder", - "source_requirement_index":1, - "target_node_id":"m600_tunnel_cp_imwfk5l48ljz0g9knc6d68hv5" - }, - { - "name":"forwarder", - "source_requirement_index":2, - "target_node_id":"VNAT_cfdljtspvkp234irka59wgab0", - "target_capability_name":"feature" - } - ] - }, - { - "id":"path1_bv53fblv26hawr8dj4fxe2rsd", - "type_name":"tosca.nodes.nfv.ext.FP", - "template_name":"path1", - "properties":{ - "symmetric":{ - "type_name":"boolean", - "value":True - }, - "policy":{ - "type_name":"tosca.datatypes.nfv.ext.FPPolicy", - "value":{ - "type":"ACL", - "criteria":{ - "dest_port_range":"1-100", - "ip_protocol":"tcp", - "source_ip_range":[ - "1-100" - ], - "dest_ip_range":[ - "1-100" - ], - "dscp":4, - "source_port_range":"1-100" - } - } - } - }, - "interfaces":[ - { - "name":"Standard", - "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.", - "type_name":"tosca.interfaces.node.lifecycle.Standard", - "operations":[ - { - "name":"create", - "description":"Standard lifecycle create operation." - }, - { - "name":"stop", - "description":"Standard lifecycle stop operation." - }, - { - "name":"start", - "description":"Standard lifecycle start operation." - }, - { - "name":"delete", - "description":"Standard lifecycle delete operation." - }, - { - "name":"configure", - "description":"Standard lifecycle configure operation." - } - ] - } - ], - "capabilities":[ - { - "name":"feature", - "type_name":"tosca.capabilities.Node" - } - ], - "relationships":[ - { - "name":"forwarder", - "source_requirement_index":0, - "target_node_id":"m6000_data_in_eldly5txw4frny3cc349uz3nc" - }, - { - "name":"forwarder", - "source_requirement_index":1, - "target_node_id":"m600_tunnel_cp_imwfk5l48ljz0g9knc6d68hv5" - }, - { - "name":"forwarder", - "source_requirement_index":2, - "target_node_id":"VFW_57z0ua89aiyl8ncvw7h7mjf34", - "target_capability_name":"feature" - }, - { - "name":"forwarder", - "source_requirement_index":3, - "target_node_id":"VNAT_cfdljtspvkp234irka59wgab0", - "target_capability_name":"feature" - }, - { - "name":"forwarder", - "source_requirement_index":4, - "target_node_id":"m600_tunnel_cp_imwfk5l48ljz0g9knc6d68hv5" - }, - { - "name":"forwarder", - "source_requirement_index":5, - "target_node_id":"m6000_data_out_qeukdtf6g87cnparxi51fa8s6" - } - ] - }, - { - "id":"m6000_data_out_qeukdtf6g87cnparxi51fa8s6", - "type_name":"tosca.nodes.nfv.ext.zte.CP", - "template_name":"m6000_data_out", - "properties":{ - "direction":{ - "type_name":"string", - "value":"bidirectional" - }, - "vnic_type":{ - "type_name":"string", - "value":"normal" - }, - "bandwidth":{ - "type_name":"integer", - "value":0 - }, - "mac_address":{ - "type_name":"string", - "value":"11-22-33-22-11-44" - }, - "interface_name":{ - "type_name":"string", - "value":"xgei-0/4/1/5" - }, - "ip_address":{ - "type_name":"string", - "value":"176.1.1.2" - }, - "order":{ - "type_name":"integer", - "value":0 - }, - "sfc_encapsulation":{ - "type_name":"string", - "value":"mac" - } - }, - "interfaces":[ - { - "name":"Standard", - "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.", - "type_name":"tosca.interfaces.node.lifecycle.Standard", - "operations":[ - { - "name":"create", - "description":"Standard lifecycle create operation." - }, - { - "name":"stop", - "description":"Standard lifecycle stop operation." - }, - { - "name":"start", - "description":"Standard lifecycle start operation." - }, - { - "name":"delete", - "description":"Standard lifecycle delete operation." - }, - { - "name":"configure", - "description":"Standard lifecycle configure operation." - } - ] - } - ], - "capabilities":[ - { - "name":"feature", - "type_name":"tosca.capabilities.Node" - }, - { - "name":"forwarder", - "type_name":"tosca.capabilities.nfv.Forwarder" - } - ], - "relationships":[ - { - "name":"virtualbinding", - "source_requirement_index":0, - "target_node_id":"m6000_s_7qtzo5nuocyfmebc6kp9raq18", - "target_capability_name":"feature" - }, - { - "name":"virtualLink", - "source_requirement_index":1, - "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc", - "target_capability_name":"feature" - }, - { - "name":"forwarder", - "source_requirement_index":2, - "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc", - "target_capability_name":"feature" - } - ] - }, - { - "id":"VFW_57z0ua89aiyl8ncvw7h7mjf34", - "type_name":"tosca.nodes.nfv.ext.zte.VNF.VFW", - "template_name":"VFW", - "properties":{ - "is_shared":{ - "type_name":"boolean", - "value":False - }, - "plugin_info":{ - "type_name":"string", - "value":"vbrasplugin_1.0" - }, - "vendor":{ - "type_name":"string", - "value":"zte" - }, - "request_reclassification":{ - "type_name":"boolean", - "value":False - }, - "vnf_extend_type":{ - "type_name":"string", - "value":"driver" - }, - "name":{ - "type_name":"string", - "value":"VFW" - }, - "version":{ - "type_name":"string", - "value":"1.0" - }, - "cross_dc":{ - "type_name":"boolean", - "value":False - }, - "vnf_type":{ - "type_name":"string", - "value":"VFW" - }, - "vnfd_version":{ - "type_name":"string", - "value":"1.0.0" - }, - "id":{ - "type_name":"string", - "value":"vcpe_vfw_zte_1_0" - }, - "nsh_aware":{ - "type_name":"boolean", - "value":True - }, - "adjust_vnf_capacity":{ - "type_name":"boolean", - "value":True - }, - "vmnumber_overquota_alarm":{ - "type_name":"boolean", - "value":True - }, - "csarProvider":{ - "type_name":"string", - "value":"ZTE" - }, - "csarVersion":{ - "type_name":"string", - "value":"v1.0" - }, - "externalPluginManageNetworkName":{ - "type_name":"string", - "value":"vlan_4007_plugin_net" - }, - "csarType":{ - "type_name":"string", - "value":"NFAR" - } - }, - "interfaces":[ - { - "name":"Standard", - "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.", - "type_name":"tosca.interfaces.node.lifecycle.Standard", - "operations":[ - { - "name":"create", - "description":"Standard lifecycle create operation." - }, - { - "name":"stop", - "description":"Standard lifecycle stop operation." - }, - { - "name":"start", - "description":"Standard lifecycle start operation." - }, - { - "name":"delete", - "description":"Standard lifecycle delete operation." - }, - { - "name":"configure", - "description":"Standard lifecycle configure operation." - } - ] - } - ], - "capabilities":[ - { - "name":"feature", - "type_name":"tosca.capabilities.Node" - }, - { - "name":"forwarder", - "type_name":"tosca.capabilities.nfv.Forwarder" - }, - { - "name":"vfw_fw_inout", - "type_name":"tosca.capabilities.nfv.Forwarder" - } - ], - "relationships":[ - { - "name":"vfw_ctrl_by_manager_cp", - "source_requirement_index":0, - "target_node_id":"ext_mnet_net_au2otee5mcy0dnpqykj487zr3", - "target_capability_name":"feature" - }, - { - "name":"vfw_data_cp", - "source_requirement_index":1, - "target_node_id":"sfc_data_network_vx3pc1oahn0k0pa5q722yafee", - "target_capability_name":"feature" - }, - { - "name":"virtualLink", - "source_requirement_index":2, - "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc", - "target_capability_name":"feature" - }, - { - "name":"forwarder", - "source_requirement_index":3, - "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc", - "target_capability_name":"feature" - } - ] - }, - { - "id":"m600_tunnel_cp_imwfk5l48ljz0g9knc6d68hv5", - "type_name":"tosca.nodes.nfv.ext.zte.CP", - "template_name":"m600_tunnel_cp", - "properties":{ - "direction":{ - "type_name":"string", - "value":"bidirectional" - }, - "vnic_type":{ - "type_name":"string", - "value":"normal" - }, - "bandwidth":{ - "type_name":"integer", - "value":0 - }, - "mac_address":{ - "type_name":"string", - "value":"00-11-00-22-33-00" - }, - "interface_name":{ - "type_name":"string", - "value":"gei-0/4/0/13" - }, - "ip_address":{ - "type_name":"string", - "value":"191.167.100.5" - }, - "order":{ - "type_name":"integer", - "value":0 - }, - "sfc_encapsulation":{ - "type_name":"string", - "value":"mac" - } - }, - "interfaces":[ - { - "name":"Standard", - "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.", - "type_name":"tosca.interfaces.node.lifecycle.Standard", - "operations":[ - { - "name":"create", - "description":"Standard lifecycle create operation." - }, - { - "name":"stop", - "description":"Standard lifecycle stop operation." - }, - { - "name":"start", - "description":"Standard lifecycle start operation." - }, - { - "name":"delete", - "description":"Standard lifecycle delete operation." - }, - { - "name":"configure", - "description":"Standard lifecycle configure operation." - } - ] - } - ], - "capabilities":[ - { - "name":"feature", - "type_name":"tosca.capabilities.Node" - }, - { - "name":"forwarder", - "type_name":"tosca.capabilities.nfv.Forwarder" - } - ], - "relationships":[ - { - "name":"virtualLink", - "source_requirement_index":0, - "target_node_id":"ext_datanet_net_qtqzlx5dsthzs883hxjn6hyhd", - "target_capability_name":"feature" - }, - { - "name":"virtualbinding", - "source_requirement_index":1, - "target_node_id":"m6000_s_7qtzo5nuocyfmebc6kp9raq18", - "target_capability_name":"feature" - }, - { - "name":"forwarder", - "source_requirement_index":2, - "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc", - "target_capability_name":"feature" - } - ] - }, - { - "id":"ext_mnet_net_au2otee5mcy0dnpqykj487zr3", - "type_name":"tosca.nodes.nfv.ext.VL.Vmware", - "template_name":"ext_mnet_net", - "properties":{ - "name":{ - "type_name":"string", - "value":"vlan_4008_mng_net" - }, - "dhcp_enabled":{ - "type_name":"boolean", - "value":True - }, - "location_info":{ - "type_name":"tosca.datatypes.nfv.ext.LocationInfo", - "value":{ - "tenant":"admin", - "vimid":2, - "availability_zone":"nova" - } - }, - "ip_version":{ - "type_name":"integer", - "value":4 - }, - "mtu":{ - "type_name":"integer", - "value":1500 - }, - "network_name":{ - "type_name":"string", - "value":"vlan_4008_mng_net" - }, - "network_type":{ - "type_name":"string", - "value":"vlan" - } - }, - "interfaces":[ - { - "name":"Standard", - "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.", - "type_name":"tosca.interfaces.node.lifecycle.Standard", - "operations":[ - { - "name":"create", - "description":"Standard lifecycle create operation." - }, - { - "name":"stop", - "description":"Standard lifecycle stop operation." - }, - { - "name":"start", - "description":"Standard lifecycle start operation." - }, - { - "name":"delete", - "description":"Standard lifecycle delete operation." - }, - { - "name":"configure", - "description":"Standard lifecycle configure operation." - } - ] - } - ], - "capabilities":[ - { - "name":"feature", - "type_name":"tosca.capabilities.Node" - }, - { - "name":"virtual_linkable", - "type_name":"tosca.capabilities.nfv.VirtualLinkable" - } - ] - }, - { - "id":"m6000_data_in_eldly5txw4frny3cc349uz3nc", - "type_name":"tosca.nodes.nfv.ext.zte.CP", - "template_name":"m6000_data_in", - "properties":{ - "direction":{ - "type_name":"string", - "value":"bidirectional" - }, - "vnic_type":{ - "type_name":"string", - "value":"normal" - }, - "bandwidth":{ - "type_name":"integer", - "value":0 - }, - "mac_address":{ - "type_name":"string", - "value":"11-22-33-22-11-41" - }, - "interface_name":{ - "type_name":"string", - "value":"gei-0/4/0/7" - }, - "ip_address":{ - "type_name":"string", - "value":"1.1.1.1" - }, - "order":{ - "type_name":"integer", - "value":0 - }, - "sfc_encapsulation":{ - "type_name":"string", - "value":"mac" - }, - "bond":{ - "type_name":"string", - "value":"none" - } - }, - "interfaces":[ - { - "name":"Standard", - "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.", - "type_name":"tosca.interfaces.node.lifecycle.Standard", - "operations":[ - { - "name":"create", - "description":"Standard lifecycle create operation." - }, - { - "name":"stop", - "description":"Standard lifecycle stop operation." - }, - { - "name":"start", - "description":"Standard lifecycle start operation." - }, - { - "name":"delete", - "description":"Standard lifecycle delete operation." - }, - { - "name":"configure", - "description":"Standard lifecycle configure operation." - } - ] - } - ], - "capabilities":[ - { - "name":"feature", - "type_name":"tosca.capabilities.Node" - }, - { - "name":"forwarder", - "type_name":"tosca.capabilities.nfv.Forwarder" - } - ], - "relationships":[ - { - "name":"virtualbinding", - "source_requirement_index":0, - "target_node_id":"m6000_s_7qtzo5nuocyfmebc6kp9raq18", - "target_capability_name":"feature" - }, - { - "name":"virtualLink", - "source_requirement_index":1, - "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc", - "target_capability_name":"feature" - }, - { - "name":"forwarder", - "source_requirement_index":2, - "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc", - "target_capability_name":"feature" - } - ] - }, - { - "id":"ext_datanet_net_qtqzlx5dsthzs883hxjn6hyhd", - "type_name":"tosca.nodes.nfv.ext.VL.Vmware", - "template_name":"ext_datanet_net", - "properties":{ - "name":{ - "type_name":"string", - "value":"vlan_4004_tunnel_net" - }, - "dhcp_enabled":{ - "type_name":"boolean", - "value":True - }, - "location_info":{ - "type_name":"tosca.datatypes.nfv.ext.LocationInfo", - "value":{ - "tenant":"admin", - "vimid":2, - "availability_zone":"nova" - } - }, - "ip_version":{ - "type_name":"integer", - "value":4 - }, - "mtu":{ - "type_name":"integer", - "value":1500 - }, - "network_name":{ - "type_name":"string", - "value":"vlan_4004_tunnel_net" - }, - "network_type":{ - "type_name":"string", - "value":"vlan" - } - }, - "interfaces":[ - { - "name":"Standard", - "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.", - "type_name":"tosca.interfaces.node.lifecycle.Standard", - "operations":[ - { - "name":"create", - "description":"Standard lifecycle create operation." - }, - { - "name":"stop", - "description":"Standard lifecycle stop operation." - }, - { - "name":"start", - "description":"Standard lifecycle start operation." - }, - { - "name":"delete", - "description":"Standard lifecycle delete operation." - }, - { - "name":"configure", - "description":"Standard lifecycle configure operation." - } - ] - } - ], - "capabilities":[ - { - "name":"feature", - "type_name":"tosca.capabilities.Node" - }, - { - "name":"virtual_linkable", - "type_name":"tosca.capabilities.nfv.VirtualLinkable" - } - ] - }, - { - "id":"m600_mnt_cp_l3488y2a8ilyfdn0l89ni4os7", - "type_name":"tosca.nodes.nfv.ext.zte.CP", - "template_name":"m600_mnt_cp", - "properties":{ - "direction":{ - "type_name":"string", - "value":"bidirectional" - }, - "vnic_type":{ - "type_name":"string", - "value":"normal" - }, - "bandwidth":{ - "type_name":"integer", - "value":0 - }, - "mac_address":{ - "type_name":"string", - "value":"00-11-00-22-33-11" - }, - "interface_name":{ - "type_name":"string", - "value":"gei-0/4/0/1" - }, - "ip_address":{ - "type_name":"string", - "value":"10.46.244.51" - }, - "order":{ - "type_name":"integer", - "value":0 - }, - "sfc_encapsulation":{ - "type_name":"string", - "value":"mac" - }, - "bond":{ - "type_name":"string", - "value":"none" - } - }, - "interfaces":[ - { - "name":"Standard", - "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.", - "type_name":"tosca.interfaces.node.lifecycle.Standard", - "operations":[ - { - "name":"create", - "description":"Standard lifecycle create operation." - }, - { - "name":"stop", - "description":"Standard lifecycle stop operation." - }, - { - "name":"start", - "description":"Standard lifecycle start operation." - }, - { - "name":"delete", - "description":"Standard lifecycle delete operation." - }, - { - "name":"configure", - "description":"Standard lifecycle configure operation." - } - ] - } - ], - "capabilities":[ - { - "name":"feature", - "type_name":"tosca.capabilities.Node" - }, - { - "name":"forwarder", - "type_name":"tosca.capabilities.nfv.Forwarder" - } - ], - "relationships":[ - { - "name":"virtualLink", - "source_requirement_index":0, - "target_node_id":"ext_mnet_net_au2otee5mcy0dnpqykj487zr3", - "target_capability_name":"feature" - }, - { - "name":"virtualbinding", - "source_requirement_index":1, - "target_node_id":"m6000_s_7qtzo5nuocyfmebc6kp9raq18", - "target_capability_name":"feature" - }, - { - "name":"forwarder", - "source_requirement_index":2, - "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc", - "target_capability_name":"feature" - } - ] - }, - { - "id":"sfc_data_network_vx3pc1oahn0k0pa5q722yafee", - "type_name":"tosca.nodes.nfv.ext.zte.VL", - "template_name":"sfc_data_network", - "properties":{ - "name":{ - "type_name":"string", - "value":"sfc_data_network" - }, - "dhcp_enabled":{ - "type_name":"boolean", - "value":True - }, - "is_predefined":{ - "type_name":"boolean", - "value":False - }, - "location_info":{ - "type_name":"tosca.datatypes.nfv.ext.LocationInfo", - "value":{ - "tenant":"admin", - "vimid":2, - "availability_zone":"nova" - } - }, - "ip_version":{ - "type_name":"integer", - "value":4 - }, - "mtu":{ - "type_name":"integer", - "value":1500 - }, - "network_name":{ - "type_name":"string", - "value":"sfc_data_network" - }, - "network_type":{ - "type_name":"string", - "value":"vlan" - } - }, - "interfaces":[ - { - "name":"Standard", - "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.", - "type_name":"tosca.interfaces.node.lifecycle.Standard", - "operations":[ - { - "name":"create", - "description":"Standard lifecycle create operation." - }, - { - "name":"stop", - "description":"Standard lifecycle stop operation." - }, - { - "name":"start", - "description":"Standard lifecycle start operation." - }, - { - "name":"delete", - "description":"Standard lifecycle delete operation." - }, - { - "name":"configure", - "description":"Standard lifecycle configure operation." - } - ] - } - ], - "capabilities":[ - { - "name":"feature", - "type_name":"tosca.capabilities.Node" - }, - { - "name":"virtual_linkable", - "type_name":"tosca.capabilities.nfv.VirtualLinkable" - } - ] - }, - { - "id":"m6000_s_7qtzo5nuocyfmebc6kp9raq18", - "type_name":"tosca.nodes.nfv.ext.PNF", - "template_name":"m6000_s", - "properties":{ - "vendor":{ - "type_name":"string", - "value":"zte" - }, - "request_reclassification":{ - "type_name":"boolean", - "value":False - }, - "pnf_type":{ - "type_name":"string", - "value":"m6000s" - }, - "version":{ - "type_name":"string", - "value":"1.0" - }, - "management_address":{ - "type_name":"string", - "value":"111111" - }, - "id":{ - "type_name":"string", - "value":"m6000_s" - }, - "nsh_aware":{ - "type_name":"boolean", - "value":False - } - }, - "interfaces":[ - { - "name":"Standard", - "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.", - "type_name":"tosca.interfaces.node.lifecycle.Standard", - "operations":[ - { - "name":"create", - "description":"Standard lifecycle create operation." - }, - { - "name":"stop", - "description":"Standard lifecycle stop operation." - }, - { - "name":"start", - "description":"Standard lifecycle start operation." - }, - { - "name":"delete", - "description":"Standard lifecycle delete operation." - }, - { - "name":"configure", - "description":"Standard lifecycle configure operation." - } - ] - } - ], - "capabilities":[ - { - "name":"feature", - "type_name":"tosca.capabilities.Node" - }, - { - "name":"virtualBinding", - "type_name":"tosca.capabilities.nfv.VirtualBindable" - }, - { - "name":"forwarder", - "type_name":"tosca.capabilities.nfv.Forwarder" - } - ], - "relationships":[ - { - "name":"forwarder", - "source_requirement_index":0, - "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc", - "target_capability_name":"feature" - } - ] - }, - { - "id":"VNAT_cfdljtspvkp234irka59wgab0", - "type_name":"tosca.nodes.nfv.ext.zte.VNF.VNAT", - "template_name":"VNAT", - "properties":{ - "is_shared":{ - "type_name":"boolean", - "value":False - }, - "plugin_info":{ - "type_name":"string", - "value":"vbrasplugin_1.0" - }, - "vendor":{ - "type_name":"string", - "value":"zte" - }, - "request_reclassification":{ - "type_name":"boolean", - "value":False - }, - "name":{ - "type_name":"string", - "value":"VNAT" - }, - "vnf_extend_type":{ - "type_name":"string", - "value":"driver" - }, - "externalPluginManageNetworkName":{ - "type_name":"string", - "value":"vlan_4007_plugin_net" - }, - "version":{ - "type_name":"string", - "value":"1.0" - }, - "cross_dc":{ - "type_name":"boolean", - "value":False - }, - "vnf_type":{ - "type_name":"string", - "value":"VNAT" - }, - "vnfd_version":{ - "type_name":"string", - "value":"1.0.0" - }, - "id":{ - "type_name":"string", - "value":"vcpe_vnat_zte_1" - }, - "nsh_aware":{ - "type_name":"boolean", - "value":True - }, - "adjust_vnf_capacity":{ - "type_name":"boolean", - "value":True - }, - "vmnumber_overquota_alarm":{ - "type_name":"boolean", - "value":True - }, - "csarProvider":{ - "type_name":"string", - "value":"ZTE" - }, - "NatIpRange":{ - "type_name":"string", - "value":"192.167.0.10-192.168.0.20" - }, - "csarVersion":{ - "type_name":"string", - "value":"v1.0" - }, - "csarType":{ - "type_name":"string", - "value":"NFAR" - } - }, - "interfaces":[ - { - "name":"Standard", - "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.", - "type_name":"tosca.interfaces.node.lifecycle.Standard", - "operations":[ - { - "name":"create", - "description":"Standard lifecycle create operation." - }, - { - "name":"stop", - "description":"Standard lifecycle stop operation." - }, - { - "name":"start", - "description":"Standard lifecycle start operation." - }, - { - "name":"delete", - "description":"Standard lifecycle delete operation." - }, - { - "name":"configure", - "description":"Standard lifecycle configure operation." - } - ] - } - ], - "capabilities":[ - { - "name":"feature", - "type_name":"tosca.capabilities.Node" - }, - { - "name":"forwarder", - "type_name":"tosca.capabilities.nfv.Forwarder" - }, - { - "name":"vnat_fw_inout", - "type_name":"tosca.capabilities.nfv.Forwarder" - } - ], - "relationships":[ - { - "name":"vnat_ctrl_by_manager_cp", - "source_requirement_index":0, - "target_node_id":"ext_mnet_net_au2otee5mcy0dnpqykj487zr3", - "target_capability_name":"feature" - }, - { - "name":"vnat_data_cp", - "source_requirement_index":1, - "target_node_id":"sfc_data_network_vx3pc1oahn0k0pa5q722yafee", - "target_capability_name":"feature" - }, - { - "name":"virtualLink", - "source_requirement_index":2, - "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc", - "target_capability_name":"feature" - }, - { - "name":"forwarder", - "source_requirement_index":3, - "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc", - "target_capability_name":"feature" - } - ] - } - ], - "groups":[ - { - "id":"vnffg1_wk1aqhk6exoh5fmds2unu0uyc", - "type_name":"tosca.groups.nfv.VNFFG", - "template_name":"vnffg1", - "properties":{ - "vendor":{ - "type_name":"string", - "value":"zte" - }, - "connection_point":{ - "type_name":"list", - "value":[ - "m6000_data_in", - "m600_tunnel_cp", - "m6000_data_out" - ] - }, - "version":{ - "type_name":"string", - "value":"1.0" - }, - "constituent_vnfs":{ - "type_name":"list", - "value":[ - "VFW", - "VNAT" - ] - }, - "number_of_endpoints":{ - "type_name":"integer", - "value":3 - }, - "dependent_virtual_link":{ - "type_name":"list", - "value":[ - "sfc_data_network", - "ext_datanet_net", - "ext_mnet_net" - ] - } - }, - "interfaces":[ - { - "name":"standard", - "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.", - "type_name":"tosca.interfaces.node.lifecycle.Standard", - "operations":[ - { - "name":"create", - "description":"Standard lifecycle create operation." - }, - { - "name":"stop", - "description":"Standard lifecycle stop operation." - }, - { - "name":"start", - "description":"Standard lifecycle start operation." - }, - { - "name":"delete", - "description":"Standard lifecycle delete operation." - }, - { - "name":"configure", - "description":"Standard lifecycle configure operation." - } - ] - } - ], - "member_node_ids":[ - "path1_bv53fblv26hawr8dj4fxe2rsd", - "path2_kgmfqr5ldqs9lj3oscrgxqefc" - ] - } - ], - "substitution":{ - "node_type_name":"tosca.nodes.nfv.NS.VCPE_NS" - }, - "inputs":{ - "externalDataNetworkName":{ - "type_name":"string", - "value":"vlan_4004_tunnel_net" - }, - "sfc_data_network":{ - "type_name":"string", - "value":"sfc_data_network" - }, - "NatIpRange":{ - "type_name":"string", - "value":"192.167.0.10-192.168.0.20" - }, - "externalManageNetworkName":{ - "type_name":"string", - "value":"vlan_4008_mng_net" - }, - "externalPluginManageNetworkName":{ - "type_name":"string", - "value":"vlan_4007_plugin_net" - } - } - }, - "model":{ - "metadata":{ - "vendor":"ZTE", - "name":"VCPE_NS", - "csarVersion":"v1.0", - "csarType":"NSAR", - "csarProvider":"ZTE", - "version":1, - "invariant_id":"vcpe_ns_sff_1", - "id":"VCPE_NS", - "description":"vcpe_ns" - }, - "node_templates":[ - { - "name":"path2", - "type_name":"tosca.nodes.nfv.ext.FP", - "default_instances":1, - "min_instances":0, - "properties":{ - "symmetric":{ - "type_name":"boolean", - "value":False - }, - "policy":{ - "type_name":"tosca.datatypes.nfv.ext.FPPolicy", - "value":{ - "type":"ACL", - "criteria":{ - "dest_port_range":"1-100", - "ip_protocol":"tcp", - "source_ip_range":[ - "119.1.1.1-119.1.1.10" - ], - "dest_ip_range":[ - {"get_input":"NatIpRange"} - ], - "dscp":0, - "source_port_range":"1-100" - } - } - } - }, - "interface_templates":[ - "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ed0288a10>" - ], - "capability_templates":[ - { - "name":"feature", - "type_name":"tosca.capabilities.Node" - } - ], - "requirement_templates":[ - { - "name":"forwarder", - "target_node_template_name":"m6000_data_out" - }, - { - "name":"forwarder", - "target_node_template_name":"m600_tunnel_cp" - }, - { - "name":"forwarder", - "target_node_template_name":"VNAT", - "target_capability_name":"vnat_fw_inout" - } - ] - }, - { - "name":"path1", - "type_name":"tosca.nodes.nfv.ext.FP", - "default_instances":1, - "min_instances":0, - "properties":{ - "symmetric":{ - "type_name":"boolean", - "value":True - }, - "policy":{ - "type_name":"tosca.datatypes.nfv.ext.FPPolicy", - "value":{ - "type":"ACL", - "criteria":{ - "dest_port_range":"1-100", - "ip_protocol":"tcp", - "source_ip_range":[ - "1-100" - ], - "dest_ip_range":[ - "1-100" - ], - "dscp":4, - "source_port_range":"1-100" - } - } - } - }, - "interface_templates":[ - "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec81df090>" - ], - "capability_templates":[ - { - "name":"feature", - "type_name":"tosca.capabilities.Node" - } - ], - "requirement_templates":[ - { - "name":"forwarder", - "target_node_template_name":"m6000_data_in" - }, - { - "name":"forwarder", - "target_node_template_name":"m600_tunnel_cp" - }, - { - "name":"forwarder", - "target_node_template_name":"VFW", - "target_capability_name":"vfw_fw_inout" - }, - { - "name":"forwarder", - "target_node_template_name":"VNAT", - "target_capability_name":"vnat_fw_inout" - }, - { - "name":"forwarder", - "target_node_template_name":"m600_tunnel_cp" - }, - { - "name":"forwarder", - "target_node_template_name":"m6000_data_out" - } - ] - }, - { - "name":"m6000_data_out", - "type_name":"tosca.nodes.nfv.ext.zte.CP", - "default_instances":1, - "min_instances":0, - "properties":{ - "direction":{ - "type_name":"string", - "value":"bidirectional" - }, - "vnic_type":{ - "type_name":"string", - "value":"normal" - }, - "bandwidth":{ - "type_name":"integer", - "value":0 - }, - "mac_address":{ - "type_name":"string", - "value":"11-22-33-22-11-44" - }, - "interface_name":{ - "type_name":"string", - "value":"xgei-0/4/1/5" - }, - "ip_address":{ - "type_name":"string", - "value":"176.1.1.2" - }, - "order":{ - "type_name":"integer", - "value":0 - }, - "sfc_encapsulation":{ - "type_name":"string", - "value":"mac" - } - }, - "interface_templates":[ - "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec82c6610>" - ], - "capability_templates":[ - { - "name":"feature", - "type_name":"tosca.capabilities.Node" - }, - { - "name":"forwarder", - "type_name":"tosca.capabilities.nfv.Forwarder" - } - ], - "requirement_templates":[ - { - "name":"virtualbinding", - "target_node_template_name":"m6000_s", - "target_capability_name":"virtualBinding" - }, - { - "name":"virtualLink", - "target_node_type_name":"tosca.nodes.Root" - }, - { - "name":"forwarder", - "target_node_type_name":"tosca.nodes.Root" - } - ] - }, - { - "name":"VFW", - "type_name":"tosca.nodes.nfv.ext.zte.VNF.VFW", - "default_instances":1, - "min_instances":0, - "properties":{ - "is_shared":{ - "type_name":"boolean", - "value":False - }, - "plugin_info":{ - "type_name":"string", - "value":"vbrasplugin_1.0" - }, - "vendor":{ - "type_name":"string", - "value":"zte" - }, - "request_reclassification":{ - "type_name":"boolean", - "value":False - }, - "vnf_extend_type":{ - "type_name":"string", - "value":"driver" - }, - "name":{ - "type_name":"string", - "value":"VFW" - }, - "version":{ - "type_name":"string", - "value":"1.0" - }, - "cross_dc":{ - "type_name":"boolean", - "value":False - }, - "vnf_type":{ - "type_name":"string", - "value":"VFW" - }, - "vnfd_version":{ - "type_name":"string", - "value":"1.0.0" - }, - "id":{ - "type_name":"string", - "value":"vcpe_vfw_zte_1_0" - }, - "nsh_aware":{ - "type_name":"boolean", - "value":True - }, - "adjust_vnf_capacity":{ - "type_name":"boolean", - "value":True - }, - "vmnumber_overquota_alarm":{ - "type_name":"boolean", - "value":True - }, - "csarProvider":{ - "type_name":"string", - "value":"ZTE" - }, - "csarVersion":{ - "type_name":"string", - "value":"v1.0" - }, - "externalPluginManageNetworkName":{ - "type_name":"string", - "value":"vlan_4007_plugin_net" - }, - "csarType":{ - "type_name":"string", - "value":"NFAR" - } - }, - "interface_templates":[ - "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec8281950>" - ], - "capability_templates":[ - { - "name":"feature", - "type_name":"tosca.capabilities.Node" - }, - { - "name":"forwarder", - "type_name":"tosca.capabilities.nfv.Forwarder" - }, - { - "name":"vfw_fw_inout", - "type_name":"tosca.capabilities.nfv.Forwarder" - } - ], - "requirement_templates":[ - { - "name":"vfw_ctrl_by_manager_cp", - "target_node_template_name":"ext_mnet_net", - "target_capability_name":"virtual_linkable" - }, - { - "name":"vfw_data_cp", - "target_node_template_name":"sfc_data_network", - "target_capability_name":"virtual_linkable" - }, - { - "name":"virtualLink", - "target_node_type_name":"tosca.nodes.Root" - }, - { - "name":"forwarder", - "target_node_type_name":"tosca.nodes.Root" - } - ] - }, - { - "name":"m600_tunnel_cp", - "type_name":"tosca.nodes.nfv.ext.zte.CP", - "default_instances":1, - "min_instances":0, - "properties":{ - "direction":{ - "type_name":"string", - "value":"bidirectional" - }, - "vnic_type":{ - "type_name":"string", - "value":"normal" - }, - "bandwidth":{ - "type_name":"integer", - "value":0 - }, - "mac_address":{ - "type_name":"string", - "value":"00-11-00-22-33-00" - }, - "interface_name":{ - "type_name":"string", - "value":"gei-0/4/0/13" - }, - "ip_address":{ - "type_name":"string", - "value":"191.167.100.5" - }, - "order":{ - "type_name":"integer", - "value":0 - }, - "sfc_encapsulation":{ - "type_name":"string", - "value":"mac" - } - }, - "interface_templates":[ - "<aria.modeling.model_elements.InterfaceTemplate object at 0x1ae39d0>" - ], - "capability_templates":[ - { - "name":"feature", - "type_name":"tosca.capabilities.Node" - }, - { - "name":"forwarder", - "type_name":"tosca.capabilities.nfv.Forwarder" - } - ], - "requirement_templates":[ - { - "name":"virtualLink", - "target_node_template_name":"ext_datanet_net", - "target_capability_name":"virtual_linkable" - }, - { - "name":"virtualbinding", - "target_node_template_name":"m6000_s", - "target_capability_name":"virtualBinding" - }, - { - "name":"forwarder", - "target_node_type_name":"tosca.nodes.Root" - } - ] - }, - { - "name":"ext_mnet_net", - "type_name":"tosca.nodes.nfv.ext.VL.Vmware", - "default_instances":1, - "min_instances":0, - "properties":{ - "name":{ - "type_name":"string", - "value":"vlan_4008_mng_net" - }, - "dhcp_enabled":{ - "type_name":"boolean", - "value":True - }, - "location_info":{ - "type_name":"tosca.datatypes.nfv.ext.LocationInfo", - "value":{ - "tenant":"admin", - "vimid":2, - "availability_zone":"nova" - } - }, - "ip_version":{ - "type_name":"integer", - "value":4 - }, - "mtu":{ - "type_name":"integer", - "value":1500 - }, - "network_name":{ - "type_name":"string", - "value":"vlan_4008_mng_net" - }, - "network_type":{ - "type_name":"string", - "value":"vlan" - } - }, - "interface_templates":[ - "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ed00f89d0>" - ], - "capability_templates":[ - { - "name":"feature", - "type_name":"tosca.capabilities.Node" - }, - { - "name":"virtual_linkable", - "type_name":"tosca.capabilities.nfv.VirtualLinkable" - } - ] - }, - { - "name":"m6000_data_in", - "type_name":"tosca.nodes.nfv.ext.zte.CP", - "default_instances":1, - "min_instances":0, - "properties":{ - "direction":{ - "type_name":"string", - "value":"bidirectional" - }, - "vnic_type":{ - "type_name":"string", - "value":"normal" - }, - "bandwidth":{ - "type_name":"integer", - "value":0 - }, - "mac_address":{ - "type_name":"string", - "value":"11-22-33-22-11-41" - }, - "interface_name":{ - "type_name":"string", - "value":"gei-0/4/0/7" - }, - "ip_address":{ - "type_name":"string", - "value":"1.1.1.1" - }, - "order":{ - "type_name":"integer", - "value":0 - }, - "sfc_encapsulation":{ - "type_name":"string", - "value":"mac" - }, - "bond":{ - "type_name":"string", - "value":"none" - } - }, - "interface_templates":[ - "<aria.modeling.model_elements.InterfaceTemplate object at 0x1745710>" - ], - "capability_templates":[ - { - "name":"feature", - "type_name":"tosca.capabilities.Node" - }, - { - "name":"forwarder", - "type_name":"tosca.capabilities.nfv.Forwarder" - } - ], - "requirement_templates":[ - { - "name":"virtualbinding", - "target_node_template_name":"m6000_s", - "target_capability_name":"virtualBinding" - }, - { - "name":"virtualLink", - "target_node_type_name":"tosca.nodes.Root" - }, - { - "name":"forwarder", - "target_node_type_name":"tosca.nodes.Root" - } - ] - }, - { - "name":"ext_datanet_net", - "type_name":"tosca.nodes.nfv.ext.VL.Vmware", - "default_instances":1, - "min_instances":0, - "properties":{ - "name":{ - "type_name":"string", - "value":"vlan_4004_tunnel_net" - }, - "dhcp_enabled":{ - "type_name":"boolean", - "value":True - }, - "location_info":{ - "type_name":"tosca.datatypes.nfv.ext.LocationInfo", - "value":{ - "tenant":"admin", - "vimid":2, - "availability_zone":"nova" - } - }, - "ip_version":{ - "type_name":"integer", - "value":4 - }, - "mtu":{ - "type_name":"integer", - "value":1500 - }, - "network_name":{ - "type_name":"string", - "value":"vlan_4004_tunnel_net" - }, - "network_type":{ - "type_name":"string", - "value":"vlan" - } - }, - "interface_templates":[ - "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8eac063990>" - ], - "capability_templates":[ - { - "name":"feature", - "type_name":"tosca.capabilities.Node" - }, - { - "name":"virtual_linkable", - "type_name":"tosca.capabilities.nfv.VirtualLinkable" - } - ] - }, - { - "name":"m600_mnt_cp", - "type_name":"tosca.nodes.nfv.ext.zte.CP", - "default_instances":1, - "min_instances":0, - "properties":{ - "direction":{ - "type_name":"string", - "value":"bidirectional" - }, - "vnic_type":{ - "type_name":"string", - "value":"normal" - }, - "bandwidth":{ - "type_name":"integer", - "value":0 - }, - "mac_address":{ - "type_name":"string", - "value":"00-11-00-22-33-11" - }, - "interface_name":{ - "type_name":"string", - "value":"gei-0/4/0/1" - }, - "ip_address":{ - "type_name":"string", - "value":"10.46.244.51" - }, - "order":{ - "type_name":"integer", - "value":0 - }, - "sfc_encapsulation":{ - "type_name":"string", - "value":"mac" - }, - "bond":{ - "type_name":"string", - "value":"none" - } - }, - "interface_templates":[ - "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec81264d0>" - ], - "capability_templates":[ - { - "name":"feature", - "type_name":"tosca.capabilities.Node" - }, - { - "name":"forwarder", - "type_name":"tosca.capabilities.nfv.Forwarder" - } - ], - "requirement_templates":[ - { - "name":"virtualLink", - "target_node_template_name":"ext_mnet_net", - "target_capability_name":"virtual_linkable" - }, - { - "name":"virtualbinding", - "target_node_template_name":"m6000_s", - "target_capability_name":"virtualBinding" - }, - { - "name":"forwarder", - "target_node_type_name":"tosca.nodes.Root" - } - ] - }, - { - "name":"sfc_data_network", - "type_name":"tosca.nodes.nfv.ext.zte.VL", - "default_instances":1, - "min_instances":0, - "properties":{ - "name":{ - "type_name":"string", - "value":"sfc_data_network" - }, - "dhcp_enabled":{ - "type_name":"boolean", - "value":True - }, - "is_predefined":{ - "type_name":"boolean", - "value":False - }, - "location_info":{ - "type_name":"tosca.datatypes.nfv.ext.LocationInfo", - "value":{ - "tenant":"admin", - "vimid":2, - "availability_zone":"nova" - } - }, - "ip_version":{ - "type_name":"integer", - "value":4 - }, - "mtu":{ - "type_name":"integer", - "value":1500 - }, - "network_name":{ - "type_name":"string", - "value":"sfc_data_network" - }, - "network_type":{ - "type_name":"string", - "value":"vlan" - } - }, - "interface_templates":[ - "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec813c6d0>" - ], - "capability_templates":[ - { - "name":"feature", - "type_name":"tosca.capabilities.Node" - }, - { - "name":"virtual_linkable", - "type_name":"tosca.capabilities.nfv.VirtualLinkable" - } - ] - }, - { - "name":"m6000_s", - "type_name":"tosca.nodes.nfv.ext.PNF", - "default_instances":1, - "min_instances":0, - "properties":{ - "vendor":{ - "type_name":"string", - "value":"zte" - }, - "request_reclassification":{ - "type_name":"boolean", - "value":False - }, - "pnf_type":{ - "type_name":"string", - "value":"m6000s" - }, - "version":{ - "type_name":"string", - "value":"1.0" - }, - "management_address":{ - "type_name":"string", - "value":"111111" - }, - "id":{ - "type_name":"string", - "value":"m6000_s" - }, - "nsh_aware":{ - "type_name":"boolean", - "value":False - } - }, - "interface_templates":[ - "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec8132490>" - ], - "capability_templates":[ - { - "name":"feature", - "type_name":"tosca.capabilities.Node" - }, - { - "name":"virtualBinding", - "type_name":"tosca.capabilities.nfv.VirtualBindable" - }, - { - "name":"forwarder", - "type_name":"tosca.capabilities.nfv.Forwarder" - } - ], - "requirement_templates":[ - { - "name":"forwarder", - "target_node_type_name":"tosca.nodes.Root" - } - ] - }, - { - "name":"VNAT", - "type_name":"tosca.nodes.nfv.ext.zte.VNF.VNAT", - "default_instances":1, - "min_instances":0, - "properties":{ - "is_shared":{ - "type_name":"boolean", - "value":False - }, - "plugin_info":{ - "type_name":"string", - "value":"vbrasplugin_1.0" - }, - "vendor":{ - "type_name":"string", - "value":"zte" - }, - "request_reclassification":{ - "type_name":"boolean", - "value":False - }, - "name":{ - "type_name":"string", - "value":"VNAT" - }, - "vnf_extend_type":{ - "type_name":"string", - "value":"driver" - }, - "externalPluginManageNetworkName":{ - "type_name":"string", - "value":"vlan_4007_plugin_net" - }, - "version":{ - "type_name":"string", - "value":"1.0" - }, - "cross_dc":{ - "type_name":"boolean", - "value":False - }, - "vnf_type":{ - "type_name":"string", - "value":"VNAT" - }, - "vnfd_version":{ - "type_name":"string", - "value":"1.0.0" - }, - "id":{ - "type_name":"string", - "value":"vcpe_vnat_zte_1" - }, - "nsh_aware":{ - "type_name":"boolean", - "value":True - }, - "adjust_vnf_capacity":{ - "type_name":"boolean", - "value":True - }, - "vmnumber_overquota_alarm":{ - "type_name":"boolean", - "value":True - }, - "csarProvider":{ - "type_name":"string", - "value":"ZTE" - }, - "NatIpRange":{ - "type_name":"string", - "value":"192.167.0.10-192.168.0.20" - }, - "csarVersion":{ - "type_name":"string", - "value":"v1.0" - }, - "csarType":{ - "type_name":"string", - "value":"NFAR" - } - }, - "interface_templates":[ - "<aria.modeling.model_elements.InterfaceTemplate object at 0x1bba810>" - ], - "capability_templates":[ - { - "name":"feature", - "type_name":"tosca.capabilities.Node" - }, - { - "name":"forwarder", - "type_name":"tosca.capabilities.nfv.Forwarder" - }, - { - "name":"vnat_fw_inout", - "type_name":"tosca.capabilities.nfv.Forwarder" - } - ], - "requirement_templates":[ - { - "name":"vnat_ctrl_by_manager_cp", - "target_node_template_name":"ext_mnet_net", - "target_capability_name":"virtual_linkable" - }, - { - "name":"vnat_data_cp", - "target_node_template_name":"sfc_data_network", - "target_capability_name":"virtual_linkable" - }, - { - "name":"virtualLink", - "target_node_type_name":"tosca.nodes.Root" - }, - { - "name":"forwarder", - "target_node_type_name":"tosca.nodes.Root" - } - ] - } - ], - "group_templates":[ - { - "name":"vnffg1", - "type_name":"tosca.groups.nfv.VNFFG", - "properties":{ - "vendor":{ - "type_name":"string", - "value":"zte" - }, - "connection_point":{ - "type_name":"list", - "value":[ - "m6000_data_in", - "m600_tunnel_cp", - "m6000_data_out" - ] - }, - "version":{ - "type_name":"string", - "value":"1.0" - }, - "constituent_vnfs":{ - "type_name":"list", - "value":[ - "VFW", - "VNAT" - ] - }, - "number_of_endpoints":{ - "type_name":"integer", - "value":3 - }, - "dependent_virtual_link":{ - "type_name":"list", - "value":[ - "sfc_data_network", - "ext_datanet_net", - "ext_mnet_net" - ] - } - }, - "interface_templates":[ - "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec811cd10>" - ], - "member_node_template_names":[ - "path1", - "path2" - ] - } - ], - "substitution_template":{ - "node_type_name":"tosca.nodes.nfv.NS.VCPE_NS" - }, - "inputs":{ - "externalDataNetworkName":{ - "type_name":"string", - "value":"vlan_4004_tunnel_net" - }, - "sfc_data_network":{ - "type_name":"string", - "value":"sfc_data_network" - }, - "NatIpRange":{ - "type_name":"string", - "value":"192.167.0.10-192.168.0.20" - }, - "externalManageNetworkName":{ - "type_name":"string", - "value":"vlan_4008_mng_net" - }, - "externalPluginManageNetworkName":{ - "type_name":"string", - "value":"vlan_4007_plugin_net" - } - } - } - } - ) - print convert_nsd_model(src_json) - - - - diff --git a/newton/newton/pub/utils/values.py b/newton/newton/pub/utils/values.py deleted file mode 100644 index 808d977a..00000000 --- a/newton/newton/pub/utils/values.py +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright (c) 2017-2018 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. -# See the License for the specific language governing permissions and -# limitations under the License. - -def ignore_case_get(args, key, def_val=""): - if not key: - return def_val - if key in args: - return args[key] - for old_key in args: - if old_key.upper() == key.upper(): - return args[old_key] - return def_val - |