full360-sequencer 0.0.6 → 0.0.7

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.
Files changed (3) hide show
  1. checksums.yaml +5 -5
  2. data/lib/full360-sequencer.rb +20 -14
  3. metadata +11 -11
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: 816056f91214a6885ee6279ccbe3598bf39af896ca551266881571e91362a8bb
4
- data.tar.gz: 87f1ebf3249d9cf08e41f7502cd6fed6d31033ce02b2675550f6c744a0032077
2
+ SHA1:
3
+ metadata.gz: 11689f8562fd17688883eca48d0e173a573d3823
4
+ data.tar.gz: 2328c3194fc48a4333bfeb4b7300dc839a9539a5
5
5
  SHA512:
6
- metadata.gz: ca93e5c5b5b063fa50a662f1724673a280222c3c64af200a73bd4ebaf21378ad9c11869a59ade63a99792be1186e077135f3b5773d427579e238e412c7ccf7ee
7
- data.tar.gz: 06c0903cd4588a3818862d4d5fef2f1f2498628cc84c6f6fd9849aac3b54d7c5af1cd8148df6ac378b07f0242b5626d83d71401ce348238098ff6c921cb59140
6
+ metadata.gz: 163c12b36137fd5a09c96851fe43315f50f191afd793e14b32817fd5dc6fd260b1afdf05e2a694ca4c942883fcf6bf7bf902332552e168cf97c5c86986661cfd
7
+ data.tar.gz: e5ef1c88f6cad5d4c4c37f435b7e3be01b1460bdeb7c8cf1b84ad3b7f98eba5ec25968aff1af19162235f92faf972b82fd456be82a24ca7d60e21a78a7228f18
@@ -9,18 +9,18 @@ module Full360
9
9
  class Runner
10
10
  attr_accessor :sleep_between_checks
11
11
  attr_accessor :config
12
-
12
+
13
13
  def initialize(logger = nil)
14
14
  @logger = logger ? logger : Logger.new(STDOUT)
15
15
 
16
16
  # default 5 seconds between completed? checks
17
17
  @sleep_between_checks = 5
18
18
  end
19
-
19
+
20
20
  def config_from_file(yaml_path)
21
21
  @config = parse_config_file(yaml_path)
22
22
  end
23
-
23
+
24
24
  def run_task_class(task_type_string)
25
25
  case task_type_string
26
26
  when 'ecs_task' then Full360::Sequencer::RunECSTask
@@ -47,25 +47,25 @@ module Full360
47
47
  e.backtrace.each { |r| @logger.error(r) }
48
48
  raise e
49
49
  end
50
-
50
+
51
51
  def task_name(params)
52
52
  params.keys.first
53
53
  end
54
-
54
+
55
55
  def parse_config_file(yaml_path)
56
56
  YAML.load_file(yaml_path)
57
57
  end
58
-
58
+
59
59
  def config_valid?(config)
60
60
  return false unless config.is_a? Array
61
61
  true
62
62
  end
63
63
  end
64
-
64
+
65
65
  class RunTaskBase
66
66
  attr_reader :success
67
67
  attr_reader :exit_code
68
-
68
+
69
69
  def run_task; end
70
70
  def completed?; end
71
71
  def kill_task; end #will be used for timeout
@@ -79,7 +79,7 @@ module Full360
79
79
  @params = keys_to_symbol(@params)
80
80
  @cluster = @params[:cluster]
81
81
  end
82
-
82
+
83
83
  def keys_to_symbol(params)
84
84
  # replaces string keys with symbol keys
85
85
  # required by AWS SDK
@@ -96,7 +96,7 @@ module Full360
96
96
  @task_arn = resp.tasks[0].task_arn
97
97
  @logger.info("#{@task_name} task created #{@task_arn} on cluster #{@cluster}")
98
98
  end
99
-
99
+
100
100
  def ecs_run_task
101
101
  @logger.debug("creating AWS client for ECS task #{@task_name}...")
102
102
  @ecs_client = ::Aws::ECS::Client.new
@@ -119,8 +119,9 @@ module Full360
119
119
  }
120
120
  )
121
121
  end
122
-
122
+
123
123
  def completed?
124
+ retries ||= 0
124
125
  resp = ecs_describe_tasks
125
126
  status = last_task_status(resp)
126
127
  @logger.info("#{@task_name} : #{@task_arn} current status: #{status}")
@@ -128,20 +129,25 @@ module Full360
128
129
  @logger.info("#{@task_name} completed in #{Time.new - @start_time} seconds")
129
130
  # parse exit_code(s) and return completion
130
131
  @success = determine_success(resp)
131
- return true
132
+ return true
132
133
  end
133
134
  false
134
135
  rescue => e
136
+ @logger.warn(e.message)
137
+ @logger.warn("task completion check failed, trying again ##{ retries }")
138
+ sleep 10*retries
139
+ retry if (retries += 1) < 3
140
+
135
141
  @logger.error('SEQUENCER_ERROR')
136
142
  @logger.error(e.message)
137
143
  e.backtrace.each { |r| @logger.error(r) }
138
144
  end
139
-
145
+
140
146
  # parses last status from aws API response
141
147
  def last_task_status(resp)
142
148
  resp.tasks[0].last_status
143
149
  end
144
-
150
+
145
151
  # success is determined by all containers having zero exit code
146
152
  def determine_success(resp)
147
153
  success = true
metadata CHANGED
@@ -1,53 +1,53 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: full360-sequencer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - pankaj batra
8
8
  - jeremy winters
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
  date: 2017-10-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
+ name: logger
15
16
  requirement: !ruby/object:Gem::Requirement
16
17
  requirements:
17
18
  - - "~>"
18
19
  - !ruby/object:Gem::Version
19
20
  version: '1.2'
20
- name: logger
21
- prerelease: false
22
21
  type: :runtime
22
+ prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
27
  version: '1.2'
28
28
  - !ruby/object:Gem::Dependency
29
+ name: aws-sdk
29
30
  requirement: !ruby/object:Gem::Requirement
30
31
  requirements:
31
32
  - - "~>"
32
33
  - !ruby/object:Gem::Version
33
34
  version: '2.9'
34
- name: aws-sdk
35
- prerelease: false
36
35
  type: :runtime
36
+ prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
41
  version: '2.9'
42
42
  - !ruby/object:Gem::Dependency
43
+ name: minitest
43
44
  requirement: !ruby/object:Gem::Requirement
44
45
  requirements:
45
46
  - - "~>"
46
47
  - !ruby/object:Gem::Version
47
48
  version: '5.9'
48
- name: minitest
49
- prerelease: false
50
49
  type: :development
50
+ prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - "~>"
@@ -66,7 +66,7 @@ homepage: https://www.full360.com
66
66
  licenses:
67
67
  - MIT
68
68
  metadata: {}
69
- post_install_message:
69
+ post_install_message:
70
70
  rdoc_options: []
71
71
  require_paths:
72
72
  - lib
@@ -81,9 +81,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  requirements: []
84
- rubyforge_project:
84
+ rubyforge_project:
85
85
  rubygems_version: 2.6.11
86
- signing_key:
86
+ signing_key:
87
87
  specification_version: 4
88
88
  summary: full360 sequencer utility
89
89
  test_files: []