X-Git-Url: http://git.datanom.net/omvzfs.git/blobdiff_plain/57667eb1122f91698c785b05be94af26c00708bb..e20fe312a03771aeb3233e1ef640a3c9b8d9c737:/gui/rpc/zfs.inc?ds=sidebyside diff --git a/gui/rpc/zfs.inc b/gui/rpc/zfs.inc index b110ebe..84fa26d 100644 --- a/gui/rpc/zfs.inc +++ b/gui/rpc/zfs.inc @@ -11,6 +11,7 @@ require_once("zfs/Dataset.php"); require_once("zfs/Snapshot.php"); require_once("zfs/Zvol.php"); require_once("zfs/Zpool.php"); +require_once("zfs/NotifyListener.php"); class OMVRpcServiceZFS extends OMVRpcServiceAbstract { public function getName() { @@ -53,9 +54,27 @@ class OMVRpcServiceZFS extends OMVRpcServiceAbstract { throw new OMVModuleZFSException("Incorrect pool type specified"); break; } + //Check for user supplied options + $opts = ""; + if ($params['force']) { + $opts .= "-f "; + } + if (strlen($params['mountpoint']) > 0) { + $opts .= "-m " . $params['mountpoint'] . " "; + } + + //Use /dev/disk/by-path as deafult when creating new pools as suggested in ZoL FAQ. $disks = preg_split("/[,;]/", $params['devices']); + if (file_exists("/dev/disk/by-path/")) { + $tmp_disks = array(); + foreach ($disks as $disk) { + $tmp_disks[] = OMVModuleZFSUtil::getDiskPath($disk); + } + $disks = $tmp_disks; + } + $vdev = new OMVModuleZFSVdev($params['name'], $pooltype, $disks); - $pool = new OMVModuleZFSZpool($vdev); + $pool = new OMVModuleZFSZpool($vdev, $opts); //Ugly fix to solve the problem of blkid not displaying info on newly created pools $pool->export(); $pool->import($pool->getName()); @@ -249,15 +268,13 @@ class OMVRpcServiceZFS extends OMVRpcServiceAbstract { $this->validateMethodContext($context, array("role" => OMV_ROLE_ADMINISTRATOR)); //Get the UUID of the Pool - $pooluuid = OMVModuleZFSUtil::getUUIDbyName($params['name']); - preg_match('/^([A-Za-z0-9]+)\/?.*$/', $params['name'], $result); - $poolname = $result[1]; - unset($result); + $poolname = OMVModuleZFSUtil::getPoolname($params['name']); + $pooluuid = OMVModuleZFSUtil::getUUIDbyName($poolname); //Get the mntent object and fetch it's uuid. $xpath = "//system/fstab/mntent[fsname=" . $pooluuid . "]"; - $object = $xmlConfig->get($xpath); - $mntentref = $object['uuid']; + $mountpoint = $xmlConfig->get($xpath); + $mntentref = $mountpoint['uuid']; // Prepare the configuration object. Use the name of the shared // folder as the relative directory name of the share.