X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-plugins%2Ffai%2Fadmin%2Ffai%2Fclass_faiPartition.inc;h=ad553a2348acd2107c0841b3b4bd92271772a260;hb=9dc6ac611bbe02539e5d9326a6106f8160bc56c3;hp=059ebda2b7162e13b3b0b4b5c6c27d56ba9d4e60;hpb=14df5bbe6176be9dd0aa797b08dbd80be098eaa1;p=gosa.git diff --git a/gosa-plugins/fai/admin/fai/class_faiPartition.inc b/gosa-plugins/fai/admin/fai/class_faiPartition.inc index 059ebda2b..ad553a234 100644 --- a/gosa-plugins/fai/admin/fai/class_faiPartition.inc +++ b/gosa-plugins/fai/admin/fai/class_faiPartition.inc @@ -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";