consul-templaterb 1.6.3 → 1.7.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 +11 -0
- data/bin/consul-templaterb +3 -2
- data/lib/consul/async/consul_template_engine.rb +48 -27
- data/lib/consul/async/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d5b4bfc2f950af28c0c5db345700d15cdf01076cab18efea784e6ad6d1329e81
|
4
|
+
data.tar.gz: 725e4f3abcae9d3891b6956547dbb94a1c35beb3c810a34d2e8ade1f59e6f47c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 10f434a98600c5d2613fd6cfc1c195ed2344a2f9c4929d8fe8625815b9cd9ec086452e10cfbb55d6be9645fc81bd967d9556f40da7e408adb2d52089b260da7a
|
7
|
+
data.tar.gz: c2ba837aced1ca0db90480b4deb91dffafa0fa5f621ac9f9161e557d25e7ad580fee23f6bbd04fbe2759d2df9f7c75578725d4d50389ab71fd19c246e84dc13b
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,17 @@
|
|
2
2
|
|
3
3
|
## (UNRELEASED)
|
4
4
|
|
5
|
+
## 1.7.0 (December 7, 2018)
|
6
|
+
|
7
|
+
OPTIMIZATIONS:
|
8
|
+
|
9
|
+
* Improved startup time (especially useful with `--once` option)
|
10
|
+
* Now iterate as fast as possible until scheduled rendering has started, so rendering is way faster
|
11
|
+
|
12
|
+
BUG FIXES:
|
13
|
+
|
14
|
+
* --wait was not working as expected, no properly set the minimum time between templates generation
|
15
|
+
|
5
16
|
## 1.6.3 (December 4, 2018)
|
6
17
|
|
7
18
|
BUG FIXES:
|
data/bin/consul-templaterb
CHANGED
@@ -118,8 +118,9 @@ optparse = OptionParser.new do |opts|
|
|
118
118
|
options[:vault][:lease_duration_factor] = factor
|
119
119
|
end
|
120
120
|
|
121
|
-
opts.on('-w', '--wait=<min_duration>',
|
122
|
-
|
121
|
+
opts.on('-w', '--wait=<min_duration>', Integer, 'Wait at least n seconds before each template generation') do |min_duration|
|
122
|
+
raise "--wait=#{min_duration} must be greater than 0" unless min_duration.positive?
|
123
|
+
consul_engine.template_frequency = min_duration
|
123
124
|
end
|
124
125
|
|
125
126
|
opts.on('-r', '--retry-delay=<min_duration>', Float, 'Min Retry delay on Error/Missing Consul Index') do |min_duration|
|
@@ -9,13 +9,15 @@ require 'erb'
|
|
9
9
|
module Consul
|
10
10
|
module Async
|
11
11
|
class ConsulTemplateEngine
|
12
|
-
attr_reader :template_manager, :hot_reload_failure
|
13
|
-
attr_writer :hot_reload_failure
|
12
|
+
attr_reader :template_manager, :hot_reload_failure, :template_frequency
|
13
|
+
attr_writer :hot_reload_failure, :template_frequency
|
14
14
|
def initialize
|
15
15
|
@templates = []
|
16
16
|
@template_callbacks = []
|
17
17
|
@hot_reload_failure = 'die'
|
18
18
|
@all_templates_rendered = false
|
19
|
+
@template_frequency = 1
|
20
|
+
@periodic_started = false
|
19
21
|
end
|
20
22
|
|
21
23
|
def add_template_callback(&block)
|
@@ -26,6 +28,43 @@ module Consul
|
|
26
28
|
@templates.push([source, dest, params])
|
27
29
|
end
|
28
30
|
|
31
|
+
# Run templating engine once
|
32
|
+
def do_run(template_manager, template_renders)
|
33
|
+
results = template_renders.map(&:run)
|
34
|
+
all_ready = results.reduce(true) { |a, e| a && e.ready? }
|
35
|
+
if !@all_templates_rendered && all_ready
|
36
|
+
@all_templates_rendered = true
|
37
|
+
STDERR.puts "[INFO] First rendering of #{results.count} templates completed"
|
38
|
+
end
|
39
|
+
begin
|
40
|
+
@template_callbacks.each do |c|
|
41
|
+
c.call([all_ready, template_manager, results])
|
42
|
+
end
|
43
|
+
rescue StandardError => cbk_error
|
44
|
+
STDERR.puts "[ERROR] callback error: #{cbk_error.inspect}"
|
45
|
+
raise cbk_error
|
46
|
+
end
|
47
|
+
rescue Consul::Async::InvalidTemplateException => e
|
48
|
+
STDERR.puts "[FATAL]#{e}"
|
49
|
+
template_manager.terminate
|
50
|
+
EventMachine.stop
|
51
|
+
rescue StandardError => e
|
52
|
+
STDERR.puts "[ERROR] Fatal error occured: #{e.inspect} - #{e.backtrace.join("\n\t")}"
|
53
|
+
template_manager.terminate
|
54
|
+
EventMachine.stop
|
55
|
+
end
|
56
|
+
|
57
|
+
# Run template engine as fast as possible until first rendering occurs
|
58
|
+
def do_run_fast(template_manager, template_renders)
|
59
|
+
do_run(template_manager, template_renders)
|
60
|
+
|
61
|
+
return if @all_templates_rendered || @periodic_started
|
62
|
+
# We continue if rendering not done and periodic not started
|
63
|
+
EventMachine.next_tick do
|
64
|
+
do_run_fast(template_manager, template_renders)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
29
68
|
def run(template_manager)
|
30
69
|
@template_manager = template_manager
|
31
70
|
EventMachine.run do
|
@@ -35,31 +74,13 @@ module Consul
|
|
35
74
|
hot_reload_failure: hot_reload_failure,
|
36
75
|
params: params)
|
37
76
|
end
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
end
|
46
|
-
begin
|
47
|
-
@template_callbacks.each do |c|
|
48
|
-
c.call([all_ready, template_manager, results])
|
49
|
-
end
|
50
|
-
rescue StandardError => cbk_error
|
51
|
-
STDERR.puts "[ERROR] callback error: #{cbk_error.inspect}"
|
52
|
-
raise cbk_error
|
53
|
-
end
|
54
|
-
rescue Consul::Async::InvalidTemplateException => e
|
55
|
-
STDERR.puts "[FATAL]#{e}"
|
56
|
-
template_manager.terminate
|
57
|
-
EventMachine.stop
|
58
|
-
rescue StandardError => e
|
59
|
-
STDERR.puts "[ERROR] Fatal error occured: #{e.inspect} - #{e.backtrace.join("\n\t")}"
|
60
|
-
template_manager.terminate
|
61
|
-
EventMachine.stop
|
62
|
-
end
|
77
|
+
# Initiate first run immediately to speed up rendering
|
78
|
+
EventMachine.next_tick do
|
79
|
+
do_run_fast(template_manager, template_renders)
|
80
|
+
end
|
81
|
+
EventMachine.add_periodic_timer(template_frequency) do
|
82
|
+
@periodic_started = true
|
83
|
+
do_run(template_manager, template_renders)
|
63
84
|
end
|
64
85
|
end
|
65
86
|
end
|
data/lib/consul/async/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: consul-templaterb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- SRE Core Services
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-12-
|
11
|
+
date: 2018-12-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: em-http-request
|