X-Git-Url: http://git.datanom.net/omvzfs.git/blobdiff_plain/a36352f77c28bdf8f2834a64bd8520b73bfcf040..42856e8b3cb0b621218f11d7828a51d03d77ae33:/gui/rpc/zfs.inc diff --git a/gui/rpc/zfs.inc b/gui/rpc/zfs.inc index 3d61e1a..f0b64f6 100644 --- a/gui/rpc/zfs.inc +++ b/gui/rpc/zfs.inc @@ -19,6 +19,7 @@ class OMVRpcServiceZFS extends OMVRpcServiceAbstract { /* Initialize the RPC service. Different methods of the RPC service are declared here*/ public function initialize() { + $this->registerMethod("addPool"); $this->registerMethod("getObjectTree"); $this->registermethod("passParam"); $this->registermethod("addObject"); @@ -30,6 +31,33 @@ class OMVRpcServiceZFS extends OMVRpcServiceAbstract { $this->registermethod("createShare"); } + public function addPool($params, $context) { + $this->validateMethodContext($context, array("role" => OMV_ROLE_ADMINISTRATOR)); + switch ($params['pooltype']) { + case "basic": + $pooltype = OMVModuleZFSVdevType::OMVMODULEZFSPLAIN; + break; + case "mirror": + $pooltype = OMVModuleZFSVdevType::OMVMODULEZFSMIRROR; + break; + case "raidz1": + $pooltype = OMVModuleZFSVdevType::OMVMODULEZFSRAIDZ1; + break; + case "raidz2": + $pooltype = OMVModuleZFSVdevType::OMVMODULEZFSRAIDZ2; + break; + case "raidz3": + $pooltype = OMVModuleZFSVdevType::OMVMODULEZFSRAIDZ3; + break; + default: + throw new OMVModuleZFSException("Incorrect pool type specified"); + break; + } + $disks = preg_split("/[,;]/", $params['devices']); + $vdev = new OMVModuleZFSVdev($params['name'], $pooltype, $disks); + $pool = new OMVModuleZFSZpool($vdev); + } + public function getObjectTree($params, $context) { $this->validateMethodContext($context, array("role" => OMV_ROLE_ADMINISTRATOR)); $objects = OMVModuleZFSUtil::getZFSFlatArray();