commit ed78e4eb5028eb79f60f259874b7c40053d0c267 Author: MiƂosz Stocki Date: Tue Oct 1 15:36:05 2019 +0200 First commit 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