Add build_requirements and buildCapabilities 83/8083/1
authorying.yunlong <ying.yunlong@zte.com.cn>
Sat, 19 Aug 2017 06:16:55 +0000 (14:16 +0800)
committerying.yunlong <ying.yunlong@zte.com.cn>
Sat, 19 Aug 2017 06:16:55 +0000 (14:16 +0800)
Implementing build_requirements
and buildCapabilities Methods.

Change-Id: I7457d1de200c72f743685b6321b627361b4dd373
Issue-ID: VFC-114
Signed-off-by: ying.yunlong <ying.yunlong@zte.com.cn>
lcm/pub/utils/toscaparser/basemodel.py
lcm/pub/utils/toscaparser/nsdmodel.py

index ae29194..143120e 100644 (file)
@@ -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
index 1a31fac..f051206 100644 (file)
@@ -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