consul-templaterb 1.32.1 → 1.33.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -1
- data/README.md +5 -0
- data/TemplateAPI.md +9 -0
- data/lib/consul/async/consul_endpoint.rb +2 -1
- data/lib/consul/async/consul_template.rb +32 -2
- data/lib/consul/async/debug.rb +7 -1
- data/lib/consul/async/json_endpoint.rb +1 -0
- data/lib/consul/async/vault_endpoint.rb +1 -0
- data/lib/consul/async/version.rb +1 -1
- data/samples/consul-ui/consul_services.json.erb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d8b9211a298b666e2259e3133382b4aa56bc3b3c653eb43fd39a8238059b2e44
|
4
|
+
data.tar.gz: 46fc67cacf37aa5b73742631d666c31b4ed4430d84d8cb879b817455acdf2f7d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9fdda46240f515afaa8a00058b7a75d5369cb7a79efcaad731fe09cc94518938acd1d0ae9d0dfbbe65169e2ee0718512266290043aa822259900ba8e3b9cff06
|
7
|
+
data.tar.gz: e8dc85835f36c5ff2c4343a5d961817f145d194070bec9394dc3500b8a5400e6e2bb39c2cc1648d59a570967794f48edd28d87e84694dfd88692d26a52180cfe
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,15 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
-
## 1.
|
3
|
+
## 1.33.0 (Nov 22, 2021)
|
4
|
+
|
5
|
+
IMPROVEMENTS:
|
6
|
+
|
7
|
+
* Validate ssl peers
|
8
|
+
* Allow to stream log lines
|
9
|
+
* [CONSUL-UI] Display services with no port definition
|
10
|
+
* Hide opts in logs by default
|
11
|
+
|
12
|
+
## 1.32.1 (Jan 28, 2021)
|
4
13
|
|
5
14
|
IMPROVEMENTS:
|
6
15
|
|
data/README.md
CHANGED
@@ -207,6 +207,11 @@ It means that you can call consul-templaterb with `*.erb` arguments, the shell
|
|
207
207
|
will then substitute all files and render it by removing the `.erb` extension as
|
208
208
|
if the `--template my_file.ext.erb:myfile.ext` was used.
|
209
209
|
|
210
|
+
If the program is run in an automatic context, it could be useful to stream
|
211
|
+
logs instead of the default interactive log version which erase last log line.
|
212
|
+
To configure this behavior, set the `STREAM_LOG` environment variable to any
|
213
|
+
value.
|
214
|
+
|
210
215
|
### Generate multiple templates
|
211
216
|
|
212
217
|
In the same way as consul-template, consul-templaterb supports multiple templates and executing
|
data/TemplateAPI.md
CHANGED
@@ -380,6 +380,15 @@ Full example: [samples/consul_template.txt.erb](samples/consul_template.txt.erb)
|
|
380
380
|
[List all the services of a given Node](https://www.consul.io/api/catalog.html#list-services-for-node) using its
|
381
381
|
name or its ID. If DC is specified, will lookup for given node in another datacenter.
|
382
382
|
|
383
|
+
The value returned might be nil (because the node does not exists).
|
384
|
+
Thus, it might be safer to use the helper methods on the result:
|
385
|
+
|
386
|
+
* node('mynode').exists? -> true if node exists and result is not nil
|
387
|
+
* node('mynode').services() -> to get the hash of services defined for this node (return empty map if nodes does not exists)
|
388
|
+
* node('mynode').node() -> to get node information (empty map if node does not exists)
|
389
|
+
|
390
|
+
See also: https://github.com/criteo/consul-templaterb/issues/74
|
391
|
+
|
383
392
|
## checks_for_node(name, dc: nil, passing: false, tag: nil, [agent: consul_agent_address])
|
384
393
|
|
385
394
|
[Find all the checks](https://www.consul.io/api/health.html#list-checks-for-node) of a given node name.
|
@@ -265,7 +265,8 @@ module Consul
|
|
265
265
|
def fetch
|
266
266
|
options = {
|
267
267
|
connect_timeout: 5, # default connection setup timeout
|
268
|
-
inactivity_timeout: conf.wait_duration + 1 + (conf.wait_duration / 16) # default connection inactivity (post-setup) timeout
|
268
|
+
inactivity_timeout: conf.wait_duration + 1 + (conf.wait_duration / 16), # default connection inactivity (post-setup) timeout
|
269
|
+
tls: { verify_peer: conf.tls_verify_peer }
|
269
270
|
}
|
270
271
|
unless conf.tls_cert_chain.nil?
|
271
272
|
options[:tls] = {
|
@@ -31,7 +31,7 @@ module Consul
|
|
31
31
|
|
32
32
|
def as_json(url, default_value, refresh_delay_secs: 10, **opts)
|
33
33
|
conf = JSONConfiguration.new(url: url, min_duration: refresh_delay_secs, retry_on_non_diff: refresh_delay_secs, **opts)
|
34
|
-
endpoint_id = url + opts.
|
34
|
+
endpoint_id = url + opts.hash.to_s
|
35
35
|
@endp_manager.create_if_missing(url, {}, endpoint_id: endpoint_id) do
|
36
36
|
if default_value.is_a?(Array)
|
37
37
|
ConsulTemplateJSONArray.new(JSONEndpoint.new(conf, url, default_value))
|
@@ -187,7 +187,7 @@ module Consul
|
|
187
187
|
path = "/v1/catalog/node/#{name_or_id}"
|
188
188
|
query_params = {}
|
189
189
|
query_params[:dc] = dc if dc
|
190
|
-
create_if_missing(path, query_params, agent: agent) {
|
190
|
+
create_if_missing(path, query_params, agent: agent) { ConsulTemplateNode.new(ConsulEndpoint.new(consul_conf, path, true, query_params, '{}', agent)) }
|
191
191
|
end
|
192
192
|
|
193
193
|
# https://www.consul.io/api/agent.html#read-configuration
|
@@ -628,6 +628,36 @@ module Consul
|
|
628
628
|
end
|
629
629
|
end
|
630
630
|
|
631
|
+
# Get information about a single node
|
632
|
+
class ConsulTemplateNode < ConsulTemplateAbstractMap
|
633
|
+
def initialize(consul_endpoint)
|
634
|
+
super(consul_endpoint)
|
635
|
+
end
|
636
|
+
|
637
|
+
def exists?
|
638
|
+
!result_delegate.nil?
|
639
|
+
end
|
640
|
+
|
641
|
+
def safe_get
|
642
|
+
if exists?
|
643
|
+
result_delegate
|
644
|
+
else
|
645
|
+
{
|
646
|
+
'Node': {},
|
647
|
+
'Services': {}
|
648
|
+
}
|
649
|
+
end
|
650
|
+
end
|
651
|
+
|
652
|
+
def node
|
653
|
+
safe_get['Node'] || {}
|
654
|
+
end
|
655
|
+
|
656
|
+
def services
|
657
|
+
safe_get['Services'] || {}
|
658
|
+
end
|
659
|
+
end
|
660
|
+
|
631
661
|
# List of nodes of the whole cluster
|
632
662
|
class ConsulTemplateNodes < ConsulTemplateAbstractArray
|
633
663
|
def initialize(consul_endpoint)
|
data/lib/consul/async/debug.rb
CHANGED
@@ -26,7 +26,10 @@ module Consul
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def self.print_info(msg)
|
29
|
+
return unless level > 1
|
30
|
+
|
29
31
|
STDERR.print "[INFO] #{msg}" if level > 1
|
32
|
+
warn '' if ENV['LOG_STREAM']
|
30
33
|
end
|
31
34
|
|
32
35
|
def self.puts_debug(msg)
|
@@ -34,7 +37,10 @@ module Consul
|
|
34
37
|
end
|
35
38
|
|
36
39
|
def self.print_debug(msg)
|
37
|
-
|
40
|
+
return unless level > 2
|
41
|
+
|
42
|
+
STDERR.print "[DEBG] #{msg}"
|
43
|
+
warn '' if ENV['LOG_STREAM']
|
38
44
|
end
|
39
45
|
end
|
40
46
|
end
|
data/lib/consul/async/version.rb
CHANGED
@@ -36,7 +36,7 @@
|
|
36
36
|
@sort_consul_service_nodes.call(service(service_name)).each do |snode|
|
37
37
|
tags_of_instance = snode['Service']['Tags'].sort
|
38
38
|
if (instance_must_tag.nil? || tags_of_instance.include?(instance_must_tag)) && !tags_of_instance.include?(instance_exclude_tag)
|
39
|
-
the_backends << snode
|
39
|
+
the_backends << snode
|
40
40
|
end
|
41
41
|
end
|
42
42
|
# We add the backend ONLY if at least one valid instance does exists
|
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.33.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: 2021-
|
11
|
+
date: 2021-11-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: em-http-request
|
@@ -256,7 +256,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
256
256
|
- !ruby/object:Gem::Version
|
257
257
|
version: '0'
|
258
258
|
requirements: []
|
259
|
-
rubygems_version: 3.1.
|
259
|
+
rubygems_version: 3.1.6
|
260
260
|
signing_key:
|
261
261
|
specification_version: 4
|
262
262
|
summary: Implementation of Consul template using Ruby and .erb templating language
|