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.002';
4 8     8   58 use Moo;
  8         14  
  8         51  
5 8     8   7189 use API::Docker::Network;
  8         43  
  8         363  
6 8     8   78 use Carp qw( croak );
  8         43  
  8         617  
7 8     8   50 use namespace::clean;
  8         25  
  8         43  
8              
9              
10             has client => (
11             is => 'ro',
12             required => 1,
13             weak_ref => 1,
14             );
15              
16              
17             sub _wrap {
18 3     3   7 my ($self, $data) = @_;
19 3         57 return API::Docker::Network->new(
20             client => $self->client,
21             %$data,
22             );
23             }
24              
25             sub _wrap_list {
26 1     1   2 my ($self, $list) = @_;
27 1         7 return [ map { $self->_wrap($_) } @$list ];
  2         2270  
28             }
29              
30             sub list {
31 1     1 1 1051 my ($self, %opts) = @_;
32 1         1 my %params;
33 1 50       4 $params{filters} = $opts{filters} if defined $opts{filters};
34 1         11 my $result = $self->client->get('/networks', params => \%params);
35 1   50     21 return $self->_wrap_list($result // []);
36             }
37              
38              
39             sub inspect {
40 2     2 1 384 my ($self, $id) = @_;
41 2 100       196 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       3 croak "Network name required" unless $config{Name};
50 1         9 my $result = $self->client->post('/networks/create', \%config);
51 1         778 return $result;
52             }
53              
54              
55             sub remove {
56 2     2 1 950 my ($self, $id) = @_;
57 2 100       100 croak "Network ID required" unless $id;
58 1         11 return $self->client->delete_request("/networks/$id");
59             }
60              
61              
62             sub connect {
63 2     2 1 771 my ($self, $id, %opts) = @_;
64 2 50       8 croak "Network ID required" unless $id;
65 2 100       112 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 345 my ($self, $id, %opts) = @_;
72 1 50       3 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__