File Coverage

blib/lib/API/Docker/API/Volumes.pm
Criterion Covered Total %
statement 34 38 89.4
branch 6 12 50.0
condition 1 2 50.0
subroutine 10 11 90.9
pod 5 5 100.0
total 56 68 82.3


line stmt bran cond sub pod time code
1             package API::Docker::API::Volumes;
2             # ABSTRACT: Docker Engine Volumes API
3             our $VERSION = '0.002';
4 8     8   80 use Moo;
  8         16  
  8         66  
5 8     8   7120 use API::Docker::Volume;
  8         32  
  8         364  
6 8     8   63 use Carp qw( croak );
  8         19  
  8         583  
7 8     8   49 use namespace::clean;
  8         14  
  8         38  
8              
9              
10             has client => (
11             is => 'ro',
12             required => 1,
13             weak_ref => 1,
14             );
15              
16              
17             sub _wrap {
18 4     4   9 my ($self, $data) = @_;
19 4         82 return API::Docker::Volume->new(
20             client => $self->client,
21             %$data,
22             );
23             }
24              
25             sub _wrap_list {
26 1     1   2 my ($self, $list) = @_;
27 1         2 return [ map { $self->_wrap($_) } @$list ];
  2         1596  
28             }
29              
30             sub list {
31 1     1 1 998 my ($self, %opts) = @_;
32 1         2 my %params;
33 1 50       3 $params{filters} = $opts{filters} if defined $opts{filters};
34 1         11 my $result = $self->client->get('/volumes', params => \%params);
35 1   50     21 return $self->_wrap_list($result->{Volumes} // []);
36             }
37              
38              
39             sub create {
40 1     1 1 25 my ($self, %config) = @_;
41 1         10 my $result = $self->client->post('/volumes/create', \%config);
42 1         791 return $self->_wrap($result);
43             }
44              
45              
46             sub inspect {
47 2     2 1 883 my ($self, $name) = @_;
48 2 100       187 croak "Volume name required" unless $name;
49 1         11 my $result = $self->client->get("/volumes/$name");
50 1         14 return $self->_wrap($result);
51             }
52              
53              
54             sub remove {
55 2     2 1 2180 my ($self, $name, %opts) = @_;
56 2 100       110 croak "Volume name required" unless $name;
57 1         2 my %params;
58 1 0       9 $params{force} = $opts{force} ? 1 : 0 if defined $opts{force};
    50          
59 1         17 return $self->client->delete_request("/volumes/$name", params => \%params);
60             }
61              
62              
63             sub prune {
64 0     0 1   my ($self, %opts) = @_;
65 0           my %params;
66 0 0         $params{filters} = $opts{filters} if defined $opts{filters};
67 0           return $self->client->post('/volumes/prune', undef, params => \%params);
68             }
69              
70              
71              
72             1;
73              
74             __END__