summaryrefslogtreecommitdiff
path: root/4 Archives/Resumable backup tasks
diff options
context:
space:
mode:
authorJasper Ras <jras@hostnet.nl>2025-03-20 11:07:49 +0100
committerJasper Ras <jras@hostnet.nl>2025-03-20 11:07:49 +0100
commit80ccf68f55dbb70d7e5ed52ee95b3c9d1b6ce264 (patch)
tree93e28e85ab70052aa6f577998ec7dc1f413b40c0 /4 Archives/Resumable backup tasks
parent9642cd7ae24f0ba79ce5647c709b35ae8f06a285 (diff)
vault backup: 2025-03-20 11:07:48
Diffstat (limited to '4 Archives/Resumable backup tasks')
-rw-r--r--4 Archives/Resumable backup tasks/Implementatie.md4
-rw-r--r--4 Archives/Resumable backup tasks/Prototype resumable task.md64
-rw-r--r--4 Archives/Resumable backup tasks/Reminders.md6
-rw-r--r--4 Archives/Resumable backup tasks/Resumable tasks maandag.md23
4 files changed, 97 insertions, 0 deletions
diff --git a/4 Archives/Resumable backup tasks/Implementatie.md b/4 Archives/Resumable backup tasks/Implementatie.md
new file mode 100644
index 0000000..d4fe6ef
--- /dev/null
+++ b/4 Archives/Resumable backup tasks/Implementatie.md
@@ -0,0 +1,4 @@
+Agent maakt state dir aan per task; schrijf context.json weg met daarin all params benodigd om de handler aan te roepen om te replayen. Als taak afgekapt word blijft context bestaan; tijdens start van goba zoeken naar alle context.json en gebruik om handlers aan te roepen en de task te herstarten.
+Iets wat nog gefixed moet worden is dat het de files in staging area achterlaat als VM bijv gemigreerd is; de task failed buiten taskflow om en reverts draaien dus niet. Ipv staging area opzetten en destroyen in taskflow; context dir gebruiken die via contextmanager opgeruimd word.
+
+De backup service failed handler aangepast om de task state naar new te zetten ipv failed; kan nu in oneindige loop raken. \ No newline at end of file
diff --git a/4 Archives/Resumable backup tasks/Prototype resumable task.md b/4 Archives/Resumable backup tasks/Prototype resumable task.md
new file mode 100644
index 0000000..d9fc2ed
--- /dev/null
+++ b/4 Archives/Resumable backup tasks/Prototype resumable task.md
@@ -0,0 +1,64 @@
+---
+tags:
+ - taskflow
+ - "#openstack"
+references:
+ - https://github.com/openstack/taskflow/blob/master/taskflow/examples/resume_from_backend.py
+---
+```python
+import time
+import contextlib
+
+from taskflow.patterns import linear_flow as lf
+from taskflow import task, engines
+from taskflow.persistence import backends, models
+from taskflow.exceptions import NotFound
+
+
+class PrintAndWait(task.Task):
+ def execute(self, *args, **kwargs):
+ print(self.name)
+ time.sleep(10)
+ return self.name
+
+
+def logbook_and_flow_detail(backend, id):
+ conn = backend.get_connection()
+
+ try:
+ logbook = conn.get_logbook(id)
+ flow_detail = logbook.find(id)
+ except NotFound:
+ logbook = models.LogBook("printer_log", uuid=id)
+ flow_detail = models.FlowDetail("cool flow", uuid=id)
+ logbook.add(flow_detail)
+
+ with contextlib.closing(backend.get_connection()) as conn:
+ conn.upgrade()
+ conn.save_logbook(logbook)
+
+ return logbook, flow_detail
+
+
+def create_flow():
+ main_flow = lf.Flow("main_flow")
+
+ for i in range(10):
+ main_flow.add(PrintAndWait(name=f"print_n_wait_{i}"))
+
+ return main_flow
+
+
+def main():
+ backend = backends.fetch(conf=dict(connection="sqlite:///test.db"))
+ logbook, flow_detail = logbook_and_flow_detail(backend, "1")
+
+ flow = create_flow()
+ eng = engines.load(flow, flow_detail=flow_detail, backend=backend, book=logbook)
+
+ eng.run()
+
+
+if __name__ == "__main__":
+ main()
+``` \ No newline at end of file
diff --git a/4 Archives/Resumable backup tasks/Reminders.md b/4 Archives/Resumable backup tasks/Reminders.md
new file mode 100644
index 0000000..45626e7
--- /dev/null
+++ b/4 Archives/Resumable backup tasks/Reminders.md
@@ -0,0 +1,6 @@
+---
+tags:
+ - resumable-tasks
+ - groupvps
+---
+Restore & backup directories in var/lib/goba are to prevent collissions (bc we upload all files in dir when uploading backup). \ No newline at end of file
diff --git a/4 Archives/Resumable backup tasks/Resumable tasks maandag.md b/4 Archives/Resumable backup tasks/Resumable tasks maandag.md
new file mode 100644
index 0000000..df42b92
--- /dev/null
+++ b/4 Archives/Resumable backup tasks/Resumable tasks maandag.md
@@ -0,0 +1,23 @@
+---
+tags:
+ - gobs
+ - resumable-tasks
+---
+Alle params tasks/atoms zijn nu primitives, connections e.d via constructor. Tasks kunnen nu resumed worden.
+
+Interrupt handler:
+- Signal handler installeren die op sigterm luisteren
+j wh
+- Hoe te resumen
+ - combinatie van onderstaande: vm kan gemigreerd zijn.
+ - Tasks failen
+ - gobs retried niet
+ - uitzonderingen nodig: wat als server deleted word tijdens task
+ -
+ - State dumpen naar file
+ - Alle state nodig om task weer te kunnen resumen
+ - Lastig te serializen?
+
+Start -> check if vm exists? nee -> fail
+
+Uiteindelijk \ No newline at end of file