From 6d584d49a73284077d5331c9c5398593f9edd5ea Mon Sep 17 00:00:00 2001 From: Shahzad Date: Tue, 24 Sep 2024 12:33:22 +0200 Subject: [PATCH] [Fleet] Reuse package infos for synthetics bulk ops (#191486) ## Summary Reuse package infos for synthetics bulk ops !! We are just trying to debug Project monitor push API which interacts with fleet code and trying to see what excessive calls are being made, which can be reduced. --- .../fleet/server/services/package_policy.ts | 27 ++++++++++++++++--- .../server/services/package_policy_service.ts | 2 +- .../synthetics_private_location.ts | 2 +- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/x-pack/plugins/fleet/server/services/package_policy.ts b/x-pack/plugins/fleet/server/services/package_policy.ts index c457da64ead07b..f1cf8bdd3b9a2d 100644 --- a/x-pack/plugins/fleet/server/services/package_policy.ts +++ b/x-pack/plugins/fleet/server/services/package_policy.ts @@ -105,7 +105,12 @@ import { getAuthzFromRequest, doesNotHaveRequiredFleetAuthz } from './security'; import { storedPackagePolicyToAgentInputs } from './agent_policies'; import { agentPolicyService } from './agent_policy'; -import { getPackageInfo, getInstallation, ensureInstalledPackage } from './epm/packages'; +import { + getPackageInfo, + getInstallation, + ensureInstalledPackage, + getInstallationObject, +} from './epm/packages'; import { getAssetsDataFromAssetsMap } from './epm/packages/assets'; import { compileTemplate } from './epm/agent/agent'; import { escapeSearchQueryPhrase, normalizeKuery as _normalizeKuery } from './saved_object'; @@ -1874,9 +1879,25 @@ class PackagePolicyClientImpl implements PackagePolicyClient { public async buildPackagePolicyFromPackage( soClient: SavedObjectsClientContract, pkgName: string, - logger?: Logger + options?: { logger?: Logger; installMissingPackage?: boolean } ): Promise { - const pkgInstall = await getInstallation({ savedObjectsClient: soClient, pkgName, logger }); + const pkgInstallObj = await getInstallationObject({ + savedObjectsClient: soClient, + pkgName, + logger: options?.logger, + }); + let pkgInstall = pkgInstallObj?.attributes; + if (!pkgInstall && options?.installMissingPackage) { + const esClient = await appContextService.getInternalUserESClient(); + const result = await ensureInstalledPackage({ + esClient, + pkgName, + savedObjectsClient: soClient, + }); + if (result.package) { + pkgInstall = result.package; + } + } if (pkgInstall) { const packageInfo = await getPackageInfo({ savedObjectsClient: soClient, diff --git a/x-pack/plugins/fleet/server/services/package_policy_service.ts b/x-pack/plugins/fleet/server/services/package_policy_service.ts index 46913642843cf7..8bd96fd8553123 100644 --- a/x-pack/plugins/fleet/server/services/package_policy_service.ts +++ b/x-pack/plugins/fleet/server/services/package_policy_service.ts @@ -164,7 +164,7 @@ export interface PackagePolicyClient { buildPackagePolicyFromPackage( soClient: SavedObjectsClientContract, pkgName: string, - logger?: Logger + options?: { logger?: Logger; installMissingPackage?: boolean } ): Promise; runExternalCallbacks( diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts b/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts index 52bb0eefcb84e8..fe5f74529121e4 100644 --- a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts +++ b/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts @@ -52,7 +52,7 @@ export class SyntheticsPrivateLocation { const newPolicy = await this.server.fleet.packagePolicyService.buildPackagePolicyFromPackage( soClient, 'synthetics', - this.server.logger + { logger: this.server.logger, installMissingPackage: true } ); if (!newPolicy) {