consul-templaterb 1.5.0 → 1.5.1

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: fc502021c589486d5467570135c409154b48de0829358bc0f5a261c93cb4bf83
4
- data.tar.gz: 77d2214c3b8d4db64d28911f76d7f4148f0e54aa00a504f116f0b06ed7d227fd
3
+ metadata.gz: 66b33121c7949683986ddb7ff40573e6110ff98294bca01b944e9aa268a2dc66
4
+ data.tar.gz: e309df0ebc89ecf50c5e4c18733a1f617ba0f1714845822215c8a8871f335b42
5
5
  SHA512:
6
- metadata.gz: 730e29b4453d6e6b298bc2b1b3b5d57b39ccf6d88231b84ac60fe04998ca131a5294d450219f7432f7de80813de8ee32c279ed11d88547fe11a7926122136920
7
- data.tar.gz: 9b8fe26cee53f5417418ce9574e076fc3ffc40a2a61f9f211cd516bfcb591d5fd146ec7b664fd86d8170fc6d25e6eef3c8c964e7e2fbe52ca1bc8468bd7a081b
6
+ metadata.gz: e127b2aa026380d0acad164fc2263582609940e09d2554fdfb468bc63b4be1821f58124299e29d4e83dec42a2c16c62138a9828d728a4c89af63063dd1adb42a
7
+ data.tar.gz: b23008ed571d5172177332dbaf848db958bfedbbacfeeb7f7f01a056f753bfa8d047552ad8e9870e350caf328879fc6c105eb676c1ef5089a8a44c760b903972
data/CHANGELOG.md CHANGED
@@ -2,6 +2,16 @@
2
2
 
3
3
  ## (UNRELEASED)
4
4
 
5
+ ## 1.5.1 (September 4, 2018)
6
+
7
+ BUG FIXES:
8
+
9
+ * fixed non valid regexp lookups in Consul-UI
10
+
11
+ IMPROVEMENTS:
12
+
13
+ * Added Support for Consul Connect in Consul-UI
14
+
5
15
  ## 1.5.0 (August 17, 2018)
6
16
 
7
17
  IMPROVEMENTS:
@@ -1,5 +1,5 @@
1
1
  module Consul
2
2
  module Async
3
- VERSION = '1.5.0'.freeze
3
+ VERSION = '1.5.1'.freeze
4
4
  end
5
5
  end
@@ -5,14 +5,20 @@
5
5
  <div class="row mx-0">
6
6
  <div id="filter-menu" class="col-4 col-m-3 px-4 pt-4">
7
7
  <div class="form-group">
8
- <div class="form-check">
8
+ <div class="form-check form-check-inline">
9
9
  <label class="form-check-label">
10
10
  <input id="showTagsInList" type="checkbox" title="show tags" onclick="consulService.showTags(this.checked)" class="form-check-input" />
11
11
  Show Tags
12
12
  </label>
13
13
  </div>
14
+ <div class="form-check form-check-inline">
15
+ <label class="form-check-label">
16
+ <input id="showProxiesInList" type="checkbox" title="show Consul Connect Proxies" onclick="consulService.showProxies(this.checked)" class="form-check-input" />
17
+ Show Connect Proxies
18
+ </label>
19
+ </div>
14
20
  <div class="input-group">
15
- <input id="service-filter" type="text" placeholder="filter services by name or tags" class="form-control" />
21
+ <input id="service-filter" type="text" placeholder="filter services by name or tags" class="form-control" />
16
22
  <div class="input-group-append">
17
23
  <span class="input-group-text" id="service-counter"></span>
18
24
  </div>
@@ -50,5 +56,6 @@
50
56
  <script type="text/javascript">
51
57
  consulService = new ConsulService('<%= datasource %>','<%= refresh %>');
52
58
  </script>
59
+ <script src="vendors/highlight/highlight.pack.js"></script>
53
60
  </body>
54
61
  </html>
@@ -82,11 +82,14 @@
82
82
  id: snode['Service']['ID'],
83
83
  name: snode['Node']['Node'],
