mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 01:38:56 -04:00
[Index Management] Fix managed data streams badge (#173408)
## Summary
This PR fixes the badge "managed" missing from the data streams list.
The code used to check that the data stream has both conditions for a
managed data streams `meta.managed: true` and `meta.managed_by:
'ingest-manager'`. The check for `ingest-manager` is not coorect since
it's been renamed to fleet. Instead of updating the check though, I
decided to only leave the condition for `meta.managed : true` and I
removed all mentions of "Fleet" from the Data streams tab. I believe
that is more consistent for the UI, since we don't mention
"Fleet-managed" anywhere else like ILM, index templates etc.
### Screenshot
<img width="902" alt="Screenshot 2023-12-18 at 16 11 35"
src="d9e54d54
-12a2-4031-a51a-e534e40822e3">
---------
Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
parent
33f8368132
commit
6d909fff99
12 changed files with 43 additions and 53 deletions
|
@ -71,7 +71,7 @@ describe('Data Streams tab', () => {
|
|||
expect(exists('emptyPrompt')).toBe(true);
|
||||
});
|
||||
|
||||
test('when Ingest Manager is disabled, goes to index templates tab when "Get started" link is clicked', async () => {
|
||||
test('when Fleet is disabled, goes to index templates tab when "Get started" link is clicked', async () => {
|
||||
testBed = await setup(httpSetup, {
|
||||
plugins: {},
|
||||
url: urlServiceMock,
|
||||
|
@ -796,7 +796,7 @@ describe('Data Streams tab', () => {
|
|||
_meta: {
|
||||
package: 'test',
|
||||
managed: true,
|
||||
managed_by: 'ingest-manager',
|
||||
managed_by: 'fleet',
|
||||
},
|
||||
});
|
||||
const nonManagedDataStream = createDataStreamPayload({ name: 'non-managed-data-stream' });
|
||||
|
@ -813,19 +813,12 @@ describe('Data Streams tab', () => {
|
|||
testBed.component.update();
|
||||
});
|
||||
|
||||
test('listed in the table with Fleet-managed label', () => {
|
||||
test('listed in the table with managed label', () => {
|
||||
const { table } = testBed;
|
||||
const { tableCellsValues } = table.getMetaData('dataStreamTable');
|
||||
|
||||
expect(tableCellsValues).toEqual([
|
||||
[
|
||||
'',
|
||||
`managed-data-stream${nonBreakingSpace}Fleet-managed`,
|
||||
'green',
|
||||
'1',
|
||||
'7 days',
|
||||
'Delete',
|
||||
],
|
||||
['', `managed-data-stream${nonBreakingSpace}Managed`, 'green', '1', '7 days', 'Delete'],
|
||||
['', 'non-managed-data-stream', 'green', '1', '7 days', 'Delete'],
|
||||
]);
|
||||
});
|
||||
|
@ -835,14 +828,7 @@ describe('Data Streams tab', () => {
|
|||
let { tableCellsValues } = table.getMetaData('dataStreamTable');
|
||||
|
||||
expect(tableCellsValues).toEqual([
|
||||
[
|
||||
'',
|
||||
`managed-data-stream${nonBreakingSpace}Fleet-managed`,
|
||||
'green',
|
||||
'1',
|
||||
'7 days',
|
||||
'Delete',
|
||||
],
|
||||
['', `managed-data-stream${nonBreakingSpace}Managed`, 'green', '1', '7 days', 'Delete'],
|
||||
['', 'non-managed-data-stream', 'green', '1', '7 days', 'Delete'],
|
||||
]);
|
||||
|
||||
|
|
|
@ -12,9 +12,8 @@ import { EuiIcon, EuiToolTip } from '@elastic/eui';
|
|||
import { splitSizeAndUnits, DataStream } from '../../../common';
|
||||
import { timeUnits, extraTimeUnits } from '../constants/time_units';
|
||||
|
||||
export const isFleetManaged = (dataStream: DataStream): boolean => {
|
||||
// TODO check if the wording will change to 'fleet'
|
||||
return Boolean(dataStream._meta?.managed && dataStream._meta?.managed_by === 'ingest-manager');
|
||||
export const isManaged = (dataStream: DataStream): boolean => {
|
||||
return Boolean(dataStream._meta?.managed);
|
||||
};
|
||||
|
||||
export const filterDataStreams = (
|
||||
|
@ -23,13 +22,13 @@ export const filterDataStreams = (
|
|||
): DataStream[] => {
|
||||
return dataStreams.filter((dataStream: DataStream) => {
|
||||
// include all data streams that are neither hidden nor managed
|
||||
if (!dataStream.hidden && !isFleetManaged(dataStream)) {
|
||||
if (!dataStream.hidden && !isManaged(dataStream)) {
|
||||
return true;
|
||||
}
|
||||
if (dataStream.hidden && visibleTypes.includes('hidden')) {
|
||||
return true;
|
||||
}
|
||||
return isFleetManaged(dataStream) && visibleTypes.includes('managed');
|
||||
return isManaged(dataStream) && visibleTypes.includes('managed');
|
||||
});
|
||||
};
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ import React from 'react';
|
|||
import { EuiBadge, EuiBadgeGroup } from '@elastic/eui';
|
||||
import { FormattedMessage } from '@kbn/i18n-react';
|
||||
import { DataStream } from '../../../../../common';
|
||||
import { isFleetManaged } from '../../../lib/data_streams';
|
||||
import { isManaged } from '../../../lib/data_streams';
|
||||
|
||||
interface Props {
|
||||
dataStream: DataStream;
|
||||
|
@ -17,12 +17,12 @@ interface Props {
|
|||
|
||||
export const DataStreamsBadges: React.FunctionComponent<Props> = ({ dataStream }) => {
|
||||
const badges = [];
|
||||
if (isFleetManaged(dataStream)) {
|
||||
if (isManaged(dataStream)) {
|
||||
badges.push(
|
||||
<EuiBadge color="hollow" key={'managed'}>
|
||||
<FormattedMessage
|
||||
id="xpack.idxMgmt.dataStreamList.table.managedDataStreamBadge"
|
||||
defaultMessage="Fleet-managed"
|
||||
defaultMessage="Managed"
|
||||
/>
|
||||
</EuiBadge>
|
||||
);
|
||||
|
|
|
@ -84,7 +84,7 @@ export const DataStreamList: React.FunctionComponent<RouteComponentProps<MatchPa
|
|||
const [filters, setFilters] = useState<Filters<DataStreamFilterName>>({
|
||||
managed: {
|
||||
name: i18n.translate('xpack.idxMgmt.dataStreamList.viewManagedLabel', {
|
||||
defaultMessage: 'Fleet-managed data streams',
|
||||
defaultMessage: 'Managed data streams',
|
||||
}),
|
||||
checked: 'on',
|
||||
},
|
||||
|
@ -226,7 +226,7 @@ export const DataStreamList: React.FunctionComponent<RouteComponentProps<MatchPa
|
|||
{' ' /* We need this space to separate these two sentences. */}
|
||||
{isFleetEnabled ? (
|
||||
<FormattedMessage
|
||||
id="xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsCtaIngestManagerMessage"
|
||||
id="xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsCtaFleetMessage"
|
||||
defaultMessage="Get started with data streams in {link}."
|
||||
values={{
|
||||
link: (
|
||||
|
@ -235,7 +235,7 @@ export const DataStreamList: React.FunctionComponent<RouteComponentProps<MatchPa
|
|||
href={getUrlForApp('fleet')}
|
||||
>
|
||||
{i18n.translate(
|
||||
'xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsCtaIngestManagerLink',
|
||||
'xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsCtaFleetLink',
|
||||
{
|
||||
defaultMessage: 'Fleet',
|
||||
}
|
||||
|
|
|
@ -18390,7 +18390,6 @@
|
|||
"xpack.idxMgmt.createIndex.successfullyCreatedIndexMessage": "Création réussie de l'index : {indexName}",
|
||||
"xpack.idxMgmt.dataStreamList.dataStreamsDescription": "Les flux de données conservent des données de séries temporelles sur plusieurs index. {learnMoreLink}",
|
||||
"xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsCtaIndexTemplateMessage": "Lancez-vous avec les flux de données en créant un {link}.",
|
||||
"xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsCtaIngestManagerMessage": "Lancez-vous avec les flux de données dans {link}.",
|
||||
"xpack.idxMgmt.dataStreamList.table.deleteDataStreamsButtonLabel": "Supprimer {count, plural, one {le flux de données} many {flux de données} other {flux de données}}",
|
||||
"xpack.idxMgmt.deleteDataStreamsConfirmationModal.confirmButtonLabel": "Supprimer {dataStreamsCount, plural, one {le flux de données} many {flux de données} other {flux de données}}",
|
||||
"xpack.idxMgmt.deleteDataStreamsConfirmationModal.deleteDescription": "Vous êtes sur le point de supprimer {dataStreamsCount, plural, one {ce flux de données} many {ces flux de données} other {ces flux de données}} :",
|
||||
|
@ -18687,7 +18686,6 @@
|
|||
"xpack.idxMgmt.dataStreamDetailPanel.timestampFieldTitle": "Champ d'horodatage",
|
||||
"xpack.idxMgmt.dataStreamDetailPanel.timestampFieldToolTip": "Champ d'horodatage partagé par tous les documents du flux de données.",
|
||||
"xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsCtaIndexTemplateLink": "modèle d'index composable",
|
||||
"xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsCtaIngestManagerLink": "Fleet",
|
||||
"xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsDescription": "Les flux de données conservent des données de séries temporelles sur plusieurs index.",
|
||||
"xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsTitle": "Vous n'avez pas encore de flux de données",
|
||||
"xpack.idxMgmt.dataStreamList.loadingDataStreamsDescription": "Chargement des flux de données en cours…",
|
||||
|
|
|
@ -18403,7 +18403,6 @@
|
|||
"xpack.idxMgmt.createIndex.successfullyCreatedIndexMessage": "インデックスの作成が正常に完了しました:{indexName}",
|
||||
"xpack.idxMgmt.dataStreamList.dataStreamsDescription": "データストリームは複数のインデックスの時系列データを格納します。{learnMoreLink}",
|
||||
"xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsCtaIndexTemplateMessage": "{link}を作成して、データストリームを開始します。",
|
||||
"xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsCtaIngestManagerMessage": "{link}でデータストリームを開始します。",
|
||||
"xpack.idxMgmt.dataStreamList.table.deleteDataStreamsButtonLabel": "{count, plural, other {データストリーム}}削除",
|
||||
"xpack.idxMgmt.deleteDataStreamsConfirmationModal.confirmButtonLabel": "{dataStreamsCount, plural, other {データストリーム}}削除",
|
||||
"xpack.idxMgmt.deleteDataStreamsConfirmationModal.deleteDescription": "{dataStreamsCount, plural, other {これらのデータストリーム}}を削除しようとしています:",
|
||||
|
@ -18700,7 +18699,6 @@
|
|||
"xpack.idxMgmt.dataStreamDetailPanel.timestampFieldTitle": "タイムスタンプフィールド",
|
||||
"xpack.idxMgmt.dataStreamDetailPanel.timestampFieldToolTip": "タイムスタンプフィールドはデータストリームのすべてのドキュメントで共有されます。",
|
||||
"xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsCtaIndexTemplateLink": "作成可能なインデックステンプレート",
|
||||
"xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsCtaIngestManagerLink": "Fleet",
|
||||
"xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsDescription": "データストリームは複数のインデックスの時系列データを格納します。",
|
||||
"xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsTitle": "まだデータストリームがありません",
|
||||
"xpack.idxMgmt.dataStreamList.loadingDataStreamsDescription": "データストリームを読み込んでいます…",
|
||||
|
|
|
@ -18470,7 +18470,6 @@
|
|||
"xpack.idxMgmt.createIndex.successfullyCreatedIndexMessage": "已成功创建索引:{indexName}",
|
||||
"xpack.idxMgmt.dataStreamList.dataStreamsDescription": "数据流在多个索引上存储时序数据。{learnMoreLink}",
|
||||
"xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsCtaIndexTemplateMessage": "通过创建 {link} 来开始使用数据流。",
|
||||
"xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsCtaIngestManagerMessage": "开始使用 {link} 中的数据流。",
|
||||
"xpack.idxMgmt.dataStreamList.table.deleteDataStreamsButtonLabel": "删除 {count, plural, other {数据流}}",
|
||||
"xpack.idxMgmt.deleteDataStreamsConfirmationModal.confirmButtonLabel": "删除 {dataStreamsCount, plural, other {数据流}}",
|
||||
"xpack.idxMgmt.deleteDataStreamsConfirmationModal.deleteDescription": "您即将删除{dataStreamsCount, plural, other {以下数据流}}:",
|
||||
|
@ -18767,7 +18766,6 @@
|
|||
"xpack.idxMgmt.dataStreamDetailPanel.timestampFieldTitle": "时间戳字段",
|
||||
"xpack.idxMgmt.dataStreamDetailPanel.timestampFieldToolTip": "时间戳字段由数据流中的所有文档共享。",
|
||||
"xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsCtaIndexTemplateLink": "可组合索引模板",
|
||||
"xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsCtaIngestManagerLink": "Fleet",
|
||||
"xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsDescription": "数据流存储多个索引的时序数据。",
|
||||
"xpack.idxMgmt.dataStreamList.emptyPrompt.noDataStreamsTitle": "您尚未有任何数据流",
|
||||
"xpack.idxMgmt.dataStreamList.loadingDataStreamsDescription": "正在加载数据流……",
|
||||
|
|
|
@ -78,7 +78,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
|
|||
|
||||
it('shows the details flyout when clicking on a data stream', async () => {
|
||||
// Open details flyout
|
||||
await pageObjects.indexManagement.clickDataStreamAt(0);
|
||||
await pageObjects.indexManagement.clickDataStreamNameLink(TEST_DS_NAME);
|
||||
// Verify url is stateful
|
||||
const url = await browser.getCurrentUrl();
|
||||
expect(url).to.contain(`/data_streams/${TEST_DS_NAME}`);
|
||||
|
@ -90,7 +90,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
|
|||
|
||||
it('allows to update data retention', async () => {
|
||||
// Open details flyout
|
||||
await pageObjects.indexManagement.clickDataStreamAt(0);
|
||||
await pageObjects.indexManagement.clickDataStreamNameLink(TEST_DS_NAME);
|
||||
// Open the edit retention dialog
|
||||
await testSubjects.click('manageDataStreamButton');
|
||||
await testSubjects.click('editDataRetentionButton');
|
||||
|
@ -112,7 +112,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
|
|||
|
||||
it('allows to disable data retention', async () => {
|
||||
// Open details flyout
|
||||
await pageObjects.indexManagement.clickDataStreamAt(0);
|
||||
await pageObjects.indexManagement.clickDataStreamNameLink(TEST_DS_NAME);
|
||||
// Open the edit retention dialog
|
||||
await testSubjects.click('manageDataStreamButton');
|
||||
await testSubjects.click('editDataRetentionButton');
|
||||
|
|
|
@ -22,9 +22,6 @@ export function IndexManagementPageProvider({ getService }: FtrProviderContext)
|
|||
async reloadIndicesButton() {
|
||||
return await testSubjects.find('reloadIndicesButton');
|
||||
},
|
||||
async toggleRollupIndices() {
|
||||
await testSubjects.click('checkboxToggles-rollupToggle');
|
||||
},
|
||||
async toggleHiddenIndices() {
|
||||
await testSubjects.click('indexTableIncludeHiddenIndicesToggle');
|
||||
},
|
||||
|
@ -34,9 +31,8 @@ export function IndexManagementPageProvider({ getService }: FtrProviderContext)
|
|||
await policyDetailsLinks[indexOfRow].click();
|
||||
},
|
||||
|
||||
async clickDataStreamAt(indexOfRow: number): Promise<void> {
|
||||
const dataStreamLinks = await testSubjects.findAll('nameLink');
|
||||
await dataStreamLinks[indexOfRow].click();
|
||||
async clickDataStreamNameLink(name: string): Promise<void> {
|
||||
await find.clickByLinkText(name);
|
||||
},
|
||||
|
||||
async clickDeleteEnrichPolicyAt(indexOfRow: number): Promise<void> {
|
||||
|
|
|
@ -9,11 +9,7 @@ import { FtrProviderContext } from '../../../ftr_provider_context';
|
|||
|
||||
export default ({ loadTestFile }: FtrProviderContext) => {
|
||||
describe('Serverless Common UI - Management', function () {
|
||||
loadTestFile(require.resolve('./index_management/index_templates'));
|
||||
loadTestFile(require.resolve('./index_management/indices'));
|
||||
loadTestFile(require.resolve('./index_management/create_enrich_policy'));
|
||||
loadTestFile(require.resolve('./index_management/enrich_policies'));
|
||||
loadTestFile(require.resolve('./index_management/component_templates'));
|
||||
loadTestFile(require.resolve('./index_management'));
|
||||
loadTestFile(require.resolve('./transforms/search_bar_features'));
|
||||
loadTestFile(require.resolve('./transforms/transform_list'));
|
||||
loadTestFile(require.resolve('./advanced_settings'));
|
||||
|
|
|
@ -88,7 +88,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
|
|||
|
||||
it('shows the details flyout when clicking on a data stream', async () => {
|
||||
// Open details flyout
|
||||
await pageObjects.indexManagement.clickDataStreamAt(0);
|
||||
await pageObjects.indexManagement.clickDataStreamNameLink(TEST_DS_NAME);
|
||||
// Verify url is stateful
|
||||
const url = await browser.getCurrentUrl();
|
||||
expect(url).to.contain(`/data_streams/${TEST_DS_NAME}`);
|
||||
|
@ -100,7 +100,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
|
|||
|
||||
it('allows to update data retention', async () => {
|
||||
// Open details flyout
|
||||
await pageObjects.indexManagement.clickDataStreamAt(0);
|
||||
await pageObjects.indexManagement.clickDataStreamNameLink(TEST_DS_NAME);
|
||||
// Open the edit retention dialog
|
||||
await testSubjects.click('manageDataStreamButton');
|
||||
await testSubjects.click('editDataRetentionButton');
|
||||
|
@ -122,7 +122,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
|
|||
|
||||
it('allows to disable data retention', async () => {
|
||||
// Open details flyout
|
||||
await pageObjects.indexManagement.clickDataStreamAt(0);
|
||||
await pageObjects.indexManagement.clickDataStreamNameLink(TEST_DS_NAME);
|
||||
// Open the edit retention dialog
|
||||
await testSubjects.click('manageDataStreamButton');
|
||||
await testSubjects.click('editDataRetentionButton');
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { FtrProviderContext } from '../../../../ftr_provider_context';
|
||||
|
||||
export default ({ loadTestFile }: FtrProviderContext) => {
|
||||
describe('Index Management', function () {
|
||||
loadTestFile(require.resolve('./component_templates'));
|
||||
loadTestFile(require.resolve('./create_enrich_policy'));
|
||||
loadTestFile(require.resolve('./data_streams'));
|
||||
loadTestFile(require.resolve('./enrich_policies'));
|
||||
loadTestFile(require.resolve('./index_templates'));
|
||||
loadTestFile(require.resolve('./indices'));
|
||||
});
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue