aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaarten Vanraes <alien@mageia.org>2016-03-21 20:51:53 +0100
committerMaarten Vanraes <alien@mageia.org>2016-05-14 09:25:24 +0200
commit40b8c64de29872772ced52d31e4fb2ec1cda0a65 (patch)
tree82af3756e5b2b7c7e1cb5382141cfb1671637453
parentbe37795c918355c8cd3a193b0a9439a81a661ed5 (diff)
downloadmanatools-40b8c64de29872772ced52d31e4fb2ec1cda0a65.tar
manatools-40b8c64de29872772ced52d31e4fb2ec1cda0a65.tar.gz
manatools-40b8c64de29872772ced52d31e4fb2ec1cda0a65.tar.bz2
manatools-40b8c64de29872772ced52d31e4fb2ec1cda0a65.tar.xz
manatools-40b8c64de29872772ced52d31e4fb2ec1cda0a65.zip
add some actions to some modules
-rw-r--r--lib/ManaTools/Shared/disk_backend/Plugin/Mount.pm7
-rw-r--r--lib/ManaTools/Shared/disk_backend/Plugin/Partition.pm17
-rw-r--r--lib/ManaTools/Shared/disk_backend/Plugin/Swap.pm23
3 files changed, 46 insertions, 1 deletions
diff --git a/lib/ManaTools/Shared/disk_backend/Plugin/Mount.pm b/lib/ManaTools/Shared/disk_backend/Plugin/Mount.pm
index 7403121e..7817148c 100644
--- a/lib/ManaTools/Shared/disk_backend/Plugin/Mount.pm
+++ b/lib/ManaTools/Shared/disk_backend/Plugin/Mount.pm
@@ -95,6 +95,13 @@ override ('probe', sub {
$part->prop('fstype', $fields[8]);
$part->prop('srcmount', $fields[9]);
+ # add an unmount action
+ $part->add_action('unmount', 'Unmount', undef, sub {
+ my $self = shift;
+ print STDERR "Unmount is not implemented...\n";
+ return 1;
+ });
+
## take care of family
# finding parent mount
if ($fields[1] != $fields[0]) {
diff --git a/lib/ManaTools/Shared/disk_backend/Plugin/Partition.pm b/lib/ManaTools/Shared/disk_backend/Plugin/Partition.pm
index 3b6fb081..334b6baf 100644
--- a/lib/ManaTools/Shared/disk_backend/Plugin/Partition.pm
+++ b/lib/ManaTools/Shared/disk_backend/Plugin/Partition.pm
@@ -147,8 +147,23 @@ override ('probeio', sub {
if (!$part->in_add($io)) {
return 0;
}
+ # add properties
+ # TODO: partition table type, size and position, logical alignment, etc...
+ # default partition is always 1 sector ?
+ $part->prop('size', 1);
+ # add an action
+ $part->add_action('addPartition', 'Add a partition', undef, sub {
+ my $self = shift;
+ print STDERR "Add partition is not implemented...\n";
+ return 1;
+ }, sub {
+ my $self = shift;
+ return 1;
+ });
}
+ @parts = $self->parent->findin($io);
my $err = 0;
+ my $partitions = 0;
# find subdevices in /sys/
for my $pf (glob($io->path(). "/". $io->id() ."*")) {
my $io = $self->parent->mkio('Partition', {id => $pf =~ s'^.+/''r});
@@ -160,10 +175,12 @@ override ('probeio', sub {
$io->prop_from_file('dev', $pf . '/dev');
$io->sync_majorminor();
$io->prop('num', $pf =~ s/^.+([0-9]+)$/$1/r);
+ $partitions = $partitions + 1;
if (!$part->out_add($io)) {
$err = 1;
}
}
+ $part->prop('partitions', $partitions);
# find out how to differentiate between an empty partition table and no partition table
return $err == 0;
});
diff --git a/lib/ManaTools/Shared/disk_backend/Plugin/Swap.pm b/lib/ManaTools/Shared/disk_backend/Plugin/Swap.pm
index b7d6c064..696d7aab 100644
--- a/lib/ManaTools/Shared/disk_backend/Plugin/Swap.pm
+++ b/lib/ManaTools/Shared/disk_backend/Plugin/Swap.pm
@@ -66,7 +66,11 @@ has '+dependencies' => (
has '+tools' => (
default => sub {
- return {'swaplabel' => '/usr/sbin/swaplabel'};
+ return {
+ 'swaplabel' => '/usr/sbin/swaplabel',
+ 'swapon' => '/usr/sbin/swapon',
+ 'swapoff' => '/usr/sbin/swapoff',
+ };
}
);
@@ -100,6 +104,23 @@ override ('probe', sub {
$part->prop('size', $fields[2]);
$part->prop('used', $fields[3]);
$part->prop('priority', $fields[4]);
+ $part->prop('active', 1);
+
+ # add a swapoff action
+ $part->add_action('swapoff', 'Turn off swap', undef, sub {
+ my $self = shift;
+ my $plugin = $self->plugin();
+ print STDERR "Dangerous actions are disabled: $self\n";
+ return 1;
+ if ($plugin->tool_exec('swapoff', $self->prop('filename')) == 0) {
+ $self->prop('active', 0);
+ $part->prop('priority', 0);
+ }
+ return 1;
+ }, sub {
+ my $self = shift;
+ return $self->prop('active') == 1;
+ });
# use swaplabel to get label and uuid
my %labelfields = $self->tool_fields('swaplabel', ':', $fields[0]);