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
-    print c.compute_action_start("dc2", "my_new_container1")
+    print c.compute_action_start("dc2", "d1")
 
     time.sleep(10)
 
-    print c.compute_action_stop("dc2", "my_new_container1")
+    print c.compute_action_stop("dc2", "d1")
 
 
 if __name__ == '__main__':
index 0efcafa..600eca3 100644 (file)
@@ -5,7 +5,7 @@ Distributed Cloud Emulator (dcemulator)
 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
@@ -53,13 +53,14 @@ class DCNetwork(object):
         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
+        logging.debug("addLink: n1=%s n2=%s" % (str(node1), str(node2)))
         # 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
-        # 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 ):
         """
index 6d1c6de..71267ff 100644 (file)
@@ -47,7 +47,8 @@ class Datacenter(object):
         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