Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
bb60359
Fix small tipo
Dec 19, 2018
c00b875
Merge remote-tracking branch 'upstream/master' into feature/ccr
Dec 20, 2018
388e41d
Merge remote-tracking branch 'upstream/master' into feature/ccr
cjcenizal Dec 20, 2018
e958eee
[CCR] Refactor redux for Auto-follow pattern detail panel (#27491)
sebelga Dec 21, 2018
43f769c
Merge remote-tracking branch 'upstream/master' into feature/ccr
sebelga Dec 26, 2018
e316cc0
[CCR] Add endpoints for fetching and creating follower indices (#27646)
cjcenizal Dec 26, 2018
1ebd9ac
[CCR] Add unit tests for RemoteClusterForm, RemoteClusterList, and R…
cjcenizal Dec 26, 2018
a65bf9f
[CCR] Follower indices table and detail panel (#27804)
jen-huang Dec 27, 2018
35e3307
Merge remote-tracking branch 'upstream/master' into feature/ccr
sebelga Dec 28, 2018
7ff2519
Fix load auto-follow stats load as middleware was removed
sebelga Dec 28, 2018
be371b8
[CCR] Create follower index UI form (#27864)
sebelga Jan 2, 2019
703041f
Update snapshots
jen-huang Jan 2, 2019
2f1d406
Merge remote-tracking branch 'upstream/master' into feature/ccr
jen-huang Jan 2, 2019
396e714
Merge remote-tracking branch 'upstream/master' into feature/ccr
Jan 11, 2019
3d6a8a8
[CCR] Add pause, resume, and unfollow actions for follower indices (#…
jen-huang Jan 11, 2019
19f604a
Merge remote-tracking branch 'upstream/master' into feature/ccr
Jan 14, 2019
17cae34
Merge remote-tracking branch 'upstream/master' into feature/ccr
cjcenizal Jan 16, 2019
0ad8b8c
[CCR] Advanced settings UI for follower indices (#28267)
sebelga Jan 18, 2019
4175a3b
[CCR] Show remote cluster validation in CCR forms, and add edit follo…
sebelga Jan 22, 2019
3a489ce
Merge branch 'master' into feature/ccr
cjcenizal Jan 24, 2019
b7501de
[CCR] Integrate new follower index info ES API (#29153)
jen-huang Jan 24, 2019
5d1e1be
Update snapshots
jen-huang Jan 25, 2019
29ff4bc
[CCR] Surface license errors in-app and refine permissions error UI. …
cjcenizal Jan 28, 2019
2c17fc5
Merge remote-tracking branch 'upstream/master' into feature/ccr
jen-huang Jan 28, 2019
613f302
Refine wording of CCR permission denied page, to specify cluster priv…
cjcenizal Jan 29, 2019
8669d6d
Merge remote-tracking branch 'upstream/master' into feature/ccr
cjcenizal Jan 30, 2019
e12a92a
[CCR] Improve form error handling and general UX (#29419)
sebelga Jan 30, 2019
099317e
Remove unnecessary eslint disable-line
Jan 30, 2019
57f71b3
Merge remote-tracking branch 'upstream/master' into feature/ccr
Jan 30, 2019
03fc0aa
[CCR] Implement Advanced Settings design feedback (#29543)
cjcenizal Jan 30, 2019
60d94bc
[CCR] Follower index list fixes from design feedback (#29484)
jen-huang Jan 30, 2019
b6bc3e2
[CCR] Improve remote clusters test coverage (#29487)
cjcenizal Jan 30, 2019
2c9d368
Merge remote-tracking branch 'upstream/master' into feature/ccr
Feb 1, 2019
cc932b6
[CCR] Adjust spacing around descriptions in list views, link to trans…
cjcenizal Feb 1, 2019
54d776e
Re-order follower index form sections: remote cluster, leader index, …
cjcenizal Feb 1, 2019
4ec25b2
Fix deep-linking to follower index after creating/updating it. (#29865)
cjcenizal Feb 2, 2019
27ff95b
Merge branch 'master' into feature/ccr
cjcenizal Feb 2, 2019
c794f42
[CCR] Copy edits (#29676)
cjcenizal Feb 2, 2019
fad4473
Merge branch 'master' of github.com:elastic/kibana into feature/ccr
cjcenizal Feb 2, 2019
ebc2610
[CCR] Open index after unfollowing leader (#29887)
jen-huang Feb 4, 2019
443a099
[CCR] IE and Screen reader accesibility (#29731)
sebelga Feb 4, 2019
63075cc
[CCR] Add callout to paused follower index detail panel (#30013)
jen-huang Feb 5, 2019
84ee70e
Skip call to ccr stats api if follower index is paused (#30027)
jen-huang Feb 5, 2019
754c886
[CCR] Add integration tests for follower indices (#30064)
sebelga Feb 5, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion src/ui/public/indices/constants/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,9 @@

import { INDEX_PATTERN_ILLEGAL_CHARACTERS_VISIBLE } from 'ui/index_patterns';

export const INDEX_ILLEGAL_CHARACTERS_VISIBLE = INDEX_PATTERN_ILLEGAL_CHARACTERS_VISIBLE.concat(',');
export const INDEX_ILLEGAL_CHARACTERS_VISIBLE = [ ...INDEX_PATTERN_ILLEGAL_CHARACTERS_VISIBLE ];

// Insert the comma into the middle, so it doesn't look as if it has grammatical meaning when
// these characters are rendered in the UI.
const insertionIndex = Math.floor(INDEX_PATTERN_ILLEGAL_CHARACTERS_VISIBLE.length / 2);
INDEX_ILLEGAL_CHARACTERS_VISIBLE.splice(insertionIndex, 0, ',');
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ export const BASE_PATH = '/management/elasticsearch/cross_cluster_replication';
export const BASE_PATH_REMOTE_CLUSTERS = '/management/elasticsearch/remote_clusters';
export const API_BASE_PATH = '/api/cross_cluster_replication';
export const API_REMOTE_CLUSTERS_BASE_PATH = '/api/remote_clusters';
export const API_INDEX_MANAGEMENT_BASE_PATH = '/api/index_management';
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@
export * from './plugin';
export * from './base_path';
export * from './app';
export * from './settings';
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/

export const FOLLOWER_INDEX_ADVANCED_SETTINGS = {
maxReadRequestOperationCount: 5120,
maxOutstandingReadRequests: 12,
maxReadRequestSize: '32mb',
maxWriteRequestOperationCount: 5120,
maxWriteRequestSize: '9223372036854775807b',
maxOutstandingWriteRequests: 9,
maxWriteBufferCount: 2147483647,
maxWriteBufferSize: '512mb',
maxRetryDelay: '500ms',
readPollTimeout: '1m',
};
12 changes: 12 additions & 0 deletions x-pack/plugins/cross_cluster_replication/common/services/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,15 @@ export const wait = (time = 1000) => (data) => {
setTimeout(() => resolve(data), time);
});
};

/**
* Utility to remove empty fields ("") from a request body
*/
export const removeEmptyFields = (body) => (
Object.entries(body).reduce((acc, [key, value]) => {
if (value !== '') {
acc[key] = value;
}
return acc;
}, {})
);
159 changes: 159 additions & 0 deletions x-pack/plugins/cross_cluster_replication/fixtures/follower_index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/

const Chance = require('chance'); // eslint-disable-line import/no-extraneous-dependencies
const chance = new Chance();

export const getFollowerIndexStatsMock = (
name = chance.string(),
shards = [{
id: chance.string(),
remoteCluster: chance.string(),
leaderIndex: chance.string(),
leaderGlobalCheckpoint: chance.integer(),
leaderMaxSequenceNum: chance.integer(),
followerGlobalCheckpoint: chance.integer(),
followerMaxSequenceNum: chance.integer(),
lastRequestedSequenceNum: chance.integer(),
outstandingReadRequestsCount: chance.integer(),
outstandingWriteRequestsCount: chance.integer(),
writeBufferOperationsCount: chance.integer(),
writeBufferSizeBytes: chance.integer(),
followerMappingVersion: chance.integer(),
followerSettingsVersion: chance.integer(),
totalReadTimeMs: chance.integer(),
totalReadRemoteExecTimeMs: chance.integer(),
successfulReadRequestCount: chance.integer(),
failedReadRequestsCount: chance.integer(),
operationsReadCount: chance.integer(),
bytesReadCount: chance.integer(),
totalWriteTimeMs: chance.integer(),
successfulWriteRequestsCount: chance.integer(),
failedWriteRequestsCount: chance.integer(),
operationsWrittenCount: chance.integer(),
readExceptions: [ chance.string() ],
timeSinceLastReadMs: chance.integer(),
}]
) => {
const serializeShard = ({
id,
remoteCluster,
leaderIndex,
leaderGlobalCheckpoint,
leaderMaxSequenceNum,
followerGlobalCheckpoint,
followerMaxSequenceNum,
lastRequestedSequenceNum,
outstandingReadRequestsCount,
outstandingWriteRequestsCount,
writeBufferOperationsCount,
writeBufferSizeBytes,
followerMappingVersion,
followerSettingsVersion,
totalReadTimeMs,
totalReadRemoteExecTimeMs,
successfulReadRequestCount,
failedReadRequestsCount,
operationsReadCount,
bytesReadCount,
totalWriteTimeMs,
successfulWriteRequestsCount,
failedWriteRequestsCount,
operationsWrittenCount,
readExceptions,
timeSinceLastReadMs,
}) => ({
shard_id: id,
remote_cluster: remoteCluster,
leader_index: leaderIndex,
leader_global_checkpoint: leaderGlobalCheckpoint,
leader_max_seq_no: leaderMaxSequenceNum,
follower_global_checkpoint: followerGlobalCheckpoint,
follower_max_seq_no: followerMaxSequenceNum,
last_requested_seq_no: lastRequestedSequenceNum,
outstanding_read_requests: outstandingReadRequestsCount,
outstanding_write_requests: outstandingWriteRequestsCount,
write_buffer_operation_count: writeBufferOperationsCount,
write_buffer_size_in_bytes: writeBufferSizeBytes,
follower_mapping_version: followerMappingVersion,
follower_settings_version: followerSettingsVersion,
total_read_time_millis: totalReadTimeMs,
total_read_remote_exec_time_millis: totalReadRemoteExecTimeMs,
successful_read_requests: successfulReadRequestCount,
failed_read_requests: failedReadRequestsCount,
operations_read: operationsReadCount,
bytes_read: bytesReadCount,
total_write_time_millis: totalWriteTimeMs,
successful_write_requests: successfulWriteRequestsCount,
failed_write_requests: failedWriteRequestsCount,
operations_written: operationsWrittenCount,
read_exceptions: readExceptions,
time_since_last_read_millis: timeSinceLastReadMs,
});

return {
index: name,
shards: shards.map(serializeShard),
};
};

export const getFollowerIndexListStatsMock = (total = 3, names) => {
const list = {
follow_stats: {
indices: [],
},
};

for(let i = 0; i < total; i++) {
list.follow_stats.indices.push(getFollowerIndexStatsMock(names[i]));
}

return list;
};

export const getFollowerIndexInfoMock = (
name = chance.string(),
status = chance.string(),
parameters = {
maxReadRequestOperationCount: chance.string(),
maxOutstandingReadRequests: chance.string(),
maxReadRequestSize: chance.string(),
maxWriteRequestOperationCount: chance.string(),
maxWriteRequestSize: chance.string(),
maxOutstandingWriteRequests: chance.string(),
maxWriteBufferCount: chance.string(),
maxWriteBufferSize: chance.string(),
maxRetryDelay: chance.string(),
readPollTimeout: chance.string(),
}
) => {
return {
follower_index: name,
status,
max_read_request_operation_count: parameters.maxReadRequestOperationCount,
max_outstanding_read_requests: parameters.maxOutstandingReadRequests,
max_read_request_size: parameters.maxReadRequestSize,
max_write_request_operation_count: parameters.maxWriteRequestOperationCount,
max_write_request_size: parameters.maxWriteRequestSize,
max_outstanding_write_requests: parameters.maxOutstandingWriteRequests,
max_write_buffer_count: parameters.maxWriteBufferCount,
max_write_buffer_size: parameters.maxWriteBufferSize,
max_retry_delay: parameters.maxRetryDelay,
read_poll_timeout: parameters.readPollTimeout,
};
};

export const getFollowerIndexListInfoMock = (total = 3) => {
const list = {
follower_indices: [],
};

for(let i = 0; i < total; i++) {
list.follower_indices.push(getFollowerIndexInfoMock());
}

return list;
};
7 changes: 7 additions & 0 deletions x-pack/plugins/cross_cluster_replication/fixtures/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,10 @@ export {
} from './auto_follow_pattern';

export { esErrors } from './es_errors';

export {
getFollowerIndexStatsMock,
getFollowerIndexListStatsMock,
getFollowerIndexInfoMock,
getFollowerIndexListInfoMock,
} from './follower_index';
7 changes: 7 additions & 0 deletions x-pack/plugins/cross_cluster_replication/public/app/_app.scss
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,10 @@
.ccrFollowerIndicesHelpText {
transform: translateY(-3px);
}

/**
* 1. Prevent context menu popover appearing above confirmation modal
*/
.ccrFollowerIndicesDetailPanel {
z-index: $euiZMask - 1; /* 1 */
}
Loading