Skip to content

Commit

Permalink
[APM] Fleet support for merging input.config values with other nested…
Browse files Browse the repository at this point in the history
… properties in the policy input (#101690) (#101955)

* [APM] Improvments in the APM fleet integration (#95501)

* added unit test and line comment

* fixes eslint issues

Co-authored-by: Oliver Gupte <ogupte@users.noreply.github.com>
  • Loading branch information
kibanamachine and ogupte authored Jun 10, 2021
1 parent f84b9d0 commit a6bd1ec
Show file tree
Hide file tree
Showing 3 changed files with 89 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ export function getPackagePolicyWithAgentConfigurations(
{
...firstInput,
config: {
...firstInput.config,
[APM_SERVER]: {
value: {
...apmServerValue,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -218,4 +218,81 @@ describe('Fleet - storedPackagePoliciesToAgentInputs', () => {
},
]);
});

it('returns agent inputs with deeply merged config values', () => {
expect(
storedPackagePoliciesToAgentInputs([
{
...mockPackagePolicy,
inputs: [
{
...mockInput,
compiled_input: {
agent_input_template_group1_vars: {
inputVar: 'input-value',
},
agent_input_template_group2_vars: {
inputVar3: {
testFieldGroup: {
subField1: 'subfield1',
},
testField: 'test',
},
},
},
config: {
agent_input_template_group1_vars: {
value: {
inputVar2: {},
},
},
agent_input_template_group2_vars: {
value: {
inputVar3: {
testFieldGroup: {
subField2: 'subfield2',
},
},
inputVar4: '',
},
},
},
},
],
},
])
).toEqual([
{
id: 'some-uuid',
revision: 1,
name: 'mock-package-policy',
type: 'test-logs',
data_stream: { namespace: 'default' },
use_output: 'default',
agent_input_template_group1_vars: {
inputVar: 'input-value',
inputVar2: {},
},
agent_input_template_group2_vars: {
inputVar3: {
testField: 'test',
testFieldGroup: {
subField1: 'subfield1',
subField2: 'subfield2',
},
},
inputVar4: '',
},
streams: [
{
id: 'test-logs-foo',
data_stream: { dataset: 'foo', type: 'logs' },
fooKey: 'fooValue1',
fooKey2: ['fooValue2'],
},
{ id: 'test-logs-bar', data_stream: { dataset: 'bar', type: 'logs' } },
],
},
]);
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
* 2.0.
*/

import { merge } from 'lodash';

import type { PackagePolicy, FullAgentPolicyInput, FullAgentPolicyInputStream } from '../types';
import { DEFAULT_OUTPUT } from '../constants';

Expand All @@ -31,10 +33,6 @@ export const storedPackagePoliciesToAgentInputs = (
namespace: packagePolicy.namespace || 'default',
},
use_output: DEFAULT_OUTPUT.name,
...Object.entries(input.config || {}).reduce((acc, [key, { value }]) => {
acc[key] = value;
return acc;
}, {} as { [k: string]: any }),
...(input.compiled_input || {}),
...(input.streams.length
? {
Expand All @@ -56,6 +54,15 @@ export const storedPackagePoliciesToAgentInputs = (
: {}),
};

// deeply merge the input.config values with the full policy input
merge(
fullInput,
Object.entries(input.config || {}).reduce(
(acc, [key, { value }]) => ({ ...acc, [key]: value }),
{}
)
);

if (packagePolicy.package) {
fullInput.meta = {
package: {
Expand Down

0 comments on commit a6bd1ec

Please sign in to comment.