if len(network) < 1:
network.append({})
+ """
# allocate in resource resource model and compute resource limits for new container
cpu_limit = mem_limit = disk_limit = -1
cpu_period = cpu_quota = None
if mem_limit < 4:
mem_limit = 4
LOG.warning("Increased MEM limit for %r because it was less than 4.0 MB." % name)
+ """
# create the container
d = self.net.addDocker(
"%s" % (name),
dimage=image,
dcmd=command,
datacenter=self,
- flavor_name=flavor_name,
- cpu_period=int(cpu_period) if cpu_limit > 0 else None, # set cpu limits if needed
- cpu_quota=int(cpu_quota) if cpu_limit > 0 else None,
- mem_limit="%dm" % int(mem_limit) if mem_limit > 0 else None, # set mem limits if needed
- memswap_limit="%dm" % int(mem_limit) if mem_limit > 0 else None # lets set swap to mem limit for now
+ flavor_name=flavor_name
)
+
+ # apply resource limits to container if a resource model is defined
+ if self._resource_model is not None:
+ self._resource_model.allocate(d)
+
# connect all given networks
+ # if no --net option is given, network = [{}], so 1 empty dict in the list
+ # this results in 1 default interface with a default ip address
for nw in network:
# TODO we cannot use TCLink here (see: https://github.com/mpeuster/dockernet/issues/3)
self.net.addLink(d, self.switch, params1=nw, cls=Link)
# do bookkeeping
self.containers[name] = d
+ # TODO re-enable logging
+ """
# write resource log if a path is given
if self.resource_log_path is not None:
l = dict()
# append to logfile
with open(self.resource_log_path, "a") as f:
f.write("%s\n" % json.dumps(l))
+ """
return d # we might use UUIDs for naming later on
def stopCompute(self, name):
if name not in self.containers:
raise Exception("Container with name %s not found." % name)
LOG.debug("Stopping compute instance %r in data center %r" % (name, str(self)))
+
+ # call resource model and free resources
+ if self._resource_model is not None:
+ self._resource_model.free(self.containers[name])
+
+ # remove links
self.net.removeLink(
link=None, node1=self.containers[name], node2=self.switch)
+
+ # remove container
self.net.removeDocker("%s" % (name))
del self.containers[name]
- # call resource model and free resources
- if self._resource_model is not None:
- self._resource_model.free(name)
+ # TODO re-enable logging
+ """
# write resource log if a path is given
if self.resource_log_path is not None:
l = dict()
# append to logfile
with open(self.resource_log_path, "a") as f:
f.write("%s\n" % json.dumps(l))
+ """
return True
def listCompute(self):