aboutsummaryrefslogtreecommitdiffstats
path: root/lib/ManaTools/Shared/disk_backend/Plugin/Disk.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ManaTools/Shared/disk_backend/Plugin/Disk.pm')
-rw-r--r--lib/ManaTools/Shared/disk_backend/Plugin/Disk.pm70
1 files changed, 15 insertions, 55 deletions
diff --git a/lib/ManaTools/Shared/disk_backend/Plugin/Disk.pm b/lib/ManaTools/Shared/disk_backend/Plugin/Disk.pm
index 6d12cfe5..ba47fc63 100644
--- a/lib/ManaTools/Shared/disk_backend/Plugin/Disk.pm
+++ b/lib/ManaTools/Shared/disk_backend/Plugin/Disk.pm
@@ -97,52 +97,11 @@ override ('probe', sub {
}, 'Disk', {plugin => $self, devicepath => $bdfile, loaded => undef, saved => undef});
# trigger the changedpart
$p->changedpart(ManaTools::Shared::disk_backend::Part->CurrentState);
- # create the IO
- my $io = $self->parent->mkio('Disk', {id => basename($bdfile), devicepath => $bdfile});
- if (!defined($io) || !$part->out_add($io)) {
- $err = 1;
- }
}
}
return $err == 0;
});
-package ManaTools::Shared::disk_backend::IO::Disk;
-
-use Moose;
-
-extends 'ManaTools::Shared::disk_backend::IO';
-
-with 'ManaTools::Shared::disk_backend::BlockDevice';
-
-has '+type' => (
- default => 'Disk'
-);
-
-has '+devicepath' => (
- trigger => sub {
- my $self = shift;
- my $value = shift;
- $self->prop_from_file('ro', $value .'/ro');
- $self->prop_from_file('removable', $value .'/removable');
- $self->prop_from_file('size', $value .'/size');
- $self->prop('present', ($self->prop('removable') == 0 || $self->prop('size') > 0) ? 1 : 0);
- $self->prop_from_file('dev', $value .'/dev');
- $self->sync_majorminor();
-
- # additional data
- my $dpath = $value =~ s,/[^/]+/[^/]+$,,r;
- $self->prop_from_file('vendor', $dpath .'/vendor');
- $self->prop_from_file('model', $dpath .'/model');
- $self->prop_from_file('type', $dpath .'/type');
- }
-);
-
-sub file {
- my $self = shift;
- return '/dev/'. $self->id();
-}
-
package ManaTools::Shared::disk_backend::Part::Disks;
use Moose;
@@ -155,20 +114,21 @@ class_has '+type' => (
default => 'Disks'
);
-class_has '+in_restriction' => (
- default => sub {
- return sub {return 0;};
- }
-);
-
-class_has '+out_restriction' => (
+class_has '+restrictions' => (
default => sub {
- return sub {
- my $self = shift;
- my $io = shift;
- my $del = shift;
- return ref($io) eq 'ManaTools::Shared::disk_backend::IO::Disk';
- };
+ return {
+ child => sub {
+ my $self = shift;
+ my $part = shift;
+ return $part->isa('ManaTools::Shared::disk_backend::Part::Disk');
+ },
+ parent => sub {
+ return 0;
+ },
+ sibling => sub {
+ return 0;
+ },
+ }
}
);
@@ -178,7 +138,7 @@ override('label', sub {
if ($self->out_length() < 1) {
return $label;
}
- return $label .'('. join(',', sort map { $_->id(); } $self->out_list()) .')';
+ return $label .'('. join(',', sort map { $_->label(); } @children) .')';
});
package ManaTools::Shared::disk_backend::Part::Disk;