iguazio.dashboard-controls 1.2.3 → 1.2.5

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iguazio.dashboard-controls",
3
- "version": "1.2.3",
3
+ "version": "1.2.5",
4
4
  "main": "dist/js/iguazio.dashboard-controls.js",
5
5
  "description": "Collection of resources (such as CSS styles, fonts and images) and AngularJs 1.x components and services to share among different Iguazio repos.",
6
6
  "repository": {
@@ -31,6 +31,7 @@ such restriction.
31
31
 
32
32
  ctrl.getLogLevel = getLogLevel;
33
33
  ctrl.getLogName = getLogName;
34
+ ctrl.getLogTrimmedName = getLogTrimmedName;
34
35
 
35
36
  //
36
37
  // Public methods
@@ -45,13 +46,19 @@ such restriction.
45
46
  }
46
47
 
47
48
  /**
48
- * Get log name display value
49
- * @returns {string} the log name display value
49
+ * Get log full name
50
+ * @returns {string} the log name
50
51
  */
51
52
  function getLogName() {
52
- var name = lodash.get(ctrl.entryItem, 'name', '');
53
+ return lodash.get(ctrl.entryItem, 'kubernetes.pod.name', lodash.get(ctrl.entryItem, 'name', ''));
54
+ }
53
55
 
54
- return lodash.padEnd(name.substring(0, 15), 15);
56
+ /**
57
+ * Get log trimmed name display value
58
+ * @returns {string} the log name display value
59
+ */
60
+ function getLogTrimmedName() {
61
+ return lodash.padEnd(getLogName().substring(0, 25), 25);
55
62
  }
56
63
  }
57
64
  }());
@@ -3,10 +3,10 @@
3
3
  <div class="log-entry">
4
4
  <span class="log-entry-time">{{$ctrl.entryItem['@timestamp'] | date : 'yy-MM-dd HH:mm:ss.sss' }}</span>
5
5
  <span class="log-entry-name"
6
- data-uib-tooltip="{{$ctrl.entryItem.name}}"
6
+ data-uib-tooltip="{{$ctrl.getLogName()}}"
7
7
  data-tooltip-placement="top"
8
8
  data-tooltip-popup-delay="200"
9
- data-tooltip-append-to-body="true">&nbsp;{{$ctrl.getLogName()}}</span>
9
+ data-tooltip-append-to-body="true">&nbsp;{{$ctrl.getLogTrimmedName()}}</span>
10
10
  <span class="log-entry-level-{{$ctrl.entryItem.level.toLowerCase()}}"
11
11
  data-ng-if="$ctrl.entryItem.level">&nbsp;({{$ctrl.getLogLevel()}})</span>
12
12
  <span class="log-entry-message">&nbsp;{{$ctrl.entryItem.message}}</span>
@@ -4,7 +4,7 @@
4
4
  angular.module('iguazio.dashboard-controls')
5
5
  .factory('ControlPanelLogsDataService', ControlPanelLogsDataService);
6
6
 
