Code

Updated FAI partition handling
[gosa.git] / gosa-plugins / fai / admin / fai / class_faiPartitionTable.inc
index 7dad1c3fa523b337cfe8efda169a459846db4e90..9534a765e1afef84ca18981a5b89c3b45e717139 100644 (file)
@@ -8,7 +8,7 @@ class faiPartitionTable extends plugin
   var $objectclasses    = array("top","FAIclass","FAIpartitionTable");
 
   var $subAttributes      = array("cn","description");
-  var $subPartAttributes  = array("cn","FAIpartitionNr","FAIpartitionSize","FAImountPoint","FAIfsType","FAIpartitionType","FAImountOptions","FAIfsOptions","FAIpartitionFlags","description");
+  var $subPartAttributes  = array("cn","FAIpartitionNr","FAIpartitionSize","FAImountPoint","FAIfsType","FAIpartitionType","FAImountOptions","FAIfsOptions","FAIpartitionFlags","description","FAIfsCreateOptions","FAIfsTuneOptions","FAIfsOptions","FAIpartitionFlags","FAIlvmDevice");
 
   var $sub64coded = array();
   var $subBinary = array();
@@ -50,14 +50,15 @@ class faiPartitionTable extends plugin
 
         // Transform disk type into image later...
         if (!isset($obj['FAIdiskType'])){
-          $objects['type']        = "old";
+          $objects['FAIdiskType']        = "old";
         } else {
-          $objects['type']        = $obj['FAIdiskType'];
+          $objects['FAIdiskType']        = $obj['FAIdiskType'];
         }
+        $objects['FAIdiskOption']        = $obj['FAIdiskOption'];
 
         // Transform potential lvm information
         if (isset($obj['FAIlvmDevice'])){
-          $objects['vg'] = $obj['FAIlvmDevice'];
+          $objects['FAIlvmDevice'] = $obj['FAIlvmDevice'];
         }
 
         $objects['dn']          = $obj['dn'];
@@ -124,15 +125,26 @@ class faiPartitionTable extends plugin
      * This code adds a new HDD to the disks 
      * A new Dialog will be opened 
      */
-    if(isset($_POST['AddDisk']) && !preg_match("/freeze/i",$this->FAIstate)){
+    if((isset($_POST['AddDisk']) || isset($_POST['AddRaid']) || isset($_POST['AddVolgroup'])) && 
+        !preg_match("/freeze/i",$this->FAIstate)){
       $usedDiskNames =array();
       foreach($this->disks as $key=>$disk){
         $usedDiskNames[]= $key;
       }
-      $this->dialog = new faiPartitionTableEntry($this->config,$this->dn,$usedDiskNames); 
+      if ($this->FAIpartitionMethod == "setup-storage") {
+        if(isset($_POST['AddDisk'])) $type = "disk";
+        if(isset($_POST['AddRaid'])) $type = "raid";
+        if(isset($_POST['AddAddVolgroup'])) $type = "lvm";
+        $this->dialog = new faiDiskEntry($this->config,$this->dn,$this, array(),$type); 
+      } else {
+        $this->dialog = new faiPartitionTableEntry($this->config,$this->dn,$this); 
+      }
+
       $this->dialog->set_acl_base($this->acl_base_for_current_object($this->dn));
       $this->dialog->set_acl_category("fai");
       $this->dialog->FAIstate = $this->FAIstate;
+
+
       $this->is_dialog = true;
     }
 
@@ -191,8 +203,8 @@ class faiPartitionTable extends plugin
               }
 
               // Used by volgroup?
