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() {
/* 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");
$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;
+ }
+ //Check for user supplied options
+ $opts = "";
+ if ($params['force']) {
+ $opts .= "-f ";
+ }
+ $disks = preg_split("/[,;]/", $params['devices']);
+ $vdev = new OMVModuleZFSVdev($params['name'], $pooltype, $disks);
+ $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());
+ }
+
public function getObjectTree($params, $context) {
$this->validateMethodContext($context, array("role" => OMV_ROLE_ADMINISTRATOR));
$objects = OMVModuleZFSUtil::getZFSFlatArray();
public function addObject($params, $context) {
$this->validateMethodContext($context, array("role" => OMV_ROLE_ADMINISTRATOR));
switch ($params['type']) {
- case "Filesystem":
+ case "filesystem":
$name = $params['path'] . "/" . $params['name'];
$tmp = new OMVModuleZFSDataset($name);
break;
- case "Snapshot":
+ case "snapshot":
$name = $params['path'] . "@" . $params['name'];
$tmp = new OMVModuleZFSSnapshot($name);
break;
- case "Volume":
+ case "volume":
$name = $params['path'] . "/" . $params['name'];
$tmp = new OMVModuleZFSZvol($name);
$tmp->create($params['size']);
break;
- case "Pool":
- $name = $params['path'] . "/" . $params['name'];
- $tmp = new OMVModuleZFSZpool($name);
- break;
default:
throw new OMVModuleZFSException("Illegal type provided: " . $params['type']);
break;