From: ying.yunlong Date: Sat, 19 Aug 2017 06:16:55 +0000 (+0800) Subject: Add build_requirements and buildCapabilities X-Git-Tag: v1.0.0~161 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F83%2F8083%2F1;p=vfc%2Fnfvo%2Flcm.git Add build_requirements and buildCapabilities Implementing build_requirements and buildCapabilities Methods. Change-Id: I7457d1de200c72f743685b6321b627361b4dd373 Issue-ID: VFC-114 Signed-off-by: ying.yunlong --- 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