diff options
author | Maarten Vanraes <alien@mageia.org> | 2016-03-21 20:51:53 +0100 |
---|---|---|
committer | Maarten Vanraes <alien@mageia.org> | 2016-05-14 09:25:24 +0200 |
commit | 40b8c64de29872772ced52d31e4fb2ec1cda0a65 (patch) | |
tree | 82af3756e5b2b7c7e1cb5382141cfb1671637453 | |
parent | be37795c918355c8cd3a193b0a9439a81a661ed5 (diff) | |
download | manatools-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.pm | 7 | ||||
-rw-r--r-- | lib/ManaTools/Shared/disk_backend/Plugin/Partition.pm | 17 | ||||
-rw-r--r-- | lib/ManaTools/Shared/disk_backend/Plugin/Swap.pm | 23 |
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]); |