diff -urN yaird-0.0.11/perl/Evms.pm yaird-0.0.11-evms/perl/Evms.pm
--- yaird-0.0.11/perl/Evms.pm   1970-01-01 01:00:00.000000000 +0100
+++ yaird-0.0.11-evms/perl/Evms.pm      2005-10-24 18:31:24.000000000 +0200
@@ -0,0 +1,70 @@
+#!perl -w
+#
+# Evms -- encapsulate evms_gather output
+#   Copyright (C) 2005  Erik van Konijnenburg, Marco Amadori
+#
+#   This program is free software; you can redistribute it and/or modify
+#   it under the terms of the GNU General Public License as published by
+#   the Free Software Foundation; either version 2 of the License, or
+#   (at your option) any later version.
+#
+#   This program is distributed in the hope that it will be useful,
+#   but WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#   GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License
+#   along with this program; if not, write to the Free Software
+#   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+#
+
+use strict;
+use warnings;
+use Base;
+use Conf;
+use base 'Obj';
+package Evms;
+
+sub fill {
+       my $self = shift;
+       $self->SUPER::fill();
+       $self->takeArgs ('path', 'devno', 'disks', 'plugins', 'version');
+}
+
+sub path       { return $_[0]->{path}; }
+sub devno      { return $_[0]->{devno}; } # 4 what?
+sub disks      { return $_[0]->{disks}; }
+sub plugins    { return $_[0]->{plugins}; } # not implemented
+sub version    { return $_[0]->{version}; }
+
+sub string {
+       my $self = shift;
+       my $path = $self->path;
+       my $devno = $self->devno;
+       my $disks = join (',', @{$self->disks});
+       my $plugins = join (',', @{$self->plugins});
+       return "$path($devno) = $plugins on $disks";
+}
+
+
+sub findDisksByName ($) {
+# should provide a list from evms_query disks <name>
+# like the output of the shell command
+# evms_query disks /dev/evms/lvm2/safe/usr64 | xargs -i echo /dev/\{\}
+# /dev/sda
+# /dev/sdb
+# /dev/sdc
+       my ($name) = @_;
+       
+       return $evms->disks;
+       
+       
+sub findVersion () {
+# equivalent of evms_query info | head -1 | cut -d ' ' -f 3
+# e.g. from the output "EVMS Version: 2.5.3 \
+#  EVMS Engine API Version: 10.1.0" gives "2.5.3"
+
+       return $evms->version;
+}
+
+1;
diff -urN yaird-0.0.11/perl/Plan.pm yaird-0.0.11-evms/perl/Plan.pm
--- yaird-0.0.11/perl/Plan.pm   2005-08-07 22:57:40.000000000 +0200
+++ yaird-0.0.11-evms/perl/Plan.pm      2005-10-24 18:28:12.375146768 +0200
@@ -1,7 +1,7 @@
 #!perl -w
 #
 # Plan -- high-level stuff
-#   Copyright (C) 2005  Erik van Konijnenburg
+#   Copyright (C) 2005  Erik van Konijnenburg, Marco Amadori
 #
 #   This program is free software; you can redistribute it and/or modify
 #   it under the terms of the GNU General Public License as published by
@@ -25,6 +25,7 @@
 use FsTab;
 use ActiveBlockDevTab;
 use LvmTab;
+use Evms;
 use Hardware;
 use ModProbe;
 use RaidTab;
@@ -83,6 +84,7 @@
        }
 
        my $ok = 0;
+       $ok || ($ok = tryEvms ($actions,$device,[$device,@{$working}]));
        $ok || ($ok = tryParent ($actions,$device,[$device,@{$working}]));
        $ok || ($ok = tryDmCrypt ($actions,$device,[$device,@{$working}]));
        $ok || ($ok = tryLvm ($actions,$device,[$device,@{$working}]));
@@ -93,6 +95,35 @@
        }
        Base::debug ("device: completed $name");
 }
+#
+# tryEvms -- 
+#
+
+sub tryEvms ($$$) {
+       my ($actions, $device, $working) = @_;
+
+       my $name = $device->name; # If name is like /dev/evms/root, if is like 
dm-3 
I'm lost
+       if ($name !~ /^dm-\d+$/) {
+               return 0;
+       }
+
+       for my $evmsDisk (@{Evms::findDisksByName($name)}) 
+       {
+               my $pdev = ActiveBlockDevTab::findByPath ($evmsDisk);
+               my $rc = tryHardware ($actions, $pdev, $working);
+               if ($rc !~ 1) {
+                       # Base::fatal ("Can't find EVMS info for $name");
+                       return 0;
+               }
+               
+       }
+       my $version = Evms::findVersion ()
+       ModProbe::addModules ($actions, [ "dm-mod" ]);
+       $actions->add ("evms_activate", $version);
+       
+       return 1;
+}
+
 
 #
 # tryParent -- If it's a partition, do the whole
diff -urN yaird-0.0.11/templates/Debian.cfg 
yaird-0.0.11-evms/templates/Debian.cfg
--- yaird-0.0.11/templates/Debian.cfg   2005-08-07 22:57:40.000000000 +0200
+++ yaird-0.0.11-evms/templates/Debian.cfg      2005-10-24 17:57:31.434012360 
+0200
@@ -250,6 +250,23 @@
                        !/sbin/vgchange -a y '<TMPL_VAR NAME=target>'
                END SCRIPT
        END TEMPLATE
+       
+       TEMPLATE evms_activate
+       BEGIN
+               DIRECTORY "/lib/evms/<TMPL_VAR NAME=version>" # Instead of this 
two lines
+               FILE "/lib/evms/<TMPL_VAR NAME=version>/*.so" # should be used 
addTreeLibrary or similar
+
+               FILE "/sbin/evms_activate"
+               FILE "/etc/evms.conf"
+               SCRIPT "/init"
+               BEGIN
+                       !if [ ! -c /dev/evms ]
+                       !then
+                       !       /bin/mkdir /dev/evms
+                       !fi
+                       !/sbin/evms_activate 
+               END SCRIPT
+       END TEMPLATE
 
        #
        # NOTE: mdadm can operate without knowledge


ESC:wq


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to