projects
/
osm
/
vim-emu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
made package POST endpoint compatible with original GK endpoint.
[osm/vim-emu.git]
/
src
/
emuvim
/
dcemulator
/
resourcemodel
/
__init__.py
diff --git
a/src/emuvim/dcemulator/resourcemodel/__init__.py
b/src/emuvim/dcemulator/resourcemodel/__init__.py
index
6432361
..
e35da25
100644
(file)
--- a/
src/emuvim/dcemulator/resourcemodel/__init__.py
+++ b/
src/emuvim/dcemulator/resourcemodel/__init__.py
@@
-8,28
+8,48
@@
LOG.setLevel(logging.DEBUG)
class ResourceModelRegistrar(object):
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_cpu = dc_emulation_max_cpu
+ self.e_mem = dc_emulation_max_mem
# pointer to all resource models assigned to DCs
self._resource_models = dict()
# 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):
def register(self, dc, rm):
+ """
+ Register a new resource model.
+ :param dc: Data center to which it is assigned.
+ :param rm: The resource model object.
+ :return: None
+ """
if dc in self._resource_models:
raise Exception("There is already an resource model assigned to this DC.")
self._resource_models[dc] = rm
rm.registrar = self
if dc in self._resource_models:
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)
LOG.info("Registrar: Added resource model: %r" % rm)
- @property
- def num_models(self):
- return len(self._resource_models)
-
@property
def resource_models(self):
@property
def resource_models(self):
+ """
+ List of registered resource models
+ :return:
+ """
return list(self._resource_models.itervalues())
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):
"""
class ResourceFlavor(object):
"""
@@
-52,16
+72,20
@@
class BaseResourceModel(object):
"""
def __init__(self):
"""
def __init__(self):
- self._flavors
=
dict()
+ self._flavors
=
dict()
self._initDefaultFlavors()
self.registrar = None # pointer to registrar
self._initDefaultFlavors()
self.registrar = None # pointer to registrar
+ self.dcs = list()
+ self.allocated_compute_instances = dict()
LOG.info("Resource model %r initialized" % self)
def __repr__(self):
return self.__class__.__name__
def _initDefaultFlavors(self):
LOG.info("Resource model %r initialized" % self)
def __repr__(self):
return self.__class__.__name__
def _initDefaultFlavors(self):
- # initialize some default flavours (inspired by OpenStack)
+ """
+ initialize some default flavours (naming/sizes inspired by OpenStack)
+ """
self.addFlavour(ResourceFlavor(
"tiny", {"compute": 1, "memory": 32, "disk": 1}))
self.addFlavour(ResourceFlavor(
self.addFlavour(ResourceFlavor(
"tiny", {"compute": 1, "memory": 32, "disk": 1}))
self.addFlavour(ResourceFlavor(
@@
-91,6
+115,7
@@
class BaseResourceModel(object):
:return: 3-tuple: (CPU-fraction, Mem-limit, Disk-limit)
"""
LOG.warning("Allocating in BaseResourceModel: %r with flavor: %r" % (name, flavor_name))
:return: 3-tuple: (CPU-fraction, Mem-limit, Disk-limit)
"""
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
def free(self, name):
return -1.0, -1.0, -1.0 # return invalid values to indicate that this RM is a dummy
def free(self, name):
@@
-100,4
+125,5
@@
class BaseResourceModel(object):
:return: True/False
"""
LOG.warning("Free in BaseResourceModel: %r" % name)
:return: True/False
"""
LOG.warning("Free in BaseResourceModel: %r" % name)
+ del self.allocated_compute_instances[name]
return True
return True