hako 2.12.0 → 2.13.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 +4 -4
- data/.rubocop.yml +2 -2
- data/CHANGELOG.md +7 -2
- data/hako.gemspec +1 -1
- data/lib/hako/schedulers/ecs.rb +35 -0
- data/lib/hako/schedulers/ecs_service_comparator.rb +10 -1
- data/lib/hako/version.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8a30d74550945e62c5f12018b854c043b2e5c2221b64ab3f8f01060e696c0b65
|
4
|
+
data.tar.gz: 8fb3a566c799e12a0650afed8ea9015eae8d6999abdb8bc5383c1099a25b98e3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b9d56daa1b534da5e3d21192161d208a7aa3cefd432bb58a11bc26cf744233f669d2915450a8319464da3b88973c7a96e697fa0c1b303f6bd6b8020c0318ed06
|
7
|
+
data.tar.gz: f918907a6a4e5d1f0df0e9e00bd392e83c809c7a94be3040261bfa6826282a0f5cfe841765cc9adc933afc71ce1b00c7646065f66f69f7a80e8fc016dc72069b
|
data/.rubocop.yml
CHANGED
@@ -4,12 +4,12 @@ AllCops:
|
|
4
4
|
DisplayCopNames: true
|
5
5
|
TargetRubyVersion: 2.3
|
6
6
|
|
7
|
-
Layout/
|
7
|
+
Layout/FirstArgumentIndentation:
|
8
8
|
Enabled: false
|
9
9
|
|
10
10
|
Naming/PredicateName:
|
11
11
|
Enabled: false
|
12
|
-
Naming/
|
12
|
+
Naming/MethodParameterName:
|
13
13
|
Enabled: false
|
14
14
|
Naming/MemoizedInstanceVariableName:
|
15
15
|
Enabled: false
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
# 2.13.0 (2020-01-10)
|
2
|
+
## New features
|
3
|
+
- Support capacity provider strategy
|
4
|
+
|
5
|
+
## Bug fixes
|
6
|
+
- Do not try to update assign_public_ip when it is not changed
|
7
|
+
|
1
8
|
# 2.12.0 (2019-09-09)
|
2
9
|
## New features
|
3
10
|
- Support more overrides options for `hako oneshot`
|
@@ -6,8 +13,6 @@
|
|
6
13
|
## Bug fixes
|
7
14
|
- Show `--health-*` options in dry-run
|
8
15
|
|
9
|
-
## Bug fixes
|
10
|
-
|
11
16
|
# 2.11.1 (2019-05-17)
|
12
17
|
## Bug fixes
|
13
18
|
- Fix comparison of `system_controls` parameter
|
data/hako.gemspec
CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.add_dependency 'aws-sdk-cloudwatch'
|
27
27
|
spec.add_dependency 'aws-sdk-cloudwatchlogs'
|
28
28
|
spec.add_dependency 'aws-sdk-ec2'
|
29
|
-
spec.add_dependency 'aws-sdk-ecs', '>= 1.
|
29
|
+
spec.add_dependency 'aws-sdk-ecs', '>= 1.54.0'
|
30
30
|
spec.add_dependency 'aws-sdk-elasticloadbalancing'
|
31
31
|
spec.add_dependency 'aws-sdk-elasticloadbalancingv2'
|
32
32
|
spec.add_dependency 'aws-sdk-s3'
|
data/lib/hako/schedulers/ecs.rb
CHANGED
@@ -74,6 +74,15 @@ module Hako
|
|
74
74
|
@memory = options.fetch('memory', nil)
|
75
75
|
@requires_compatibilities = options.fetch('requires_compatibilities', nil)
|
76
76
|
@launch_type = options.fetch('launch_type', nil)
|
77
|
+
if options.key?('capacity_provider_strategy')
|
78
|
+
@capacity_provider_strategy = options.fetch('capacity_provider_strategy').map do |strategy|
|
79
|
+
{
|
80
|
+
capacity_provider: strategy.fetch('capacity_provider'),
|
81
|
+
weight: strategy.fetch('weight', nil),
|
82
|
+
base: strategy.fetch('base', nil),
|
83
|
+
}
|
84
|
+
end
|
85
|
+
end
|
77
86
|
@platform_version = options.fetch('platform_version', nil)
|
78
87
|
if options.key?('network_configuration')
|
79
88
|
network_configuration = options.fetch('network_configuration')
|
@@ -670,6 +679,7 @@ module Hako
|
|
670
679
|
placement_constraints: @placement_constraints,
|
671
680
|
started_by: 'hako oneshot',
|
672
681
|
launch_type: @launch_type,
|
682
|
+
capacity_provider_strategy: @capacity_provider_strategy,
|
673
683
|
platform_version: @platform_version,
|
674
684
|
network_configuration: @network_configuration,
|
675
685
|
)
|
@@ -864,6 +874,7 @@ module Hako
|
|
864
874
|
desired_count: @desired_count,
|
865
875
|
task_definition: task_definition_arn,
|
866
876
|
deployment_configuration: @deployment_configuration,
|
877
|
+
capacity_provider_strategy: @capacity_provider_strategy,
|
867
878
|
platform_version: @platform_version,
|
868
879
|
network_configuration: @network_configuration,
|
869
880
|
health_check_grace_period_seconds: @health_check_grace_period_seconds,
|
@@ -872,6 +883,20 @@ module Hako
|
|
872
883
|
# Keep current desired_count if autoscaling is enabled
|
873
884
|
params[:desired_count] = current_service.desired_count
|
874
885
|
end
|
886
|
+
# Copy the current capacity provider strategy in order to avoid a
|
887
|
+
# perpetual diff when the service is created with no strategy to use the
|
888
|
+
# cluster's default capacity provider strategy, which results in the
|
889
|
+
# strategy being set to the default strategy at that moment.
|
890
|
+
# It is not allowed to update the service to use the cluster's default
|
891
|
+
# capacity provider strategy when it is using a non-default capacity
|
892
|
+
# provider strategy.
|
893
|
+
params[:capacity_provider_strategy] ||= current_service.capacity_provider_strategy&.map(&:to_h)
|
894
|
+
if different_capacity_provider_strategy?(params[:capacity_provider_strategy], current_service.capacity_provider_strategy)
|
895
|
+
# Switching from launch type to capacity provider strategy or making
|
896
|
+
# a change to a capacity provider strategy requires to force a new
|
897
|
+
# deployment.
|
898
|
+
params[:force_new_deployment] = true
|
899
|
+
end
|
875
900
|
warn_placement_policy_change(current_service)
|
876
901
|
warn_service_registries_change(current_service)
|
877
902
|
if service_changed?(current_service, params)
|
@@ -895,6 +920,7 @@ module Hako
|
|
895
920
|
placement_strategy: @placement_strategy,
|
896
921
|
scheduling_strategy: @scheduling_strategy,
|
897
922
|
launch_type: @launch_type,
|
923
|
+
capacity_provider_strategy: @capacity_provider_strategy,
|
898
924
|
platform_version: @platform_version,
|
899
925
|
network_configuration: @network_configuration,
|
900
926
|
health_check_grace_period_seconds: @health_check_grace_period_seconds,
|
@@ -1348,6 +1374,15 @@ module Hako
|
|
1348
1374
|
nil
|
1349
1375
|
end
|
1350
1376
|
|
1377
|
+
# @param [Hash, nil] expected_strategy
|
1378
|
+
# @param [Aws::ECS::Types::CapacityProviderStrategyItem, nil] actual_strategy
|
1379
|
+
# @return [Boolean]
|
1380
|
+
def different_capacity_provider_strategy?(expected_strategy, actual_strategy)
|
1381
|
+
expected = (expected_strategy || []).map { |s| [s[:capacity_provider], s[:weight] || 0, s[:base] || 0] }.sort
|
1382
|
+
actual = (actual_strategy || []).map { |s| [s.capacity_provider, s.weight, s.base] }.sort
|
1383
|
+
expected != actual
|
1384
|
+
end
|
1385
|
+
|
1351
1386
|
# @param [Aws::ECS::Types::Service] service
|
1352
1387
|
# @return [nil]
|
1353
1388
|
def warn_placement_policy_change(service)
|
@@ -23,6 +23,7 @@ module Hako
|
|
23
23
|
struct.member(:desired_count, Schema::Integer.new)
|
24
24
|
struct.member(:task_definition, Schema::String.new)
|
25
25
|
struct.member(:deployment_configuration, Schema::WithDefault.new(deployment_configuration_schema, default_configuration))
|
26
|
+
struct.member(:capacity_provider_strategy, Schema::Nullable.new(Schema::UnorderedArray.new(capacity_provider_strategy_schema)))
|
26
27
|
struct.member(:platform_version, Schema::WithDefault.new(Schema::String.new, 'LATEST'))
|
27
28
|
struct.member(:network_configuration, Schema::Nullable.new(network_configuration_schema))
|
28
29
|
struct.member(:health_check_grace_period_seconds, Schema::Nullable.new(Schema::Integer.new))
|
@@ -36,6 +37,14 @@ module Hako
|
|
36
37
|
end
|
37
38
|
end
|
38
39
|
|
40
|
+
def capacity_provider_strategy_schema
|
41
|
+
Schema::Structure.new.tap do |struct|
|
42
|
+
struct.member(:capacity_provider, Schema::String.new)
|
43
|
+
struct.member(:weight, Schema::WithDefault.new(Schema::Integer.new, 0))
|
44
|
+
struct.member(:base, Schema::WithDefault.new(Schema::Integer.new, 0))
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
39
48
|
def network_configuration_schema
|
40
49
|
Schema::Structure.new.tap do |struct|
|
41
50
|
struct.member(:awsvpc_configuration, awsvpc_configuration_schema)
|
@@ -46,7 +55,7 @@ module Hako
|
|
46
55
|
Schema::Structure.new.tap do |struct|
|
47
56
|
struct.member(:subnets, Schema::UnorderedArray.new(Schema::String.new))
|
48
57
|
struct.member(:security_groups, Schema::UnorderedArray.new(Schema::String.new))
|
49
|
-
struct.member(:assign_public_ip, Schema::String.new)
|
58
|
+
struct.member(:assign_public_ip, Schema::WithDefault.new(Schema::String.new, 'DISABLED'))
|
50
59
|
end
|
51
60
|
end
|
52
61
|
|
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.
|
4
|
+
version: 2.13.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kohei Suzuki
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-01-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-applicationautoscaling
|
@@ -86,14 +86,14 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 1.
|
89
|
+
version: 1.54.0
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: 1.
|
96
|
+
version: 1.54.0
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: aws-sdk-elasticloadbalancing
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -397,7 +397,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
397
397
|
- !ruby/object:Gem::Version
|
398
398
|
version: '0'
|
399
399
|
requirements: []
|
400
|
-
rubygems_version: 3.
|
400
|
+
rubygems_version: 3.1.2
|
401
401
|
signing_key:
|
402
402
|
specification_version: 4
|
403
403
|
summary: Deploy Docker container
|