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,38 @@
1
+ module DockerCloud
2
+ class ContainerAPI < DockerCloud::API
3
+ TYPE = 'Container'.freeze
4
+
5
+ def resource_url(params = '')
6
+ "/container/#{params}"
7
+ end
8
+
9
+ def all(params = {})
10
+ response = http_get(resource_url, params)
11
+ format_object(response, TYPE)
12
+ end
13
+
14
+ def get(uuid)
15
+ http_get(resource_url(uuid))
16
+ format_object(response, TYPE)
17
+ end
18
+
19
+ def start(uuid)
20
+ url = "#{uuid}/start/"
21
+ http_post(resource_url(url))
22
+ end
23
+
24
+ def stop(uuid)
25
+ url = "#{uuid}/stop/"
26
+ http_post(resource_url(url))
27
+ end
28
+
29
+ def logs(uuid)
30
+ url = "#{uuid}/logs/"
31
+ http_get(resource_url(url))
32
+ end
33
+
34
+ def terminate(uuid)
35
+ http_terminate(resource_url(uuid))
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,34 @@
1
+ module DockerCloud
2
+ class ExternalRepositoryAPI < DockerCloud::API
3
+ TYPE = 'ExternalRepository'.freeze
4
+
5
+ def resource_url(name = '')
6
+ "/repository/#{name}"
7
+ end
8
+
9
+ def all(params = {})
10
+ response = http_get(resource_url, params)
11
+ format_object(response, TYPE)
12
+ end
13
+
14
+ def create(params)
15
+ response = http_post(resource_url, params)
16
+ format_object(response, TYPE)
17
+ end
18
+
19
+ def get(name)
20
+ response = http_get(resource_url(name))
21
+ format_object(response, TYPE)
22
+ end
23
+
24
+ def update(name, params)
25
+ response = http_patch(resource_url(name), params)
26
+ format_object(response, TYPE)
27
+ end
28
+
29
+ def delete(name, user, image)
30
+ url = "#{name}/#{user}/#{image}"
31
+ http_delete(resource_url(url))
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,27 @@
1
+ module DockerCloud
2
+ class NodeAPI < DockerCloud::API
3
+ TYPE = 'Node'.freeze
4
+
5
+ def resource_url(params = '')
6
+ "/node/#{params}"
7
+ end
8
+
9
+ def all(params = {})
10
+ response = http_get(resource_url, params)
11
+ format_object(response, TYPE)
12
+ end
13
+
14
+ def get(uuid)
15
+ response = http_get(resource_url(uuid))
16
+ format_object(response, TYPE)
17
+ end
18
+
19
+ def deploy(uuid)
20
+ http_post(resource_url("#{uuid}/deploy"))
21
+ end
22
+
23
+ def terminate(uuid)
24
+ http_delete(resource_url(uuid))
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,46 @@
1
+ module DockerCloud
2
+ class NodeClusterAPI < DockerCloud::API
3
+ TYPE = 'NodeCluster'.freeze
4
+
5
+ def resource_url(params = '')
6
+ "/nodecluster/#{params}"
7
+ end
8
+
9
+ def all(params = {})
10
+ response = http_get(resource_url, params)
11
+ format_object(response, TYPE)
12
+ end
13
+
14
+ # Create Params:
15
+ # name (required): name for node cluster
16
+ # node_type (required): type of node to be used for the cluster
17
+ # region (reguired): resource URI of the region where node cluster is to be deployed
18
+ # disk (optional): Size of the volume to create
19
+ # nickname (optional)
20
+ # target_num_nodes (optional): Number of nodes for the cluster. default: 1
21
+ # tags (optional): default []
22
+ # provider_options
23
+ def create(params)
24
+ response = http_post(resource_url, params)
25
+ format_object(response, TYPE)
26
+ end
27
+
28
+ def get(uuid)
29
+ response = http_get(resource_url(uuid))
30
+ format_object(response, TYPE)
31
+ end
32
+
33
+ def update(uuid, params)
34
+ response = http_patch(resource_url(uuid), params)
35
+ format_object(response, TYPE)
36
+ end
37
+
38
+ def deploy(uuid)
39
+ http_post(resource_url("#{uuid}/deploy"))
40
+ end
41
+
42
+ def terminate(uuid)
43
+ http_delete(resource_url(uuid))
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,23 @@
1
+ module DockerCloud
2
+ class NodeTypeAPI < DockerCloud::API
3
+ TYPE = 'NodeType'.freeze
4
+
5
+ def resource_url(name = '')
6
+ "/nodetype/#{name}"
7
+ end
8
+
9
+ # Lists all node types of all supported cloud providers
10
+ # Returns a list of NodeType objects
11
+ def all(params = {})
12
+ response = http_get(resource_url, params)
13
+ format_object(response, TYPE)
14
+ end
15
+
16
+ # Returns the details of a specific NodeType
17
+ def get(provider_name, node_type_name)
18
+ name = "#{provider_name}/#{node_type_name}"
19
+ response = http_get(resource_url(name))
20
+ format_object(response, TYPE)
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,19 @@
1
+ module DockerCloud
2
+ class ProviderAPI < DockerCloud::API
3
+ TYPE = 'Provider'.freeze
4
+
5
+ def resource_url(name = '')
6
+ "/provider/#{name}"
7
+ end
8
+
9
+ def all(params = {})
10
+ response = http_get(resource_url, params)
11
+ format_object(response, TYPE)
12
+ end
13
+
14
+ def get(name)
15
+ response = http_get(resource_url(name))
16
+ format_object(response, TYPE)
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,24 @@
1
+ module DockerCloud
2
+ class RegionAPI < DockerCloud::API
3
+ TYPE = 'Region'.freeze
4
+
5
+ def resource_url(provider_region = '')
6
+ "/region/#{provider_region}"
7
+ end
8
+
9
+ # Lists all regions of all supported cloud providers.
10
+ # Returns a list of Region objects
11
+ def all(params = {})
12
+ response = http_get(resource_url, params)
13
+ format_object(response, TYPE)
14
+ end
15
+
16
+ # Gets all the details of a specific region for a specific provider
17
+ # Returns a Region object
18
+ def get(provider_name, region_name)
19
+ provider_region = "#{provider_name}/#{region_name}"
20
+ response = http_get(resource_url(provider_region))
21
+ format_object(response, TYPE)
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,19 @@
1
+ module DockerCloud
2
+ class RegistryAPI < DockerCloud::API
3
+ TYPE = 'Registry'.freeze
4
+
5
+ def resource_url(host = '')
6
+ "/registry/#{host}"
7
+ end
8
+
9
+ def all(params = {})
10
+ response = http_get(resource_url, params)
11
+ format_object(response, TYPE)
12
+ end
13
+
14
+ def get(host)
15
+ response = http_get(resource_url(host))
16
+ format_object(response, TYPE)
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,53 @@
1
+ module DockerCloud
2
+ class ServiceAPI < DockerCloud::API
3
+ TYPE = 'Service'.freeze
4
+
5
+ def resource_url(params = '')
6
+ "/service/#{params}"
7
+ end
8
+
9
+ def all(params = {})
10
+ response = http_get(resource_url, params)
11
+ format_object(response, TYPE)
12
+ end
13
+
14
+ def create(params)
15
+ response = http_post(resource_url, params)
16
+ format_object(response, TYPE)
17
+ end
18
+
19
+ def get(uuid)
20
+ response = http_get(resource_url(uuid))
21
+ format_object(response, TYPE)
22
+ end
23
+
24
+ def logs(uuid)
25
+ url = "#{uuid}/logs"
26
+ http_get(resource_url(url))
27
+ end
28
+
29
+ def update(uuid, params)
30
+ response = http_patch(resource_url(uuid), params)
31
+ format_object(response, TYPE)
32
+ end
33
+
34
+ def start(uuid)
35
+ url = "#{uuid}/start/"
36
+ http_post(resource_url(url))
37
+ end
38
+
39
+ def stop(uuid)
40
+ url = "#{uuid}/stop/"
41
+ http_post(resource_url(url))
42
+ end
43
+
44
+ def redeploy(uuid)
45
+ url = "#{uuid}/redeploy/"
46
+ http_post(resource_url(url))
47
+ end
48
+
49
+ def terminate(uuid)
50
+ http_delete(resource_url(uuid))
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,53 @@
1
+ module DockerCloud
2
+ class StackAPI < DockerCloud::API
3
+ TYPE = 'Stack'.freeze
4
+
5
+ def resource_url(name = '')
6
+ "/stack/#{name}"
7
+ end
8
+
9
+ def all(params = {})
10
+ response = http_get(resource_url, params)
11
+ format_object(response, TYPE)
12
+ end
13
+
14
+ def get(uuid)
15
+ response = http_get(resource_url(uuid))
16
+ format_object(response, TYPE)
17
+ end
18
+
19
+ def create(params)
20
+ response = http_post(resource_url, params)
21
+ format_object(response, TYPE)
22
+ end
23
+
24
+ def export(uuid)
25
+ url = "#{uuid}/export/"
26
+ http_get(resource_url(url))
27
+ end
28
+
29
+ def update(uuid, params)
30
+ response = http_patch(resource_url(uuid), params)
31
+ format_object(response, TYPE)
32
+ end
33
+
34
+ def stop(uuid)
35
+ url = "#{uuid}/stop"
36
+ http_post(resource_url(url))
37
+ end
38
+
39
+ def start(uuid)
40
+ url = "#{uuid}/start"
41
+ http_post(resource_url(url))
42
+ end
43
+
44
+ def redeploy(uuid)
45
+ url = "#{uuid}/redeploy"
46
+ http_post(resource_url(url))
47
+ end
48
+
49
+ def terminate(uuid)
50
+ http_delete(resource_url(uuid))
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,19 @@
1
+ module DockerCloud
2
+ class AvailabilityZone < DockerCloud::Type
3
+ def resource_uri
4
+ info[:resource_uri]
5
+ end
6
+
7
+ def name
8
+ info[:name]
9
+ end
10
+
11
+ def available
12
+ info[:available]
13
+ end
14
+
15
+ def region
16
+ @region ||= client.regions.get_from_uri(info[:region]) unless info[:region].nil?
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,204 @@
1
+ module DockerCloud
2
+ class Container < 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 bindings
12
+ info[:bindings]
13
+ end
14
+
15
+ def name
16
+ info[:name]
17
+ end
18
+
19
+ # def service; info[:service]; end
20
+ def service
21
+ @service ||= client.services.get_from_uri(info[:service]) unless info[:service].nil?
22
+ end
23
+
24
+ def public_dns
25
+ info[:public_dns]
26
+ end
27
+
28
+ def state
29
+ info[:state]
30
+ end
31
+
32
+ def synchronized
33
+ info[:state]
34
+ end
35
+
36
+ def exit_code
37
+ info[:exit_code]
38
+ end
39
+
40
+ def exit_code_msg
41
+ info[:exit_code_msg]
42
+ end
43
+
44
+ def deployed_date
45
+ info[:deployed_datetime]
46
+ end
47
+
48
+ def started_date
49
+ info[:started_datetime]
50
+ end
51
+
52
+ def stopped_date
53
+ info[:stopped_datetime]
54
+ end
55
+
56
+ def destroyed_date
57
+ info[:destroyed_datetime]
58
+ end
59
+
60
+ def env_vars
61
+ info[:container_envvars]
62
+ end
63
+
64
+ def labels
65
+ info[:labels]
66
+ end
67
+
68
+ def working_dir
69
+ info[:working_dir]
70
+ end
71
+
72
+ def user
73
+ info[:user]
74
+ end
75
+
76
+ def host_name
77
+ info[:hostname]
78
+ end
79
+
80
+ def domain_name
81
+ info[:domainname]
82
+ end
83
+
84
+ def mac_address
85
+ info[:mac_address]
86
+ end
87
+
88
+ def cgroup_name
89
+ info[:cgroup_name]
90
+ end
91
+
92
+ def tty
93
+ info[:tty]
94
+ end
95
+
96
+ def stdin_open
97
+ info[:stdin_open]
98
+ end
99
+
100
+ def dns
101
+ info[:dns]
102
+ end
103
+
104
+ def dns_search
105
+ info[:dns_search]
106
+ end
107
+
108
+ def cap_add
109
+ info[:cap_add]
110
+ end
111
+
112
+ def cap_drop
113
+ info[:cap_drop]
114
+ end
115
+
116
+ def devices
117
+ info[:devices]
118
+ end
119
+
120
+ def extra_hosts
121
+ info[:extra_hosts]
122
+ end
123
+
124
+ def security_opt
125
+ info[:security_opt]
126
+ end
127
+
128
+ def entry_point
129
+ info[:entrypoint]
130
+ end
131
+
132
+ def run_command
133
+ info[:run_command]
134
+ end
135
+
136
+ def cpu_shares
137
+ info[:cpu_shares]
138
+ end
139
+
140
+ def cpuset
141
+ info[:cpuset]
142
+ end
143
+
144
+ def memory
145
+ info[:memory]
146
+ end
147
+
148
+ def memory_swap
149
+ info[:memory_swap]
150
+ end
151
+
152
+ def last_metric
153
+ info[:last_metric]
154
+ end
155
+
156
+ def autorestart
157
+ info[:autorestart]
158
+ end
159
+
160
+ def autodestroy
161
+ info[:autodestroy]
162
+ end
163
+
164
+ def roles
165
+ info[:roles]
166
+ end
167
+
168
+ def linked_to_container
169
+ info[:linked_to_container]
170
+ end
171
+
172
+ def link_variables
173
+ info[:link_variables]
174
+ end
175
+
176
+ def privileged
177
+ info[privileged]
178
+ end
179
+
180
+ def read_only
181
+ info[:read_only]
182
+ end
183
+
184
+ def private_ip
185
+ info[:private_ip]
186
+ end
187
+
188
+ def net
189
+ info[:net]
190
+ end
191
+
192
+ def pid
193
+ info[:pid]
194
+ end
195
+
196
+ def container_ports
197
+ @container_ports ||= ContainerPorts.new(info[:container_ports])
198
+ end
199
+
200
+ def node
201
+ @node ||= client.nodes.get_from_uri(info[:node]) unless info[:node].nil?
202
+ end
203
+ end
204
+ end