X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=csit%2Flibraries%2FTopologynew.py;h=d882e64e79f0b869b1c95632c22ea6d7ca6fd474;hb=db9ad6fa42252ac73e36d8dad73223bf624e8d28;hp=b3c6020f412443a567b3d3ef313c704777676e6c;hpb=9a1a86700fb341c0f5f0700c5024da7975fd60ec;p=integration%2Ftest.git diff --git a/csit/libraries/Topologynew.py b/csit/libraries/Topologynew.py index b3c6020f41..d882e64e79 100644 --- a/csit/libraries/Topologynew.py +++ b/csit/libraries/Topologynew.py @@ -9,26 +9,29 @@ import Common class Topologynew(object): - ''' + """ Topology class provide topology database and provide many method to get property of topology. node_boilerplate = {u'type': u'MD_SAL', u'id': u'openflow:%d'} - ''' + """ + topo_nodes_db = [ [], - [{u'type': u'MD_SAL', u'id': u'openflow:1'}], - [{u'type': u'MD_SAL', u'id': u'openflow:1'}, - {u'type': u'MD_SAL', u'id': u'openflow:2'}, - {u'type': u'MD_SAL', u'id': u'openflow:3'}] + [{"type": "MD_SAL", "id": "openflow:1"}], + [ + {"type": "MD_SAL", "id": "openflow:1"}, + {"type": "MD_SAL", "id": "openflow:2"}, + {"type": "MD_SAL", "id": "openflow:3"}, + ], ] def __init__(self): self.builtin = BuiltIn() def get_nodes_from_topology(self, topo_level): - ''' + """ get nodes from topology database by topology tree level - ''' + """ if isinstance(topo_level, str) or isinstance(topo_level, unicode): if topo_level.isdigit(): topo_level = int(topo_level) @@ -45,14 +48,14 @@ class Topologynew(object): return None def get_nodes_from_tree_topo(self, topo, exceptroot="0"): - ''' + """ This function generates a dictionary that contains type and id of each node. It follows tree level topology. @parameter topo: either an interer (in this case, depth is set and fanout will be 2) or a string in format of "(a,b)" (a and b are integers and they stands for depth and fanout respectively) @return array of dicitonary objects that contains info about each node - ''' + """ depth = 0 fanout = 2 if isinstance(topo, str) or isinstance(topo, unicode): @@ -63,45 +66,47 @@ class Topologynew(object): depth = t[0] fanout = t[1] else: - return None # topology consists of two parameters: depth and fanout + return None # topology consists of two parameters: depth and fanout elif isinstance(topo, int): depth = topo else: - return None # topo parameter is not given in a desired way + return None # topo parameter is not given in a desired way num_nodes = Common.num_of_nodes(depth, fanout) nodelist = [] for i in xrange(1, num_nodes + 1): - temp = {"id": "00:00:00:00:00:00:00:%s" % format(i, '02x'), "type": "OF"} + temp = {"id": "00:00:00:00:00:00:00:%s" % format(i, "02x"), "type": "OF"} nodelist.append(temp) if int(exceptroot): del nodelist[0] return nodelist def get_ids_of_leaf_nodes(self, fanout, depth): - ''' + """ For a tree structure, it numerates leaf nodes by following depth-first strategy @parameter fanout: fanout of tree @parameter depth: total depth of a tree @return leafnodes: list of ids of leaf nodes - ''' + """ leafnodes = [] self._enumerate_nodes(0, 1, 1, fanout, depth - 1, leafnodes) return leafnodes - def _enumerate_nodes(self, currentdepth, nodeid, currentbranch, fanout, depth, leafnodes): + def _enumerate_nodes( + self, currentdepth, nodeid, currentbranch, fanout, depth, leafnodes + ): if currentdepth == depth: - leafnodes.append("00:00:00:00:00:00:00:%s" % format(nodeid, '02x')) + leafnodes.append("00:00:00:00:00:00:00:%s" % format(nodeid, "02x")) return 1 nodes = 1 for i in xrange(1, fanout + 1): - nodes += self._enumerate_nodes(currentdepth + 1, nodeid + nodes, i, fanout, depth, leafnodes) + nodes += self._enumerate_nodes( + currentdepth + 1, nodeid + nodes, i, fanout, depth, leafnodes + ) return nodes -if __name__ == '__main__': + +if __name__ == "__main__": topologynew = Topologynew() - # print topologynew.get_nodes_from_tree_topo(2) - # print topologynew.get_nodes_from_tree_topo('2') - print topologynew.get_nodes_from_tree_topo('(2,3)') - # print topologynew.get_ids_of_leaf_nodes(2,2 )#, depth) + print(topologynew.get_nodes_from_tree_topo("(2,3)"))