diff --git a/src/core/server/integration_tests/saved_objects/migrations/group2/check_registered_types.test.ts b/src/core/server/integration_tests/saved_objects/migrations/group2/check_registered_types.test.ts index 2a5d3d74a5a9bf..541bfa046b0d38 100644 --- a/src/core/server/integration_tests/saved_objects/migrations/group2/check_registered_types.test.ts +++ b/src/core/server/integration_tests/saved_objects/migrations/group2/check_registered_types.test.ts @@ -112,7 +112,7 @@ describe('checking migration metadata changes on all registered SO types', () => "legacy-url-alias": "9b8cca3fbb2da46fd12823d3cd38fdf1c9f24bc8", "lens": "2f6a8231591e3d62a83506b19e165774d74588ea", "lens-ui-telemetry": "d6c4e330d170eefc6214dbf77a53de913fa3eebc", - "maintenance-window": "2cb13a3c4b7a58e9557f962286b9afd9156bf0f8", + "maintenance-window": "a9777f4e71381c56b4422bf8d30f626bde301c79", "map": "7902b2e2a550e0b73fd5aa6c4e2ba3a4e6558877", "metrics-explorer-view": "713dbf1ab5e067791d19170f715eb82cf07ebbcc", "ml-job": "12e21f1b1adfcc1052dc0b10c7459de875653b94", diff --git a/x-pack/plugins/alerting/server/maintenance_window_client/generate_maintenance_window_events.ts b/x-pack/plugins/alerting/server/maintenance_window_client/generate_maintenance_window_events.ts index aa09b0069ce499..fcf046411d8684 100644 --- a/x-pack/plugins/alerting/server/maintenance_window_client/generate_maintenance_window_events.ts +++ b/x-pack/plugins/alerting/server/maintenance_window_client/generate_maintenance_window_events.ts @@ -89,9 +89,30 @@ export const mergeEvents = ({ }) => { // If new events have more entries (expiration date got pushed), we merge the old into the new if (newEvents.length > oldEvents.length) { - return [...oldEvents, ...newEvents.slice(-(newEvents.length - oldEvents.length))]; + const modifiedEvents: Array<{ event: DateRange; index: number }> = []; + + // Find all modified events in the old events array + oldEvents.forEach((oldEvent, index) => { + const newEvent = newEvents[index]; + if (oldEvent.lte !== newEvent.lte || oldEvent.gte !== newEvent.gte) { + modifiedEvents.push({ + event: oldEvent, + index, + }); + } + }); + + const newEventsCopy = [...newEvents]; + + // Update the new event array with old modified events + modifiedEvents.forEach(({ event, index }) => { + newEventsCopy[index] = event; + }); + + return newEventsCopy; } // If new events have less entries (maintenance window got archived), we trim the old events + // to match the same length as the new events if (oldEvents.length > newEvents.length) { return oldEvents.slice(0, newEvents.length); } diff --git a/x-pack/plugins/alerting/server/maintenance_window_client/maintenance_window_client.ts b/x-pack/plugins/alerting/server/maintenance_window_client/maintenance_window_client.ts index 6945f50b78635f..11d6f237a03eb8 100644 --- a/x-pack/plugins/alerting/server/maintenance_window_client/maintenance_window_client.ts +++ b/x-pack/plugins/alerting/server/maintenance_window_client/maintenance_window_client.ts @@ -9,7 +9,7 @@ import { Logger, SavedObjectsClientContract } from '@kbn/core/server'; import { create, CreateParams } from './methods/create'; import { get, GetParams } from './methods/get'; import { update, UpdateParams } from './methods/update'; -import { find, FindParams, FindResult } from './methods/find'; +import { find, FindResult } from './methods/find'; import { deleteMaintenanceWindow, DeleteParams } from './methods/delete'; import { archive, ArchiveParams } from './methods/archive'; import { @@ -64,7 +64,7 @@ export class MaintenanceWindowClient { public get = (params: GetParams): Promise => get(this.context, params); public update = (params: UpdateParams): Promise => update(this.context, params); - public find = (params: FindParams): Promise => find(this.context, params); + public find = (): Promise => find(this.context); public delete = (params: DeleteParams): Promise<{}> => deleteMaintenanceWindow(this.context, params); public archive = (params: ArchiveParams): Promise => diff --git a/x-pack/plugins/alerting/server/maintenance_window_client/methods/find.test.ts b/x-pack/plugins/alerting/server/maintenance_window_client/methods/find.test.ts index e7cb77f1bb512c..f29e6576e6f788 100644 --- a/x-pack/plugins/alerting/server/maintenance_window_client/methods/find.test.ts +++ b/x-pack/plugins/alerting/server/maintenance_window_client/methods/find.test.ts @@ -6,7 +6,6 @@ */ import { find } from './find'; -import { fromKueryExpression } from '@kbn/es-query'; import { savedObjectsClientMock, loggingSystemMock } from '@kbn/core/server/mocks'; import { SavedObjectsFindResponse } from '@kbn/core/server'; import { @@ -48,11 +47,10 @@ describe('MaintenanceWindowClient - find', () => { ], } as unknown as SavedObjectsFindResponse); - const result = await find(mockContext, { filter: 'title: test' }); + const result = await find(mockContext); expect(savedObjectsClient.find).toHaveBeenLastCalledWith({ type: MAINTENANCE_WINDOW_SAVED_OBJECT_TYPE, - filter: fromKueryExpression('title: test'), }); expect(result.data.length).toEqual(2); diff --git a/x-pack/plugins/alerting/server/maintenance_window_client/methods/find.ts b/x-pack/plugins/alerting/server/maintenance_window_client/methods/find.ts index f186b187e277bd..f28761b4a2b663 100644 --- a/x-pack/plugins/alerting/server/maintenance_window_client/methods/find.ts +++ b/x-pack/plugins/alerting/server/maintenance_window_client/methods/find.ts @@ -6,7 +6,6 @@ */ import Boom from '@hapi/boom'; -import { buildKueryNodeFilter } from '../../rules_client/common'; import { getMaintenanceWindowFromRaw } from '../get_maintenance_window_from_raw'; import { MaintenanceWindowSOAttributes, @@ -15,26 +14,16 @@ import { MaintenanceWindowClientContext, } from '../../../common'; -export interface FindParams { - filter?: string; -} - export interface FindResult { data: MaintenanceWindow[]; } -export async function find( - context: MaintenanceWindowClientContext, - params: FindParams -): Promise { +export async function find(context: MaintenanceWindowClientContext): Promise { const { savedObjectsClient, logger } = context; - const { filter } = params; - const filterKueryNode = buildKueryNodeFilter(filter); try { const result = await savedObjectsClient.find({ type: MAINTENANCE_WINDOW_SAVED_OBJECT_TYPE, - filter: filterKueryNode, }); return { @@ -46,7 +35,7 @@ export async function find( ), }; } catch (e) { - const errorMessage = `Failed to find maintenance window: Filter: ${filter}, Error: ${e}`; + const errorMessage = `Failed to find maintenance window, Error: ${e}`; logger.error(errorMessage); throw Boom.boomify(e, { message: errorMessage }); } diff --git a/x-pack/plugins/alerting/server/routes/index.ts b/x-pack/plugins/alerting/server/routes/index.ts index 38f5f8c62d013d..9a0b8be33db42e 100644 --- a/x-pack/plugins/alerting/server/routes/index.ts +++ b/x-pack/plugins/alerting/server/routes/index.ts @@ -46,13 +46,13 @@ import { getFlappingSettingsRoute } from './get_flapping_settings'; import { updateFlappingSettingsRoute } from './update_flapping_settings'; import { getRuleTagsRoute } from './get_rule_tags'; -import { createMaintenanceWindowRoute } from './create_maintenance_window'; -import { getMaintenanceWindowRoute } from './get_maintenance_window'; -import { updateMaintenanceWindowRoute } from './update_maintenance_window'; -import { deleteMaintenanceWindowRoute } from './delete_maintenance_window'; -import { findMaintenanceWindowsRoute } from './find_maintenance_windows'; -import { archiveMaintenanceWindowRoute } from './archive_maintenance_window'; -import { finishMaintenanceWindowRoute } from './finish_maintenance_window'; +import { createMaintenanceWindowRoute } from './maintenance_window/create_maintenance_window'; +import { getMaintenanceWindowRoute } from './maintenance_window/get_maintenance_window'; +import { updateMaintenanceWindowRoute } from './maintenance_window/update_maintenance_window'; +import { deleteMaintenanceWindowRoute } from './maintenance_window/delete_maintenance_window'; +import { findMaintenanceWindowsRoute } from './maintenance_window/find_maintenance_windows'; +import { archiveMaintenanceWindowRoute } from './maintenance_window/archive_maintenance_window'; +import { finishMaintenanceWindowRoute } from './maintenance_window/finish_maintenance_window'; export interface RouteOptions { router: IRouter; diff --git a/x-pack/plugins/alerting/server/routes/archive_maintenance_window.test.ts b/x-pack/plugins/alerting/server/routes/maintenance_window/archive_maintenance_window.test.ts similarity index 85% rename from x-pack/plugins/alerting/server/routes/archive_maintenance_window.test.ts rename to x-pack/plugins/alerting/server/routes/maintenance_window/archive_maintenance_window.test.ts index 4424d18d3b1f34..891bd82831898c 100644 --- a/x-pack/plugins/alerting/server/routes/archive_maintenance_window.test.ts +++ b/x-pack/plugins/alerting/server/routes/maintenance_window/archive_maintenance_window.test.ts @@ -6,18 +6,18 @@ */ import { httpServiceMock } from '@kbn/core/server/mocks'; -import { licenseStateMock } from '../lib/license_state.mock'; -import { verifyApiAccess } from '../lib/license_api_access'; -import { mockHandlerArguments } from './_mock_handler_arguments'; -import { maintenanceWindowClientMock } from '../maintenance_window_client.mock'; +import { licenseStateMock } from '../../lib/license_state.mock'; +import { verifyApiAccess } from '../../lib/license_api_access'; +import { mockHandlerArguments } from '../_mock_handler_arguments'; +import { maintenanceWindowClientMock } from '../../maintenance_window_client.mock'; import { archiveMaintenanceWindowRoute } from './archive_maintenance_window'; -import { getMockMaintenanceWindow } from '../maintenance_window_client/methods/test_helpers'; -import { MaintenanceWindowStatus } from '../../common'; -import { rewritePartialMaintenanceBodyRes } from './lib'; +import { getMockMaintenanceWindow } from '../../maintenance_window_client/methods/test_helpers'; +import { MaintenanceWindowStatus } from '../../../common'; +import { rewritePartialMaintenanceBodyRes } from '../lib'; const maintenanceWindowClient = maintenanceWindowClientMock.create(); -jest.mock('../lib/license_api_access', () => ({ +jest.mock('../../lib/license_api_access', () => ({ verifyApiAccess: jest.fn(), })); diff --git a/x-pack/plugins/alerting/server/routes/archive_maintenance_window.ts b/x-pack/plugins/alerting/server/routes/maintenance_window/archive_maintenance_window.ts similarity index 90% rename from x-pack/plugins/alerting/server/routes/archive_maintenance_window.ts rename to x-pack/plugins/alerting/server/routes/maintenance_window/archive_maintenance_window.ts index 75b8d01bb00b14..123f374f79b057 100644 --- a/x-pack/plugins/alerting/server/routes/archive_maintenance_window.ts +++ b/x-pack/plugins/alerting/server/routes/maintenance_window/archive_maintenance_window.ts @@ -7,10 +7,10 @@ import { IRouter } from '@kbn/core/server'; import { schema } from '@kbn/config-schema'; -import { ILicenseState } from '../lib'; -import { verifyAccessAndContext, rewritePartialMaintenanceBodyRes } from './lib'; -import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../types'; -import { MAINTENANCE_WINDOW_API_PRIVILEGES } from '../../common'; +import { ILicenseState } from '../../lib'; +import { verifyAccessAndContext, rewritePartialMaintenanceBodyRes } from '../lib'; +import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../../types'; +import { MAINTENANCE_WINDOW_API_PRIVILEGES } from '../../../common'; const paramSchema = schema.object({ id: schema.string(), diff --git a/x-pack/plugins/alerting/server/routes/create_maintenance_window.test.ts b/x-pack/plugins/alerting/server/routes/maintenance_window/create_maintenance_window.test.ts similarity index 85% rename from x-pack/plugins/alerting/server/routes/create_maintenance_window.test.ts rename to x-pack/plugins/alerting/server/routes/maintenance_window/create_maintenance_window.test.ts index b2445265ba95b7..499a0719bb1cbd 100644 --- a/x-pack/plugins/alerting/server/routes/create_maintenance_window.test.ts +++ b/x-pack/plugins/alerting/server/routes/maintenance_window/create_maintenance_window.test.ts @@ -6,18 +6,18 @@ */ import { httpServiceMock } from '@kbn/core/server/mocks'; -import { licenseStateMock } from '../lib/license_state.mock'; -import { verifyApiAccess } from '../lib/license_api_access'; -import { mockHandlerArguments } from './_mock_handler_arguments'; -import { maintenanceWindowClientMock } from '../maintenance_window_client.mock'; +import { licenseStateMock } from '../../lib/license_state.mock'; +import { verifyApiAccess } from '../../lib/license_api_access'; +import { mockHandlerArguments } from '../_mock_handler_arguments'; +import { maintenanceWindowClientMock } from '../../maintenance_window_client.mock'; import { createMaintenanceWindowRoute, rewriteQueryReq } from './create_maintenance_window'; -import { getMockMaintenanceWindow } from '../maintenance_window_client/methods/test_helpers'; -import { MaintenanceWindowStatus } from '../../common'; -import { rewritePartialMaintenanceBodyRes } from './lib'; +import { getMockMaintenanceWindow } from '../../maintenance_window_client/methods/test_helpers'; +import { MaintenanceWindowStatus } from '../../../common'; +import { rewritePartialMaintenanceBodyRes } from '../lib'; const maintenanceWindowClient = maintenanceWindowClientMock.create(); -jest.mock('../lib/license_api_access', () => ({ +jest.mock('../../lib/license_api_access', () => ({ verifyApiAccess: jest.fn(), })); diff --git a/x-pack/plugins/alerting/server/routes/create_maintenance_window.ts b/x-pack/plugins/alerting/server/routes/maintenance_window/create_maintenance_window.ts similarity index 93% rename from x-pack/plugins/alerting/server/routes/create_maintenance_window.ts rename to x-pack/plugins/alerting/server/routes/maintenance_window/create_maintenance_window.ts index 8c8318d5288ca6..a74147d15890ce 100644 --- a/x-pack/plugins/alerting/server/routes/create_maintenance_window.ts +++ b/x-pack/plugins/alerting/server/routes/maintenance_window/create_maintenance_window.ts @@ -7,15 +7,15 @@ import { IRouter } from '@kbn/core/server'; import { schema } from '@kbn/config-schema'; -import { ILicenseState } from '../lib'; +import { ILicenseState } from '../../lib'; import { verifyAccessAndContext, rRuleSchema, RewriteRequestCase, rewriteMaintenanceWindowRes, -} from './lib'; -import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../types'; -import { MaintenanceWindowSOProperties, MAINTENANCE_WINDOW_API_PRIVILEGES } from '../../common'; +} from '../lib'; +import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../../types'; +import { MaintenanceWindowSOProperties, MAINTENANCE_WINDOW_API_PRIVILEGES } from '../../../common'; const bodySchema = schema.object({ title: schema.string(), diff --git a/x-pack/plugins/alerting/server/routes/delete_maintenance_window.test.ts b/x-pack/plugins/alerting/server/routes/maintenance_window/delete_maintenance_window.test.ts similarity index 85% rename from x-pack/plugins/alerting/server/routes/delete_maintenance_window.test.ts rename to x-pack/plugins/alerting/server/routes/maintenance_window/delete_maintenance_window.test.ts index 461ea0562440c9..39e1042f9b82e4 100644 --- a/x-pack/plugins/alerting/server/routes/delete_maintenance_window.test.ts +++ b/x-pack/plugins/alerting/server/routes/maintenance_window/delete_maintenance_window.test.ts @@ -6,17 +6,17 @@ */ import { httpServiceMock } from '@kbn/core/server/mocks'; -import { licenseStateMock } from '../lib/license_state.mock'; -import { verifyApiAccess } from '../lib/license_api_access'; -import { mockHandlerArguments } from './_mock_handler_arguments'; -import { maintenanceWindowClientMock } from '../maintenance_window_client.mock'; +import { licenseStateMock } from '../../lib/license_state.mock'; +import { verifyApiAccess } from '../../lib/license_api_access'; +import { mockHandlerArguments } from '../_mock_handler_arguments'; +import { maintenanceWindowClientMock } from '../../maintenance_window_client.mock'; import { deleteMaintenanceWindowRoute } from './delete_maintenance_window'; -import { getMockMaintenanceWindow } from '../maintenance_window_client/methods/test_helpers'; -import { MaintenanceWindowStatus } from '../../common'; +import { getMockMaintenanceWindow } from '../../maintenance_window_client/methods/test_helpers'; +import { MaintenanceWindowStatus } from '../../../common'; const maintenanceWindowClient = maintenanceWindowClientMock.create(); -jest.mock('../lib/license_api_access', () => ({ +jest.mock('../../lib/license_api_access', () => ({ verifyApiAccess: jest.fn(), })); diff --git a/x-pack/plugins/alerting/server/routes/delete_maintenance_window.ts b/x-pack/plugins/alerting/server/routes/maintenance_window/delete_maintenance_window.ts similarity index 86% rename from x-pack/plugins/alerting/server/routes/delete_maintenance_window.ts rename to x-pack/plugins/alerting/server/routes/maintenance_window/delete_maintenance_window.ts index d5d4a605693b6d..2415dbe74b53dc 100644 --- a/x-pack/plugins/alerting/server/routes/delete_maintenance_window.ts +++ b/x-pack/plugins/alerting/server/routes/maintenance_window/delete_maintenance_window.ts @@ -7,10 +7,10 @@ import { IRouter } from '@kbn/core/server'; import { schema } from '@kbn/config-schema'; -import { ILicenseState } from '../lib'; -import { verifyAccessAndContext } from './lib'; -import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../types'; -import { MAINTENANCE_WINDOW_API_PRIVILEGES } from '../../common'; +import { ILicenseState } from '../../lib'; +import { verifyAccessAndContext } from '../lib'; +import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../../types'; +import { MAINTENANCE_WINDOW_API_PRIVILEGES } from '../../../common'; const paramSchema = schema.object({ id: schema.string(), diff --git a/x-pack/plugins/alerting/server/routes/find_maintenance_windows.test.ts b/x-pack/plugins/alerting/server/routes/maintenance_window/find_maintenance_windows.test.ts similarity index 66% rename from x-pack/plugins/alerting/server/routes/find_maintenance_windows.test.ts rename to x-pack/plugins/alerting/server/routes/maintenance_window/find_maintenance_windows.test.ts index 7e7973c2a64e86..157adfe2a0e32c 100644 --- a/x-pack/plugins/alerting/server/routes/find_maintenance_windows.test.ts +++ b/x-pack/plugins/alerting/server/routes/maintenance_window/find_maintenance_windows.test.ts @@ -6,18 +6,18 @@ */ import { httpServiceMock } from '@kbn/core/server/mocks'; -import { licenseStateMock } from '../lib/license_state.mock'; -import { verifyApiAccess } from '../lib/license_api_access'; -import { mockHandlerArguments } from './_mock_handler_arguments'; -import { maintenanceWindowClientMock } from '../maintenance_window_client.mock'; +import { licenseStateMock } from '../../lib/license_state.mock'; +import { verifyApiAccess } from '../../lib/license_api_access'; +import { mockHandlerArguments } from '../_mock_handler_arguments'; +import { maintenanceWindowClientMock } from '../../maintenance_window_client.mock'; import { findMaintenanceWindowsRoute } from './find_maintenance_windows'; -import { getMockMaintenanceWindow } from '../maintenance_window_client/methods/test_helpers'; -import { MaintenanceWindowStatus } from '../../common'; -import { rewriteMaintenanceWindowRes } from './lib'; +import { getMockMaintenanceWindow } from '../../maintenance_window_client/methods/test_helpers'; +import { MaintenanceWindowStatus } from '../../../common'; +import { rewriteMaintenanceWindowRes } from '../lib'; const maintenanceWindowClient = maintenanceWindowClientMock.create(); -jest.mock('../lib/license_api_access', () => ({ +jest.mock('../../lib/license_api_access', () => ({ verifyApiAccess: jest.fn(), })); @@ -52,20 +52,15 @@ describe('findMaintenanceWindowsRoute', () => { findMaintenanceWindowsRoute(router, licenseState); maintenanceWindowClient.find.mockResolvedValueOnce(mockMaintenanceWindows); - const [config, handler] = router.post.mock.calls[0]; - const [context, req, res] = mockHandlerArguments( - { maintenanceWindowClient }, - { body: { filter: 'maintenance-window.attributes.title: test-title' } } - ); + const [config, handler] = router.get.mock.calls[0]; + const [context, req, res] = mockHandlerArguments({ maintenanceWindowClient }, { body: {} }); expect(config.path).toEqual('/internal/alerting/rules/maintenance_window/_find'); expect(config.options?.tags?.[0]).toEqual('access:read-maintenance-window'); await handler(context, req, res); - expect(maintenanceWindowClient.find).toHaveBeenLastCalledWith({ - filter: 'maintenance-window.attributes.title: test-title', - }); + expect(maintenanceWindowClient.find).toHaveBeenCalled(); expect(res.ok).toHaveBeenLastCalledWith({ body: { data: mockMaintenanceWindows.data.map((data) => rewriteMaintenanceWindowRes(data)), @@ -81,11 +76,8 @@ describe('findMaintenanceWindowsRoute', () => { findMaintenanceWindowsRoute(router, licenseState); maintenanceWindowClient.find.mockResolvedValueOnce(mockMaintenanceWindows); - const [, handler] = router.post.mock.calls[0]; - const [context, req, res] = mockHandlerArguments( - { maintenanceWindowClient }, - { body: { filter: 'maintenance-window.attributes.title: test-title' } } - ); + const [, handler] = router.get.mock.calls[0]; + const [context, req, res] = mockHandlerArguments({ maintenanceWindowClient }, { body: {} }); await handler(context, req, res); expect(verifyApiAccess).toHaveBeenCalledWith(licenseState); }); @@ -99,11 +91,8 @@ describe('findMaintenanceWindowsRoute', () => { (verifyApiAccess as jest.Mock).mockImplementation(() => { throw new Error('Failure'); }); - const [, handler] = router.post.mock.calls[0]; - const [context, req, res] = mockHandlerArguments( - { maintenanceWindowClient }, - { body: { filter: 'maintenance-window.attributes.title: test-title' } } - ); + const [, handler] = router.get.mock.calls[0]; + const [context, req, res] = mockHandlerArguments({ maintenanceWindowClient }, { body: {} }); expect(handler(context, req, res)).rejects.toMatchInlineSnapshot(`[Error: Failure]`); }); }); diff --git a/x-pack/plugins/alerting/server/routes/find_maintenance_windows.ts b/x-pack/plugins/alerting/server/routes/maintenance_window/find_maintenance_windows.ts similarity index 75% rename from x-pack/plugins/alerting/server/routes/find_maintenance_windows.ts rename to x-pack/plugins/alerting/server/routes/maintenance_window/find_maintenance_windows.ts index b5ad2e1600cd28..b581a011630a98 100644 --- a/x-pack/plugins/alerting/server/routes/find_maintenance_windows.ts +++ b/x-pack/plugins/alerting/server/routes/maintenance_window/find_maintenance_windows.ts @@ -6,26 +6,19 @@ */ import { IRouter } from '@kbn/core/server'; -import { schema } from '@kbn/config-schema'; -import { ILicenseState } from '../lib'; -import { verifyAccessAndContext, rewriteMaintenanceWindowRes } from './lib'; -import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../types'; -import { MAINTENANCE_WINDOW_API_PRIVILEGES } from '../../common'; - -const bodySchema = schema.object({ - filter: schema.maybe(schema.string()), -}); +import { ILicenseState } from '../../lib'; +import { verifyAccessAndContext, rewriteMaintenanceWindowRes } from '../lib'; +import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../../types'; +import { MAINTENANCE_WINDOW_API_PRIVILEGES } from '../../../common'; export const findMaintenanceWindowsRoute = ( router: IRouter, licenseState: ILicenseState ) => { - router.post( + router.get( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rules/maintenance_window/_find`, - validate: { - body: bodySchema, - }, + validate: {}, options: { tags: [`access:${MAINTENANCE_WINDOW_API_PRIVILEGES.READ_MAINTENANCE_WINDOW}`], }, @@ -33,7 +26,7 @@ export const findMaintenanceWindowsRoute = ( router.handleLegacyErrors( verifyAccessAndContext(licenseState, async function (context, req, res) { const maintenanceWindowClient = (await context.alerting).getMaintenanceWindowClient(); - const result = await maintenanceWindowClient.find(req.body); + const result = await maintenanceWindowClient.find(); return res.ok({ body: { diff --git a/x-pack/plugins/alerting/server/routes/finish_maintenance_window.test.ts b/x-pack/plugins/alerting/server/routes/maintenance_window/finish_maintenance_window.test.ts similarity index 84% rename from x-pack/plugins/alerting/server/routes/finish_maintenance_window.test.ts rename to x-pack/plugins/alerting/server/routes/maintenance_window/finish_maintenance_window.test.ts index 4b3241e049ced0..8d36c6bfec5811 100644 --- a/x-pack/plugins/alerting/server/routes/finish_maintenance_window.test.ts +++ b/x-pack/plugins/alerting/server/routes/maintenance_window/finish_maintenance_window.test.ts @@ -6,18 +6,18 @@ */ import { httpServiceMock } from '@kbn/core/server/mocks'; -import { licenseStateMock } from '../lib/license_state.mock'; -import { verifyApiAccess } from '../lib/license_api_access'; -import { mockHandlerArguments } from './_mock_handler_arguments'; -import { maintenanceWindowClientMock } from '../maintenance_window_client.mock'; +import { licenseStateMock } from '../../lib/license_state.mock'; +import { verifyApiAccess } from '../../lib/license_api_access'; +import { mockHandlerArguments } from '../_mock_handler_arguments'; +import { maintenanceWindowClientMock } from '../../maintenance_window_client.mock'; import { finishMaintenanceWindowRoute } from './finish_maintenance_window'; -import { getMockMaintenanceWindow } from '../maintenance_window_client/methods/test_helpers'; -import { MaintenanceWindowStatus } from '../../common'; -import { rewritePartialMaintenanceBodyRes } from './lib'; +import { getMockMaintenanceWindow } from '../../maintenance_window_client/methods/test_helpers'; +import { MaintenanceWindowStatus } from '../../../common'; +import { rewritePartialMaintenanceBodyRes } from '../lib'; const maintenanceWindowClient = maintenanceWindowClientMock.create(); -jest.mock('../lib/license_api_access', () => ({ +jest.mock('../../lib/license_api_access', () => ({ verifyApiAccess: jest.fn(), })); diff --git a/x-pack/plugins/alerting/server/routes/finish_maintenance_window.ts b/x-pack/plugins/alerting/server/routes/maintenance_window/finish_maintenance_window.ts similarity index 89% rename from x-pack/plugins/alerting/server/routes/finish_maintenance_window.ts rename to x-pack/plugins/alerting/server/routes/maintenance_window/finish_maintenance_window.ts index 9b892b4a48e7ad..2cd5ff9ba09948 100644 --- a/x-pack/plugins/alerting/server/routes/finish_maintenance_window.ts +++ b/x-pack/plugins/alerting/server/routes/maintenance_window/finish_maintenance_window.ts @@ -7,10 +7,10 @@ import { IRouter } from '@kbn/core/server'; import { schema } from '@kbn/config-schema'; -import { ILicenseState } from '../lib'; -import { verifyAccessAndContext, rewritePartialMaintenanceBodyRes } from './lib'; -import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../types'; -import { MAINTENANCE_WINDOW_API_PRIVILEGES } from '../../common'; +import { ILicenseState } from '../../lib'; +import { verifyAccessAndContext, rewritePartialMaintenanceBodyRes } from '../lib'; +import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../../types'; +import { MAINTENANCE_WINDOW_API_PRIVILEGES } from '../../../common'; const paramSchema = schema.object({ id: schema.string(), diff --git a/x-pack/plugins/alerting/server/routes/get_maintenance_window.test.ts b/x-pack/plugins/alerting/server/routes/maintenance_window/get_maintenance_window.test.ts similarity index 84% rename from x-pack/plugins/alerting/server/routes/get_maintenance_window.test.ts rename to x-pack/plugins/alerting/server/routes/maintenance_window/get_maintenance_window.test.ts index 08b82ba9d3bc70..a8042dbc9f60e2 100644 --- a/x-pack/plugins/alerting/server/routes/get_maintenance_window.test.ts +++ b/x-pack/plugins/alerting/server/routes/maintenance_window/get_maintenance_window.test.ts @@ -6,18 +6,18 @@ */ import { httpServiceMock } from '@kbn/core/server/mocks'; -import { licenseStateMock } from '../lib/license_state.mock'; -import { verifyApiAccess } from '../lib/license_api_access'; -import { mockHandlerArguments } from './_mock_handler_arguments'; -import { maintenanceWindowClientMock } from '../maintenance_window_client.mock'; +import { licenseStateMock } from '../../lib/license_state.mock'; +import { verifyApiAccess } from '../../lib/license_api_access'; +import { mockHandlerArguments } from '../_mock_handler_arguments'; +import { maintenanceWindowClientMock } from '../../maintenance_window_client.mock'; import { getMaintenanceWindowRoute } from './get_maintenance_window'; -import { getMockMaintenanceWindow } from '../maintenance_window_client/methods/test_helpers'; -import { MaintenanceWindowStatus } from '../../common'; -import { rewritePartialMaintenanceBodyRes } from './lib'; +import { getMockMaintenanceWindow } from '../../maintenance_window_client/methods/test_helpers'; +import { MaintenanceWindowStatus } from '../../../common'; +import { rewritePartialMaintenanceBodyRes } from '../lib'; const maintenanceWindowClient = maintenanceWindowClientMock.create(); -jest.mock('../lib/license_api_access', () => ({ +jest.mock('../../lib/license_api_access', () => ({ verifyApiAccess: jest.fn(), })); diff --git a/x-pack/plugins/alerting/server/routes/get_maintenance_window.ts b/x-pack/plugins/alerting/server/routes/maintenance_window/get_maintenance_window.ts similarity index 89% rename from x-pack/plugins/alerting/server/routes/get_maintenance_window.ts rename to x-pack/plugins/alerting/server/routes/maintenance_window/get_maintenance_window.ts index 98857ca4a5fbcb..dc01beeef148ab 100644 --- a/x-pack/plugins/alerting/server/routes/get_maintenance_window.ts +++ b/x-pack/plugins/alerting/server/routes/maintenance_window/get_maintenance_window.ts @@ -7,10 +7,10 @@ import { IRouter } from '@kbn/core/server'; import { schema } from '@kbn/config-schema'; -import { ILicenseState } from '../lib'; -import { verifyAccessAndContext, rewriteMaintenanceWindowRes } from './lib'; -import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../types'; -import { MAINTENANCE_WINDOW_API_PRIVILEGES } from '../../common'; +import { ILicenseState } from '../../lib'; +import { verifyAccessAndContext, rewriteMaintenanceWindowRes } from '../lib'; +import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../../types'; +import { MAINTENANCE_WINDOW_API_PRIVILEGES } from '../../../common'; const paramSchema = schema.object({ id: schema.string(), diff --git a/x-pack/plugins/alerting/server/routes/update_maintenance_window.test.ts b/x-pack/plugins/alerting/server/routes/maintenance_window/update_maintenance_window.test.ts similarity index 86% rename from x-pack/plugins/alerting/server/routes/update_maintenance_window.test.ts rename to x-pack/plugins/alerting/server/routes/maintenance_window/update_maintenance_window.test.ts index 11310a48379715..b8f5a6f572c415 100644 --- a/x-pack/plugins/alerting/server/routes/update_maintenance_window.test.ts +++ b/x-pack/plugins/alerting/server/routes/maintenance_window/update_maintenance_window.test.ts @@ -6,18 +6,18 @@ */ import { RRule } from 'rrule'; import { httpServiceMock } from '@kbn/core/server/mocks'; -import { licenseStateMock } from '../lib/license_state.mock'; -import { verifyApiAccess } from '../lib/license_api_access'; -import { mockHandlerArguments } from './_mock_handler_arguments'; -import { maintenanceWindowClientMock } from '../maintenance_window_client.mock'; +import { licenseStateMock } from '../../lib/license_state.mock'; +import { verifyApiAccess } from '../../lib/license_api_access'; +import { mockHandlerArguments } from '../_mock_handler_arguments'; +import { maintenanceWindowClientMock } from '../../maintenance_window_client.mock'; import { updateMaintenanceWindowRoute, rewriteQueryReq } from './update_maintenance_window'; -import { getMockMaintenanceWindow } from '../maintenance_window_client/methods/test_helpers'; -import { MaintenanceWindowStatus } from '../../common'; -import { rewritePartialMaintenanceBodyRes } from './lib'; +import { getMockMaintenanceWindow } from '../../maintenance_window_client/methods/test_helpers'; +import { MaintenanceWindowStatus } from '../../../common'; +import { rewritePartialMaintenanceBodyRes } from '../lib'; const maintenanceWindowClient = maintenanceWindowClientMock.create(); -jest.mock('../lib/license_api_access', () => ({ +jest.mock('../../lib/license_api_access', () => ({ verifyApiAccess: jest.fn(), })); diff --git a/x-pack/plugins/alerting/server/routes/update_maintenance_window.ts b/x-pack/plugins/alerting/server/routes/maintenance_window/update_maintenance_window.ts similarity index 94% rename from x-pack/plugins/alerting/server/routes/update_maintenance_window.ts rename to x-pack/plugins/alerting/server/routes/maintenance_window/update_maintenance_window.ts index f5197b11bdca01..7778b4d6213592 100644 --- a/x-pack/plugins/alerting/server/routes/update_maintenance_window.ts +++ b/x-pack/plugins/alerting/server/routes/maintenance_window/update_maintenance_window.ts @@ -7,15 +7,15 @@ import { IRouter } from '@kbn/core/server'; import { schema } from '@kbn/config-schema'; -import { ILicenseState } from '../lib'; +import { ILicenseState } from '../../lib'; import { verifyAccessAndContext, rRuleSchema, RewriteRequestCase, rewritePartialMaintenanceBodyRes, -} from './lib'; -import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../types'; -import { MaintenanceWindowSOProperties, MAINTENANCE_WINDOW_API_PRIVILEGES } from '../../common'; +} from '../lib'; +import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../../types'; +import { MaintenanceWindowSOProperties, MAINTENANCE_WINDOW_API_PRIVILEGES } from '../../../common'; const paramSchema = schema.object({ id: schema.string(), diff --git a/x-pack/plugins/alerting/server/saved_objects/maintenance_window_mapping.ts b/x-pack/plugins/alerting/server/saved_objects/maintenance_window_mapping.ts index 1b83d1753af382..48bf1ab83dcc8a 100644 --- a/x-pack/plugins/alerting/server/saved_objects/maintenance_window_mapping.ts +++ b/x-pack/plugins/alerting/server/saved_objects/maintenance_window_mapping.ts @@ -6,47 +6,48 @@ */ import { SavedObjectsTypeMappingDefinition } from '@kbn/core/server'; -import { rRuleMappingsField } from './rrule_mappings_field'; export const maintenanceWindowMappings: SavedObjectsTypeMappingDefinition = { + dynamic: false, properties: { - title: { - type: 'text', - fields: { - keyword: { - type: 'keyword', - }, - }, - }, enabled: { type: 'boolean', }, - duration: { - type: 'long', - }, - expirationDate: { - type: 'date', - }, events: { type: 'date_range', format: 'epoch_millis||strict_date_optional_time', }, - rRule: rRuleMappingsField, - createdBy: { - index: false, - type: 'keyword', - }, - updatedBy: { - index: false, - type: 'keyword', - }, - createdAt: { - index: false, - type: 'date', - }, - updatedAt: { - index: false, - type: 'date', - }, + // NO NEED TO BE INDEXED + // title: { + // type: 'text', + // fields: { + // keyword: { + // type: 'keyword', + // }, + // }, + // }, + // duration: { + // type: 'long', + // }, + // expirationDate: { + // type: 'date', + // }, + // rRule: rRuleMappingsField, + // createdBy: { + // index: false, + // type: 'keyword', + // }, + // updatedBy: { + // index: false, + // type: 'keyword', + // }, + // createdAt: { + // index: false, + // type: 'date', + // }, + // updatedAt: { + // index: false, + // type: 'date', + // }, }, }; diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/maintenance_window/find_maintenance_windows.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/maintenance_window/find_maintenance_windows.ts index 619fb7fdcefcdb..1ebae969b05a63 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/maintenance_window/find_maintenance_windows.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/maintenance_window/find_maintenance_windows.ts @@ -59,7 +59,7 @@ export default function findMaintenanceWindowTests({ getService }: FtrProviderCo ); const response = await supertestWithoutAuth - .post(`${getUrlPrefix(space.id)}/internal/alerting/rules/maintenance_window/_find`) + .get(`${getUrlPrefix(space.id)}/internal/alerting/rules/maintenance_window/_find`) .set('kbn-xsrf', 'foo') .auth(user.username, user.password) .send({});