consul-templaterb 1.26.2 → 1.26.3
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 +6 -0
- data/lib/consul/async/version.rb +1 -1
- data/samples/consul-ui/decorators.js.erb +2 -171
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eca26ee1958aac8a862d3c1c96b35446ac7a7775f3209095f64d8cd01200fee9
|
4
|
+
data.tar.gz: 15292c1651add5460162cf629814c37aeb9c965daaae0a5bfcb9a083e0c40758
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a7e04120d50851589cb0e90e45327768b81c2c9954634ca7b1d80d51b88de5e6186402c4f3be0bbc7a67ef220c8950c4117730bf50abaf2c080c5cd3e007d18b
|
7
|
+
data.tar.gz: 9b434745e5e8fb44c955350d38c68a469dc08b249b331800c38e112952757f85713e7ee2e924a3bd62883115443467329774177b98a0193badce3f2dfbb9a4d1
|
data/CHANGELOG.md
CHANGED
data/lib/consul/async/version.rb
CHANGED
@@ -1,18 +1,5 @@
|
|
1
|
-
//
|
1
|
+
// Use this file to configure custom decorators for your Consul-UI
|
2
2
|
var httpRegexp = new RegExp('^http[s]?://[^ ]+$');
|
3
|
-
var dc = "<%= ENV['CRITEO_DC'] || 'par'%>";
|
4
|
-
var env = "<%= ENV['CRITEO_ENV'] || 'preprod'%>";
|
5
|
-
|
6
|
-
var availability_url = 'https://grafana.crto.in/d/xFX5gCnWz/service-availability?var-datacenter=' + dc + '&var-service=';
|
7
|
-
if (env == 'preprod') {
|
8
|
-
availability_url = 'https://grafana.preprod.crto.in/d/E0ANGjnZz/service-availability?var-datacenter=' + dc + '&var-service=';
|
9
|
-
}
|
10
|
-
var swagger_url = 'https://swaggercatalogapp.' + dc + '.' + env + '.crto.in/explore/swagger?key=';
|
11
|
-
var slack_url = 'https://criteo.slack.com/app_redirect?channel=';
|
12
|
-
|
13
|
-
var rackguru_url = 'https://rackguru.' + env + '.crto.in/serial/';
|
14
|
-
|
15
|
-
var asapi_url = 'https://idm.' + env + '.crto.in/tool/multiGroupInfo/'
|
16
3
|
|
17
4
|
function url_decorator(key, value) {
|
18
5
|
var e = document.createElement('a');
|
@@ -26,27 +13,7 @@ function usefullLinksGenerator(instance, serviceName, node_meta_info) {
|
|
26
13
|
top.className = 'instance-links';
|
27
14
|
|
28
15
|
var usefullLinks = [
|
29
|
-
{
|
30
|
-
title: "Trigger security scan",
|
31
|
-
iconClassName: "fas fa-shield-alt",
|
32
|
-
href: "https://security.crto.in/#/scan/?ip=" + instance.addr
|
33
|
-
},
|
34
|
-
{
|
35
|
-
title: "Availability Graph",
|
36
|
-
iconClassName: "fas fa-chart-area",
|
37
|
-
href: availability_url + serviceName
|
38
|
-
},
|
39
16
|
];
|
40
|
-
if (node_meta_info!= null) {
|
41
|
-
var serial = node_meta_info['serial_number'];
|
42
|
-
if (serial != null) {
|
43
|
-
usefullLinks.push({
|
44
|
-
title: "RackGuru",
|
45
|
-
iconClassName: "fas fa-server",
|
46
|
-
href: rackguru_url + serial
|
47
|
-
});
|
48
|
-
}
|
49
|
-
}
|
50
17
|
var first = true;
|
51
18
|
for (let usefullLink of usefullLinks) {
|
52
19
|
link = document.createElement('a');
|
@@ -134,19 +101,6 @@ function groups_decorator(instance, key, value, serviceName) {
|
|
134
101
|
return span;
|
135
102
|
}
|
136
103
|
|
137
|
-
/**
|
138
|
-
* Decorates with a slack channel link
|
139
|
-
*/
|
140
|
-
function slack_channel(instance, key, value, serviceName) {
|
141
|
-
var sName = value;
|
142
|
-
if (sName.startsWith('#')) {
|
143
|
-
sName = sName.substring(1);
|
144
|
-
}
|
145
|
-
return build_link(slack_url + encodeURIComponent(sName), '#'+ sName);
|
146
|
-
}
|
147
|
-
|
148
|
-
const start_regexp = /(\d{4})(\d{2})(\d{2})T(\d{2})(\d{2})(\d{2})Z/
|
149
|
-
|
150
104
|
function decorateIsoDate(value, formated) {
|
151
105
|
const parsed = Date.parse(formated);
|
152
106
|
if (isNaN(parsed)) {
|
@@ -163,55 +117,6 @@ function decorateIsoDate(value, formated) {
|
|
163
117
|
// This is the list of function called
|
164
118
|
// When a service meta is found
|
165
119
|
var registered_decorators = {
|
166
|
-
alert_availability_slack_channel: slack_channel,
|
167
|
-
gerrit_repository: function(instance, key, value, serviceName) {
|
168
|
-
return build_link('https://review.crto.in/#/q/' + value, value);
|
169
|
-
},
|
170
|
-
version: function(instance, key, value, serviceName) {
|
171
|
-
var asInt = parseInt(value);
|
172
|
-
if (asInt < 10000) {
|
173
|
-
return document.createTextNode(value);
|
174
|
-
}
|
175
|
-
if (instance.sMeta['CRITEO_APP_POOL'] != null) {
|
176
|
-
return build_link("https://devtools.crto.in/log.html?moab=cs&im=nb-to&range=100%2C" + asInt, value);
|
177
|
-
} else {
|
178
|
-
var tUrl = "https://devtools.crto.in/log.html?moab=j&im=nb-to&range=100%2C" + asInt;
|
179
|
-
if (instance.sMeta['jvm_artifact'] != null) {
|
180
|
-
tUrl += '&with-dependencies=true&artifacts=' + encodeURIComponent(instance.sMeta['jvm_artifact']);
|
181
|
-
}
|
182
|
-
return build_link(tUrl, value);
|
183
|
-
}
|
184
|
-
},
|
185
|
-
MESOS_TERM_DEBUG_GRANTED_TO: groups_decorator,
|
186
|
-
OWNERS: groups_decorator,
|
187
|
-
marathon_app_id: function(instance, key, value, serviceName) {
|
188
|
-
var app_name = value;
|
189
|
-
if (app_name[0] != '/') {
|
190
|
-
app_name = '/' + app_name;
|
191
|
-
}
|
192
|
-
if (instance.sMeta && instance.sMeta['marathon_ui']) {
|
193
|
-
return build_link(instance.sMeta['marathon_ui'] + '/#/apps/' + encodeURIComponent(app_name), value);
|
194
|
-
} else {
|
195
|
-
// non decorated value
|
196
|
-
return document.createTextNode(value);
|
197
|
-
}
|
198
|
-
},
|
199
|
-
marathon_app_version: function(instance, key, value, serviceName) {
|
200
|
-
return decorateIsoDate(value, value);
|
201
|
-
},
|
202
|
-
slack_channel: slack_channel,
|
203
|
-
start: function(instance, key, value, serviceName) {
|
204
|
-
const reg = start_regexp.exec(value);
|
205
|
-
if (reg != null) {
|
206
|
-
var formated = reg[1] + '-' + reg[2] + '-' + reg[3] + 'T' + reg[4] + ':' + reg[5] + ':' + reg[6] + 'Z';
|
207
|
-
return decorateIsoDate(value, formated);
|
208
|
-
} else {
|
209
|
-
return document.createTextNode(value);
|
210
|
-
}
|
211
|
-
},
|
212
|
-
swagger_key: function(instance, key, value, serviceName) {
|
213
|
-
return build_link(swagger_url + encodeURIComponent(value), value);
|
214
|
-
},
|
215
120
|
}
|
216
121
|
|
217
122
|
function service_meta_semantics_decorator(instance, key, value, serviceName) {
|
@@ -286,85 +191,11 @@ function nodeMetaGenerator(nodeMetaTags, serviceMetaIfAny) {
|
|
286
191
|
* it does not have to return anything.
|
287
192
|
*/
|
288
193
|
function navBarDecorator(navbar) {
|
289
|
-
if (typeof consulManager === 'undefined') {
|
290
|
-
// Timepicker is not supported on this page
|
291
|
-
return;
|
292
|
-
}
|
293
|
-
var timepicker_container = document.createElement('div');
|
294
|
-
timepicker_container.innerHTML = `
|
295
|
-
<div class="row">
|
296
|
-
<button type="button" disabled class="btn btn-secondary" data-toggle="tooltip" data-html="true" title="Data returned is the closest available to request" id="currently-displayed-data-date">
|
297
|
-
Pick a date to see data from the past
|
298
|
-
</button>
|
299
|
-
<div class="col-sm-14">
|
300
|
-
<div class="form-group">
|
301
|
-
<div class="input-group date" id="datetimepicker1" data-target-input="nearest">
|
302
|
-
<input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker1"/>
|
303
|
-
<div class="input-group-append" data-target="#datetimepicker1" data-toggle="datetimepicker">
|
304
|
-
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
|
305
|
-
</div>
|
306
|
-
</div>
|
307
|
-
</div>
|
308
|
-
</div>
|
309
|
-
</div>
|
310
|
-
`;
|
311
|
-
|
312
|
-
navbar.appendChild(timepicker_container);
|
313
|
-
var script= document.createElement('script');
|
314
|
-
script.type='text/javascript';
|
315
|
-
// TODO(g.seux): extract code to another file and set "source" on script element
|
316
|
-
script.innerHTML = `
|
317
|
-
$('#datetimepicker1').datetimepicker({
|
318
|
-
format: 'DD/MM/YYYY HH:mm:ss Z', // default format does not allow to select seconds
|
319
|
-
sideBySide: true, // display date+time on the same widget
|
320
|
-
useCurrent: true // by default, select current date
|
321
|
-
});
|
322
|
-
$("#datetimepicker1").on("change.datetimepicker", function (e) {
|
323
|
-
console.log("Will fetch data from date " + e.date);
|
324
|
-
console.log("will clean existing data");
|
325
|
-
consulManager.clean().then(function(result) {
|
326
|
-
switch(consulManager.constructor.name) {
|
327
|
-
case "ConsulServiceManager":
|
328
|
-
backup_type = 'consul_services';
|
329
|
-
break;
|
330
|
-
case "ConsulKeysManager":
|
331
|
-
backup_type = 'consul_keys'
|
332
|
-
break;
|
333
|
-
case "ConsulNodesManager":
|
334
|
-
backup_type = 'consul_nodes'
|
335
|
-
break;
|
336
|
-
default:
|
337
|
-
console.log("Unknown " + consulManager.constructor.name + " type");
|
338
|
-
}
|
339
|
-
if (e.date) {
|
340
|
-
console.log("Will replace data by closest snapshot to " + e.date);
|
341
|
-
var target_url = "https://consul-info-timeline-history.<%= ENV['CRITEO_DC'] %>.<%= ENV['CRITEO_ENV']%>.crto.in/backup/" + backup_type + "/" + e.date / 1000;
|
342
|
-
} else {
|
343
|
-
console.log("Will restore to local version");
|
344
|
-
var target_url = defaultConsulManager.resourceURL;
|
345
|
-
}
|
346
|
-
if (typeof(defaultConsulManager) == 'undefined') {
|
347
|
-
// store first manager to be able to restore it
|
348
|
-
defaultConsulManager = consulManager
|
349
|
-
}
|
350
|
-
consulManager = new consulManager.constructor(target_url);
|
351
|
-
});
|
352
|
-
});
|
353
|
-
`;
|
354
|
-
navbar.appendChild(script);
|
355
194
|
}
|
356
195
|
|
357
|
-
|
358
196
|
/**
|
359
197
|
* fetchedResponseDecorator is called with http response when a resource is fetched by any instance of ConsulUIManager
|
360
198
|
* it does not have to return anything.
|
361
199
|
*/
|
362
200
|
async function fetchedResponseDecorator(httpResponse) {
|
363
|
-
|
364
|
-
current_date_display = $('#currently-displayed-data-date');
|
365
|
-
if (data_date > 0) {
|
366
|
-
current_date_display.html("Data is a snapshot from: " + moment.unix(data_date).format('DD/MM/YYYY HH:mm:ss Z'));
|
367
|
-
} else {
|
368
|
-
current_date_display.html("Pick a date to see data from the past");
|
369
|
-
}
|
370
|
-
}
|
201
|
+
}
|