84
84
  sMeta: meta ? meta : {},
85
+ connect: snode['Service']['Connect'],
85
86
  addr: snode.service_address,
86
87
  port: snode['Service']['Port'],
87
88
  tags: snode['Service']['Tags'],
88
89
  checks: checks,
89
90
  }
91
+ kind_of_service = snode['Service']['Kind']
92
+ service['kind'] = kind_of_service if kind_of_service
90
93
  service[:instances] << server
91
94
  end
92
95
  end
@@ -151,3 +151,11 @@ pre, code {
151
151
  height: 100%;
152
152
  margin-bottom: 0px;
153
153
  }
154
+
155
+ .connect-enabled{
156
+ float:right;
157
+ border: 1px #ccc solid;
158
+ }
159
+ .connect-disabled{
160
+ display: none;
161
+ }
@@ -11,7 +11,12 @@ class ConsulService {
11
11
  this.filterStatus = null;
12
12
  this.serviceFilterCounter = $("#service-counter");
13
13
  this.serviceFilterCount = 0;
14
- this.showTags($('#showTagsInList').checked)
14
+ this.showProxiesInList = false;
15
+ var cs = this
16
+ window.setTimeout(function(){
17
+ cs.showTags($('#showTagsInList:checked').length > 0);
18
+ cs.showProxies($('#showProxiesInList:checked').length > 0);
19
+ }, 100);
15
20
  }
16
21
 
