ecs_compose 0.1.0.pre6 → 0.1.0.pre7
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 +4 -4
- data/lib/ecs_compose/json_generator.rb +34 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0ae0188dc62e80cc71af5875294462deda6c5edd
|
4
|
+
data.tar.gz: 8e6f777891d855a5199eb117370be12596a4fb5a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e14d979474af2e9a368b1a6973fff7b0571480c55da159fad7bdee7fc0b4cf311f8a720e8dfea12196c4a5c553ddf39804d08f503270997aaacce325c117fb59
|
7
|
+
data.tar.gz: e880db7381c14d238fd36c12d86f42704c552e540fab0088b018375bfd1d5bcf745d1842fb590bd7bd08081a58bfa4ee5eb60a54603b294f855dd8bf334bbedd
|
@@ -1,5 +1,6 @@
|
|
1
|
-
require '
|
1
|
+
require 'digest/sha1'
|
2
2
|
require 'json'
|
3
|
+
require 'psych'
|
3
4
|
|
4
5
|
module EcsCompose
|
5
6
|
class ContainerKeyError < KeyError
|
@@ -18,10 +19,20 @@ module EcsCompose
|
|
18
19
|
|
19
20
|
# Generate an ECS task definition as a raw Ruby hash.
|
20
21
|
def generate
|
22
|
+
# Generate JSON for our containers.
|
21
23
|
containers = @yaml.map do |name, fields|
|
22
24
|
# Skip this service if we've been given a list to emit, and
|
23
25
|
# this service isn't on the list.
|
24
26
|
begin
|
27
|
+
mount_points = (fields["volumes"] || []).map do |v|
|
28
|
+
host, container, ro = v.split(':')
|
29
|
+
{
|
30
|
+
"sourceVolume" => path_to_vol_name(host),
|
31
|
+
"containerPath" => container,
|
32
|
+
"readOnly" => (ro == "ro")
|
33
|
+
}
|
34
|
+
end
|
35
|
+
|
25
36
|
json = {
|
26
37
|
"name" => name,
|
27
38
|
"image" => fields.fetch("image"),
|
@@ -33,7 +44,7 @@ module EcsCompose
|
|
33
44
|
(fields["ports"] || []).map {|pm| port_mapping(pm) },
|
34
45
|
"essential" => true,
|
35
46
|
"environment" => environment(fields["environment"] || {}),
|
36
|
-
"mountPoints" =>
|
47
|
+
"mountPoints" => mount_points,
|
37
48
|
"volumesFrom" => [],
|
38
49
|
}
|
39
50
|
if fields.has_key?("entrypoint")
|
@@ -50,10 +61,21 @@ module EcsCompose
|
|
50
61
|
end
|
51
62
|
end
|
52
63
|
|
64
|
+
# Generate our top-level volume declarations.
|
65
|
+
volumes = @yaml.map do |name, fields|
|
66
|
+
(fields["volumes"] || []).map {|v| v.split(':')[0] }
|
67
|
+
end.flatten.sort.uniq.map do |host_path|
|
68
|
+
{
|
69
|
+
"name" => path_to_vol_name(host_path),
|
70
|
+
"host" => { "sourcePath" => host_path }
|
71
|
+
}
|
72
|
+
end
|
73
|
+
|
74
|
+
# Return our final JSON.
|
53
75
|
{
|
54
76
|
"family" => @family,
|
55
77
|
"containerDefinitions" => containers,
|
56
|
-
"volumes" =>
|
78
|
+
"volumes" => volumes
|
57
79
|
}
|
58
80
|
end
|
59
81
|
|
@@ -108,5 +130,14 @@ module EcsCompose
|
|
108
130
|
# We need to force string values to keep ECS happy.
|
109
131
|
env.map {|k, v| { "name" => k, "value" => v.to_s } }
|
110
132
|
end
|
133
|
+
|
134
|
+
# Convert a Unix path into a valid volume name.
|
135
|
+
def path_to_vol_name(path)
|
136
|
+
# Ensure (extremely high probability of) uniqueness by hashing the
|
137
|
+
# pathname, and then include a simplified version of the path for
|
138
|
+
# readability. This might fail, but the odds are the same as a
|
139
|
+
# failure of git's content-based addressing.
|
140
|
+
Digest::SHA1.hexdigest(path) + path.gsub(/[\/.]/, '_')
|
141
|
+
end
|
111
142
|
end
|
112
143
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ecs_compose
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.0.
|
4
|
+
version: 0.1.0.pre7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Kidd
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-08-
|
11
|
+
date: 2015-08-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|