ecs_compose 0.1.0.pre13 → 0.1.0.pre14
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 +28 -2
- data/lib/ecs_compose/ecs.rb +7 -0
- data/lib/ecs_compose/task_definition.rb +6 -0
- 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: 258ad2a5c72320cfcddc857c2ef3bb65b514191b
|
4
|
+
data.tar.gz: ddde11787a6c3b444715af2f5139c2e27a00e631
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ddf8db17be5df23a2afa7cd5b968efbc8cdcada1e7321f3d345c528509e431ce06cca31fd140c0b2ff7cd3edacc5b4bf6b8e255a13d83b4dbc8902a100e27b7c
|
7
|
+
data.tar.gz: aa1d015f363ed9590c42b75decd8d479b25cd22eb8d5379bd62b5cdc2dfc9c43328e501445ba78f407d4e0daf2457613509c5deba635772bdfd290444afdb61e
|
data/exe/ecs-compose
CHANGED
@@ -12,6 +12,7 @@ Usage:
|
|
12
12
|
ecs-compose [options] register [<task_def>...]
|
13
13
|
ecs-compose [options] up [<service>...]
|
14
14
|
ecs-compose [options] run [-e <name>=<value>]... [--entrypoint <entrypoint>] <task> [-- [<arg>...]]
|
15
|
+
ecs-compose [options] scale (all=<n> | <service>=<m>)...
|
15
16
|
ecs-compose [options] json [<task_def>]
|
16
17
|
|
17
18
|
Options:
|
@@ -34,6 +35,7 @@ Commands:
|
|
34
35
|
register Registers the specified ECS task definitions (defaults to all)
|
35
36
|
up Updates the specified ECS services (defaults to all)
|
36
37
|
run Runs the specified task
|
38
|
+
scale Specify how many copies of a service's task should be run
|
37
39
|
json Generate JSON for a specific task definition
|
38
40
|
DOCOPT
|
39
41
|
|
@@ -58,14 +60,14 @@ class App
|
|
58
60
|
|
59
61
|
# Figure out which subcommand was chosen, and run it.
|
60
62
|
def run
|
61
|
-
for command in %w{register up run json}
|
63
|
+
for command in %w{register up run scale json}
|
62
64
|
if options.fetch(command)
|
63
65
|
send("command_#{command}")
|
64
66
|
return
|
65
67
|
end
|
66
68
|
end
|
67
69
|
# We shouldn't ever get here.
|
68
|
-
raise "Unknown command
|
70
|
+
raise "Unknown command"
|
69
71
|
end
|
70
72
|
|
71
73
|
protected
|
@@ -111,6 +113,30 @@ class App
|
|
111
113
|
EcsCompose::TaskDefinition.wait_for_tasks([arn])
|
112
114
|
end
|
113
115
|
|
116
|
+
def command_scale
|
117
|
+
# Technically we could make this work without a manifest.
|
118
|
+
available = manifest.task_definitions.select {|td| td.type == :service }
|
119
|
+
all_names = available.map {|td| td.name }
|
120
|
+
settings = options.fetch("<service>=<m>")
|
121
|
+
scales = {}
|
122
|
+
for setting in settings
|
123
|
+
setting =~ /\A([-_A-Za-z0-9]+)=(\d+)\z/ or
|
124
|
+
fatal_err("Can't parse '#{setting}'")
|
125
|
+
name, count = $1, $2.to_i
|
126
|
+
if name == 'all'
|
127
|
+
all_names.each {|n| scales[n] = count }
|
128
|
+
else
|
129
|
+
scales[name] = count
|
130
|
+
end
|
131
|
+
end
|
132
|
+
service_names = scales.map do |name, count|
|
133
|
+
service = available.find {|td| td.name == name } or
|
134
|
+
raise "Unknown service: #{name}"
|
135
|
+
service.scale(count)
|
136
|
+
end
|
137
|
+
EcsCompose::TaskDefinition.wait_for_services(service_names)
|
138
|
+
end
|
139
|
+
|
114
140
|
def command_json
|
115
141
|
task_definition = options.fetch('<task_def>')[0]
|
116
142
|
if task_definition.nil?
|
data/lib/ecs_compose/ecs.rb
CHANGED
@@ -53,6 +53,13 @@ module EcsCompose
|
|
53
53
|
"--task-definition", task_definition)
|
54
54
|
end
|
55
55
|
|
56
|
+
# Update the specified service. Sample args: `"frontend"`, `3`.
|
57
|
+
def self.update_service_desired_count(service, desired_count)
|
58
|
+
run("update-service",
|
59
|
+
"--service", service,
|
60
|
+
"--desired-count", desired_count.to_s)
|
61
|
+
end
|
62
|
+
|
56
63
|
# Run a one-off task. Sample args: `"migrator:1"`. The overrides may
|
57
64
|
# be specified in the JSON format used by `aws ecs run-task`.
|
58
65
|
def self.run_task(task_definition, overrides_json: nil)
|
@@ -33,6 +33,12 @@ module EcsCompose
|
|
33
33
|
name
|
34
34
|
end
|
35
35
|
|
36
|
+
# Set the number of running copies of a service we want to have.
|
37
|
+
def scale(count)
|
38
|
+
Ecs.update_service_desired_count(name, count)
|
39
|
+
name
|
40
|
+
end
|
41
|
+
|
36
42
|
# Wait for a set of services to reach a steady state.
|
37
43
|
def self.wait_for_services(service_names)
|
38
44
|
Ecs.wait_services_stable(service_names)
|
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.pre14
|
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-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: docopt
|