From 3ce276dbae8d94679a283c05896bbedfe7379a8a Mon Sep 17 00:00:00 2001 From: Nicolas Chaulet Date: Wed, 3 Jan 2024 10:27:48 +0100 Subject: [PATCH] [Fleet] Fix keep policies up to date after package install (#174093) --- .../services/epm/packages/_install_package.test.ts | 3 +++ .../server/services/epm/packages/_install_package.ts | 9 +++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/fleet/server/services/epm/packages/_install_package.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/_install_package.test.ts index 3b06d9b2b3cd8..d6d653fd98c4e 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/_install_package.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/_install_package.test.ts @@ -69,6 +69,9 @@ describe('_installPackage', () => { soClient.update.mockImplementation(async (type, id, attributes) => { return { id, attributes } as any; }); + soClient.get.mockImplementation(async (type, id) => { + return { id, attributes: {} } as any; + }); esClient = elasticsearchServiceMock.createClusterClient().asInternalUser; appContextService.start(createAppContextStartContractMock()); diff --git a/x-pack/plugins/fleet/server/services/epm/packages/_install_package.ts b/x-pack/plugins/fleet/server/services/epm/packages/_install_package.ts index fdcf51db71867..6c30d3a8d332d 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/_install_package.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/_install_package.ts @@ -348,7 +348,7 @@ export async function _installPackage({ savedObjectType: PACKAGES_SAVED_OBJECT_TYPE, }); logger.debug(`Package install - Updating install status`); - const updatedPackage = await withPackageSpan('Update install status', () => + await withPackageSpan('Update install status', () => savedObjectsClient.update(PACKAGES_SAVED_OBJECT_TYPE, pkgName, { version: pkgVersion, install_version: pkgVersion, @@ -361,8 +361,13 @@ export async function _installPackage({ ), }) ); - logger.debug(`Package install - Install status ${updatedPackage?.attributes?.install_status}`); + // Need to refetch the installation again to retrieve all the attributes + const updatedPackage = await savedObjectsClient.get( + PACKAGES_SAVED_OBJECT_TYPE, + pkgName + ); + logger.debug(`Package install - Install status ${updatedPackage?.attributes?.install_status}`); // If the package is flagged with the `keep_policies_up_to_date` flag, upgrade its // associated package policies after installation if (updatedPackage.attributes.keep_policies_up_to_date) {