I don't understand how this tool gives such unhelpful error messages. It's not
supposed to be a guessing game; it should point straight at where the problem
is. Running this code with POX using the --verbose option gives this:
[pox]$ ./pox.py --verbose tst
POX 0.3.0 (dart) / Copyright 2011-2014 James McCauley, et al.
Error executing tst.launch:
Traceback (most recent call last):
File "/Users/murphy/tmp/pox/pox/boot.py", line 243, in _do_launch
if f(**params) is False:
File "/Users/murphy/tmp/pox/ext/tst.py", line 27, in launch
MyCache = VideoCache('IDEALCACHE')
TypeError: __init__() takes exactly 3 arguments (2 given)
Parameters for tst:
None.
.. which clearly indicates the problem is with calling the __init__() for
VideoCache on line 27.
(Which is a problem because while your VideoCache class takes a connection and
a transparent argument -- apparently copied from l2_learning -- you're passing
in a single string.)
-- Murphy
On Apr 29, 2014, at 12:01 PM, kofi adu <[email protected]> wrote:
> Hi Murphy
>
> i am trying to run my program and it gives me this prompt. Is there any help?
> thanks
>
> i get this error
> typeerror-init-takes-exactly-3-arguments-2-given
>
>
>
> # class
> class VideoCache (object):
>
>
>
> # Constructor of the class
> def __init__(self, connection, transparent):
> # track the connection to the switch to send messages
> self.connection = connection
> self.transparent = transparent
>
> # Add listener events to handle connection events from OpenFlow switch
> connection.addListeners(self)
> log.debug("Initializing VideoCache, transparent=%s",
> str(self.transparent))
>
> # Turn on Nicira packet_ins.
> # Nicira extensions to support openFlow 1.0
> msg = nx.nx_packet_in_format()
> event.connection.send(msg)
>
> # Turn on ability to specify table in flow_mods
> msg = nx.nx_flow_mod_table_id()
> event.connection.send(msg)
>
>
>
> the launch function below
>
> def launch ():
>
> # create new class object
> MyCache = VideoCache('IDEALCACHE')
>
> # add this class into the core.
> core.register("cache", MyCache)
>
>
> log.info("Video cache is running.")
>
>
>