2017-04-20 10 views
0

を定義I取得するには、次のエラー:トレースバック(最新の呼び出しの最後)RYUソフトウェアでエラーがネットワーク

トレースバック(最後の最新の呼び出し):

ファイル "./ryuLinearTopo.py"、6行目、

ファイル "./ryuLinearTopo.py"、ライン32、LinearTopoで

SimpleTestの()

クラスLinearTopo(TOPO)で

ファイル "./ryuLinearTopo.py"、ライン21、SimpleTestの中

トポ= LinearTopo(K = 4)

NameError:グローバル名が 'LinearTopo' が定義されていない

私は実行次のコード:

#!/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 LinearTopo(Topo): 



    def __init__(self, k=2, **opts): 

     super(LinearTopo, self).__init__(**opts) 

     self.k = k 

     lastSwitch = None 

     for i in irange(1, k): 

      host = self.addHost('h%s' % i) 

      switch = self.addSwitch('s%s' % i) 

      self.addLink(host, switch) 

      if lastSwitch: 

       self.addLink(switch, lastSwitch) 

      lastSwitch = switch 



    def simpleTest(): 

     topo = LinearTopo(k=4) 

     net = Mininet(topo) 

     net.start() 

     print "Dumping host connections" 

     dumpNodeConnections(net.hosts) 

     print "Testing network connectivity" 

     net.pingAll() 

     net.stop() 

    if __name__ == '__main__': 

# Tell mininet to print useful information 

     setLogLevel('info') 

     simpleTest() 

答えて

0

あなたは識別に問題があります。コードでは、すべてのメソッドがLinearTopoクラス内で定義されています。あなたはこのようなクラスの範囲外にそれらを定義したい:

#!/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 LinearTopo(Topo): 
    def __init__(self, k=2, **opts): 
     super(LinearTopo, self).__init__(**opts) 
     self.k = k 
     lastSwitch = None 
     for i in irange(1, k): 
      host = self.addHost('h%s' % i) 
      switch = self.addSwitch('s%s' % i) 
      self.addLink(host, switch) 
      if lastSwitch: 
       self.addLink(switch, lastSwitch) 
      lastSwitch = switch 

def simpleTest(): 
    topo = LinearTopo(k=4) 
    net = Mininet(topo) 
    net.start() 

    print "Dumping host connections" 
    dumpNodeConnections(net.hosts) 

    print "Testing network connectivity" 
    net.pingAll() 

    net.stop() 

if __name__ == '__main__': 
    # Tell mininet to print useful information 
    simpleTest() 
    setLogLevel('info') 

それは厳密にmininet関連する問題であるとして、この質問は、mininet、ない龍をタグ付けされている必要があります。

関連する問題