2017-04-20 18 views
0

을 정의 I 얻을 다음과 같은 오류 :역 추적 (가장 최근 통화 마지막) RYU 소프트웨어에 오류가 네트워크

역 추적 (마지막으로 가장 최근 통화) :

파일 "./ryuLinearTopo.py", 라인 6,

파일 "./ryuLinearTopo.py", 라인 (32), LinearTopo에서

simpleTest()

:

클래스 LinearTopo (토포)에서

파일 "./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 관련 질문한다.