about summary refs log tree commit diff
path: root/items/svc_s6rc.py
diff options
context:
space:
mode:
authorRobert Günzler <r@gnzler.io>2026-03-05 23:45:09 +0100
committerRobert Günzler <r@gnzler.io>2026-03-05 23:45:09 +0100
commit245ff285430ff07d23ed4fcb88753e1f8c8f0d21 (patch)
tree447dfee6041a626fbf58dc094c00d2f930283d48 /items/svc_s6rc.py
parentd59299b03e253ec6533287ea8b9be3e71a48dc9f (diff)
svc_s6rc: update for bundlewrap 5
Signed-off-by: Robert Günzler <r@gnzler.io>
Diffstat (limited to 'items/svc_s6rc.py')
-rw-r--r--items/svc_s6rc.py41
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