docker_cloud 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.rspec +2 -0
  4. data/.rubocop.yml +43 -0
  5. data/.travis.yml +4 -0
  6. data/CODE_OF_CONDUCT.md +49 -0
  7. data/Gemfile +4 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +81 -0
  10. data/Rakefile +6 -0
  11. data/docker_cloud.gemspec +31 -0
  12. data/lib/docker_cloud.rb +107 -0
  13. data/lib/docker_cloud/api/api.rb +57 -0
  14. data/lib/docker_cloud/api/availability_zone_api.rb +23 -0
  15. data/lib/docker_cloud/api/container_api.rb +38 -0
  16. data/lib/docker_cloud/api/external_repository_api.rb +34 -0
  17. data/lib/docker_cloud/api/node_api.rb +27 -0
  18. data/lib/docker_cloud/api/node_cluster_api.rb +46 -0
  19. data/lib/docker_cloud/api/node_type_api.rb +23 -0
  20. data/lib/docker_cloud/api/provider_api.rb +19 -0
  21. data/lib/docker_cloud/api/region_api.rb +24 -0
  22. data/lib/docker_cloud/api/registry_api.rb +19 -0
  23. data/lib/docker_cloud/api/service_api.rb +53 -0
  24. data/lib/docker_cloud/api/stack_api.rb +53 -0
  25. data/lib/docker_cloud/availability_zone.rb +19 -0
  26. data/lib/docker_cloud/container.rb +204 -0
  27. data/lib/docker_cloud/external_repository.rb +20 -0
  28. data/lib/docker_cloud/helpers.rb +33 -0
  29. data/lib/docker_cloud/node.rb +99 -0
  30. data/lib/docker_cloud/node_cluster.rb +67 -0
  31. data/lib/docker_cloud/node_type.rb +38 -0
  32. data/lib/docker_cloud/provider.rb +31 -0
  33. data/lib/docker_cloud/region.rb +28 -0
  34. data/lib/docker_cloud/registry.rb +27 -0
  35. data/lib/docker_cloud/service.rb +235 -0
  36. data/lib/docker_cloud/stack.rb +42 -0
  37. data/lib/docker_cloud/type.rb +19 -0
  38. data/lib/docker_cloud/version.rb +3 -0
  39. metadata +193 -0
