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<https://github.com/hip2b2/poxstuff/blob/master/flow_stats.py> and
> because I did not have of_json.py, I got it from 
> here<https://github.com/CPqD/RouteFlow/blob/master/pox/pox/openflow/of_json.py>.
>  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
>>
>
>
>

Reply via email to