Skip to content

Commit

Permalink
Extract createTransformGenerators
Browse files Browse the repository at this point in the history
  • Loading branch information
kdelemme committed Nov 20, 2024
1 parent 32612cb commit bcd7149
Show file tree
Hide file tree
Showing 5 changed files with 58 additions and 49 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import { errors } from '@elastic/elasticsearch';
import { failedDependency, forbidden } from '@hapi/boom';
import { KibanaRequest } from '@kbn/core-http-server';
import { DataViewsService } from '@kbn/data-views-plugin/server';
import {
PutSLOSettingsParams,
createSLOParamsSchema,
Expand All @@ -30,7 +29,6 @@ import {
updateSLOParamsSchema,
} from '@kbn/slo-schema';
import { getOverviewParamsSchema } from '@kbn/slo-schema/src/rest_specs/routes/get_overview';
import type { IndicatorTypes } from '../../domain/models';
import { executeWithErrorHandler } from '../../errors';
import {
CreateSLO,
Expand Down Expand Up @@ -61,44 +59,10 @@ import { SloDefinitionClient } from '../../services/slo_definition_client';
import { getSloSettings, storeSloSettings } from '../../services/slo_settings';
import { DefaultSummarySearchClient } from '../../services/summary_search_client';
import { DefaultSummaryTransformGenerator } from '../../services/summary_transform_generator/summary_transform_generator';
import {
ApmTransactionDurationTransformGenerator,
ApmTransactionErrorRateTransformGenerator,
HistogramTransformGenerator,
KQLCustomTransformGenerator,
MetricCustomTransformGenerator,
SyntheticsAvailabilityTransformGenerator,
TimesliceMetricTransformGenerator,
TransformGenerator,
} from '../../services/transform_generators';
import { createTransformGenerators } from '../../services/transform_generators';
import { createSloServerRoute } from '../create_slo_server_route';
import { SLORoutesDependencies } from '../types';

// TODO Kevin: Move to factory file next to the transform generators.
const transformGeneratorsFactory = (
spaceId: string,
dataViewsService: DataViewsService,
isServerless: boolean
): Record<IndicatorTypes, TransformGenerator> => ({
'sli.apm.transactionDuration': new ApmTransactionDurationTransformGenerator(
spaceId,
dataViewsService
),
'sli.apm.transactionErrorRate': new ApmTransactionErrorRateTransformGenerator(
spaceId,
dataViewsService
),
'sli.synthetics.availability': new SyntheticsAvailabilityTransformGenerator(
spaceId,
dataViewsService,
isServerless
),
'sli.kql.custom': new KQLCustomTransformGenerator(spaceId, dataViewsService),
'sli.metric.custom': new MetricCustomTransformGenerator(spaceId, dataViewsService),
'sli.histogram.custom': new HistogramTransformGenerator(spaceId, dataViewsService),
'sli.metric.timeslice': new TimesliceMetricTransformGenerator(spaceId, dataViewsService),
});

const assertPlatinumLicense = async (plugins: SLORoutesDependencies['plugins']) => {
const licensing = await plugins.licensing.start();
const hasCorrectLicense = (await licensing.getLicense()).hasAtLeast('platinum');
Expand Down Expand Up @@ -137,7 +101,7 @@ const createSLORoute = createSloServerRoute({
dataViews.dataViewsServiceFactory(soClient, esClient),
]);

const transformGenerators = transformGeneratorsFactory(
const transformGenerators = createTransformGenerators(
spaceId,
dataViewsService,
sloContext.isServerless
Expand Down Expand Up @@ -189,7 +153,7 @@ const inspectSLORoute = createSloServerRoute({
const repository = new KibanaSavedObjectsSLORepository(soClient, logger);
const dataViewsService = await dataViews.dataViewsServiceFactory(soClient, esClient);

const transformGenerators = transformGeneratorsFactory(
const transformGenerators = createTransformGenerators(
spaceId,
dataViewsService,
sloContext.isServerless
Expand Down Expand Up @@ -242,7 +206,7 @@ const updateSLORoute = createSloServerRoute({
const dataViewsService = await dataViews.dataViewsServiceFactory(soClient, esClient);
const repository = new KibanaSavedObjectsSLORepository(soClient, logger);

const transformGenerators = transformGeneratorsFactory(
const transformGenerators = createTransformGenerators(
spaceId,
dataViewsService,
sloContext.isServerless
Expand Down Expand Up @@ -297,7 +261,7 @@ const deleteSLORoute = createSloServerRoute({

const dataViewsService = await dataViews.dataViewsServiceFactory(soClient, esClient);

const transformGenerators = transformGeneratorsFactory(
const transformGenerators = createTransformGenerators(
spaceId,
dataViewsService,
sloContext.isServerless
Expand Down Expand Up @@ -375,7 +339,7 @@ const enableSLORoute = createSloServerRoute({
const dataViewsService = await dataViews.dataViewsServiceFactory(soClient, esClient);
const repository = new KibanaSavedObjectsSLORepository(soClient, logger);

const transformGenerators = transformGeneratorsFactory(
const transformGenerators = createTransformGenerators(
spaceId,
dataViewsService,
sloContext.isServerless
Expand Down Expand Up @@ -421,7 +385,7 @@ const disableSLORoute = createSloServerRoute({
const dataViewsService = await dataViews.dataViewsServiceFactory(soClient, esClient);
const repository = new KibanaSavedObjectsSLORepository(soClient, logger);

const transformGenerators = transformGeneratorsFactory(
const transformGenerators = createTransformGenerators(
spaceId,
dataViewsService,
sloContext.isServerless
Expand Down Expand Up @@ -466,7 +430,7 @@ const resetSLORoute = createSloServerRoute({
const dataViewsService = await dataViews.dataViewsServiceFactory(soClient, esClient);
const repository = new KibanaSavedObjectsSLORepository(soClient, logger);

const transformGenerators = transformGeneratorsFactory(
const transformGenerators = createTransformGenerators(
spaceId,
dataViewsService,
sloContext.isServerless
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,4 @@ export * from './metric_custom';
export * from './histogram';
export * from './timeslice_metric';
export * from './common';
export * from './transform_generators_factory';
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,13 @@
*/

import { TransformPutTransformRequest } from '@elastic/elasticsearch/lib/api/types';
import { kqlCustomIndicatorSchema, timeslicesBudgetingMethodSchema } from '@kbn/slo-schema';

import { DataViewsService } from '@kbn/data-views-plugin/common';
import { getElasticsearchQueryOrThrow, parseIndex, TransformGenerator } from '.';
import { kqlCustomIndicatorSchema, timeslicesBudgetingMethodSchema } from '@kbn/slo-schema';
import { TransformGenerator, getElasticsearchQueryOrThrow, parseIndex } from '.';
import {
SLO_DESTINATION_INDEX_NAME,
getSLOPipelineId,
getSLOTransformId,
SLO_DESTINATION_INDEX_NAME,
} from '../../../common/constants';
import { getSLOTransformTemplate } from '../../assets/transform_templates/slo_transform_template';
import { KQLCustomIndicator, SLODefinition } from '../../domain/models';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ import {
MappingRuntimeFields,
TransformPutTransformRequest,
} from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
import { ALL_VALUE, timeslicesBudgetingMethodSchema } from '@kbn/slo-schema';
import { DataView, DataViewsService } from '@kbn/data-views-plugin/common';
import { ALL_VALUE, timeslicesBudgetingMethodSchema } from '@kbn/slo-schema';
import { TransformSettings } from '../../assets/transform_templates/slo_transform_template';
import { SLODefinition } from '../../domain/models';

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
/*
* 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 { DataViewsService } from '@kbn/data-views-plugin/server';
import {
ApmTransactionDurationTransformGenerator,
ApmTransactionErrorRateTransformGenerator,
HistogramTransformGenerator,
KQLCustomTransformGenerator,
MetricCustomTransformGenerator,
SyntheticsAvailabilityTransformGenerator,
TimesliceMetricTransformGenerator,
TransformGenerator,
} from '.';
import { IndicatorTypes } from '../../domain/models';

export function createTransformGenerators(
spaceId: string,
dataViewsService: DataViewsService,
isServerless: boolean
): Record<IndicatorTypes, TransformGenerator> {
return {
'sli.apm.transactionDuration': new ApmTransactionDurationTransformGenerator(
spaceId,
dataViewsService
),
'sli.apm.transactionErrorRate': new ApmTransactionErrorRateTransformGenerator(
spaceId,
dataViewsService
),
'sli.synthetics.availability': new SyntheticsAvailabilityTransformGenerator(
spaceId,
dataViewsService,
isServerless
),
'sli.kql.custom': new KQLCustomTransformGenerator(spaceId, dataViewsService),
'sli.metric.custom': new MetricCustomTransformGenerator(spaceId, dataViewsService),
'sli.histogram.custom': new HistogramTransformGenerator(spaceId, dataViewsService),
'sli.metric.timeslice': new TimesliceMetricTransformGenerator(spaceId, dataViewsService),
};
}

0 comments on commit bcd7149

Please sign in to comment.