mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 09:48:58 -04:00
[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:
parent
d4c17b8f61
commit
4b246b5f8e
10 changed files with 99 additions and 16 deletions
|
@ -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,
|
||||
|
|
|
@ -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']>;
|
||||
|
|
|
@ -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(),
|
||||
}));
|
|
@ -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';
|
||||
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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>;
|
||||
|
||||
|
|
|
@ -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>;
|
||||
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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);
|
||||
});
|
||||
},
|
||||
};
|
||||
},
|
||||
};
|
||||
}
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue