diff options
| -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]); | 
