X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=src%2Fnepi%2Futil%2Fparsers%2Fxml_parser.py;h=4f3f1d9f5f13da2e803bb5993fdd46f79e170b57;hb=8ad1108c60ab8bcbbc08e7c53714edfd59d4e9cb;hp=ca68be1d13767742f9fc6a6fcdf34e7031ccfebd;hpb=cfad7039f174589e1ad108dd38c61f7988d631f1;p=nepi.git diff --git a/src/nepi/util/parsers/xml_parser.py b/src/nepi/util/parsers/xml_parser.py index ca68be1d..4f3f1d9f 100644 --- a/src/nepi/util/parsers/xml_parser.py +++ b/src/nepi/util/parsers/xml_parser.py @@ -121,6 +121,7 @@ class ECXMLParser(object): for nid in ec.netgraph.nodes(): ngnnode = doc.createElement("node") ngnnode.setAttribute("nid", xmlencode(nid)) + ngnnode.setAttribute("nid-type", from_type(nid)) ngnsnode.appendChild(ngnnode) # Mark ources and targets @@ -152,7 +153,9 @@ class ECXMLParser(object): for nid1, nid2 in ec.netgraph.edges(): ngenode = doc.createElement("edge") ngenode.setAttribute("nid1", xmlencode(nid1)) + ngenode.setAttribute("nid1-type", from_type(nid1)) ngenode.setAttribute("nid2", xmlencode(nid2)) + ngenode.setAttribute("nid2-type", from_type(nid2)) ngesnode.appendChild(ngenode) # Edge annotations @@ -267,12 +270,18 @@ class ECXMLParser(object): os.environ["NEPI_NTHREADS"] = nthreads # Deserialize netgraph + topology = None + topo_type = None + netgraph = self._netgraph_from_xml(doc, ecnode) - topo_type = netgraph.topo_type if netgraph else None + + if netgraph: + topo_type = netgraph.topo_type + topology = netgraph.topology # Instantiate EC ec = ExperimentController(exp_id = exp_id, local_dir = local_dir, - topology = netgraph.topology, topo_type = topo_type) + topology = topology, topo_type = topo_type) connections = set() @@ -305,6 +314,8 @@ class ECXMLParser(object): ngnsnode = ngnsnode_list[0].getElementsByTagName("node") for ngnnode in ngnsnode: nid = xmldecode(ngnnode.getAttribute("nid")) + tipe = xmldecode(ngnnode.getAttribute("nid-type")) + nid = to_type(tipe, nid) netgraph.add_node(nid) if ngnnode.hasAttribute("source"): @@ -334,7 +345,13 @@ class ECXMLParser(object): ngesnode = ngesnode_list[0].getElementsByTagName("edge") for ngenode in ngesnode: nid1 = xmldecode(ngenode.getAttribute("nid1")) + tipe1 = xmldecode(ngenode.getAttribute("nid1-type")) + nid1 = to_type(tipe1, nid1) + nid2 = xmldecode(ngenode.getAttribute("nid2")) + tipe2 = xmldecode(ngenode.getAttribute("nid2-type")) + nid2 = to_type(tipe2, nid2) + netgraph.add_edge(nid1, nid2) annosnode_list = ngenode.getElementsByTagName("edge-annotations")