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.001';
4 7     7   41 use Moo;
  7         13  
  7         43  
5 7     7   5966 use API::Docker::Volume;
  7         22  
  7         258  
6 7     7   42 use Carp qw( croak );
  7         14  
  7         387  
7 7     7   35 use namespace::clean;
  7         11  
  7         30  
8              
9              
10             has client => (
11             is => 'ro',
12             required => 1,
13             weak_ref => 1,
14             );
15              
16              
17             sub _wrap {
18 4     4   11 my ($self, $data) = @_;
19 4         124 return API::Docker::Volume->new(
20             client => $self->client,
21             %$data,
22             );
23             }
24              
25             sub _wrap_list {
26 1     1   3 my ($self, $list) = @_;
27 1         4 return [ map { $self->_wrap($_) } @$list ];
  2         2411  
28             }
29              
30             sub list {
31 1     1 1 1511 my ($self, %opts) = @_;
32 1         2 my %params;
33 1 50       6 $params{filters} = $opts{filters} if defined $opts{filters};
34 1         15 my $result = $self->client->get('/volumes', params => \%params);
35 1   50     34 return $self->_wrap_list($result->{Volumes} // []);
36             }
37              
38              
39             sub create {
40 1     1 1 35 my ($self, %config) = @_;
41 1         31 my $result = $self->client->post('/volumes/create', \%config);
42 1         1110 return $self->_wrap($result);
43             }
44              
45              
46             sub inspect {
47 2     2 1 1248 my ($self, $name) = @_;
48 2 100       260 croak "Volume name required" unless $name;
49 1         20 my $result = $self->client->get("/volumes/$name");
50 1         24 return $self->_wrap($result);
51             }
52              
53              
54             sub remove {
55 2     2 1 2721 my ($self, $name, %opts) = @_;
56 2 100       142 croak "Volume name required" unless $name;
57 1         2 my %params;
58 1 0       6 $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__