Ошибка трассировки (последний вызов был последним) в программно-определяемой сети RYU

Я получаю следующую ошибку:

Traceback (последний вызов был последним):

Файл "./ryuLinearTopo.py", строка 6, в

Класс LinearTopo (Topo):

Файл "./ryuLinearTopo.py", строка 32, в LinearTopo

SimpleTest ()

Файл "./ryuLinearTopo.py", строка 21, в simpleTest

topo = 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()

1 ответ

У вас проблемы с идентификацией. В вашем коде все методы определены внутри вашего класса 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')

Этот вопрос должен был быть помечен как мининет, а не как Рю, так как это строго вопрос, связанный с мининетом.

Другие вопросы по тегам