diff options
author | 2017-08-19 14:16:55 +0800 | |
---|---|---|
committer | 2017-08-19 14:16:55 +0800 | |
commit | febb17409fe1185cf5549a4eaf258a26693654a4 (patch) | |
tree | af055233066dbe53919eb524feac428b8a989298 | |
parent | 0c1fee01e08e9f8e1332cb89542bad92110b0bde (diff) |
Add build_requirements and buildCapabilities
Implementing build_requirements
and buildCapabilities Methods.
Change-Id: I7457d1de200c72f743685b6321b627361b4dd373
Issue-ID: VFC-114
Signed-off-by: ying.yunlong <ying.yunlong@zte.com.cn>
-rw-r--r-- | lcm/pub/utils/toscaparser/basemodel.py | 24 | ||||
-rw-r--r-- | lcm/pub/utils/toscaparser/nsdmodel.py | 4 |
2 files changed, 25 insertions, 3 deletions
diff --git a/lcm/pub/utils/toscaparser/basemodel.py b/lcm/pub/utils/toscaparser/basemodel.py index ae29194b..143120e6 100644 --- a/lcm/pub/utils/toscaparser/basemodel.py +++ b/lcm/pub/utils/toscaparser/basemodel.py @@ -1,5 +1,7 @@ import copy +import json import os +import re import shutil import urllib @@ -153,4 +155,24 @@ class BaseInfoModel(object): # ret_props[key] = self._verify_map(inputs, parsed_params, value) # continue # ret_props[key] = value - return ret_props
\ No newline at end of file + return ret_props + + def build_requirements(self, node_template): + rets = [] + for req in node_template.requirements: + for req_name, req_value in req.items(): + if (isinstance(req_value, dict)): + if ('node' in req_value and req_value['node'] not in node_template.templates): + continue # No target requirement for aria parser, not add to result. + rets.append({req_name : req_value}) + return rets + + def buildCapabilities(self, nodeTemplate, inputs, ret): + capabilities = json.dumps(nodeTemplate.entity_tpl.get('capabilities', None)) + match = re.findall(r'\{"get_input":\s*"([\w|\-]+)"\}',capabilities) + for m in match: + aa= [input_def for input_def in inputs + if m == input_def.name][0] + capabilities = re.sub(r'\{"get_input":\s*"([\w|\-]+)"\}', json.dumps(aa.default), capabilities,1) + if capabilities != 'null': + ret['capabilities'] = json.loads(capabilities)
\ No newline at end of file diff --git a/lcm/pub/utils/toscaparser/nsdmodel.py b/lcm/pub/utils/toscaparser/nsdmodel.py index 1a31fac1..f0512068 100644 --- a/lcm/pub/utils/toscaparser/nsdmodel.py +++ b/lcm/pub/utils/toscaparser/nsdmodel.py @@ -51,8 +51,8 @@ class EtsiNsdInfoModel(BaseInfoModel): ret['description'] = '' props = self.buildProperties(nodeTemplate, parsed_params) ret['properties'] = self.verify_properties(props, inputs, parsed_params) - # ret['requirements'] = self.build_requirements(nodeTemplate) - # self.buildCapabilities(nodeTemplate, inputs, ret) + ret['requirements'] = self.build_requirements(nodeTemplate) + self.buildCapabilities(nodeTemplate, inputs, ret) # self.buildArtifacts(nodeTemplate, inputs, ret) # interfaces = self.build_interfaces(nodeTemplate) # if interfaces: ret['interfaces'] = interfaces |