]> git.datanom.net - omvzfs.git/commitdiff
Support force create pools.
authorNiclas Berglind <nb@kjam.se>
Sat, 13 Sep 2014 06:35:22 +0000 (08:35 +0200)
committerMichael Rasmussen <mir@datanom.net>
Sat, 13 Sep 2014 12:18:46 +0000 (14:18 +0200)
Signed-off-by: Niclas Berglind <nb@kjam.se>
gui/js/omv/module/admin/storage/zfs/Overview.js
gui/rpc/zfs.inc
src/Zpool.php

index 6c7da08ede589db4ce69015cfc1704874e7d21c6..22f74dbf3f97235e374268accdf870bec91870bb 100644 (file)
@@ -18,7 +18,7 @@ Ext.define("OMV.module.admin.storage.zfs.AddPool", {
        autoLoadData: false,
        hideResetButton: true,
        width: 550,
-       height: 260,
+       height: 350,
 
        getFormItems: function() {
                var me = this;
@@ -52,22 +52,22 @@ Ext.define("OMV.module.admin.storage.zfs.AddPool", {
                                change: function(combo, value) {
                                        var devicesField = this.findField("devices");
                                        switch(value) {
-                                       case "basic":
-                                               devicesField.minSelections = 1;
-                                       break;
-                                       case "mirror":
-                                               devicesField.minSelections = 2;
+                                               case "basic":
+                                                       devicesField.minSelections = 1;
                                                break;
-                                       case "raidz1":
-                                               devicesField.minSelections = 3;
+                                               case "mirror":
+                                                       devicesField.minSelections = 2;
                                                break;
-                                       case "raidz2":
-                                               devicesField.minSelections = 4;
-                                       case "raidz3":
-                                               devicesField.minSelections = 5;
+                                               case "raidz1":
+                                                       devicesField.minSelections = 3;
                                                break;
-                                       default:
-                                               devicesField.minSelections = 2;
+                                               case "raidz2":
+                                                       devicesField.minSelections = 4;
+                                               case "raidz3":
+                                                       devicesField.minSelections = 5;
+                                               break;
+                                               default:
+                                                       devicesField.minSelections = 2;
                                                break;
                                        }
                                        devicesField.validate();
@@ -136,6 +136,12 @@ Ext.define("OMV.module.admin.storage.zfs.AddPool", {
                                        flex: 1
                                }]
                        }
+               },{
+                       xtype: "checkbox",
+                       name: "force",
+                       fieldLabel: _("Force creation"),
+                       checked: false,
+                       boxLabel: _("Forces the creation of the pool even if errors are reported. Use with extreme caution!")
                }];
        },
 
@@ -595,7 +601,7 @@ Ext.define("OMV.module.admin.storage.zfs.Overview", {
                me.callParent(arguments);
        },
 
-       onAddButton: function() {
+       onAddButton: function() {
                var me = this;
                Ext.create("OMV.module.admin.storage.zfs.AddPool", {
                        listeners: {
index 28902edc860a1c565744dc430d5fea19d1fb828a..3bc3ec117d4fca266e5b056add8f5eb38dfc8aff 100644 (file)
@@ -54,9 +54,14 @@ class OMVRpcServiceZFS extends OMVRpcServiceAbstract {
                        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);
+               $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());
index 41fd05267b89a1e4be1476b5bdaefc7c8ba1b307..0ef151512ce2e6e73708cc9a232fc9f058889758 100644 (file)
@@ -122,7 +122,7 @@ class OMVModuleZFSZpool extends OMVModuleAbstract {
      * @throws OMVModuleZFSException
         */
 
-       public function __construct($vdev) {
+       public function __construct($vdev, $opts = "") {
                $create_pool = true;
 
                if (is_array($vdev)) {
@@ -144,7 +144,7 @@ class OMVModuleZFSZpool extends OMVModuleAbstract {
                $this->cache = null;
                $this->features = array();
                if ($create_pool) {
-                       $cmd = "zpool create $name $cmd 2>&1";
+                       $cmd = "zpool create $opts$name $cmd 2>&1";
 
                        OMVUtil::exec($cmd, $output, $result);
                        if ($result)
This page took 0.039176 seconds and 5 git commands to generate.