def __manual_plugin(self): tree = self.__get_manual() nodes = [] root_node_id = 1 for elem in tree: comp = XmlHandler.get_label("composition", elem) num_nodes = int(XmlHandler.get_label("value", elem)) for node_id in xrange(0, num_nodes): node = self.__create_node(comp, node_id) #node = TopoNode(node_id) nodes.append(TopoNode(node)) return (nodes)
def __get_vars(self): """\brief get vars from xml template and save them into a dict {'name': value}, one for topology vars and one for compositions vars """ self.__tvars = {} var = self.dom.getElementsByTagName("vars")[0] for var_xml in var.getElementsByTagName("var"): v_name = XmlHandler.get_label("name", var_xml) v_value = XmlHandler.get_label("value", var_xml) v_topo = XmlHandler.get_label("topology", var_xml) if (v_topo is not None) and (v_topo.lower() == "yes"): self.__topovars[v_name] = v_value else: self.__compvars[v_name] = v_value
def __get_exporter_blocks(self, cur_comp): comp_dom = XmlHandler.get_DOM(cur_comp) exp_blocks = "" for block in comp_dom.getElementsByTagName("block"): if block.getAttribute('export') == "yes": exp_blocks += block.toxml() return exp_blocks
def __get_id(self): try: template_xml = self.dom.getElementsByTagName(self.__docname)[0] except: print "Template::get_id: error while getting template_docname", self.__docname return None return XmlHandler.get_label("id", template_xml)
def __get_datafiles(self): import base64 comp_dom = XmlHandler.get_DOM(self.__comprun_xml) for datafile in comp_dom.getElementsByTagName("datafile"): fname = datafile.getAttribute('filename') f = open(self.__datafile_dir +'/' + fname,'rb') fbin = base64.b64encode(f.read()) f.close() self.__datafiles.append( (fname,fbin) )
def __tree_plugin(self): tree = self.__get_tree() nodes, edges = [], [] root_node_id = 1 for elem in tree: comp = XmlHandler.get_label("composition", elem) if XmlHandler.get_label("type", elem) == "root": node = self.__create_node(comp, root_node_id) nodes.append(TopoNode(node)) elif XmlHandler.get_label("type", elem) == "leaf": num_nodes = int(XmlHandler.get_label("value", elem)) for node_id in xrange(root_node_id + 1, root_node_id + 1 + num_nodes): node = self.__create_node(comp, node_id) edge = self.__create_edge(node_id, root_node_id) nodes.append(TopoNode(node)) edges.append(Edge(edge)) return (nodes, edges)
def __init__(self, compdom): """\brief Initialize the class \param (\c dom) composition as DOM object """ self.__compdom = compdom self.__id = XmlHandler.get_label("id", self.__compdom) self.__intvars = {} self.__extvars = {} for v in [self.__intvars, self.__extvars]: for p in ['ip', 'port']: v[p] = [] self.__get_intvars() self.__get_extvars()
def rescue(self): """\brief substitute the exporter block and get the new xml running composition \return (\c RetVal) """ if self.__comprun_xml is None: return RetVal.CODE_FAILURE # delete the exporter blocks from the current running comp comprun_dom = XmlHandler.get_DOM(self.__comprun_xml) delete_dom = comprun_dom.createElement('delete') comprun_dom.childNodes[0].appendChild(delete_dom) for block in comprun_dom.getElementsByTagName("block"): if block.getAttribute('export') == "yes": delete_dom.appendChild(block) # add the exporter blocks from the new running comp add_dom = comprun_dom.createElement('add') comprun_dom.childNodes[0].appendChild(add_dom) comp_dom = XmlHandler.get_DOM(self.__comp_xml) for block in comp_dom.getElementsByTagName("block"): if block.getAttribute('export') == "yes": add_dom.appendChild(block) for label in ['general','install']: comprun_dom.childNodes[0].removeChild( comprun_dom.getElementsByTagName(label)[0] ) self.__comprun_xml = comprun_dom.toxml() print "----------------" print self.__comprun_xml print "----------------" self.__substitute_compvars() self.__substitute_vars(self.__intvars, self.__nodesrc) self.__substitute_vars(self.__extvars, self.__nodedst) print "**************" print self.__comprun_xml print "**************" return RetVal.CODE_SUCCESS
def __init__(self, topodom): self.__topodom = topodom self.__type = XmlHandler.get_label("type", self.__topodom) self.__nodes = [] self.__edges = []
def __init__(self, node): self.__node = node self.__id = XmlHandler.get_label("id", self.__node) self.__comp_id = XmlHandler.get_label("composition", self.__node)
def __init__(self, edge): self.__edge = edge self.__src = XmlHandler.get_label("src_id", self.__edge) self.__dst = XmlHandler.get_label("dst_id", self.__edge)
def __substitute_topovars(self, topovars): import re topo = self.__topodom.toxml() for (name, value) in topovars.iteritems(): topo = re.sub('"\s*@' + name + '\s*"', '"' + value + '"', topo) self.__topodom = XmlHandler.get_DOM(topo)
def dom(self): return XmlHandler.get_DOM(self.__template)