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):
"""
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):
"""
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)
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):
"""
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()