File Coverage

blib/lib/API/Docker/API/Networks.pm
Criterion Covered Total %
statement 41 45 91.1
branch 11 18 61.1
condition 1 2 50.0
subroutine 12 13 92.3
pod 7 7 100.0
total 72 85 84.7


line stmt bran cond sub pod time code
1             package API::Docker::API::Networks;
2             # ABSTRACT: Docker Engine Networks API
3             our $VERSION = '0.001';
4 7     7   49 use Moo;
  7         16  
  7         47  
5 7     7   6536 use API::Docker::Network;
  7         26  
  7         325  
6 7     7   62 use Carp qw( croak );
  7         10  
  7         510  
7 7     7   37 use namespace::clean;
  7         15  
  7         40  
8              
9              
10             has client => (
11             is => 'ro',
12             required => 1,
13             weak_ref => 1,
14             );
15              
16              
17             sub _wrap {
18 3     3   6 my ($self, $data) = @_;
19 3         51 return API::Docker::Network->new(
20             client => $self->client,
21             %$data,
22             );
23             }
24              
25             sub _wrap_list {
26 1     1   3 my ($self, $list) = @_;
27 1         2 return [ map { $self->_wrap($_) } @$list ];
  2         1742  
28             }
29              
30             sub list {
31 1     1 1 921 my ($self, %opts) = @_;
32 1         2 my %params;
33 1 50       4 $params{filters} = $opts{filters} if defined $opts{filters};
34 1         10 my $result = $self->client->get('/networks', params => \%params);
35 1   50     19 return $self->_wrap_list($result // []);
36             }
37              
38              
39             sub inspect {
40 2     2 1 526 my ($self, $id) = @_;
41 2 100       152 croak "Network ID required" unless $id;
42 1         11 my $result = $self->client->get("/networks/$id");
43 1         14 return $self->_wrap($result);
44             }
45              
46              
47             sub create {
48 1     1 1 27 my ($self, %config) = @_;
49 1 50       4 croak "Network name required" unless $config{Name};
50 1         9 my $result = $self->client->post('/networks/create', \%config);
51 1         687 return $result;
52             }
53              
54              
55             sub remove {
56 2     2 1 1046 my ($self, $id) = @_;
57 2 100       115 croak "Network ID required" unless $id;
58 1         10 return $self->client->delete_request("/networks/$id");
59             }
60              
61              
62             sub connect {
63 2     2 1 681 my ($self, $id, %opts) = @_;
64 2 50       7 croak "Network ID required" unless $id;
65 2 100       131 croak "Container required" unless $opts{Container};
66 1         6 return $self->client->post("/networks/$id/connect", \%opts);
67             }
68              
69              
70             sub disconnect {
71 1     1 1 326 my ($self, $id, %opts) = @_;
72 1 50       4 croak "Network ID required" unless $id;
73 1 50       3 croak "Container required" unless $opts{Container};
74 1         6 return $self->client->post("/networks/$id/disconnect", \%opts);
75             }
76              
77              
78             sub prune {
79 0     0 1   my ($self, %opts) = @_;
80 0           my %params;
81 0 0         $params{filters} = $opts{filters} if defined $opts{filters};
82 0           return $self->client->post('/networks/prune', undef, params => \%params);
83             }
84              
85              
86              
87             1;
88              
89             __END__