Add OSM_SERVER and OSMUI_SQL_DATABASE_URI to Dockerfile
[osm/LW-UI.git] / lib / osm / osm_rdcl_parser.py
index 009c0e7..48ffcbc 100644 (file)
@@ -257,8 +257,12 @@ class OsmParser(RdclGraph):
             self.add_node(ns_vld['id'], 'ns_vl', None, None, graph,
                           {'property': {'custom_label': ns_vld['name']}, 'osm': ns_vld})
             for cp_ref in ns_vld['vnfd-connection-point-ref']:
-                self.add_link(map_vnf_index_to_id[str(cp_ref['member-vnf-index-ref'])], ns_vld['id'], 'nsr', None,
-                              graph)
+                ns_vld['id']+ ':' + str(cp_ref['member-vnf-index-ref']) + ':' + cp_ref['vnfd-connection-point-ref']
+                cp_id = ns_vld['id']+ ':' + str(cp_ref['member-vnf-index-ref']) + ':' + cp_ref['vnfd-connection-point-ref']             
+                cp_label = str(cp_ref['vnfd-connection-point-ref'])
+                self.add_node(cp_id,'ns_cp','nsd',None,graph, {'property': {'custom_label': cp_label}, 'osm': cp_ref})
+                self.add_link(cp_id, ns_vld['id'], 'nsr', None, graph)
+                self.add_link(cp_id, map_vnf_index_to_id[str(cp_ref['member-vnf-index-ref'])], 'nsr', None, graph)
 
         return graph
 
@@ -267,47 +271,79 @@ class OsmParser(RdclGraph):
             "layer": {
                 "vnfd": {
                     "nodes": {
-                        "vdu": {},
-                        "cp": {},
-                        "int_cp": {},
-                        "vnf_vl": {}
-
+                        "vdu": {
+                            "addable": {
+                                "callback": "addNode"
+                            },
+                            "removable": {
+                                "callback": "removeNode"
+                            }
+                        },
+                        "cp": {
+                            "addable": {
+                                "callback": "addNode"
+                            },
+                            "removable": {
+                                "callback": "removeNode"
+                            }
+                        },
+                        "int_cp": {
+                            "removable": {
+                                "callback": "removeNode"
+                            }
+                        },
+                        "vnf_vl": {
+                            "addable": {
+                                "callback": "addNode"
+                            },
+                            "removable": {
+                                "callback": "removeNode"
+                            }
+                        }
                     },
                     "allowed_edges": {
                         "vdu": {
                             "destination": {
                                 "cp": {
+                                    "callback": "addLink",
                                     "direct_edge": False,
-                                },
-                                "int_cp": {
-                                    "direct_edge": False,
+                                    "removable": {}
                                 },
                                 "vnf_vl": {
+                                    "callback": "addLink",
                                     "direct_edge": False,
+                                    "removable": {}
                                 }
                             }
                         },
                         "cp": {
                             "destination": {
                                 "vdu": {
+                                    "callback": "addLink",
                                     "direct_edge": False,
+                                    "removable": {}
                                 }
                             }
                         },
-                        "int_cp": {
-                            "destination": {
-                                "vdu": {
-                                    "direct_edge": False,
-                                },
-                                "vnf_vl": {
-                                    "direct_edge": False,
-                                }
-                            }
-                        },
+                        "int_cp": {
+                            "destination": {
+                                "vdu": {
+                                    "direct_edge": False,
+                                },
+                                "vnf_vl": {
+                                    "direct_edge": False,
+                                }
+                            }
+                        },
                         "vnf_vl": {
                             "destination": {
-                                "vdu": {
+                                "int_cp": {
                                     "direct_edge": False
+                                },
+                                "vdu": {
+                                    "callback": "addLink",
+                                    "direct_edge": False,
+                                    "removable": {}
                                 }
                             }
                         }
@@ -316,7 +352,8 @@ class OsmParser(RdclGraph):
                 "name": "OSM",
                 "version": 1,
                 "description": "osm"
-            }
+            }, "callback": {"addNode": {"class": "OSMController"}, "removeNode": {"class": "OSMController"},
+                            "removeLink": {"class": "OSMController"}, "addLink": {"class": "OSMController"}}
         }, 'graph_parameters': {'view': {'vnfd': {}}}}
         if 'vnfd-catalog' in vnfd_catalog:
             vnfd = vnfd_catalog['vnfd-catalog']['vnfd'][0]
@@ -324,6 +361,13 @@ class OsmParser(RdclGraph):
             vnfd = vnfd_catalog['vnfd:vnfd-catalog']['vnfd'][0]
         else:
             return graph
