def zpool_detach(self, disk): """Runs zpool detach""" self.has_permission("write") out = run_command(["sudo", "zpool", "detach", self.name, disk]) if out=="okay": self.sync() return out
def destroy(self): """zfs destroy""" self.has_permission("delete") out = run_command(["sudo", "zfs", "destroy", self.name]) if out=="okay": self.delete() return out
def take_snapshot(self, snapshot_name): """zfs snapshot""" self.has_permission("write") out = run_command(["sudo", "zfs", "snapshot", "{0}@{1}".format(self.name, snapshot_name)]) if out=="okay": frappe.get_doc("ZFS Pool", self.zfs_pool).sync_datasets() return out
def zpool_create(name, type, disk1, disk2): """zpool create""" if type=="Disk": args = ["sudo", "zpool", "create", name, disk1] else: args = ["sudo", "zpool", "create", name, type.lower(), disk1, disk2] if run_command(args)=="okay": zfs_pool = frappe.new_doc("ZFS Pool") zfs_pool.name = name zfs_pool.sync() return "okay"
def zpool_add(self, type, disk1, disk2): """Runs zpool add""" self.has_permission("write") if type.lower()=="disk": args = ["sudo", "zpool", "add", self.name, disk1] else: args = ["sudo", "zpool", "add", self.name, type.lower(), disk1, disk2] out = run_command(args) if out=="okay": self.sync() return out
def zpool_destroy(self): """Runs zpool destroy""" self.has_permission("delete") out = run_command(["sudo", "zpool", "destroy", self.name]) if out=="okay": # remove references from disk frappe.db.sql("update tabDisk set zfs_pool='' where zfs_pool=%s", self.name) # delete zfs dataset records for d in frappe.db.get_all("ZFS Dataset", filters={"zfs_pool": self.name}): frappe.delete_doc("ZFS Dataset", d.name) # delete record self.delete() return "okay"