def create_topology(): net = DCNetwork(monitor=False, enable_learning=True) dc1 = net.addDatacenter("dc1") # add OpenStack-like APIs to the emulated DC api1 = OpenstackApiEndpoint("0.0.0.0", 6001) api1.connect_datacenter(dc1) api1.start() api1.connect_dc_network(net) # add the command line interface endpoint to the emulated DC (REST API) rapi1 = RestApiEndpoint("0.0.0.0", 5001) rapi1.connectDCNetwork(net) rapi1.connectDatacenter(dc1) rapi1.start() Serv = net.addDocker('Serv', ip='10.0.0.200', dimage=image, dcmd="sh ./server.sh") GI = net.addDocker('GI', ip='10.0.0.201', dimage=image, dcmd="sh ./gi.sh") GF1 = net.addDocker('GF1', ip='10.0.0.202', dimage=image, dcmd="sh ./gf1.sh") GF2 = net.addDocker('GF2', ip='10.0.0.203', dimage=image, dcmd="sh ./gf2.sh") GF3 = net.addDocker('GF3', ip='10.0.0.204', dimage=image, dcmd="sh ./gf3.sh") s1 = net.addSwitch('s1') s2 = net.addSwitch('s2') net.addLink(Serv, s1) net.addLink(GI, s1) net.addLink(s1, s2, cls=TCLink, delay='100ms', bw=1) net.addLink(GF1, s2) net.addLink(GF2, s2) net.addLink(GF3, s2) net.addLink(dc1, s2) net.start() net.ping([GF1, GI]) net.ping([GF2, GI]) net.ping([GF3, GI]) net.ping([Serv, GI]) net.CLI() net.stop()
def create_topology(): net = DCNetwork(monitor=False, enable_learning=True) dc1 = net.addDatacenter("dc1") # add OpenStack-like APIs to the emulated DC api1 = OpenstackApiEndpoint("0.0.0.0", 6001) api1.connect_datacenter(dc1) api1.start() api1.connect_dc_network(net) # add the command line interface endpoint to the emulated DC (REST API) rapi1 = RestApiEndpoint("0.0.0.0", 5001) rapi1.connectDCNetwork(net) rapi1.connectDatacenter(dc1) rapi1.start() s1 = net.addSwitch('s1') d1 = net.addDocker('d1', ip='10.100.0.1', dimage="ubuntu:trusty") d2 = net.addDocker('d2', ip='10.100.0.2', dimage="ubuntu:trusty") net.addLink(s1, d1) net.addLink(s1, d2) net.addLink(s1, dc1) net.start() net.CLI() # when the user types exit in the CLI, we stop the emulator net.stop()
def create_topology(): net = DCNetwork(monitor=False, enable_learning=True) dc1 = net.addDatacenter("dc1") # add OpenStack-like APIs to the emulated DC api1 = OpenstackApiEndpoint("0.0.0.0", 6001) api1.connect_datacenter(dc1) api1.start() api1.connect_dc_network(net) # add the command line interface endpoint to the emulated DC (REST API) rapi1 = RestApiEndpoint("0.0.0.0", 5001) rapi1.connectDCNetwork(net) rapi1.connectDatacenter(dc1) rapi1.start() s1 = net.addSwitch('s1') h1 = net.addHost('h1') h2 = net.addDocker('h2',dimage='host:server') net.addLink(h1, s1, delay='20ms') net.addLink(h2, s1, delay='20ms') net.addLink(dc1, s1, delay='20ms') net.start() net.CLI() # when the user types exit in the CLI, we stop the emulator net.stop()
def create_topology(httpmode=False): net = DCNetwork(monitor=False, enable_learning=True) DC = net.addDatacenter("DC") # add OpenStack-like APIs to the emulated DC api1 = OpenstackApiEndpoint("0.0.0.0", 6001) api1.connect_datacenter(DC) api1.start() api1.connect_dc_network(net) # add the command line interface endpoint to the emulated DC (REST API) rapi1 = RestApiEndpoint("0.0.0.0", 5001) rapi1.connectDCNetwork(net) rapi1.connectDatacenter(DC) rapi1.start() s1 = net.addSwitch('s1') s2 = net.addSwitch('s2') s3 = net.addSwitch('s3') s4 = net.addSwitch('s4') S = net.addDocker("S", dimage="host:server") GI = net.addDocker("GI", dimage="host:gateway") GFA = createHost(httpmode, net, 'GFA') GFB = createHost(httpmode, net, 'GFB') GFC = createHost(httpmode, net, 'GFC') net.addLink(S, s1) net.addLink(GI, s2) net.addLink(GFA, s3) net.addLink(GFB, s3) net.addLink(GFC, s4) net.addLink(s1, s2) net.addLink(s2, s3) net.addLink(s2, s4) net.addLink(DC, s2) #Do not remove net.start() net.CLI() # when the user types exit in the CLI, we stop the emulator net.stop()
class ApiBaseHeat(unittest.TestCase): """ Helper class to do basic test setups. s1 -- s2 -- s3 -- ... -- sN """ def __init__(self, *args, **kwargs): self.net = None self.api = [] self.s = [] # list of switches self.h = [] # list of hosts self.d = [] # list of docker containers self.dc = [] # list of data centers self.docker_cli = None super(ApiBaseHeat, self).__init__(*args, **kwargs) def createNet( self, nswitches=0, ndatacenter=0, nhosts=0, ndockers=0, autolinkswitches=False, controller=Controller, **kwargs): """ Creates a Mininet instance and automatically adds some nodes to it. Attention, we should always use Mininet's default controller for our tests. Only use other controllers if you want to test specific controller functionality. """ self.net = DCNetwork(controller=controller, **kwargs) for i in range(0, ndatacenter): self.api.append(OpenstackApiEndpoint("0.0.0.0", 5000+i)) # add some switches # start from s1 because ovs does not like to have dpid = 0 # and switch name-number is being used by mininet to set the dpid for i in range(1, nswitches+1): self.s.append(self.net.addSwitch('s%d' % i)) # if specified, chain all switches if autolinkswitches: for i in range(0, len(self.s) - 1): self.net.addLink(self.s[i], self.s[i + 1]) # add some data centers for i in range(0, ndatacenter): self.dc.append( self.net.addDatacenter( 'dc%d' % i, metadata={"unittest_dc": i})) # connect data centers to the endpoint for i in range(0, ndatacenter): self.api[i].connect_datacenter(self.dc[i]) self.api[i].connect_dc_network(self.net) # add some hosts for i in range(0, nhosts): self.h.append(self.net.addHost('h%d' % i)) # add some dockers for i in range(0, ndockers): self.d.append(self.net.addDocker('d%d' % i, dimage="ubuntu:trusty")) def startApi(self): for i in self.api: i.start() def stopApi(self): for i in self.api: i.stop() def startNet(self): self.net.start() def stopNet(self): self.net.stop() def getDockerCli(self): """ Helper to interact with local docker instance. """ if self.docker_cli is None: self.docker_cli = docker.Client( base_url='unix://var/run/docker.sock') return self.docker_cli def getContainernetContainers(self): """ List the containers managed by containernet """ return self.getDockerCli().containers(filters={"label": "com.containernet"}) @staticmethod def setUp(): pass def tearDown(self): print('->>>>>>> tear everything down ->>>>>>>>>>>>>>>') self.stopApi() # stop all flask threads self.stopNet() # stop some mininet and containernet stuff cleanup() # make sure that all pending docker containers are killed with open(os.devnull, 'w') as devnull: # kill a possibly running docker process that blocks the open ports subprocess.call("kill $(netstat -npl | grep '5000' | grep -o -e'[0-9]\+/docker' | grep -o -e '[0-9]\+')", stdout=devnull, stderr=devnull, shell=True) with open(os.devnull, 'w') as devnull: subprocess.call( "sudo docker rm -f $(sudo docker ps --filter 'label=com.containernet' -a -q)", stdout=devnull, stderr=devnull, shell=True)
from mininet.link import TCLink from mininet.log import info, setLogLevel import logging from emuvim.dcemulator.net import DCNetwork from emuvim.api.rest.rest_api_endpoint import RestApiEndpoint from emuvim.api.tango import TangoLLCMEndpoint import time setLogLevel('info') net = DCNetwork(monitor=False, enable_learning=True) X = "krustylebot/repo:sdci_containernet" info('*** Adding docker containers using krustylebot/repo:sdci_containernet images\n') server = net.addDocker('server', ip='10.0.0.10', dimage=X, dcmd="sh -c 'cd /Projet-SDCI/docker && git pull && sh script_server.sh 10.0.0.10; tail -f /dev/null'") gwi1 = net.addDocker('gwi1', ip='10.0.0.11', dimage=X, dcmd="sh -c 'cd /Projet-SDCI/docker && git pull && sh script_gi.sh 10.0e.0.11 10.0.0.10 gwi1; tail -f /dev/null'") gwf1 = net.addDocker('gwf1', ip='10.0.0.12', dimage=X, dcmd="sh -c 'cd /Projet-SDCI/docker && git pull && sh script_gf.sh 10.0.0.12 10.0.0.11 gwf1 gwi1 300; tail -f /dev/null'") gwf2 = net.addDocker('gwf2', ip='10.0.0.13', dimage=X, dcmd="sh -c 'cd /Projet-SDCI/docker && git pull && sh script_gf.sh 10.0.0.13 10.0.0.11 gwf2 gwi1 300; tail -f /dev/null'") gwf3 = net.addDocker('gwf3', ip='10.0.0.14', dimage=X, dcmd="sh -c 'cd /Projet-SDCI/docker && git pull && sh script_gf.sh 10.0.0.14 10.0.0.11 gwf3 gwi1 300; tail -f /dev/null'") monitoring = net.addDocker('monitoring', ip='10.0.0.15', dimage=X, dcmd="sh -c 'cd /Projet-SDCI && git pull; cd Monitoring; sh monitoring.sh; tail -f /dev/null'") dc = net.addDatacenter("dc") info('*** Adding switches\n') s1 = net.addSwitch('s1') info('*** Creating links\n') net.addLink(server, s1, delay="20ms") net.addLink(gwi1, s1, delay="20ms")
class SimpleTestTopology(unittest.TestCase): """ Helper class to do basic test setups. s1 -- s2 -- s3 -- ... -- sN """ def __init__(self, *args, **kwargs): self.net = None self.s = [] # list of switches self.h = [] # list of hosts self.d = [] # list of docker containers self.dc = [] # list of data centers self.docker_cli = None super(SimpleTestTopology, self).__init__(*args, **kwargs) def createNet(self, nswitches=0, ndatacenter=0, nhosts=0, ndockers=0, autolinkswitches=False, controller=Controller, **kwargs): """ Creates a Mininet instance and automatically adds some nodes to it. Attention, we should always use Mininet's default controller for our tests. Only use other controllers if you want to test specific controller functionality. """ self.net = DCNetwork(controller=controller, **kwargs) # add some switches # start from s1 because ovs does not like to have dpid = 0 # and switch name-number is being used by mininet to set the dpid for i in range(1, nswitches + 1): self.s.append(self.net.addSwitch('s%d' % i)) # if specified, chain all switches if autolinkswitches: for i in range(0, len(self.s) - 1): self.net.addLink(self.s[i], self.s[i + 1]) # add some data centers for i in range(0, ndatacenter): self.dc.append( self.net.addDatacenter('datacenter%d' % i, metadata={"unittest_dc": i})) # add some hosts for i in range(0, nhosts): self.h.append(self.net.addHost('h%d' % i)) # add some dockers for i in range(0, ndockers): self.d.append(self.net.addDocker('d%d' % i, dimage="ubuntu:trusty")) def startNet(self): self.net.start() def stopNet(self): self.net.stop() def getDockerCli(self): """ Helper to interact with local docker instance. """ if self.docker_cli is None: self.docker_cli = docker.APIClient( base_url='unix://var/run/docker.sock') return self.docker_cli def getContainernetContainers(self): """ List the containers managed by containernet """ return self.getDockerCli().containers( filters={"label": "com.containernet"}) @staticmethod def setUp(): pass @staticmethod def tearDown(): cleanup() # make sure that all pending docker containers are killed with open(os.devnull, 'w') as devnull: subprocess.call( "sudo docker rm -f $(sudo docker ps --filter 'label=com.containernet' -a -q)", stdout=devnull, stderr=devnull, shell=True)
class SimpleTestTopology(unittest.TestCase): """ Helper class to do basic test setups. s1 -- s2 -- s3 -- ... -- sN """ def __init__(self, *args, **kwargs): self.net = None self.s = [] # list of switches self.h = [] # list of hosts self.d = [] # list of docker containers self.dc = [] # list of data centers self.docker_cli = None super(SimpleTestTopology, self).__init__(*args, **kwargs) def createNet( self, nswitches=0, ndatacenter=0, nhosts=0, ndockers=0, autolinkswitches=False, controller=Controller, **kwargs): """ Creates a Mininet instance and automatically adds some nodes to it. Attention, we should always use Mininet's default controller for our tests. Only use other controllers if you want to test specific controller functionality. """ self.net = DCNetwork(controller=controller, **kwargs) # add some switches # start from s1 because ovs does not like to have dpid = 0 # and switch name-number is being used by mininet to set the dpid for i in range(1, nswitches+1): self.s.append(self.net.addSwitch('s%d' % i)) # if specified, chain all switches if autolinkswitches: for i in range(0, len(self.s) - 1): self.net.addLink(self.s[i], self.s[i + 1]) # add some data centers for i in range(0, ndatacenter): self.dc.append( self.net.addDatacenter( 'datacenter%d' % i, metadata={"unittest_dc": i})) # add some hosts for i in range(0, nhosts): self.h.append(self.net.addHost('h%d' % i)) # add some dockers for i in range(0, ndockers): self.d.append(self.net.addDocker('d%d' % i, dimage="ubuntu:trusty")) def startNet(self): self.net.start() def stopNet(self): self.net.stop() def getDockerCli(self): """ Helper to interact with local docker instance. """ if self.docker_cli is None: self.docker_cli = docker.Client( base_url='unix://var/run/docker.sock') return self.docker_cli def getContainernetContainers(self): """ List the containers managed by containernet """ return self.getDockerCli().containers(filters={"label": "com.containernet"}) @staticmethod def setUp(): pass @staticmethod def tearDown(): cleanup() # make sure that all pending docker containers are killed with open(os.devnull, 'w') as devnull: subprocess.call( "sudo docker rm -f $(sudo docker ps --filter 'label=com.containernet' -a -q)", stdout=devnull, stderr=devnull, shell=True)
dc1 = net.addDatacenter("dc1") api = OpenstackApiEndpoint("0.0.0.0", 6001) api.connect_datacenter(dc1) api.connect_dc_network(net) s1 = net.addSwitch('s1') zookeeper_ip = '10.0.0.96' kafka_ip = '10.0.0.97' mongo_ip = '10.0.0.98' nbi_ip = '10.0.0.99' ro_db_ip = '10.0.0.100' ro_ip = '10.0.0.101' lcm_ip = '10.0.0.102' d1 = net.addDocker('d1', dimage='ubuntu:trusty') VERSION = 'releasefive-daily' zookeeper = Zookeeper(net, zookeeper_ip) kafka = Kafka(net, kafka_ip, zookeeper_ip) mongo = Mongo(net, mongo_ip) nbi = NBI(net, nbi_ip, mongo_ip, kafka_ip) ro_db = Mysql(net, ro_db_ip) ro = RO(net, ro_ip, ro_db_ip, version=VERSION) lcm = LCM(net, lcm_ip, ro_ip, mongo_ip, kafka_ip) net.addLink(d1, s1) net.addLink(zookeeper.instance, s1) net.addLink(kafka.instance, s1) net.addLink(mongo.instance, s1)
class ApiBaseOpenStack(unittest.TestCase): """ Helper class to do basic test setups. s1 -- s2 -- s3 -- ... -- sN """ def __init__(self, *args, **kwargs): self.net = None self.api = [] self.s = [] # list of switches self.h = [] # list of hosts self.d = [] # list of docker containers self.dc = [] # list of data centers self.docker_cli = None super(ApiBaseOpenStack, self).__init__(*args, **kwargs) def createNet(self, nswitches=0, ndatacenter=0, nhosts=0, ndockers=0, autolinkswitches=False, controller=Controller, **kwargs): """ Creates a Mininet instance and automatically adds some nodes to it. Attention, we should always use Mininet's default controller for our tests. Only use other controllers if you want to test specific controller functionality. """ self.net = DCNetwork(controller=controller, **kwargs) for i in range(0, ndatacenter): self.api.append(OpenstackApiEndpoint("0.0.0.0", 15000 + i)) # add some switches # start from s1 because ovs does not like to have dpid = 0 # and switch name-number is being used by mininet to set the dpid for i in range(1, nswitches + 1): self.s.append(self.net.addSwitch('s%d' % i)) # if specified, chain all switches if autolinkswitches: for i in range(0, len(self.s) - 1): self.net.addLink(self.s[i], self.s[i + 1]) self.net.addLink(self.s[2], self.s[0]) # link switches s1, s2 and s3 # add some data centers for i in range(0, ndatacenter): self.dc.append( self.net.addDatacenter('dc%d' % i, metadata={"unittest_dc": i})) self.net.addLink(self.dc[0].switch, self.s[0]) # link switches dc0.s1 with s1 # connect data centers to the endpoint for i in range(0, ndatacenter): self.api[i].connect_datacenter(self.dc[i]) self.api[i].connect_dc_network(self.net) # add some hosts for i in range(0, nhosts): self.h.append(self.net.addHost('h%d' % i)) # add some dockers for i in range(0, ndockers): self.d.append(self.net.addDocker('d%d' % i, dimage="ubuntu:trusty")) def startApi(self): for i in self.api: i.start(wait_for_port=True) def stopApi(self): for i in self.api: i.manage.stop_floating_network() i.stop() def startNet(self): self.net.start() def stopNet(self): self.net.stop() def getDockerCli(self): """ Helper to interact with local docker instance. """ if self.docker_cli is None: self.docker_cli = docker.Client( base_url='unix://var/run/docker.sock') return self.docker_cli def getContainernetContainers(self): """ List the containers managed by containernet """ return self.getDockerCli().containers( filters={"label": "com.containernet"}) @staticmethod def setUp(): pass def tearDown(self): time.sleep(2) print('->>>>>>> tear everything down ->>>>>>>>>>>>>>>') self.stopApi() # stop all flask threads self.stopNet() # stop some mininet and containernet stuff cleanup() # make sure that all pending docker containers are killed with open( os.devnull, 'w' ) as devnull: # kill a possibly running docker process that blocks the open ports subprocess.call( "kill $(netstat -npl | grep '15000' | grep -o -e'[0-9]\+/docker' | grep -o -e '[0-9]\+')", stdout=devnull, stderr=devnull, shell=True) with open(os.devnull, 'w') as devnull: subprocess.call( "sudo docker rm -f $(sudo docker ps --filter 'label=com.containernet' -a -q)", stdout=devnull, stderr=devnull, shell=True) time.sleep(2)
def create_topology(): net = DCNetwork(monitor=False, enable_learning=True) info('*** Adding datacenters\n') dc1 = net.addDatacenter("dc1") dc2 = net.addDatacenter("dc2") # add OpenStack-like APIs to the emulated DC api1 = OpenstackApiEndpoint("0.0.0.0", 6001) api1.connect_datacenter(dc1) api1.connect_datacenter(dc2) api1.start() api1.connect_dc_network(net) # add the command line interface endpoint to the emulated DC (REST API) rapi1 = RestApiEndpoint("0.0.0.0", 5001) rapi1.connectDCNetwork(net) rapi1.connectDatacenter(dc1) rapi1.connectDatacenter(dc2) rapi1.start() # params SRV_PORT = 8080 info('*** Adding switches\n') sw1 = net.addSwitch('sw1') sw2 = net.addSwitch('sw2') info('*** Adding docker containers\n') server = net.addDocker( 'server', ip='10.100.0.10', dimage="alpine:4", dcmd= "node ./server.js --local_ip '127.0.0.1' --local_port 8080 --local_name 'srv' &" ) GW = net.addDocker('GW', ip='10.100.0.4', dimage="alpine:4") GF1 = net.addDocker('GF1', ip='10.100.0.1', dimage="alpine:4") GF2 = net.addDocker('GF2', ip='10.100.0.2', dimage="alpine:4") GF3 = net.addDocker('GF3', ip='10.100.0.3', dimage="alpine:4") net.addLink(server, sw1) net.addLink(GW, sw1) net.addLink(sw1, sw2) net.addLink(GF1, sw2) net.addLink(GF2, sw2) net.addLink(GF3, sw2) info('*** Starting network\n') net.start() time.sleep(5) # launch gateway GW info("//// Starting GW gateway\n") GW.cmd( "node ./gateway.js --local_ip '127.0.0.1' --local_port 9000 --local_name 'GW' --remote_ip '10.100.0.10' --remote_port 8080 --remote_name 'srv' &" ) info('//// started !\n') time.sleep(5) # launch gateways GFs info("//// Starting GF1 gateway\n") GF1.cmd( "node ./gateway.js --local_ip '127.0.0.1' --local_port 5000 --local_name 'GF1' --remote_ip '10.100.0.4' --remote_port 9000 --remote_name 'GW' &" ) info('//// started !\n') info("//// Starting GF2 gateway\n") GF2.cmd( "node ./gateway.js --local_ip '127.0.0.1' --local_port 5000 --local_name 'GF2' --remote_ip '10.100.0.4' --remote_port 9000 --remote_name 'GW' &" ) info('//// started !\n') info("//// Starting GF3 gateway\n") GF3.cmd( "node ./gateway.js --local_ip '127.0.0.1' --local_port 5000 --local_name 'GF3' --remote_ip '10.100.0.4' --remote_port 9000 --remote_name 'GW' &" ) info('//// started !\n') # launch devices info("//// Starting devices on GF1\n") GF1.cmd( "node ./device.js --local_ip '127.0.0.1' --local_port 5001 --local_name 'device-1' --remote_ip '127.0.0.1' --remote_port 5000 --remote_name 'GF1' --send_period 3 &" ) info('//// started !\n') info('*** Testing connectivity\n') net.ping([GW, GF1]) info('*** Running CLI\n') net.CLI() info('*** Stopping network\n') net.stop()
# add OpenStack-like APIs to the emulated DC api1 = OpenstackApiEndpoint("0.0.0.0", 6001) api1.connect_datacenter(dc1) api1.start() api1.connect_dc_network(net) # add the command line interface endpoint to the emulated DC (REST API) rapi1 = RestApiEndpoint("127.0.0.1", 5001) rapi1.connectDCNetwork(net) rapi1.connectDatacenter(dc1) rapi1.start() info('*** Adding controller\n') #net.addController('c0') info('*** Adding docker containers\n') srv = net.addDocker('srv', ip='10.0.0.30', dimage="server:latest") gwi = net.addDocker('gwi', ip='10.0.0.31', dimage="gwi:latest") gwf1 = net.addDocker('gwf1', ip='10.0.0.32', dimage="gwf:one") dev1 = net.addDocker('dev1', ip='10.0.0.33', dimage="dev:one") gwf2 = net.addDocker('gwf2', ip='10.0.0.34', dimage="gwf:two") dev2 = net.addDocker('dev2', ip='10.0.0.35', dimage="dev:two") gwf3 = net.addDocker('gwf3', ip='10.0.0.36', dimage="gwf:three") dev3 = net.addDocker('dev3', ip='10.0.0.37', dimage="dev:three") info('*** Adding switches\n') s1 = net.addSwitch('s1') s2 = net.addSwitch('s2') s3 = net.addSwitch('s3') s4 = net.addSwitch('s4') s5 = net.addSwitch('s5')
def create_topology(): net = DCNetwork(monitor=False, enable_learning=True) dc1 = net.addDatacenter("dc1") # add OpenStack-like APIs to the emulated DC api1 = OpenstackApiEndpoint("0.0.0.0", 6001) api1.connect_datacenter(dc1) api1.start() api1.connect_dc_network(net) # add the command line interface endpoint to the emulated DC (REST API) rapi1 = RestApiEndpoint("0.0.0.0", 5001) rapi1.connectDCNetwork(net) rapi1.connectDatacenter(dc1) rapi1.start() info('*** Adding docker containers\n') srv = net.addDocker('srv', ip='10.0.0.203', dimage="constancegay/projet_sdci:server") time.sleep(5) GI = net.addDocker('GI', ip='10.0.0.202', dimage="constancegay/projet_sdci:gateway", environment={ "loc_ip": "10.0.0.202", "loc_port": "8181", "loc_name": "GI", "rem_ip": "10.0.0.203", "rem_port": "8080", "rem_name": "srv" }) time.sleep(5) mon = net.addDocker('mon', ip='10.0.0.204', dimage="constancegay/projet_sdci:mon") # GFs gf1 = net.addDocker('GF1', ip='10.0.0.201', dimage="constancegay/projet_sdci:gateway", environment={ "loc_ip": "10.0.0.201", "loc_port": "8282", "loc_name": "GF1", "rem_ip": "10.0.0.202", "rem_port": "8181", "rem_name": "GI" }) gf2 = net.addDocker('GF2', ip='10.0.0.208', dimage="constancegay/projet_sdci:gateway", environment={ "loc_ip": "10.0.0.208", "loc_port": "9004", "loc_name": "GF2", "rem_ip": "10.0.0.202", "rem_port": "8181", "rem_name": "GI" }) gf3 = net.addDocker('GF3', ip='10.0.0.212', dimage="constancegay/projet_sdci:gateway", environment={ "loc_ip": "10.0.0.212", "loc_port": "9008", "loc_name": "GF3", "rem_ip": "10.0.0.202", "rem_port": "8181", "rem_name": "GI" }) time.sleep(5) # ZONE 1 devices dev1 = net.addDocker('dev1', ip='10.0.0.205', dimage="constancegay/projet_sdci:dev", environment={ "loc_ip": "10.0.0.205", "loc_port": "9001", "loc_name": "dev1", "rem_ip": "10.0.0.201", "rem_port": "8282", "rem_name": "GF1" }) dev2 = net.addDocker('dev2', ip='10.0.0.206', dimage="constancegay/projet_sdci:dev", environment={ "loc_ip": "10.0.0.206", "loc_port": "9002", "loc_name": "dev2", "rem_ip": "10.0.0.201", "rem_port": "8282", "rem_name": "GF1" }) dev3 = net.addDocker('dev3', ip='10.0.0.207', dimage="constancegay/projet_sdci:dev", environment={ "loc_ip": "10.0.0.207", "loc_port": "9003", "loc_name": "dev3", "rem_ip": "10.0.0.201", "rem_port": "8282", "rem_name": "GF1" }) # ZONE 2 devices dev4 = net.addDocker('dev4', ip='10.0.0.209', dimage="constancegay/projet_sdci:dev", environment={ "loc_ip": "10.0.0.209", "loc_port": "9005", "loc_name": "dev4", "rem_ip": "10.0.0.208", "rem_port": "9004", "rem_name": "GF2" }) dev5 = net.addDocker('dev5', ip='10.0.0.210', dimage="constancegay/projet_sdci:dev", environment={ "loc_ip": "10.0.0.210", "loc_port": "9006", "loc_name": "dev5", "rem_ip": "10.0.0.208", "rem_port": "9004", "rem_name": "GF2" }) dev6 = net.addDocker('dev6', ip='10.0.0.211', dimage="constancegay/projet_sdci:dev", environment={ "loc_ip": "10.0.0.211", "loc_port": "9007", "loc_name": "dev6", "rem_ip": "10.0.0.208", "rem_port": "9004", "rem_name": "GF2" }) # ZONE 3 devices dev7 = net.addDocker('dev7', ip='10.0.0.213', dimage="constancegay/projet_sdci:dev", environment={ "loc_ip": "10.0.0.213", "loc_port": "9009", "loc_name": "dev7", "rem_ip": "10.0.0.212", "rem_port": "9008", "rem_name": "GF3" }) dev8 = net.addDocker('dev8', ip='10.0.0.214', dimage="constancegay/projet_sdci:dev", environment={ "loc_ip": "10.0.0.214", "loc_port": "9010", "loc_name": "dev8", "rem_ip": "10.0.0.212", "rem_port": "9008", "rem_name": "GF3" }) dev9 = net.addDocker('dev9', ip='10.0.0.215', dimage="constancegay/projet_sdci:dev", environment={ "loc_ip": "10.0.0.215", "loc_port": "9011", "loc_name": "dev9", "rem_ip": "10.0.0.212", "rem_port": "9008", "rem_name": "GF3" }) info('*** Adding switches\n') s1 = net.addSwitch('s1') s2 = net.addSwitch('s2') s3 = net.addSwitch('s3') s4 = net.addSwitch('s4') s5 = net.addSwitch('s5') info('*** Creating links\n') net.addLink(s1, srv) net.addLink(s1, GI) net.addLink(s1, mon) net.addLink(s2, s1) net.addLink(s2, dc1) net.addLink(s3, s2) net.addLink(s4, s2) net.addLink(s5, s2) # ZONE 1 net.addLink(s3, gf1) net.addLink(s3, dev1) net.addLink(s3, dev2) net.addLink(s3, dev3) # ZONE 2 net.addLink(s4, gf2) net.addLink(s4, dev4) net.addLink(s4, dev5) net.addLink(s4, dev6) # ZONE 3 net.addLink(s5, gf3) net.addLink(s5, dev7) net.addLink(s5, dev8) net.addLink(s5, dev9) info('*** Starting network\n') net.start() info('*** Testing connectivity\n') net.ping([srv, dev1]) info('*** Running CLI\n') CLI(net) info('*** Stopping network') net.stop()
def create_topology(): net = DCNetwork(monitor=False, enable_learning=True,autoSetMacs=True) dc1 = net.addDatacenter("dc1") # add OpenStack-like APIs to the emulated DC api1 = OpenstackApiEndpoint("0.0.0.0", 6001) api1.connect_datacenter(dc1) api1.start() api1.connect_dc_network(net) # add the command line interface endpoint to the emulated DC (REST API) rapi1 = RestApiEndpoint("0.0.0.0", 5001) rapi1.connectDCNetwork(net) rapi1.connectDatacenter(dc1) rapi1.start() s1 = net.addSwitch('s1') s2 = net.addSwitch('s2') s3 = net.addSwitch('s3') s4 = net.addSwitch('s4') srv = net.addDocker('srv', ip='192.168.0.1', dimage="server:latest") time.sleep(5) gwi = net.addDocker('gwi', ip='192.168.0.254', dimage="gateway:latest") time.sleep(5) #First cluster gwf1 = net.addDocker('gwf1', ip='192.168.0.252', dimage="gwf1:latest") device11 = net.addDocker('device11', ip='192.168.0.241', dimage="device1:latest") time.sleep(5) device12 = net.addDocker('device12', ip='192.168.0.242', dimage="device1:latest") device13 = net.addDocker('device13', ip='192.168.0.243', dimage="device1:latest") #Second cluster gwf2 = net.addDocker('gwf2', ip='192.168.0.251', dimage="gwf2:latest") time.sleep(5) device21 = net.addDocker('device21', ip='192.168.0.231', dimage="device2:latest") device22 = net.addDocker('device22', ip='192.168.0.232', dimage="device2:latest") device23 = net.addDocker('device23', ip='192.168.0.233', dimage="device2:latest") #Third cluster gwf3 = net.addDocker('gwf3', ip='192.168.0.250', dimage="gwf3:latest") time.sleep(5) device31 = net.addDocker('device31', ip='192.168.0.221', dimage="device3:latest") device32 = net.addDocker('device32', ip='192.168.0.222', dimage="device3:latest") device33 = net.addDocker('device33', ip='192.168.0.223', dimage="device3:latest") #Switch links net.addLink(s1, s2) net.addLink(s2, s3) net.addLink(s2, s4) net.addLink(s4,dc1) net.addLink(s1, srv) net.addLink(s2, gwi) #First cluster link net.addLink(s3, gwf1) net.addLink(gwf1,device11) net.addLink(gwf1,device12) net.addLink(gwf1,device13) #Second cluster link net.addLink(s3, gwf2) net.addLink(gwf2,device21) net.addLink(gwf2,device22) net.addLink(gwf2,device23) #Third cluster link net.addLink(s4, gwf3) net.addLink(gwf3,device31) net.addLink(gwf3,device32) net.addLink(gwf3,device33) net.start() """ srv.cmd("node srv/server.js --local_ip '192.168.0.1' --local_port 8080 --local_name 'srv'") time.sleep(2) gwi.cmd("node srv/gateway.js --local_ip '192.168.0.254' --local_port 8181 --local_name 'gwi1' --remote_ip '192.168.0.1' --remote_port 8080 --remote_name 'srv'") time.sleep(2) gwf1.cmd("node srv/gateway.js --local_ip '192.168.0.252' --local_port 8282 --local_name 'gwf1' --remote_ip '192.168.0.254' --remote_port 8181 --remote_name 'gwi1'") time.sleep(2) device11.cmd("node srv/device.js --local_ip '192.168.0.241' --local_port 9001 --local_name 'device11' --remote_ip '192.168.0.252' --remote_port 8282 --remote_name 'gwf1' --send_period 3000") device12.cmd("node srv/device.js --local_ip '192.168.0.242' --local_port 9001 --local_name 'device12' --remote_ip '192.168.0.252' --remote_port 8282 --remote_name 'gwf1' --send_period 3000") device13.cmd("node srv/device.js --local_ip '192.168.0.243' --local_port 9001 --local_name 'device13' --remote_ip '192.168.0.252' --remote_port 8282 --remote_name 'gwf1' --send_period 3000") gwf2.cmd("node srv/gateway.js --local_ip '192.168.0.251' --local_port 8282 --local_name 'gwf2' --remote_ip '192.168.0.254' --remote_port 8181 --remote_name 'gwi1'") time.sleep(2) device21.cmd("node srv/device.js --local_ip '192.168.0.231' --local_port 9001 --local_name 'device21' --remote_ip '192.168.0.251' --remote_port 8282 --remote_name 'gwf2' --send_period 3000") device22.cmd("node srv/device.js --local_ip '192.168.0.232' --local_port 9001 --local_name 'device22' --remote_ip '192.168.0.251' --remote_port 8282 --remote_name 'gwf2' --send_period 3000") device23.cmd("node srv/device.js --local_ip '192.168.0.233' --local_port 9001 --local_name 'device23' --remote_ip '192.168.0.251' --remote_port 8282 --remote_name 'gwf2' --send_period 3000") gwf3.cmd("node srv/gateway.js --local_ip '192.168.0.250' --local_port 8282 --local_name 'gwf3' --remote_ip '192.168.0.254' --remote_port 8181 --remote_name 'gwi1'") time.sleep(2) device31.cmd("node srv/device.js --local_ip '192.168.0.221' --local_port 9001 --local_name 'device31' --remote_ip '192.168.0.250' --remote_port 8282 --remote_name 'gwf3' --send_period 3000") device32.cmd("node srv/device.js --local_ip '192.168.0.222' --local_port 9001 --local_name 'device32' --remote_ip '192.168.0.250' --remote_port 8282 --remote_name 'gwf3' --send_period 3000") device33.cmd("node srv/device.js --local_ip '192.168.0.221' --local_port 9001 --local_name 'device33' --remote_ip '192.168.0.250' --remote_port 8282 --remote_name 'gwf3' --send_period 3000") """ net.CLI() # when the user types exit in the CLI, we stop the emulator net.stop()