summaryrefslogtreecommitdiffstats
path: root/newton/newton/pub
diff options
context:
space:
mode:
authorHuang Haibin <haibin.huang@intel.com>2018-03-08 22:05:26 +0800
committerHuang Haibin <haibin.huang@intel.com>2018-03-10 00:38:17 +0800
commit51fde27c2a12f525e94ecd3a83238a46215d9392 (patch)
tree4b9b72d4048209d410c0f9bc8a25a9561f3fcfa0 /newton/newton/pub
parentc701ab185721e50cca3d432220361aaa723358cc (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')
-rw-r--r--newton/newton/pub/__init__.py14
-rw-r--r--newton/newton/pub/config/__init__.py13
-rw-r--r--newton/newton/pub/config/config.py38
-rw-r--r--newton/newton/pub/database/__init__.py14
-rw-r--r--newton/newton/pub/database/models.py23
-rw-r--r--newton/newton/pub/exceptions.py19
-rw-r--r--newton/newton/pub/msapi/__init__.py14
-rw-r--r--newton/newton/pub/msapi/extsys.py101
-rw-r--r--newton/newton/pub/tests/__init__.py14
-rw-r--r--newton/newton/pub/tests/test_extsys.py131
-rw-r--r--newton/newton/pub/tests/test_restcall.py111
-rw-r--r--newton/newton/pub/utils/__init__.py14
-rw-r--r--newton/newton/pub/utils/enumutil.py16
-rw-r--r--newton/newton/pub/utils/fileutil.py52
-rw-r--r--newton/newton/pub/utils/idutil.py21
-rw-r--r--newton/newton/pub/utils/restcall.py149
-rw-r--r--newton/newton/pub/utils/share_lock.py80
-rw-r--r--newton/newton/pub/utils/syscomm.py19
-rw-r--r--newton/newton/pub/utils/timeutil.py19
-rw-r--r--newton/newton/pub/utils/toscautil.py2606
-rw-r--r--newton/newton/pub/utils/values.py24
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
-