mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 09:48:58 -04:00
[Fleet] Enhance fleet package policies bulkCreate API (#140513)
This commit is contained in:
parent
c151f32123
commit
11b6ca8160
2 changed files with 37 additions and 14 deletions
|
@ -469,8 +469,10 @@ class AgentPolicyService {
|
|||
await packagePolicyService.bulkCreate(
|
||||
soClient,
|
||||
esClient,
|
||||
newPackagePolicies,
|
||||
newAgentPolicy.id,
|
||||
newPackagePolicies.map((newPackagePolicy) => ({
|
||||
...newPackagePolicy,
|
||||
policy_id: newAgentPolicy.id,
|
||||
})),
|
||||
{
|
||||
...options,
|
||||
bumpRevision: false,
|
||||
|
|
|
@ -228,26 +228,37 @@ class PackagePolicyService implements PackagePolicyServiceInterface {
|
|||
public async bulkCreate(
|
||||
soClient: SavedObjectsClientContract,
|
||||
esClient: ElasticsearchClient,
|
||||
packagePolicies: NewPackagePolicy[],
|
||||
agentPolicyId: string,
|
||||
options?: { user?: AuthenticatedUser; bumpRevision?: boolean; force: true }
|
||||
packagePolicies: NewPackagePolicyWithId[],
|
||||
options?: {
|
||||
user?: AuthenticatedUser;
|
||||
bumpRevision?: boolean;
|
||||
force?: true;
|
||||
}
|
||||
): Promise<PackagePolicy[]> {
|
||||
await validateIsNotHostedPolicy(soClient, agentPolicyId);
|
||||
const agentPolicyIds = new Set(packagePolicies.map((pkgPol) => pkgPol.policy_id));
|
||||
|
||||
for (const agentPolicyId of agentPolicyIds) {
|
||||
await validateIsNotHostedPolicy(soClient, agentPolicyId, options?.force);
|
||||
}
|
||||
|
||||
const isoDate = new Date().toISOString();
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
const { saved_objects } = await soClient.bulkCreate<PackagePolicySOAttributes>(
|
||||
packagePolicies.map((packagePolicy) => {
|
||||
const packagePolicyId = uuid.v4();
|
||||
const packagePolicyId = packagePolicy.id ?? uuid.v4();
|
||||
const agentPolicyId = packagePolicy.policy_id;
|
||||
|
||||
const inputs = packagePolicy.inputs.map((input) =>
|
||||
assignStreamIdToInput(packagePolicyId, input)
|
||||
);
|
||||
|
||||
const { id, ...pkgPolicyWithoutId } = packagePolicy;
|
||||
|
||||
return {
|
||||
type: SAVED_OBJECT_TYPE,
|
||||
id: packagePolicyId,
|
||||
attributes: {
|
||||
...packagePolicy,
|
||||
...pkgPolicyWithoutId,
|
||||
inputs,
|
||||
policy_id: agentPolicyId,
|
||||
revision: 1,
|
||||
|
@ -266,9 +277,11 @@ class PackagePolicyService implements PackagePolicyServiceInterface {
|
|||
// Assign it to the given agent policy
|
||||
|
||||
if (options?.bumpRevision ?? true) {
|
||||
await agentPolicyService.bumpRevision(soClient, esClient, agentPolicyId, {
|
||||
user: options?.user,
|
||||
});
|
||||
for (const agentPolicyIdT of agentPolicyIds) {
|
||||
await agentPolicyService.bumpRevision(soClient, esClient, agentPolicyIdT, {
|
||||
user: options?.user,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return newSos.map((newSo) => ({
|
||||
|
@ -1339,6 +1352,11 @@ function _enforceFrozenVars(
|
|||
return resultVars;
|
||||
}
|
||||
|
||||
export interface NewPackagePolicyWithId extends NewPackagePolicy {
|
||||
id?: string;
|
||||
policy_id: string;
|
||||
}
|
||||
|
||||
export interface PackagePolicyServiceInterface {
|
||||
create(
|
||||
soClient: SavedObjectsClientContract,
|
||||
|
@ -1360,9 +1378,12 @@ export interface PackagePolicyServiceInterface {
|
|||
bulkCreate(
|
||||
soClient: SavedObjectsClientContract,
|
||||
esClient: ElasticsearchClient,
|
||||
packagePolicies: NewPackagePolicy[],
|
||||
agentPolicyId: string,
|
||||
options?: { user?: AuthenticatedUser; bumpRevision?: boolean }
|
||||
packagePolicies: NewPackagePolicyWithId[],
|
||||
options?: {
|
||||
user?: AuthenticatedUser;
|
||||
bumpRevision?: boolean;
|
||||
force?: true;
|
||||
}
|
||||
): Promise<PackagePolicy[]>;
|
||||
|
||||
get(soClient: SavedObjectsClientContract, id: string): Promise<PackagePolicy | null>;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue