diff options
Diffstat (limited to 'items/svc_s6rc.py')
| -rw-r--r-- | items/svc_s6rc.py | 41 |
1 files changed, 22 insertions, 19 deletions
diff --git a/items/svc_s6rc.py b/items/svc_s6rc.py index 4f98e38..d5e8fc7 100644 --- a/items/svc_s6rc.py +++ b/items/svc_s6rc.py @@ -98,7 +98,6 @@ class SvcS6RC(Item): "running": True, } ITEM_TYPE_NAME = "svc_s6rc" - REQUIRED_ATTRIBUTES = [] def __repr__(self): return "<SvcS6RC name:{} running:{} bundle:{} generate:{}>".format( @@ -108,6 +107,23 @@ class SvcS6RC(Item): self.attributes["generate"], ) + def fix(self, status): + if status.correct: + return + + if self.attributes["generate"]: + if not have_generate_template(self.node, self.attributes["generate"]): + raise Exception(f"No template provides `{self.attributes["generate"]}`") + + if status.cdict["generated"] != status.sdict["generated"]: + generate_service(self.node, self.attributes["generate"], self.name) + + if status.cdict["registered"] != status.sdict["registered"]: + register_service(self.node, self.attributes["bundle"], self.name) + + if status.cdict["running"] != status.sdict["running"]: + run_service(self.node, self.name) + def get_canned_actions(self): return { "reload": { @@ -123,14 +139,16 @@ class SvcS6RC(Item): }, } - def cdict(self): + @property + def expected_state(self): return { "running": self.attributes["running"], "generated": self.attributes["generate"] != None, "registered": self.attributes["bundle"] != None, } - def sdict(self): + @property + def actual_state(self): return { "running": is_service_running(self.node, self.name), "generated": ( @@ -143,19 +161,4 @@ class SvcS6RC(Item): ), } - def fix(self, status): - if status.correct: - return - - if self.attributes["generate"]: - if not have_generate_template(self.node, self.attributes["generate"]): - raise Exception(f"No template provides `{self.attributes["generate"]}`") - - if status.cdict["generated"] != status.sdict["generated"]: - generate_service(self.node, self.attributes["generate"], self.name) - - if status.cdict["registered"] != status.sdict["registered"]: - register_service(self.node, self.attributes["bundle"], self.name) - - if status.cdict["running"] != status.sdict["running"]: - run_service(self.node, self.name) + # TODO: validate attributes |