Code

Beautified FAI templates
[gosa.git] / gosa-plugins / fai / admin / fai / class_faiPartition.inc
index 059ebda2b7162e13b3b0b4b5c6c27d56ba9d4e60..ad553a2348acd2107c0841b3b4bd92271772a260 100644 (file)
@@ -37,7 +37,6 @@ class faiPartition extends plugin
   var $preserve = false;
   var $preserveType = "always";
 
-  var $status = "";
   var $raidDevices = array();
 
   // Once we've exceeded the primary partition limit,
@@ -48,7 +47,6 @@ class faiPartition extends plugin
   {
 
     $this->parent = $parent;
-    $this->status = "new";
     $this->FAIdiskType = $type;
 
     // Check if we should be able to add primary partitions.
@@ -74,8 +72,6 @@ class faiPartition extends plugin
         }
       }
 
-      $this->status = $object['status'];
-
       if($type == "disk" || $type =="lvm"){
 
         /* Prepare size attribute 
@@ -124,7 +120,7 @@ class faiPartition extends plugin
       }elseif($type == "raid"){
    
         // Extract raid devices out of the partition size attribute. 
-        $usedDisks = split(",",$this->FAIpartitionSize);
+        $usedDisks = explode(",",$this->FAIpartitionSize);
         foreach($usedDisks as $disk){
           $name = preg_replace("/:.*$/","",$disk);
           $spare = preg_match("/:spare/",$disk);
@@ -204,7 +200,8 @@ class faiPartition extends plugin
         "ext4" => _("ext4"),
         "reiserfs" => _("reiser fs"),
         "xfs" => _("xfs"),
-        "btrfs" => _("btrfs"));
+        "btrfs" => _("btrfs"),
+        "-" => "-");
 
     $smarty->assign("partitionTypes", $types);
     $smarty->assign("partitionSizeTypes", $partitionSizeTypes);
@@ -239,18 +236,44 @@ class faiPartition extends plugin
    */
   function getPartitionList()
   {
-    $array = array();  
+    $may = $used = array();  
     foreach($this->parent->parent->disks as $disk){
-      if($disk['FAIdiskType'] != "raid"){
-        foreach($disk['partitions'] as $key => $part){
+
+      // Skip ourselves 
+      if($disk['cn'] == $this->parent->DISKcn) continue;
+
+      // Add partition from lvm combinations 
+      if($disk['FAIdiskType'] == "lvm"){
+        $used = array_merge($used,$disk['FAIlvmDevice']);
+      }
+
+      foreach($disk['partitions'] as $key => $part){
+
+        // Add disks of raid arrays, to the used list.
+        if($disk['FAIdiskType'] == "raid"){
+          foreach(explode(",",$part['FAIpartitionSize']) as $rDevice){
+            $used[] = preg_replace("/:.*$/i","",$rDevice);
+          }
+        }
+
+        // Collect all available disks 
+        if($disk['FAIdiskType'] == "disk"){
           $name = $part['cn'];
           if(!isset($this->raidDevices[$name])){
-            $array[$name] = $name." (".$disk['cn'].")";
+            $may[] = $name;
           }
         }
       }
     }
-    return($array);
+    // Check which of the available disks are unused. 
+    $ret = array();
+    foreach($may as $val){
+      if(!in_array($val,$used)){
+        $ret[$val] = $val;
+      }
+    }
+    return($ret);
   }
 
 
@@ -386,7 +409,7 @@ class faiPartition extends plugin
     }
 
     // check mount point 
-    if($this->FAIfsType != "swap"){
+    if($this->FAIfsType != "swap" && $this->FAIfsType != "-"){
       if(!preg_match("#^/#",$this->FAImountPoint)){
         $msgs[] = msgPool::invalid(_("Mount point"));
       }
@@ -437,7 +460,6 @@ class faiPartition extends plugin
       }
       $ret['FAIpartitionSize'] = trim($ret['FAIpartitionSize'],",");
     }
-    $ret['status'] = $this->status;
 
     if($this->FAIfsType == "swap"){
       $ret['FAImountPoint'] = "swap";