mirror of
https://github.com/psy0rz/zfs_autobackup.git
synced 2025-04-13 22:47:12 +03:00
prevent emitting useless error messages in some cases when holding/release/destroying snapshots
This commit is contained in:
parent
56d7f8c754
commit
1d9c25d3b4
@ -26,7 +26,7 @@ except ImportError:
|
|||||||
use_color=False
|
use_color=False
|
||||||
|
|
||||||
VERSION="3.0-rc5"
|
VERSION="3.0-rc5"
|
||||||
|
HEADER="zfs-autobackup v{} - Copyright 2020 E.H.Eefting (edwin@datux.nl)\n".format(VERSION)
|
||||||
|
|
||||||
class Log:
|
class Log:
|
||||||
def __init__(self, show_debug=False, show_verbose=False):
|
def __init__(self, show_debug=False, show_verbose=False):
|
||||||
@ -641,9 +641,13 @@ class ZfsDataset():
|
|||||||
|
|
||||||
def destroy(self, fail_exception=False):
|
def destroy(self, fail_exception=False):
|
||||||
"""destroy the dataset. by default failures are not an exception, so we can continue making backups"""
|
"""destroy the dataset. by default failures are not an exception, so we can continue making backups"""
|
||||||
|
|
||||||
self.verbose("Destroying")
|
self.verbose("Destroying")
|
||||||
|
|
||||||
|
self.release()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.zfs_node.run(["zfs", "destroy", self.name])
|
self.zfs_node.run(["zfs", "destroy", "-d", self.name])
|
||||||
self.invalidate()
|
self.invalidate()
|
||||||
self.force_exists=False
|
self.force_exists=False
|
||||||
return(True)
|
return(True)
|
||||||
@ -695,16 +699,35 @@ class ZfsDataset():
|
|||||||
return(False)
|
return(False)
|
||||||
|
|
||||||
|
|
||||||
|
@property
|
||||||
|
def _hold_name(self):
|
||||||
|
return("zfs_autobackup:"+self.zfs_node.backup_name)
|
||||||
|
|
||||||
|
|
||||||
|
@property
|
||||||
|
def holds(self):
|
||||||
|
"""get list of holds for dataset"""
|
||||||
|
|
||||||
|
output=self.zfs_node.run([ "zfs" , "holds", "-H", self.name ], valid_exitcodes=[ 0 ], tab_split=True, readonly=True)
|
||||||
|
return(map(lambda fields: fields[1], output))
|
||||||
|
|
||||||
|
|
||||||
|
def is_hold(self):
|
||||||
|
"""did we hold this snapshot?"""
|
||||||
|
return(self._hold_name in self.holds)
|
||||||
|
|
||||||
|
|
||||||
def hold(self):
|
def hold(self):
|
||||||
"""hold dataset"""
|
"""hold dataset"""
|
||||||
self.debug("holding")
|
self.debug("holding")
|
||||||
self.zfs_node.run([ "zfs" , "hold", "zfs_autobackup:"+self.zfs_node.backup_name, self.name ], valid_exitcodes=[ 0,1 ])
|
self.zfs_node.run([ "zfs" , "hold", self._hold_name, self.name ], valid_exitcodes=[ 0,1 ])
|
||||||
|
|
||||||
|
|
||||||
def release(self):
|
def release(self):
|
||||||
"""release dataset"""
|
"""release dataset"""
|
||||||
self.debug("releasing")
|
if self.zfs_node.readonly or self.is_hold():
|
||||||
self.zfs_node.run([ "zfs" , "release", "zfs_autobackup:"+self.zfs_node.backup_name, self.name ], valid_exitcodes=[ 0,1 ])
|
self.debug("releasing")
|
||||||
|
self.zfs_node.run([ "zfs" , "release", self._hold_name, self.name ], valid_exitcodes=[ 0,1 ])
|
||||||
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@ -1324,7 +1347,7 @@ class ZfsAutobackup:
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
|
||||||
parser = argparse.ArgumentParser(
|
parser = argparse.ArgumentParser(
|
||||||
description='ZFS autobackup '+VERSION,
|
description=HEADER,
|
||||||
epilog='When a filesystem fails, zfs_backup will continue and report the number of failures at that end. Also the exit code will indicate the number of failures.')
|
epilog='When a filesystem fails, zfs_backup will continue and report the number of failures at that end. Also the exit code will indicate the number of failures.')
|
||||||
parser.add_argument('--ssh-source', default=None, help='Source host to get backup from. (user@hostname) Default %(default)s.')
|
parser.add_argument('--ssh-source', default=None, help='Source host to get backup from. (user@hostname) Default %(default)s.')
|
||||||
parser.add_argument('--ssh-target', default=None, help='Target host to push backup to. (user@hostname) Default %(default)s.')
|
parser.add_argument('--ssh-target', default=None, help='Target host to push backup to. (user@hostname) Default %(default)s.')
|
||||||
@ -1394,7 +1417,7 @@ class ZfsAutobackup:
|
|||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
|
|
||||||
self.verbose ("zfs-autobackup v{} - Copyright 2020 E.H.Eefting (edwin@datux.nl)\n".format(VERSION))
|
self.verbose (HEADER)
|
||||||
|
|
||||||
if self.args.test:
|
if self.args.test:
|
||||||
self.verbose("TEST MODE - SIMULATING WITHOUT MAKING ANY CHANGES")
|
self.verbose("TEST MODE - SIMULATING WITHOUT MAKING ANY CHANGES")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user