<?php
require_once("Exception.php");
require_once("openmediavault/util.inc");
+require_once("Snapshot.php");
/**
* XXX detailed description
*/
private $properties;
+ /**
+ * Array with Snapshots associated to the Zvol
+ *
+ * @var array $snapshots
+ * @access private
+ */
+ private $snapshots;
+
// Associations
// Operations
continue;
}
}
+ $cmd = "zfs list -r -o name -H -t snapshot " . $name . " 2>&1";
+ $this->exec($cmd, $out2, $res2);
+ foreach ($out2 as $line2) {
+ $this->snapshots[$line2] = new OMVModuleZFSSnapshot($line2);
+ }
+
}
/**
$this->updateProperty($property);
}
+ /**
+ * Creates a Snapshot and adds it to the existing list of snapshots associated
+ * with the Zvol.
+ *
+ * @param string $snap_name Name of the Snapshot to create.
+ * @param array $properties Optional array of properties to set on Snapshot
+ * @return void
+ * @access public
+ */
+ public function addSnapshot($snap_name, array $properties = null) {
+ $snap = new OMVModuleZFSSnapshot($snap_name);
+ $snap->create($properties);
+ $this->snapshots[$snap_name] = $snap;
+ }
+
+ /**
+ * Destroys a Snapshot on commandline and removes it from the Zvol.
+ *
+ * @param string $snap_name Name of the Snapshot to delete.
+ * @return void
+ * @access public
+ */
+ public function deleteSnapshot($snap_name) {
+ $this->snapshots[$snap_name]->destroy();
+ unset($this->snapshots[$snap_name]);
+ }
+
/**
* Helper function to execute a command and throw an exception on error
* (requires stderr redirected to stdout for proper exception message).