17
22
  showTags(showTags) {
@@ -19,6 +24,14 @@ class ConsulService {
19
24
  stylesheet.textContent = '.service-tags { display: ' + (showTags? 'block':'none') + ';}';
20
25
  }
21
26
 
27
+ showProxies(showProxies) {
28
+ if (showProxies != this.showProxiesInList) {
29
+ this.showProxiesInList = showProxies;
30
+ console.log("showProxies:= "+this.showProxiesInList+", reloading list")
31
+ this.reloadServiceList();
32
+ }
33
+ }
34
+
22
35
  fetchRessource() {
23
36
  $.ajax({url: this.ressourceURL, cache: false, dataType: "json", sourceObject: this, success: function(result){
24
37
  consulService.initRessource(result);
@@ -57,6 +70,9 @@ class ConsulService {
57
70
  }
58
71
 
59
72
  reloadServiceList() {
73
+ if (!this.data || !this.data.services) {
74
+ console.log("No data to display");
75
+ }
60
76
  this.serviceList.html('');
61
77
  this.serviceFilterCount = 0;
62
78
  for (var serviceName in this.data.services) {
@@ -68,7 +84,7 @@ class ConsulService {
68
84
  listItem.setAttribute('onfocus','consulService.onClickServiceName(this)');
69
85
  listItem.setAttribute('onclick','consulService.onClickServiceName(this)');
70
86
  listItem.setAttribute('value',serviceName);
71
- listItem.setAttribute('class','list-group-item list-group-item-action');
87
+ var listItemClass = 'list-group-item list-group-item-action';
72
88
 
73
89
  var statuses = document.createElement('div');
74
90
  statuses.setAttribute('class','statuses float-right');
@@ -90,6 +106,14 @@ class ConsulService {
90
106
 
91
107
  statuses.appendChild(createBadge('badge-dark', (serviceStatus['total'] || 0)));
92
108
  listItem.appendChild(statuses);
109
+ if (!!service['kind']) {
110
+ var kind = document.createElement('div');
111
+ kind.setAttribute('class','kind float-right');
112
+ kind.appendChild(createBadge('badge-info kind', service['kind']));
113
+ listItem.appendChild(kind);
114
+ listItemClass+= " kind-" + service['kind'];
115
+ }
116
+ listItem.setAttribute('class', listItemClass);
93
117
 
94
118
  var serviceNameItem = document.createElement('div');
95
119
  serviceNameItem.setAttribute('class', 'service-name');
@@ -113,11 +137,20 @@ class ConsulService {
113
137
  }
114
138
 
115
139
  filterService() {
116
- var filter = new RegExp(consulService.serviceFilter.val());
140
+ var filter;
141
+ var serviceVal = consulService.serviceFilter.val();
142
+ try {
143
+ filter = new RegExp(serviceVal);
144
+ } catch (e) {
145
+ var safeReg = serviceVal.replace(/[-[\]{}()*+?.,\\^$|]/g, "\\$&")
146
+ console.log("Failed to compile regexp for '" + serviceVal + "', using strict lookup due to: " + e);
147
+ filter = new RegExp(safeReg);
148
+ }
117
149
  consulService.serviceFilterCount = 0;
150
+ var showProxiesInList = this.showProxiesInList;
118
151
  consulService.serviceList.children('button').each(function (){
119
152
  var ui = $(this);
120
- if(serviceMatcher(this, filter)) {
153
+ if(serviceMatcher(this, filter, showProxiesInList)) {
121
154
  ui.removeClass('d-none');
122
155
  ui.addClass('d-block');
123
156
  consulService.serviceFilterCount += 1;
@@ -196,6 +229,7 @@ class ConsulService {
196
229
  serviceHtml.appendChild(serviceTitleGenerator(instance));
197
230
  serviceHtml.appendChild(tagsGenerator(instance.tags));
198
231
  serviceHtml.appendChild(serviceMetaGenerator(instance.sMeta));
232
+ serviceHtml.appendChild(connectGenerator(instance))
199
233
  serviceHtml.appendChild(checksStatusGenerator(instance.checks));
200
234
  var state = nodeState(instance.checks);
201
235
  serviceHtml.setAttribute('status', state);
@@ -212,6 +246,9 @@ class ConsulService {
212
246
  resizeWrapper('instances-wrapper', 'instances-list');
213
247
  $('#instances-list .list-group-item').resize(resizeAll);
214
248
  this.filterInstances();
249
+ $('pre code').each(function(i, block) {
250
+ hljs.highlightBlock(block);
251
+ });
215
252
  }
216
253
  }
217
254
 
@@ -104,6 +104,29 @@ function tagsGenerator(instanceTags) {
104
104
  return tags;
105
105
  }
106
106
 
107
+ function connectGenerator(instance) {
108
+ var connectItem = document.createElement('div');
109
+ var connectValue = instance['connect']
110
+ if (connectValue != null && connectValue["Proxy"]) {
111
+ connectItem.setAttribute('class', 'connect-enabled');
112
+ var badge = document.createElement("span");
113
+ badge.setAttribute("class", "badge badge-primary");
114
+ badge.appendChild(document.createTextNode("Consul Connect Enabled"));
115
+ connectItem.appendChild(badge);
116
+ var content = document.createElement("pre");
117
+ content.setAttribute("class", "connect-data");
118
+ var code = document.createElement("code");
119
+ code.setAttribute("class", "connect-source");
120
+ code.appendChild(document.createTextNode(JSON.stringify(connectValue)));
121
+ content.appendChild(code);
122
+ connectItem.appendChild(content);
123
+ return connectItem;
124
+ } else {
125
+ connectItem.setAttribute('class', 'connect-disabled');
126
+ }
127
+ return connectItem
128
+ }
129
+
107
130
  function serviceMetaGenerator(instanceMeta) {
108
131
  var top = document.createElement('div');
109
132
  top.className = 'instance-meta';
@@ -248,8 +271,11 @@ function createBadge(classes, data) {
248
271
  return badge;
249
272
  }
250
273
 
251
- function serviceMatcher(service, regex) {
274
+ function serviceMatcher(service, regex, showProxiesInList) {
252
275
  if(service.getElementsByClassName('service-name')[0].innerHTML.match(regex)) {
276
+ if(!showProxiesInList && service.classList.contains('kind-connect-proxy')){
277
+ return false;
278
+ }
253
279
  return true;
254
280
  }
255
281
  var tags = service.getElementsByClassName('service-tags')[0].getElementsByClassName('badge');
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.0
4
+ version: 1.5.1
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-08-17 00:00:00.000000000 Z
11
+ date: 2018-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: em-http-request