hako 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|