first basic in-datacenter link management
authorpeusterm <manuel.peuster@uni-paderborn.de>
Mon, 11 Jan 2016 15:32:58 +0000 (16:32 +0100)
committerpeusterm <manuel.peuster@uni-paderborn.de>
Mon, 11 Jan 2016 15:32:58 +0000 (16:32 +0100)
emuvim/cli/__main__.py
emuvim/dcemulator/net.py
emuvim/dcemulator/node.py

index 4c55916..dfb935e 100644 (file)
@@ -18,11 +18,11 @@ def main():
     c.connect("tcp://127.0.0.1:4242")
 
     # do some API tests
     c.connect("tcp://127.0.0.1:4242")
 
     # do some API tests
-    print c.compute_action_start("dc2", "my_new_container1")
+    print c.compute_action_start("dc2", "d1")
 
     time.sleep(10)
 
 
     time.sleep(10)
 
-    print c.compute_action_stop("dc2", "my_new_container1")
+    print c.compute_action_stop("dc2", "d1")
 
 
 if __name__ == '__main__':
 
 
 if __name__ == '__main__':
index 0efcafa..600eca3 100644 (file)
@@ -5,7 +5,7 @@ Distributed Cloud Emulator (dcemulator)
 import logging
 
 from mininet.net import Mininet
 import logging
 
 from mininet.net import Mininet
-from mininet.node import Controller, OVSKernelSwitch, Switch
+from mininet.node import Controller, OVSKernelSwitch, Switch, Docker, Host
 from mininet.cli import CLI
 from mininet.log import setLogLevel, info
 from mininet.link import TCLink, Link
 from mininet.cli import CLI
 from mininet.log import setLogLevel, info
 from mininet.link import TCLink, Link
@@ -53,13 +53,14 @@ class DCNetwork(object):
         logging.info("added switch: %s" % name)
         return s
 
         logging.info("added switch: %s" % name)
         return s
 
-    def addLink(self, node1, node2):
+    def addLink(self, node1, node2, **params):
         """
         Able to handle Datacenter objects as link
         end points.
         """
         assert node1 is not None
         assert node2 is not None
         """
         Able to handle Datacenter objects as link
         end points.
         """
         assert node1 is not None
         assert node2 is not None
+        logging.debug("addLink: n1=%s n2=%s" % (str(node1), str(node2)))
         # ensure type of node1
         if isinstance( node1, basestring ):
             if node1 in self.dcs:
         # ensure type of node1
         if isinstance( node1, basestring ):
             if node1 in self.dcs:
@@ -76,13 +77,7 @@ class DCNetwork(object):
                 node2 = self.switches[node2]
         if isinstance( node2, Datacenter ):
             node2 = node2.switch
                 node2 = self.switches[node2]
         if isinstance( node2, Datacenter ):
             node2 = node2.switch
-        # create link if everything is correct
-        if (node1 is not None and isinstance(node1, OVSKernelSwitch)
-                and node2 is not None and isinstance(node2, OVSKernelSwitch)):
-            self.mnet.addLink(node1, node2)  # TODO we need TCLinks with user defined performance here
-        else:
-            raise Exception(
-                "one of the given nodes is not a Mininet switch or None")
+        self.mnet.addLink(node1, node2, **params)  # TODO we need TCLinks with user defined performance here
 
     def addDocker( self, name, **params ):
         """
 
     def addDocker( self, name, **params ):
         """
index 6d1c6de..71267ff 100644 (file)
@@ -47,7 +47,8 @@ class Datacenter(object):
         data center.
         """
         #TODO connect container to DC's swtich
         data center.
         """
         #TODO connect container to DC's swtich
-        self.net.addDocker("%s.%s" % (self.name, name), dimage="ubuntu")
+        d1 = self.net.addDocker("%s.%s" % (self.name, name), dimage="ubuntu")
+        l1 = self.net.addLink(d1, self.switch)
 
     def removeCompute(self, name):
         #TODO disconnect container to DC's swtich
 
     def removeCompute(self, name):
         #TODO disconnect container to DC's swtich