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.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/.rspec +2 -0
- data/.rubocop.yml +43 -0
- data/.travis.yml +4 -0
- data/CODE_OF_CONDUCT.md +49 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +81 -0
- data/Rakefile +6 -0
- data/docker_cloud.gemspec +31 -0
- data/lib/docker_cloud.rb +107 -0
- data/lib/docker_cloud/api/api.rb +57 -0
- data/lib/docker_cloud/api/availability_zone_api.rb +23 -0
- data/lib/docker_cloud/api/container_api.rb +38 -0
- data/lib/docker_cloud/api/external_repository_api.rb +34 -0
- data/lib/docker_cloud/api/node_api.rb +27 -0
- data/lib/docker_cloud/api/node_cluster_api.rb +46 -0
- data/lib/docker_cloud/api/node_type_api.rb +23 -0
- data/lib/docker_cloud/api/provider_api.rb +19 -0
- data/lib/docker_cloud/api/region_api.rb +24 -0
- data/lib/docker_cloud/api/registry_api.rb +19 -0
- data/lib/docker_cloud/api/service_api.rb +53 -0
- data/lib/docker_cloud/api/stack_api.rb +53 -0
- data/lib/docker_cloud/availability_zone.rb +19 -0
- data/lib/docker_cloud/container.rb +204 -0
- data/lib/docker_cloud/external_repository.rb +20 -0
- data/lib/docker_cloud/helpers.rb +33 -0
- data/lib/docker_cloud/node.rb +99 -0
- data/lib/docker_cloud/node_cluster.rb +67 -0
- data/lib/docker_cloud/node_type.rb +38 -0
- data/lib/docker_cloud/provider.rb +31 -0
- data/lib/docker_cloud/region.rb +28 -0
- data/lib/docker_cloud/registry.rb +27 -0
- data/lib/docker_cloud/service.rb +235 -0
- data/lib/docker_cloud/stack.rb +42 -0
- data/lib/docker_cloud/type.rb +19 -0
- data/lib/docker_cloud/version.rb +3 -0
- 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
|