consul-templaterb 1.5.1 → 1.5.2
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 +4 -4
- data/CHANGELOG.md +8 -0
- data/lib/consul/async/consul_template.rb +1 -1
- data/lib/consul/async/version.rb +1 -1
- data/samples/consul-ui/consul_services.json.erb +1 -0
- data/samples/consul-ui/css/style.css +4 -0
- data/samples/consul-ui/js/service.js +2 -2
- data/samples/consul-ui/js/utils.js +37 -10
- data/samples/debug/compare_connect_services.txt.erb +32 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0b4a47eabba659837253d921211008b5e44d625f6b0229d38da9dfbdfe2570b4
|
4
|
+
data.tar.gz: 5bfae8c915b2a263f6f5e3d9867f48e1b43abb6a7bcba5e31754efdb5a6c905b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e6f34ac0190a98f5a27e1250a2c8c4aa7c49687857337e83ac7cd02bd4c3659e367e821805cec08625ad42a797419018d707fdccdede1a15bf879a259d346e86
|
7
|
+
data.tar.gz: aef9aaa4acab258920984b042333e1190a49f50d0ec67f0e4c86613e1adcc908c7899dce9922da2395e3efb07404e5be32e887d66ee3d89790d861298fc64db0
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,14 @@
|
|
2
2
|
|
3
3
|
## (UNRELEASED)
|
4
4
|
|
5
|
+
## 1.5.2 (September 12, 2018)
|
6
|
+
|
7
|
+
IMPROVEMENTS:
|
8
|
+
|
9
|
+
* added support for Weights in Consul-UI
|
10
|
+
* new `debug/compare_connect_services.txt.erb`
|
11
|
+
* new erb .map() function to iterate over all values
|
12
|
+
|
5
13
|
## 1.5.1 (September 4, 2018)
|
6
14
|
|
7
15
|
BUG FIXES:
|
@@ -255,7 +255,7 @@ module Consul
|
|
255
255
|
|
256
256
|
class ConsulTemplateAbstract
|
257
257
|
extend Forwardable
|
258
|
-
def_delegators :result_delegate, :each, :[], :sort, :select, :each_value, :count, :empty
|
258
|
+
def_delegators :result_delegate, :each, :[], :sort, :select, :each_value, :count, :empty?, :map
|
259
259
|
attr_reader :result, :endpoint, :seen_at
|
260
260
|
def initialize(consul_endpoint)
|
261
261
|
@endpoint = consul_endpoint
|
data/lib/consul/async/version.rb
CHANGED
@@ -225,13 +225,13 @@ class ConsulService {
|
|
225
225
|
var instance = service['instances'][key];
|
226
226
|
var serviceHtml = document.createElement('div');
|
227
227
|
serviceHtml.setAttribute('class','list-group-item');
|
228
|
-
|
228
|
+
var state = nodeState(instance.checks);
|
229
|
+
serviceHtml.appendChild(weightsGenerator(instance.weights, state));
|
229
230
|
serviceHtml.appendChild(serviceTitleGenerator(instance));
|
230
231
|
serviceHtml.appendChild(tagsGenerator(instance.tags));
|
231
232
|
serviceHtml.appendChild(serviceMetaGenerator(instance.sMeta));
|
232
233
|
serviceHtml.appendChild(connectGenerator(instance))
|
233
234
|
serviceHtml.appendChild(checksStatusGenerator(instance.checks));
|
234
|
-
var state = nodeState(instance.checks);
|
235
235
|
serviceHtml.setAttribute('status', state);
|
236
236
|
$("#instances-list").append(serviceHtml);
|
237
237
|
}
|
@@ -148,6 +148,41 @@ function serviceMetaGenerator(instanceMeta) {
|
|
148
148
|
return top;
|
149
149
|
}
|
150
150
|
|
151
|
+
function weightsGenerator(instanceWeights, instanceStatus) {
|
152
|
+
var weights = document.createElement('div');
|
153
|
+
if (instanceWeights != null) {
|
154
|
+
weights.setAttribute('class', 'weights weight-passing badge badge-' + toCSSClass(instanceStatus));
|
155
|
+
weights.appendChild(document.createTextNode("Weights: "));
|
156
|
+
{
|
157
|
+
var passing = document.createElement("span");
|
158
|
+
passing.setAttribute("class", "weight-passing badge badge-success");
|
159
|
+
passing.appendChild(document.createTextNode(instanceWeights['Passing']));
|
160
|
+
passing.setAttribute('title', "DNS Weight when in warning state")
|
161
|
+
weights.appendChild(passing);
|
162
|
+
}
|
163
|
+
weights.appendChild(document.createTextNode(' '));
|
164
|
+
{
|
165
|
+
var warning = document.createElement("span");
|
166
|
+
warning.setAttribute("class", "weight-warning badge badge-warning");
|
167
|
+
warning.setAttribute('title', "DNS Weight when in warning state")
|
168
|
+
warning.appendChild(document.createTextNode(instanceWeights['Warning']));
|
169
|
+
weights.appendChild(warning);
|
170
|
+
}
|
171
|
+
return weights;
|
172
|
+
} else {
|
173
|
+
weights.setAttribute('class', 'weights-absent');
|
174
|
+
}
|
175
|
+
return weights
|
176
|
+
}
|
177
|
+
|
178
|
+
function toCSSClass(state) {
|
179
|
+
switch(state) {
|
180
|
+
case 'passing': return 'success';
|
181
|
+
case 'critical': return 'danger';
|
182
|
+
}
|
183
|
+
return state;
|
184
|
+
}
|
185
|
+
|
151
186
|
function servicesGenerator(instanceServices) {
|
152
187
|
var services = document.createElement('div');
|
153
188
|
services.className = 'instance-services';
|
@@ -161,11 +196,7 @@ function servicesGenerator(instanceServices) {
|
|
161
196
|
service.setAttribute('target', '_blank');
|
162
197
|
nodeAddr = instanceServices[serviceKey]['Service']['Address'];
|
163
198
|
service.setAttribute('href', 'http://' + nodeAddr + ':' + servicePort);
|
164
|
-
|
165
|
-
case 'passing': service.classList.add('btn-outline-success'); break;
|
166
|
-
case 'warning': service.classList.add('btn-outline-warning'); break;
|
167
|
-
case 'critical': service.classList.add('btn-outline-danger'); break;
|
168
|
-
}
|
199
|
+
service.classList.add('btn-outline-'+toCSSClass(nodeState(instanceServices[serviceKey]['Checks'])))
|
169
200
|
service.appendChild(document.createTextNode(serviceName + ':' + servicePort));
|
170
201
|
services.appendChild(service);
|
171
202
|
}
|
@@ -180,11 +211,7 @@ function checksStatusGenerator(instanceChecks) {
|
|
180
211
|
|
181
212
|
for (var checkKey in instanceChecks) {
|
182
213
|
checkId = Math.floor(Math.random()*10000);
|
183
|
-
|
184
|
-
case 'passing': var btn = 'btn-success'; break;
|
185
|
-
case 'warning': var btn = 'btn-warning'; break;
|
186
|
-
case 'critical': var btn = 'btn-danger'; break;
|
187
|
-
}
|
214
|
+
var btn = 'btn-' + toCSSClass(instanceChecks[checkKey]['status'])
|
188
215
|
var check = document.createElement('div');
|
189
216
|
|
190
217
|
var btnCheck = document.createElement('button');
|
@@ -0,0 +1,32 @@
|
|
1
|
+
+ List of all datacenters
|
2
|
+
-------------------------
|
3
|
+
# This template compares the number of proxies with the number of services
|
4
|
+
# Following https://github.com/hashicorp/consul/issues/4648
|
5
|
+
<%
|
6
|
+
dammaged_nodes = []
|
7
|
+
datacenters.each do |dc|
|
8
|
+
services(dc: dc).each do |service_name, tags|
|
9
|
+
if service_name.end_with? '-proxy'
|
10
|
+
num_proxies = service(service_name, dc:dc).count
|
11
|
+
service_name_non_proxy = service_name[0..-7]
|
12
|
+
num_services = service(service_name_non_proxy, dc:dc).count
|
13
|
+
message = '[ OK ]'
|
14
|
+
instance_proxies = service(service_name, dc:dc).map{ |snode| snode['Node']['Node'] + "::" + snode['Service']['ID'][0..-8] }.sort
|
15
|
+
instance_services = service(service_name_non_proxy, dc:dc).map{ |snode| snode['Node']['Node'] + "::" + snode['Service']['ID'] }.sort
|
16
|
+
diff = instance_proxies - instance_services
|
17
|
+
if diff.count > 0
|
18
|
+
message = "[FAILED] (DIFF:= #{diff.inspect} not in #{instance_services.inspect})"
|
19
|
+
dammaged_nodes += diff.map{|k| k[0..k.index('::')]}
|
20
|
+
end
|
21
|
+
%><%= message %> <%= dc %> <%= service_name_non_proxy %> (<%= num_proxies %> / <%= num_services %>)
|
22
|
+
<%
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
%>
|
27
|
+
List of dammaged_nodes
|
28
|
+
======================
|
29
|
+
<%
|
30
|
+
dammaged_nodes.uniq.each do |n|
|
31
|
+
%> <%= n %>
|
32
|
+
<% end %>
|
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.5.
|
4
|
+
version: 1.5.2
|
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: 2018-09-
|
11
|
+
date: 2018-09-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: em-http-request
|
@@ -196,6 +196,7 @@ files:
|
|
196
196
|
- samples/criteo/haproxy.cfg.erb
|
197
197
|
- samples/criteo_choregraphies.html.erb
|
198
198
|
- samples/criteo_choregraphies.txt.erb
|
199
|
+
- samples/debug/compare_connect_services.txt.erb
|
199
200
|
- samples/ha_proxy.cfg.erb
|
200
201
|
- samples/keys.html.erb
|
201
202
|
- samples/nodes.html.erb
|