[Ingest Manager] expose method to get agent and list agents to other plugins (#70087)

This commit is contained in:
Nicolas Chaulet 2020-06-29 10:51:30 -04:00 committed by GitHub
parent f47b3e50c7
commit 6e9972e693
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 42 additions and 6 deletions

View file

@ -54,7 +54,12 @@ import {
AgentService,
datasourceService,
} from './services';
import { getAgentStatusById, authenticateAgentWithAccessToken } from './services/agents';
import {
getAgentStatusById,
authenticateAgentWithAccessToken,
listAgents,
getAgent,
} from './services/agents';
import { CloudSetup } from '../../cloud/server';
import { agentCheckinState } from './services/agents/checkin/state';
@ -236,7 +241,7 @@ export class IngestManagerPlugin
plugins: {
encryptedSavedObjects: EncryptedSavedObjectsPluginStart;
}
) {
): Promise<IngestManagerStartContract> {
await appContextService.start({
encryptedSavedObjectsStart: plugins.encryptedSavedObjects,
encryptedSavedObjectsSetup: this.encryptedSavedObjectsSetup,
@ -255,6 +260,8 @@ export class IngestManagerPlugin
return {
esIndexPatternService: new ESIndexPatternSavedObjectService(),
agentService: {
getAgent,
listAgents,
getAgentStatusById,
authenticateAgentWithAccessToken,
},

View file

@ -4,8 +4,8 @@
* you may not use this file except in compliance with the Elastic License.
*/
import { SavedObjectsClientContract } from 'kibana/server';
import { AgentStatus } from '../types';
import { SavedObjectsClientContract, KibanaRequest } from 'kibana/server';
import { AgentStatus, Agent } from '../types';
import * as settingsService from './settings';
export { ESIndexPatternSavedObjectService } from './es_index_pattern';
@ -24,12 +24,38 @@ export interface ESIndexPatternService {
* A service that provides exported functions that return information about an Agent
*/
export interface AgentService {
/**
* Get an Agent by id
*/
getAgent(soClient: SavedObjectsClientContract, agentId: string): Promise<Agent>;
/**
* Authenticate an agent with access toekn
*/
authenticateAgentWithAccessToken(
soClient: SavedObjectsClientContract,
request: KibanaRequest
): Promise<Agent>;
/**
* Return the status by the Agent's id
* @param soClient
* @param agentId
*/
getAgentStatusById(soClient: SavedObjectsClientContract, agentId: string): Promise<AgentStatus>;
/**
* List agents
*/
listAgents(
soClient: SavedObjectsClientContract,
options: {
page: number;
perPage: number;
kuery?: string;
showInactive: boolean;
}
): Promise<{
agents: Agent[];
total: number;
page: number;
perPage: number;
}>;
}
// Saved object services

View file

@ -35,6 +35,9 @@ export const createMockEndpointAppContextServiceStartContract = (): jest.Mocked<
export const createMockAgentService = (): jest.Mocked<AgentService> => {
return {
getAgentStatusById: jest.fn(),
authenticateAgentWithAccessToken: jest.fn(),
getAgent: jest.fn(),
listAgents: jest.fn(),
};
};