consul-template-generator 0.3.3 → 0.3.4
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 +13 -5
- data/Gemfile.lock +5 -3
- data/bin/consul-template-generator +14 -1
- data/consul-template-generator.gemspec +3 -2
- data/lib/consul/template/generator/cmd.rb +4 -3
- data/lib/consul/template/generator/configuration.rb +2 -1
- data/lib/consul/template/generator/key_value.rb +9 -0
- data/lib/consul/template/generator/run.rb +10 -1
- data/lib/consul/template/generator/version.rb +1 -1
- metadata +22 -9
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
M2ZiNGE1Yzc5NGZhMTMwYWJmNDhmMjg0NDRhODM4MDU4N2UxYzcwOA==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
MmU1ODM0M2QyYjlkYzlhMzIzY2JiMThkZDE3OTQ0ODE1M2MxZDVmMQ==
|
5
7
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
ZGMwYmI1YTI3YTVkMzQ0OTcxZDkxM2Y5NTIzMTkzYmM0YzE5NjA3YjU2NmIz
|
10
|
+
Mjk5ZmJiOWFhYjIwZjFjNDUxMDAyNWYwMmJjMGVjNjRiOTM2YmMyYzc5YjZh
|
11
|
+
OWIyN2U3ZWNkMmY2NWY1ZTkyNTkzNjY2NTg0NmM4MzRmYTkxZWY=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
ZDA1MmI3M2QxZGJmODU1MmMwYmEzZTBjMThkMjc2Y2FlMGNjM2IyZjNjYTFi
|
14
|
+
ODkyZDMxY2JmNWQ4MjI2YWQxZTdmNWY0ZTdmYmYwYWU4OGQzNTZjYmZlYTFh
|
15
|
+
Yjg0ZjBlNDI3NGQzNjM3NTAzYTA4YmZmMDRmNTYzZmExZjBhZmE=
|
data/Gemfile.lock
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
consul-template-generator (0.3.
|
5
|
-
|
4
|
+
consul-template-generator (0.3.4)
|
5
|
+
differ (~> 0.1.2)
|
6
|
+
diplomat (~> 0.13.0)
|
6
7
|
popen4 (~> 0.1.2)
|
7
8
|
|
8
9
|
GEM
|
@@ -14,7 +15,8 @@ GEM
|
|
14
15
|
crack (0.4.2)
|
15
16
|
safe_yaml (~> 1.0.0)
|
16
17
|
diff-lcs (1.2.5)
|
17
|
-
|
18
|
+
differ (0.1.2)
|
19
|
+
diplomat (0.13.1)
|
18
20
|
faraday (~> 0.9)
|
19
21
|
json (~> 1.8)
|
20
22
|
docile (1.1.5)
|
@@ -67,6 +67,11 @@ EOC
|
|
67
67
|
options[:unset_proxy] = true
|
68
68
|
end
|
69
69
|
|
70
|
+
options[:diff_changes] = false
|
71
|
+
opts.on(nil, '--diff-changes', "Print diff'ed template prior to upload") do |u|
|
72
|
+
options[:diff_changes] = true
|
73
|
+
end
|
74
|
+
|
70
75
|
options[:log_level] = :info
|
71
76
|
opts.on('-l LOG_LEVEL', '--log-level LOG_LEVEL', "Log level, options are 'debug', 'info', 'error' [default: info]") do |l|
|
72
77
|
options[:log_level] = l.to_sym
|
@@ -110,7 +115,15 @@ if options[:unset_proxy]
|
|
110
115
|
ENV['http_proxy'] = nil
|
111
116
|
end
|
112
117
|
|
113
|
-
CMD.configure(
|
118
|
+
CMD.configure(
|
119
|
+
options[:consul],
|
120
|
+
options[:templates],
|
121
|
+
options[:session_key],
|
122
|
+
options[:log_level],
|
123
|
+
options[:graphite_host],
|
124
|
+
options[:graphite_paths],
|
125
|
+
options[:diff_changes],
|
126
|
+
)
|
114
127
|
|
115
128
|
ec = 1
|
116
129
|
cmd = ARGV[0]
|
@@ -25,6 +25,7 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.add_development_dependency 'simplecov-console', '~> 0.2'
|
26
26
|
spec.add_development_dependency 'webmock', '~> 1.21'
|
27
27
|
spec.add_development_dependency 'rack', '~> 1.6'
|
28
|
-
spec.add_dependency '
|
29
|
-
spec.add_dependency '
|
28
|
+
spec.add_dependency 'diffy', '~> 3.0'
|
29
|
+
spec.add_dependency 'diplomat', '~> 0.13'
|
30
|
+
spec.add_dependency 'popen4', '~> 0.1'
|
30
31
|
end
|
@@ -7,7 +7,7 @@ module Consul
|
|
7
7
|
include Consul::Template::Generator
|
8
8
|
class << self
|
9
9
|
|
10
|
-
def configure(consul_host, templates, session_key, log_level, graphite_host = nil, graphite_paths = nil)
|
10
|
+
def configure(consul_host, templates, session_key, log_level, graphite_host = nil, graphite_paths = nil, diff_changes = false)
|
11
11
|
Consul::Template::Generator.configure do |config|
|
12
12
|
config.log_level = log_level
|
13
13
|
config.templates = templates
|
@@ -15,6 +15,7 @@ module Consul
|
|
15
15
|
config.consul_host = consul_host
|
16
16
|
config.graphite_host = graphite_host
|
17
17
|
config.graphite_paths = graphite_paths || {}
|
18
|
+
config.diff_changes = diff_changes
|
18
19
|
end
|
19
20
|
@config = Consul::Template::Generator.config
|
20
21
|
end
|
@@ -46,7 +47,7 @@ module Consul
|
|
46
47
|
@config.logger.info "Session lock acquired..."
|
47
48
|
begin
|
48
49
|
@config.templates.each do |template,template_key|
|
49
|
-
new_hash = runner.run(template, template_key, uploaded_hashes[template])
|
50
|
+
new_hash = runner.run(template, template_key, uploaded_hashes[template], @config.diff_changes)
|
50
51
|
unless new_hash.nil?
|
51
52
|
uploaded_hashes[template] = new_hash
|
52
53
|
if @config.graphite_paths.include? template
|
@@ -79,7 +80,7 @@ module Consul
|
|
79
80
|
begin
|
80
81
|
@config.templates.each do |template,template_key|
|
81
82
|
runner = CTRunner.new
|
82
|
-
result = runner.run(template, template_key)
|
83
|
+
result = runner.run(template, template_key, nil, @config.diff_changes)
|
83
84
|
unless result.nil?
|
84
85
|
if @config.graphite_paths.include? template
|
85
86
|
runner.post_graphite_event @config.graphite_paths[template]
|
@@ -39,7 +39,7 @@ module Consul
|
|
39
39
|
end
|
40
40
|
|
41
41
|
class Configuration
|
42
|
-
attr_accessor :templates, :session_key, :consul_template_binary, :logger, :log_level, :graphite_host, :graphite_paths
|
42
|
+
attr_accessor :templates, :session_key, :consul_template_binary, :logger, :log_level, :graphite_host, :graphite_paths, :diff_changes
|
43
43
|
attr_accessor :consul_host, :node, :client_options
|
44
44
|
|
45
45
|
def initialize
|
@@ -52,6 +52,7 @@ module Consul
|
|
52
52
|
@client_options = {}
|
53
53
|
@logger = Consul::Template::Generator::STDLogger
|
54
54
|
@graphite_host = nil
|
55
|
+
@diff_changes = false
|
55
56
|
end
|
56
57
|
|
57
58
|
def lock_key(key)
|
@@ -35,6 +35,15 @@ module Consul
|
|
35
35
|
raise TemplateUploadError, "Encountered an unexpected error while uploading template: #{e.message}"
|
36
36
|
end
|
37
37
|
end
|
38
|
+
|
39
|
+
def retrieve_template(template_key)
|
40
|
+
@config.logger.info "Downloading key: #{template_key}"
|
41
|
+
begin
|
42
|
+
Diplomat::Kv.get(template_key, nil, :return, :return)
|
43
|
+
rescue Exception => e
|
44
|
+
raise TemplateUploadError, "Encountered an unexpected error while uploading template: #{e.message}"
|
45
|
+
end
|
46
|
+
end
|
38
47
|
end
|
39
48
|
end
|
40
49
|
end
|
@@ -1,10 +1,11 @@
|
|
1
|
+
require 'diffy'
|
1
2
|
require 'consul/template/generator/ct'
|
2
3
|
|
3
4
|
module Consul
|
4
5
|
module Template
|
5
6
|
module Generator
|
6
7
|
class CTRunner
|
7
|
-
def run(template, template_key, comp_hash = nil)
|
8
|
+
def run(template, template_key, comp_hash = nil, diff_changes = false)
|
8
9
|
status, body, hash, uploaded_hash = nil, nil, nil, nil
|
9
10
|
acquire_lock template_key do
|
10
11
|
@config.logger.debug "Attempting to render template: #{template}"
|
@@ -19,6 +20,14 @@ module Consul
|
|
19
20
|
if comp_hash.nil? || comp_hash != hash
|
20
21
|
@config.logger.info "Change in template discovered, attempting to upload to key #{template_key}"
|
21
22
|
@config.logger.debug "Existing hash: #{comp_hash || 'nil'}, new hash: #{hash}"
|
23
|
+
|
24
|
+
if diff_changes
|
25
|
+
@config.logger.info "Diffing templates..."
|
26
|
+
curr_template = retrieve_template template_key
|
27
|
+
diff = Diffy::Diff.new(curr_template, body, :include_diff_info => true, :context => 5).to_s(:text)
|
28
|
+
@config.logger.info diff
|
29
|
+
end
|
30
|
+
|
22
31
|
uploaded = upload_template(template_key, body)
|
23
32
|
if uploaded
|
24
33
|
@config.logger.info "New template uploaded..."
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: consul-template-generator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Oldfield
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-08-
|
11
|
+
date: 2015-08-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -108,34 +108,48 @@ dependencies:
|
|
108
108
|
- - ~>
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '1.6'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: diffy
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ~>
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '3.0'
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ~>
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '3.0'
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
126
|
name: diplomat
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
114
128
|
requirements:
|
115
129
|
- - ~>
|
116
130
|
- !ruby/object:Gem::Version
|
117
|
-
version: 0.
|
131
|
+
version: '0.13'
|
118
132
|
type: :runtime
|
119
133
|
prerelease: false
|
120
134
|
version_requirements: !ruby/object:Gem::Requirement
|
121
135
|
requirements:
|
122
136
|
- - ~>
|
123
137
|
- !ruby/object:Gem::Version
|
124
|
-
version: 0.
|
138
|
+
version: '0.13'
|
125
139
|
- !ruby/object:Gem::Dependency
|
126
140
|
name: popen4
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
128
142
|
requirements:
|
129
143
|
- - ~>
|
130
144
|
- !ruby/object:Gem::Version
|
131
|
-
version: 0.1
|
145
|
+
version: '0.1'
|
132
146
|
type: :runtime
|
133
147
|
prerelease: false
|
134
148
|
version_requirements: !ruby/object:Gem::Requirement
|
135
149
|
requirements:
|
136
150
|
- - ~>
|
137
151
|
- !ruby/object:Gem::Version
|
138
|
-
version: 0.1
|
152
|
+
version: '0.1'
|
139
153
|
description: When using complex consul-template templates or distributing them across
|
140
154
|
many hosts, you run the risk of DoSing your consul cluster. Using consul-template-generator
|
141
155
|
you can instead delegate the watching/rendering of templates to a single host and
|
@@ -181,12 +195,12 @@ require_paths:
|
|
181
195
|
- lib
|
182
196
|
required_ruby_version: !ruby/object:Gem::Requirement
|
183
197
|
requirements:
|
184
|
-
- - '>='
|
198
|
+
- - ! '>='
|
185
199
|
- !ruby/object:Gem::Version
|
186
200
|
version: '0'
|
187
201
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
188
202
|
requirements:
|
189
|
-
- - '>='
|
203
|
+
- - ! '>='
|
190
204
|
- !ruby/object:Gem::Version
|
191
205
|
version: '0'
|
192
206
|
requirements: []
|
@@ -202,4 +216,3 @@ test_files:
|
|
202
216
|
- spec/key_value_spec.rb
|
203
217
|
- spec/run_spec.rb
|
204
218
|
- spec/spec_helper.rb
|
205
|
-
has_rdoc:
|