X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;ds=inline;f=emuvim%2Fdcemulator%2Fnode.py;h=67ce6004497a4b3760c7ed249950f5b7d9475f15;hb=c3b977eb522f497716171bae5b5d72d39fbd9905;hp=b12751faf02bde3a3c17b59b4a866718eccde01e;hpb=cbcd4c2d984a354e88febdaa368d53a3e6881c72;p=osm%2Fvim-emu.git diff --git a/emuvim/dcemulator/node.py b/emuvim/dcemulator/node.py index b12751f..67ce600 100644 --- a/emuvim/dcemulator/node.py +++ b/emuvim/dcemulator/node.py @@ -12,12 +12,15 @@ class Datacenter(object): """ Represents a logical data center to which compute resources (Docker containers) can be added at runtime. + + Will also implement resource bookkeeping in later versions. """ def __init__(self, name): 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 @@ -29,7 +32,7 @@ class Datacenter(object): Each data center is represented by a single switch to which compute resources can be connected at run time. - TODO: This will be changes in the future to support multiple networks + TODO: This will be changed in the future to support multiple networks per data center """ self.switch = self.net.mnet.addSwitch( @@ -39,8 +42,22 @@ class Datacenter(object): def start(self): pass - def addCompute(self): - pass + def addCompute(self, name): + """ + Create a new container as compute resource and connect it to this + data center. + """ + # TODO ip management + d = self.net.addDocker("%s" % (name), dimage="ubuntu") + self.net.addLink(d, self.switch) #params1={"ip": "10.0.0.254/8"} + self.containers[name] = d - def removeCompute(self): - pass + def removeCompute(self, 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]