Skip to content

Commit b7ff35d

Browse files
authored
[Uptime] Remove legacy es client (#51403)
* Move a REST endpoint and the GQL endpoint to NP routing. * Delete obsolete REST endpoint. * Update remaining REST routes to work with NP router. * Remove obsolete code, update some unit tests. * Simplify route creation. * Remove tests of API decommissioned API endpoint. * Rename domain check. * Make return shape of index pattern endpoint correspond to required NP resp body. * Move validate to appropriate level of route definition object for monitor details endpoint. * Update snapshot count route. * Fix broken lint rule. * Move a REST endpoint and the GQL endpoint to NP routing. * Update remaining REST routes to work with NP router. * Update remaining REST routes to work with NP router. * Refactor query functions to accept new es client from request contexts. * WIP updating framework adapter. * Refactor remaining routes/resolvers to remove usage of legacy Elasticsearch client. * Fix broken unit tests. * Fix incorrect user usage for a REST endpoint. * Fix some broken imports and types. * Port monitor details REST endpoint to NP. * Remove some merge errors. * Update adapters to take a single options parameter. * Update broken test files. * Resolve typescript warnings. * Update resolver types. * Change GraphQL interface name for es client. * Delete unused code and fix incorrect type. * Rename type for REST endpoint creators. * Nest message values in body object for invalid response messages. * Reorganize a file and clean up some types. * Add wrapper function to reduce boilerplate route code.
1 parent 75447e5 commit b7ff35d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+687
-688
lines changed

x-pack/legacy/plugins/uptime/index.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,14 @@ export const uptime = (kibana: any) =>
3636
init(server: KibanaServer) {
3737
const initializerContext = {} as PluginInitializerContext;
3838
const { savedObjects } = server;
39-
const { elasticsearch, xpack_main } = server.plugins;
39+
const { xpack_main } = server.plugins;
4040
const { usageCollection } = server.newPlatform.setup.plugins;
4141

4242
plugin(initializerContext).setup(
4343
{
4444
route: server.newPlatform.setup.core.http.createRouter(),
4545
},
4646
{
47-
elasticsearch,
4847
savedObjects,
4948
usageCollection,
5049
xpack: xpack_main,

x-pack/legacy/plugins/uptime/server/graphql/monitor_states/resolvers.ts

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ export const createMonitorStatesResolvers: CreateUMGraphQLResolvers = (
3939
return {
4040
Query: {
4141
async getMonitorStates(
42-
resolver,
42+
_resolver,
4343
{ dateRangeStart, dateRangeEnd, filters, pagination, statusFilter },
44-
{ req }
44+
{ APICaller }
4545
): Promise<MonitorSummaryResult> {
4646
const decodedPagination = pagination
4747
? JSON.parse(decodeURIComponent(pagination))
@@ -50,15 +50,18 @@ export const createMonitorStatesResolvers: CreateUMGraphQLResolvers = (
5050
totalSummaryCount,
5151
{ summaries, nextPagePagination, prevPagePagination },
5252
] = await Promise.all([
53-
libs.pings.getDocCount(req),
54-
libs.monitorStates.getMonitorStates(
55-
req,
53+
libs.pings.getDocCount({ callES: APICaller }),
54+
libs.monitorStates.getMonitorStates({
55+
callES: APICaller,
5656
dateRangeStart,
5757
dateRangeEnd,
58-
decodedPagination,
58+
pagination: decodedPagination,
5959
filters,
60-
statusFilter
61-
),
60+
// this is added to make typescript happy,
61+
// this sort of reassignment used to be further downstream but I've moved it here
62+
// because this code is going to be decomissioned soon
63+
statusFilter: statusFilter || undefined,
64+
}),
6265
]);
6366
return {
6467
summaries,
@@ -67,8 +70,8 @@ export const createMonitorStatesResolvers: CreateUMGraphQLResolvers = (
6770
totalSummaryCount,
6871
};
6972
},
70-
async getStatesIndexStatus(resolver, {}, { req }): Promise<StatesIndexStatus> {
71-
return await libs.monitorStates.statesIndexExists(req);
73+
async getStatesIndexStatus(_resolver, {}, { APICaller }): Promise<StatesIndexStatus> {
74+
return await libs.monitorStates.statesIndexExists({ callES: APICaller });
7275
},
7376
},
7477
};

x-pack/legacy/plugins/uptime/server/graphql/monitors/resolvers.ts

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -71,54 +71,62 @@ export const createMonitorsResolvers: CreateUMGraphQLResolvers = (
7171
} => ({
7272
Query: {
7373
async getSnapshotHistogram(
74-
resolver,
74+
_resolver,
7575
{ dateRangeStart, dateRangeEnd, filters, monitorId, statusFilter },
76-
{ req }
76+
{ APICaller }
7777
): Promise<HistogramResult> {
78-
return await libs.pings.getPingHistogram(
79-
req,
78+
return await libs.pings.getPingHistogram({
79+
callES: APICaller,
8080
dateRangeStart,
8181
dateRangeEnd,
8282
filters,
8383
monitorId,
84-
statusFilter
85-
);
84+
statusFilter,
85+
});
8686
},
8787
async getMonitorChartsData(
88-
resolver,
88+
_resolver,
8989
{ monitorId, dateRangeStart, dateRangeEnd, location },
90-
{ req }
90+
{ APICaller }
9191
): Promise<MonitorChart> {
92-
return await libs.monitors.getMonitorChartsData(
93-
req,
92+
return await libs.monitors.getMonitorChartsData({
93+
callES: APICaller,
9494
monitorId,
9595
dateRangeStart,
9696
dateRangeEnd,
97-
location
98-
);
97+
location,
98+
});
9999
},
100100
async getLatestMonitors(
101-
resolver,
101+
_resolver,
102102
{ dateRangeStart, dateRangeEnd, monitorId, location },
103-
{ req }
103+
{ APICaller }
104104
): Promise<Ping[]> {
105-
return await libs.pings.getLatestMonitorDocs(
106-
req,
105+
return await libs.pings.getLatestMonitorDocs({
106+
callES: APICaller,
107107
dateRangeStart,
108108
dateRangeEnd,
109109
monitorId,
110-
location
111-
);
110+
location,
111+
});
112112
},
113-
async getFilterBar(resolver, { dateRangeStart, dateRangeEnd }, { req }): Promise<FilterBar> {
114-
return await libs.monitors.getFilterBar(req, dateRangeStart, dateRangeEnd);
113+
async getFilterBar(
114+
_resolver,
115+
{ dateRangeStart, dateRangeEnd },
116+
{ APICaller }
117+
): Promise<FilterBar> {
118+
return await libs.monitors.getFilterBar({
119+
callES: APICaller,
120+
dateRangeStart,
121+
dateRangeEnd,
122+
});
115123
},
116124
async getMonitorPageTitle(
117-
resolver: any,
125+
_resolver: any,
118126
{ monitorId },
119-
{ req }
127+
{ APICaller }
120128
): Promise<MonitorPageTitle | null> {
121-
return await libs.monitors.getMonitorPageTitle(req, monitorId);
129+
return await libs.monitors.getMonitorPageTitle({ callES: APICaller, monitorId });
122130
},
123131
},
124132
});

x-pack/legacy/plugins/uptime/server/graphql/pings/resolvers.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,23 +34,23 @@ export const createPingsResolvers: CreateUMGraphQLResolvers = (
3434
} => ({
3535
Query: {
3636
async allPings(
37-
resolver,
37+
_resolver,
3838
{ monitorId, sort, size, status, dateRangeStart, dateRangeEnd, location },
39-
{ req }
39+
{ APICaller }
4040
): Promise<PingResults> {
41-
return await libs.pings.getAll(
42-
req,
41+
return await libs.pings.getAll({
42+
callES: APICaller,
4343
dateRangeStart,
4444
dateRangeEnd,
4545
monitorId,
4646
status,
4747
sort,
4848
size,
49-
location
50-
);
49+
location,
50+
});
5151
},
52-
async getDocCount(resolver, args, { req }): Promise<DocCount> {
53-
return libs.pings.getDocCount(req);
52+
async getDocCount(_resolver, _args, { APICaller }): Promise<DocCount> {
53+
return libs.pings.getDocCount({ callES: APICaller });
5454
},
5555
},
5656
});

x-pack/legacy/plugins/uptime/server/graphql/types.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,16 @@
44
* you may not use this file except in compliance with the Elastic License.
55
*/
66

7-
import { Request } from 'hapi';
7+
import { RequestHandlerContext, CallAPIOptions } from 'kibana/server';
88
import { UMServerLibs } from '../lib/lib';
99

10-
export interface UMContext {
11-
req: Request;
12-
}
10+
export type UMContext = RequestHandlerContext & {
11+
APICaller: (
12+
endpoint: string,
13+
clientParams?: Record<string, any>,
14+
options?: CallAPIOptions | undefined
15+
) => Promise<any>;
16+
};
1317

1418
export interface UMGraphQLResolver {
1519
Query?: any;

x-pack/legacy/plugins/uptime/server/lib/adapters/database/adapter_types.ts

Lines changed: 0 additions & 35 deletions
This file was deleted.

x-pack/legacy/plugins/uptime/server/lib/adapters/database/index.ts

Lines changed: 0 additions & 7 deletions
This file was deleted.

x-pack/legacy/plugins/uptime/server/lib/adapters/database/kibana_database_adapter.ts

Lines changed: 0 additions & 32 deletions
This file was deleted.

x-pack/legacy/plugins/uptime/server/lib/adapters/framework/adapter_types.ts

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,16 @@
55
*/
66

77
import { GraphQLSchema } from 'graphql';
8-
import { SavedObjectsLegacyService, RequestHandler, IRouter } from 'src/core/server';
98
import { UsageCollectionSetup } from 'src/plugins/usage_collection/server';
9+
import {
10+
SavedObjectsLegacyService,
11+
RequestHandler,
12+
IRouter,
13+
CallAPIOptions,
14+
SavedObjectsClientContract,
15+
} from 'src/core/server';
1016
import { ObjectType } from '@kbn/config-schema';
11-
import { UMRouteDefinition } from '../../../rest_api';
17+
import { UMKibanaRoute } from '../../../rest_api';
1218

1319
export interface UMFrameworkRouteOptions<
1420
P extends ObjectType,
@@ -22,19 +28,32 @@ export interface UMFrameworkRouteOptions<
2228
validate: any;
2329
}
2430

31+
type APICaller = (
32+
endpoint: string,
33+
clientParams: Record<string, any>,
34+
options?: CallAPIOptions
35+
) => Promise<any>;
36+
37+
export type UMElasticsearchQueryFn<P, R = any> = (
38+
params: { callES: APICaller } & P
39+
) => Promise<R> | R;
40+
41+
export type UMSavedObjectsQueryFn<T = any, P = undefined> = (
42+
client: SavedObjectsClientContract,
43+
params: P
44+
) => Promise<T> | T;
45+
2546
export interface UptimeCoreSetup {
2647
route: IRouter;
2748
}
2849

2950
export interface UptimeCorePlugins {
30-
elasticsearch: any;
3151
savedObjects: SavedObjectsLegacyService<any>;
3252
usageCollection: UsageCollectionSetup;
3353
xpack: any;
3454
}
3555

3656
export interface UMBackendFrameworkAdapter {
37-
registerRoute(route: UMRouteDefinition): void;
57+
registerRoute(route: UMKibanaRoute): void;
3858
registerGraphQLEndpoint(routePath: string, schema: GraphQLSchema): void;
39-
getSavedObjectsClient(): any;
4059
}

0 commit comments

Comments
 (0)