mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 17:28:26 -04:00
[8.6] [UA] skip system indices migration status check if featureSet.migrateSystemIndices
is set to false
(#150710) (#150736)
# Backport This will backport the following commits from `main` to `8.6`: - [[UA] skip system indices migration status check if `featureSet.migrateSystemIndices` is set to `false` (#150710)](https://github.com/elastic/kibana/pull/150710) <!--- Backport version: 8.9.7 --> ### Questions ? Please refer to the [Backport tool documentation](https://github.com/sqren/backport) <!--BACKPORT [{"author":{"name":"Ahmad Bamieh","email":"ahmad.bamyeh@elastic.co"},"sourceCommit":{"committedDate":"2023-02-09T16:09:39Z","message":"[UA] skip system indices migration status check if `featureSet.migrateSystemIndices` is set to `false` (#150710)\n\nCo-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>","sha":"d2f86398ecc76c0a8a9abdbadcb6d37a693886b9","branchLabelMapping":{"^v8.8.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["bug","release_note:skip","v8.6.2","v8.8.0"],"number":150710,"url":"https://github.com/elastic/kibana/pull/150710","mergeCommit":{"message":"[UA] skip system indices migration status check if `featureSet.migrateSystemIndices` is set to `false` (#150710)\n\nCo-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>","sha":"d2f86398ecc76c0a8a9abdbadcb6d37a693886b9"}},"sourceBranch":"main","suggestedTargetBranches":["8.6"],"targetPullRequestStates":[{"branch":"8.6","label":"v8.6.2","labelRegex":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"main","label":"v8.8.0","labelRegex":"^v8.8.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/150710","number":150710,"mergeCommit":{"message":"[UA] skip system indices migration status check if `featureSet.migrateSystemIndices` is set to `false` (#150710)\n\nCo-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>","sha":"d2f86398ecc76c0a8a9abdbadcb6d37a693886b9"}}]}] BACKPORT--> Co-authored-by: Ahmad Bamieh <ahmad.bamyeh@elastic.co>
This commit is contained in:
parent
6caf84dba0
commit
ebd9b2a083
2 changed files with 64 additions and 14 deletions
|
@ -8,12 +8,13 @@
|
|||
import { kibanaResponseFactory } from '@kbn/core/server';
|
||||
|
||||
import { handleEsError } from '../shared_imports';
|
||||
import { createMockRouter, MockRouter, routeHandlerContextMock } from './__mocks__/routes.mock';
|
||||
import { createMockRouter, routeHandlerContextMock } from './__mocks__/routes.mock';
|
||||
import { createRequestMock } from './__mocks__/request.mock';
|
||||
import { registerUpgradeStatusRoute } from './status';
|
||||
import { getESUpgradeStatus } from '../lib/es_deprecations_status';
|
||||
import { getKibanaUpgradeStatus } from '../lib/kibana_status';
|
||||
import { getESSystemIndicesMigrationStatus } from '../lib/es_system_indices_migration';
|
||||
import type { FeatureSet } from '../../common/types';
|
||||
|
||||
jest.mock('../lib/es_version_precheck', () => ({
|
||||
versionCheckHandlerWrapper: (a: any) => a,
|
||||
|
@ -86,31 +87,33 @@ const systemIndicesNoMigrationResponse = {
|
|||
};
|
||||
|
||||
describe('Status API', () => {
|
||||
let mockRouter: MockRouter;
|
||||
let routeDependencies: any;
|
||||
|
||||
beforeEach(() => {
|
||||
mockRouter = createMockRouter();
|
||||
routeDependencies = {
|
||||
const registerRoutes = (featureSetOverrides: Partial<FeatureSet> = {}) => {
|
||||
const mockRouter = createMockRouter();
|
||||
const routeDependencies: any = {
|
||||
config: {
|
||||
featureSet: {
|
||||
mlSnapshots: true,
|
||||
migrateSystemIndices: true,
|
||||
reindexCorrectiveActions: true,
|
||||
...featureSetOverrides,
|
||||
},
|
||||
},
|
||||
router: mockRouter,
|
||||
lib: { handleEsError },
|
||||
};
|
||||
registerUpgradeStatusRoute(routeDependencies);
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
jest.resetAllMocks();
|
||||
});
|
||||
registerUpgradeStatusRoute(routeDependencies);
|
||||
|
||||
return { mockRouter, routeDependencies };
|
||||
};
|
||||
|
||||
describe('GET /api/upgrade_assistant/status', () => {
|
||||
afterEach(() => {
|
||||
jest.resetAllMocks();
|
||||
});
|
||||
|
||||
it('returns readyForUpgrade === false if Kibana or ES contain critical deprecations and no system indices need migration', async () => {
|
||||
const { routeDependencies } = registerRoutes();
|
||||
getESUpgradeStatusMock.mockResolvedValue(esDeprecationsResponse);
|
||||
|
||||
getKibanaUpgradeStatusMock.mockResolvedValue({
|
||||
|
@ -124,6 +127,7 @@ describe('Status API', () => {
|
|||
pathPattern: '/api/upgrade_assistant/status',
|
||||
})(routeHandlerContextMock, createRequestMock(), kibanaResponseFactory);
|
||||
|
||||
expect(getESSystemIndicesMigrationStatusMock).toBeCalledTimes(1);
|
||||
expect(resp.status).toEqual(200);
|
||||
expect(resp.payload).toEqual({
|
||||
readyForUpgrade: false,
|
||||
|
@ -133,6 +137,7 @@ describe('Status API', () => {
|
|||
});
|
||||
|
||||
it('returns readyForUpgrade === false if Kibana or ES contain critical deprecations and system indices need migration', async () => {
|
||||
const { routeDependencies } = registerRoutes();
|
||||
getESUpgradeStatusMock.mockResolvedValue(esDeprecationsResponse);
|
||||
|
||||
getKibanaUpgradeStatusMock.mockResolvedValue({
|
||||
|
@ -146,6 +151,7 @@ describe('Status API', () => {
|
|||
pathPattern: '/api/upgrade_assistant/status',
|
||||
})(routeHandlerContextMock, createRequestMock(), kibanaResponseFactory);
|
||||
|
||||
expect(getESSystemIndicesMigrationStatusMock).toBeCalledTimes(1);
|
||||
expect(resp.status).toEqual(200);
|
||||
expect(resp.payload).toEqual({
|
||||
readyForUpgrade: false,
|
||||
|
@ -155,6 +161,7 @@ describe('Status API', () => {
|
|||
});
|
||||
|
||||
it('returns readyForUpgrade === false if no critical Kibana or ES deprecations but system indices need migration', async () => {
|
||||
const { routeDependencies } = registerRoutes();
|
||||
getESUpgradeStatusMock.mockResolvedValue(esNoDeprecationsResponse);
|
||||
|
||||
getKibanaUpgradeStatusMock.mockResolvedValue({
|
||||
|
@ -168,6 +175,7 @@ describe('Status API', () => {
|
|||
pathPattern: '/api/upgrade_assistant/status',
|
||||
})(routeHandlerContextMock, createRequestMock(), kibanaResponseFactory);
|
||||
|
||||
expect(getESSystemIndicesMigrationStatusMock).toBeCalledTimes(1);
|
||||
expect(resp.status).toEqual(200);
|
||||
expect(resp.payload).toEqual({
|
||||
readyForUpgrade: false,
|
||||
|
@ -177,6 +185,7 @@ describe('Status API', () => {
|
|||
});
|
||||
|
||||
it('returns readyForUpgrade === true if there are no critical deprecations and no system indices need migration', async () => {
|
||||
const { routeDependencies } = registerRoutes();
|
||||
getESUpgradeStatusMock.mockResolvedValue(esNoDeprecationsResponse);
|
||||
|
||||
getKibanaUpgradeStatusMock.mockResolvedValue({
|
||||
|
@ -197,7 +206,30 @@ describe('Status API', () => {
|
|||
});
|
||||
});
|
||||
|
||||
it('skips ES system indices migration check when featureSet.migrateSystemIndices is set to false', async () => {
|
||||
const { routeDependencies } = registerRoutes({ migrateSystemIndices: false });
|
||||
getESUpgradeStatusMock.mockResolvedValue(esNoDeprecationsResponse);
|
||||
|
||||
getKibanaUpgradeStatusMock.mockResolvedValue({
|
||||
totalCriticalDeprecations: 0,
|
||||
});
|
||||
|
||||
getESSystemIndicesMigrationStatusMock.mockResolvedValue(systemIndicesMigrationResponse);
|
||||
const resp = await routeDependencies.router.getHandler({
|
||||
method: 'get',
|
||||
pathPattern: '/api/upgrade_assistant/status',
|
||||
})(routeHandlerContextMock, createRequestMock(), kibanaResponseFactory);
|
||||
|
||||
expect(getESSystemIndicesMigrationStatusMock).toBeCalledTimes(0);
|
||||
expect(resp.status).toEqual(200);
|
||||
expect(resp.payload).toEqual({
|
||||
readyForUpgrade: true,
|
||||
details: 'All deprecation warnings have been resolved.',
|
||||
});
|
||||
});
|
||||
|
||||
it('returns an error if it throws', async () => {
|
||||
const { routeDependencies } = registerRoutes();
|
||||
getESUpgradeStatusMock.mockRejectedValue(new Error('test error'));
|
||||
|
||||
getKibanaUpgradeStatusMock.mockResolvedValue({
|
||||
|
|
|
@ -37,9 +37,27 @@ export function registerUpgradeStatusRoute({
|
|||
esClient,
|
||||
featureSet
|
||||
);
|
||||
// Fetch system indices migration status
|
||||
|
||||
const getSystemIndicesMigrationStatus = async () => {
|
||||
/**
|
||||
* Skip system indices migration status check if `featureSet.migrateSystemIndices`
|
||||
* is set to `false`. This flag is enabled from configs for major version stack ugprades.
|
||||
* returns `migration_status: 'NO_MIGRATION_NEEDED'` to indicate no migation needed.
|
||||
*/
|
||||
if (!featureSet.migrateSystemIndices) {
|
||||
return {
|
||||
migration_status: 'NO_MIGRATION_NEEDED',
|
||||
features: [],
|
||||
};
|
||||
}
|
||||
|
||||
// Fetch system indices migration status from ES
|
||||
return await getESSystemIndicesMigrationStatus(esClient.asCurrentUser);
|
||||
};
|
||||
|
||||
const { migration_status: systemIndicesMigrationStatus, features } =
|
||||
await getESSystemIndicesMigrationStatus(esClient.asCurrentUser);
|
||||
await getSystemIndicesMigrationStatus();
|
||||
|
||||
const notMigratedSystemIndices = features.filter(
|
||||
(feature) => feature.migration_status !== 'NO_MIGRATION_NEEDED'
|
||||
).length;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue