X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=src%2Fnepi%2Futil%2Fparsers%2Fxml_parser.py;h=18b7a7daee2d0eaa36ccf27d09b0570dce4c69bd;hb=039fbd9629d7570d4c175a5448d24badcd0f3aba;hp=ca68be1d13767742f9fc6a6fcdf34e7031ccfebd;hpb=ec3460fce064ea44366cb417dea0f9e148d3d804;p=nepi.git diff --git a/src/nepi/util/parsers/xml_parser.py b/src/nepi/util/parsers/xml_parser.py index ca68be1d..18b7a7da 100644 --- a/src/nepi/util/parsers/xml_parser.py +++ b/src/nepi/util/parsers/xml_parser.py @@ -3,9 +3,8 @@ # Copyright (C) 2013 INRIA # # This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation; # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -17,6 +16,8 @@ # # Author: Alina Quereilhac +from __future__ import print_function + from nepi.util.netgraph import NetGraph, TopologyType from nepi.util.timefuncs import stformat, tsformat @@ -82,7 +83,7 @@ class ECXMLParser(object): try: xml = doc.toprettyxml(indent=" ", encoding="UTF-8") except: - print >>sys.stderr, "Oops: generating XML from %s" % (data,) + print("Oops: generating XML from %s" % (data,), file=sys.stderr) raise return xml @@ -121,6 +122,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 +154,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 +271,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 +315,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 +346,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")