shards 3.3 → 3.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 40d1825ac3c373928a5d4a5df342e6c058fe305abd92686301bc7ea4549d1a74
4
- data.tar.gz: e67a7dd5c45081123a4e866a852a3f65e4df6133eb23bf0693ef3e8f694dc945
3
+ metadata.gz: 320ece700811e52b39ec9fa674dcfd15931eda715e56a1feaf753737d80e2308
4
+ data.tar.gz: 87b7124eb6879b2f904842c6d07d641b2f070144fb2a73162d27072882b6341b
5
5
  SHA512:
6
- metadata.gz: 12b2b37ca0fe4e0e4644b613c185a606f5cbebea4d8eb8b40b62c0571b7c14ae7696ab6087d84e68f0cfe366bd1ac2819591738c9fa44fb1ad4ea65a34ee6cf4
7
- data.tar.gz: cbc4e93e6f2398e3b3af6ecff3d80bb37cfc7d889ad4478385d28264e903abb421e843e14fc654201e20dca19a7dd5b83ea7831bf441d01480819678f72eb2ef
6
+ metadata.gz: 601e021902dc07f7bcb031fd148d646c2f1e1cd1cc7c486db9bd6001b1255d5750632b3c19fab30805a1623c19126c61a8c0edf7e94148eaf6f278402d8b009d
7
+ data.tar.gz: 56e5b9760062b62ff658387685f5bbf16fc87231b102816c14b9c8a8059bf737708f80dbab577ddd8229ccf099735a9070fec8402732ead6a0d1c639a9de515a
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- shards (3.3)
4
+ shards (3.5)
5
5
  aws-sdk-ec2 (~> 1.48)
6
6
  aws-sdk-elasticloadbalancing (~> 1.5)
7
7
  aws-sdk-elasticloadbalancingv2 (~> 1.14)
@@ -30,7 +30,7 @@ GEM
30
30
  aws-partitions (~> 1.0)
31
31
  aws-sigv4 (~> 1.0)
32
32
  jmespath (~> 1.0)
33
- aws-sdk-ec2 (1.70.0)
33
+ aws-sdk-ec2 (1.71.0)
34
34
  aws-sdk-core (~> 3, >= 3.39.0)
35
35
  aws-sigv4 (~> 1.0)
36
36
  aws-sdk-elasticloadbalancing (1.8.0)
@@ -25,3 +25,6 @@ correct_steps_summary:
25
25
 
26
26
 
27
27
  start: validate_client
28
+ description: >
29
+ This is the first workflow the shards application tool triggers when the *Site Creation* job.
30
+ After that will be executed the Fingerprint by API workflow.
@@ -45,3 +45,6 @@ correct_steps_summary:
45
45
  - commit_changes
46
46
 
47
47
  start: validate_location
48
+ description: >
49
+ This workflow is the first that the *Site Deletion* job runs in the shards service application.
50
+ Then the application will run the Reload by API workflow to run the puppet agent, check fingerprints, reload task and then delete the database.
@@ -54,3 +54,4 @@ delete_by_terminal:
54
54
  wrong: finish
55
55
 
56
56
  start: validate_location
57
+ description: This workflow is used by the shards gem command tool when the delete command is called.
@@ -29,3 +29,4 @@ correct_steps_summary:
29
29
  - dns_upsert
30
30
 
31
31
  start: validate_client
32
+ description: It is used by the shards command tool to create new sites and shards.
@@ -26,3 +26,6 @@ correct_steps_summary:
26
26
  - dns_upsert
27
27
 
28
28
  start: validate_client
29
+ description: >
30
+ It is the same as Fast Terminal without the loop ( fingerprint check, puppet agent ) and the reload shards task.
31
+
@@ -46,3 +46,9 @@ correct_steps_summary:
46
46
  - dns_upsert
47
47
 
48
48
  start: validate_client
49
+ description: >
50
+ This is the second workflow that the *Site Creation* job call after the Create By API.
51
+ The application run this workflow in a loop.
52
+ When the fingerprints don't match the puppet agent will be executed in order to update the shards and sites yml files.
53
+ The loop finish when the fingerprints are the same.
54
+ Then run the application reload shard task to upgrade the shards and sites data.
@@ -40,3 +40,7 @@ correct_steps_summary:
40
40
  - dns_upsert
41
41
 
42
42
  start: validate_client
43
+ description: |
44
+ This workflow is used by the shards gem command tool in the check_fingerprints command.
45
+ It will run the puppet agent in a loop when the fingerprints don't match.
46
+ Once the fingerprints match continue with reload shards task and a dns uspsert.
@@ -30,3 +30,4 @@ correct_steps_summary:
30
30
  - application_reload_shards_task
31
31
 
32
32
  start: validate_location
33
+ description: The same as the finerprints_terminal without dns_uspert.
@@ -52,3 +52,7 @@ correct_steps_summary:
52
52
  - delete_database
