diff options
author | Maarten Vanraes <alien@mageia.org> | 2016-05-14 15:05:50 +0200 |
---|---|---|
committer | Maarten Vanraes <alien@mageia.org> | 2016-05-14 15:05:50 +0200 |
commit | f974534e226c84ba58e631c2a77e65556178787e (patch) | |
tree | f6e894b5ebcc1cbb37a26fcf7d13a9cf8fd23824 /lib | |
parent | c675b0e1da78bfef29149fdb18b2ecfb37c3e839 (diff) | |
download | manatools-f974534e226c84ba58e631c2a77e65556178787e.tar manatools-f974534e226c84ba58e631c2a77e65556178787e.tar.gz manatools-f974534e226c84ba58e631c2a77e65556178787e.tar.bz2 manatools-f974534e226c84ba58e631c2a77e65556178787e.tar.xz manatools-f974534e226c84ba58e631c2a77e65556178787e.zip |
make a PartitionElement part and define restrictions for PartLink
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ManaTools/Shared/disk_backend/Plugin/Partition.pm | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/lib/ManaTools/Shared/disk_backend/Plugin/Partition.pm b/lib/ManaTools/Shared/disk_backend/Plugin/Partition.pm index c2977fe6..b6f5a3d8 100644 --- a/lib/ManaTools/Shared/disk_backend/Plugin/Partition.pm +++ b/lib/ManaTools/Shared/disk_backend/Plugin/Partition.pm @@ -211,6 +211,26 @@ class_has '+type' => ( default => 'PartitionTable' ); +class_has '+restrictions' => ( + default => sub { + return { + child => sub { + my $self = shift; + my $part = shift; + return $part->isa('ManaTools::Shared::disk_backend::Part::PartitionElement'); + }, + parent => sub { + my $self = shift; + my $part = shift; + return $part->does('ManaTools::Shared::disk_backend::BlockDevice'); + }, + sibling => sub { return 0; }, + previous => sub { return 0; }, + next => sub { return 0; }, + } + } +); + class_has '+in_restriction' => ( default => sub { return sub { @@ -245,4 +265,45 @@ class_has '+out_restriction' => ( } ); +package ManaTools::Shared::disk_backend::Part::PartitionElement; + +use Moose; + +extends 'ManaTools::Shared::disk_backend::Part'; + +with 'ManaTools::Shared::disk_backend::BlockDevice'; + +use MooseX::ClassAttribute; + +class_has '+type' => ( + default => 'PartitionElement' +); + +class_has '+restrictions' => ( + default => sub { + return { + parent => sub { + my $self = shift; + my $part = shift; + return $part->isa('ManaTools::Shared::disk_backend::Part::PartitionTable'); + }, + sibling => sub { + my $self = shift; + my $part = shift; + return $part->isa('ManaTools::Shared::disk_backend::Part::PartitionElement'); + }, + previous => sub { + my $self = shift; + my $part = shift; + return $part->isa('ManaTools::Shared::disk_backend::Part::PartitionElement'); + }, + next => sub { + my $self = shift; + my $part = shift; + return $part->isa('ManaTools::Shared::disk_backend::Part::PartitionElement'); + }, + } + } +); + 1; |