From: ying.yunlong Date: Sat, 19 Aug 2017 06:09:27 +0000 (+0800) Subject: Add buildnode function of parser X-Git-Tag: v1.0.0~162 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=0c1fee01e08e9f8e1332cb89542bad92110b0bde;p=vfc%2Fnfvo%2Flcm.git Add buildnode function of parser Change-Id: I8e473904cf206b007c607383679f1ec2b88720d8 Issue-ID: VFC-113 Signed-off-by: ying.yunlong --- diff --git a/lcm/pub/utils/toscaparser/basemodel.py b/lcm/pub/utils/toscaparser/basemodel.py index 19bde0db..ae29194b 100644 --- a/lcm/pub/utils/toscaparser/basemodel.py +++ b/lcm/pub/utils/toscaparser/basemodel.py @@ -3,6 +3,7 @@ import os import shutil import urllib +from toscaparser.functions import GetInput from toscaparser.tosca_template import ToscaTemplate from lcm.pub.utils.toscaparser.dataentityext import DataEntityExt @@ -100,4 +101,56 @@ class BaseInfoModel(object): def buidMetadata(self, tosca): if 'metadata' in tosca.tpl: - self.metadata = copy.deepcopy(tosca.tpl['metadata']) \ No newline at end of file + self.metadata = copy.deepcopy(tosca.tpl['metadata']) + + def buildProperties(self, nodeTemplate, parsed_params): + properties = {} + isMappingParams = parsed_params and len(parsed_params) > 0 + for k, item in nodeTemplate.get_properties().items(): + properties[k] = item.value + if isinstance(item.value, GetInput): + if item.value.result() and isMappingParams: + properties[k] = DataEntityExt.validate_datatype(item.type, item.value.result()) + else: + tmp = {} + tmp[item.value.name] = item.value.input_name + properties[k] = tmp + if 'attributes' in nodeTemplate.entity_tpl: + for k, item in nodeTemplate.entity_tpl['attributes'].items(): + properties[k] = str(item) + return properties + + def buildProperties(self, nodeTemplate, parsed_params): + properties = {} + isMappingParams = parsed_params and len(parsed_params) > 0 + for k, item in nodeTemplate.get_properties().items(): + properties[k] = item.value + if isinstance(item.value, GetInput): + if item.value.result() and isMappingParams: + properties[k] = DataEntityExt.validate_datatype(item.type, item.value.result()) + else: + tmp = {} + tmp[item.value.name] = item.value.input_name + properties[k] = tmp + if 'attributes' in nodeTemplate.entity_tpl: + for k, item in nodeTemplate.entity_tpl['attributes'].items(): + properties[k] = str(item) + return properties + + + def verify_properties(self, props, inputs, parsed_params): + ret_props = {} + if (props and len(props) > 0): + for key, value in props.items(): + ret_props[key] = self._verify_value(value, inputs, parsed_params) + # if isinstance(value, str): + # ret_props[key] = self._verify_string(inputs, parsed_params, value); + # continue + # if isinstance(value, list): + # ret_props[key] = map(lambda x: self._verify_dict(inputs, parsed_params, x), value) + # continue + # if isinstance(value, dict): + # ret_props[key] = self._verify_map(inputs, parsed_params, value) + # continue + # ret_props[key] = value + return ret_props \ No newline at end of file diff --git a/lcm/pub/utils/toscaparser/nsdmodel.py b/lcm/pub/utils/toscaparser/nsdmodel.py index 98b82136..1a31fac1 100644 --- a/lcm/pub/utils/toscaparser/nsdmodel.py +++ b/lcm/pub/utils/toscaparser/nsdmodel.py @@ -43,17 +43,17 @@ class EtsiNsdInfoModel(BaseInfoModel): def buildNode(self, nodeTemplate, inputs, parsed_params): ret ={} - # ret['name'] = nodeTemplate.name - # ret['nodeType'] = nodeTemplate.type - # if 'description' in nodeTemplate.entity_tpl: - # ret['description'] = nodeTemplate.entity_tpl['description'] - # else: - # ret['description'] = '' - # props = self.buildProperties(nodeTemplate, parsed_params) - # ret['properties'] = self.verify_properties(props, inputs, parsed_params) + ret['name'] = nodeTemplate.name + ret['nodeType'] = nodeTemplate.type + if 'description' in nodeTemplate.entity_tpl: + ret['description'] = nodeTemplate.entity_tpl['description'] + else: + 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) # self.buildArtifacts(nodeTemplate, inputs, ret) # interfaces = self.build_interfaces(nodeTemplate) # if interfaces: ret['interfaces'] = interfaces - return ret \ No newline at end of file + return ret