Add parser convert vnffg and server-group 27/8527/1
authorying.yunlong <ying.yunlong@zte.com.cn>
Thu, 24 Aug 2017 01:00:17 +0000 (09:00 +0800)
committerying.yunlong <ying.yunlong@zte.com.cn>
Thu, 24 Aug 2017 01:00:17 +0000 (09:00 +0800)
After parse the nsd package, add _get_all_vnffg
and get_all_server_group function to convert
 the fp info.

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

index b224f4e..919e95e 100644 (file)
 # limitations under the License.
 import json
 
-from lcm.pub.utils.toscaparser.convert import convert_nsd, convert_vnfd
 from lcm.pub.utils.toscaparser.nsdmodel import EtsiNsdInfoModel
 from lcm.pub.utils.toscaparser.vnfdmodel import EtsiVnfdInfoModel
-from lcm.pub.utils.toscaparser.parser import parse_nsd_model, parse_vnfd_model
 
 
 def parse_nsd(path, input_parameters=[]):
@@ -31,4 +29,3 @@ def parse_vnfd(path, input_parameters=[]):
     strResponse = json.dumps(tosca_obj, default=lambda obj: obj.__dict__)
     strResponse = strResponse.replace(': null', ': ""')
     return strResponse
-
index 1838014..9c60029 100644 (file)
@@ -23,6 +23,8 @@ class EtsiNsdInfoModel(BaseInfoModel):
         self.cps = self.get_all_cp(nodeTemplates)
         self.routers = self.get_all_router(nodeTemplates)
         self.fps = self._get_all_fp(nodeTemplates)
+        self.vnffgs = self._get_all_vnffg(tosca.topology_template.groups)
+        self.server_groups = self.get_all_server_group(tosca.topology_template.groups)
 
 
     def buildInputs(self, top_inputs):
@@ -235,3 +237,39 @@ class EtsiNsdInfoModel(BaseInfoModel):
     def get_node_by_req(self, node_templates, req):
         req_node_name = self.get_requirement_node_name(req)
         return self.get_node_by_name(node_templates, req_node_name)
+
+    def _get_all_vnffg(self, groups):
+        vnffgs = []
+        for group in groups:
+            if self._isVnffg(group):
+                vnffg = {}
+                vnffg['vnffg_id'] = group.name
+                vnffg['description'] = group.description
+                if 'properties' in group.tpl:
+                    vnffg['properties'] = group.tpl['properties']
+                vnffg['members'] = group.members
+
+                vnffgs.append(vnffg)
+        return vnffgs
+
+    def _isVnffg(self, group):
+        return group.type.upper().find('.VNFFG.') >= 0 or group.type.upper().find(
+            '.SFC.') >= 0 or group.type.upper().endswith('.VNFFG') or group.type.upper().endswith('.SFC')
+
+    def get_all_server_group(self, groups):
+        rets = []
+        for group in groups:
+            if self._isServerGroup(group):
+                ret = {}
+                ret['group_id'] = group.name
+                ret['description'] = group.description
+                if 'properties' in group.tpl:
+                    ret['properties'] = group.tpl['properties']
+                ret['members'] = group.members
+
+                rets.append(ret)
+        return rets
+
+    def _isServerGroup(self, group):
+        return group.type.upper().find('.AFFINITYORANTIAFFINITYGROUP.') >= 0 or group.type.upper().endswith(
+            '.AFFINITYORANTIAFFINITYGROUP')