From febb17409fe1185cf5549a4eaf258a26693654a4 Mon Sep 17 00:00:00 2001 From: "ying.yunlong" Date: Sat, 19 Aug 2017 14:16:55 +0800 Subject: Add build_requirements and buildCapabilities Implementing build_requirements and buildCapabilities Methods. Change-Id: I7457d1de200c72f743685b6321b627361b4dd373 Issue-ID: VFC-114 Signed-off-by: ying.yunlong --- lcm/pub/utils/toscaparser/basemodel.py | 24 +++++++++++++++++++++++- 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 -- cgit 1.2.3-korg