ecs_compose 0.1.0.pre9 → 0.1.0.pre10
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/exe/ecs-compose +10 -3
- data/lib/ecs_compose/ecs.rb +10 -0
- data/lib/ecs_compose/json_generator.rb +36 -0
- data/lib/ecs_compose/task_definition.rb +9 -9
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f3cd0b018b8b9b888c1122557c0a161334766b53
|
4
|
+
data.tar.gz: 16060721d639f8d4476873f03b41a34a18f68648
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b64b87966680476d655a08de539f3f7d9ff1e6bdb043bdca0e98fff3c8becbe3162c656818385da9e62a7970146c2e55b97e234995b683350b9894628e1974be
|
7
|
+
data.tar.gz: 089581fab759d2710fd2e74d913fec10dcdf1a6a0e8ca6fb182f019d8ceece2637f4929a01bbfafae6b73a81fdc1e8874b1047804d4c74136ce9a663fc800b20
|
data/exe/ecs-compose
CHANGED
@@ -11,7 +11,7 @@ Usage:
|
|
11
11
|
ecs-compose --version
|
12
12
|
ecs-compose [options] register [<task_def>...]
|
13
13
|
ecs-compose [options] up [<service>...]
|
14
|
-
ecs-compose [options] run [-e <name>=<value>]... [--entrypoint <entrypoint>] <task> [--
|
14
|
+
ecs-compose [options] run [-e <name>=<value>]... [--entrypoint <entrypoint>] <task> [-- [<arg>...]]
|
15
15
|
ecs-compose [options] json [<task_def>]
|
16
16
|
|
17
17
|
Options:
|
@@ -27,7 +27,8 @@ Options:
|
|
27
27
|
docker-compose.yml file
|
28
28
|
-e <name>=<value> Set an environment variable
|
29
29
|
--entrypoint <entrypoint>
|
30
|
-
Override the container's regular entrypoint
|
30
|
+
Override the container's regular entrypoint (NOT CURRENTLY
|
31
|
+
SUPPORTED BY ECS)
|
31
32
|
|
32
33
|
Commands:
|
33
34
|
register Registers the specified ECS task definitions (defaults to all)
|
@@ -72,7 +73,7 @@ class App
|
|
72
73
|
def command_register
|
73
74
|
available = manifest.task_definitions
|
74
75
|
chosen = all_or_specified(available, options.fetch('<task_def>'))
|
75
|
-
chosen.each {|td| td.register }
|
76
|
+
chosen.each {|td| puts(td.register) }
|
76
77
|
end
|
77
78
|
|
78
79
|
def command_up
|
@@ -82,6 +83,12 @@ class App
|
|
82
83
|
end
|
83
84
|
|
84
85
|
def command_run
|
86
|
+
# Work around docopt lossage.
|
87
|
+
dashes = options.fetch('--')
|
88
|
+
if dashes && dashes != '--'
|
89
|
+
fatal_err "The '--' option to run is mandatory for now"
|
90
|
+
end
|
91
|
+
|
85
92
|
available = manifest.task_definitions.select {|td| td.type == :task }
|
86
93
|
task_name = options.fetch('<task>')
|
87
94
|
task = available.find {|td| td.name == task_name } or
|
data/lib/ecs_compose/ecs.rb
CHANGED
@@ -47,5 +47,15 @@ module EcsCompose
|
|
47
47
|
"--service", service,
|
48
48
|
"--task-definition", task_definition)
|
49
49
|
end
|
50
|
+
|
51
|
+
# Run a one-off task. Sample args: `"migrator:1"`. The overrides may
|
52
|
+
# be specified in the JSON format used by `aws ecs run-task`.
|
53
|
+
def self.run_task(task_definition, overrides_json: nil)
|
54
|
+
extra_args = []
|
55
|
+
extra_args.concat(["--overrides", overrides_json]) if overrides_json
|
56
|
+
run("run-task",
|
57
|
+
"--task-definition", task_definition,
|
58
|
+
*extra_args)
|
59
|
+
end
|
50
60
|
end
|
51
61
|
end
|
@@ -86,6 +86,42 @@ module EcsCompose
|
|
86
86
|
JSON.generate(generate())
|
87
87
|
end
|
88
88
|
|
89
|
+
# Generate an `--overrides` value for use with with `aws ecs run-task`
|
90
|
+
# as a raw Ruby hash.
|
91
|
+
def generate_override(environment: {}, entrypoint: nil, command: nil)
|
92
|
+
# Right now, we only support overriding for single-container tasks, so
|
93
|
+
# find our single container if we have it.
|
94
|
+
if @yaml.length != 1
|
95
|
+
raise "Can only override task attributes for single-container tasks"
|
96
|
+
end
|
97
|
+
name = @yaml.keys.first
|
98
|
+
container_overrides = { "name" => name }
|
99
|
+
|
100
|
+
# Apply any environment overrides.
|
101
|
+
if environment && !environment.empty?
|
102
|
+
container_overrides["environment"] = environment.map do |k, v|
|
103
|
+
{ "name" => k, "value" => v }
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
# Apply any other overrides.
|
108
|
+
container_overrides["command"] = command if command
|
109
|
+
# TODO: This may not actually be supported by AWS yet.
|
110
|
+
container_overrides["entryPoint"] = entrypoint if entrypoint
|
111
|
+
|
112
|
+
# Return nil if we haven't generated any actual overrides.
|
113
|
+
if container_overrides.length > 1
|
114
|
+
{ "containerOverrides" => [ container_overrides ] }
|
115
|
+
else
|
116
|
+
nil
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
# Like generate, but return serialized JSON.
|
121
|
+
def generate_override_json(**args)
|
122
|
+
JSON.generate(generate_override(**args))
|
123
|
+
end
|
124
|
+
|
89
125
|
protected
|
90
126
|
|
91
127
|
# Parse a Docker-style `mem_limit` and convert to megabytes.
|
@@ -18,25 +18,25 @@ module EcsCompose
|
|
18
18
|
|
19
19
|
# Register this task definition with ECS. Will create the task
|
20
20
|
# definition if it doesn't exist, and add a new version of the task.
|
21
|
+
# Returns a string of the form `"name:revision"` identifying the task
|
22
|
+
# we registered.
|
21
23
|
def register
|
22
|
-
EcsCompose::Ecs.register_task_definition(to_json)
|
24
|
+
reg = EcsCompose::Ecs.register_task_definition(to_json)
|
25
|
+
.fetch("taskDefinition")
|
26
|
+
"#{reg.fetch('family')}:#{reg.fetch('revision')}"
|
23
27
|
end
|
24
28
|
|
25
29
|
# Register this task definition with ECS, and update the corresponding
|
26
30
|
# service.
|
27
31
|
def update
|
28
|
-
|
29
|
-
task_def = "#{reg.fetch('family')}:#{reg.fetch('revision')}"
|
30
|
-
EcsCompose::Ecs.update_service(name, task_def)
|
32
|
+
EcsCompose::Ecs.update_service(name, register)
|
31
33
|
end
|
32
34
|
|
33
35
|
# Run this task definition as a one-shot ECS task, with the specified
|
34
36
|
# overrides.
|
35
|
-
def run(
|
36
|
-
|
37
|
-
|
38
|
-
puts "command: #{command.inspect}"
|
39
|
-
raise "Not yet implemented"
|
37
|
+
def run(**args)
|
38
|
+
overrides_json = json_generator.generate_override_json(**args)
|
39
|
+
EcsCompose::Ecs.run_task(register, overrides_json: overrides_json)
|
40
40
|
end
|
41
41
|
|
42
42
|
# Generate ECS task definition JSON for this instance.
|