Code

Updated FAI partition handling
[gosa.git] / gosa-plugins / fai / admin / fai / class_faiPartitionTable.inc
index 83d24b2bbc2b9d14a500318f4d0d17875bbf0f87..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,19 +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;
     }
 
@@ -251,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;
       }
     }
 
@@ -449,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 = "";
+        }
+      }
+    }
   }
 
 
@@ -510,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();
@@ -540,6 +580,7 @@ class faiPartitionTable extends plugin
       }
 
       if($disk['status']!="delete")
+
       /* Add all partitions */
       foreach($disk['partitions'] as $key => $partition){
         $partition_attrs = array();