Code

Added new FAI partition class.
[gosa.git] / gosa-plugins / fai / admin / fai / class_faiPartition.inc
1 <?php
3 class faiPartition extends plugin
4 {
5   var $attributes = array("cn","description","FAIfsCreateOptions","FAIfsOptions","FAIfsTuneOptions",
6       "FAIfsType","FAImountOptions","FAImountPoint","FAIpartitionNr","FAIpartitionFlags","FAIdiskType",
7       "FAIpartitionSize","FAIpartitionType","FAIstate", "bootable","resize", "preserve", "preserveType",
8       "encrypted");
10   var $cn  = "";
11   var $description  = "";
12   var $FAIfsCreateOptions = "";
13   var $FAIfsOptions = "";
14   var $FAIfsTuneOptions = "";
15   var $FAIfsType = "";
16   var $FAImountOptions = "";
17   var $FAImountPoint = "";
18   var $FAIpartitionNr = "";
19   var $FAIpartitionSize = "";
20   var $FAIpartitionType = "";
21   var $FAIstate = "";
22   var $FAIpartitionFlags = "";
23   
24   var $FAIdiskType = "disk";
26   var $FAIpartitionSizeType = "fixed";
27   var $sizeStart = 0;
28   var $sizeStop  = 0;
29   var $sizeStart_Type = "MB";
30   var $sizeStop_Type  = "MB";
31    
32   var $bootable = false; 
33   var $resize = false;
34   var $preserve = false;
35   var $preserveType = "always";
36   var $encrypted = false;
38   function __construct($config, $object, $type)
39   {
40     foreach($this->attributes as $attr){
41       if(isset($object[$attr])){
42         $this->$attr = $object[$attr];
43       }
44     }
46     $this->FAIdiskType = $type;
48     /* Prepare size attribute 
49      * This attribute may represent a range, a fixed value 
50      *  or a percentage.
51      * fixed is just a number   * 500MB
52      * range                    * 500MB-1TB
53      * remaining                * -
54      */
55     
56     // Fixed
57     if(preg_match("/^[0-9]*(KB|MB|GB|TB|PB)$/",$this->FAIpartitionSize)){
58       $this->sizeStart = preg_replace("/^([0-9]*)(KB|MB|GB|TB|PB)$/","\\1",$this->FAIpartitionSize);
59       $this->sizeStart_Type = preg_replace("/^([0-9]*)(KB|MB|GB|TB|PB)$/","\\2",$this->FAIpartitionSize);
60       $this->FAIpartitionSizeType = "fixed";
61     }else
62     
63     // Dynamic range
64     if(preg_match("/^[0-9]*(KB|MB|GB|TB|PB)-[0-9]*(KB|MB|GB|TB|PB)$/",$this->FAIpartitionSize)){
65       $this->sizeStart = preg_replace("/^([0-9]*)(KB|MB|GB|TB|PB).*$/","\\1",$this->FAIpartitionSize);
66       $this->sizeStart_Type = preg_replace("/^([0-9]*)(KB|MB|GB|TB|PB).*$/","\\2",$this->FAIpartitionSize);
67       $this->sizeStop = preg_replace("/^[^\-]*\-([0-9]*)(KB|MB|GB|TB|PB)$/","\\1",$this->FAIpartitionSize);
68       $this->sizeStop_Type = preg_replace("/^[^\-]*\-([0-9]*)(KB|MB|GB|TB|PB)$/","\\2",$this->FAIpartitionSize);
69       $this->FAIpartitionSizeType = "dynamic";
70     }else
72     // Dynamic range
73     if(preg_match("/^\-$/",$this->FAIpartitionSize)){
74       $this->FAIpartitionSizeType = "remaining";
75     }
76   }
78   function execute()
79   {
80     plugin::execute();
81     $smarty = get_smarty();
83     // Create a list of selectable partition types
84     if($this->FAIdiskType == "disk"){
85       $types  = array(
86           "primary" => _("Primary"),
87           "secondary" => _("Secondary"));
88     }elseif($this->FAIdiskType == "raid"){
89       $types  = array(
90           "raid0" => _("Raid 0"),
91           "raid1" => _("Raid 1"),
92           "raid5" => _("Raid 5"),
93           "raid6" => _("Raid 6"));
94     }else{
95       $types = "";
96     }
98      
99     // Create a list of all size options
100     $partitionSizeTypes  = array(
101         "fixed"     => _("Fixed"),
102         "dynamic"     => _("Dynamic"),
103         "remaining" => _("Use remaining space")
104         );
106     // Create a list of all size options
107     $sizeTypes  = array(
108         "KB"      => _("KB"),
109         "MB"      => _("MB"),
110         "GB"      => _("GB"),
111         "TB"      => _("TB"),
112         "PB"      => _("PB"),
113         "%"      => _("Percent")
114         );
116     // Preserve types 
117     $preserveTypes = array(
118         "always" => _("Always"),
119         "reinstall" => _("Reinstall"));
120   
121     $FAIfsTypes = array(
122         "swap" => _("Swap"),
123         "ext2" => _("Ext 2"),
124         "ext3" => _("Ext 3"),
125         "ext4" => _("Ext 4"),
126         "reiserfs" => _("Reiser fs"),
127         "xfs" => _("Xfs"),
128         "btrfs" => _("Btrfs"));
129  
130     $smarty->assign("partitionTypes", $types);
131     $smarty->assign("partitionSizeTypes", $partitionSizeTypes);
132     $smarty->assign("FAIpartitionSizeType", $this->FAIpartitionSizeType);
133     $smarty->assign("sizeTypes", $sizeTypes);
135     $smarty->assign("sizeStart_Type", $this->sizeStart_Type);
136     $smarty->assign("sizeStop_Type", $this->sizeStop_Type);
137     $smarty->assign("sizeStart", $this->sizeStart);
138     $smarty->assign("sizeStop", $this->sizeStop);
140     $smarty->assign("preserveTypes", $preserveTypes);
141     $smarty->assign("preserveType", $this->preserveType);
143     $smarty->assign("FAIfsTypes", $FAIfsTypes);
145     foreach($this->attributes as $attr){
146       $smarty->assign($attr,$this->$attr);
147     }
148     return($smarty->fetch(get_template_path("faiPartition.tpl", TRUE, dirname(__FILE__))));
149   }
151   function save_object()
152   {
153     if(isset($_POST['faiPartition'])){
154       foreach($this->attributes as $attr){
155         if(isset($_POST[$attr])){
156           $this->$attr = get_post($attr);
157         }
158       }
159       foreach(array("FAIpartitionSizeType","sizeStart","sizeStop","sizeStart_Type","sizeStop_Type") as $attr){
160         if(isset($_POST[$attr])){
161           $this->$attr = get_post($attr);
162         }
163       }
164       foreach(array("bootable","preserve","resize","encrypted") as $attr){
165         if(isset($_POST[$attr])){
166           $this->$attr = TRUE;
167         }else{
168           $this->$attr = FALSE;
169         }
170       }
171     } 
172   }
174   function save()
175   {
176     $ret = array();
177     foreach($this->attributes as $attr){
178       $ret[$attr] = $this->$attr;
179     }
181     // Save partition size 
182     switch($this->FAIpartitionSizeType){
183       case 'fixed' : 
184         $ret['FAIpartitionSize'] = $this->sizeStart.$this->sizeStart_Type;break; 
185       case 'dynamic' : 
186         $ret['FAIpartitionSize'] = $this->sizeStart.$this->sizeStart_Type."-".  
187           $this->sizeStop.$this->sizeStop_Type;break; 
188       case 'remaining' : 
189         $ret['FAIpartitionSize'] = "-";break; 
190       default: trigger_error("Unknown partition size!");
191     }
193     return($ret);
194   }
196 // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
197 ?>