X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=src%2Femuvim%2Fdcemulator%2Fresourcemodel%2F__init__.py;h=c28e2262b5426f2ee6a029680395e44180b92a15;hb=7da4970fbf9548d755decc1361d5d9d548cc0f3c;hp=52a35e5e724a3ed5b807ea3c0be4f4ec56878eba;hpb=57551f0497178f51b4cb67b3e21a949cdda8505d;p=osm%2Fvim-emu.git diff --git a/src/emuvim/dcemulator/resourcemodel/__init__.py b/src/emuvim/dcemulator/resourcemodel/__init__.py index 52a35e5..c28e226 100644 --- a/src/emuvim/dcemulator/resourcemodel/__init__.py +++ b/src/emuvim/dcemulator/resourcemodel/__init__.py @@ -12,11 +12,13 @@ class ResourceModelRegistrar(object): Global registry to keep track of all existing resource models. """ - def __init__(self, dc_emulation_max_cpu): + def __init__(self, dc_emulation_max_cpu, dc_emulation_max_mem): self.e_cpu = dc_emulation_max_cpu + self.e_mem = dc_emulation_max_mem # pointer to all resource models assigned to DCs self._resource_models = dict() - LOG.info("Resource model registrar created with dc_emulation_max_cpu=%r" % dc_emulation_max_cpu) + LOG.info("Resource model registrar created with dc_emulation_max_cpu=%r and dc_emulation_max_mem=%r" + % (dc_emulation_max_cpu, dc_emulation_max_mem)) def register(self, dc, rm): """ @@ -29,12 +31,25 @@ class ResourceModelRegistrar(object): raise Exception("There is already an resource model assigned to this DC.") self._resource_models[dc] = rm rm.registrar = self + rm.dcs.append(dc) LOG.info("Registrar: Added resource model: %r" % rm) @property def resource_models(self): + """ + List of registered resource models + :return: + """ return list(self._resource_models.itervalues()) + @property + def num_dcs_with_rms(self): + """ + Total number of data centers that are connected to a resource model + :return: + """ + return sum([len(rm.dcs) for rm in list(self._resource_models.itervalues())]) + class ResourceFlavor(object): """ @@ -60,6 +75,7 @@ class BaseResourceModel(object): self._flavors = dict() self._initDefaultFlavors() self.registrar = None # pointer to registrar + self.dcs = list() self.allocated_compute_instances = dict() LOG.info("Resource model %r initialized" % self) @@ -71,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): """ @@ -111,3 +127,11 @@ class BaseResourceModel(object): LOG.warning("Free in BaseResourceModel: %r" % name) del self.allocated_compute_instances[name] return True + + def get_state_dict(self): + """ + Return the state of the resource model as simple dict. + Helper method for logging functionality. + :return: + """ + return dict()