Code

Updated FAI partition handling
[gosa.git] / gosa-plugins / fai / admin / fai / class_faiPartitionTable.inc
index 866ff64a2d7fec240e9d645ab4edc7294ed21df8..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();
@@ -125,51 +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;
       }
       if ($this->FAIpartitionMethod == "setup-storage") {
-        $this->dialog = new faiDiskEntry($this->config,$this->dn,$usedDiskNames); 
+        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,$usedDiskNames); 
+        $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;
-    }
 
-    /* Add Disk to this Partitionset
-     * This code adds a new HDD to the disks 
-     * A new Dialog will be opened 
-     */
-    if(isset($_POST['AddRaid']) && !preg_match("/freeze/i",$this->FAIstate)){
-      $usedDiskNames =array();
-      foreach($this->disks as $key=>$disk){
-        $usedDiskNames[]= $key;
-      }
-      $this->dialog = new faiRaidEntry($this->config,$this->dn,$usedDiskNames); 
       $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;
-    }
 
-    /* Add Disk to this Partitionset
-     * This code adds a new HDD to the disks 
-     * A new Dialog will be opened 
-     */
-    if(isset($_POST['AddVolgroup']) && !preg_match("/freeze/i",$this->FAIstate)){
-      $usedDiskNames =array();
-      foreach($this->disks as $key=>$disk){
-        $usedDiskNames[]= $key;
-      }
-      $this->dialog = new faiLvmEntry($this->config,$this->dn,$usedDiskNames); 
-      $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;
     }
 
@@ -283,16 +258,30 @@ class faiPartitionTable extends plugin
           $dn = "new";
         }
 
-        if ($this->FAIpartitionMethod == "setup-storage") {
-          $this->dialog = new faiDiskEntry($this->config,$this->dn,$usedDiskNames,$this->disks[$Udisk]); 
-        } else {
-          $this->dialog = new faiPartitionTableEntry($this->config,$this->dn,$usedDiskNames,$this->disks[$Udisk]); 
+        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;
         }
-        $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;
       }
     }
 
@@ -556,6 +545,12 @@ class faiPartitionTable extends plugin
       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();
@@ -585,6 +580,7 @@ class faiPartitionTable extends plugin
       }
 
       if($disk['status']!="delete")
+
       /* Add all partitions */
       foreach($disk['partitions'] as $key => $partition){
         $partition_attrs = array();