consul-templaterb 1.5.1 → 1.5.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|