-#!/usr/bin/python2.6
+#!/usr/bin/python2
#
# CDDL HEADER START
#
cmd = [ZFSCMD, "list", "-H", "-t", "filesystem", \
"-o", "name,mountpoint", "-s", "name"]
try:
- p = subprocess.Popen(cmd,
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE,
- close_fds=True)
- outdata,errdata = p.communicate()
- err = p.wait()
+ outdata,errdata = util.run_command(cmd, True)
except OSError, message:
raise RuntimeError, "%s subprocess error:\n %s" % \
(cmd, str(message))
cmd = [ZFSCMD, "list", "-H", "-t", "volume", \
"-o", "name", "-s", "name"]
try:
- p = subprocess.Popen(cmd,
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE,
- close_fds=True)
- outdata,errdata = p.communicate()
- err = p.wait()
- except OSError, message:
- raise RuntimeError, "%s subprocess error:\n %s" % \
- (cmd, str(message))
- if err != 0:
+ outdata,errdata = util.run_command(cmd, True)
+ except RuntimeError, message:
Datasets._volumeslock.release()
- raise RuntimeError, '%s failed with exit code %d\n%s' % \
- (str(cmd), err, errdata)
+ raise RuntimeError, str(message)
+
for line in outdata.rstrip().split('\n'):
Datasets.volumes.append(line.rstrip())
Datasets._volumeslock.release()
snaps = []
cmd = [ZFSCMD, "get", "-H", "-p", "-o", "value,name", "creation"]
try:
- p = subprocess.Popen(cmd,
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE,
- close_fds=True)
- outdata,errdata = p.communicate()
- err= p.wait()
- except OSError, message:
+ outdata,errdata = util.run_command(cmd, True)
+ except RuntimeError, message:
Datasets.snapshotslock.release()
- raise RuntimeError, "%s subprocess error:\n %s" % \
- (cmd, str(message))
- if err != 0:
- Datasets.snapshotslock.release()
- raise RuntimeError, '%s failed with exit code %d\n%s' % \
- (str(cmd), err, errdata)
+ raise RuntimeError, str(message)
for dataset in outdata.rstrip().split('\n'):
if re.search("@", dataset):
insort(snaps, dataset.split())
# simple zfs get command on the snapshot
cmd = [ZFSCMD, "get", "-H", "-o", "name", "type", self.name]
try:
- p = subprocess.Popen(cmd,
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE,
- close_fds=True)
- outdata,errdata = p.communicate()
- err = p.wait()
- except OSError, message:
- raise RuntimeError, "%s subprocess error:\n %s" % \
- (command, str(message))
- if err != 0:
- # Doesn't exist
- return False
+ outdata,errdata = util.run_command(cmd)
+ except RuntimeError, message:
+ raise RuntimeError, str(message)
result = outdata.rstrip()
if result == self.name:
return outdata.rstrip()
def set_user_property(self, prop, value):
- cmd = [PFCMD, ZFSCMD, "set", "%s=%s" % (prop, value), self.name]
+ cmd = [ZFSCMD, "set", "%s=%s" % (prop, value), self.name]
outdata,errdata = util.run_command(cmd)
def unset_user_property(self, prop):
- cmd = [PFCMD, ZFSCMD, "inherit", prop, self.name]
+ cmd = [ZFSCMD, "inherit", prop, self.name]
outdata,errdata = util.run_command(cmd)
class Snapshot(ReadableDataset):
if self.exists() == False:
return
if deferred == False:
- cmd = [PFCMD, ZFSCMD, "destroy", self.name]
+ cmd = [ZFSCMD, "destroy", self.name]
else:
- cmd = [PFCMD, ZFSCMD, "destroy", "-d", self.name]
+ cmd = [ZFSCMD, "destroy", "-d", self.name]
outdata,errdata = util.run_command(cmd)
# Clear the global snapshot cache so that a rescan will be
if self.exists() == False:
return
- cmd = [PFCMD, ZFSCMD, "hold", tag, self.name]
+ cmd = [ZFSCMD, "hold", tag, self.name]
outdata,errdata = util.run_command(cmd)
def holds(self):
if self.exists() == False:
return
- cmd = [PFCMD, ZFSCMD, "release", tag, self.name]
+ cmd = [ZFSCMD, "release", tag, self.name]
outdata,errdata = util.run_command(cmd)
# Releasing the snapshot might cause it get automatically
Recursively snapshot childfren of this dataset.
Default = False
"""
- cmd = [PFCMD, ZFSCMD, "snapshot"]
+ cmd = [ZFSCMD, "snapshot"]
if recursive == True:
cmd.append("-r")
cmd.append("%s@%s" % (self.name, snaplabel))