X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=src%2Femuvim%2Fdcemulator%2Fresourcemodel%2F__init__.py;h=b79cd7a1d20cd62795d2d0c66c72f822692106e0;hb=23135a50fd84f05f34241ab88b786dbc165463b4;hp=e35da25545ea2ef8eeeb39c5235501c4a667bc97;hpb=07bc6add985ec7c20bc3b0ac83030e5522dae07a;p=osm%2Fvim-emu.git diff --git a/src/emuvim/dcemulator/resourcemodel/__init__.py b/src/emuvim/dcemulator/resourcemodel/__init__.py index e35da25..b79cd7a 100644 --- a/src/emuvim/dcemulator/resourcemodel/__init__.py +++ b/src/emuvim/dcemulator/resourcemodel/__init__.py @@ -76,7 +76,7 @@ class BaseResourceModel(object): self._initDefaultFlavors() self.registrar = None # pointer to registrar self.dcs = list() - self.allocated_compute_instances = dict() + self._allocated_compute_instances = dict() LOG.info("Resource model %r initialized" % self) def __repr__(self): @@ -87,15 +87,15 @@ class BaseResourceModel(object): initialize some default flavours (naming/sizes inspired by OpenStack) """ self.addFlavour(ResourceFlavor( - "tiny", {"compute": 1, "memory": 32, "disk": 1})) + "tiny", {"compute": 0.5, "memory": 32, "disk": 1})) self.addFlavour(ResourceFlavor( - "small", {"compute": 4, "memory": 128, "disk": 20})) + "small", {"compute": 1.0, "memory": 128, "disk": 20})) self.addFlavour(ResourceFlavor( - "medium", {"compute": 8, "memory": 256, "disk": 40})) + "medium", {"compute": 4.0, "memory": 256, "disk": 40})) self.addFlavour(ResourceFlavor( - "large", {"compute": 16, "memory": 512, "disk": 80})) + "large", {"compute": 8.0, "memory": 512, "disk": 80})) self.addFlavour(ResourceFlavor( - "xlarge", {"compute": 32, "memory": 1024, "disk": 160})) + "xlarge", {"compute": 16.0, "memory": 1024, "disk": 160})) def addFlavour(self, fl): """ @@ -107,23 +107,58 @@ class BaseResourceModel(object): raise Exception("Flavor with name %r already exists!" % fl.name) self._flavors[fl.name] = fl - def allocate(self, name, flavor_name): + def allocate(self, d): """ This method has to be overwritten by a real resource model. - :param name: Name of the started compute instance. - :param flavor_name: Name of the flavor to be allocated. - :return: 3-tuple: (CPU-fraction, Mem-limit, Disk-limit) + :param d: Container object """ - LOG.warning("Allocating in BaseResourceModel: %r with flavor: %r" % (name, flavor_name)) - self.allocated_compute_instances[name] = flavor_name - return -1.0, -1.0, -1.0 # return invalid values to indicate that this RM is a dummy + LOG.warning("Allocating in BaseResourceModel: %r with flavor: %r" % (d.name, d.flavor_name)) + self._allocated_compute_instances[d.name] = d.flavor_name - def free(self, name): + def free(self, d): """ This method has to be overwritten by a real resource model. - :param name: Name of the compute instance that is stopped. - :return: True/False + :param d: Container object """ - LOG.warning("Free in BaseResourceModel: %r" % name) - del self.allocated_compute_instances[name] - return True + LOG.warning("Free in BaseResourceModel: %r" % d.name) + del self._allocated_compute_instances[d.name] + + def get_state_dict(self): + """ + Return the state of the resource model as simple dict. + Helper method for logging functionality. + :return: + """ + return dict() + + def write_allocation_log(self, d, path): + """ + Helper to log RM info for experiments. + :param d: container + :param path: log path + :return: + """ + self._write_log(d, path, "allocate") + + def write_free_log(self, d, path): + """ + Helper to log RM info for experiments. + :param d: container + :param path: log path + :return: + """ + self._write_log(d, path, "free") + + def _write_log(self, d, path, action): + """ + Helper to log RM info for experiments. + :param d: container + :param path: log path + :param action: allocate or free + :return: + """ + pass + + +class NotEnoughResourcesAvailable(BaseException): + pass