ZFS_Snapshot_Manager/zfssm_client.py

40 lines
1.4 KiB
Python

import Pyro4
# from argparse import ArgumentParser
## TODO Arguments
from Snapshot import Snapshot
import time
from zfssmd_worker import DEFAULT_REFRESH_INTERVAL
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
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())