53
53
 
54
54
  start: validate_client
55
+ description: |
56
+ This workflow will be executed after the *delete by api* worflow in the *Site Deletion* job.
57
+ When the fingerprints match the application reload task will be executed.
58
+ The final step is delete the database.
@@ -230,6 +230,30 @@ module Shards
230
230
  puts s.check_remote_process remote_check: :reload_shards!
231
231
 
232
232
  end
233
+
234
+ desc "workflows", "Show the workflow list"
235
+
236
+ def workflows
237
+ Dotenv.load 'settings.env'
238
+ settings_files= Dir.entries(ENV['WORKFLOW_YAML_PATH']).reject { |x| %w(. .. base.yaml).include?x }.sort
239
+ puts settings_files.map { |x| x.chomp '.yaml' }
240
+ end
241
+
242
+ desc "workflow_steps", "Print the workflow steps"
243
+ option :name, required: true, desc: "workflow name"
244
+
245
+ def workflow_steps
246
+
247
+ name=options[:name].split('_').map { |x| x.capitalize }.join
248
+
249
+ wf=Kernel.const_get("Shards::Workflow::#{name}").new config
250
+
251
+ wf.print_description
252
+ wf.print_step
253
+ wf.print_extra_steps
254
+
255
+ end
256
+
233
257
  private
234
258
 
235
259
  def config
@@ -1,3 +1,3 @@
1
1
  module Shards
2
- VERSION = "3.3"
2
+ VERSION = "3.5"
3
3
  end
@@ -66,14 +66,18 @@ module Shards
66
66
  gsub(/\s/, '_').downcase
67
67
  end
68
68
 
69
- def start
69
+ def flow_init
70
70
  @flow=shared_steps.merge yaml[wf]
71
+ end
72
+
73
+ def start
74
+ flow_init
71
75
  @pointer=yaml['start']
72
76
  run_step
73
77
  end
74
78
 
75
79
  def start_at pointer_step
76
- @flow=shared_steps.merge yaml[wf]
80
+ flow_init
77
81
  @pointer=pointer_step
78
82
  run_step
79
83
  end
@@ -98,6 +102,81 @@ module Shards
98
102
 
99
103
  end
100
104
 
105
+ def correct_steps
106
+ @correct_steps||={}
107
+ end
108
+
109
+ def wrong_steps
110
+ @wrong_steps||={}
111
+ end
112
+
113
+ def print_step
114
+
115
+ if pointer.nil?
116
+ flow_init
117
+ @pointer=yaml['start']
118
+ puts "h2. Step List"
119
+ end
120
+
121
+ @step=flow[pointer]
122
+ @pointer_history << pointer
123
+
124
+ puts_step pointer, step
125
+
126
+ correct_steps[step['correct']]=flow[step['correct']]
127
+ wrong_steps[step['wrong']]=flow[step['wrong']] unless step['wrong'].nil?
128
+ @pointer=step['correct']
129
+ print_step if @step['correct']!='final_step'
130
+
131
+ end
132
+
133
+ def wf_title
134
+ wf.split('_').map { |x| x.capitalize }.join(' ')
135
+ end
136
+
137
+ def print_description
138
+ puts "h1. #{wf_title}"
139
+ puts yaml['description'] if yaml.has_key?('description')
140
+ end
141
+
142
+ def puts_step pointer, step
143
+
144
+ puts "|| #{pointer} "
145
+ puts " - Correct => #{step['correct']}" if step.has_key?('correct')
146
+ puts " - Wrong => #{step['wrong']}" if step.has_key?('wrong')
147
+ puts "|"
148
+ puts
149
+
150
+ end
151
+
152
+ def print_extra_steps
153
+ (wrong_steps.keys & correct_steps.keys).each { |k| wrong_steps.delete k }
154
+
155
+ loop do
156
+ initial_keys=wrong_steps.keys + correct_steps.keys
157
+ new_keys=[]
158
+
159
+ wrong_steps.each_pair do |k,v|
160
+ new_keys << v['correct'] if v.has_key?('correct') and !initial_keys.include?v['correct']
161
+ new_keys << v['wrong'] if v.has_key?('wrong') and !initial_keys.include?v['wrong']
162
+ end
163
+ if new_keys.empty?
164
+ break
165
+ else
166
+ new_keys.each do |k|
167
+ wrong_steps[k]=flow[k]
168
+ end
169
+ end
170
+ end
171
+
172
+ puts "h2. Additional Steps:" unless wrong_steps.empty?
173
+
174
+ wrong_steps.each_pair do |k,v|
175
+ puts_step k, v
176
+ end
177
+
178
+ end
179
+
101
180
  def output_message message
102
181
  puts message
103
182
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shards
3
3
  version: !ruby/object:Gem::Version
4
- version: '3.3'
4
+ version: '3.5'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Diego PL
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-03-04 00:00:00.000000000 Z
11
+ date: 2019-03-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler