Skip to content

Commit

Permalink
Improved code based on code review feedback
Browse files Browse the repository at this point in the history
  • Loading branch information
machadoum committed Jul 19, 2024
1 parent 18f62ee commit d863b82
Show file tree
Hide file tree
Showing 7 changed files with 55 additions and 36 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,13 @@ export const requiredRunTimePrivileges = {
privileges: ['read', 'view_index_metadata'],
},
],
cluster: ['manage_transform', 'monitor_transform', 'manage_ingest_pipelines', 'monitor'],
cluster: [
'manage_transform',
'monitor_transform',
'manage_ingest_pipelines',
'monitor',
'manage_index_templates',
],
application: [
{
application: 'kibana-.kibana',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,12 +125,18 @@ const assertHasUninstalledDefinition = (
expect(soClient.delete).toBeCalledTimes(1);

expect(esClient.indices.deleteIndexTemplate).toBeCalledTimes(2);
expect(esClient.indices.deleteIndexTemplate).toBeCalledWith({
name: `entities_v1_history_${definition.id}_index_template`,
});
expect(esClient.indices.deleteIndexTemplate).toBeCalledWith({
name: `entities_v1_latest_${definition.id}_index_template`,
});
expect(esClient.indices.deleteIndexTemplate).toBeCalledWith(
{
name: `entities_v1_history_${definition.id}_index_template`,
},
{ ignore: [404] }
);
expect(esClient.indices.deleteIndexTemplate).toBeCalledWith(
{
name: `entities_v1_latest_${definition.id}_index_template`,
},
{ ignore: [404] }
);
};

describe('install_entity_definition', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,21 +109,6 @@ export async function installEntityDefinition({
await deleteEntityDefinition(soClient, definition, logger);
}

if (installState.indexTemplates.history) {
await deleteTemplate({
esClient,
logger,
name: getEntityHistoryIndexTemplateV1(definition.id),
});
}
if (installState.indexTemplates.latest) {
await deleteTemplate({
esClient,
logger,
name: getEntityLatestIndexTemplateV1(definition.id),
});
}

if (installState.ingestPipelines.history) {
await deleteHistoryIngestPipeline(esClient, definition, logger);
}
Expand All @@ -139,6 +124,21 @@ export async function installEntityDefinition({
await stopAndDeleteLatestTransform(esClient, definition, logger);
}

if (installState.indexTemplates.history) {
await deleteTemplate({
esClient,
logger,
name: getEntityHistoryIndexTemplateV1(definition.id),
});
}
if (installState.indexTemplates.latest) {
await deleteTemplate({
esClient,
logger,
name: getEntityLatestIndexTemplateV1(definition.id),
});
}

throw e;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import {
IndicesPutIndexTemplateRequest,
} from '@elastic/elasticsearch/lib/api/types';
import { ElasticsearchClient, Logger } from '@kbn/core/server';
import { retryTransientEsErrors } from './entities/helpers/retry';

interface TemplateManagementOptions {
esClient: ElasticsearchClient;
Expand All @@ -31,10 +32,10 @@ interface DeleteTemplateOptions {

export async function upsertTemplate({ esClient, template, logger }: TemplateManagementOptions) {
try {
await esClient.indices.putIndexTemplate(template);
await retryTransientEsErrors(() => esClient.indices.putIndexTemplate(template), { logger });
} catch (error: any) {
logger.error(`Error updating entity manager index template: ${error.message}`);
return;
throw error;
}

logger.info(
Expand All @@ -45,19 +46,24 @@ export async function upsertTemplate({ esClient, template, logger }: TemplateMan

export async function deleteTemplate({ esClient, name, logger }: DeleteTemplateOptions) {
try {
await esClient.indices.deleteIndexTemplate({ name });
await retryTransientEsErrors(
() => esClient.indices.deleteIndexTemplate({ name }, { ignore: [404] }),
{ logger }
);
} catch (error: any) {
logger.error(`Error deleting entity manager index template: ${error.message}`);
return;
throw error;
}
}

export async function upsertComponent({ esClient, component, logger }: ComponentManagementOptions) {
try {
await esClient.cluster.putComponentTemplate(component);
await retryTransientEsErrors(() => esClient.cluster.putComponentTemplate(component), {
logger,
});
} catch (error: any) {
logger.error(`Error updating entity manager component template: ${error.message}`);
return;
throw error;
}

logger.info(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ describe('helpers', () => {
const result = getCustomLatestTemplateComponents(definitionId);
expect(result).toEqual([
'test@platform',
'test-history@platform',
'test-latest@platform',
'test@custom',
'test-history@custom',
'test-latest@custom',
]);
});

Expand All @@ -24,9 +24,9 @@ describe('helpers', () => {
const result = getCustomHistoryTemplateComponents(definitionId);
expect(result).toEqual([
'test@platform',
'test-latest@platform',
'test-history@platform',
'test@custom',
'test-latest@custom',
'test-history@custom',
]);
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@

export const getCustomLatestTemplateComponents = (definitionId: string) => [
`${definitionId}@platform`, // @platform goes before so it can be overwritten by custom
`${definitionId}-history@platform`,
`${definitionId}-latest@platform`,
`${definitionId}@custom`,
`${definitionId}-history@custom`,
`${definitionId}-latest@custom`,
];

export const getCustomHistoryTemplateComponents = (definitionId: string) => [
`${definitionId}@platform`, // @platform goes before so it can be overwritten by custom
`${definitionId}-latest@platform`,
`${definitionId}-history@platform`,
`${definitionId}@custom`,
`${definitionId}-latest@custom`,
`${definitionId}-history@custom`,
];
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ export const getEntitiesLatestIndexTemplateConfig = (
"Index template for indices managed by the Elastic Entity Model's entity discovery framework for the latest dataset",
ecs_version: '8.0.0',
managed: true,
managed_by: 'elastic_entity_model',
},
ignore_missing_component_templates: getCustomLatestTemplateComponents(definitionId),
composed_of: [
Expand Down

0 comments on commit d863b82

Please sign in to comment.