diff --git a/f2s/resources/role_data/meta.yaml b/f2s/resources/role_data/meta.yaml index c12b81ec..b518651e 100644 --- a/f2s/resources/role_data/meta.yaml +++ b/f2s/resources/role_data/meta.yaml @@ -2,7 +2,9 @@ id: role_data handler: none version: 0.0.1 -manager: manager.py +managers: + - managers/from_file.py + - managers/globals.py input: # should be auto-generated based on outputs from globals.pp puppet_modules: diff --git a/resources/ex_managed/meta.yaml b/resources/ex_managed/meta.yaml index 79a4a666..fd280cea 100644 --- a/resources/ex_managed/meta.yaml +++ b/resources/ex_managed/meta.yaml @@ -1,7 +1,8 @@ id: managed handler: none version: 1.0.0 -manager: managers/manager.py +managers: + - managers/manager.py input: val: schema: int! diff --git a/solar/core/resource/resource.py b/solar/core/resource/resource.py index c97f34b3..9804d2ac 100644 --- a/solar/core/resource/resource.py +++ b/solar/core/resource/resource.py @@ -90,7 +90,7 @@ class Resource(object): 'meta_inputs': inputs, 'tags': tags, 'state': RESOURCE_STATE.created.name, - 'manager': metadata.get('manager', '') + 'managers': metadata.get('managers', []) }) self.create_inputs(args) @@ -287,13 +287,15 @@ class Resource(object): self.db_obj.save_lazy() def prefetch(self): - if not self.db_obj.manager: + if not self.db_obj.managers: return - manager_path = os.path.join( - self.db_obj.base_path, self.db_obj.manager) - rst = utils.communicate([manager_path], json.dumps(self.args)) - self.update(json.loads(rst)) + manager_stack = self.db_obj.managers + while manager_stack: + manager = manager_stack.pop(0) + manager_path = os.path.join(self.db_obj.base_path, manager) + rst = utils.communicate([manager_path], json.dumps(self.args)) + self.update(json.loads(rst)) def load(name): r = DBResource.get(name) diff --git a/solar/dblayer/solar_models.py b/solar/dblayer/solar_models.py index 4b809026..c6ef5c0f 100644 --- a/solar/dblayer/solar_models.py +++ b/solar/dblayer/solar_models.py @@ -715,7 +715,7 @@ class Resource(Model): meta_inputs = Field(dict, default=dict) state = Field(str) # on_set/on_get would be useful events = Field(list, default=list) - manager = Field(str) + managers = Field(list, default=list) inputs = InputsField(default=dict) tags = TagsField(default=list)