From ed78e4eb5028eb79f60f259874b7c40053d0c267 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mi=C5=82osz=20Stocki?= Date: Tue, 1 Oct 2019 15:36:05 +0200 Subject: [PATCH] First commit --- zfssm_client.py | 9 +++++++++ zfssmd.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 zfssm_client.py create mode 100644 zfssmd.py diff --git a/zfssm_client.py b/zfssm_client.py new file mode 100644 index 0000000..0817392 --- /dev/null +++ b/zfssm_client.py @@ -0,0 +1,9 @@ +import Pyro4 +import time ## FIXME only debug + +start = time.time() +uri = "PYRO:058b7dde9ec53de9235cfc57a07ce17a9eabfce3@./u:/run/zfssmd.sock" +zfssmd_connection = Pyro4.Proxy(uri) +print(zfssmd_connection.get_current_list()) +end=time.time() +print(end-start) diff --git a/zfssmd.py b/zfssmd.py new file mode 100644 index 0000000..288aa9a --- /dev/null +++ b/zfssmd.py @@ -0,0 +1,28 @@ +#!/usr/bin/python3 +import subprocess +import Pyro4 + +ENCODING = 'utf-8' + +class ZfsSnapshotManagerDaemon(object): + # TODO docstrings class and methods + snapshots = list() + def __init__(self): + self.snapshots = self.call_zfs_list_snapshots() + + def call_zfs_list_snapshots(self): + command = ('zfs list -Hp -t snapshot -o name,creation,used,referenced -s name') + p = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + snapshot_list = [snapshot.decode(ENCODING) for snapshot in p.stdout] + retval = p.wait() ## TODO Implement retval actions + return snapshot_list + + @Pyro4.expose + def get_current_list(self): + return self.snapshots + +# TODO socket start and delete handling + SIGINT handling +daemon = Pyro4.Daemon(port=None,unixsocket='/run/zfssmd.sock') +uri = daemon.register(ZfsSnapshotManagerDaemon(), "058b7dde9ec53de9235cfc57a07ce17a9eabfce3") +print (uri) ## FIXME debug only +daemon.requestLoop() \ No newline at end of file