X-Git-Url: http://git.datanom.net/omvzfs.git/blobdiff_plain/a4056e15d509949aefdd5efad6da7c752c483fcc..0b156fc35ef4c22fbffd506fd2c8bbb2cf6187db:/src/Dataset.php?ds=sidebyside diff --git a/src/Dataset.php b/src/Dataset.php index c620e8a..afdd172 100644 --- a/src/Dataset.php +++ b/src/Dataset.php @@ -1,4 +1,5 @@ name; - } + // Associations + // Operations - /** - * XXX - * - * @return int XXX - * @access public - */ - public function getSize() { - trigger_error('Not Implemented!', E_USER_WARNING); - } + /** + * Constructor + * + * @param string $name Name of the new Dataset + * @param array $features An array of features (strings) in the form = to set when creating the Dataset + * @throws OMVModuleZFSException + * + */ + public function __construct($name, array $features = null) { + $cmd = "zfs create "; + if (isset($features)) { + foreach ($features as $feature) { + $cmd .= "-o " . $feature . " "; + } + } + $cmd .= $name . " 2>&1"; + exec($cmd,$out,$res); + if ($res == 1) { + throw new OMVModuleZFSException(implode("\n", $out)); + } + unset($res); + $this->name = $name; + if (isset($features)) { + $this->features = $features; + foreach ($features as $feature) { + if (preg_match('/^mountpoint\=(.*)$/', $feature, $res)) { + $this->mountPoint = $res[1]; + continue; + } + } + } else { + $this->features = array(); + $this->mountPoint = "/" . $name; + } + } - /** - * XXX - * - * @return string XXX - * @access public - */ - public function getMountPoint() { - trigger_error('Not Implemented!', E_USER_WARNING); - } + /** + * Return name of the Dataset + * + * @return string $name + * @access public + */ + public function getName() { + return $this->name; + } - /** - * XXX - * - * @return array XXX - * @access public - */ - public function getFeatures() { - trigger_error('Not Implemented!', E_USER_WARNING); - } + /** + * Get the mountpoint of the Dataset + * + * @return string $mountPoint + * @access public + */ + public function getMountPoint() { + return $this->mountPoint; + } - /** - * XXX - * - * @param array XXX - * @return void XXX - * @access public - */ - public function setFeatures($list) { - trigger_error('Not Implemented!', E_USER_WARNING); - } + /** + * Get an array of features associated with the Dataset + * + * @return array $features + * @access public + */ + public function getFeatures() { + return $this->features; + } + + /** + * Sets a number of Dataset properties. If a property is already set it will be updated with the new value. + * + * @param array $features An array of strings in format = + * @return void + * @access public + */ + public function setFeatures($features) { + foreach ($features as $newfeature) { + $cmd = "zfs set " . $newfeature . " " . $this->name; + exec($cmd,$out,$res); + if ($res == 1) { + throw new OMVModuleZFSException(implode("\n", $out)); + } + $tmp = explode("=", $newfeature); + $newfeaturek = $tmp[0]; + $found = false; + for ($i=0; $ifeatures); $i++) { + $tmp = explode("=", $this->features[$i]); + $oldfeaturek = $tmp[0]; + if (strcmp($newfeaturek, $oldfeaturek) == 0) { + $this->features[$i] = $newfeature; + $found = true; + continue; + } + } + if (!$found) { + array_push($this->features, $newfeature); + } + } + } + + /** + * Destroy the Dataset. + * + */ + public function destroy() { + $cmd = "zfs destroy " . $this->name; + exec($cmd,$out,$res); + if ($res == 1) { + throw new OMVModuleZFSException(implode("\n", $out)); + } + } }