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 <kofiad...@yahoo.com> 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.") > > >