I think a fair number of people have versions of POX from the OpenFlow Tutorial
VM and stuff and haven't updated them. I guess your suggestion would at least
help people who have updated but are stuck on an old branch not realizing there
are newer ones even though it's mentioned in the troubleshooting section of the
FAQ.
I do sort of hate to put this sort of meta stuff into the repository, but it
might be worth it. Right now the branch name/version is in the repository. I
guess this would just be updating that to also keep whether it's the current
active, most recent release, or old release. For active or current, just
mention it in the up log message. For old release, log a warning.
-- Murphy
On Jun 26, 2013, at 1:55 PM, Peter Peresini wrote:
> Hi Murphy,
> over the course of time I see a lot of "using old version/branch of POX"
> replies. Maybe it could be solved by adding
> log.warning("Using old git branch, for better support try updating to xyz")
> to the pox.core of all old branches. What do you thing?
>
>
> On Wed, Jun 26, 2013 at 1:33 PM, Murphy McCauley <[email protected]>
> wrote:
> You're using a very old version/branch of POX. See the manual for more info
> on this. You should really update to at least the current version of the
> betta branch.
>
> Sidenote: it should be a simple modification to remove the dependency on
> of_json -- it's only used to print the stuff out in JSON instead of its usual
> (more verbose) string formatting.
>
> -- Murphy
>
> On Jun 26, 2013, at 8:23 AM, nibble nibble wrote:
>
>> Thanks,
>>
>> I want to query switches every few seconds. and I found the script to get
>> the statics from here and because I did not have of_json.py, I got it from
>> here. Now I am getting the error:
>>
>> from pox.openflow.of_json import *
>> File "/home/mininet/pox/pox/openflow/of_json.py", line 25, in <module>
>> from pox.lib.util import fields_of,is_scalar
>> ImportError: cannot import name fields_of
>>
>>
>> Which I do not have any idea what is wrong with pox?
>>
>> Thanks,
>> Nibble
>>
>>
>> On Tue, Jun 25, 2013 at 6:54 PM, Murphy McCauley <[email protected]>
>> wrote:
>>
>> On Jun 25, 2013, at 3:28 PM, nibble nibble wrote:
>>
>>> Hi,
>>>
>>> I want to send a message from Pox controller to all the switches and ask
>>> them to send back their flow table's Statics. I found a script to do it.
>>>
>>> from pox.core import core
>>>
>>> #from pox.lib.util import dpid_to_str
>>>
>>> log = core.getLogger()
>>>
>>> class MyComponent (object):
>>> def __init__ (self):
>>> core.openflow.addListeners(self)
>>>
>>> def _handle_ConnectionUp (self, event):
>>> log.debug("Switch %s has come up.", dpid_to_str(event.dpid))
>>>
>>> def launch ():
>>> core.registerNew(MyComponent)
>>> # core.registerNew(openlow_connections)
>>
>> What's the point of the MyComponent class here? It doesn't do anything but
>> print out when switches connect (which the OpenFlow component already does).
>>
>>> launch()
>>
>> You shouldn't call launch() directly. It will be called automatically when
>> POX loads the component.
>>
>>> # Listen for flow stats
>>> core.openflow.addListenerByName("FlowStatsReceived", handle_flow_stats)
>>>
>>> # Now actually request flow stats from all switches
>>> core.registerNew(core.openflow._connections.values())
>>> for con in core.openflow._connections.keys(): # make this
>>> _connections.keys() for pre-betta
>>> con.send(of.ofp_stats_request(body=of.ofp_flow_stats_request()))
>>
>> The example you found from the POX manual wiki is for running at the
>> interactive prompt (with the "py" component), not for direct inclusion in a
>> component. The way you have it here will try to execute it when the module
>> is loaded. Even if this worked (which I won't swear to), it would be
>> useless because no switches will have connected yet. When do you want to
>> query switches? When they connect? Every few seconds? At some other time?
>> You need to figure that out and run this code at the correct time (e.g., in
>> response to some event).
>>
>>> But I am getting the following error:
>>>
>>> core.registerNew(core.openflow._connections.values())
>>
>> It appears you or someone else added this line to the example code from the
>> wiki. It's causing an exception because it doesn't make any sense.
>> core.registerNew() creates a new instance of a class and registers it on
>> core. core.openflow._connections.values() isn't a class, and you wouldn't
>> want to register it on core.
>>
>>
>> Try looking at the "Statistics Collector Example" on the POX wiki in the
>> "Third-Party" section. It queries connected switches every few seconds.
>>
>> -- Murphy
>>
>
>