You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ol...@apache.org on 2018/02/19 10:01:15 UTC
[ambari] branch branch-feature-AMBARI-22842 updated (465c1a7 ->
10d3d39)
This is an automated email from the ASF dual-hosted git repository.
oleewere pushed a change to branch branch-feature-AMBARI-22842
in repository https://gitbox.apache.org/repos/asf/ambari.git.
from 465c1a7 AMBARI-22842. Provide field / component UI metadata from backend
new 22d4c7e AMBARI-22814 Add different options of component name display
new 10d3d39 AMBARI-22825 Add different options of field name display
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
ambari-logsearch/ambari-logsearch-web/package.json | 2 +
.../ambari-logsearch-web/src/app/app.module.ts | 4 +-
.../src/app/classes/models/audit-log-field.ts | 225 --
.../src/app/classes/models/log-field.ts | 27 -
.../models/{common-entry.ts => node-group.ts} | 7 +-
.../src/app/classes/models/node-item.ts | 3 +
.../src/app/classes/models/service-log-field.ts | 107 -
.../src/app/classes/models/store.ts | 7 +-
.../ambari-logsearch-web/src/app/classes/object.ts | 21 +
.../action-menu/action-menu.component.spec.ts | 16 +-
.../audit-logs-entries.component.spec.ts | 16 +-
.../audit-logs-table.component.spec.ts | 16 +-
.../context-menu/context-menu.component.spec.ts | 8 +-
.../dropdown-list/dropdown-list.component.spec.ts | 8 +-
.../dropdown-list/dropdown-list.component.ts | 5 +-
.../filter-dropdown.component.spec.ts | 8 +-
.../filters-panel/filters-panel.component.spec.ts | 9 +-
.../filters-panel/filters-panel.component.ts | 58 +-
.../log-context/log-context.component.spec.ts | 16 +-
.../log-index-filter.component.spec.ts | 16 +-
.../logs-container/logs-container.component.html | 2 +-
.../logs-container.component.spec.ts | 17 +-
.../service-logs-table.component.html | 2 +-
.../service-logs-table.component.spec.ts | 20 +-
.../time-range-picker.component.spec.ts | 15 +-
.../timezone-picker.component.spec.ts | 16 +-
.../components/top-menu/top-menu.component.spec.ts | 17 +-
.../src/app/mock-data-by-url.ts | 2177 +++++++++++++++++
.../ambari-logsearch-web/src/app/mock-data.ts | 2508 --------------------
.../{timezone-abbr.pipe.ts => component-label.ts} | 15 +-
.../services/component-generator.service.spec.ts | 17 +-
.../app/services/component-generator.service.ts | 3 +-
.../app/services/history-manager.service.spec.ts | 18 +-
.../src/app/services/http-client.service.ts | 3 +
.../app/services/logs-container.service.spec.ts | 16 +-
.../src/app/services/logs-container.service.ts | 75 +-
.../src/app/services/mock-api-data.service.ts | 39 +-
.../services/storage/audit-logs-fields.service.ts | 49 +-
.../src/app/services/user-settings.service.spec.ts | 18 +-
.../src/app/services/utils.service.ts | 18 +-
.../src/app/test-config.spec.ts | 26 +-
ambari-logsearch/ambari-logsearch-web/yarn.lock | 24 +
42 files changed, 2488 insertions(+), 3186 deletions(-)
delete mode 100644 ambari-logsearch/ambari-logsearch-web/src/app/classes/models/audit-log-field.ts
delete mode 100644 ambari-logsearch/ambari-logsearch-web/src/app/classes/models/log-field.ts
copy ambari-logsearch/ambari-logsearch-web/src/app/classes/models/{common-entry.ts => node-group.ts} (87%)
delete mode 100644 ambari-logsearch/ambari-logsearch-web/src/app/classes/models/service-log-field.ts
create mode 100644 ambari-logsearch/ambari-logsearch-web/src/app/mock-data-by-url.ts
delete mode 100644 ambari-logsearch/ambari-logsearch-web/src/app/mock-data.ts
copy ambari-logsearch/ambari-logsearch-web/src/app/pipes/{timezone-abbr.pipe.ts => component-label.ts} (64%)
--
To stop receiving notification emails like this one, please contact
oleewere@apache.org.
[ambari] 01/02: AMBARI-22814 Add different options of component
name display
Posted by ol...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
oleewere pushed a commit to branch branch-feature-AMBARI-22842
in repository https://gitbox.apache.org/repos/asf/ambari.git
commit 22d4c7ea42d3176cafa2f7c7194b40ad2f2d61d7
Author: Istvan Tobias <to...@gmail.com>
AuthorDate: Sun Feb 11 23:57:41 2018 +0100
AMBARI-22814 Add different options of component name display
---
.../ambari-logsearch-web/src/app/app.module.ts | 4 ++-
.../classes/models/{node-item.ts => node-group.ts} | 15 ++++------
.../src/app/classes/models/node-item.ts | 3 ++
.../service-logs-table.component.html | 2 +-
.../node-item.ts => pipes/component-label.ts} | 26 ++++++++++-------
.../src/app/services/http-client.service.ts | 3 ++
.../src/app/services/logs-container.service.ts | 33 ++++++++++++++--------
.../src/app/services/utils.service.ts | 6 ++--
8 files changed, 57 insertions(+), 35 deletions(-)
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/app.module.ts b/ambari-logsearch/ambari-logsearch-web/src/app/app.module.ts
index 5a2b59d..1c85681 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/app.module.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/app.module.ts
@@ -101,6 +101,7 @@ import {LogIndexFilterComponent} from '@app/components/log-index-filter/log-inde
import {TimeZoneAbbrPipe} from '@app/pipes/timezone-abbr.pipe';
import {TimerSecondsPipe} from '@app/pipes/timer-seconds.pipe';
+import {ComponentLabelPipe} from "@app/pipes/component-label";
export function HttpLoaderFactory(http: Http): TranslateHttpLoader {
// adding 'static' parameter to step over mock data request
@@ -164,7 +165,8 @@ export function getXHRBackend(injector: Injector, browser: BrowserXhr, xsrf: XSR
HistoryItemControlsComponent,
LogIndexFilterComponent,
TimeZoneAbbrPipe,
- TimerSecondsPipe
+ TimerSecondsPipe,
+ ComponentLabelPipe
],
imports: [
BrowserModule,
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/classes/models/node-item.ts b/ambari-logsearch/ambari-logsearch-web/src/app/classes/models/node-group.ts
similarity index 76%
copy from ambari-logsearch/ambari-logsearch-web/src/app/classes/models/node-item.ts
copy to ambari-logsearch/ambari-logsearch-web/src/app/classes/models/node-group.ts
index ef5f772..d461b23 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/classes/models/node-item.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/classes/models/node-group.ts
@@ -16,15 +16,10 @@
* limitations under the License.
*/
-import {CommonEntry} from '@app/classes/models/common-entry';
-
-export interface NodeItem {
+/**
+ * A simple interface for the component's groups (aka services)
+ */
+export interface NodeGroup {
name: string;
- type?: string;
- value: string;
- isParent: boolean;
- isRoot: boolean;
- childs?: NodeItem[];
- logLevelCount?: CommonEntry[];
- vNodeList?: CommonEntry[];
+ label?: string;
}
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/classes/models/node-item.ts b/ambari-logsearch/ambari-logsearch-web/src/app/classes/models/node-item.ts
index ef5f772..ca10578 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/classes/models/node-item.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/classes/models/node-item.ts
@@ -17,11 +17,14 @@
*/
import {CommonEntry} from '@app/classes/models/common-entry';
+import {NodeGroup} from "@app/classes/models/node-group";
export interface NodeItem {
name: string;
type?: string;
value: string;
+ label?: string;
+ group?: NodeGroup;
isParent: boolean;
isRoot: boolean;
childs?: NodeItem[];
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/service-logs-table/service-logs-table.component.html b/ambari-logsearch/ambari-logsearch-web/src/app/components/service-logs-table/service-logs-table.component.html
index 3110d9a..26ec1df 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/service-logs-table/service-logs-table.component.html
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/service-logs-table/service-logs-table.component.html
@@ -79,7 +79,7 @@
<log-level [logEntry]="log"></log-level>
</td>
<td *ngIf="isColumnDisplayed('type')" [ngClass]="'log-type'">
- {{log.type}}
+ {{log.type | componentLabel | async}}
</td>
<ng-container *ngFor="let column of displayedColumns">
<td *ngIf="customStyledColumns.indexOf(column.value) === -1"
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/classes/models/node-item.ts b/ambari-logsearch/ambari-logsearch-web/src/app/pipes/component-label.ts
similarity index 59%
copy from ambari-logsearch/ambari-logsearch-web/src/app/classes/models/node-item.ts
copy to ambari-logsearch/ambari-logsearch-web/src/app/pipes/component-label.ts
index ef5f772..4a81abd 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/classes/models/node-item.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/pipes/component-label.ts
@@ -16,15 +16,21 @@
* limitations under the License.
*/
-import {CommonEntry} from '@app/classes/models/common-entry';
+import {Pipe, PipeTransform} from '@angular/core';
+import {ComponentsService} from "@app/services/storage/components.service";
+import {Observable} from "rxjs/Observable";
+
+@Pipe({
+ name: 'componentLabel'
+})
+export class ComponentLabelPipe implements PipeTransform {
+
+ constructor(private componentService: ComponentsService) {
+ }
+
+ transform(name: string): Observable<string> {
+ return this.componentService.findInCollection(component => component.name === name)
+ .map(component => component ? component.label || component.name : name)
+ }
-export interface NodeItem {
- name: string;
- type?: string;
- value: string;
- isParent: boolean;
- isRoot: boolean;
- childs?: NodeItem[];
- logLevelCount?: CommonEntry[];
- vNodeList?: CommonEntry[];
}
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/services/http-client.service.ts b/ambari-logsearch/ambari-logsearch-web/src/app/services/http-client.service.ts
index 52f4d5b..787eb57 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/services/http-client.service.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/services/http-client.service.ts
@@ -73,6 +73,9 @@ export class HttpClientService extends Http {
components: {
url: 'service/logs/components/levels/counts'
},
+ serviceComponentsName: {
+ url: 'service/logs/components'
+ },
clusters: {
url: 'service/logs/clusters'
},
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/services/logs-container.service.ts b/ambari-logsearch/ambari-logsearch-web/src/app/services/logs-container.service.ts
index 7664b3d..3c2493b 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/services/logs-container.service.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/services/logs-container.service.ts
@@ -996,21 +996,32 @@ export class LogsContainerService {
return request;
}
- loadComponents(): Observable<Response> {
- const request = this.httpClient.get('components');
- request.subscribe((response: Response): void => {
- const jsonResponse = response.json(),
- components = jsonResponse && jsonResponse.vNodeList.map((item): NodeItem => Object.assign(item, {
- value: item.logLevelCount.reduce((currentValue: number, currentItem): number => {
- return currentValue + Number(currentItem.value);
- }, 0)
- }));
+ loadComponents(): Observable<Response[]> {
+ const requestComponentsData:Observable<Response> = this.httpClient.get('components');
+ const requestComponentsName:Observable<Response> = this.httpClient.get('serviceComponentsName');
+ const requests = Observable.combineLatest(requestComponentsName, requestComponentsData);
+ requests.subscribe((responses:Response[]) => {
+ const componentsNames = responses[0].json();
+ const componentsData = responses[1].json();
+ const components = componentsData && componentsData.vNodeList.map((item): NodeItem => {
+ const component = componentsNames.metadata.find(component => component.name === item.name);
+ return Object.assign(item, {
+ label: component.label || item.name,
+ group: component && component.group && {
+ name: component.group,
+ label: componentsNames.groups[component.group]
+ },
+ value: item.logLevelCount.reduce((currentValue: number, currentItem): number => {
+ return currentValue + Number(currentItem.value);
+ }, 0)
+ });
+ });
if (components) {
- this.utils.pushUniqueValues(this.filters.components.options, components.map(this.utils.getListItemFromNode));
+ this.utils.pushUniqueValues(this.filters.components.options, components.map(node => this.utils.getListItemFromNode(node, true) ));
this.componentsStorage.addInstances(components);
}
});
- return request;
+ return requests;
}
loadHosts(): Observable<Response> {
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/services/utils.service.ts b/ambari-logsearch/ambari-logsearch-web/src/app/services/utils.service.ts
index c960cd1..eae8928 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/services/utils.service.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/services/utils.service.ts
@@ -122,11 +122,13 @@ export class UtilsService {
/**
* Get instance for dropdown list from NodeItem object
* @param node {NodeItem}
+ * @param addGroup {boolean}
* @returns {ListItem}
*/
- getListItemFromNode(node: NodeItem): ListItem {
+ getListItemFromNode(node: NodeItem, addGroup: boolean = false): ListItem {
+ const group: string = addGroup && node.group ? `${node.group.label || node.group.name}: ` : '';
return {
- label: `${node.name} (${node.value})`,
+ label: `${group}${node.label || node.name} (${node.value})`,
value: node.name
};
}
--
To stop receiving notification emails like this one, please contact
oleewere@apache.org.
[ambari] 02/02: AMBARI-22825 Add different options of field name
display
Posted by ol...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
oleewere pushed a commit to branch branch-feature-AMBARI-22842
in repository https://gitbox.apache.org/repos/asf/ambari.git
commit 10d3d396fc2dc3682bc1f43807ffd5a73febbdcd
Author: Istvan Tobias <to...@gmail.com>
AuthorDate: Tue Feb 13 19:31:07 2018 +0100
AMBARI-22825 Add different options of field name display
---
ambari-logsearch/ambari-logsearch-web/package.json | 2 +
.../src/app/classes/models/audit-log-field.ts | 225 --
.../src/app/classes/models/log-field.ts | 27 -
.../src/app/classes/models/service-log-field.ts | 107 -
.../src/app/classes/models/store.ts | 7 +-
.../ambari-logsearch-web/src/app/classes/object.ts | 21 +
.../action-menu/action-menu.component.spec.ts | 16 +-
.../audit-logs-entries.component.spec.ts | 16 +-
.../audit-logs-table.component.spec.ts | 16 +-
.../context-menu/context-menu.component.spec.ts | 8 +-
.../dropdown-list/dropdown-list.component.spec.ts | 8 +-
.../dropdown-list/dropdown-list.component.ts | 5 +-
.../filter-dropdown.component.spec.ts | 8 +-
.../filters-panel/filters-panel.component.spec.ts | 9 +-
.../filters-panel/filters-panel.component.ts | 58 +-
.../log-context/log-context.component.spec.ts | 16 +-
.../log-index-filter.component.spec.ts | 16 +-
.../logs-container/logs-container.component.html | 2 +-
.../logs-container.component.spec.ts | 17 +-
.../service-logs-table.component.spec.ts | 20 +-
.../time-range-picker.component.spec.ts | 15 +-
.../timezone-picker.component.spec.ts | 16 +-
.../components/top-menu/top-menu.component.spec.ts | 17 +-
.../src/app/mock-data-by-url.ts | 2177 +++++++++++++++++
.../ambari-logsearch-web/src/app/mock-data.ts | 2508 --------------------
.../services/component-generator.service.spec.ts | 17 +-
.../app/services/component-generator.service.ts | 3 +-
.../app/services/history-manager.service.spec.ts | 18 +-
.../app/services/logs-container.service.spec.ts | 16 +-
.../src/app/services/logs-container.service.ts | 50 +-
.../src/app/services/mock-api-data.service.ts | 39 +-
.../services/storage/audit-logs-fields.service.ts | 49 +-
.../src/app/services/user-settings.service.spec.ts | 18 +-
.../src/app/services/utils.service.ts | 12 +-
.../src/app/test-config.spec.ts | 26 +-
ambari-logsearch/ambari-logsearch-web/yarn.lock | 24 +
36 files changed, 2441 insertions(+), 3168 deletions(-)
diff --git a/ambari-logsearch/ambari-logsearch-web/package.json b/ambari-logsearch/ambari-logsearch-web/package.json
index a87f7fc..f856e60 100644
--- a/ambari-logsearch/ambari-logsearch-web/package.json
+++ b/ambari-logsearch/ambari-logsearch-web/package.json
@@ -28,6 +28,7 @@
"angular-moment-timezone": "^0.2.1",
"angular-pipes": "^6.5.3",
"angular2-moment": "^1.4.0",
+ "angular2-take-until-destroy": "^2.0.1",
"bootstrap": "^3.3.7",
"core-js": "^2.4.1",
"d3": "^4.10.0",
@@ -74,6 +75,7 @@
"postcss-loader": "^1.3.3",
"postcss-url": "^5.1.2",
"protractor": "~5.1.0",
+ "randomatic": "^3.0.0",
"raw-loader": "^0.5.1",
"sass-loader": "^6.0.3",
"source-map-loader": "^0.2.0",
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/classes/models/audit-log-field.ts b/ambari-logsearch/ambari-logsearch-web/src/app/classes/models/audit-log-field.ts
deleted file mode 100644
index 40ad27e..0000000
--- a/ambari-logsearch/ambari-logsearch-web/src/app/classes/models/audit-log-field.ts
+++ /dev/null
@@ -1,225 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import {LogField} from '@app/classes/models/log-field';
-
-const columnsNamesMap = {
- access: {
- displayName: 'logs.accessType',
- isDisplayed: true
- },
- action: {
- displayName: 'logs.action'
- },
- agent: {
- displayName: 'logs.agent'
- },
- agentHost: {
- displayName: 'logs.agentHost'
- },
- authType: {
- displayName: 'logs.authType'
- },
- bundle_id: {
- displayName: 'logs.bundleId'
- },
- case_id: {
- displayName: 'logs.caseId'
- },
- cliIP: {
- displayName: 'logs.clientIp',
- isDisplayed: true
- },
- cliType: {
- displayName: 'logs.clientType'
- },
- cluster: {
- displayName: 'logs.cluster'
- },
- dst: {
- displayName: 'logs.dst'
- },
- evtTime: {
- displayName: 'logs.eventTime',
- isDisplayed: true
- },
- file: {
- displayName: 'logs.file'
- },
- host: {
- displayName: 'logs.host'
- },
- id: {
- displayName: 'logs.id'
- },
- ip: {
- displayName: 'logs.ip'
- },
- level: {
- displayName: 'logs.level'
- },
- log_message: {
- displayName: 'logs.message'
- },
- logType: {
- displayName: 'logs.logType'
- },
- logfile_line_number: {
- displayName: 'logs.logfileLineNumber'
- },
- logger_name: {
- displayName: 'logs.loggerName'
- },
- logtime: {
- displayName: 'logs.logTime'
- },
- path: {
- displayName: 'logs.path'
- },
- perm: {
- displayName: 'logs.perm'
- },
- policy: {
- displayName: 'logs.policy'
- },
- proxyUsers: {
- displayName: 'logs.proxyUsers'
- },
- reason: {
- displayName: 'logs.reason'
- },
- repo: {
- displayName: 'logs.repo',
- isDisplayed: true
- },
- repoType: {
- displayName: 'logs.repoType'
- },
- req_caller_id: {
- displayName: 'logs.reqCallerId'
- },
- reqContext: {
- displayName: 'logs.reqContext'
- },
- reqData: {
- displayName: 'logs.reqData'
- },
- req_self_id: {
- displayName: 'logs.reqSelfId'
- },
- resType: {
- displayName: 'logs.resType'
- },
- resource: {
- displayName: 'logs.resource',
- isDisplayed: true
- },
- result: {
- displayName: 'logs.result',
- isDisplayed: true
- },
- sess: {
- displayName: 'logs.session'
- },
- text: {
- displayName: 'logs.text'
- },
- type: {
- displayName: 'logs.type'
- },
- ugi: {
- displayName: 'logs.ugi'
- },
- reqUser: {
- displayName: 'logs.user',
- isDisplayed: true
- },
- ws_base_url: {
- displayName: 'logs.baseUrl'
- },
- ws_command: {
- displayName: 'logs.command'
- },
- ws_component: {
- displayName: 'logs.component'
- },
- ws_details: {
- displayName: 'logs.details'
- },
- ws_display_name: {
- displayName: 'logs.displayName'
- },
- ws_os: {
- displayName: 'logs.os'
- },
- ws_repo_id: {
- displayName: 'logs.repoId'
- },
- ws_repo_version: {
- displayName: 'logs.repoVersion'
- },
- ws_repositories: {
- displayName: 'logs.repositories'
- },
- ws_request_id: {
- displayName: 'logs.requestId'
- },
- ws_result_status: {
- displayName: 'logs.resultStatus'
- },
- ws_roles: {
- displayName: 'logs.roles'
- },
- ws_stack_version: {
- displayName: 'logs.stackVersion'
- },
- ws_stack: {
- displayName: 'logs.stack'
- },
- ws_status: {
- displayName: 'logs.status'
- },
- ws_task_id: {
- displayName: 'logs.taskId'
- },
- ws_version_note: {
- displayName: 'logs.versionNote'
- },
- ws_version_number: {
- displayName: 'logs.versionNumber'
- },
- tags: {
- isAvailable: false
- },
- tags_str: {
- isAvailable: false
- },
- seq_num: {
- isAvailable: false
- }
-};
-
-export class AuditLogField extends LogField {
- constructor(name: string) {
- super(name);
- const preset = columnsNamesMap[this.name];
- if (preset) {
- Object.assign(this, preset);
- }
- }
-}
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/classes/models/log-field.ts b/ambari-logsearch/ambari-logsearch-web/src/app/classes/models/log-field.ts
deleted file mode 100644
index 0e738ab..0000000
--- a/ambari-logsearch/ambari-logsearch-web/src/app/classes/models/log-field.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-export class LogField {
- constructor(name: string) {
- this.name = name;
- }
- name: string;
- displayName: string = this.name;
- isDisplayed: boolean = false;
- isAvailable: boolean = true;
-}
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/classes/models/service-log-field.ts b/ambari-logsearch/ambari-logsearch-web/src/app/classes/models/service-log-field.ts
deleted file mode 100644
index 0c1c23e..0000000
--- a/ambari-logsearch/ambari-logsearch-web/src/app/classes/models/service-log-field.ts
+++ /dev/null
@@ -1,107 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import {LogField} from '@app/classes/models/log-field';
-
-const columnsNamesMap = {
- log_message: {
- displayName: 'logs.message',
- isDisplayed: true
- },
- bundle_id: {
- displayName: 'logs.bundleId'
- },
- case_id: {
- displayName: 'logs.caseId'
- },
- cluster: {
- displayName: 'logs.cluster'
- },
- event_count: {
- displayName: 'logs.eventCount'
- },
- file: {
- displayName: 'logs.file'
- },
- host: {
- displayName: 'logs.host'
- },
- id: {
- displayName: 'logs.id'
- },
- ip: {
- displayName: 'logs.ip'
- },
- level: {
- displayName: 'logs.level',
- isDisplayed: true
- },
- line_number: {
- displayName: 'logs.lineNumber'
- },
- logtype: {
- displayName: 'logs.logType'
- },
- logfile_line_number: {
- displayName: 'logs.logfileLineNumber'
- },
- logger_name: {
- displayName: 'logs.loggerName'
- },
- logtime: {
- isDisplayed: true
- },
- method: {
- displayName: 'logs.method'
- },
- path: {
- displayName: 'logs.path'
- },
- rowtype: {
- displayName: 'logs.rowType'
- },
- thread_name: {
- displayName: 'logs.threadName'
- },
- type: {
- displayName: 'logs.type',
- isDisplayed: true
- },
- tags: {
- isAvailable: false
- },
- text: {
- isAvailable: false
- },
- message: {
- isAvailable: false
- },
- seq_num: {
- isAvailable: false
- }
-};
-
-export class ServiceLogField extends LogField {
- constructor(name: string) {
- super(name);
- const preset = columnsNamesMap[this.name];
- if (preset) {
- Object.assign(this, preset);
- }
- }
-}
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/classes/models/store.ts b/ambari-logsearch/ambari-logsearch-web/src/app/classes/models/store.ts
index eb87714..1dec44d 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/classes/models/store.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/classes/models/store.ts
@@ -27,9 +27,8 @@ import {BarGraph} from '@app/classes/models/bar-graph';
import {Graph} from '@app/classes/models/graph';
import {NodeItem} from '@app/classes/models/node-item';
import {UserConfig} from '@app/classes/models/user-config';
-import {AuditLogField} from '@app/classes/models/audit-log-field';
-import {ServiceLogField} from '@app/classes/models/service-log-field';
import {Tab} from '@app/classes/models/tab';
+import {LogField} from "@app/classes/object";
import {UtilsService} from '@app/services/utils.service';
const storeActions = {
@@ -60,8 +59,8 @@ export interface AppStore {
userConfigs: UserConfig[];
clusters: string[];
components: NodeItem[];
- serviceLogsFields: ServiceLogField[];
- auditLogsFields: AuditLogField[];
+ serviceLogsFields: LogField[];
+ auditLogsFields: LogField[];
tabs: Tab[];
}
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/classes/object.ts b/ambari-logsearch/ambari-logsearch-web/src/app/classes/object.ts
index 13cc4cc..2cb39b1 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/classes/object.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/classes/object.ts
@@ -25,3 +25,24 @@ export interface LogLevelObject {
label: string;
color: string;
}
+
+/**
+ * This is an interface for the service and audit log fields.
+ */
+export interface LogField {
+ group?: string; // eg.: HDFS, Ambari, etc this prop is only used in Audit logs
+ label: string;
+ name: string;
+ filterable: boolean; // it can be used in a filter query
+ visible: boolean; // visible by default in the log list
+}
+
+/**
+ * This is an interface for the service and audit log fields.
+ */
+export interface AuditFieldsDefinitionSet {
+ defaults: LogField[],
+ overrides: {
+ [key: string]: LogField[]
+ }
+}
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/action-menu/action-menu.component.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/action-menu/action-menu.component.spec.ts
index 3ec5429..629f5a8 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/action-menu/action-menu.component.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/action-menu/action-menu.component.spec.ts
@@ -19,7 +19,7 @@
import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
import {async, ComponentFixture, TestBed} from '@angular/core/testing';
import {FormsModule, ReactiveFormsModule} from '@angular/forms';
-import {TranslationModules} from '@app/test-config.spec';
+import {MockHttpRequestModules, TranslationModules} from '@app/test-config.spec';
import {StoreModule} from '@ngrx/store';
import {AuditLogsService, auditLogs} from '@app/services/storage/audit-logs.service';
import {ServiceLogsService, serviceLogs} from '@app/services/storage/service-logs.service';
@@ -37,7 +37,6 @@ import {HostsService, hosts} from '@app/services/storage/hosts.service';
import {ServiceLogsTruncatedService, serviceLogsTruncated} from '@app/services/storage/service-logs-truncated.service';
import {TabsService, tabs} from '@app/services/storage/tabs.service';
import {HistoryManagerService} from '@app/services/history-manager.service';
-import {HttpClientService} from '@app/services/http-client.service';
import {LogsContainerService} from '@app/services/logs-container.service';
import {UserSettingsService} from '@app/services/user-settings.service';
import {UtilsService} from '@app/services/utils.service';
@@ -51,14 +50,6 @@ describe('ActionMenuComponent', () => {
let fixture: ComponentFixture<ActionMenuComponent>;
beforeEach(async(() => {
- const httpClient = {
- get: () => {
- return {
- subscribe: () => {
- }
- }
- }
- };
TestBed.configureTestingModule({
imports: [
FormsModule,
@@ -86,10 +77,7 @@ describe('ActionMenuComponent', () => {
TimerSecondsPipe
],
providers: [
- {
- provide: HttpClientService,
- useValue: httpClient
- },
+ ...MockHttpRequestModules,
HistoryManagerService,
LogsContainerService,
UserSettingsService,
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/audit-logs-entries/audit-logs-entries.component.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/audit-logs-entries/audit-logs-entries.component.spec.ts
index 51aaaa1..1f1eedd 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/audit-logs-entries/audit-logs-entries.component.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/audit-logs-entries/audit-logs-entries.component.spec.ts
@@ -17,7 +17,7 @@
import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
import {async, ComponentFixture, TestBed} from '@angular/core/testing';
-import {TranslationModules} from '@app/test-config.spec';
+import {MockHttpRequestModules, TranslationModules} from '@app/test-config.spec';
import {StoreModule} from '@ngrx/store';
import {AuditLogsService, auditLogs} from '@app/services/storage/audit-logs.service';
import {ServiceLogsService, serviceLogs} from '@app/services/storage/service-logs.service';
@@ -36,7 +36,6 @@ import {ServiceLogsTruncatedService, serviceLogsTruncated} from '@app/services/s
import {TabsService, tabs} from '@app/services/storage/tabs.service';
import {TabsComponent} from '@app/components/tabs/tabs.component';
import {LogsContainerService} from '@app/services/logs-container.service';
-import {HttpClientService} from '@app/services/http-client.service';
import {UtilsService} from '@app/services/utils.service';
import {AuditLogsEntriesComponent} from './audit-logs-entries.component';
@@ -46,14 +45,6 @@ describe('AuditLogsEntriesComponent', () => {
let fixture: ComponentFixture<AuditLogsEntriesComponent>;
beforeEach(async(() => {
- const httpClient = {
- get: () => {
- return {
- subscribe: () => {
- }
- }
- }
- };
TestBed.configureTestingModule({
declarations: [
AuditLogsEntriesComponent,
@@ -78,11 +69,8 @@ describe('AuditLogsEntriesComponent', () => {
}),
],
providers: [
+ ...MockHttpRequestModules,
LogsContainerService,
- {
- provide: HttpClientService,
- useValue: httpClient
- },
UtilsService,
AuditLogsService,
ServiceLogsService,
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/audit-logs-table/audit-logs-table.component.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/audit-logs-table/audit-logs-table.component.spec.ts
index 1a2f4de..926c0b6 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/audit-logs-table/audit-logs-table.component.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/audit-logs-table/audit-logs-table.component.spec.ts
@@ -22,7 +22,7 @@ import {FormsModule, ReactiveFormsModule} from '@angular/forms';
import {StoreModule} from '@ngrx/store';
import {MomentModule} from 'angular2-moment';
import {MomentTimezoneModule} from 'angular-moment-timezone';
-import {TranslationModules} from '@app/test-config.spec';
+import {MockHttpRequestModules, TranslationModules} from '@app/test-config.spec';
import {AuditLogsService, auditLogs} from '@app/services/storage/audit-logs.service';
import {ServiceLogsService, serviceLogs} from '@app/services/storage/service-logs.service';
import {AuditLogsFieldsService, auditLogsFields} from '@app/services/storage/audit-logs-fields.service';
@@ -40,7 +40,6 @@ import {ComponentsService, components} from '@app/services/storage/components.se
import {HostsService, hosts} from '@app/services/storage/hosts.service';
import {LogsContainerService} from '@app/services/logs-container.service';
import {UtilsService} from '@app/services/utils.service';
-import {HttpClientService} from '@app/services/http-client.service';
import {PaginationComponent} from '@app/components/pagination/pagination.component';
import {DropdownListComponent} from '@app/components/dropdown-list/dropdown-list.component';
@@ -49,14 +48,6 @@ import {AuditLogsTableComponent} from './audit-logs-table.component';
describe('AuditLogsTableComponent', () => {
let component: AuditLogsTableComponent;
let fixture: ComponentFixture<AuditLogsTableComponent>;
- const httpClient = {
- get: () => {
- return {
- subscribe: () => {
- }
- };
- }
- };
beforeEach(async(() => {
TestBed.configureTestingModule({
@@ -88,12 +79,9 @@ describe('AuditLogsTableComponent', () => {
})
],
providers: [
+ ...MockHttpRequestModules,
LogsContainerService,
UtilsService,
- {
- provide: HttpClientService,
- useValue: httpClient
- },
AuditLogsService,
ServiceLogsService,
AuditLogsFieldsService,
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/context-menu/context-menu.component.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/context-menu/context-menu.component.spec.ts
index 1881f57..f236426 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/context-menu/context-menu.component.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/context-menu/context-menu.component.spec.ts
@@ -20,7 +20,7 @@ import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
import {async, ComponentFixture, TestBed} from '@angular/core/testing';
import {FormsModule} from '@angular/forms';
import {StoreModule} from '@ngrx/store';
-import {TranslationModules} from '@app/test-config.spec';
+import {MockHttpRequestModules, TranslationModules} from '@app/test-config.spec';
import {HostsService, hosts} from '@app/services/storage/hosts.service';
import {AuditLogsService, auditLogs} from '@app/services/storage/audit-logs.service';
import {ServiceLogsService, serviceLogs} from '@app/services/storage/service-logs.service';
@@ -38,7 +38,6 @@ import {ServiceLogsTruncatedService, serviceLogsTruncated} from '@app/services/s
import {TabsService, tabs} from '@app/services/storage/tabs.service';
import {ComponentGeneratorService} from '@app/services/component-generator.service';
import {LogsContainerService} from '@app/services/logs-container.service';
-import {HttpClientService} from '@app/services/http-client.service';
import {AuthService} from '@app/services/auth.service';
import {UtilsService} from '@app/services/utils.service';
import {DropdownListComponent} from '@app/components/dropdown-list/dropdown-list.component';
@@ -84,12 +83,9 @@ describe('ContextMenuComponent', () => {
FormsModule
],
providers: [
+ ...MockHttpRequestModules,
ComponentGeneratorService,
LogsContainerService,
- {
- provide: HttpClientService,
- useValue: httpClient
- },
HostsService,
AuditLogsService,
ServiceLogsService,
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-list/dropdown-list.component.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-list/dropdown-list.component.spec.ts
index 6d88010..9b8f515 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-list/dropdown-list.component.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-list/dropdown-list.component.spec.ts
@@ -19,7 +19,7 @@
import {async, ComponentFixture, TestBed} from '@angular/core/testing';
import {FormsModule} from '@angular/forms';
import {StoreModule} from '@ngrx/store';
-import {TranslationModules} from '@app/test-config.spec';
+import {MockHttpRequestModules, TranslationModules} from '@app/test-config.spec';
import {HostsService, hosts} from '@app/services/storage/hosts.service';
import {AuditLogsService, auditLogs} from '@app/services/storage/audit-logs.service';
import {ServiceLogsService, serviceLogs} from '@app/services/storage/service-logs.service';
@@ -37,7 +37,6 @@ import {ServiceLogsTruncatedService, serviceLogsTruncated} from '@app/services/s
import {TabsService, tabs} from '@app/services/storage/tabs.service';
import {ComponentGeneratorService} from '@app/services/component-generator.service';
import {LogsContainerService} from '@app/services/logs-container.service';
-import {HttpClientService} from '@app/services/http-client.service';
import {AuthService} from '@app/services/auth.service';
import {UtilsService} from '@app/services/utils.service';
@@ -78,12 +77,9 @@ describe('DropdownListComponent', () => {
FormsModule
],
providers: [
+ ...MockHttpRequestModules,
ComponentGeneratorService,
LogsContainerService,
- {
- provide: HttpClientService,
- useValue: httpClient
- },
HostsService,
AuditLogsService,
ServiceLogsService,
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-list/dropdown-list.component.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-list/dropdown-list.component.ts
index 5d0ad4a..78cd39c 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-list/dropdown-list.component.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-list/dropdown-list.component.ts
@@ -18,7 +18,7 @@
import {
Component, OnChanges, AfterViewChecked, SimpleChanges, Input, Output, EventEmitter, ViewChildren, ViewContainerRef,
- QueryList
+ QueryList, ChangeDetectorRef
} from '@angular/core';
import {ListItem} from '@app/classes/list-item';
import {ComponentGeneratorService} from '@app/services/component-generator.service';
@@ -30,7 +30,7 @@ import {ComponentGeneratorService} from '@app/services/component-generator.servi
})
export class DropdownListComponent implements OnChanges, AfterViewChecked {
- constructor(private componentGenerator: ComponentGeneratorService) {
+ constructor(private componentGenerator: ComponentGeneratorService, private changeDetector: ChangeDetectorRef) {
}
private shouldRenderAdditionalComponents: boolean = false;
@@ -71,6 +71,7 @@ export class DropdownListComponent implements OnChanges, AfterViewChecked {
if (this.shouldRenderAdditionalComponents && setter && containers) {
containers.forEach((container, index) => this.componentGenerator[setter](this.items[index].value, container));
this.shouldRenderAdditionalComponents = false;
+ this.changeDetector.detectChanges();
}
}
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/filter-dropdown/filter-dropdown.component.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/filter-dropdown/filter-dropdown.component.spec.ts
index e3105c1..814967e 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/filter-dropdown/filter-dropdown.component.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/filter-dropdown/filter-dropdown.component.spec.ts
@@ -17,7 +17,7 @@
import {NO_ERRORS_SCHEMA} from '@angular/core';
import {async, ComponentFixture, TestBed} from '@angular/core/testing';
-import {TranslationModules} from '@app/test-config.spec';
+import {MockHttpRequestModules, TranslationModules} from '@app/test-config.spec';
import {StoreModule} from '@ngrx/store';
import {AppSettingsService, appSettings} from '@app/services/storage/app-settings.service';
import {AppStateService, appState} from '@app/services/storage/app-state.service';
@@ -36,7 +36,6 @@ import {ComponentsService, components} from '@app/services/storage/components.se
import {HostsService, hosts} from '@app/services/storage/hosts.service';
import {UtilsService} from '@app/services/utils.service';
import {LogsContainerService} from '@app/services/logs-container.service';
-import {HttpClientService} from '@app/services/http-client.service';
import {AuthService} from '@app/services/auth.service';
import {FilterDropdownComponent} from './filter-dropdown.component';
@@ -91,6 +90,7 @@ describe('FilterDropdownComponent', () => {
...TranslationModules
],
providers: [
+ ...MockHttpRequestModules,
AppSettingsService,
AppStateService,
AuditLogsService,
@@ -110,10 +110,6 @@ describe('FilterDropdownComponent', () => {
},
UtilsService,
LogsContainerService,
- {
- provide: HttpClientService,
- useValue: httpClient
- },
AuthService
],
schemas: [NO_ERRORS_SCHEMA]
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.spec.ts
index 29cac93..598f3f9 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.spec.ts
@@ -19,7 +19,7 @@
import {NO_ERRORS_SCHEMA} from '@angular/core';
import {async, ComponentFixture, TestBed} from '@angular/core/testing';
import {FormGroup, FormControl} from '@angular/forms';
-import {TranslationModules} from '@app/test-config.spec';
+import {MockHttpRequestModules, TranslationModules} from '@app/test-config.spec';
import {StoreModule} from '@ngrx/store';
import {AppSettingsService, appSettings} from '@app/services/storage/app-settings.service';
import {ClustersService, clusters} from '@app/services/storage/clusters.service';
@@ -36,7 +36,6 @@ import {
import {AppStateService, appState} from '@app/services/storage/app-state.service';
import {ServiceLogsTruncatedService, serviceLogsTruncated} from '@app/services/storage/service-logs-truncated.service';
import {TabsService, tabs} from '@app/services/storage/tabs.service';
-import {HttpClientService} from '@app/services/http-client.service';
import {UtilsService} from '@app/services/utils.service';
import {LogsContainerService} from '@app/services/logs-container.service';
@@ -78,6 +77,7 @@ describe('FiltersPanelComponent', () => {
...TranslationModules
],
providers: [
+ ...MockHttpRequestModules,
AppSettingsService,
ClustersService,
ComponentsService,
@@ -92,10 +92,6 @@ describe('FiltersPanelComponent', () => {
ServiceLogsTruncatedService,
TabsService,
LogsContainerService,
- {
- provide: HttpClientService,
- useValue: httpClient
- },
UtilsService
],
schemas: [NO_ERRORS_SCHEMA]
@@ -109,7 +105,6 @@ describe('FiltersPanelComponent', () => {
component.filtersForm = new FormGroup({
control: new FormControl()
});
- component.logsType = 'auditLogs';
fixture.detectChanges();
});
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.ts
index b233847..7b156ba 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.ts
@@ -16,50 +16,66 @@
* limitations under the License.
*/
-import {Component, OnChanges, SimpleChanges, Input, ViewContainerRef} from '@angular/core';
+import {Component, OnDestroy, Input, ViewContainerRef, OnInit} from '@angular/core';
import {FormGroup} from '@angular/forms';
import {Observable} from 'rxjs/Observable';
import {Subject} from 'rxjs/Subject';
import 'rxjs/add/observable/from';
+import {TakeUntilDestroy} from "angular2-take-until-destroy";
import {FilterCondition, SearchBoxParameter, SearchBoxParameterTriggered} from '@app/classes/filtering';
import {ListItem} from '@app/classes/list-item';
import {HomogeneousObject} from '@app/classes/object';
import {LogsType} from '@app/classes/string';
import {LogsContainerService} from '@app/services/logs-container.service';
+import {UtilsService} from "@app/services/utils.service";
+import {AppStateService} from "@app/services/storage/app-state.service";
+import {Subscription} from "rxjs/Subscription";
@Component({
selector: 'filters-panel',
templateUrl: './filters-panel.component.html',
styleUrls: ['./filters-panel.component.less']
})
-export class FiltersPanelComponent implements OnChanges {
+@TakeUntilDestroy
+export class FiltersPanelComponent implements OnDestroy, OnInit {
+ componentDestroy;
+ constructor(private logsContainer: LogsContainerService, public viewContainerRef: ViewContainerRef,
+ private utils: UtilsService, private appState: AppStateService) {
+ }
- constructor(private logsContainer: LogsContainerService, public viewContainerRef: ViewContainerRef) {
+ ngOnInit() {
+ this.appState.getParameter('activeLogsType').takeUntil(this.componentDestroy()).subscribe(this.onLogsTypeChange);
}
- ngOnChanges(changes: SimpleChanges): void {
- if (changes.hasOwnProperty('logsType')) {
- let result;
- switch (changes.logsType.currentValue) {
- case 'auditLogs':
- result = this.logsContainer.auditLogsColumns;
- break;
- case 'serviceLogs':
- result = this.logsContainer.serviceLogsColumns;
- break;
- default:
- result = Observable.from([]);
- break;
- }
- this.searchBoxItems = result;
+ ngOnDestroy() {}
+
+ private onLogsTypeChange = (currentLogsType: LogsType): void => {
+ const logsType = this.logsContainer.logsTypeMap[currentLogsType];
+ const fieldsModel: any = logsType && logsType.fieldsModel;
+ let subType:string;
+ let fields:Observable<any>;
+ switch (currentLogsType) {
+ case 'auditLogs':
+ fields = fieldsModel.getParameter(subType ? 'overrides' : 'defaults');
+ if (subType) {
+ fields = fields.map(items => items[subType]);
+ }
+ break;
+ case 'serviceLogs':
+ fields = fieldsModel.getAll();
+ break;
+ default:
+ fields = Observable.from([]);
+ break;
}
- }
+ this.searchBoxItems = fields.map(items => items.filter(field => field.filterable))
+ .map(this.utils.logFieldToListItemMapper);
+ };
@Input()
filtersForm: FormGroup;
- @Input()
- logsType: LogsType;
+ private subscriptions$: Subscription[] = [];
searchBoxItems: Observable<ListItem[]>;
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/log-context/log-context.component.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/log-context/log-context.component.spec.ts
index 6e6a70e..50205d5 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/log-context/log-context.component.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/log-context/log-context.component.spec.ts
@@ -33,10 +33,9 @@ import {ComponentsService, components} from '@app/services/storage/components.se
import {HostsService, hosts} from '@app/services/storage/hosts.service';
import {ServiceLogsTruncatedService, serviceLogsTruncated} from '@app/services/storage/service-logs-truncated.service';
import {TabsService, tabs} from '@app/services/storage/tabs.service';
-import {TranslationModules} from '@app/test-config.spec';
+import {MockHttpRequestModules, TranslationModules} from '@app/test-config.spec';
import {ModalComponent} from '@app/components/modal/modal.component';
import {LogsContainerService} from '@app/services/logs-container.service';
-import {HttpClientService} from '@app/services/http-client.service';
import {UtilsService} from '@app/services/utils.service';
import {LogContextComponent} from './log-context.component';
@@ -46,14 +45,6 @@ describe('LogContextComponent', () => {
let fixture: ComponentFixture<LogContextComponent>;
beforeEach(async(() => {
- const httpClient = {
- get: () => {
- return {
- subscribe: () => {
- }
- }
- }
- };
TestBed.configureTestingModule({
declarations: [
LogContextComponent,
@@ -78,6 +69,7 @@ describe('LogContextComponent', () => {
...TranslationModules
],
providers: [
+ ...MockHttpRequestModules,
AuditLogsService,
ServiceLogsService,
AuditLogsFieldsService,
@@ -92,10 +84,6 @@ describe('LogContextComponent', () => {
ServiceLogsTruncatedService,
TabsService,
LogsContainerService,
- {
- provide: HttpClientService,
- useValue: httpClient
- },
UtilsService
],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/log-index-filter/log-index-filter.component.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/log-index-filter/log-index-filter.component.spec.ts
index a236686..2bfb172 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/log-index-filter/log-index-filter.component.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/log-index-filter/log-index-filter.component.spec.ts
@@ -19,7 +19,7 @@
import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
import {async, ComponentFixture, TestBed} from '@angular/core/testing';
import {FormsModule} from '@angular/forms';
-import {TranslationModules} from '@app/test-config.spec';
+import {MockHttpRequestModules, TranslationModules} from '@app/test-config.spec';
import {StoreModule} from '@ngrx/store';
import {AuditLogsService, auditLogs} from '@app/services/storage/audit-logs.service';
import {ServiceLogsService, serviceLogs} from '@app/services/storage/service-logs.service';
@@ -37,7 +37,6 @@ import {HostsService, hosts} from '@app/services/storage/hosts.service';
import {ServiceLogsTruncatedService, serviceLogsTruncated} from '@app/services/storage/service-logs-truncated.service';
import {TabsService, tabs} from '@app/services/storage/tabs.service';
import {ComponentGeneratorService} from '@app/services/component-generator.service';
-import {HttpClientService} from '@app/services/http-client.service';
import {LogsContainerService} from '@app/services/logs-container.service';
import {UserSettingsService} from '@app/services/user-settings.service';
import {UtilsService} from '@app/services/utils.service';
@@ -51,14 +50,6 @@ describe('LogIndexFilterComponent', () => {
let fixture: ComponentFixture<LogIndexFilterComponent>;
beforeEach(async(() => {
- const httpClient = {
- get: () => {
- return {
- subscribe: () => {
- }
- }
- }
- };
TestBed.configureTestingModule({
imports: [
FormsModule,
@@ -85,11 +76,8 @@ describe('LogIndexFilterComponent', () => {
DropdownListComponent
],
providers: [
+ ...MockHttpRequestModules,
ComponentGeneratorService,
- {
- provide: HttpClientService,
- useValue: httpClient
- },
LogsContainerService,
UserSettingsService,
UtilsService,
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-container/logs-container.component.html b/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-container/logs-container.component.html
index 412fd2c..0b9637f 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-container/logs-container.component.html
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-container/logs-container.component.html
@@ -25,7 +25,7 @@
</div>
</div>
<div #container [ngClass]="{'container-fluid': true, 'fixed-filterbar': isFilterPanelFixedPostioned}">
- <filters-panel class="row" [filtersForm]="filtersForm" [logsType]="logsType" #filtersPanel></filters-panel>
+ <filters-panel class="row" [filtersForm]="filtersForm" #filtersPanel></filters-panel>
<div class="row events-count">
<div *ngIf="autoRefreshRemainingSeconds" class="col-md-12">
<div class="auto-refresh-message pull-right">
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-container/logs-container.component.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-container/logs-container.component.spec.ts
index 8a3d985..7764494 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-container/logs-container.component.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-container/logs-container.component.spec.ts
@@ -19,7 +19,7 @@
import {async, ComponentFixture, TestBed} from '@angular/core/testing';
import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
import {StoreModule} from '@ngrx/store';
-import {TranslationModules} from '@app/test-config.spec';
+import {MockHttpRequestModules, TranslationModules} from '@app/test-config.spec';
import {AppSettingsService, appSettings} from '@app/services/storage/app-settings.service';
import {AppStateService, appState} from '@app/services/storage/app-state.service';
import {ClustersService, clusters} from '@app/services/storage/clusters.service';
@@ -35,7 +35,6 @@ import {
import {HostsService, hosts} from '@app/services/storage/hosts.service';
import {ServiceLogsTruncatedService, serviceLogsTruncated} from '@app/services/storage/service-logs-truncated.service';
import {TabsService, tabs} from '@app/services/storage/tabs.service';
-import {HttpClientService} from '@app/services/http-client.service';
import {UtilsService} from '@app/services/utils.service';
import {LogsContainerService} from '@app/services/logs-container.service';
import {TabsComponent} from '@app/components/tabs/tabs.component';
@@ -43,14 +42,6 @@ import {TabsComponent} from '@app/components/tabs/tabs.component';
import {LogsContainerComponent} from './logs-container.component';
describe('LogsContainerComponent', () => {
- const httpClient = {
- get: () => {
- return {
- subscribe: () => {
- }
- };
- }
- };
let component: LogsContainerComponent;
let fixture: ComponentFixture<LogsContainerComponent>;
@@ -79,10 +70,7 @@ describe('LogsContainerComponent', () => {
...TranslationModules
],
providers: [
- {
- provide: HttpClientService,
- useValue: httpClient
- },
+ ...MockHttpRequestModules,
AppSettingsService,
AppStateService,
ClustersService,
@@ -107,7 +95,6 @@ describe('LogsContainerComponent', () => {
beforeEach(() => {
fixture = TestBed.createComponent(LogsContainerComponent);
component = fixture.componentInstance;
- component['logsType'] = 'serviceLogs';
fixture.detectChanges();
});
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/service-logs-table/service-logs-table.component.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/service-logs-table/service-logs-table.component.spec.ts
index e2afbc8..6206033 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/service-logs-table/service-logs-table.component.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/service-logs-table/service-logs-table.component.spec.ts
@@ -23,7 +23,7 @@ import {StoreModule} from '@ngrx/store';
import {MomentModule} from 'angular2-moment';
import {MomentTimezoneModule} from 'angular-moment-timezone';
import {TooltipModule} from 'ngx-bootstrap';
-import {TranslationModules} from '@app/test-config.spec';
+import {MockHttpRequestModules, TranslationModules} from '@app/test-config.spec';
import {AuditLogsService, auditLogs} from '@app/services/storage/audit-logs.service';
import {ServiceLogsService, serviceLogs} from '@app/services/storage/service-logs.service';
import {AuditLogsFieldsService, auditLogsFields} from '@app/services/storage/audit-logs-fields.service';
@@ -41,32 +41,25 @@ import {ComponentsService, components} from '@app/services/storage/components.se
import {HostsService, hosts} from '@app/services/storage/hosts.service';
import {LogsContainerService} from '@app/services/logs-container.service';
import {UtilsService} from '@app/services/utils.service';
-import {HttpClientService} from '@app/services/http-client.service';
import {ComponentGeneratorService} from '@app/services/component-generator.service';
import {AuthService} from '@app/services/auth.service';
import {PaginationComponent} from '@app/components/pagination/pagination.component';
import {DropdownListComponent} from '@app/components/dropdown-list/dropdown-list.component';
import {ServiceLogsTableComponent, ListLayout} from './service-logs-table.component';
+import {ComponentLabelPipe} from "@app/pipes/component-label";
describe('ServiceLogsTableComponent', () => {
let component: ServiceLogsTableComponent;
let fixture: ComponentFixture<ServiceLogsTableComponent>;
- const httpClient = {
- get: () => {
- return {
- subscribe: () => {
- }
- };
- }
- };
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [
ServiceLogsTableComponent,
PaginationComponent,
- DropdownListComponent
+ DropdownListComponent,
+ ComponentLabelPipe
],
imports: [
FormsModule,
@@ -92,12 +85,9 @@ describe('ServiceLogsTableComponent', () => {
TooltipModule.forRoot()
],
providers: [
+ ...MockHttpRequestModules,
LogsContainerService,
UtilsService,
- {
- provide: HttpClientService,
- useValue: httpClient
- },
AuditLogsService,
ServiceLogsService,
AuditLogsFieldsService,
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/time-range-picker/time-range-picker.component.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/time-range-picker/time-range-picker.component.spec.ts
index b41760f..33310c5 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/time-range-picker/time-range-picker.component.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/time-range-picker/time-range-picker.component.spec.ts
@@ -19,7 +19,7 @@
import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
import {async, ComponentFixture, TestBed} from '@angular/core/testing';
import {StoreModule} from '@ngrx/store';
-import {TranslationModules} from '@app/test-config.spec';
+import {MockHttpRequestModules, TranslationModules} from '@app/test-config.spec';
import {AppSettingsService, appSettings} from '@app/services/storage/app-settings.service';
import {AppStateService, appState} from '@app/services/storage/app-state.service';
import {ClustersService, clusters} from '@app/services/storage/clusters.service';
@@ -46,14 +46,6 @@ describe('TimeRangePickerComponent', () => {
let fixture: ComponentFixture<TimeRangePickerComponent>;
beforeEach(async(() => {
- const httpClient = {
- get: () => {
- return {
- subscribe: () => {
- }
- }
- }
- };
TestBed.configureTestingModule({
declarations: [TimeRangePickerComponent],
imports: [
@@ -75,10 +67,7 @@ describe('TimeRangePickerComponent', () => {
...TranslationModules
],
providers: [
- {
- provide: HttpClientService,
- useValue: httpClient
- },
+ ...MockHttpRequestModules,
LogsContainerService,
UtilsService,
AppSettingsService,
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/timezone-picker/timezone-picker.component.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/timezone-picker/timezone-picker.component.spec.ts
index b522562..6f7e704 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/timezone-picker/timezone-picker.component.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/timezone-picker/timezone-picker.component.spec.ts
@@ -17,7 +17,6 @@
*/
import {async, ComponentFixture, TestBed} from '@angular/core/testing';
-import {TranslationModules} from '@app/test-config.spec';
import {StoreModule} from '@ngrx/store';
import {AppSettingsService, appSettings} from '@app/services/storage/app-settings.service';
import {AppStateService, appState} from '@app/services/storage/app-state.service';
@@ -42,6 +41,8 @@ import {AuthService} from '@app/services/auth.service';
import {TimeZoneAbbrPipe} from '@app/pipes/timezone-abbr.pipe';
import {ModalComponent} from '@app/components/modal/modal.component';
+import {MockHttpRequestModules, TranslationModules} from '@app/test-config.spec';
+
import {TimeZonePickerComponent} from './timezone-picker.component';
describe('TimeZonePickerComponent', () => {
@@ -49,14 +50,6 @@ describe('TimeZonePickerComponent', () => {
let fixture: ComponentFixture<TimeZonePickerComponent>;
beforeEach(async(() => {
- const httpClient = {
- get: () => {
- return {
- subscribe: () => {
- }
- }
- }
- };
TestBed.configureTestingModule({
declarations: [
TimeZonePickerComponent,
@@ -82,6 +75,7 @@ describe('TimeZonePickerComponent', () => {
...TranslationModules
],
providers: [
+ ...MockHttpRequestModules,
AppSettingsService,
AppStateService,
ClustersService,
@@ -95,10 +89,6 @@ describe('TimeZonePickerComponent', () => {
ServiceLogsHistogramDataService,
ServiceLogsTruncatedService,
TabsService,
- {
- provide: HttpClientService,
- useValue: httpClient
- },
LogsContainerService,
AuthService,
UserSettingsService,
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/top-menu/top-menu.component.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/top-menu/top-menu.component.spec.ts
index caeb197..35a0243 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/top-menu/top-menu.component.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/top-menu/top-menu.component.spec.ts
@@ -20,7 +20,6 @@ import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
import {async, ComponentFixture, TestBed} from '@angular/core/testing';
import {ReactiveFormsModule} from '@angular/forms';
import {StoreModule} from '@ngrx/store';
-import {TranslationModules} from '@app/test-config.spec';
import {AuditLogsService, auditLogs} from '@app/services/storage/audit-logs.service';
import {ServiceLogsService, serviceLogs} from '@app/services/storage/service-logs.service';
import {AuditLogsFieldsService, auditLogsFields} from '@app/services/storage/audit-logs-fields.service';
@@ -37,23 +36,16 @@ import {ClustersService, clusters} from '@app/services/storage/clusters.service'
import {ComponentsService, components} from '@app/services/storage/components.service';
import {HostsService, hosts} from '@app/services/storage/hosts.service';
import {LogsContainerService} from '@app/services/logs-container.service';
-import {HttpClientService} from '@app/services/http-client.service';
import {AuthService} from '@app/services/auth.service';
import {UtilsService} from '@app/services/utils.service';
+import {MockHttpRequestModules, TranslationModules} from '@app/test-config.spec';
+
import {TopMenuComponent} from './top-menu.component';
describe('TopMenuComponent', () => {
let component: TopMenuComponent;
let fixture: ComponentFixture<TopMenuComponent>;
- const httpClient = {
- get: () => {
- return {
- subscribe: () => {
- }
- };
- }
- };
beforeEach(async(() => {
TestBed.configureTestingModule({
@@ -78,11 +70,8 @@ describe('TopMenuComponent', () => {
],
declarations: [TopMenuComponent],
providers: [
+ ...MockHttpRequestModules,
LogsContainerService,
- {
- provide: HttpClientService,
- useValue: httpClient
- },
AuthService,
UtilsService,
AuditLogsService,
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/mock-data-by-url.ts b/ambari-logsearch/ambari-logsearch-web/src/app/mock-data-by-url.ts
new file mode 100644
index 0000000..e06d568
--- /dev/null
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/mock-data-by-url.ts
@@ -0,0 +1,2177 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import * as moment from 'moment';
+import * as randomize from 'randomatic';
+import {Moment} from "moment";
+
+const currentTime: Moment = moment();
+
+const clusters: string[] = ['cl0', 'cl1', 'cl2'];
+
+const hosts: string[] = ["c64001", "c64002", "c64003"];
+
+const services: string[] = ['hdfs', 'ambari'];
+
+const users: string[] = ['hdfs', 'admin', 'user'];
+
+const components = [
+ "ambari_agent",
+ "hdfs_secondarynamenode",
+ "infra_solr",
+ "logsearch_app",
+ "logsearch_feeder"
+];
+
+const levels = [
+ "INFO",
+ "WARN",
+ "ERROR",
+ "FATAL",
+ "DEBUG"
+];
+
+function ucFirst(str) {
+ return str.charAt(0).toUpperCase() + str.slice(1);
+}
+
+function getRandomInt(max) {
+ return Math.floor(Math.random() * Math.floor(max));
+}
+
+function getRandomElement(list: Array<any>) {
+ return list[getRandomInt(list.length)];
+}
+
+function generatePath(c: number = 3, addComponent: boolean | string = true, addService: boolean | string = false, folderNameMaxLength: number = 12): string {
+ let path = "/var/log";
+ if (addService) {
+ path += ("/" + (addService === true ? getRandomElement(services) : addService));
+ c -= 1;
+ }
+ if (addComponent) {
+ path += ("/" + (addComponent === true ? getRandomElement(components) : addComponent));
+ c -= 1;
+ }
+ for (let i=0; i<c; i+=1) {
+ path += ("/" + randomize('Aa0?', getRandomInt(folderNameMaxLength), {chars: '-_'}));
+ }
+ return path;
+}
+
+function generateServiceLog(defaults?: {[key:string]: any}) {
+ const component = (defaults && defaults.type) || getRandomElement(components);
+ const host = (defaults && defaults.host) || getRandomElement(hosts);
+ return Object.assign({
+ "id": randomize('a0', 32, {chars: '-'}),
+ "bundle_id": null,
+ "case_id": null,
+ "cluster": getRandomElement(clusters),
+ "seq_num": randomize('0', 5),
+ "log_message": randomize('a0?a0', getRandomInt(1000), {chars: " \n"}),
+ "logfile_line_number": randomize('0', 4),
+ "event_dur_ms": null,
+ "file": randomize('a0?a0', 16, {chars: '-_'}) + ".java",
+ "type": component,
+ "event_count": getRandomInt(1000),
+ "event_md5": randomize('a0', 32),
+ "message_md5": randomize('a0', 32),
+ "_ttl_": `-${getRandomInt(30)}DAYS`,
+ "_expire_at_": 1518188622956,
+ "_version_": randomize('0', 20),
+ "_router_field_": null,
+ "level": getRandomElement(levels),
+ "line_number": getRandomInt(999),
+ "logtime": moment().subtract(getRandomInt(14), 'days').valueOf(),
+ "ip": `${getRandomInt(255)}.${getRandomInt(255)}.${getRandomInt(255)}.${getRandomInt(255)}`,
+ "path": generatePath(3, component) + ".json",
+ "host": host + ".ambari.apache.org",
+ "group": host + ".ambari.apache.org"
+ }, defaults || {});
+}
+
+function generateAuditLog(defaults?: {[key: string]: any}) {
+ const component:string = (defaults && defaults.component) || getRandomElement(components); // meta default
+ const service:string = (defaults && defaults.repo) || getRandomElement(services);
+ const time = moment().subtract(getRandomInt(14), 'days');
+ return Object.assign({
+ policy: 'policy',
+ reason: randomize('aA', {
+ length: getRandomInt(50),
+ chars: ' .:'
+ }),
+ result: 0,
+ text: randomize('aA', {
+ length: getRandomInt(50),
+ chars: ' .:'
+ }),
+ tags: [component],
+ resource: '/' + component,
+ sess: '0',
+ access: '0',
+ logType: ucFirst(service) + 'Audit',
+ tags_str: component,
+ resType: 'agent',
+ reqUser: 'admin',
+ reqData: 'data',
+ repoType: 1,
+ repo: service,
+ proxyUsers: ['admin'],
+ evtTime: time.valueOf(),
+ enforcer: service + '-acl',
+ reqContext: service,
+ cliType: getRandomElement(['GET', 'POST']),
+ cliIP: '192.168.0.1',
+ agent: 'agent',
+ agentHost: 'localhost',
+ action: 'SERVICE_CHECK',
+ type: service + '-audit',
+ _version_: 2,
+ id: 'id0',
+ file: component + '.log',
+ seq_num: 3,
+ bundle_id: 'b0',
+ case_id: 'c0',
+ log_message: `User(${getRandomElement(users)}), Operation(SERVICE_CHECK)`,
+ logfile_line_number: 4,
+ message_md5: randomize('a0',20),
+ cluster: getRandomElement(clusters),
+ event_count: getRandomInt(100),
+ event_md5: randomize('0',20),
+ event_dur_ms: getRandomInt(900),
+ _ttl_: '+7DAYS',
+ _expire_at_: time.format(),
+ _router_field_: getRandomInt(20)
+ }, defaults || {});
+}
+
+export const mockDataByUrl = {
+ "login": {},
+ "logout": {},
+
+ "api/v1/audit/logs": function (query) {
+ let list = [];
+ let params = query.rawParams.split('&').reduce((currentObj, param) => {
+ let [key, value] = param.split('=');
+ switch (key) {
+ case 'page':
+ case 'pageSize':
+ case 'startIndex':
+ value = parseInt(value);
+ break;
+ case 'from':
+ case 'to':
+ value = decodeURIComponent(value);
+ value = moment(value);
+ break;
+ case 'userList':
+ value = decodeURIComponent(value).split(',');
+ break;
+ }
+ currentObj[key] = value;
+ return currentObj;
+ }, {});
+ console.info(params);
+ const pageSize = params.pageSize || 50;
+ const intervalSteps = params.to.diff(params.from) / pageSize;
+ const startTime = params.from.valueOf();
+ for (let i = 0; i < pageSize; i += 1) {
+ let defaults: {[key:string]: any} = {logtime: startTime + (i * intervalSteps)};
+ list.push(generateAuditLog(defaults));
+ }
+ return {
+ "startIndex": params.startIndex,
+ "pageSize": pageSize,
+ "totalCount": 10 * pageSize,
+ "resultSize": 10 * pageSize,
+ "sortType": params.sortType,
+ "sortBy": params.sortBy,
+ "queryTimeMS": 1518013198573,
+ "logList": list
+ };
+ },
+ "api/v1/audit/logs/bargraph": {
+ graphData: [{
+ dataCount: [
+ {
+ name: currentTime.toISOString(),
+ value: '75'
+ },
+ {
+ name: currentTime.clone().subtract(20, 'm').toISOString(),
+ value: '100'
+ },
+ {
+ name: currentTime.clone().subtract(40, 'm').toISOString(),
+ value: '75'
+ },
+ {
+ name: currentTime.clone().subtract(1, 'h').toISOString(),
+ value: '50'
+ }
+ ],
+ name: 'AMBARI'
+ }, {
+ dataCount: [
+ {
+ name: currentTime.toISOString(),
+ value: '150'
+ },
+ {
+ name: currentTime.clone().subtract(20, 'm').toISOString(),
+ value: '50'
+ },
+ {
+ name: currentTime.clone().subtract(40, 'm').toISOString(),
+ value: '75'
+ },
+ {
+ name: currentTime.clone().subtract(1, 'h').toISOString(),
+ value: '100'
+ }
+ ],
+ name: 'HDFS'
+ }
+ ]},
+ "api/v1/audit/logs/components": {
+ "groups": {},
+ "metadata": components.map(comp => {
+ return {
+ name: comp,
+ label: comp.split('_').map(ucFirst).join(' '),
+ group: null
+ }
+ })
+ },
+ "api/v1/audit/logs/resources/\\d": function (query) {
+ let graphData = users.map((user:string) => {
+ return {
+ name: user,
+ dataCount: services.map((service:string) => {
+ return {
+ name: service,
+ value: getRandomInt(1000)
+ }
+ })
+ };
+ });
+ return {
+ graphData: graphData
+ }
+ },
+ "api/v1/audit/logs/schema/fields": {
+ "defaults": [
+ {
+ "name": "logType",
+ "label": "Log Type",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "cluster",
+ "label": "Cluster",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "reason",
+ "label": "Reason",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "agent",
+ "label": "Agent",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "access",
+ "label": "Access Type",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "dst",
+ "label": "DST",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "perm",
+ "label": "Perm",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "event_count",
+ "label": "Event Count",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "repo",
+ "label": "Repo",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "sess",
+ "label": "Session",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "reqUser",
+ "label": "User",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "task_id",
+ "label": "Task Id",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "type",
+ "label": "Type",
+ "filterable": true,
+ "visible": true
+ },
+ {
+ "name": "reqData",
+ "label": "Req Data",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "result",
+ "label": "Result",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "path",
+ "label": "Path",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "file",
+ "label": "File",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "ugi",
+ "label": "UGI",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "case_id",
+ "label": "Case Id",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "host",
+ "label": "Host",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "action",
+ "label": "Action",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "log_message",
+ "label": "Log Message",
+ "filterable": true,
+ "visible": true
+ },
+ {
+ "name": "agentHost",
+ "label": "Agent Host",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "id",
+ "label": "Id",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "logger_name",
+ "label": "Logger Name",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "text",
+ "label": "Text",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "authType",
+ "label": "Auth Type",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "logfile_line_number",
+ "label": "Logfile Line Number",
+ "filterable": true,
+ "visible": true
+ },
+ {
+ "name": "policy",
+ "label": "Policy",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "cliIP",
+ "label": "Client Ip",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "level",
+ "label": "Level",
+ "filterable": true,
+ "visible": true
+ },
+ {
+ "name": "resource",
+ "label": "Resource",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "resType",
+ "label": "Res Type",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "ip",
+ "label": "IP",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "evtTime",
+ "label": "Event Time",
+ "filterable": true,
+ "visible": true
+ },
+ {
+ "name": "req_self_id",
+ "label": "Req Self Id",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "repoType",
+ "label": "Repo Type",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "req_caller_id",
+ "label": "Req Caller Id",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "enforcer",
+ "label": "Access Enforcer",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "bundle_id",
+ "label": "Bundle Id",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "cliType",
+ "label": "Client Type",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "reqContext",
+ "label": "Req Context",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "proxyUsers",
+ "label": "Proxy Users",
+ "filterable": true,
+ "visible": false
+ }
+ ],
+ "overrides": {
+ "ambari": [
+ {
+ "name": "logType",
+ "label": "Log Type",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "cluster",
+ "label": "Cluster",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "reason",
+ "label": "Reason",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "agent",
+ "label": "Agent",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "access",
+ "label": "Access",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "dst",
+ "label": "Dst",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "perm",
+ "label": "Perm",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "event_count",
+ "label": "Event Count",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "repo",
+ "label": "Repo",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "sess",
+ "label": "Sess",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "reqUser",
+ "label": "Req User",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "task_id",
+ "label": "Task Id",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "type",
+ "label": "Type",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "reqData",
+ "label": "Req Data",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "result",
+ "label": "Result",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "path",
+ "label": "Path",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "file",
+ "label": "File",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "ugi",
+ "label": "Ugi",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "case_id",
+ "label": "Case Id",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "host",
+ "label": "Host",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "action",
+ "label": "Action",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "log_message",
+ "label": "Log Message",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "agentHost",
+ "label": "Agent Host",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "id",
+ "label": "Id",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "logger_name",
+ "label": "Logger Name",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "text",
+ "label": "Text",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "authType",
+ "label": "Auth Type",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "logfile_line_number",
+ "label": "Logfile Line Number",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "policy",
+ "label": "Policy",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "cliIP",
+ "label": "Cli I P",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "level",
+ "label": "Level",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "resource",
+ "label": "Resource",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "resType",
+ "label": "Res Type",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "ip",
+ "label": "Ip",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "evtTime",
+ "label": "Evt Time",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "req_self_id",
+ "label": "Req Self Id",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "repoType",
+ "label": "Repo Type",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "req_caller_id",
+ "label": "Req Caller Id",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "enforcer",
+ "label": "Enforcer",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "bundle_id",
+ "label": "Bundle Id",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "cliType",
+ "label": "Cli Type",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "reqContext",
+ "label": "Req Context",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "proxyUsers",
+ "label": "Proxy Users",
+ "filterable": true,
+ "visible": false
+ }
+ ],
+ "RangerAudit": [
+ {
+ "name": "logType",
+ "label": "Log Type",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "cluster",
+ "label": "Cluster",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "reason",
+ "label": "Reason",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "agent",
+ "label": "Agent",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "access",
+ "label": "Access",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "dst",
+ "label": "Dst",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "perm",
+ "label": "Perm",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "event_count",
+ "label": "Event Count",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "repo",
+ "label": "Repo",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "sess",
+ "label": "Sess",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "reqUser",
+ "label": "Req User",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "task_id",
+ "label": "Task Id",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "type",
+ "label": "Type",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "reqData",
+ "label": "Req Data",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "result",
+ "label": "Result",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "path",
+ "label": "Path",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "file",
+ "label": "File",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "ugi",
+ "label": "Ugi",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "case_id",
+ "label": "Case Id",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "host",
+ "label": "Host",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "action",
+ "label": "Action",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "log_message",
+ "label": "Log Message",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "agentHost",
+ "label": "Agent Host",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "id",
+ "label": "Id",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "logger_name",
+ "label": "Logger Name",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "text",
+ "label": "Text",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "authType",
+ "label": "Auth Type",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "logfile_line_number",
+ "label": "Logfile Line Number",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "policy",
+ "label": "Policy",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "cliIP",
+ "label": "Cli I P",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "level",
+ "label": "Level",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "resource",
+ "label": "Resource",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "resType",
+ "label": "Res Type",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "ip",
+ "label": "Ip",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "evtTime",
+ "label": "Evt Time",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "req_self_id",
+ "label": "Req Self Id",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "repoType",
+ "label": "Repo Type",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "req_caller_id",
+ "label": "Req Caller Id",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "enforcer",
+ "label": "Enforcer",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "bundle_id",
+ "label": "Bundle Id",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "cliType",
+ "label": "Cli Type",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "reqContext",
+ "label": "Req Context",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "proxyUsers",
+ "label": "Proxy Users",
+ "filterable": true,
+ "visible": false
+ }
+ ],
+ "hdfs": [
+ {
+ "name": "logType",
+ "label": "Log Type",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "cluster",
+ "label": "Cluster",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "reason",
+ "label": "Reason",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "agent",
+ "label": "Agent",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "access",
+ "label": "Access",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "dst",
+ "label": "Dst",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "perm",
+ "label": "Perm",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "event_count",
+ "label": "Event Count",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "repo",
+ "label": "Repo",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "sess",
+ "label": "Sess",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "reqUser",
+ "label": "Req User",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "task_id",
+ "label": "Task Id",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "type",
+ "label": "Type",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "reqData",
+ "label": "Req Data",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "result",
+ "label": "Result",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "path",
+ "label": "Path",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "file",
+ "label": "File",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "ugi",
+ "label": "Ugi",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "case_id",
+ "label": "Case Id",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "host",
+ "label": "Host",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "action",
+ "label": "Action",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "log_message",
+ "label": "Log Message",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "agentHost",
+ "label": "Agent Host",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "id",
+ "label": "Id",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "logger_name",
+ "label": "Logger Name",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "text",
+ "label": "Text",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "authType",
+ "label": "Auth Type",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "logfile_line_number",
+ "label": "Logfile Line Number",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "policy",
+ "label": "Policy",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "cliIP",
+ "label": "Cli I P",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "level",
+ "label": "Level",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "resource",
+ "label": "Resource",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "resType",
+ "label": "Res Type",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "ip",
+ "label": "Ip",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "evtTime",
+ "label": "Evt Time",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "req_self_id",
+ "label": "Req Self Id",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "repoType",
+ "label": "Repo Type",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "req_caller_id",
+ "label": "Req Caller Id",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "enforcer",
+ "label": "Enforcer",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "bundle_id",
+ "label": "Bundle Id",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "cliType",
+ "label": "Cli Type",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "reqContext",
+ "label": "Req Context",
+ "filterable": true,
+ "visible": false
+ },
+ {
+ "name": "proxyUsers",
+ "label": "Proxy Users",
+ "filterable": true,
+ "visible": false
+ }
+ ]
+ }
+ },
+ "api/v1/audit/logs/serviceload": {
+ graphData: [
+ {
+ dataCount: [
+ {
+ name: 'n4',
+ value: 1
+ },
+ {
+ name: 'n5',
+ value: 2
+ }
+ ],
+ name: 'graph2'
+ },
+ {
+ dataCount: [
+ {
+ name: 'n6',
+ value: 10
+ },
+ {
+ name: 'n7',
+ value: 20
+ }
+ ],
+ name: 'graph3'
+ }
+ ]
+ },
+
+ "api/v1/public/config": {},
+
+ "api/v1/service/logs": function (query) {
+ let list = [];
+ let params = query.rawParams.split('&').reduce((currentObj, param) => {
+ let [key, value] = param.split('=');
+ switch (key) {
+ case 'page':
+ case 'pageSize':
+ case 'startIndex':
+ value = parseInt(value);
+ break;
+ case 'from':
+ case 'to':
+ value = decodeURIComponent(value);
+ value = moment(value);
+ break;
+ case 'mustBe':
+ case 'hostList':
+ case 'level':
+ value = decodeURIComponent(value).split(',');
+ break;
+ }
+ currentObj[key] = value;
+ return currentObj;
+ }, {});
+ const pageSize = params.pageSize || 50;
+ const intervalSteps = params.to.diff(params.from) / pageSize;
+ const startTime = params.from.valueOf();
+
+ for (let i = 0; i < pageSize; i += 1) {
+ let defaults: {[key:string]: any} = {logtime: startTime + (i * intervalSteps)};
+ if (params.mustBe) {
+ defaults.type = getRandomElement(params.mustBe);
+ }
+ if (params.hostList) {
+ defaults.host = getRandomElement(params.hostList);
+ }
+ if (params.level) {
+ defaults.level = getRandomElement(params.level);
+ }
+ list.push(generateServiceLog(defaults));
+ }
+ return {
+ "startIndex": params.startIndex,
+ "pageSize": pageSize,
+ "totalCount": 10 * pageSize,
+ "resultSize": 10 * pageSize,
+ "sortType": params.sortType,
+ "sortBy": params.sortBy,
+ "queryTimeMS": 1518013198573,
+ "logList": list
+ };
+ },
+ "api/v1/service/logs/logList": (query) => {
+ let list = [];
+ let params = query.rawParams.split('&').reduce((currentObj, param) => {
+ let [key, value] = param.split('=');
+ switch (key) {
+ case 'page':
+ case 'pageSize':
+ case 'startIndex':
+ value = parseInt(value);
+ break;
+ case 'from':
+ case 'to':
+ value = decodeURIComponent(value);
+ value = moment(value);
+ break;
+ case 'mustBe':
+ case 'hostList':
+ case 'level':
+ value = decodeURIComponent(value).split(',');
+ break;
+ }
+ currentObj[key] = value;
+ return currentObj;
+ }, {});
+ const pageSize = params.pageSize || 50;
+ const intervalSteps = params.to.diff(params.from) / pageSize;
+ const startTime = params.from.valueOf();
+
+ for (let i = 0; i < pageSize; i += 1) {
+ let defaults: {[key:string]: any} = {
+ logtime: startTime + (i * intervalSteps),
+ event_dur_ms: getRandomInt(1000)
+ };
+ if (params.mustBe) {
+ defaults.type = getRandomElement(params.mustBe);
+ }
+ if (params.hostList) {
+ defaults.host = getRandomElement(params.hostList);
+ }
+ if (params.level) {
+ defaults.level = getRandomElement(params.level);
+ }
+ list.push(generateServiceLog(defaults));
+ }
+ return list;
+ },
+ "api/v1/service/logs/aggregated": {
+ graphData: [
+ {
+ name: 'n0',
+ count: 100,
+ dataList: [
+ {
+ name: 'n1',
+ count: 50,
+ dataList: null
+ },
+ {
+ name: 'n2',
+ count: 200,
+ dataList: null
+ }
+ ]
+ },
+ {
+ name: 'n3',
+ count: 10,
+ dataList: [
+ {
+ name: 'n4',
+ count: 5,
+ dataList: null
+ },
+ {
+ name: 'n5',
+ count: 20,
+ dataList: null
+ }
+ ]
+ }
+ ]
+ },
+ "api/v1/service/logs/components": {
+ "groups": {},
+ "metadata": components.map(comp => {
+ return {
+ name: comp,
+ label: comp.split('_').map(ucFirst).join(' '),
+ group: null
+ }
+ })
+ },
+ "api/v1/service/logs/components/levels/counts": {
+ vNodeList: [
+ {
+ name: 'ambari',
+ type: 0,
+ logLevelCount: [
+ {
+ name: 'ERROR',
+ value: '10'
+ },
+ {
+ name: 'WARN',
+ value: '50'
+ }
+ ],
+ childs: [
+ {
+ name: 'hdfs',
+ type: 2,
+ logLevelCount: [
+ {
+ name: 'ERROR',
+ value: '10'
+ },
+ {
+ name: 'WARN',
+ value: '20'
+ }
+ ],
+ isParent: false,
+ isRoot: false
+ },
+ {
+ name: 'zookeeper',
+ type: 3,
+ logLevelCount: [
+ {
+ name: 'ERROR',
+ value: '20'
+ },
+ {
+ name: 'WARN',
+ value: '40'
+ }
+ ],
+ isParent: false,
+ isRoot: false
+ }
+ ],
+ isParent: true,
+ isRoot: false
+ },
+ {
+ name: 'ambari_agent',
+ type: 1,
+ logLevelCount: [
+ {
+ name: 'ERROR',
+ value: '100'
+ },
+ {
+ name: 'WARN',
+ value: '500'
+ }
+ ],
+ isParent: false,
+ isRoot: false
+ }
+ ]
+ },
+ "api/v1/service/logs/files": {
+ hostLogFiles: {
+ clusters: clusters,
+ services: services
+ }
+ },
+ "api/v1/service/logs/histogram": {
+ graphData: [
+ {
+ dataCount: [
+ {
+ name: currentTime.toISOString(),
+ value: '1000'
+ },
+ {
+ name: currentTime.clone().subtract(1, 'h').toISOString(),
+ value: '2000'
+ }
+ ],
+ name: 'ERROR'
+ },
+ {
+ dataCount: [
+ {
+ name: currentTime.toISOString(),
+ value: '700'
+ },
+ {
+ name: currentTime.clone().subtract(1, 'h').toISOString(),
+ value: '900'
+ }
+ ],
+ name: 'WARN'
+ }
+ ]
+ },
+ "api/v1/service/logs/hosts": {
+ groupList: hosts.map(host => Object.assign({}, {host}))
+ },
+ "api/v1/service/logs/schema/fields": [{
+ "name": "cluster",
+ "label": "Cluster",
+ "filterable": true,
+ "visible": false
+ }, {
+ "name": "key_log_message",
+ "label": "Key Log Message",
+ "filterable": true,
+ "visible": false
+ }, {
+ "name": "type",
+ "label": "Component",
+ "filterable": true,
+ "visible": true
+ }, {
+ "name": "path",
+ "label": "Path",
+ "filterable": true,
+ "visible": false
+ }, {
+ "name": "logtype",
+ "label": "Logtype",
+ "filterable": true,
+ "visible": false
+ }, {
+ "name": "file",
+ "label": "File",
+ "filterable": true,
+ "visible": false
+ }, {
+ "name": "line_number",
+ "label": "Line Number",
+ "filterable": true,
+ "visible": true
+ }, {
+ "name": "host",
+ "label": "Host",
+ "filterable": true,
+ "visible": false
+ }, {
+ "name": "log_message",
+ "label": "Message",
+ "filterable": true,
+ "visible": true
+ }, {
+ "name": "logger_name",
+ "label": "Logger Name",
+ "filterable": true,
+ "visible": false
+ }, {
+ "name": "logfile_line_number",
+ "label": "Logfile Line Number",
+ "filterable": true,
+ "visible": false
+ }, {
+ "name": "group",
+ "label": "Group",
+ "filterable": true,
+ "visible": false
+ }, {
+ "name": "method",
+ "label": "Method",
+ "filterable": true,
+ "visible": false
+ }, {
+ "name": "level",
+ "label": "Level",
+ "filterable": true,
+ "visible": true
+ }, {
+ "name": "ip",
+ "label": "Ip",
+ "filterable": true,
+ "visible": false
+ }, {
+ "name": "thread_name",
+ "label": "Thread",
+ "filterable": true,
+ "visible": false
+ }, {
+ "name": "logtime",
+ "label": "Log Time",
+ "filterable": true,
+ "visible": true
+ }],
+ "api/v1/service/logs/serviceconfig": "",
+ "api/v1/service/logs/tree": {
+ vNodeList: [
+ {
+ name: hosts[0],
+ type: 'H',
+ value: '1',
+ childs: [
+ {
+ name: 'ams_collector',
+ type: 'C',
+ value: '1',
+ logLevelCount: [
+ {
+ name: 'WARN',
+ value: '1'
+ }
+ ],
+ isParent: false,
+ isRoot: false
+ }
+ ],
+ logLevelCount: [
+ {
+ name: 'WARN',
+ value: '1'
+ }
+ ],
+ isParent: true,
+ isRoot: true
+ },
+ {
+ name: hosts[1],
+ type: 'H',
+ value: '6',
+ childs: [
+ {
+ name: 'ams_collector',
+ type: 'C',
+ value: '1',
+ logLevelCount: [
+ {
+ name: 'ERROR',
+ value: '1'
+ }
+ ],
+ isParent: false,
+ isRoot: false
+ },
+ {
+ name: 'ambari_agent',
+ type: 'C',
+ value: '1',
+ logLevelCount: [
+ {
+ name: 'FATAL',
+ value: '1'
+ }
+ ],
+ isParent: false,
+ isRoot: false
+ },
+ {
+ name: 'zookeeper_server',
+ type: 'C',
+ value: '2',
+ logLevelCount: [
+ {
+ name: 'INFO',
+ value: '1'
+ },
+ {
+ name: 'DEBUG',
+ value: '1'
+ }
+ ],
+ isParent: false,
+ isRoot: false
+ },
+ {
+ name: 'zookeeper_client',
+ type: 'C',
+ value: '2',
+ logLevelCount: [
+ {
+ name: 'TRACE',
+ value: '1'
+ },
+ {
+ name: 'UNKNOWN',
+ value: '1'
+ }
+ ],
+ isParent: false,
+ isRoot: false
+ }
+ ],
+ logLevelCount: [
+ {
+ name: 'ERROR',
+ value: '1'
+ },
+ {
+ name: 'FATAL',
+ value: '1'
+ },
+ {
+ name: 'INFO',
+ value: '1'
+ },
+ {
+ name: 'DEBUG',
+ value: '1'
+ },
+ {
+ name: 'TRACE',
+ value: '1'
+ },
+ {
+ name: 'UNKNOWN',
+ value: '1'
+ }
+ ],
+ isParent: true,
+ isRoot: true
+ }
+ ]
+ },
+ "api/v1/service/logs/truncated": {
+ logList: [
+ {
+ path: '/var/log/ambari-metrics-collector/ambari-metrics-collector.log',
+ host: 'h0',
+ level: 'WARN',
+ logtime: '2017-05-28T11:30:22.531Z',
+ ip: '192.168.0.1',
+ logfile_line_number: 8,
+ type: 'ams_collector',
+ _version_: 9,
+ id: 'id2',
+ file: 'ambari-metrics-collector.log',
+ seq_num: 10,
+ bundle_id: 'b2',
+ case_id: 'c2',
+ log_message: 'Connection refused',
+ message_md5: '1357908642',
+ cluster: 'cl2',
+ event_count: 5,
+ event_md5: '1908755391',
+ event_dur_ms: 200,
+ _ttl_: '+5DAYS',
+ _expire_at_: '2017-05-29T11:30:22.531Z',
+ _router_field_: 20
+ },
+ {
+ path: '/var/log/ambari-metrics-collector/ambari-metrics-collector.log',
+ host: 'h1',
+ level: 'ERROR',
+ logtime: '2017-05-28T10:30:22.531Z',
+ ip: '192.168.0.2',
+ type: 'ams_collector',
+ _version_: 14,
+ id: 'id3',
+ file: 'ambari-metrics-collector.log',
+ seq_num: 15,
+ bundle_id: 'b3',
+ case_id: 'c3',
+ log_message: 'Connection refused',
+ logfile_line_number: 16,
+ message_md5: '1357908642',
+ cluster: 'cl3',
+ event_count: 2,
+ event_md5: '1029384756',
+ event_dur_ms: 700,
+ _ttl_: '+5DAYS',
+ _expire_at_: '2017-05-29T10:30:22.531Z',
+ _router_field_: 5
+ }
+ ]
+ },
+ "api/v1/service/logs/clusters": clusters,
+
+ "api/v1/status": {
+ auditlogs: {
+ znodeReady: true,
+ solrCollectionReady: true,
+ solrAliasReady: false,
+ configurationUploaded: true
+ },
+ servicelogs: {
+ znodeReady: true,
+ solrCollectionReady: true,
+ configurationUploaded: true
+ },
+ userconfig: {
+ znodeReady: true,
+ solrCollectionReady: true,
+ configurationUploaded: true
+ }
+ },
+ "api/v1/shipper/{clusterName}/level": {
+ filter: {
+ ambari_agent: {
+ label: 'ambari_agent',
+ hosts: [
+ 'h0'
+ ],
+ defaultLevels: [
+ 'FATAL',
+ 'ERROR',
+ 'WARN',
+ 'INFO'
+ ],
+ overrideLevels: [
+ 'FATAL'
+ ],
+ expiryTime: currentTime.clone().add(1, 'd').toISOString()
+ },
+ ambari_alerts: {
+ label: 'ambari_alerts',
+ hosts: [],
+ defaultLevels: [
+ 'FATAL',
+ 'ERROR',
+ 'WARN',
+ 'INFO'
+ ],
+ overrideLevels: [],
+ expiryTime: null
+ },
+ ambari_audit: {
+ label: 'ambari_audit',
+ hosts: [],
+ defaultLevels: [
+ 'FATAL',
+ 'ERROR',
+ 'WARN',
+ 'INFO'
+ ],
+ overrideLevels: [],
+ expiryTime: null
+ },
+ ambari_config_changes: {
+ label: 'ambari_config_changes',
+ hosts: [],
+ defaultLevels: [
+ 'FATAL',
+ 'ERROR',
+ 'WARN',
+ 'INFO'
+ ],
+ overrideLevels: [],
+ expiryTime: null
+ },
+ ambari_eclipselink: {
+ label: 'ambari_eclipselink',
+ hosts: [],
+ defaultLevels: [
+ 'FATAL',
+ 'ERROR',
+ 'WARN',
+ 'INFO'
+ ],
+ overrideLevels: [],
+ expiryTime: null
+ },
+ ambari_server: {
+ label: 'ambari_server',
+ hosts: [],
+ defaultLevels: [
+ 'FATAL',
+ 'ERROR',
+ 'WARN',
+ 'INFO'
+ ],
+ overrideLevels: [],
+ expiryTime: null
+ },
+ ambari_server_check_database: {
+ label: 'ambari_server_check_database',
+ hosts: [],
+ defaultLevels: [
+ 'FATAL',
+ 'ERROR',
+ 'WARN',
+ 'INFO'
+ ],
+ overrideLevels: [],
+ expiryTime: null
+ },
+ ams_collector: {
+ label: 'ams_collector',
+ hosts: [],
+ defaultLevels: [
+ 'FATAL',
+ 'ERROR',
+ 'WARN',
+ 'INFO'
+ ],
+ overrideLevels: [],
+ expiryTime: null
+ },
+ ams_grafana: {
+ label: 'ams_grafana',
+ hosts: [],
+ defaultLevels: [
+ 'FATAL',
+ 'ERROR',
+ 'WARN',
+ 'INFO'
+ ],
+ overrideLevels: [],
+ expiryTime: null
+ },
+ ams_hbase_master: {
+ label: 'ams_hbase_master',
+ hosts: [],
+ defaultLevels: [
+ 'FATAL',
+ 'ERROR',
+ 'WARN',
+ 'INFO'
+ ],
+ overrideLevels: [],
+ expiryTime: null
+ },
+ ams_hbase_regionserver: {
+ label: 'ams_hbase_regionserver',
+ hosts: [],
+ defaultLevels: [
+ 'FATAL',
+ 'ERROR',
+ 'WARN',
+ 'INFO'
+ ],
+ overrideLevels: [],
+ expiryTime: null
+ },
+ ams_monitor: {
+ label: 'ams_monitor',
+ hosts: [],
+ defaultLevels: [
+ 'FATAL',
+ 'ERROR',
+ 'WARN',
+ 'INFO'
+ ],
+ overrideLevels: [],
+ expiryTime: null
+ },
+ hdfs_datanode: {
+ label: 'hdfs_datanode',
+ hosts: [],
+ defaultLevels: [
+ 'FATAL',
+ 'ERROR',
+ 'WARN',
+ 'INFO'
+ ],
+ overrideLevels: [],
+ expiryTime: null
+ },
+ hdfs_journalnode: {
+ label: 'hdfs_journalnode',
+ hosts: [],
+ defaultLevels: [
+ 'FATAL',
+ 'ERROR',
+ 'WARN',
+ 'INFO'
+ ],
+ overrideLevels: [],
+ expiryTime: null
+ },
+ hdfs_namenode: {
+ label: 'hdfs_namenode',
+ hosts: [],
+ defaultLevels: [
+ 'FATAL',
+ 'ERROR',
+ 'WARN',
+ 'INFO'
+ ],
+ overrideLevels: [],
+ expiryTime: null
+ },
+ hdfs_nfs3: {
+ label: 'hdfs_nfs3',
+ hosts: [],
+ defaultLevels: [
+ 'FATAL',
+ 'ERROR',
+ 'WARN',
+ 'INFO'
+ ],
+ overrideLevels: [],
+ expiryTime: null
+ },
+ hdfs_secondarynamenode: {
+ label: 'hdfs_secondarynamenode',
+ hosts: [],
+ defaultLevels: [
+ 'FATAL',
+ 'ERROR',
+ 'WARN',
+ 'INFO'
+ ],
+ overrideLevels: [],
+ expiryTime: null
+ },
+ hdfs_zkfc: {
+ label: 'hdfs_zkfc',
+ hosts: [],
+ defaultLevels: [
+ 'FATAL',
+ 'ERROR',
+ 'WARN',
+ 'INFO'
+ ],
+ overrideLevels: [],
+ expiryTime: null
+ },
+ infra_solr: {
+ label: 'infra_solr',
+ hosts: [],
+ defaultLevels: [
+ 'FATAL',
+ 'ERROR',
+ 'WARN',
+ 'INFO'
+ ],
+ overrideLevels: [],
+ expiryTime: null
+ },
+ logsearch_app: {
+ label: 'logsearch_app',
+ hosts: [],
+ defaultLevels: [
+ 'FATAL',
+ 'ERROR',
+ 'WARN',
+ 'INFO'
+ ],
+ overrideLevels: [],
+ expiryTime: null
+ },
+ logsearch_feeder: {
+ label: 'logsearch_feeder',
+ hosts: [],
+ defaultLevels: [
+ 'FATAL',
+ 'ERROR',
+ 'WARN',
+ 'INFO'
+ ],
+ overrideLevels: [],
+ expiryTime: null
+ },
+ logsearch_perf: {
+ label: 'logsearch_perf',
+ hosts: [],
+ defaultLevels: [
+ 'FATAL',
+ 'ERROR',
+ 'WARN',
+ 'INFO'
+ ],
+ overrideLevels: [],
+ expiryTime: null
+ },
+ zookeeper: {
+ label: 'zookeeper',
+ hosts: [],
+ defaultLevels: [
+ 'FATAL',
+ 'ERROR',
+ 'WARN',
+ 'INFO'
+ ],
+ overrideLevels: [],
+ expiryTime: null
+ }
+ }
+ }
+};
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/mock-data.ts b/ambari-logsearch/ambari-logsearch-web/src/app/mock-data.ts
deleted file mode 100644
index cf5d2a5..0000000
--- a/ambari-logsearch/ambari-logsearch-web/src/app/mock-data.ts
+++ /dev/null
@@ -1,2508 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import * as moment from 'moment';
-
-const currentTime = moment();
-
-export const mockData = {
- login: {},
- logout: {},
- api: {
- v1: {
- audit: {
- logs: {
- logList: [
- {
- policy: 'policy',
- reason: 'Authentication required',
- result: 0,
- text: 'Please log in',
- tags: [
- 'ambari_agent'
- ],
- resource: '/ambari-agent',
- sess: '0',
- access: '0',
- logType: 'AmbariAudit',
- tags_str: 'ambari_agent',
- resType: 'agent',
- reqUser: 'admin',
- reqData: 'data',
- repoType: 1,
- repo: 'ambari',
- proxyUsers: [
- 'admin'
- ],
- evtTime: currentTime.valueOf(),
- enforcer: 'ambari-acl',
- reqContext: 'ambari',
- cliType: 'GET',
- cliIP: '192.168.0.1',
- agent: 'agent',
- agentHost: 'localhost',
- action: 'SERVICE_CHECK',
- type: 'ambari-audit',
- _version_: 2,
- id: 'id0',
- file: 'ambari-agent.log',
- seq_num: 3,
- bundle_id: 'b0',
- case_id: 'c0',
- log_message: 'User(admin), Operation(SERVICE_CHECK)',
- logfile_line_number: 4,
- message_md5: '12345678900987654321',
- cluster: 'cl0',
- event_count: 0,
- event_md5: '09876543211234567890',
- event_dur_ms: 100,
- _ttl_: '+7DAYS',
- _expire_at_: currentTime.clone().add(2, 'd').valueOf(),
- _router_field_: 5
- },
- {
- policy: 'policy',
- reason: 'Server error',
- result: 1,
- text: 'Something went wrong',
- tags: [
- 'ambari_agent'
- ],
- resource: '/ambari-agent',
- sess: '1',
- access: '1',
- logType: 'AmbariAudit',
- tags_str: 'ambari_server',
- resType: 'server',
- reqUser: 'user',
- reqData: 'data',
- repoType: 1,
- repo: 'ambari',
- proxyUsers: [
- 'user'
- ],
- evtTime: currentTime.clone().subtract(2, 'h').valueOf(),
- enforcer: 'hdfs',
- reqContext: 'ambari_server',
- cliType: 'PUT',
- cliIP: '192.168.0.1',
- agent: 'agent',
- agentHost: 'localhost',
- action: 'SERVICE_CHECK',
- type: 'ambari-audit',
- _version_: 4,
- id: 'id1',
- file: 'ambari-agent.log',
- seq_num: 5,
- bundle_id: 'b1',
- case_id: 'c1',
- log_message: 'User(user), Operation(SERVICE_CHECK)',
- logfile_line_number: 6,
- message_md5: '10293847561029384756',
- cluster: 'cl1',
- event_count: 2,
- event_md5: '01928374650192837465',
- event_dur_ms: 500,
- _ttl_: '+7DAYS',
- _expire_at_: currentTime.clone().add(1, 'd').valueOf(),
- _router_field_: 10
- }
- ],
- bargraph: {
- graphData: [
- {
- dataCount: [
- {
- name: currentTime.toISOString(),
- value: '75'
- },
- {
- name: currentTime.clone().subtract(20, 'm').toISOString(),
- value: '100'
- },
- {
- name: currentTime.clone().subtract(40, 'm').toISOString(),
- value: '75'
- },
- {
- name: currentTime.clone().subtract(1, 'h').toISOString(),
- value: '50'
- }
- ],
- name: 'AMBARI'
- },
- {
- dataCount: [
- {
- name: currentTime.toISOString(),
- value: '150'
- },
- {
- name: currentTime.clone().subtract(20, 'm').toISOString(),
- value: '50'
- },
- {
- name: currentTime.clone().subtract(40, 'm').toISOString(),
- value: '75'
- },
- {
- name: currentTime.clone().subtract(1, 'h').toISOString(),
- value: '100'
- }
- ],
- name: 'HDFS'
- }
- ]
- },
- components: {},
- resources: {
- 6: {
- graphData: [
- {
- dataCount: [
- {
- name: 'hdfs',
- value: 800
- },
- {
- name: 'zookeeper',
- value: 400
- },
- {
- name: 'ambari_metrics',
- value: 200
- }
- ],
- name: 'admin'
- },
- {
- dataCount: [
- {
- name: 'ambari_agent',
- value: 400
- },
- {
- name: 'hdfs',
- value: 600
- },
- {
- name: 'ambari_metrics',
- value: 300
- }
- ],
- name: 'user'
- }
- ]
- },
- 10: {
- graphData: [
- {
- dataCount: [
- {
- name: 'ambari',
- value: 800
- },
- {
- name: 'hdfs',
- value: 400
- },
- {
- name: 'hbase',
- value: 200
- },
- ],
- name: '/user'
- },
- {
- dataCount: [
- {
- name: 'hdfs',
- value: 400
- },
- {
- name: 'hbase',
- value: 600
- },
- {
- name: 'kafka',
- value: 300
- }
- ],
- name: '/root'
- }
- ]
- }
- },
- schema: {
- fields: {
- 'cluster': 'key_lower_case',
- 'ws_status': 'text_ws',
- 'reason': 'text_std_token_lower_case',
- 'agent': 'key_lower_case',
- 'Base URL': 'key_lower_case',
- 'sess': 'key_lower_case',
- 'type': 'key_lower_case',
- 'seq_num': 'tlong',
- 'path': 'key_lower_case',
- 'ugi': 'key_lower_case',
- 'host': 'key_lower_case',
- 'case_id': 'key_lower_case',
- 'action': 'key_lower_case',
- 'id': 'string',
- 'logger_name': 'key_lower_case',
- 'text': 'text_std_token_lower_case',
- 'Repo id': 'key_lower_case',
- 'Stack version': 'tdouble',
- 'logfile_line_number': 'tint',
- 'Status': 'tlong',
- 'RequestId': 'tlong',
- 'level': 'key_lower_case',
- 'resource': 'key_lower_case',
- 'resType': 'key_lower_case',
- 'ip': 'key_lower_case',
- 'Hostname': 'key_lower_case',
- 'Roles': 'key_lower_case',
- 'Stack': 'key_lower_case',
- 'req_self_id': 'key_lower_case',
- 'repoType': 'tint',
- 'VersionNote': 'key_lower_case',
- 'Cluster name': 'key_lower_case',
- 'bundle_id': 'key_lower_case',
- 'cliType': 'key_lower_case',
- 'reqContext': 'key_lower_case',
- 'ws_result_status': 'text_ws',
- 'proxyUsers': 'key_lower_case',
- 'RequestType': 'key_lower_case',
- 'Repositories': 'key_lower_case',
- 'logType': 'key_lower_case',
- 'Repo version': 'key_lower_case',
- 'TaskId': 'tlong',
- 'User': 'key_lower_case',
- 'access': 'key_lower_case',
- 'dst': 'key_lower_case',
- 'perm': 'key_lower_case',
- 'event_count': 'tlong',
- 'repo': 'key_lower_case',
- 'reqUser': 'key_lower_case',
- 'task_id': 'tlong',
- 'Operation': 'key_lower_case',
- 'Reason': 'key_lower_case',
- 'reqData': 'text_std_token_lower_case',
- 'result': 'tint',
- 'file': 'key_lower_case',
- 'log_message': 'key_lower_case',
- 'agentHost': 'key_lower_case',
- 'Component': 'key_lower_case',
- 'authType': 'key_lower_case',
- 'Display name': 'key_lower_case',
- 'policy': 'tlong',
- 'cliIP': 'key_lower_case',
- 'OS': 'key_lower_case',
- 'RemoteIp': 'key_lower_case',
- 'ResultStatus': 'tlong',
- 'evtTime': 'tdate',
- 'VersionNumber': 'key_lower_case',
- 'url': 'key_lower_case',
- 'req_caller_id': 'key_lower_case',
- 'enforcer': 'key_lower_case',
- 'Command': 'key_lower_case'
- }
- },
- serviceload: {
- graphData: [
- {
- dataCount: [
- {
- name: 'n4',
- value: 1
- },
- {
- name: 'n5',
- value: 2
- }
- ],
- name: 'graph2'
- },
- {
- dataCount: [
- {
- name: 'n6',
- value: 10
- },
- {
- name: 'n7',
- value: 20
- }
- ],
- name: 'graph3'
- }
- ]
- }
- }
- },
- public: {
- config: {}
- },
- service: {
- logs: {
- logList: [
- {
- path: '/var/log/ambari-metrics-collector/ambari-metrics-collector.log',
- host: 'h0',
- level: 'WARN',
- logtime: currentTime.valueOf(),
- ip: '192.168.0.1',
- logfile_line_number: 8,
- type: 'ams_collector',
- _version_: 9,
- id: 'id2',
- file: 'ambari-metrics-collector.log',
- seq_num: 10,
- bundle_id: 'b2',
- case_id: 'c2',
- log_message: 'Connection refused.\nPlease check Ambari Metrics.\nCheck log file for details.',
- message_md5: '1357908642',
- cluster: 'cl2',
- event_count: 5,
- event_md5: '1908755391',
- event_dur_ms: 200,
- _ttl_: '+5DAYS',
- _expire_at_: currentTime.clone().add(5, 'd').valueOf(),
- _router_field_: 20
- },
- {
- path: '/var/log/ambari-metrics-collector/ambari-metrics-collector.log',
- host: 'h1',
- level: 'ERROR',
- logtime: currentTime.clone().subtract(2, 'd').valueOf(),
- ip: '192.168.0.2',
- type: 'ams_collector',
- _version_: 14,
- id: 'id3',
- file: 'ambari-metrics-collector.log',
- seq_num: 15,
- bundle_id: 'b3',
- case_id: 'c3',
- log_message: 'Connection refused.\nPlease check Ambari Metrics.\nCheck log file for details.',
- logfile_line_number: 16,
- message_md5: '1357908642',
- cluster: 'cl3',
- event_count: 2,
- event_md5: '1029384756',
- event_dur_ms: 700,
- _ttl_: '+5DAYS',
- _expire_at_: currentTime.clone().add(3, 'd').valueOf(),
- _router_field_: 5
- },
- {
- path: '/var/log/ambari-metrics-collector/ambari-metrics-collector.log',
- host: 'h1',
- level: 'FATAL',
- logtime: currentTime.clone().subtract(10, 'd').valueOf(),
- ip: '192.168.0.3',
- type: 'ambari_agent',
- _version_: 14,
- id: 'id4',
- file: 'ambari-agent.log',
- seq_num: 15,
- bundle_id: 'b4',
- case_id: 'c4',
- log_message: 'Connection refused.\nPlease check Ambari Agent.\nCheck log file for details.',
- logfile_line_number: 16,
- message_md5: '1038027502',
- cluster: 'cl4',
- event_count: 2,
- event_md5: '67589403',
- event_dur_ms: 100,
- _ttl_: '+5DAYS',
- _expire_at_: currentTime.clone().subtract(5, 'd').valueOf(),
- _router_field_: 45
- },
- {
- path: '/var/log/ambari-metrics-collector/zookeeper-server.log',
- host: 'h1',
- level: 'INFO',
- logtime: currentTime.clone().subtract(25, 'h').valueOf(),
- ip: '192.168.0.4',
- type: 'zookeeper_server',
- _version_: 14,
- id: 'id4',
- file: 'zookeeper_server.log',
- seq_num: 15,
- bundle_id: 'b0',
- case_id: 'c0',
- log_message: 'Connection refused.\nPlease check ZooKeeper Server.\nCheck log file for details.',
- logfile_line_number: 16,
- message_md5: '1038027502',
- cluster: 'cl0',
- event_count: 2,
- event_md5: '67589403',
- event_dur_ms: 1000,
- _ttl_: '+5DAYS',
- _expire_at_: currentTime.clone().subtract(25, 'h').add(5, 'd').valueOf(),
- _router_field_: 55
- },
- {
- path: '/var/log/ambari-metrics-collector/zookeeper-server.log',
- host: 'h1',
- level: 'DEBUG',
- logtime: currentTime.clone().subtract(25, 'd').valueOf(),
- ip: '192.168.0.4',
- type: 'zookeeper_server',
- _version_: 14,
- id: 'id4',
- file: 'zookeeper_server.log',
- seq_num: 15,
- bundle_id: 'b0',
- case_id: 'c0',
- log_message: 'Connection refused.\nPlease check ZooKeeper Server.\nCheck log file for details.',
- logfile_line_number: 16,
- message_md5: '1038027502',
- cluster: 'cl1',
- event_count: 2,
- event_md5: '67589403',
- event_dur_ms: 1000,
- _ttl_: '+5DAYS',
- _expire_at_: currentTime.clone().subtract(20, 'd').valueOf(),
- _router_field_: 55
- },
- {
- path: '/var/log/ambari-metrics-collector/zookeeper-client.log',
- host: 'h1',
- level: 'TRACE',
- logtime: currentTime.clone().subtract(2, 'h').valueOf(),
- ip: '192.168.0.4',
- type: 'zookeeper_client',
- _version_: 14,
- id: 'id4',
- file: 'zookeeper_client.log',
- seq_num: 15,
- bundle_id: 'b0',
- case_id: 'c0',
- log_message: 'Connection refused.\nPlease check ZooKeeper Client.\nCheck log file for details.',
- logfile_line_number: 16,
- message_md5: '1038027502',
- cluster: 'cl1',
- event_count: 2,
- event_md5: '67589403',
- event_dur_ms: 1000,
- _ttl_: '+5DAYS',
- _expire_at_: currentTime.clone().subtract(2, 'h').add(5, 'd').valueOf(),
- _router_field_: 55
- },
- {
- path: '/var/log/ambari-metrics-collector/zookeeper-client.log',
- host: 'h1',
- level: 'UNKNOWN',
- logtime: currentTime.clone().subtract(31, 'd').valueOf(),
- ip: '192.168.0.4',
- type: 'zookeeper_client',
- _version_: 14,
- id: 'id4',
- file: 'zookeeper_client.log',
- seq_num: 15,
- bundle_id: 'b0',
- case_id: 'c0',
- log_message: 'Connection refused.\nPlease check ZooKeeper Client.\nCheck log file for details.',
- logfile_line_number: 16,
- message_md5: '1038027502',
- cluster: 'cl1',
- event_count: 2,
- event_md5: '67589403',
- event_dur_ms: 1000,
- _ttl_: '+5DAYS',
- _expire_at_: currentTime.clone().subtract(26, 'd').valueOf(),
- _router_field_: 55
- }
- ],
- aggregated: {
- graphData: [
- {
- name: 'n0',
- count: 100,
- dataList: [
- {
- name: 'n1',
- count: 50,
- dataList: null
- },
- {
- name: 'n2',
- count: 200,
- dataList: null
- }
- ]
- },
- {
- name: 'n3',
- count: 10,
- dataList: [
- {
- name: 'n4',
- count: 5,
- dataList: null
- },
- {
- name: 'n5',
- count: 20,
- dataList: null
- }
- ]
- }
- ]
- },
- components: {
- count: {
- anygraph: {
- graphData: [
- {
- dataCount: [
- {
- name: 'n8',
- value: 50
- },
- {
- name: 'n9',
- value: 100
- }
- ],
- name: 'graph4'
- },
- {
- dataCount: [
- {
- name: 'n10',
- value: 5
- },
- {
- name: 'n11',
- value: 10
- }
- ],
- name: 'graph5'
- }
- ]
- }
- },
- levels: {
- counts: {
- vNodeList: [
- {
- name: 'ambari',
- type: 0,
- logLevelCount: [
- {
- name: 'ERROR',
- value: '10'
- },
- {
- name: 'WARN',
- value: '50'
- }
- ],
- childs: [
- {
- name: 'hdfs',
- type: 2,
- logLevelCount: [
- {
- name: 'ERROR',
- value: '10'
- },
- {
- name: 'WARN',
- value: '20'
- }
- ],
- isParent: false,
- isRoot: false
- },
- {
- name: 'zookeeper',
- type: 3,
- logLevelCount: [
- {
- name: 'ERROR',
- value: '20'
- },
- {
- name: 'WARN',
- value: '40'
- }
- ],
- isParent: false,
- isRoot: false
- }
- ],
- isParent: true,
- isRoot: false
- },
- {
- name: 'ambari_agent',
- type: 1,
- logLevelCount: [
- {
- name: 'ERROR',
- value: '100'
- },
- {
- name: 'WARN',
- value: '500'
- }
- ],
- isParent: false,
- isRoot: false
- }
- ]
- }
- },
- groupList: [
- {
- type: 'ams_collector'
- },
- {
- type: 'ambari_agent'
- },
- {
- type: 'zookeeper_server'
- },
- {
- type: 'zookeeper_client'
- }
- ]
- },
- files: {
- hostLogFiles: {
- clusters: [
- 'c0',
- 'c1'
- ],
- services: [
- 'hdfs',
- 'zookeeper'
- ]
- }
- },
- histogram: {
- graphData: [
- {
- dataCount: [
- {
- name: currentTime.toISOString(),
- value: '1000'
- },
- {
- name: currentTime.clone().subtract(1, 'h').toISOString(),
- value: '2000'
- }
- ],
- name: 'ERROR'
- },
- {
- dataCount: [
- {
- name: currentTime.toISOString(),
- value: '700'
- },
- {
- name: currentTime.clone().subtract(1, 'h').toISOString(),
- value: '900'
- }
- ],
- name: 'WARN'
- }
- ]
- },
- hosts: {
- groupList: [
- {
- host: 'h0'
- },
- {
- host: 'h1'
- }
- ],
- components: {
- vNodeList: [
- {
- name: 'ambari',
- type: 0,
- logLevelCount: [
- {
- name: 'ERROR',
- value: '100'
- },
- {
- name: 'WARN',
- value: '500'
- }
- ],
- childs: [
- {
- name: 'ambari_metrics',
- type: 2,
- logLevelCount: [
- {
- name: 'ERROR',
- value: '100'
- },
- {
- name: 'WARN',
- value: '200'
- }
- ],
- isParent: false,
- isRoot: false
- },
- {
- name: 'hbase',
- type: 3,
- logLevelCount: [
- {
- name: 'ERROR',
- value: '200'
- },
- {
- name: 'WARN',
- value: '400'
- }
- ],
- isParent: false,
- isRoot: false
- }
- ],
- isParent: true,
- isRoot: false
- },
- {
- name: 'ambari_server',
- type: 1,
- logLevelCount: [
- {
- name: 'ERROR',
- value: '1000'
- },
- {
- name: 'WARN',
- value: '5000'
- }
- ],
- isParent: false,
- isRoot: false
- }
- ]
- },
- count: {
- getvCounts: [
- {
- name: 'n20',
- count: 100
- },
- {
- name: 'n21',
- count: 200
- }
- ]
- }
- },
- levels: {
- counts: {
- getvNameValues: [
- {
- name: 'n22',
- count: 1000
- },
- {
- name: 'n23',
- count: 2000
- }
- ]
- }
- },
- schema: {
- fields: {
- cluster: 'key_lower_case',
- method: 'key_lower_case',
- level: 'key_lower_case',
- event_count: 'tlong',
- ip: 'string',
- rowtype: 'key_lower_case',
- key_log_message: 'key_lower_case',
- type: 'key_lower_case',
- seq_num: 'tlong',
- path: 'key_lower_case',
- logtype: 'key_lower_case',
- file: 'key_lower_case',
- line_number: 'tint',
- thread_name: 'key_lower_case',
- bundle_id: 'key_lower_case',
- host: 'key_lower_case',
- case_id: 'key_lower_case',
- log_message: 'text_std_token_lower_case',
- id: 'string',
- logger_name: 'key_lower_case',
- text: 'text_std_token_lower_case',
- logfile_line_number: 'tint',
- logtime: 'tdate'
- }
- },
- serviceconfig: '',
- tree: {
- vNodeList: [
- {
- name: 'h0',
- type: 'H',
- value: '1',
- childs: [
- {
- name: 'ams_collector',
- type: 'C',
- value: '1',
- logLevelCount: [
- {
- name: 'WARN',
- value: '1'
- }
- ],
- isParent: false,
- isRoot: false
- }
- ],
- logLevelCount: [
- {
- name: 'WARN',
- value: '1'
- }
- ],
- isParent: true,
- isRoot: true
- },
- {
- name: 'h1',
- type: 'H',
- value: '6',
- childs: [
- {
- name: 'ams_collector',
- type: 'C',
- value: '1',
- logLevelCount: [
- {
- name: 'ERROR',
- value: '1'
- }
- ],
- isParent: false,
- isRoot: false
- },
- {
- name: 'ambari_agent',
- type: 'C',
- value: '1',
- logLevelCount: [
- {
- name: 'FATAL',
- value: '1'
- }
- ],
- isParent: false,
- isRoot: false
- },
- {
- name: 'zookeeper_server',
- type: 'C',
- value: '2',
- logLevelCount: [
- {
- name: 'INFO',
- value: '1'
- },
- {
- name: 'DEBUG',
- value: '1'
- }
- ],
- isParent: false,
- isRoot: false
- },
- {
- name: 'zookeeper_client',
- type: 'C',
- value: '2',
- logLevelCount: [
- {
- name: 'TRACE',
- value: '1'
- },
- {
- name: 'UNKNOWN',
- value: '1'
- }
- ],
- isParent: false,
- isRoot: false
- }
- ],
- logLevelCount: [
- {
- name: 'ERROR',
- value: '1'
- },
- {
- name: 'FATAL',
- value: '1'
- },
- {
- name: 'INFO',
- value: '1'
- },
- {
- name: 'DEBUG',
- value: '1'
- },
- {
- name: 'TRACE',
- value: '1'
- },
- {
- name: 'UNKNOWN',
- value: '1'
- }
- ],
- isParent: true,
- isRoot: true
- }
- ]
- },
- truncated: {
- logList: [
- {
- path: '/var/log/ambari-metrics-collector/ambari-metrics-collector.log',
- host: 'h0',
- level: 'WARN',
- logtime: currentTime.valueOf(),
- ip: '192.168.0.1',
- logfile_line_number: 8,
- type: 'ams_collector',
- _version_: 9,
- id: 'id2',
- file: 'ambari-metrics-collector.log',
- seq_num: 10,
- bundle_id: 'b2',
- case_id: 'c2',
- log_message: 'Connection refused',
- message_md5: '1357908642',
- cluster: 'cl2',
- event_count: 5,
- event_md5: '1908755391',
- event_dur_ms: 200,
- _ttl_: '+5DAYS',
- _expire_at_: currentTime.clone().add(1, 'd').valueOf(),
- _router_field_: 20
- },
- {
- path: '/var/log/ambari-metrics-collector/ambari-metrics-collector.log',
- host: 'h1',
- level: 'ERROR',
- logtime: currentTime.clone().subtract(1, 'd').valueOf(),
- ip: '192.168.0.2',
- type: 'ams_collector',
- _version_: 14,
- id: 'id3',
- file: 'ambari-metrics-collector.log',
- seq_num: 15,
- bundle_id: 'b3',
- case_id: 'c3',
- log_message: 'Connection refused',
- logfile_line_number: 16,
- message_md5: '1357908642',
- cluster: 'cl3',
- event_count: 2,
- event_md5: '1029384756',
- event_dur_ms: 700,
- _ttl_: '+5DAYS',
- _expire_at_: currentTime.clone().add(2, 'd').valueOf(),
- _router_field_: 5
- }
- ]
- },
- clusters: [
- 'cl0',
- 'cl1',
- 'cl2',
- 'cl3',
- 'cl4'
- ]
- }
- },
- status: {
- auditlogs: {
- znodeReady: true,
- solrCollectionReady: true,
- solrAliasReady: false,
- configurationUploaded: true
- },
- servicelogs: {
- znodeReady: true,
- solrCollectionReady: true,
- configurationUploaded: true
- },
- userconfig: {
- znodeReady: true,
- solrCollectionReady: true,
- configurationUploaded: true
- }
- },
- shipper: {
- filters: {
- cl0: {
- level: {
- filter: {
- ambari_agent: {
- label: 'ambari_agent',
- hosts: [
- 'h0'
- ],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [
- 'FATAL'
- ],
- expiryTime: currentTime.clone().add(1, 'd').toISOString()
- },
- ambari_alerts: {
- label: 'ambari_alerts',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ambari_audit: {
- label: 'ambari_audit',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ambari_config_changes: {
- label: 'ambari_config_changes',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ambari_eclipselink: {
- label: 'ambari_eclipselink',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ambari_server: {
- label: 'ambari_server',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ambari_server_check_database: {
- label: 'ambari_server_check_database',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ams_collector: {
- label: 'ams_collector',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ams_grafana: {
- label: 'ams_grafana',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ams_hbase_master: {
- label: 'ams_hbase_master',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ams_hbase_regionserver: {
- label: 'ams_hbase_regionserver',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ams_monitor: {
- label: 'ams_monitor',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- hdfs_datanode: {
- label: 'hdfs_datanode',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- hdfs_journalnode: {
- label: 'hdfs_journalnode',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- hdfs_namenode: {
- label: 'hdfs_namenode',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- hdfs_nfs3: {
- label: 'hdfs_nfs3',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- hdfs_secondarynamenode: {
- label: 'hdfs_secondarynamenode',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- hdfs_zkfc: {
- label: 'hdfs_zkfc',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- infra_solr: {
- label: 'infra_solr',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- logsearch_app: {
- label: 'logsearch_app',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- logsearch_feeder: {
- label: 'logsearch_feeder',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- logsearch_perf: {
- label: 'logsearch_perf',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- zookeeper: {
- label: 'zookeeper',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- }
- }
- }
- },
- cl1: {
- level: {
- filter: {
- ambari_agent: {
- label: 'ambari_agent',
- hosts: [
- 'h0'
- ],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [
- 'FATAL'
- ],
- expiryTime: currentTime.clone().add(1, 'd').toISOString()
- },
- ambari_alerts: {
- label: 'ambari_alerts',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ambari_audit: {
- label: 'ambari_audit',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ambari_config_changes: {
- label: 'ambari_config_changes',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ambari_eclipselink: {
- label: 'ambari_eclipselink',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ambari_server: {
- label: 'ambari_server',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ambari_server_check_database: {
- label: 'ambari_server_check_database',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ams_collector: {
- label: 'ams_collector',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ams_grafana: {
- label: 'ams_grafana',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ams_hbase_master: {
- label: 'ams_hbase_master',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ams_hbase_regionserver: {
- label: 'ams_hbase_regionserver',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ams_monitor: {
- label: 'ams_monitor',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- hdfs_datanode: {
- label: 'hdfs_datanode',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- hdfs_journalnode: {
- label: 'hdfs_journalnode',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- hdfs_namenode: {
- label: 'hdfs_namenode',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- hdfs_nfs3: {
- label: 'hdfs_nfs3',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- hdfs_secondarynamenode: {
- label: 'hdfs_secondarynamenode',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- hdfs_zkfc: {
- label: 'hdfs_zkfc',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- infra_solr: {
- label: 'infra_solr',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- logsearch_app: {
- label: 'logsearch_app',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- logsearch_feeder: {
- label: 'logsearch_feeder',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- logsearch_perf: {
- label: 'logsearch_perf',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- zookeeper: {
- label: 'zookeeper',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- }
- }
- }
- },
- cl2: {
- level: {
- filter: {
- ambari_agent: {
- label: 'ambari_agent',
- hosts: [
- 'h0'
- ],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [
- 'FATAL'
- ],
- expiryTime: currentTime.clone().add(1, 'd').toISOString()
- },
- ambari_alerts: {
- label: 'ambari_alerts',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ambari_audit: {
- label: 'ambari_audit',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ambari_config_changes: {
- label: 'ambari_config_changes',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ambari_eclipselink: {
- label: 'ambari_eclipselink',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ambari_server: {
- label: 'ambari_server',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ambari_server_check_database: {
- label: 'ambari_server_check_database',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ams_collector: {
- label: 'ams_collector',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ams_grafana: {
- label: 'ams_grafana',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ams_hbase_master: {
- label: 'ams_hbase_master',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ams_hbase_regionserver: {
- label: 'ams_hbase_regionserver',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ams_monitor: {
- label: 'ams_monitor',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- hdfs_datanode: {
- label: 'hdfs_datanode',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- hdfs_journalnode: {
- label: 'hdfs_journalnode',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- hdfs_namenode: {
- label: 'hdfs_namenode',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- hdfs_nfs3: {
- label: 'hdfs_nfs3',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- hdfs_secondarynamenode: {
- label: 'hdfs_secondarynamenode',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- hdfs_zkfc: {
- label: 'hdfs_zkfc',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- infra_solr: {
- label: 'infra_solr',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- logsearch_app: {
- label: 'logsearch_app',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- logsearch_feeder: {
- label: 'logsearch_feeder',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- logsearch_perf: {
- label: 'logsearch_perf',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- zookeeper: {
- label: 'zookeeper',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- }
- }
- }
- },
- cl3: {
- level: {
- filter: {
- ambari_agent: {
- label: 'ambari_agent',
- hosts: [
- 'h0'
- ],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [
- 'FATAL'
- ],
- expiryTime: currentTime.clone().add(1, 'd').toISOString()
- },
- ambari_alerts: {
- label: 'ambari_alerts',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ambari_audit: {
- label: 'ambari_audit',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ambari_config_changes: {
- label: 'ambari_config_changes',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ambari_eclipselink: {
- label: 'ambari_eclipselink',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ambari_server: {
- label: 'ambari_server',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ambari_server_check_database: {
- label: 'ambari_server_check_database',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ams_collector: {
- label: 'ams_collector',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ams_grafana: {
- label: 'ams_grafana',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ams_hbase_master: {
- label: 'ams_hbase_master',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ams_hbase_regionserver: {
- label: 'ams_hbase_regionserver',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ams_monitor: {
- label: 'ams_monitor',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- hdfs_datanode: {
- label: 'hdfs_datanode',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- hdfs_journalnode: {
- label: 'hdfs_journalnode',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- hdfs_namenode: {
- label: 'hdfs_namenode',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- hdfs_nfs3: {
- label: 'hdfs_nfs3',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- hdfs_secondarynamenode: {
- label: 'hdfs_secondarynamenode',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- hdfs_zkfc: {
- label: 'hdfs_zkfc',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- infra_solr: {
- label: 'infra_solr',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- logsearch_app: {
- label: 'logsearch_app',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- logsearch_feeder: {
- label: 'logsearch_feeder',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- logsearch_perf: {
- label: 'logsearch_perf',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- zookeeper: {
- label: 'zookeeper',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- }
- }
- }
- },
- cl4: {
- level: {
- filter: {
- ambari_agent: {
- label: 'ambari_agent',
- hosts: [
- 'h0'
- ],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [
- 'FATAL'
- ],
- expiryTime: currentTime.clone().add(1, 'd').toISOString()
- },
- ambari_alerts: {
- label: 'ambari_alerts',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ambari_audit: {
- label: 'ambari_audit',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ambari_config_changes: {
- label: 'ambari_config_changes',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ambari_eclipselink: {
- label: 'ambari_eclipselink',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ambari_server: {
- label: 'ambari_server',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ambari_server_check_database: {
- label: 'ambari_server_check_database',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ams_collector: {
- label: 'ams_collector',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ams_grafana: {
- label: 'ams_grafana',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ams_hbase_master: {
- label: 'ams_hbase_master',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ams_hbase_regionserver: {
- label: 'ams_hbase_regionserver',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- ams_monitor: {
- label: 'ams_monitor',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- hdfs_datanode: {
- label: 'hdfs_datanode',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- hdfs_journalnode: {
- label: 'hdfs_journalnode',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- hdfs_namenode: {
- label: 'hdfs_namenode',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- hdfs_nfs3: {
- label: 'hdfs_nfs3',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- hdfs_secondarynamenode: {
- label: 'hdfs_secondarynamenode',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- hdfs_zkfc: {
- label: 'hdfs_zkfc',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- infra_solr: {
- label: 'infra_solr',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- logsearch_app: {
- label: 'logsearch_app',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- logsearch_feeder: {
- label: 'logsearch_feeder',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- logsearch_perf: {
- label: 'logsearch_perf',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- },
- zookeeper: {
- label: 'zookeeper',
- hosts: [],
- defaultLevels: [
- 'FATAL',
- 'ERROR',
- 'WARN',
- 'INFO'
- ],
- overrideLevels: [],
- expiryTime: null
- }
- }
- }
- }
- },
- names: []
- }
- }
- }
-};
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/services/component-generator.service.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/services/component-generator.service.spec.ts
index b87fa8c..b9f079d 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/services/component-generator.service.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/services/component-generator.service.spec.ts
@@ -17,7 +17,6 @@
*/
import {TestBed, inject} from '@angular/core/testing';
-import {TranslationModules} from '@app/test-config.spec';
import {StoreModule} from '@ngrx/store';
import {HostsService, hosts} from '@app/services/storage/hosts.service';
import {AuditLogsService, auditLogs} from '@app/services/storage/audit-logs.service';
@@ -35,21 +34,14 @@ import {ComponentsService, components} from '@app/services/storage/components.se
import {ServiceLogsTruncatedService, serviceLogsTruncated} from '@app/services/storage/service-logs-truncated.service';
import {TabsService, tabs} from '@app/services/storage/tabs.service';
import {LogsContainerService} from '@app/services/logs-container.service';
-import {HttpClientService} from '@app/services/http-client.service';
import {UtilsService} from '@app/services/utils.service';
+import {MockHttpRequestModules, TranslationModules} from '@app/test-config.spec';
+
import {ComponentGeneratorService} from './component-generator.service';
describe('ComponentGeneratorService', () => {
beforeEach(() => {
- const httpClient = {
- get: () => {
- return {
- subscribe: () => {
- }
- }
- }
- };
TestBed.configureTestingModule({
imports: [
StoreModule.provideStore({
@@ -70,12 +62,9 @@ describe('ComponentGeneratorService', () => {
...TranslationModules
],
providers: [
+ ...MockHttpRequestModules,
ComponentGeneratorService,
LogsContainerService,
- {
- provide: HttpClientService,
- useValue: httpClient
- },
UtilsService,
HostsService,
AuditLogsService,
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/services/component-generator.service.ts b/ambari-logsearch/ambari-logsearch-web/src/app/services/component-generator.service.ts
index bf06525..8e79aca 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/services/component-generator.service.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/services/component-generator.service.ts
@@ -27,7 +27,8 @@ import {LogLevelObject} from '@app/classes/object';
@Injectable()
export class ComponentGeneratorService {
- constructor(private resolver: ComponentFactoryResolver, private hostsStorage: HostsService, private componentsStorage: ComponentsService, private logsContainer: LogsContainerService) {
+ constructor(private resolver: ComponentFactoryResolver, private hostsStorage: HostsService,
+ private componentsStorage: ComponentsService, private logsContainer: LogsContainerService) {
}
private get logLevels(): LogLevelObject[] {
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/services/history-manager.service.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/services/history-manager.service.spec.ts
index 68a0e99..0a7902c5 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/services/history-manager.service.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/services/history-manager.service.spec.ts
@@ -17,7 +17,6 @@
*/
import {TestBed, inject} from '@angular/core/testing';
-import {TranslationModules} from '@app/test-config.spec';
import {StoreModule} from '@ngrx/store';
import {AuditLogsService, auditLogs} from '@app/services/storage/audit-logs.service';
import {ServiceLogsService, serviceLogs} from '@app/services/storage/service-logs.service';
@@ -34,22 +33,16 @@ import {ComponentsService, components} from '@app/services/storage/components.se
import {HostsService, hosts} from '@app/services/storage/hosts.service';
import {ServiceLogsTruncatedService, serviceLogsTruncated} from '@app/services/storage/service-logs-truncated.service';
import {TabsService, tabs} from '@app/services/storage/tabs.service';
-import {HttpClientService} from '@app/services/http-client.service';
import {LogsContainerService} from '@app/services/logs-container.service';
import {UtilsService} from '@app/services/utils.service';
import {HistoryManagerService} from './history-manager.service';
+import {MockHttpRequestModules, TranslationModules} from '@app/test-config.spec';
+
describe('HistoryService', () => {
beforeEach(() => {
- const httpClient = {
- get: () => {
- return {
- subscribe: () => {
- }
- }
- }
- };
+
TestBed.configureTestingModule({
imports: [
...TranslationModules,
@@ -70,11 +63,8 @@ describe('HistoryService', () => {
})
],
providers: [
+ ...MockHttpRequestModules,
HistoryManagerService,
- {
- provide: HttpClientService,
- useValue: httpClient
- },
LogsContainerService,
UtilsService,
AuditLogsService,
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/services/logs-container.service.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/services/logs-container.service.spec.ts
index 2f83935..266f7fc 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/services/logs-container.service.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/services/logs-container.service.spec.ts
@@ -17,7 +17,7 @@
*/
import {TestBed, inject} from '@angular/core/testing';
-import {TranslationModules} from '@app/test-config.spec';
+import {MockHttpRequestModules, TranslationModules} from '@app/test-config.spec';
import {StoreModule} from '@ngrx/store';
import {AuditLogsService, auditLogs} from '@app/services/storage/audit-logs.service';
import {ServiceLogsService, serviceLogs} from '@app/services/storage/service-logs.service';
@@ -34,21 +34,12 @@ import {ComponentsService, components} from '@app/services/storage/components.se
import {HostsService, hosts} from '@app/services/storage/hosts.service';
import {ServiceLogsTruncatedService, serviceLogsTruncated} from '@app/services/storage/service-logs-truncated.service';
import {TabsService, tabs} from '@app/services/storage/tabs.service';
-import {HttpClientService} from '@app/services/http-client.service';
import {UtilsService} from '@app/services/utils.service';
import {LogsContainerService} from './logs-container.service';
describe('LogsContainerService', () => {
beforeEach(() => {
- const httpClient = {
- get: () => {
- return {
- subscribe: () => {
- }
- }
- }
- };
TestBed.configureTestingModule({
imports: [
StoreModule.provideStore({
@@ -69,6 +60,7 @@ describe('LogsContainerService', () => {
...TranslationModules
],
providers: [
+ ...MockHttpRequestModules,
AuditLogsService,
ServiceLogsService,
AuditLogsFieldsService,
@@ -83,10 +75,6 @@ describe('LogsContainerService', () => {
ServiceLogsTruncatedService,
TabsService,
LogsContainerService,
- {
- provide: HttpClientService,
- useValue: httpClient
- },
UtilsService
]
});
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/services/logs-container.service.ts b/ambari-logsearch/ambari-logsearch-web/src/app/services/logs-container.service.ts
index 3c2493b..ce13e09 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/services/logs-container.service.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/services/logs-container.service.ts
@@ -31,7 +31,7 @@ import * as moment from 'moment-timezone';
import {HttpClientService} from '@app/services/http-client.service';
import {UtilsService} from '@app/services/utils.service';
import {AuditLogsService} from '@app/services/storage/audit-logs.service';
-import {AuditLogsFieldsService} from '@app/services/storage/audit-logs-fields.service';
+import {AuditLogsFieldsService, ResponseRootProperties} from '@app/services/storage/audit-logs-fields.service';
import {AuditLogsGraphDataService} from '@app/services/storage/audit-logs-graph-data.service';
import {ServiceLogsService} from '@app/services/storage/service-logs.service';
import {ServiceLogsFieldsService} from '@app/services/storage/service-logs-fields.service';
@@ -51,11 +51,9 @@ import {ListItem} from '@app/classes/list-item';
import {HomogeneousObject, LogLevelObject} from '@app/classes/object';
import {LogsType, ScrollType, SortingType} from '@app/classes/string';
import {Tab} from '@app/classes/models/tab';
-import {LogField} from '@app/classes/models/log-field';
+import {AuditFieldsDefinitionSet} from "@app/classes/object";
import {AuditLog} from '@app/classes/models/audit-log';
-import {AuditLogField} from '@app/classes/models/audit-log-field';
import {ServiceLog} from '@app/classes/models/service-log';
-import {ServiceLogField} from '@app/classes/models/service-log-field';
import {BarGraph} from '@app/classes/models/bar-graph';
import {NodeItem} from '@app/classes/models/node-item';
import {CommonEntry} from '@app/classes/models/common-entry';
@@ -601,17 +599,10 @@ export class LogsContainerService {
activeLogsType: LogsType;
- filtersFormChange: Subject<void> = new Subject();
+ // Todo move this prop to a state of the audit log container
+ activeAuditGroup: string = ResponseRootProperties.DEFAULTS;
- private columnsMapper<FieldT extends LogField>(fields: FieldT[]): ListItem[] {
- return fields.filter((field: FieldT): boolean => field.isAvailable).map((field: FieldT): ListItem => {
- return {
- value: field.name,
- label: field.displayName || field.name,
- isChecked: field.isDisplayed
- };
- });
- }
+ filtersFormChange: Subject<void> = new Subject();
private logsMapper<LogT extends AuditLog & ServiceLog>(result: [LogT[], ListItem[]]): LogT[] {
const [logs, fields] = result;
@@ -631,9 +622,9 @@ export class LogsContainerService {
private serviceLogsSource: Observable<ServiceLog[]> = this.serviceLogsStorage.getAll();
- auditLogsColumns: Observable<ListItem[]> = this.auditLogsFieldsStorage.getAll().map(this.columnsMapper);
+ auditLogsColumns: Observable<ListItem[]> = this.auditLogsFieldsStorage.getParameter(ResponseRootProperties.DEFAULTS).map(this.utils.logFieldToListItemMapper);
- serviceLogsColumns: Observable<ListItem[]> = this.serviceLogsFieldsStorage.getAll().map(this.columnsMapper);
+ serviceLogsColumns: Observable<ListItem[]> = this.serviceLogsFieldsStorage.getAll().map(this.utils.logFieldToListItemMapper);
serviceLogs: Observable<ServiceLog[]> = Observable.combineLatest(
this.serviceLogsSource, this.serviceLogsColumns
@@ -827,21 +818,17 @@ export class LogsContainerService {
this.httpClient.get('serviceLogsFields').subscribe((response: Response): void => {
const jsonResponse = response.json();
if (jsonResponse) {
- this.serviceLogsFieldsStorage.addInstances(this.getColumnsArray(jsonResponse, ServiceLogField));
+ this.serviceLogsFieldsStorage.addInstances(jsonResponse);
}
});
this.httpClient.get('auditLogsFields').subscribe((response: Response): void => {
- const jsonResponse = response.json();
+ const jsonResponse:AuditFieldsDefinitionSet = response.json();
if (jsonResponse) {
- this.auditLogsFieldsStorage.addInstances(this.getColumnsArray(jsonResponse, AuditLogField));
+ this.auditLogsFieldsStorage.setParameters(jsonResponse);
}
});
}
- private getColumnsArray(keysObject: any, fieldClass: any): any[] {
- return Object.keys(keysObject).map((key: string): {fieldClass} => new fieldClass(key));
- }
-
getStartTimeMoment = (selection: TimeUnitListItem, end: moment.Moment): moment.Moment | undefined => {
let time;
const value = selection && selection.value;
@@ -1000,13 +987,13 @@ export class LogsContainerService {
const requestComponentsData:Observable<Response> = this.httpClient.get('components');
const requestComponentsName:Observable<Response> = this.httpClient.get('serviceComponentsName');
const requests = Observable.combineLatest(requestComponentsName, requestComponentsData);
- requests.subscribe((responses:Response[]) => {
- const componentsNames = responses[0].json();
- const componentsData = responses[1].json();
+ requests.subscribe(([componentsNamesResponse, componentsDataResponse]:Response[]) => {
+ const componentsNames = componentsNamesResponse.json();
+ const componentsData = componentsDataResponse.json();
const components = componentsData && componentsData.vNodeList.map((item): NodeItem => {
const component = componentsNames.metadata.find(component => component.name === item.name);
return Object.assign(item, {
- label: component.label || item.name,
+ label: component && (component.label || item.name),
group: component && component.group && {
name: component.group,
label: componentsNames.groups[component.group]
@@ -1064,9 +1051,12 @@ export class LogsContainerService {
}
updateSelectedColumns(columnNames: string[], logsType: string): void {
- this.logsTypeMap[logsType].fieldsModel.mapCollection(item => Object.assign({}, item, {
- isDisplayed: columnNames.indexOf(item.name) > -1
- }));
+ const functionName: string = logsType === 'auditLogs' ? 'mapFieldSetGroup' : 'mapCollection';
+ const modifierFn: Function = (item) => Object.assign({}, item, {
+ visible: columnNames.indexOf(item.name) > -1
+ });
+ const params = [modifierFn, logsType === 'auditLogs' ? this.activeAuditGroup : undefined];
+ this.logsTypeMap[logsType].fieldsModel[functionName](...params);
}
openServiceLog(log: ServiceLog): void {
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/services/mock-api-data.service.ts b/ambari-logsearch/ambari-logsearch-web/src/app/services/mock-api-data.service.ts
index b7c93a1..6ac075a 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/services/mock-api-data.service.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/services/mock-api-data.service.ts
@@ -20,8 +20,9 @@ import {URLSearchParams, Response, ResponseOptions} from '@angular/http';
import {InMemoryDbService, InMemoryBackendService, createErrorResponse} from 'angular-in-memory-web-api';
import {Observable} from 'rxjs/Observable';
import {Subscriber} from 'rxjs/Subscriber';
+import 'rxjs/add/operator/delay';
import * as moment from 'moment';
-import {mockData} from '@app/mock-data';
+import {mockDataByUrl} from '@app/mock-data-by-url';
export class mockBackendService extends InMemoryBackendService {
getLocation(url: string): any {
@@ -123,24 +124,30 @@ export class mockApiDataService implements InMemoryDbService {
};
}
+ private findDataByUrlPatter(path: string): {[key: string]: any} | undefined | Function {
+ const paths: string[] = Object.keys(mockDataByUrl);
+ const matchedPath:string = paths.find((key:string):boolean => {
+ const test:RegExp = new RegExp(key);
+ return test.test(path);
+ });
+ return mockDataByUrl[matchedPath];
+ }
+
get(interceptorArgs: any): Observable<Response> {
- const query = interceptorArgs.requestInfo.query,
- path = interceptorArgs.requestInfo.base + interceptorArgs.requestInfo.collectionName,
- pathArray = path.split('/').filter(part => part !== '');
+ const query = interceptorArgs.requestInfo.query;
+ const path = interceptorArgs.requestInfo.base + interceptorArgs.requestInfo.collectionName;
if (query && query.paramsMap.has('static') && interceptorArgs.passThruBackend) {
return interceptorArgs.passThruBackend.createConnection(interceptorArgs.requestInfo.req).response;
} else {
- let is404 = false;
- const allData = pathArray.reduce((currentObject, currentKey, index, array) => {
- if (!currentObject && index < array.length - 1) {
- return {};
- } else if (currentObject.hasOwnProperty(currentKey)) {
- return currentObject[currentKey];
- } else {
- is404 = true;
- return {};
- }
- }, interceptorArgs.db);
+ let allData = mockDataByUrl[path];
+ if (!allData) {
+ allData = this.findDataByUrlPatter(path);
+ }
+ if (typeof allData === 'function') {
+ allData = allData(query);
+ }
+ let is404 = !allData;
+
if (is404) {
return new Observable<Response>((subscriber: Subscriber<Response>) => subscriber.error(
new Response(createErrorResponse(
@@ -216,6 +223,6 @@ export class mockApiDataService implements InMemoryDbService {
}
createDb() {
- return mockData;
+ return {};
}
}
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/services/storage/audit-logs-fields.service.ts b/ambari-logsearch/ambari-logsearch-web/src/app/services/storage/audit-logs-fields.service.ts
index 0950de6..b061a53 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/services/storage/audit-logs-fields.service.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/services/storage/audit-logs-fields.service.ts
@@ -18,15 +18,58 @@
import {Injectable} from '@angular/core';
import {Store} from '@ngrx/store';
-import {AppStore, CollectionModelService, getCollectionReducer} from '@app/classes/models/store';
+import {AppStore, ObjectModelService, getObjectReducer} from '@app/classes/models/store';
+import {LogField} from "@app/classes/object";
+import {Observable} from "rxjs/Observable";
export const modelName = 'auditLogsFields';
+export const enum ResponseRootProperties {
+ DEFAULTS = 'defaults',
+ OVERRIDES = 'overrides'
+};
+
@Injectable()
-export class AuditLogsFieldsService extends CollectionModelService {
+export class AuditLogsFieldsService extends ObjectModelService {
constructor(store: Store<AppStore>) {
super(modelName, store);
}
+
+ /**
+ * The goal is to return with the proper fieldset for a given group/service and to return with the default fieldset
+ * when the group has no overrides.
+ * @param {string} group The name of the group/service
+ * @returns {Observable<LogField[]>}
+ */
+ getFieldSetForGroup(group: string): Observable<LogField[]> {
+ return Observable.combineLatest(this.getParameter(ResponseRootProperties.DEFAULTS), this.getParameter(ResponseRootProperties.OVERRIDES))
+ .map(([defaults, overrides]): LogField[] => {
+ return overrides[group] || defaults;
+ });
+ }
+
+ /**
+ * The goal is to update the given fieldset group with the given modifier function. It will map over the selected
+ * group. Right now we let to change the defaults fieldset.
+ * @param {Function} modifier Called by the map method.
+ * @param {string} group The service/group name owner of the fieldset
+ */
+ mapFieldSetGroup(modifier: Function, group: string) {
+ Observable.combineLatest(
+ this.getParameter(ResponseRootProperties.DEFAULTS),
+ this.getParameter(ResponseRootProperties.OVERRIDES)
+ ).first().subscribe(([defaults, overrides]) => {
+ const fieldset = (overrides[group] || defaults).map(modifier);
+ const payload = group === ResponseRootProperties.DEFAULTS ? fieldset : Object.assign({}, overrides, {
+ [group]: fieldset
+ });
+ this.setParameter(
+ group === ResponseRootProperties.DEFAULTS ? ResponseRootProperties.DEFAULTS : ResponseRootProperties.OVERRIDES,
+ payload
+ );
+ });
+ }
+
}
-export const auditLogsFields = getCollectionReducer(modelName);
+export const auditLogsFields = getObjectReducer(modelName);
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/services/user-settings.service.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/services/user-settings.service.spec.ts
index 33c0459..08a83aa 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/services/user-settings.service.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/services/user-settings.service.spec.ts
@@ -17,6 +17,7 @@
*/
import {TestBed, inject} from '@angular/core/testing';
+import {MockHttpRequestModules, TranslationModules} from "@app/test-config.spec";
import {StoreModule} from '@ngrx/store';
import {AuditLogsService, auditLogs} from '@app/services/storage/audit-logs.service';
import {ServiceLogsService, serviceLogs} from '@app/services/storage/service-logs.service';
@@ -33,7 +34,6 @@ import {ComponentsService, components} from '@app/services/storage/components.se
import {HostsService, hosts} from '@app/services/storage/hosts.service';
import {ServiceLogsTruncatedService, serviceLogsTruncated} from '@app/services/storage/service-logs-truncated.service';
import {TabsService, tabs} from '@app/services/storage/tabs.service';
-import {HttpClientService} from '@app/services/http-client.service';
import {LogsContainerService} from '@app/services/logs-container.service';
import {UtilsService} from '@app/services/utils.service';
@@ -41,14 +41,6 @@ import {UserSettingsService} from './user-settings.service';
describe('UserSettingsService', () => {
beforeEach(() => {
- const httpClient = {
- get: () => {
- return {
- subscribe: () => {
- }
- }
- }
- };
TestBed.configureTestingModule({
imports: [
StoreModule.provideStore({
@@ -65,14 +57,12 @@ describe('UserSettingsService', () => {
hosts,
serviceLogsTruncated,
tabs
- })
+ }),
+ ...TranslationModules
],
providers: [
+ ...MockHttpRequestModules,
UserSettingsService,
- {
- provide: HttpClientService,
- useValue: httpClient
- },
LogsContainerService,
UtilsService,
AuditLogsService,
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/services/utils.service.ts b/ambari-logsearch/ambari-logsearch-web/src/app/services/utils.service.ts
index eae8928..5940b0f 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/services/utils.service.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/services/utils.service.ts
@@ -19,7 +19,7 @@
import {Injectable} from '@angular/core';
import * as moment from 'moment-timezone';
import {ListItem} from '@app/classes/list-item';
-import {HomogeneousObject} from '@app/classes/object';
+import {HomogeneousObject, LogField} from '@app/classes/object';
import {NodeItem} from '@app/classes/models/node-item';
@Injectable()
@@ -133,6 +133,16 @@ export class UtilsService {
};
}
+ logFieldToListItemMapper<FieldT extends LogField>(fields: FieldT[]): ListItem[] {
+ return fields ? fields.map((field: FieldT): ListItem => {
+ return {
+ value: field.name,
+ label: field.label || field.name,
+ isChecked: field.visible
+ };
+ }) : [];
+ }
+
/**
* Method that updates source array with only the values which aren't already present there
* @param {Array} sourceArray
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/test-config.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/test-config.spec.ts
index 8fc6c87..4ae8df1 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/test-config.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/test-config.spec.ts
@@ -16,9 +16,13 @@
* limitations under the License.
*/
-import {HttpModule, Http} from '@angular/http';
+import {HttpModule, Http, BrowserXhr, XSRFStrategy, ResponseOptions, XHRBackend} from '@angular/http';
import {TranslateModule, TranslateLoader} from '@ngx-translate/core';
import {TranslateHttpLoader} from '@ngx-translate/http-loader';
+import {Injector} from "@angular/core";
+import {InMemoryBackendService} from "angular-in-memory-web-api";
+import {mockApiDataService} from "@app/services/mock-api-data.service";
+import {HttpClientService} from "@app/services/http-client.service";
function HttpLoaderFactory(http: Http) {
return new TranslateHttpLoader(http, 'assets/i18n/', '.json');
@@ -34,3 +38,23 @@ export const TranslationModules = [
}
})
];
+
+export const MockHttpRequestModules = [
+ HttpClientService,
+ {
+ provide: XHRBackend,
+ useFactory: getTestXHRBackend,
+ deps: [Injector, BrowserXhr, XSRFStrategy, ResponseOptions]
+ }
+];
+
+export function getTestXHRBackend(injector: Injector, browser: BrowserXhr, xsrf: XSRFStrategy, options: ResponseOptions) {
+ return new InMemoryBackendService(
+ injector,
+ new mockApiDataService(),
+ {
+ passThruUnknownUrl: true,
+ rootPath: ''
+ }
+ )
+}
diff --git a/ambari-logsearch/ambari-logsearch-web/yarn.lock b/ambari-logsearch/ambari-logsearch-web/yarn.lock
index 9eb5d04..66150e2 100644
--- a/ambari-logsearch/ambari-logsearch-web/yarn.lock
+++ b/ambari-logsearch/ambari-logsearch-web/yarn.lock
@@ -528,6 +528,10 @@ angular2-moment@^1.4.0:
dependencies:
moment "^2.16.0"
+angular2-take-until-destroy@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/angular2-take-until-destroy/-/angular2-take-until-destroy-2.0.1.tgz#6b502a55f7859f0fca1a7d1357c472162ffad969"
+
ansi-align@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f"
@@ -3321,6 +3325,10 @@ is-number@^2.0.2, is-number@^2.1.0:
dependencies:
kind-of "^3.0.2"
+is-number@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff"
+
is-obj@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
@@ -3732,6 +3740,10 @@ kind-of@^3.0.2, kind-of@^3.2.2:
dependencies:
is-buffer "^1.1.5"
+kind-of@^6.0.0:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
+
klaw@^1.0.0:
version "1.3.1"
resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439"
@@ -3954,6 +3966,10 @@ math-expression-evaluator@^1.2.14:
version "1.2.17"
resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac"
+math-random@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac"
+
md5.js@^1.3.4:
version "1.3.4"
resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d"
@@ -5094,6 +5110,14 @@ randomatic@^1.1.3:
is-number "^2.0.2"
kind-of "^3.0.2"
+randomatic@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.0.0.tgz#d35490030eb4f7578de292ce6dfb04a91a128923"
+ dependencies:
+ is-number "^4.0.0"
+ kind-of "^6.0.0"
+ math-random "^1.0.1"
+
randombytes@^2.0.0, randombytes@^2.0.1:
version "2.0.5"
resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.5.tgz#dc009a246b8d09a177b4b7a0ae77bc570f4b1b79"
--
To stop receiving notification emails like this one, please contact
oleewere@apache.org.