docker_cloud 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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