TypeError: __ init __ () received an unexpected keyword argument 'delay'

I get a TypeError in the following python program where the constructor is called. If I remove the delay argument, I get the same error with "bw". I can not understand the error. Please, help.

I am trying to create a network topology using python.

#!/usr/bin/python from mininet.topo import Topo from mininet.net import Mininet from mininet.util import irange,dumpNodeConnections from mininet.log import setLogLevel class CustomTopo(Topo): def __init__(self, linkopts1, linkopts2, linkopts3, fanout=2, **opts): # Initialize topology and default options Topo.__init__(self, **opts) # Add your logic here ... switch=self.addSwitch('c1') self.linkopts1=linkopts1 self.linkopts2=linkopts2 self.linkopts3=linkopts3 self.fanout=fanout n=0 for i in irange(1,fanout): s=self.addSwitch('a%s' % i) self.addLink(switch,s,**linkopts1) if i==1: n=0 else: n=1 for j in irange(1,fanout): if n==0: sw=self.addSwitch('e%s' % j) #To generate labels e1, e2, e3 and e4: else: #if n=0, edge switches e1 and e2 are added to a1 sw=self.addSwitch('e%s' % (j+2)) #if n=1, edge switched e3 and e4 are added to a2 self.addLink(s,sw,**linkopts2) for k in irange(1,fanout): if ((j==1)&(n==0)): host=self.addHost('h%s' % k) #For edge switch e1, j=1,n=0. End-hosts are h1 and h2. elif ((j==2)&(n==0)): host=self.addHost('h%s' % (k+2)) #For edge switch e2, j=2,n=0. End-hosts are h3 and h4. elif ((j==1)&(n==1)): host=self.addHost('h%s' % (k+4)) #For edge switch e3, j=1,n=1. End-hosts are h5 and h6. elif ((j==2)&(n==1)): host=self.addHost('h%s' % (k+6)) #For edge switch e4, j=2,n=1. End-hosts are h7 and h8. self.addLink(sw,host,**linkopts3) def treeTest(): linkopts1=dict(bw=10, delay='5ms') linkopts2=dict(bw=10, delay='5ms') linkopts3=dict(bw=10, delay='5ms') topo=CustomTopo(linkopts1,linkopts2,linkopts3,fanout=2) net=Mininet(topo) net.start() print "Dumping node connections" dumpNodeConnections(net.hosts) print "Testing network connectivity" net.pingAll() net.stop() if __name__=='__main__': setLogLevel('info') treeTest() topos = { 'custom': ( lambda: CustomTopo() ) } 

The error I am getting is:

 Traceback (most recent call last): File "CustomTopo.py", line 70, in <module> treeTest() File "CustomTopo.py", line 60, in treeTest net=Mininet(topo) File "/usr/local/lib/python2.7/dist-packages/mininet-2.1.0-py2.7.egg/mininet/net.py", line 164, in __init__ self.build() File "/usr/local/lib/python2.7/dist-packages/mininet-2.1.0-py2.7.egg/mininet/net.py", line 357, in build self.buildFromTopo( self.topo ) File "/usr/local/lib/python2.7/dist-packages/mininet-2.1.0-py2.7.egg/mininet/net.py", line 344, in buildFromTopo self.addLink( src, dst, srcPort, dstPort, **params ) File "/usr/local/lib/python2.7/dist-packages/mininet-2.1.0-py2.7.egg/mininet/net.py", line 287, in addLink return cls( node1, node2, **defaults ) TypeError: __init__() got an unexpected keyword argument 'delay' 
+6
source share
2 answers

Remember to set the communication type as tc.

Specify it in the script as shown below:

 net = Mininet(topo=topo, link=TCLink) 

Remember to import TCLink into your python script:

 from mininet.link import TCLink 

If instead you want to call mininet from the command line, then set the -link option as follows:

 sudo mn --custom custom.py --topo customtopo --link tc 
+15
source

Either in mininet, or I suspect that OpenVswitch passes one of your linkopts with bw and delays as keyword arguments. However, this object does not expect the keyword parameters that you are using. Perhaps you have a version mismatch between mininet and openvswitch? I see bw and the delay specified in the current example, but I don't have domain experience to find out if they are old links or you have old libraries.

Unfortunately, when testing your fragment, more settings are required than I have time. I tried just "apt-get openvswitch-controller python-openvswitch", but I could not start it.

0
source

Source: https://habr.com/ru/post/970590/


All Articles