consul-template-generator 0.3.3 → 0.3.4
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|