@@ -0,0 +1,20 @@
1
+ module DockerCloud
2
+ class ExternalRepository < DockerCloud::Type
3
+ def resource_uri
4
+ info[:resource_uri]
5
+ end
6
+
7
+ def name
8
+ info[:name]
9
+ end
10
+
11
+ def in_use
12
+ info[:in_user]
13
+ end
14
+ # def registry; info[:registry]; end
15
+
16
+ def registry
17
+ @registry ||= client.registries.get_from_uri(info[:registry]) unless info[:registry].nil?
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,33 @@
1
+ module DockerCloud
2
+ module Helpers
3
+ class ContainerPorts
4
+ attr_accessor :protocol, :inner_port, :outer_port, :port_name,
5
+ :uri_protocol, :endpoint_uri, :published
6
+
7
+ def initialize(container_ports)
8
+ @protocol = container_ports[:protocol]
9
+ @inner_port = container_ports[:inner_port]
10
+ @outer_port = container_ports[:outer_port]
11
+ @port_name = container_ports[:outer_port]
12
+ @uri_protocol = container_ports[:uri_protocol]
13
+ @endpoint_uri = container_ports[:endpoint_uri]
14
+ @published = container_ports[:published]
15
+ end
16
+ end
17
+
18
+ private
19
+
20
+ def format_object(response, type)
21
+ type = Object.const_get "DockerCloud::#{type}"
22
+ if response.is_a?(Array)
23
+ formatted = []
24
+ response.each do |obj|
25
+ formatted.push(type.new(obj, client))
26
+ end
27
+ else
28
+ formatted = type.new(response, client)
29
+ end
30
+ formatted
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,99 @@
1
+ module DockerCloud
2
+ class Node < DockerCloud::Type
3
+ def availability_zone
4
+ @az ||= client.availability_zones.get_from_uri(info[:availability_zone]) unless info[:availability_zone].nil?
5
+ end
6
+
7
+ def resource_uri
8
+ info[:resource_uri]
9
+ end
10
+
11
+ def external_fqdn
12
+ info[:external_fqdn]
13
+ end
14
+
15
+ def state
16
+ info[:state]
17
+ end
18
+
19
+ # def node_cluster; info[:node_cluster]; end
20
+ def node_cluster
21
+ @node_cluster ||= client.node_clusters.get_from_uri(info[:node_cluster]) unless info[:node_cluster].nil?
22
+ end
23
+
24
+ # def node_type; info[:node_type]; end
25
+ def node_type
26
+ @node_type ||= client.node_type.get_from_uri(info[:node_type]) unless info[:node_type].nil?
27
+ end
28
+
29
+ # def region; info[:region]; end
30
+ def region
31
+ @region ||= client.regions.get_from_uri(info[:region]) unless info[:region].nil?
32
+ end
33
+
34
+ def docker_execdriver
35
+ info[:docker_execdriver]
36
+ end
37
+
38
+ def docker_version
39
+ info[:docker_version]
40
+ end
41
+
42
+ def cpu
43
+ info[:cpu]
44
+ end
45
+
46
+ def disk
47
+ info[:disk]
48
+ end
49
+
50
+ def memory
51
+ info[:memory]
52
+ end
53
+
54
+ def num_of_containers
55
+ info[:current_num_container]
56
+ end
57
+
58
+ def last_seen
59
+ info[:last_seen]
60
+ end
61
+
62
+ def public_ip
63
+ info[:public_ip]
64
+ end
65
+
66
+ def tunnel
67
+ info[:tunnel]
68
+ end
69
+
70
+ def deployed_date
71
+ info[:deployed_datetime]
72
+ end
73
+
74
+ def destroyed_date
75
+ info[:destroyed_datetime]
76
+ end
77
+
78
+ def tags
79
+ info[:tags]
80
+ end
81
+
82
+ def nickname
83
+ info[:nickname]
84
+ end
85
+
86
+ def last_metric
87
+ @last_metric ||= LastMetric.new(info[:last_metric])
88
+ end
89
+
90
+ class LastMetric
91
+ attr_accessor :cpu, :disk, :memory
92
+ def initialize(response)
93
+ @cpu = response[:cpu]
94
+ @disk = response[:disk]
95
+ @memory = response[:memory]
96
+ end
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,67 @@
1
+ module DockerCloud
2
+ class NodeCluster < DockerCloud::Type
3
+ def resource_uri
4
+ info[:resource_uri]
5
+ end
6
+
7
+ def name
8
+ info[:name]
9
+ end
10
+
11
+ def state
12
+ info[:state]
13
+ end
14
+
15
+ # def node_type; info[:node_type]; end
16
+ def node_type
17
+ @node_type ||= client.node_types.get_from_uri(info[:node_type])
18
+ end
19
+
20
+ def disk_size
21
+ info[:disk]
22
+ end
23
+
24
+ def nodes
25
+ if @nodes.nil?
26
+ @nodes = []
27
+ info[:nodes].each do |node_uri|
28
+ @nodes.push(client.nodes.get_from_uri(node_uri))
29
+ end
30
+ end
31
+ @nodes
32
+ end
33
+
34
+ # def region; info[:region]; end
35
+ def region
36
+ @region ||= client.regions.get_from_uri(info[:region])
37
+ end
38
+
39
+ def target_num_nodes
40
+ info[:target_num_nodes]
41
+ end
42
+
43
+ def current_num_nodes
44
+ info[:current_num_nodes]
45
+ end
46
+
47
+ def deployed_date
48
+ info[:deployed_datetime]
49
+ end
50
+
51
+ def destroyed_date
52
+ info[:destroyed_datetime]
53
+ end
54
+
55
+ def tags
56
+ info[:tags]
57
+ end
58
+
59
+ def provider_options
60
+ info[:provider_options]
61
+ end
62
+
63
+ def nickname
64
+ info[:nickname]
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,38 @@
1
+ module DockerCloud
2
+ class NodeType < DockerCloud::Type
3
+ def resource_uri
4
+ info[:resource_uri]
5
+ end
6
+
7
+ def name
8
+ info[:name]
9
+ end
10
+
11
+ def label
12
+ info[:label]
13
+ end
14
+
15
+ def regions
16
+ info[:regions]
17
+ end
18
+
19
+ # def availability_zones; info[:availability_zones]; end
20
+ def available
21
+ info[:available]
22
+ end
23
+
24
+ def provider
25
+ @provider ||= client.providers.get_from_uri(info[:provider]) unless info[:provider].nil?
26
+ end
27
+
28
+ def availability_zones
29
+ if @az.nil?
30
+ @az = []
31
+ info[:availability_zones].each do |az|
32
+ @az.push(client.availability_zones.get_from_uri(az))
33
+ end
34
+ end
35
+ @az
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,31 @@
1
+ module DockerCloud
2
+ class Provider < DockerCloud::Type
3
+ attr_accessor :name, :label, :regions, :available
4
+
5
+ def name
6
+ info[:name]
7
+ end
8
+
9
+ def label
10
+ info[:label]
11
+ end
12
+
13
+ def resource_uri
14
+ info[:resource_uri]
15
+ end
16
+
17
+ def available
18
+ info[:available]
19
+ end
20
+
21
+ def regions
22
+ if @regions.nil?
23
+ @regions = []
24
+ info[:regions].each do |region|
25
+ @regions.push(client.regions.get_from_uri(region))
26
+ end
27
+ end
28
+ @regions
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,28 @@
1
+ module DockerCloud
2
+ class Region < DockerCloud::Type
3
+ def resource_uri
4
+ info[:resource_uri]
5
+ end
6
+
7
+ def name
8
+ info[:name]
9
+ end
10
+
11
+ def label
12
+ info[:label]
13
+ end
14
+
15
+ # def availability_zones; info[:availability_zones]; end
16
+ def available
17
+ info[:available]
18
+ end
19
+
20
+ def node_types
21
+ @node_types ||= client.node_types.all(region: name)
22
+ end
23
+
24
+ def availability_zones
25
+ @availability_zones ||= client.availability_zones.all(region: name)
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,27 @@
1
+ module DockerCloud
2
+ class Registry < DockerCloud::Type
3
+ def resource_uri
4
+ info[:resource_uri]
5
+ end
6
+
7
+ def name
8
+ info[:name]
9
+ end
10
+
11
+ def host
12
+ info[:host]
13
+ end
14
+
15
+ def docker_registry?
16
+ info[:is_docker_registry]
17
+ end
18
+
19
+ def ssl?
20
+ info[:is_ssl]
21
+ end
22
+
23
+ def port
24
+ info[:port]
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,235 @@
1
+ module DockerCloud
2
+ class Service < DockerCloud::Type
3
+ def resource_uri
4
+ info[:resource_uri]
5
+ end
6
+
7
+ def image_name
8
+ info[:image_name]
9
+ end
10
+
11
+ def name
12
+ info[:name]
13
+ end
14
+
15
+ def public_dns
16
+ info[:public_dns]
17
+ end
18
+
19
+ def state
20
+ info[:state]
21
+ end
22
+
23
+ def net
24
+ info[:net]
25
+ end
26
+
27
+ def pid
28
+ info[:pid]
29
+ end
30
+
31
+ def synchronized
32
+ info[:synchronized]
33
+ end
34
+
35
+ def deployed_date
36
+ info[:deployed_datetime]
37
+ end
38
+
39
+ def started_date
40
+ info[:started_datetime]
41
+ end
42
+
43
+ def stopped_date
44
+ info[:stopped_datetime]
45
+ end
46
+
47
+ def destroyed_date
48
+ info[:destroyed_datetime]
49
+ end
50
+
51
+ def target_container_num
52
+ info[:target_num_containers]
53
+ end
54
+
55
+ def current_num_containers
56
+ info[:current_num_containers]
57
+ end
58
+
59
+ def running_num_containers
60
+ info[:running_num_containers]
61
+ end
62
+
63
+ def stopped_num_containers
64
+ info[:stopped_run_containers]
65
+ end
66
+
67
+ # def stack; info[:stack]; end
68
+ def stack
69
+ @stack ||= client.stacks.find_by_uri(info[:stack])
70
+ end
71
+
72
+ # def containers; info[:containers]; end
73
+ def containers
74
+ if @containers.nil?
75
+ @containers = []
76
+ info[:containers].each do |uri|
77
+ @containers.push(client.containers.get_by_uri(uri))
78
+ end
79
+ end
80
+ @containers
81
+ end
82
+
83
+ def container_ports
84
+ @container_ports ||= ContainerPorts.new(info[:container_ports])
85
+ end
86
+
87
+ def container_env_vars
88
+ info[:container_envvars]
89
+ end
90
+
91
+ def labels
92
+ info[:labels]
93
+ end
94
+
95
+ def working_dir
96
+ info[:working_dir]
97
+ end
98
+
99
+ def user
100
+ info[:user]
101
+ end
102
+
103
+ def hostname
104
+ info[:hostname]
105
+ end
106
+
107
+ def domain_name
108
+ info[:domainname]
109
+ end
110
+
111
+ def amc_address
112
+ info[:mac_address]
113
+ end
114
+
115
+ def cgroup_name
116
+ info[:cgroup_name]
117
+ end
118
+
119
+ def tty
120
+ info[:tty]
121
+ end
122
+
123
+ def stdin_open
124
+ info[:stdin_open]
125
+ end
126
+
127
+ def dns
128
+ info[:dns]
129
+ end
130
+
131
+ def dns_search
132
+ info[:dns_search]
133
+ end
134
+
135
+ def cap_add
136
+ info[:cap_add]
137
+ end
138
+
139
+ def cap_drop
140
+ info[:cap_add]
141
+ end
142
+
143
+ def devices
144
+ info[:devices]
145
+ end
146
+
147
+ def extra_hosrs
148
+ info[:extra_hosrs]
149
+ end
150
+
151
+ def security_opt
152
+ info[:security_opt]
153
+ end
154
+
155
+ def entrypoint
156
+ info[:entrypoint]
157
+ end
158
+
159
+ def run_command
160
+ info[:run_command]
161
+ end
162
+
163
+ def sequential_deployment
164
+ info[:sequential_deployment]
165
+ end
166
+
167
+ def cpu_shares
168
+ info[:cpu_shares]
169
+ end
170
+
171
+ def cpuset
172
+ info[:cpuset]
173
+ end
174
+
175
+ def memory
176
+ info[:memory]
177
+ end
178
+
179
+ def memory_swap
180
+ info[:memory_swap]
181
+ end
182
+
183
+ def linked_from_service
184
+ info[:linked_from_service]
185
+ end
186
+
187
+ def linked_to_service
188
+ info[:linked_to_service]
189
+ end
190
+
191
+ def bindings
192
+ info[:bindings]
193
+ end
194
+
195
+ def auto_restart
196
+ info[:autorestart]
197
+ end
198
+
199
+ def auto_destroy
200
+ info[:autodestroy]
201
+ end
202
+
203
+ def roles
204
+ info[:roles]
205
+ end
206
+
207
+ def link_variables
208
+ info[:link_variables]
209
+ end
210
+
211
+ def privileged
212
+ info[:privileged]
213
+ end
214
+
215
+ def read_only
216
+ info[:read_only]
217
+ end
218
+
219
+ def deployment_strategy
220
+ info[:deployment_strategy]
221
+ end
222
+
223
+ def tags
224
+ info[:tags]
225
+ end
226
+
227
+ def auto_redeploy
228
+ info[:autoredeploy]
229
+ end
230
+
231
+ def nickname
232
+ info[:nickname]
233
+ end
234
+ end
235
+ end