hako 2.0.3 → 2.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/lib/hako/schedulers/ecs.rb +6 -4
- data/lib/hako/schedulers/ecs_autoscaling.rb +4 -3
- data/lib/hako/schedulers/ecs_definition_comparator.rb +1 -1
- data/lib/hako/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2de7cfe5e38e22aaf20d4bca43d9a3b579eafd5eb68173a260c448df063864cc
|
4
|
+
data.tar.gz: 9ff76702eb2e6be3ffff566cd897cf670e84fe8fd3addd45cba17d5b025426d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 299bb255b8e7f1e7a768c298b303a1a1ef9366959cbaf3c29560a121a2100e72f9b07b0ae8e8af1c52f1e12f8d659bf112ed32cda636590ba088b8933b423332
|
7
|
+
data.tar.gz: c9937025cda397635911b79e8fafca65cfdaa423eb26386c62e14cbe5aaed7d10bc3ad8f1cdaadbed09a4025617282ca75531c126e5249a3a3ccc3c9f45bb6c5
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
# 2.0.4 (2018-02-26)
|
2
|
+
## Bug fixes
|
3
|
+
- Pass AWS region of ECS scheduler to other AWS clients (CloudWatch, ApplicationAutoScaling)
|
4
|
+
- Eliminate `--memory` parameter from dry-run output if it's not given
|
5
|
+
- Give missing unit to the value of `--memory` parameter in dry-run output
|
6
|
+
- Take `memory_reservation` into account when calculating required memory
|
7
|
+
|
1
8
|
# 2.0.3 (2018-02-16)
|
2
9
|
## Bug fixes
|
3
10
|
- create_aws_cloud_watch_logs_log_group script: Skip creating CloudWatch log group on dry-run
|
data/lib/hako/schedulers/ecs.rb
CHANGED
@@ -44,7 +44,7 @@ module Hako
|
|
44
44
|
end
|
45
45
|
@dynamic_port_mapping = options.fetch('dynamic_port_mapping', @ecs_elb_options.nil?)
|
46
46
|
if options.key?('autoscaling')
|
47
|
-
@autoscaling = EcsAutoscaling.new(options.fetch('autoscaling'), dry_run: @dry_run)
|
47
|
+
@autoscaling = EcsAutoscaling.new(options.fetch('autoscaling'), @region, dry_run: @dry_run)
|
48
48
|
end
|
49
49
|
@autoscaling_group_for_oneshot = options.fetch('autoscaling_group_for_oneshot', nil)
|
50
50
|
@autoscaling_topic_for_oneshot = options.fetch('autoscaling_topic_for_oneshot', nil)
|
@@ -939,7 +939,7 @@ module Hako
|
|
939
939
|
|
940
940
|
RUN_TASK_INTERVAL = 10
|
941
941
|
def try_scale_out_with_sns(task_definition)
|
942
|
-
required_cpu, required_memory = task_definition.container_definitions.inject([0, 0]) { |(cpu, memory), d| [cpu + d.cpu, memory + d.memory] }
|
942
|
+
required_cpu, required_memory = task_definition.container_definitions.inject([0, 0]) { |(cpu, memory), d| [cpu + d.cpu, memory + (d.memory_reservation || d.memory)] }
|
943
943
|
@hako_task_id ||= SecureRandom.uuid
|
944
944
|
message = JSON.dump(
|
945
945
|
group_name: @autoscaling_group_for_oneshot,
|
@@ -1022,7 +1022,7 @@ module Hako
|
|
1022
1022
|
# @param [Array<Aws::ECS::Types::ContainerInstance>] container_instances
|
1023
1023
|
# @return [Boolean]
|
1024
1024
|
def has_capacity?(task_definition, container_instances)
|
1025
|
-
required_cpu, required_memory = task_definition.container_definitions.inject([0, 0]) { |(cpu, memory), d| [cpu + d.cpu, memory + d.memory] }
|
1025
|
+
required_cpu, required_memory = task_definition.container_definitions.inject([0, 0]) { |(cpu, memory), d| [cpu + d.cpu, memory + (d.memory_reservation || d.memory)] }
|
1026
1026
|
container_instances.any? do |ci|
|
1027
1027
|
cpu = ci.remaining_resources.find { |r| r.name == 'CPU' }.integer_value
|
1028
1028
|
memory = ci.remaining_resources.find { |r| r.name == 'MEMORY' }.integer_value
|
@@ -1037,7 +1037,9 @@ module Hako
|
|
1037
1037
|
cmd = %w[docker run]
|
1038
1038
|
cmd << '--name' << definition.fetch(:name)
|
1039
1039
|
cmd << '--cpu-shares' << definition.fetch(:cpu)
|
1040
|
-
|
1040
|
+
if definition[:memory]
|
1041
|
+
cmd << '--memory' << "#{definition[:memory]}M"
|
1042
|
+
end
|
1041
1043
|
definition.fetch(:links).each do |link|
|
1042
1044
|
cmd << '--link' << link
|
1043
1045
|
end
|
@@ -8,7 +8,8 @@ require 'hako/error'
|
|
8
8
|
module Hako
|
9
9
|
module Schedulers
|
10
10
|
class EcsAutoscaling
|
11
|
-
def initialize(options, dry_run:)
|
11
|
+
def initialize(options, region, dry_run:)
|
12
|
+
@region = region
|
12
13
|
@dry_run = dry_run
|
13
14
|
@role_arn = required_option(options, 'role_arn')
|
14
15
|
@min_capacity = required_option(options, 'min_capacity')
|
@@ -124,12 +125,12 @@ module Hako
|
|
124
125
|
|
125
126
|
# @return [Aws::ApplicationAutoScaling]
|
126
127
|
def autoscaling_client
|
127
|
-
@autoscaling_client ||= Aws::ApplicationAutoScaling::Client.new
|
128
|
+
@autoscaling_client ||= Aws::ApplicationAutoScaling::Client.new(region: @region)
|
128
129
|
end
|
129
130
|
|
130
131
|
# @return [Aws::CloudWatch::Client]
|
131
132
|
def cw_client
|
132
|
-
@cw_client ||= Aws::CloudWatch::Client.new
|
133
|
+
@cw_client ||= Aws::CloudWatch::Client.new(region: @region)
|
133
134
|
end
|
134
135
|
|
135
136
|
# @param [Aws::ECS::Types::Service] service
|
@@ -23,7 +23,7 @@ module Hako
|
|
23
23
|
Schema::Structure.new.tap do |struct|
|
24
24
|
struct.member(:image, Schema::String.new)
|
25
25
|
struct.member(:cpu, Schema::Integer.new)
|
26
|
-
struct.member(:memory, Schema::Integer.new)
|
26
|
+
struct.member(:memory, Schema::Nullable.new(Schema::Integer.new))
|
27
27
|
struct.member(:memory_reservation, Schema::Nullable.new(Schema::Integer.new))
|
28
28
|
struct.member(:links, Schema::UnorderedArray.new(Schema::String.new))
|
29
29
|
struct.member(:port_mappings, Schema::UnorderedArray.new(port_mapping_schema))
|
data/lib/hako/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hako
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kohei Suzuki
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-02-
|
11
|
+
date: 2018-02-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-applicationautoscaling
|
@@ -367,7 +367,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
367
367
|
version: '0'
|
368
368
|
requirements: []
|
369
369
|
rubyforge_project:
|
370
|
-
rubygems_version: 2.7.
|
370
|
+
rubygems_version: 2.7.6
|
371
371
|
signing_key:
|
372
372
|
specification_version: 4
|
373
373
|
summary: Deploy Docker container
|