Esempio n. 1
0
	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
Esempio n. 2
0
	def destroy(self):
		"""zfs destroy"""
		self.has_permission("delete")
		out = run_command(["sudo", "zfs", "destroy", self.name])
		if out=="okay":
			self.delete()
			return out
Esempio n. 3
0
	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
Esempio n. 4
0
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"
Esempio n. 5
0
	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
Esempio n. 6
0
	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"