Ah, perhaps I misunderstood your original question. The links ws call will only return links between switches, so if you have a single switch there will be nothing to see. For a full-fledged directional host-switch topology (which will not include the controller) it is a little more work. You will have to get the active locations of every host and map them to the datapath ids of the switches, nothing you can't do a hundred lines of python.
-Reid On Thu, 15 Oct 2009 12:47:34 -0700, "Pradeep Padala" <[email protected]> wrote: > I just found it, but for me the call returns nothing. I am running nox > as follows. > > sudo ./nox_core -v -i ptcp:2525 pyswitch discoveryws webservice > > and there is only one openflow switch connecting two hosts. > > Anything I am missing here? > > Pradeep > >> -----Original Message----- >> From: [email protected] [mailto:[email protected]] >> Sent: Thursday, October 15, 2009 12:39 PM >> To: Pradeep Padala >> Cc: Martin Casado; Natasha Gude; [email protected] >> Subject: Re: [nox-dev] pytopology usage question >> >> Hi Pradeep, >> >> IIRC, at one point there was a webservice call > (/ws.v1/topology/links) >> which is part of the discovery component that may be helpful to you. > It >> returns a list of dictionaries of every link, with keys for datapaths > and >> ports, e.g.: >> [{"port2": 4, "dpid1": 1234567890, "dpid2": 9876543210, "port1": 0}, > ...] >> I have been able to use this and a few other calls to get a decent map > of >> the system. >> >> -Reid >> >> On Thu, 15 Oct 2009 12:07:36 -0700, Martin Casado <[email protected]> >> wrote: >> > Alternatively, you can just register for link-events and keep track > of >> > the topology yourself. >> > >> >> datapathids are IDs of the Openflow switches that have joined. > These >> >> IDs are included in datapath_join events, which you can register > for >> >> using self.register_for_datapath_join(callback) in any python > component. >> >> >> >> Unfortunately we currently don't have a way for dumping the entire >> >> topology. >> >> >> >> Natasha >> >> >> >> On Oct 15, 2009, at 11:34 AM, Pradeep Padala wrote: >> >> >> >>> Hi Natasha, >> >>> >> >>> I can use this, but I don't know the host ids. When I try to use 0 > and >> >>> 1, I just get empty list. How are these host ids related to the > output >> >>> produced by dpctl? >> >>> >> >>> Is there a simple way to dump the complete topology into a data >> >>> structure? >> >>> >> >>> Thanks, >> >>> Pradeep >> >>> >> >>>> -----Original Message----- >> >>>> From: Natasha Gude [mailto:[email protected]] >> >>>> Sent: Wednesday, October 14, 2009 6:22 PM >> >>>> To: Pradeep Padala >> >>>> Cc: Martin Casado; [email protected] >> >>>> Subject: Re: [nox-dev] make check fails "Import by filename is > not >> >>>> supported" >> >>>> >> >>>> Hi Pradeep, >> >>>> >> >>>> pytopology has a method get_outlinks thats takes a source > datapathid >> >>>> and destination datapathid, and returns a list of all of the port >> >>>> pairs that are connected. This is defined in pytopology.i >> >>>> >> >>>> For example: >> >>>> >> >>>> if datapath 1's ports 5 and 6 are connected to datapath 2's ports > 3 >> >>>> and 4 respectively, you would have the following. >> >>>> >> >>>> from nox.lib.netinet.netinet import create_datapathid_from_host >> >>>> >> >>>> dp1 = create_datapathid_from_host(1) >> >>>> dp2 = create_datapathid_from_host(2) >> >>>> ports = pytop.get_outlinks(dp1, dp2) >> >>>> >> >>>> where ports would be a list of PyLinkPorts of length 2, where >> >>>> PyLinkPorts is described in that pytopology.i file. Particularly > it >> >>>> would be the equivalent of [ (5, 3), (6, 4) ] , however it's > actually >> >>>> a SWIG-ed out list, which needs to be iterated through using > begin(), >> >>>> incr(), and end(). >> >>>> >> >>>> Hope that helps, >> >>>> Natasha >> >>>> >> >>>> On Oct 14, 2009, at 5:56 PM, Pradeep Padala wrote: >> >>>> >> >>>>> That works for me. I also looked at miscws/noxinfows.py, which > seems >> >>>>> to >> >>>>> do some of the things I wanted. >> >>>>> >> >>>>> I am trying to modify noxinfows.py to return topology. I got a >> >>> handle >> >>>>> for pytopology with >> >>>>> >> >>>>> self.pytop = self.resolve(pytopology) >> >>>>> >> >>>>> Later, when the GET request comes, I am calling the function I > wrote >> >>>>> below >> >>>>> >> >>>>> def _get_nox_topology(self, request, arg): >> >>>>> try: >> >>>>> return simplejson.dumps(self.pytop.XXXXXXXXXXXXXXXXX) >> >>>>> except Exception, e: >> >>>>> return self.err(Failure(), request, "_get_topology", >> >>>>> "Could not retrieve topology") >> >>>>> >> >>>>> Now, I don't know how to access the pytopology functions >> >>> (XXXXXXXXXXXX >> >>>>> part). For example, the get_outlinks() function takes two > arguments, >> >>>>> but >> >>>>> in the C++ file, I didn't find any comments on what to pass > here. >> >>>>> >> >>>>> In the manual, there are just a few notes about the topology > module, >> >>>>> grepping through the whole source tree, I didn't find any > examples >> >>> of >> >>>>> using pytopology (may be I am missing something). >> >>>>> >> >>>>> Any help would be great. >> >>>>> >> >>>>> Thanks, >> >>>>> Pradeep >> >> >> >> >> >> _______________________________________________ >> >> nox-dev mailing list >> >> [email protected] >> >> http://noxrepo.org/mailman/listinfo/nox-dev_noxrepo.org >> > >> > >> > _______________________________________________ >> > nox-dev mailing list >> > [email protected] >> > http://noxrepo.org/mailman/listinfo/nox-dev_noxrepo.org _______________________________________________ nox-dev mailing list [email protected] http://noxrepo.org/mailman/listinfo/nox-dev_noxrepo.org
