[ML] Share trained model get apis (#141274)

* [ML] Share trained model get apis

* adding to contract

* adding mocks

* exporting types

* changing params to be same as es

* adding type keyword
This commit is contained in:
James Gowdy 2022-09-23 12:11:19 +01:00 committed by GitHub
parent d4c17b8f61
commit 4b246b5f8e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 99 additions and 16 deletions

View file

@ -16,6 +16,13 @@ export type {
Job as MlJob,
MlSummaryJob,
SummaryJobState as MlSummaryJobState,
AlertingService as MlAlertingService,
AnomalyDetectors as MlAnomalyDetectors,
JobService as MlJobService,
MlSystem as MlMlSystem,
Modules as MlModules,
ResultsService as MlResultsService,
TrainedModels as MlTrainedModels,
} from './shared';
export {
UnknownMLCapabilitiesError,

View file

@ -9,3 +9,12 @@ export * from '../common/types/anomalies';
export * from '../common/types/anomaly_detection_jobs';
export * from './lib/capabilities/errors';
export type { ModuleSetupPayload } from './shared_services/providers/modules';
import type { SharedServices } from './shared_services';
export type AlertingService = ReturnType<SharedServices['alertingServiceProvider']>;
export type AnomalyDetectors = ReturnType<SharedServices['anomalyDetectorsProvider']>;
export type JobService = ReturnType<SharedServices['jobServiceProvider']>;
export type MlSystem = ReturnType<SharedServices['mlSystemProvider']>;
export type Modules = ReturnType<SharedServices['modulesProvider']>;
export type ResultsService = ReturnType<SharedServices['resultsServiceProvider']>;
export type TrainedModels = ReturnType<SharedServices['trainedModelsProvider']>;

View file

@ -0,0 +1,12 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
export const createTrainedModelsProviderMock = () =>
jest.fn(() => ({
getTrainedModels: jest.fn(),
getTrainedModelStats: jest.fn(),
}));

View file

@ -5,8 +5,8 @@
* 2.0.
*/
import { KibanaRequest, SavedObjectsClientContract } from '@kbn/core/server';
import { GetGuards } from '../shared_services';
import type { KibanaRequest, SavedObjectsClientContract } from '@kbn/core/server';
import type { GetGuards } from '../shared_services';
import { alertingServiceProvider, MlAlertingService } from '../../lib/alerts/alerting_service';
import { datafeedsProvider } from '../../models/job_service/datafeeds';

View file

@ -5,14 +5,14 @@
* 2.0.
*/
import { KibanaRequest, SavedObjectsClientContract } from '@kbn/core/server';
import {
import type { KibanaRequest, SavedObjectsClientContract } from '@kbn/core/server';
import type { GetGuards } from '../shared_services';
import type {
Job,
JobStats,
Datafeed,
DatafeedStats,
} from '../../../common/types/anomaly_detection_jobs';
import { GetGuards } from '../shared_services';
export interface AnomalyDetectorsProvider {
anomalyDetectorsProvider(

View file

@ -5,9 +5,9 @@
* 2.0.
*/
import { KibanaRequest, SavedObjectsClientContract } from '@kbn/core/server';
import type { KibanaRequest, SavedObjectsClientContract } from '@kbn/core/server';
import type { GetGuards } from '../shared_services';
import { jobServiceProvider } from '../../models/job_service';
import { GetGuards } from '../shared_services';
type OrigJobServiceProvider = ReturnType<typeof jobServiceProvider>;

View file

@ -5,9 +5,9 @@
* 2.0.
*/
import { KibanaRequest, SavedObjectsClientContract } from '@kbn/core/server';
import type { KibanaRequest, SavedObjectsClientContract } from '@kbn/core/server';
import type { GetGuards } from '../shared_services';
import { resultsServiceProvider } from '../../models/results_service';
import { GetGuards } from '../shared_services';
type OrigResultsServiceProvider = ReturnType<typeof resultsServiceProvider>;

View file

@ -7,15 +7,18 @@
import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
import { KibanaRequest, SavedObjectsClientContract } from '@kbn/core/server';
import { CloudSetup } from '@kbn/cloud-plugin/server';
import { SpacesPluginStart } from '@kbn/spaces-plugin/server';
import type { KibanaRequest, SavedObjectsClientContract } from '@kbn/core/server';
import type { CloudSetup } from '@kbn/cloud-plugin/server';
import type { SpacesPluginStart } from '@kbn/spaces-plugin/server';
import type { MlInfoResponse } from '../../../common/types/ml_server_info';
import type {
MlCapabilitiesResponse,
ResolveMlCapabilities,
} from '../../../common/types/capabilities';
import type { GetGuards } from '../shared_services';
import { MlLicense } from '../../../common/license';
import { spacesUtilsProvider } from '../../lib/spaces_utils';
import { capabilitiesProvider } from '../../lib/capabilities';
import { MlInfoResponse } from '../../../common/types/ml_server_info';
import { MlCapabilitiesResponse, ResolveMlCapabilities } from '../../../common/types/capabilities';
import { GetGuards } from '../shared_services';
export interface MlSystemProvider {
mlSystemProvider(

View file

@ -0,0 +1,49 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
import type { KibanaRequest, SavedObjectsClientContract } from '@kbn/core/server';
import type { GetGuards } from '../shared_services';
export interface TrainedModelsProvider {
trainedModelsProvider(
request: KibanaRequest,
savedObjectsClient: SavedObjectsClientContract
): {
getTrainedModels(
params: estypes.MlGetTrainedModelsRequest
): Promise<estypes.MlGetTrainedModelsResponse>;
getTrainedModelsStats(
params: estypes.MlGetTrainedModelsStatsRequest
): Promise<estypes.MlGetTrainedModelsStatsResponse>;
};
}
export function getTrainedModelsProvider(getGuards: GetGuards): TrainedModelsProvider {
return {
trainedModelsProvider(request: KibanaRequest, savedObjectsClient: SavedObjectsClientContract) {
return {
async getTrainedModels(params: estypes.MlGetTrainedModelsRequest) {
return await getGuards(request, savedObjectsClient)
.isFullLicense()
.hasMlCapabilities(['canGetTrainedModels'])
.ok(async ({ mlClient }) => {
return mlClient.getTrainedModels(params);
});
},
async getTrainedModelsStats(params: estypes.MlGetTrainedModelsStatsRequest) {
return await getGuards(request, savedObjectsClient)
.isFullLicense()
.hasMlCapabilities(['canGetTrainedModels'])
.ok(async ({ mlClient }) => {
return mlClient.getTrainedModelsStats(params);
});
},
};
},
};
}

View file

@ -24,6 +24,7 @@ import { MlSystemProvider, getMlSystemProvider } from './providers/system';
import { JobServiceProvider, getJobServiceProvider } from './providers/job_service';
import { ModulesProvider, getModulesProvider } from './providers/modules';
import { ResultsServiceProvider, getResultsServiceProvider } from './providers/results_service';
import { TrainedModelsProvider, getTrainedModelsProvider } from './providers/trained_models';
import {
AnomalyDetectorsProvider,
getAnomalyDetectorsProvider,
@ -53,7 +54,8 @@ export type SharedServices = JobServiceProvider &
MlSystemProvider &
ModulesProvider &
ResultsServiceProvider &
MlAlertingServiceProvider;
MlAlertingServiceProvider &
TrainedModelsProvider;
export type MlServicesProviders = JobsHealthServiceProvider;
@ -174,6 +176,7 @@ export function createSharedServices(
...getResultsServiceProvider(getGuards),
...getMlSystemProvider(getGuards, mlLicense, getSpaces, cloud, resolveMlCapabilities),
...getAlertingServiceProvider(getGuards),
...getTrainedModelsProvider(getGuards),
},
/**
* Services providers for ML internal usage