Skip to content

Commit

Permalink
Fix ingest pipeline removal
Browse files Browse the repository at this point in the history
  • Loading branch information
joshdover committed May 2, 2022
1 parent d22c8dd commit 6cce055
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 38 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -86,9 +86,6 @@ export const installPipelines = async (
pipelineRefs = [...pipelineRefs, ...topLevelPipelineRefs];

esReferences = await updateEsAssetReferences(savedObjectsClient, pkgName, esReferences, {
assetsToRemove: esReferences.filter(
(ref) => ref.type === ElasticsearchAssetType.ingestPipeline && !ref.id.includes(pkgVersion)
),
assetsToAdd: pipelineRefs,
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,52 +10,35 @@ import type { ElasticsearchClient, SavedObjectsClientContract } from '@kbn/core/
import { appContextService } from '../../..';
import { ElasticsearchAssetType } from '../../../../types';
import { IngestManagerError } from '../../../../errors';
import { getInstallation } from '../../packages/get';
import type { EsAssetReference } from '../../../../../common';
import { updateEsAssetReferences } from '../../packages/install';

export const deletePreviousPipelines = async (
esClient: ElasticsearchClient,
savedObjectsClient: SavedObjectsClientContract,
pkgName: string,
previousPkgVersion: string
previousPkgVersion: string,
esReferences: EsAssetReference[]
) => {
const logger = appContextService.getLogger();
const installation = await getInstallation({ savedObjectsClient, pkgName });
if (!installation) return;
const installedEsAssets = installation.installed_es;
const installedPipelines = installedEsAssets.filter(
const installedPipelines = esReferences.filter(
({ type, id }) =>
type === ElasticsearchAssetType.ingestPipeline && id.includes(previousPkgVersion)
);
const deletePipelinePromises = installedPipelines.map(({ type, id }) => {
return deletePipeline(esClient, id);
});
try {
await Promise.all(deletePipelinePromises);
} catch (e) {
logger.error(e);
}
try {
await deletePipelineRefs(savedObjectsClient, installedEsAssets, pkgName, previousPkgVersion);
await Promise.all(
installedPipelines.map(({ type, id }) => {
return deletePipeline(esClient, id);
})
);
} catch (e) {
logger.error(e);
}
};

export const deletePipelineRefs = async (
savedObjectsClient: SavedObjectsClientContract,
installedEsAssets: EsAssetReference[],
pkgName: string,
pkgVersion: string
) => {
const assetsToRemove = installedEsAssets.filter(({ type, id }) => {
return type === ElasticsearchAssetType.ingestPipeline && id.includes(pkgVersion);
});

return updateEsAssetReferences(savedObjectsClient, pkgName, installedEsAssets, {
assetsToRemove,
refresh: 'wait_for',
return await updateEsAssetReferences(savedObjectsClient, pkgName, esReferences, {
assetsToRemove: esReferences.filter(({ type, id }) => {
return type === ElasticsearchAssetType.ingestPipeline && id.includes(previousPkgVersion);
}),
});
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -181,23 +181,25 @@ export async function _installPackage({
(installType === 'update' || installType === 'reupdate') &&
installedPkg
) {
await withPackageSpan('Delete previous ingest pipelines', () =>
esReferences = await withPackageSpan('Delete previous ingest pipelines', () =>
deletePreviousPipelines(
esClient,
savedObjectsClient,
pkgName,
installedPkg!.attributes.version
installedPkg!.attributes.version,
esReferences
)
);
}
// pipelines from a different version may have installed during a failed update
if (installType === 'rollback' && installedPkg) {
await await withPackageSpan('Delete previous ingest pipelines', () =>
esReferences = await withPackageSpan('Delete previous ingest pipelines', () =>
deletePreviousPipelines(
esClient,
savedObjectsClient,
pkgName,
installedPkg!.attributes.install_version
installedPkg!.attributes.install_version,
esReferences
)
);
}
Expand Down
8 changes: 6 additions & 2 deletions x-pack/test/fleet_api_integration/apis/epm/update_assets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -403,13 +403,17 @@ export default function (providerContext: FtrProviderContext) {
],
installed_es: [
{
id: 'logs-all_assets.test_logs-all_assets',
type: 'data_stream_ilm_policy',
id: 'all_assets',
type: 'ilm_policy',
},
{
id: 'default',
type: 'ml_model',
},
{
id: 'logs-all_assets.test_logs-all_assets',
type: 'data_stream_ilm_policy',
},
{
id: 'logs-all_assets.test_logs-0.2.0',
type: 'ingest_pipeline',
Expand Down

0 comments on commit 6cce055

Please sign in to comment.