summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorying.yunlong <ying.yunlong@zte.com.cn>2017-08-19 14:09:27 +0800
committerying.yunlong <ying.yunlong@zte.com.cn>2017-08-19 14:09:27 +0800
commit0c1fee01e08e9f8e1332cb89542bad92110b0bde (patch)
treedf46ce29581909f7b2ea80a4694fc9cf831c91b4
parentd2a5b7d7e40ff586d661f154e7e3aa48c906d1d2 (diff)
Add buildnode function of parser
Change-Id: I8e473904cf206b007c607383679f1ec2b88720d8 Issue-ID: VFC-113 Signed-off-by: ying.yunlong <ying.yunlong@zte.com.cn>
-rw-r--r--lcm/pub/utils/toscaparser/basemodel.py55
-rw-r--r--lcm/pub/utils/toscaparser/nsdmodel.py18
2 files changed, 63 insertions, 10 deletions
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