]> git.datanom.net - omvzfs.git/blobdiff - src/Utils.php
More problems with mountpoints.
[omvzfs.git] / src / Utils.php
index 251157a6abf564c8e13a977abffa4251c0003c2d..cc0814bdbc474f2383a9d7569c5ef2b88939cfb0 100644 (file)
@@ -8,21 +8,34 @@ require_once("Dataset.php");
  */
 class OMVModuleZFSUtil {
 
+       /**
+        * Get poolname from name of dataset/volume etc.
+        *
+        * @return string Name of the pool
+        */
+       public static function getPoolname($name) {
+               $tmp = preg_split('/[\/]+/', $name);
+               return($tmp[0]);
+       }
+
        /**
         * Get UUID of ZFS pool by name
         *
         * @return string UUID of the pool
         */
-       public static function getUUIDbyName($name) {
-               preg_match('/^([A-Za-z0-9]+)\/?.*$/', $name, $result);
-               $name = $result[1];
-               unset($result);
-               $cmd = "blkid -o full";
+       public static function getUUIDbyName($poolname) {
+               $cmd = "zpool get guid " . $poolname . " 2>&1";
                OMVModuleZFSUtil::exec($cmd, $out, $res);
-               foreach($out as $line) {
-                       if(preg_match('/^.*LABEL=\"' . $name . '\" UUID=\"([A-Za-z0-9]+)\".*TYPE=\"zfs_member\"$/', $line, $result)) {
-                               return($result[1]);
+               if (isset($out)) {
+                       $headers = preg_split('/[\s]+/', $out[0]);
+                       for ($i=0; $i<count($headers); $i++) {
+                               if (strcmp($headers[$i], "VALUE") === 0) {
+                                       $valuecol=$i;
+                                       break;
+                               }
                        }
+                       $line = preg_split('/[\s]+/', $out[1]);
+                       return $line[$valuecol];
                }
                return null;
        }
@@ -33,17 +46,16 @@ class OMVModuleZFSUtil {
         */
        public static function addMissingOMVMntEnt() {
                global $xmlConfig;
-               $msg = "";
                $cmd = "zpool list -H -o name";
                OMVModuleZFSUtil::exec($cmd, $out, $res);
                foreach($out as $name) {
                        $pooluuid = OMVModuleZFSUtil::getUUIDbyName($name);
                        $xpath = "//system/fstab/mntent[fsname=" . $pooluuid . "]";
-                       $object = $xmlConfig->get($xpath);
-                       if(is_null($object)) {
+                       $mountpoint = $xmlConfig->get($xpath);
+                       if (is_null($mountpoint)) {
                                $uuid = OMVUtil::uuid();
-                               $ds = new OMVModuleZFSDataset($name);
-                               $dir = $ds->getMountPoint();
+                               $pool = new OMVModuleZFSZpool($name);
+                               $dir = $pool->getMountPoint();
                                $object = array(
                                        "uuid" => $uuid,
                                        "fsname" => $pooluuid,
@@ -128,7 +140,7 @@ class OMVModuleZFSUtil {
                                        'parentid'=>$prefix . $root . "/" . $result[1],
                                        'name'=>$result[2],
                                        'type'=>ucfirst($type),
-                                       'icon'=>"images/zfs_disk.png",
+                                       'icon'=>"images/save.png",
                                        'path'=>$path,
                                        'expanded'=>$expanded);
                                array_push($objects,$tmp);
This page took 1.112446 seconds and 5 git commands to generate.