+        vnfd_graph_param = graph['graph_parameters']['view']['vnfd']
+        vnfd_graph_param['id'] = vnfd['id'] if 'id' in vnfd else None
+        vnfd_graph_param['name'] = vnfd['name'] if 'name' in vnfd else None
+        vnfd_graph_param['short-name'] = vnfd['short-name'] if 'short-name' in vnfd else None
+        vnfd_graph_param['description'] = vnfd['description'] if 'description' in vnfd else None
+        vnfd_graph_param['version'] = vnfd['version'] if 'version' in vnfd else None
+        vnfd_graph_param['vendor'] = vnfd['vendor'] if 'vendor' in vnfd else None
         if 'connection-point' in vnfd:
             for extCp in vnfd['connection-point']:
                 self.add_node(extCp['name'], 'cp', vnfd['id'], None, graph,
@@ -356,29 +400,64 @@ class OsmParser(RdclGraph):
             "layer": {
                 "nsd": {
                     "nodes": {
-                        "vnfd": {},
-                        "cp": {},
-                        "ns_vl": {}
+                        "vnf": {
+                            "addable": {"callback": "addNode"},
+                            "removable": {"callback": "removeNode"}
+                        },
+                        "ns_cp": {
+                            "removable": {"callback": "removeNode"}
+                        },
+                        "ns_vl": {
+                            "addable": {
+                                "callback": "addNode"
+                            },
+                            "removable": {
+                                "callback": "removeNode"
+                            }
+                        }
                     },
                     "allowed_edges": {
-                        "cp": {
+                        "vnf":{
                             "destination": {
-                                "vnfd": {
+                                "ns_cp": {
                                     "direct_edge": False,
+                                    "removable" : {
+                                        "callback": "removeLink",
+                                    }
+                                },
+                                "ns_vl": {
+                                    "direct_edge": False,
+                                    "callback": "addLink",
                                 }
                             }
                         },
-                        "vnfd":{
+                        "ns_vl": {
                             "destination": {
-                                "ns_vl": {
+                                "ns_cp": {
                                     "direct_edge": False,
+                                    "removable": {
+                                        "callback": "removeLink",
+                                    }
+                                },
+                                "vnf": {
+                                    "direct_edge": False,
+                                    "callback": "addLink",
                                 }
                             }
                         },
-                        "ns_vl": {
+                        "ns_cp": {
                             "destination": {
-                                "vnfd": {
+                                "ns_vl": {
+                                    "direct_edge": False,
+                                    "removable": {
+                                        "callback": "removeLink",
+                                    }
+                                },
+                                "vnf": {
                                     "direct_edge": False,
+                                    "removable": {
+                                        "callback": "removeLink",
+                                    }
                                 }
                             }
                         }
@@ -434,17 +513,27 @@ class OsmParser(RdclGraph):
                 "name": "OSM",
                 "version": 1,
                 "description": "osm"
-            }
-        }, 'graph_parameters': {'view': {'vnfd': {}}}}
+            }, "callback": {"addNode": {"class": "OSMController"}, "removeNode": {"class": "OSMController"},
+                            "removeLink": {"class": "OSMController"}, "addLink": {"class": "OSMController"}}
+        }, 'graph_parameters': {'view': {'nsd': {}}}}
         if 'nsd-catalog' in nsd_catalog:
             nsd = nsd_catalog['nsd-catalog']['nsd'][0]
         elif 'nsd:nsd-catalog' in nsd_catalog:
             nsd = nsd_catalog['nsd:nsd-catalog']['nsd'][0]
         else:
             return graph
+
+        nsd_graph_param = graph['graph_parameters']['view']['nsd']
+        nsd_graph_param['id'] = nsd['id'] if 'id' in nsd else None
+        nsd_graph_param['name'] = nsd['name'] if 'name' in nsd else None
+        nsd_graph_param['short-name'] = nsd['short-name'] if 'short-name' in nsd else None
+        nsd_graph_param['description'] = nsd['description'] if 'description' in nsd else None
+        nsd_graph_param['version'] = nsd['version'] if 'version' in nsd else None
+        nsd_graph_param['vendor'] = nsd['vendor'] if 'vendor' in nsd else None
+
         if 'constituent-vnfd' in nsd:
             for vnfd in nsd['constituent-vnfd']:
-                costinuent_id = vnfd['vnfd-id-ref']+":"+vnfd['member-vnf-index']
+                costinuent_id = vnfd['vnfd-id-ref']+":"+str(vnfd['member-vnf-index'])
                 self.add_node(costinuent_id, 'vnf', None, None, graph,
                               {'property': {'custom_label': costinuent_id}, 'osm': vnfd})
 
@@ -455,8 +544,15 @@ class OsmParser(RdclGraph):
                 if 'vnfd-connection-point-ref' in vld:
                     for cp_ref in vld['vnfd-connection-point-ref']:
                         vnfd_id = cp_ref['vnfd-id-ref'] + ':' + str(cp_ref['member-vnf-index-ref'])
-                        self.add_link(vld['id'], vnfd_id, 'nsd', None, graph)
-
+                        cp_id = vld['id']+ ':' + str(cp_ref['member-vnf-index-ref']) + ':' + cp_ref['vnfd-connection-point-ref']
+                        cp_label = vld['id']+ ':' + cp_ref['vnfd-connection-point-ref']
+                        node_payload = {'vld_id': vld['id']}
+                        node_payload.update(cp_ref)
+                        self.add_node(cp_id,'ns_cp',None,None,graph,
+                        {'property': {'custom_label': cp_label}, 'osm': node_payload})
+                        
+                        self.add_link(cp_id, vld['id'], 'nsd', None, graph)
+                        self.add_link(cp_id, vnfd_id, 'nsd', None, graph)
         return graph