X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=emuvim%2Fdcemulator%2Fnode.py;h=3ab63414e190e1e7b7dc6cbabf4d44cc6a12fedf;hb=4e98b6362438ec5ce0cfec4b497fa24620efe212;hp=6d1c6de1dbc23ea7725ac2d58f25ed0e059517de;hpb=5b844a1abb3fa789d1d72f74c86d8e47c28b2dac;p=osm%2Fvim-emu.git diff --git a/emuvim/dcemulator/node.py b/emuvim/dcemulator/node.py index 6d1c6de..3ab6341 100644 --- a/emuvim/dcemulator/node.py +++ b/emuvim/dcemulator/node.py @@ -20,6 +20,7 @@ class Datacenter(object): self.net = None # DCNetwork to which we belong self.name = name self.switch = None # first prototype assumes one "bigswitch" per DC + self.containers = {} # keep track of running containers def _get_next_dc_dpid(self): global DCDPID_BASE @@ -41,14 +42,40 @@ class Datacenter(object): def start(self): pass - def addCompute(self, name): + def addCompute(self, name, image=None, network=None): """ Create a new container as compute resource and connect it to this data center. + + TODO: This interface will change to support multiple networks to which + a single container can be connected. """ - #TODO connect container to DC's swtich - self.net.addDocker("%s.%s" % (self.name, name), dimage="ubuntu") + assert name is not None + # set default parameter + if image is None: + image = "ubuntu" + if network is None: + network = {} # {"ip": "10.0.0.254/8"} + # create the container and connect it to the given network + d = self.net.addDocker("%s" % (name), dimage=image) + self.net.addLink(d, self.switch, params1=network) + self.containers[name] = d + return name # we might use UUIDs for naming later on def removeCompute(self, name): - #TODO disconnect container to DC's swtich - self.net.removeDocker("%s.%s" % (self.name, name)) + """ + Stop and remove a container from this data center. + """ + assert name in self.containers + self.net.removeLink( + link=None, node1=self.containers[name], node2=self.switch) + self.net.removeDocker("%s" % (name)) + del self.containers[name] + return True + + def listCompute(self): + """ + Return a list of all running containers assigned to this + data center. + """ + return self.containers.itervalues()