Skip to content

Commit e380bfd

Browse files
Merge branch 'master' into unskip-flaky-tests
2 parents 1503c60 + 326a162 commit e380bfd

111 files changed

Lines changed: 3948 additions & 3140 deletions

File tree

Some content is hidden

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

renovate.json5

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -913,6 +913,14 @@
913913
'@types/tslib',
914914
],
915915
},
916+
{
917+
groupSlug: 'use-resize-observer',
918+
groupName: 'use-resize-observer related packages',
919+
packageNames: [
920+
'use-resize-observer',
921+
'@types/use-resize-observer',
922+
],
923+
},
916924
{
917925
groupSlug: 'uuid',
918926
groupName: 'uuid related packages',

src/core/server/http/test_utils.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,14 @@ const defaultContext: CoreContext = {
5555
configService,
5656
};
5757

58+
export const createCoreContext = (overrides: Partial<CoreContext> = {}): CoreContext => ({
59+
...defaultContext,
60+
...overrides,
61+
});
62+
5863
/**
5964
* Creates a concrete HttpServer with a mocked context.
6065
*/
6166
export const createHttpServer = (overrides: Partial<CoreContext> = {}): HttpService => {
62-
const context = {
63-
...defaultContext,
64-
...overrides,
65-
};
66-
return new HttpService(context);
67+
return new HttpService(createCoreContext(overrides));
6768
};

src/core/server/legacy/legacy_service.mock.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ const createDiscoverPluginsMock = (): LegacyServiceDiscoverPlugins => ({
2929
savedObjectMappings: [],
3030
savedObjectMigrations: {},
3131
savedObjectValidations: {},
32+
savedObjectsManagement: {},
3233
},
3334
navLinks: [],
3435
pluginExtendedConfig: {

src/core/server/legacy/plugins/get_nav_links.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ const createLegacyExports = ({
3535
savedObjectSchemas: {},
3636
savedObjectMigrations: {},
3737
savedObjectValidations: {},
38+
savedObjectsManagement: {},
3839
});
3940

4041
const createPluginSpecs = (...ids: string[]): LegacyPluginSpec[] =>

src/core/server/mocks.ts

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import { elasticsearchServiceMock } from './elasticsearch/elasticsearch_service.
2525
import { httpServiceMock } from './http/http_service.mock';
2626
import { contextServiceMock } from './context/context_service.mock';
2727
import { savedObjectsServiceMock } from './saved_objects/saved_objects_service.mock';
28+
import { savedObjectsClientMock } from './saved_objects/service/saved_objects_client.mock';
2829
import { uiSettingsServiceMock } from './ui_settings/ui_settings_service.mock';
2930
import { SharedGlobalConfig } from './plugins';
3031
import { InternalCoreSetup, InternalCoreStart } from './internal_types';
@@ -36,7 +37,6 @@ export { configServiceMock } from './config/config_service.mock';
3637
export { elasticsearchServiceMock } from './elasticsearch/elasticsearch_service.mock';
3738
export { httpServiceMock } from './http/http_service.mock';
3839
export { loggingServiceMock } from './logging/logging_service.mock';
39-
export { savedObjectsClientMock } from './saved_objects/service/saved_objects_client.mock';
4040
export { savedObjectsRepositoryMock } from './saved_objects/service/lib/repository.mock';
4141
export { typeRegistryMock as savedObjectsTypeRegistryMock } from './saved_objects/saved_objects_type_registry.mock';
4242
export { uiSettingsServiceMock } from './ui_settings/ui_settings_service.mock';
@@ -168,10 +168,31 @@ function createInternalCoreStartMock() {
168168
return startDeps;
169169
}
170170

171+
function createCoreRequestHandlerContextMock() {
172+
return {
173+
rendering: {
174+
render: jest.fn(),
175+
},
176+
savedObjects: {
177+
client: savedObjectsClientMock.create(),
178+
},
179+
elasticsearch: {
180+
adminClient: elasticsearchServiceMock.createScopedClusterClient(),
181+
dataClient: elasticsearchServiceMock.createScopedClusterClient(),
182+
},
183+
uiSettings: {
184+
client: uiSettingsServiceMock.createClient(),
185+
},
186+
};
187+
}
188+
171189
export const coreMock = {
172190
createSetup: createCoreSetupMock,
173191
createStart: createCoreStartMock,
174192
createInternalSetup: createInternalCoreSetupMock,
175193
createInternalStart: createInternalCoreStartMock,
176194
createPluginInitializerContext: pluginInitializerContextMock,
195+
createRequestHandlerContext: createCoreRequestHandlerContextMock,
177196
};
197+
198+
export { savedObjectsClientMock };

src/core/server/saved_objects/export/get_sorted_objects_for_export.test.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -492,7 +492,6 @@ describe('getSortedObjectsForExport()', () => {
492492
const exportStream = await getSortedObjectsForExport({
493493
exportSizeLimit: 10000,
494494
savedObjectsClient,
495-
types: ['index-pattern', 'search'],
496495
objects: [
497496
{
498497
type: 'index-pattern',
@@ -591,7 +590,6 @@ describe('getSortedObjectsForExport()', () => {
591590
const exportStream = await getSortedObjectsForExport({
592591
exportSizeLimit: 10000,
593592
savedObjectsClient,
594-
types: ['index-pattern', 'search'],
595593
objects: [
596594
{
597595
type: 'search',
@@ -672,7 +670,6 @@ describe('getSortedObjectsForExport()', () => {
672670
const exportOpts = {
673671
exportSizeLimit: 1,
674672
savedObjectsClient,
675-
types: ['index-pattern', 'search'],
676673
objects: [
677674
{
678675
type: 'index-pattern',

src/core/server/saved_objects/export/get_sorted_objects_for_export.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@ async function fetchObjectsToExport({
8484
savedObjectsClient: SavedObjectsClientContract;
8585
namespace?: string;
8686
}) {
87+
if ((types?.length ?? 0) > 0 && (objects?.length ?? 0) > 0) {
88+
throw Boom.badRequest(`Can't specify both "types" and "objects" properties when exporting`);
89+
}
8790
if (objects && objects.length > 0) {
8891
if (objects.length > exportSizeLimit) {
8992
throw Boom.badRequest(`Can't export more than ${exportSizeLimit} objects`);

src/core/server/saved_objects/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,5 +68,5 @@ export { SavedObjectMigrationMap, SavedObjectMigrationFn } from './migrations';
6868

6969
export { SavedObjectsType } from './types';
7070

71-
export { config } from './saved_objects_config';
71+
export { savedObjectsConfig, savedObjectsMigrationConfig } from './saved_objects_config';
7272
export { SavedObjectTypeRegistry, ISavedObjectTypeRegistry } from './saved_objects_type_registry';

src/core/server/saved_objects/migrations/kibana/kibana_migrator.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,14 @@ import { docValidator, PropertyValidators } from '../../validation';
3030
import { buildActiveMappings, CallCluster, IndexMigrator } from '../core';
3131
import { DocumentMigrator, VersionedTransformer } from '../core/document_migrator';
3232
import { createIndexMap } from '../core/build_index_map';
33-
import { SavedObjectsConfigType } from '../../saved_objects_config';
33+
import { SavedObjectsMigrationConfigType } from '../../saved_objects_config';
3434
import { ISavedObjectTypeRegistry } from '../../saved_objects_type_registry';
3535
import { SavedObjectsType } from '../../types';
3636

3737
export interface KibanaMigratorOptions {
3838
callCluster: CallCluster;
3939
typeRegistry: ISavedObjectTypeRegistry;
40-
savedObjectsConfig: SavedObjectsConfigType;
40+
savedObjectsConfig: SavedObjectsMigrationConfigType;
4141
kibanaConfig: KibanaConfigType;
4242
kibanaVersion: string;
4343
logger: Logger;
@@ -51,7 +51,7 @@ export type IKibanaMigrator = Pick<KibanaMigrator, keyof KibanaMigrator>;
5151
*/
5252
export class KibanaMigrator {
5353
private readonly callCluster: CallCluster;
54-
private readonly savedObjectsConfig: SavedObjectsConfigType;
54+
private readonly savedObjectsConfig: SavedObjectsMigrationConfigType;
5555
private readonly documentMigrator: VersionedTransformer;
5656
private readonly kibanaConfig: KibanaConfigType;
5757
private readonly log: Logger;
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
/*
2+
* Licensed to Elasticsearch B.V. under one or more contributor
3+
* license agreements. See the NOTICE file distributed with
4+
* this work for additional information regarding copyright
5+
* ownership. Elasticsearch B.V. licenses this file to you under
6+
* the Apache License, Version 2.0 (the "License"); you may
7+
* not use this file except in compliance with the License.
8+
* You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing,
13+
* software distributed under the License is distributed on an
14+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15+
* KIND, either express or implied. See the License for the
16+
* specific language governing permissions and limitations
17+
* under the License.
18+
*/
19+
20+
import { schema } from '@kbn/config-schema';
21+
import { IRouter } from '../../http';
22+
23+
export const registerBulkCreateRoute = (router: IRouter) => {
24+
router.post(
25+
{
26+
path: '/_bulk_create',
27+
validate: {
28+
query: schema.object({
29+
overwrite: schema.boolean({ defaultValue: false }),
30+
}),
31+
body: schema.arrayOf(
32+
schema.object({
33+
type: schema.string(),
34+
id: schema.maybe(schema.string()),
35+
attributes: schema.recordOf(schema.string(), schema.any()),
36+
version: schema.maybe(schema.string()),
37+
migrationVersion: schema.maybe(schema.recordOf(schema.string(), schema.string())),
38+
references: schema.maybe(
39+
schema.arrayOf(
40+
schema.object({
41+
name: schema.string(),
42+
type: schema.string(),
43+
id: schema.string(),
44+
})
45+
)
46+
),
47+
})
48+
),
49+
},
50+
},
51+
router.handleLegacyErrors(async (context, req, res) => {
52+
const { overwrite } = req.query;
53+
const result = await context.core.savedObjects.client.bulkCreate(req.body, { overwrite });
54+
return res.ok({ body: result });
55+
})
56+
);
57+
};

0 commit comments

Comments
 (0)