Skip to content

Commit

Permalink
[Ingest Manager] Fix agent ack after input format change (elastic#70335)
Browse files Browse the repository at this point in the history
  • Loading branch information
nchaulet authored and jen-huang committed Jul 1, 2020
1 parent b1431e8 commit 9b8a153
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 15 deletions.
16 changes: 10 additions & 6 deletions x-pack/plugins/ingest_manager/server/services/agents/acks.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -139,9 +139,11 @@ describe('test agent acks services', () => {
name: 'system-1',
type: 'logs',
use_output: 'default',
package: {
name: 'system',
version: '0.3.0',
meta: {
package: {
name: 'system',
version: '0.3.0',
},
},
dataset: {
namespace: 'default',
Expand Down Expand Up @@ -279,9 +281,11 @@ describe('test agent acks services', () => {
name: 'system-1',
type: 'logs',
use_output: 'default',
package: {
name: 'system',
version: '0.3.0',
meta: {
package: {
name: 'system',
version: '0.3.0',
},
},
dataset: {
namespace: 'default',
Expand Down
5 changes: 3 additions & 2 deletions x-pack/plugins/ingest_manager/server/services/agents/acks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,9 @@ function getLatestConfigIfUpdated(agent: Agent, actions: AgentAction[]) {

function buildUpdateAgentConfig(agentId: string, config: FullAgentConfig) {
const packages = config.inputs.reduce<string[]>((acc, input) => {
if (input.package && input.package.name && acc.indexOf(input.package.name) < 0) {
return [input.package.name, ...acc];
const packageName = input.meta?.package?.name;
if (packageName && acc.indexOf(packageName) < 0) {
return [packageName, ...acc];
}
return acc;
}, []);
Expand Down
26 changes: 19 additions & 7 deletions x-pack/test/api_integration/apis/fleet/agent_flow.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ export default function (providerContext: FtrProviderContext) {
it('should work', async () => {
const kibanaVersionAccessor = kibanaServer.version;
const kibanaVersion = await kibanaVersionAccessor.get();
// 1. Get enrollment token

// Get enrollment token
const { body: enrollmentApiKeysResponse } = await supertest
.get(`/api/ingest_manager/fleet/enrollment-api-keys`)
.expect(200);
Expand All @@ -44,7 +45,7 @@ export default function (providerContext: FtrProviderContext) {

expect(enrollmentApiKeyResponse.item).to.have.key('api_key');
const enrollmentAPIToken = enrollmentApiKeyResponse.item.api_key;
// 2. Enroll agent
// Enroll agent
const { body: enrollmentResponse } = await supertestWithoutAuth
.post(`/api/ingest_manager/fleet/agents/enroll`)
.set('kbn-xsrf', 'xxx')
Expand All @@ -63,7 +64,7 @@ export default function (providerContext: FtrProviderContext) {

const agentAccessAPIKey = enrollmentResponse.item.access_api_key;

// 3. agent checkin
// Agent checkin
const { body: checkinApiResponse } = await supertestWithoutAuth
.post(`/api/ingest_manager/fleet/agents/${enrollmentResponse.item.id}/checkin`)
.set('kbn-xsrf', 'xx')
Expand All @@ -79,7 +80,7 @@ export default function (providerContext: FtrProviderContext) {
const configChangeAction = checkinApiResponse.actions[0];
const defaultOutputApiKey = configChangeAction.data.config.outputs.default.api_key;

// 4. ack actions
// Ack actions
const { body: ackApiResponse } = await supertestWithoutAuth
.post(`/api/ingest_manager/fleet/agents/${enrollmentResponse.item.id}/acks`)
.set('Authorization', `ApiKey ${agentAccessAPIKey}`)
Expand All @@ -101,7 +102,7 @@ export default function (providerContext: FtrProviderContext) {
.expect(200);
expect(ackApiResponse.success).to.eql(true);

// 4. second agent checkin
// Second agent checkin
const { body: secondCheckinApiResponse } = await supertestWithoutAuth
.post(`/api/ingest_manager/fleet/agents/${enrollmentResponse.item.id}/checkin`)
.set('kbn-xsrf', 'xx')
Expand All @@ -113,14 +114,25 @@ export default function (providerContext: FtrProviderContext) {
expect(secondCheckinApiResponse.success).to.eql(true);
expect(secondCheckinApiResponse.actions).length(0);

// 5. unenroll agent
// Get agent
const { body: getAgentApiResponse } = await supertest
.get(`/api/ingest_manager/fleet/agents/${enrollmentResponse.item.id}`)
.expect(200);

expect(getAgentApiResponse.success).to.eql(true);
expect(getAgentApiResponse.item.packages).to.contain(
'system',
"Agent should run the 'system' package"
);

// Unenroll agent
const { body: unenrollResponse } = await supertest
.post(`/api/ingest_manager/fleet/agents/${enrollmentResponse.item.id}/unenroll`)
.set('kbn-xsrf', 'xx')
.expect(200);
expect(unenrollResponse.success).to.eql(true);

// 6. Checkin after unenrollment
// Checkin after unenrollment
await supertestWithoutAuth
.post(`/api/ingest_manager/fleet/agents/${enrollmentResponse.item.id}/checkin`)
.set('kbn-xsrf', 'xx')
Expand Down

0 comments on commit 9b8a153

Please sign in to comment.