-              if (isset($this->disks[$name]["vg"])){
-                foreach ($this->disks[$name]["vg"] as $vg_element) {
+              if (isset($this->disks[$name]["FAIlvmDevice"])){
+                foreach ($this->disks[$name]["FAIlvmDevice"] as $vg_element) {
                   if (preg_match("/^${device}\.?[0-9]+$/", $vg_element)){
                     $ignore = true;
                     break 2;
@@ -246,12 +258,30 @@ class faiPartitionTable extends plugin
           $dn = "new";
         }
 
-        $this->dialog = new faiPartitionTableEntry($this->config,$this->dn,$usedDiskNames,$this->disks[$Udisk]); 
-        $this->dialog->set_acl_base($this->acl_base_for_current_object($dn));
-        $this->dialog->set_acl_category("fai");
-        $this->dialog->FAIstate = $this->FAIstate;
-
-        $this->is_dialog = true;
+        if(isset($this->disks[$Udisk]['FAIdiskType'])){
+          switch($this->disks[$Udisk]['FAIdiskType']){
+            case 'raid': 
+            case 'lvm': 
+            case 'disk': 
+              $this->dialog = new faiDiskEntry(
+                  $this->config,$this->dn,$this,$this->disks[$Udisk], 
+                  $this->disks[$Udisk]['FAIdiskType']); 
+              break;
+            case 'old': 
+              $this->dialog = new faiPartitionTableEntry(
+                  $this->config,$this->dn,$usedDiskNames,$this->disks[$Udisk]); 
+              break;
+          }
+        }else{
+          $this->dialog = new faiPartitionTableEntry(
+              $this->config,$this->dn,$usedDiskNames,$this->disks[$Udisk]); 
+        }
+        if($this->dialog){
+          $this->dialog->set_acl_base($this->acl_base_for_current_object($dn));
+          $this->dialog->set_acl_category("fai");
+          $this->dialog->FAIstate = $this->FAIstate;
+          $this->is_dialog = true;
+        }
       }
     }
 
@@ -339,10 +369,21 @@ class faiPartitionTable extends plugin
     /* Assign mode */
     if ($this->FAIpartitionMethod == ""){
       $smarty->assign("mode", "");
+      $smarty->assign("storage_mode", "disabled");
     } else {
       $smarty->assign("mode", "checked");
+      $smarty->assign("storage_mode", "");
+    }
+    if (!count($this->disks)) {
+      $smarty->assign("lockmode", "");
+    } else {
+      $smarty->assign("lockmode", "disabled");
+    }
+    if (isset($this->disks['raid'])){
+      $smarty->assign("addraid", "disabled");
+    } else {
+      $smarty->assign("addraid", "");
     }
-    $smarty->assign("lockmode", "disabled");
 
     /* Divlist containing disks */
     $divlist = new divSelectBox("FAItemplates");
@@ -374,7 +415,7 @@ class faiPartitionTable extends plugin
           $edit_link = "<a href='?plug=".$_GET['plug']."&amp;act=edit&amp;id=".$key."'>".$key."</a>";
           $types= array("old" => "plugins/fai/images/fai_partitionTable.png", "disk" => "plugins/fai/images/fai_partitionTable.png",
                         "raid" => "plugins/fai/images/raid.png", "lvm" => "plugins/ogroups/images/list_ogroup.png");
-          $type = isset($disk['type'])?$types[$disk['type']]:$types['old'];
+          $type = isset($disk['FAIdiskType'])?$types[$disk['FAIdiskType']]:$types['old'];
           $divlist->AddEntry(array( 
               array("string"=> "<img border='0' src='".$type."'>", "attach"=>"style='width:16px'"),
               array("string"=> $edit_link, "attach"=>"style='width:100px'"),
@@ -429,6 +470,15 @@ class faiPartitionTable extends plugin
         $this->$attrs = $_POST[$attrs];
       }
     }
+    if(isset($_POST['faiPartitionTable'])){
+      if(!count($this->disks)){
+        if(isset($_POST['mode'])){
+          $this->FAIpartitionMethod = "setup-storage";
+        }else{
+          $this->FAIpartitionMethod = "";
+        }
+      }
+    }
   }
 
 
@@ -490,7 +540,17 @@ class faiPartitionTable extends plugin
     foreach($order as $cn=>$disk){
       $disk_dn                    = "cn=".$disk['cn'].",".$this->dn;
       $disk_attrs['cn']           =  $disk['cn'];
-      $disk_attrs['description']  =  $disk['description']; 
+      $disk_attrs['description']  =  $disk['description'];
+  
+      if(isset($disk['FAIdiskType'])){
+        $disk_attrs['FAIdiskType']  =  $disk['FAIdiskType']; 
+      }
+      if(isset($disk['FAIdiskOption'])){
+        $disk_attrs['FAIdiskOption']  =  $disk['FAIdiskOption']; 
+      }
+      if(isset($disk['FAIlvmDevice'])){
+        $disk_attrs['FAIlvmDevice']  =  $disk['FAIlvmDevice']; 
+      }
 
       if(empty($disk_attrs['description']) && $disk['status'] == "edited"){
         $disk_attrs['description'] = array();
@@ -520,6 +580,7 @@ class faiPartitionTable extends plugin
       }
 
       if($disk['status']!="delete")
+
       /* Add all partitions */
       foreach($disk['partitions'] as $key => $partition){
         $partition_attrs = array();