consul-templaterb 1.15.3 → 1.16.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e5d7b1fe74f3740048aeef233a2f97097f90042fbdfa8a43776ec9b3ed1d3cab
4
- data.tar.gz: 7bd5f3cea503187786e05b62d0748afaf0de8c1629333e70bec2689d88a2e79c
3
+ metadata.gz: a89758ade44e162e917282e2f01c0ff0631261dc04705ccf5a284e66c0a8ec4c
4
+ data.tar.gz: 158939ccb266b44496bb6240a5bf4da5c558ea6310abcc5e3fd2922eac9a102c
5
5
  SHA512:
6
- metadata.gz: eabeef36879669e2dc937f06fcac7a7f92b1f107840a8717b11df2b9527df9da1b0bdc490c3db5c54b0e826502557e8a84f8ae72216e98736f95650893085d0a
7
- data.tar.gz: f982bafbe7e6060f6db7ae0cf60b576ba4c3ff4c33b645636f6aa0b309108ba84f63fbc11941e3a0a692de1bb96343be18722611d21ca7f5ff09f330b67d030d
6
+ metadata.gz: 72d8b16ea9f95a9bf742a417c2e6cf0bc984eeb66dd577407af5e699e37bb1ac9015bcd169ecb1a2ed5ed56d3a2aa0c8cde5224ed5f1cae822ea378a3c4a1faa
7
+ data.tar.gz: 1306143770c8d18000db48572f66842bbdb74846ce92c08c3361d786c7ca16df215f961eba90493f55b67c5d05add9ff7fbc8448641e41d80573eb167d53220b
data/CHANGELOG.md CHANGED
@@ -2,6 +2,15 @@
2
2
 
3
3
  ## (UNRELEASED)
4
4
 
5
+ ## 1.16.0 (July 8, 2019)
6
+
7
+ Added new helpers for `service()`
8
+
9
+ * `node_meta` return `['Node']['Meta'] or empty hash
10
+ * `service_meta` return `['Service']['Meta'] or empty hash for old consul versions
11
+ * `service_or_node_meta_value(key)` return a the value associated with key in meta from
12
+ service if in service, from node if in node, or nil if meta found nowhere.
13
+
5
14
  ## 1.15.3 (June 20, 2019)
6
15
 
7
16
  Improved consul-ui Javascript #37 thanks to [@warrenseine](https://github.com/warrenseine)
data/TemplateAPI.md CHANGED
@@ -116,11 +116,26 @@ services that are passing or not. An optional argument passing might be used to
116
116
 
117
117
  ### Helpers
118
118
 
119
+ #### node_meta
120
+
121
+ This function returns a Hash of object `['Node']['Meta']` (will return empty hash if very old version of Consul not
122
+ supporting it)
123
+
119
124
  #### service_address
120
125
 
121
126
  This object also contains a Helper to get easily the correct Address by using `service_address` which returns
122
127
  the optional `['Service']['Address']` if found or `['Node']['Address']` otherwise.
123
128
 
129
+ #### service_meta
130
+
131
+ This helper function will return a Hash or `['Service']['Meta']` and will return empty hash if not supported
132
+ by old versions of Consul (< 1.1.0)
133
+
134
+ #### service_or_node_meta_value(key)
135
+
136
+ This function will return a string of `['Service']['Meta']` if key is found in service meta, or
137
+ `['Node']['Meta']` or nil if key does not exists in both Service.Meta and Node.Meta.
138
+
124
139
  #### status
125
140
 
126
141
  Computing the status of an instance is non-trivial as it requires to parses all statuses of all checks and take
@@ -340,6 +340,11 @@ module Consul
340
340
  merge!(obj)
341
341
  end
342
342
 
343
+ # Return ['Node']['Meta']
344
+ def node_meta
345
+ self['Node']['Meta'] || {}
346
+ end
347
+
343
348
  # Return ['Service']['Address'] if defined, the address of node otherwise
344
349
  def service_address
345
350
  val = self['Service']['Address']
@@ -347,6 +352,17 @@ module Consul
347
352
  val
348
353
  end
349
354
 
355
+ # Return a defined hash of string valued Service.Meta
356
+ def service_meta
357
+ self['Service']['Meta'] || {}
358
+ end
359
+
360
+ # If given key exists in Service.Meta returns it, otherwise the same key from
361
+ # return Node.Meta, otherwise return nil
362
+ def service_or_node_meta_value(key)
363
+ service_meta[key] || node_meta[key]
364
+ end
365
+
350
366
  # Return the global state of a Service, will return passing|warning|critical
351
367
  def status
352
368
  ret = 'passing'
@@ -1,5 +1,5 @@
1
1
  module Consul
2
2
  module Async
3
- VERSION = '1.15.3'.freeze
3
+ VERSION = '1.16.0'.freeze
4
4
  end
5
5
  end
@@ -23,7 +23,7 @@
23
23
  node_node_data = {
24
24
  Name: snode['Node']['Node'],
25
25
  Address: snode['Node']['Address'],
26
- Meta: snode['Node']['Meta'],
26
+ Meta: snode.node_meta,
27
27
  }
28
28
 
29
29
  node_services_data = node_info[:Service] || []
@@ -52,8 +52,8 @@
52
52
  check['notes'] = ncheck['Notes']
53
53
  checks.push(check)
54
54
  end
55
- meta = snode['Service']['Meta']
56
- node_meta = snode['Node']['Meta'] || {}
55
+ meta = snode.service_meta
56
+ node_meta = snode.node_meta
57
57
  node_name = snode['Node']['Node']
58
58
  all_nodes[node_name] = { meta: node_meta } if node_name
59
59
  server = { frontend_id: "backend_http__#{service_name}",
data/samples/metrics.erb CHANGED
@@ -7,7 +7,7 @@
7
7
  # EXCLUDE_SERVICES: comma-separated services regexps to exclude (example: lbl7.*,netsvc-probe.*,consul-probed.*)
8
8
  # PROMETHEUS_EXPORTED_SERVICE_META: comma-separated list of meta to export into metrics of service
9
9
  <%
10
- service_metas_to_export = (ENV['PROMETHEUS_EXPORTED_SERVICE_META'] || 'version,os,criteo_flavor').split(',')
10
+ service_metas_to_export = (ENV['PROMETHEUS_EXPORTED_SERVICE_META'] || 'version,os,criteo_flavor,node_group').split(',')
11
11
 
12
12
  service_tag_filter = ENV['SERVICES_TAG_FILTER'] || nil
13
13
  instance_must_tag = ENV['INSTANCE_MUST_TAG'] || service_tag_filter
@@ -30,9 +30,7 @@
30
30
  key = "#{snode['Service']['Service']}"
31
31
  metas = {}
32
32
  service_metas_to_export.each do |k|
33
- meta = nil
34
- meta = snode['Service']['Meta'][k] if snode['Service']['Meta']
35
- meta = snode['Node']['Meta'][k] if !meta && snode['Node']['Meta']
33
+ meta = snode.service_or_node_meta_value(k)
36
34
  if meta
37
35
  key += "::#{k}=#{meta}"
38
36
  metas[k] = meta
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.15.3
4
+ version: 1.16.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: 2019-06-20 00:00:00.000000000 Z
11
+ date: 2019-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: em-http-request