7
- function ControlPanelLogsDataService($q, lodash, ElasticsearchService, ElasticSearchDataService) {
7
+ function ControlPanelLogsDataService($q, lodash, ElasticsearchService) {
8
8
  return {
9
9
  collectLogs: collectLogs,
10
10
  entriesPaginated: search,
@@ -146,7 +146,6 @@
146
146
  * @param {Object} queryParams - additional parameters
147
147
  * @param {string} queryParams.query - search query text
148
148
  * @param {string} queryParams.timeFrame - selected time period to show results for
149
- * @param {string} [queryParams.lastEntryTimestamp] - time stamp of the last item in a list, used with auto
150
149
  * @returns {Promise.<Array>} a promise resolving to an array of logs.
151
150
  */
152
151
  function collectLogs(queryParams) {
@@ -155,21 +154,25 @@
155
154
  var downloadLogsData = [];
156
155
  var MAX_DOWNLOAD_LOGS = 100000;
157
156
 
158
- return ElasticSearchDataService.createPit(keepAlive).then(function (pitId) {
159
- return getNextChunk(pitId, null);
157
+ return createSearch(size, keepAlive, queryParams).then(function (response) {
158
+ var hits = response.hits.hits;
159
+
160
+ if (hits.length > 0) {
161
+ downloadLogsData = downloadLogsData.concat(prepareLogs(hits));
162
+
163
+ return getNextChunk(response._scroll_id);
164
+ }
160
165
  });
161
166
 
162
- function getNextChunk(pit, searchAfter) {
163
- return getNextPitLogs(size, queryParams, keepAlive, pit, searchAfter)
167
+ function getNextChunk(scroll) {
168
+ return getNextScrollLogs(keepAlive, scroll)
164
169
  .then(function (response) {
165
170
  var hits = response.hits.hits;
166
171
 
167
172
  if (hits.length > 0 && downloadLogsData.length < MAX_DOWNLOAD_LOGS - size) {
168
- var lastHit = lodash.last(hits);
169
-
170
173
  downloadLogsData = downloadLogsData.concat(prepareLogs(hits));
171
174
 
172
- return getNextChunk(response.pit_id, lastHit.sort);
175
+ return getNextChunk(response._scroll_id);
173
176
  } else {
174
177
  return downloadLogsData;
175
178
  }
@@ -182,8 +185,9 @@
182
185
  return logs.map(function (logData) {
183
186
  var log = lodash.get(logData, '_source', {});
184
187
  var level = log.level ? ' (' + log.level + ') ' : '';
188
+ var name = lodash.get(log, 'kubernetes.pod.name', lodash.get(log, 'name', ''));
185
189
 
186
- return log['@timestamp'] + ' ' + log.name + level +
190
+ return log['@timestamp'] + ' ' + name + level +
187
191
  lodash.get(log, 'message', '') + ' ' + JSON.stringify(lodash.get(log, 'more', {}));
188
192
  });
189
193
  }
@@ -250,18 +254,15 @@
250
254
  }
251
255
 
252
256
  /**
253
- * Gets next part of the logs using Pit Id and search after parameters
254
- * @param {number} size - size of the logs to be requested
257
+ * Makes a request to elasticsearch to create search id
258
+ * @param {boolean} size - logs size
259
+ * @param {string} keepAlive - sets lifetime for scroll id
255
260
  * @param {Object} queryParams - additional parameters
256
261
  * @param {string} queryParams.query - search query text
257
- * @param {string} queryParams.timeFrame - selected time period to show results for
258
262
  * @param {string} [queryParams.lastEntryTimestamp] - time stamp of the last item in a list, used with auto
259
- * @param {boolean} keepAlive - determines how long the PIT ID should be alive
260
- * @param {string} pitId - PIT ID that is needed to get next chunk of logs
261
- * @param {Array} searchAfter - An array of identifiers that points to the last provided log
262
- * @returns {Promise.<Object>} Elasticsearch logs data.
263
+ * @returns {Object}
263
264
  */
264
- function getNextPitLogs(size, queryParams, keepAlive, pitId, searchAfter) {
265
+ function createSearch(size, keepAlive, queryParams) {
265
266
  var searchFrom = '';
266
267
  var searchTo = 'now';
267
268
 
@@ -274,11 +275,8 @@
274
275
 
275
276
  var config = {
276
277
  size: size,
278
+ scroll: keepAlive,
277
279
  body: {
278
- pit: {
279
- id: pitId,
280
- keep_alive: keepAlive
281
- },
282
280
  query: {
283
281
  bool: {
284
282
  must: [
@@ -308,11 +306,22 @@
308
306
  }
309
307
  };
310
308
 
311
- if (searchAfter) {
312
- config.body.search_after = searchAfter;
313
- }
314
-
315
309
  return ElasticsearchService.search(config);
316
310
  }
311
+
312
+ /**
313
+ * Gets next part of the logs using scroll id parameter
314
+ * @param {boolean} keepAlive - determines how long the scroll id should be alive
315
+ * @param {string} scrollId - scroll id that is needed to get next chunk of logs
316
+ * @returns {Promise.<Object>} Elasticsearch logs data.
317
+ */
318
+ function getNextScrollLogs(keepAlive, scrollId) {
319
+ return ElasticsearchService.scroll({
320
+ body: {
321
+ scroll: keepAlive,
322
+ scroll_id: scrollId
323
+ }
324
+ });
325
+ }
317
326
  }
318
327
  }());
@@ -391,7 +391,8 @@ such restriction.
391
391
  */
392
392
  function generateFilterQuery() {
393
393
  var levels = lodash.chain(ctrl.filter.level).pickBy().keys().join(' OR ').value();
394
- var queries = ['system-id:"' + ConfigService.systemId + '"', '_exists_:nuclio'];
394
+ var projectName = lodash.get(ctrl.version, ['metadata', 'labels', 'nuclio.io/project-name']);
395
+ var queries = ['system-id:"' + ConfigService.systemId + '"', '_exists_:nuclio', 'nuclio.project_name.keyword:' + projectName];
395
396
 
396
397
  if (!lodash.isEmpty(ctrl.version.metadata.name)) {
397
398
  queries.push('name:' + ctrl.version.metadata.name);
@@ -8,7 +8,7 @@
8
8
  height: 95%;
9
9
 
10
10
  .info-page-filters {
11
- z-index: 990;
11
+ z-index: 1000;
12
12
 
13
13
  .multiple-checkboxes-option {
14
14
  margin: 10px 0;