consul-templaterb 1.15.3 → 1.16.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 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