diff --git a/x-pack/plugins/ingest_manager/server/services/agents/acks.ts b/x-pack/plugins/ingest_manager/server/services/agents/acks.ts index e391e81ebd0a62..c59bac6a5469ac 100644 --- a/x-pack/plugins/ingest_manager/server/services/agents/acks.ts +++ b/x-pack/plugins/ingest_manager/server/services/agents/acks.ts @@ -92,8 +92,9 @@ function getLatestConfigIfUpdated(agent: Agent, actions: AgentAction[]) { function buildUpdateAgentConfig(agentId: string, config: FullAgentConfig) { const packages = config.inputs.reduce((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; }, []); diff --git a/x-pack/test/api_integration/apis/fleet/agent_flow.ts b/x-pack/test/api_integration/apis/fleet/agent_flow.ts index e9e9f0e0208e46..08b97ad32ae296 100644 --- a/x-pack/test/api_integration/apis/fleet/agent_flow.ts +++ b/x-pack/test/api_integration/apis/fleet/agent_flow.ts @@ -26,7 +26,7 @@ export default function (providerContext: FtrProviderContext) { }); it('should work', async () => { - // 1. Get enrollment token + // Get enrollment token const { body: enrollmentApiKeysResponse } = await supertest .get(`/api/ingest_manager/fleet/enrollment-api-keys`) .expect(200); @@ -40,7 +40,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') @@ -48,7 +48,11 @@ export default function (providerContext: FtrProviderContext) { .send({ type: 'PERMANENT', metadata: { - local: {}, + local: { + elastic: { + agent: { version: 'TODO' }, + }, + }, user_provided: {}, }, }) @@ -57,7 +61,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') @@ -73,7 +77,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}`) @@ -95,7 +99,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') @@ -107,14 +111,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')