hako 1.1.0 → 1.2.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/CHANGELOG.md +5 -0
- data/Gemfile +1 -0
- data/Rakefile +2 -1
- data/exe/hako +1 -0
- data/hako.gemspec +1 -0
- data/lib/hako/app_container.rb +1 -0
- data/lib/hako/application.rb +1 -0
- data/lib/hako/cli.rb +1 -0
- data/lib/hako/commander.rb +1 -0
- data/lib/hako/container.rb +1 -0
- data/lib/hako/definition_loader.rb +1 -0
- data/lib/hako/env_expander.rb +1 -0
- data/lib/hako/env_provider.rb +1 -0
- data/lib/hako/env_providers/file.rb +1 -0
- data/lib/hako/env_providers/yaml.rb +1 -0
- data/lib/hako/env_providers.rb +1 -0
- data/lib/hako/error.rb +1 -0
- data/lib/hako/loader.rb +1 -0
- data/lib/hako/scheduler.rb +1 -0
- data/lib/hako/schedulers/ecs.rb +31 -0
- data/lib/hako/schedulers/ecs_autoscaling.rb +1 -0
- data/lib/hako/schedulers/ecs_definition_comparator.rb +1 -0
- data/lib/hako/schedulers/ecs_elb.rb +1 -0
- data/lib/hako/schedulers/ecs_elb_v2.rb +1 -0
- data/lib/hako/schedulers/ecs_service_comparator.rb +1 -0
- data/lib/hako/schedulers.rb +1 -0
- data/lib/hako/schema/boolean.rb +1 -0
- data/lib/hako/schema/integer.rb +1 -0
- data/lib/hako/schema/nullable.rb +1 -0
- data/lib/hako/schema/ordered_array.rb +1 -0
- data/lib/hako/schema/string.rb +1 -0
- data/lib/hako/schema/structure.rb +1 -0
- data/lib/hako/schema/table.rb +1 -0
- data/lib/hako/schema/unordered_array.rb +1 -0
- data/lib/hako/schema/with_default.rb +1 -0
- data/lib/hako/schema.rb +1 -0
- data/lib/hako/script.rb +1 -0
- data/lib/hako/scripts/create_aws_cloud_watch_logs_log_group.rb +1 -0
- data/lib/hako/scripts/nginx_front.rb +1 -0
- data/lib/hako/scripts.rb +1 -0
- data/lib/hako/version.rb +2 -1
- data/lib/hako/yaml_loader.rb +1 -0
- data/lib/hako.rb +1 -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: c1d86bc51070984dd1963477c7e0e65d3db228f8
|
4
|
+
data.tar.gz: 87daa9ce6841fc2b029d8bf33b03c4bce72aea35
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d3a0c055aebebccb5bb8b38a66e7183eb3d887e8fb483d106b3b1db191547041123ff720a0181ddbcbda41510b0255eb6ae313e4b78ad469430ef5531e92a9df
|
7
|
+
data.tar.gz: bf5ad5bc15d7750a21cb7de91d3d69f745f4e9febd2fa641f5d1b24953a644862aeaefe4cdd512d238a33d8c114efe87c3aa10a26574c26d90de1cac69562c8f
|
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
data/Rakefile
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'bundler/gem_tasks'
|
3
4
|
require 'rspec/core/rake_task'
|
4
5
|
require 'rubocop/rake_task'
|
@@ -8,4 +9,4 @@ RSpec::Core::RakeTask.new(:spec)
|
|
8
9
|
RuboCop::RakeTask.new(:rubocop)
|
9
10
|
YARD::Rake::YardocTask.new(:yard)
|
10
11
|
|
11
|
-
task :default => [
|
12
|
+
task :default => %i[spec rubocop]
|
data/exe/hako
CHANGED
data/hako.gemspec
CHANGED
data/lib/hako/app_container.rb
CHANGED
data/lib/hako/application.rb
CHANGED
data/lib/hako/cli.rb
CHANGED
data/lib/hako/commander.rb
CHANGED
data/lib/hako/container.rb
CHANGED
data/lib/hako/env_expander.rb
CHANGED
data/lib/hako/env_provider.rb
CHANGED
data/lib/hako/env_providers.rb
CHANGED
data/lib/hako/error.rb
CHANGED
data/lib/hako/loader.rb
CHANGED
data/lib/hako/scheduler.rb
CHANGED
data/lib/hako/schedulers/ecs.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'aws-sdk'
|
3
4
|
require 'hako'
|
4
5
|
require 'hako/error'
|
@@ -647,6 +648,8 @@ module Hako
|
|
647
648
|
Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
648
649
|
end
|
649
650
|
|
651
|
+
started_task_ids = []
|
652
|
+
|
650
653
|
loop do
|
651
654
|
if started_at
|
652
655
|
if Process.clock_gettime(Process::CLOCK_MONOTONIC) - started_at > @timeout
|
@@ -666,11 +669,22 @@ module Hako
|
|
666
669
|
break
|
667
670
|
end
|
668
671
|
Hako.logger.info "#{e.created_at}: #{e.message}"
|
672
|
+
task_id = extract_task_id(e.message)
|
673
|
+
if task_id && e.message.include?(' has started ')
|
674
|
+
started_task_ids << task_id
|
675
|
+
end
|
669
676
|
end
|
670
677
|
latest_event_id = find_latest_event_id(s.events)
|
671
678
|
Hako.logger.debug " latest_event_id=#{latest_event_id}, deployments=#{s.deployments}"
|
672
679
|
no_active = s.deployments.all? { |d| d.status != 'ACTIVE' }
|
673
680
|
primary = s.deployments.find { |d| d.status == 'PRIMARY' }
|
681
|
+
if primary.desired_count < started_task_ids.size
|
682
|
+
Hako.logger.error('Some started tasks are stopped. It seems new deployment is failing to start')
|
683
|
+
ecs_client.describe_tasks(cluster: service.cluster_arn, tasks: started_task_ids).tasks.each do |task|
|
684
|
+
report_task_diagnostics(task)
|
685
|
+
end
|
686
|
+
return false
|
687
|
+
end
|
674
688
|
primary_ready = primary && primary.running_count == primary.desired_count
|
675
689
|
if no_active && primary_ready
|
676
690
|
return true
|
@@ -690,6 +704,23 @@ module Hako
|
|
690
704
|
end
|
691
705
|
end
|
692
706
|
|
707
|
+
TASK_ID_RE = /\(task ([\h-]+)\)\.\z/
|
708
|
+
# @param [String] message
|
709
|
+
# @return [String, nil]
|
710
|
+
def extract_task_id(message)
|
711
|
+
message.slice(TASK_ID_RE, 1)
|
712
|
+
end
|
713
|
+
|
714
|
+
# @param [Aws::ECS::Types::Task] task
|
715
|
+
# @return [nil]
|
716
|
+
def report_task_diagnostics(task)
|
717
|
+
Hako.logger.error("task_definition_arn=#{task.task_definition_arn} last_status=#{task.last_status}")
|
718
|
+
Hako.logger.error(" stopped_reason: #{task.stopped_reason}")
|
719
|
+
task.containers.sort_by(&:name).each do |container|
|
720
|
+
Hako.logger.error(" Container #{container.name}: last_status=#{container.last_status} exit_code=#{container.exit_code.inspect} reason=#{container.reason.inspect}")
|
721
|
+
end
|
722
|
+
end
|
723
|
+
|
693
724
|
# @param [Aws::ECS::Types::TaskDefinition]
|
694
725
|
# @return [String]
|
695
726
|
def find_rollback_target(task_definition)
|
data/lib/hako/schedulers.rb
CHANGED
data/lib/hako/schema/boolean.rb
CHANGED
data/lib/hako/schema/integer.rb
CHANGED
data/lib/hako/schema/nullable.rb
CHANGED
data/lib/hako/schema/string.rb
CHANGED
data/lib/hako/schema/table.rb
CHANGED
data/lib/hako/schema.rb
CHANGED
data/lib/hako/script.rb
CHANGED
data/lib/hako/scripts.rb
CHANGED
data/lib/hako/version.rb
CHANGED
data/lib/hako/yaml_loader.rb
CHANGED
data/lib/hako.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: 1.
|
4
|
+
version: 1.2.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: 2017-
|
11
|
+
date: 2017-04-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|