From ec94aa9e253bd411894879abdf200985ffe33ab4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mi=C5=82osz=20Stocki?= Date: Thu, 3 Oct 2019 15:58:40 +0200 Subject: [PATCH] addes some disk class preparations --- Disk.py | 2 ++ Snapshot.py | 4 ++++ zfssm_client.py | 30 +++++++++++++++++++++++++++--- 3 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 Disk.py diff --git a/Disk.py b/Disk.py new file mode 100644 index 0000000..df9c5c6 --- /dev/null +++ b/Disk.py @@ -0,0 +1,2 @@ +from Snapshot import Snapshot + diff --git a/Snapshot.py b/Snapshot.py index 418d1a8..e8389f9 100644 --- a/Snapshot.py +++ b/Snapshot.py @@ -8,6 +8,7 @@ class Snapshot(object): self.re_name = re.compile(r"[^/]+$") self.re_zvol = re.compile(r"^.*[\\/]") self.snapshot_tuple = self.parse_string_to_table() + self.disk_name = self.get_snapshot_name().split("@")[0] def __repr__(self): return self.get_snapshot_name() @@ -41,6 +42,9 @@ class Snapshot(object): referenced_str = self.snapshot_tuple[3] return self.sizeof_fmt(int(referenced_str)) + def get_disk_name(self): + return self.disk_name + @staticmethod def sizeof_fmt(num, suffix='B'): ## FIXME WOW taken from stack but it's too fucking slow. Probably because of division. Have to profile diff --git a/zfssm_client.py b/zfssm_client.py index 45b99d6..73887f8 100644 --- a/zfssm_client.py +++ b/zfssm_client.py @@ -4,6 +4,9 @@ import Pyro4 from Snapshot import Snapshot import time from zfssmd_worker import DEFAULT_REFRESH_INTERVAL +## FIXME Only debug +import pprint +from itertools import product PYRO_URI = "PYRO:058b7dde9ec53de9235cfc57a07ce17a9eabfce3@./u:/run/zfssmd.sock" @@ -35,6 +38,27 @@ class ZFSSMDClient(object): snapshot_object_list.append(snapshot_obj) return snapshot_object_list -objects = (ZFSSMDClient().make_snapshot_objects()) -for o in objects: - print = (o.get_snapshot_zvol()+o.get_snapshot_name()+" "+o.get_snapshot_creation_time() )#+ " " + o.get_snapshot_used_size() + " " + o.get_snapshot_referenced_size()) \ No newline at end of file + def make_disk_objects(self): + disk_object_list = list() + #disk_list = list() + #snapshot_list = self.make_snapshot_objects() + #for snapshot in snapshot_list: + # disk = snapshot.get_disk_name() + # if disk not in disk_list: + # disk_list.append(disk) + #map(lambda (x,y):) + + def list_snapshots(self): + ## TODO make d + snapshot_dict = dict() + for o in self.make_snapshot_objects(): + name = o.get_snapshot_name() + zvol = o.get_snapshot_zvol() + ctime = o.get_snapshot_creation_time() + used = o.get_snapshot_used_size() + ref = o.get_snapshot_referenced_size() + snapshot_dict.update ({name:[zvol,ctime,used,ref]}) + return snapshot_dict + +pp = pprint.PrettyPrinter() +pp.pprint(ZFSSMDClient().make_disk_objects()) \ No newline at end of file