aboutsummaryrefslogtreecommitdiffstats
path: root/vicn/core/resource_mgr.py
diff options
context:
space:
mode:
Diffstat (limited to 'vicn/core/resource_mgr.py')
-rw-r--r--vicn/core/resource_mgr.py62
1 files changed, 30 insertions, 32 deletions
diff --git a/vicn/core/resource_mgr.py b/vicn/core/resource_mgr.py
index 4ca8060c..e6029cd7 100644
--- a/vicn/core/resource_mgr.py
+++ b/vicn/core/resource_mgr.py
@@ -365,7 +365,6 @@ class ResourceManager(metaclass=Singleton):
for resource in self.get_resources():
if resource.get_type() == 'lxccontainer':
task = task | resource.__delete__()
- print("RESOURCE", resource.name)
self.schedule(task)
ret = await wait_task(task)
return ret
@@ -613,18 +612,18 @@ class ResourceManager(metaclass=Singleton):
"""
self.log(resource, ' - Waiting for attribute dependencies...')
for attr in resource.iter_attributes():
- if issubclass(attr.type, Resource):
- deps = resource.get(attr.name)
- if deps is None:
- # Not really a dependency, we expect mandatory to prevent
- # us to continue if we should not
- continue
- if not attr.is_collection:
- deps = [deps]
+ if not issubclass(attr.type, Resource):
+ continue
+
+ deps = resource.get(attr.name)
+ if not deps:
+ continue
+ if not attr.is_collection:
+ deps = [deps]
- for dep in deps:
- # XXX This could be done in parallel
+ for dep in deps:
+ if attr.key:
if not dep.managed:
continue
dep_pfx = '{}:{}'.format(dep.get_type(), dep.get_uuid())
@@ -632,27 +631,27 @@ class ResourceManager(metaclass=Singleton):
await wait_resource(dep)
self.log(resource, S_WAIT_DEP_OK. format(dep_pfx))
- if not attr.requirements:
- continue
+ if not attr.requirements:
+ continue
- for req in attr.requirements:
- dep_attr_name = req.requirement_type
- dep_attr = dep.get_attribute(dep_attr_name)
- assert issubclass(dep_attr.type, Resource)
- dep_attr_value = dep.get(dep_attr_name)
-
- if not dep_attr_value:
- dep_attr_value = dep.auto_instanciate(dep_attr)
- setattr(dep, dep_attr_name, dep_attr_value)
-
- dep_attr_value_pfx = '{}:{}'.format(
- dep_attr_value.get_type(),
- dep_attr_value.get_uuid())
- self.log(resource,
- S_WAIT_DEP.format(dep_attr_value_pfx))
- await wait_resource(dep_attr_value)
- self.log(resource,
- S_WAIT_DEP_OK .format(dep_attr_value_pfx))
+ for req in attr.requirements:
+ dep_attr_name = req.requirement_type
+ dep_attr = dep.get_attribute(dep_attr_name)
+ assert issubclass(dep_attr.type, Resource)
+ dep_attr_value = dep.get(dep_attr_name)
+
+ if not dep_attr_value:
+ dep_attr_value = dep.auto_instanciate(dep_attr)
+ setattr(dep, dep_attr_name, dep_attr_value)
+
+ dep_attr_value_pfx = '{}:{}'.format(
+ dep_attr_value.get_type(),
+ dep_attr_value.get_uuid())
+ self.log(resource,
+ S_WAIT_DEP.format(dep_attr_value_pfx))
+ await wait_resource(dep_attr_value)
+ self.log(resource,
+ S_WAIT_DEP_OK .format(dep_attr_value_pfx))
async def _resource_wait_predecessors(self, resource):
after = resource.__after__()
@@ -981,7 +980,6 @@ class ResourceManager(metaclass=Singleton):
ip = resource.node.management_interface.ip4_address
if not ip:
log.error('IP of monitored Node {} is None'.format(resource.node))
- #return # XXX
import os; os._exit(1)
ws = self._router.add_interface('websocketclient', address=ip,