"force":{"type":"boolean"},
"mountpoint":{"type":"string"},
"name":{"type":"string"},
- "devices":{"type":"string"}
+ "devices":{"type":"string"},
+ "diskpath":{"type":"boolean"}
}
}');
switch ($params['pooltype']) {
$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);
+ //Use /dev/disk/by-path as suggested in ZoL FAQ.
+ if ($params['diskpath']) {
+ try {
+ if (file_exists("/dev/disk/by-path/")) {
+ $tmp_disks = array();
+ foreach ($disks as $disk) {
+ $tmp_disks[] = OMVModuleZFSUtil::getDiskPath($disk);
+ }
+ $disks = $tmp_disks;
+ }
+ } catch (OMVModuleZFSException $e) {
+ //Do nothing if an excpetion is thrown
}
- $disks = $tmp_disks;
}
$vdev = new OMVModuleZFSVdev($params['name'], $pooltype, $disks);
"type":"object",
"properties":{
"type":{"type":"string","enum":["filesystem","snapshot",' .
- '"volume"]},
+ '"volume","clone"]},
"path":{"type":"string"},
"name":{"type":"string"},
- "size":{"type":"string"}
+ "size":{"type":"string"},
+ "clonename":{"type":"string"},
+ "mountpoint":{"type":"string"}
}
}');
switch ($params['type']) {
+ case "clone":
+ $tmp = new OMVModuleZFSSnapshot($params['path']);
+ $tmp->clonesnap($params['clonename']);
+ break;
case "filesystem":
$name = $params['path'] . "/" . $params['name'];
$tmp = new OMVModuleZFSDataset($name);
+ if (strlen($params['mountpoint']) > 0) {
+ $properties = array("mountpoint"=>$params['mountpoint']);
+ $tmp->setProperties($properties);
+ }
break;
case "snapshot":
$name = $params['path'] . "@" . $params['name'];
"type":"object",
"properties":{
"type":{"type":"string","enum":["Filesystem","Snapshot",' .
- '"Volume","Clone","Pool"]},
+ '"Volume","Pool"]},
"name":{"type":"string"}
}
}');
$tmp = new OMVModuleZFSDataset($name);
$tmp->destroy();
break;
- case "Clone":
- $tmp = new OMVModuleZFSDataset($name);
- $tmp->destroy();
- break;
case "Snapshot":
$tmp = new OMVModuleZFSSnapshot($name);
$tmp->destroy();
$name = $params['name'];
switch ($params['type']) {
case "Filesystem":
- case "Clone":
$tmp = new OMVModuleZFSDataset($name);
break;
case "Snapshot":
"type":"object",
"properties":{
"type":{"type":"string","enum":["Filesystem","Snapshot",' .
- '"Volume","Clone","Pool"]},
+ '"Volume","Pool"]},
"name":{"type":"string"},
"properties":{"type":"array","items":{
"type":"object",
global $xmlConfig;
switch ($params['type']) {
case "Filesystem":
- case "Clone":
$tmp = new OMVModuleZFSDataset($params['name']);
break;
case "Snapshot":
"type":"object",
"properties":{
"type":{"type":"string","enum":["Filesystem","Snapshot",' .
- '"Volume","Clone","Pool"]},
+ '"Volume","Pool"]},
"name":{"type":"string"},
"property":{"type":"string"}
}
$this->updateBgProcStatus($bgStatusFilename, "outputfilename", $bgOutputFilename);
switch ($params['type']) {
case "Filesystem":
- case "Clone":
$tmp = new OMVModuleZFSDataset($params['name']);
break;
case "Snapshot":
"type":"object",
"properties":{
"name":{"type":"string"},
- "type":{"type":"string","enum":["Filesystem","Clone"]},
+ "type":{"type":"string","enum":["Filesystem"]},
"sharename":{'.$GLOBALS['OMV_JSONSCHEMA_SHARENAME'].'},
"comment":{"type":"string"},
"mode":{"type":"string","enum":["700","750","755",'.
case "Filesystem":
$tmp = new OMVModuleZFSDataset($params['name']);
break;
- case "Clone":
- $tmp = new OMVModuleZFSDataset($params['name']);
- break;
default:
throw new OMVModuleZFSException("Illegal type provided: " . $params['type']);
break;
$cmd = "zfs get all {$params['name']}";
break;
case "Pool":
- $output .= "Pool details (zpool get all):\n\r\n\r";
+ $output .= "Pool status (zpool status):\n\r\n\r";
+ $cmd = "zpool status {$params['name']}";
+ OMVModuleZFSUtil::exec($cmd,$out,$res);
+ $output .= implode("\n\r", $out);
+ unset($out);
+ $output .= "\n\r\n\rPool details (zpool get all):\n\r\n\r";
$cmd = "zpool get all {$params['name']}";
+ OMVModuleZFSUtil::exec($cmd,$out,$res);
+ $output .= implode("\n\r", $out);
+ unset($out);
+ $output .= "\n\r\n\rPool filesystem details (zfs get all):\n\r\n\r";
+ $cmd = "zfs get all {$params['name']}";
break;
default:
throw new OMVModuleZFSException("Incorrect type provided");
"vdevtype":{"type":"string","enum":["basic","mirror",' .
'"raidz1","raidz2","raidz3"]},
"name":{"type":"string"},
- "devices":{"type":"string"}
+ "devices":{"type":"string"},
+ "force":{"type":"boolean"},
+ "diskpath":{"type":"boolean"}
}
}');
$pool = new OMVModuleZFSZpool($params['name']);
throw new OMVModuleZFSException("Incorrect pool type specified");
break;
}
- //Use /dev/disk/by-path as deafult when creating new pools as suggested in ZoL FAQ.
+ if ($params['force']) {
+ $opts .= "-f ";
+ }
$disks = preg_split("/[,;]/", $params['devices']);
- if (file_exists("/dev/disk/by-path/")) {
- $tmp_disks = array();
- foreach ($disks as $disk) {
- $tmp_disks[] = OMVModuleZFSUtil::getDiskPath($disk);
+ //Use /dev/disk/by-path as suggested in ZoL FAQ.
+ if ($params['diskpath']) {
+ try {
+ if (file_exists("/dev/disk/by-path/")) {
+ $tmp_disks = array();
+ foreach ($disks as $disk) {
+ $tmp_disks[] = OMVModuleZFSUtil::getDiskPath($disk);
+ }
+ $disks = $tmp_disks;
+ }
+ } catch (OMVModuleZFSException $e) {
+ //Do nothing if an exception is thrown
}
- $disks = $tmp_disks;
}
$vdev[] = new OMVModuleZFSVdev($params['name'], $pooltype, $disks);
- $pool->addVdev($vdev);
+ $pool->addVdev($vdev, $opts);
//Ugly fix to solve the problem of blkid not displaying info on newly created pools
$pool->export();
$pool->import($pool->getName());