64 lines
2.1 KiB
Python
64 lines
2.1 KiB
Python
import Pyro4
|
|
# from argparse import ArgumentParser
|
|
## TODO Arguments
|
|
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"
|
|
|
|
class ZFSSMDClient(object):
|
|
def __init__(self, uri=PYRO_URI):
|
|
self.uri = uri
|
|
self.pyro_conn = Pyro4.Proxy(self.uri)
|
|
|
|
## FIXME Check for old timestamp
|
|
def check_old_timestamp(self, timestamp):
|
|
target_interval = DEFAULT_REFRESH_INTERVAL * 2
|
|
if time.time() - timestamp <= target_interval:
|
|
return False
|
|
else:
|
|
return True
|
|
|
|
def get_snapshot_list(self):
|
|
response = self.pyro_conn.get_current_list()
|
|
timestamp = next(iter(response))
|
|
if (self.check_old_timestamp(timestamp)):
|
|
print("WARNING! Data is older than supposed to be. Check daemon worker")
|
|
slist = next(iter(response.values()))
|
|
return slist
|
|
|
|
def make_snapshot_objects(self):
|
|
snapshot_object_list = list()
|
|
for snapshot in self.get_snapshot_list():
|
|
snapshot_obj = Snapshot(snapshot)
|
|
snapshot_object_list.append(snapshot_obj)
|
|
return snapshot_object_list
|
|
|
|
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()) |