Skip to content

Commit bcaffba

Browse files
authored
Remove legacy SavedObjects (#76852)
* remove legacy SO integration * cleanup integration in the legacy platorm * remove so schema * update docs * remove leftovers, update docs * update docs after merge master
1 parent bb2aa42 commit bcaffba

Some content is hidden

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

44 files changed

+47
-2026
lines changed

docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.md

-2
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@ export interface SavedObjectsServiceSetup
1616

1717
When plugins access the Saved Objects client, a new client is created using the factory provided to `setClientFactory` and wrapped by all wrappers registered through `addClientWrapper`<!-- -->.
1818

19-
All the setup APIs will throw if called after the service has started, and therefor cannot be used from legacy plugin code. Legacy plugins should use the legacy savedObject service until migrated.
20-
2119
## Example 1
2220

2321

docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.registertype.md

-4
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,6 @@ See the [mappings format](./kibana-plugin-core-server.savedobjectstypemappingdef
1414
registerType: (type: SavedObjectsType) => void;
1515
```
1616

17-
## Remarks
18-
19-
The type definition is an aggregation of the legacy savedObjects `schema`<!-- -->, `mappings` and `migration` concepts. This API is the single entry point to register saved object types in the new platform.
20-
2117
## Example
2218

2319

kibana.d.ts

-2
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,6 @@ export namespace Legacy {
3939
export type KibanaConfig = LegacyKibanaServer.KibanaConfig;
4040
export type Request = LegacyKibanaServer.Request;
4141
export type ResponseToolkit = LegacyKibanaServer.ResponseToolkit;
42-
export type SavedObjectsClient = LegacyKibanaServer.SavedObjectsClient;
43-
export type SavedObjectsService = LegacyKibanaServer.SavedObjectsLegacyService;
4442
export type Server = LegacyKibanaServer.Server;
4543

4644
export type InitPluginFunction = LegacyKibanaPluginSpec.InitPluginFunction;

src/core/server/index.ts

-2
Original file line numberDiff line numberDiff line change
@@ -266,9 +266,7 @@ export {
266266
SavedObjectUnsanitizedDoc,
267267
SavedObjectsRepositoryFactory,
268268
SavedObjectsResolveImportErrorsOptions,
269-
SavedObjectsSchema,
270269
SavedObjectsSerializer,
271-
SavedObjectsLegacyService,
272270
SavedObjectsUpdateOptions,
273271
SavedObjectsUpdateResponse,
274272
SavedObjectsAddToNamespacesOptions,

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

+1-7
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,7 @@ type LegacyServiceMock = jest.Mocked<PublicMethodsOf<LegacyService> & { legacyId
2424

2525
const createDiscoverPluginsMock = (): LegacyServiceDiscoverPlugins => ({
2626
pluginSpecs: [],
27-
uiExports: {
28-
savedObjectSchemas: {},
29-
savedObjectMappings: [],
30-
savedObjectMigrations: {},
31-
savedObjectValidations: {},
32-
savedObjectsManagement: {},
33-
},
27+
uiExports: {},
3428
navLinks: [],
3529
pluginExtendedConfig: {
3630
get: jest.fn(),

src/core/server/legacy/legacy_service.ts

-2
Original file line numberDiff line numberDiff line change
@@ -341,11 +341,9 @@ export class LegacyService implements CoreService {
341341
registerStaticDir: setupDeps.core.http.registerStaticDir,
342342
},
343343
hapiServer: setupDeps.core.http.server,
344-
kibanaMigrator: startDeps.core.savedObjects.migrator,
345344
uiPlugins: setupDeps.uiPlugins,
346345
elasticsearch: setupDeps.core.elasticsearch,
347346
rendering: setupDeps.core.rendering,
348-
savedObjectsClientProvider: startDeps.core.savedObjects.clientProvider,
349347
legacy: this.legacyInternals,
350348
},
351349
logger: this.coreContext.logger,

src/core/server/legacy/types.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import { KibanaRequest, LegacyRequest } from '../http';
2424
import { InternalCoreSetup, InternalCoreStart } from '../internal_types';
2525
import { PluginsServiceSetup, PluginsServiceStart, UiPlugins } from '../plugins';
2626
import { InternalRenderingServiceSetup } from '../rendering';
27-
import { SavedObjectsLegacyUiExports } from '../types';
2827

2928
/**
3029
* @internal
@@ -128,13 +127,13 @@ export type LegacyNavLink = Omit<ChromeNavLink, 'baseUrl' | 'legacy' | 'order' |
128127
* @internal
129128
* @deprecated
130129
*/
131-
export type LegacyUiExports = SavedObjectsLegacyUiExports & {
130+
export interface LegacyUiExports {
132131
defaultInjectedVarProviders?: VarsProvider[];
133132
injectedVarsReplacers?: VarsReplacer[];
134133
navLinkSpecs?: LegacyNavLinkSpec[] | null;
135134
uiAppSpecs?: Array<LegacyAppSpec | undefined>;
136135
unknown?: [{ pluginSpec: LegacyPluginSpec; type: unknown }];
137-
};
136+
}
138137

139138
/**
140139
* @public

src/core/server/saved_objects/__snapshots__/utils.test.ts.snap

-184
This file was deleted.

src/core/server/saved_objects/index.ts

-2
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@
1919

2020
export * from './service';
2121

22-
export { SavedObjectsSchema } from './schema';
23-
2422
export * from './import';
2523

2624
export {

src/core/server/saved_objects/migrations/core/document_migrator.test.ts

-25
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ describe('DocumentMigrator', () => {
4848
return {
4949
kibanaVersion: '25.2.3',
5050
typeRegistry: createRegistry(),
51-
validateDoc: _.noop,
5251
log: mockLogger,
5352
};
5453
}
@@ -60,7 +59,6 @@ describe('DocumentMigrator', () => {
6059
name: 'foo',
6160
migrations: _.noop as any,
6261
}),
63-
validateDoc: _.noop,
6462
log: mockLogger,
6563
};
6664
expect(() => new DocumentMigrator(invalidDefinition)).toThrow(
@@ -77,7 +75,6 @@ describe('DocumentMigrator', () => {
7775
bar: (doc) => doc,
7876
},
7977
}),
80-
validateDoc: _.noop,
8178
log: mockLogger,
8279
};
8380
expect(() => new DocumentMigrator(invalidDefinition)).toThrow(
@@ -94,7 +91,6 @@ describe('DocumentMigrator', () => {
9491
'1.2.3': 23 as any,
9592
},
9693
}),
97-
validateDoc: _.noop,
9894
log: mockLogger,
9995
};
10096
expect(() => new DocumentMigrator(invalidDefinition)).toThrow(
@@ -633,27 +629,6 @@ describe('DocumentMigrator', () => {
633629
bbb: '3.2.3',
634630
});
635631
});
636-
637-
test('fails if the validate doc throws', () => {
638-
const migrator = new DocumentMigrator({
639-
...testOpts(),
640-
typeRegistry: createRegistry({
641-
name: 'aaa',
642-
migrations: {
643-
'2.3.4': (d) => set(d, 'attributes.counter', 42),
644-
},
645-
}),
646-
validateDoc: (d) => {
647-
if ((d.attributes as any).counter === 42) {
648-
throw new Error('Meaningful!');
649-
}
650-
},
651-
});
652-
653-
const doc = { id: '1', type: 'foo', attributes: {}, migrationVersion: {}, aaa: {} };
654-
655-
expect(() => migrator.migrate(doc)).toThrow(/Meaningful/);
656-
});
657632
});
658633

659634
function renameAttr(path: string, newPath: string) {

src/core/server/saved_objects/migrations/core/document_migrator.ts

+1-12
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,9 @@ import { SavedObjectMigrationFn } from '../types';
7373

7474
export type TransformFn = (doc: SavedObjectUnsanitizedDoc) => SavedObjectUnsanitizedDoc;
7575

76-
type ValidateDoc = (doc: SavedObjectUnsanitizedDoc) => void;
77-
7876
interface DocumentMigratorOptions {
7977
kibanaVersion: string;
8078
typeRegistry: ISavedObjectTypeRegistry;
81-
validateDoc: ValidateDoc;
8279
log: Logger;
8380
}
8481

@@ -113,19 +110,16 @@ export class DocumentMigrator implements VersionedTransformer {
113110
* @param {DocumentMigratorOptions} opts
114111
* @prop {string} kibanaVersion - The current version of Kibana
115112
* @prop {SavedObjectTypeRegistry} typeRegistry - The type registry to get type migrations from
116-
* @prop {ValidateDoc} validateDoc - A function which, given a document throws an error if it is
117-
* not up to date. This is used to ensure we don't let unmigrated documents slip through.
118113
* @prop {Logger} log - The migration logger
119114
* @memberof DocumentMigrator
120115
*/
121-
constructor({ typeRegistry, kibanaVersion, log, validateDoc }: DocumentMigratorOptions) {
116+
constructor({ typeRegistry, kibanaVersion, log }: DocumentMigratorOptions) {
122117
validateMigrationDefinition(typeRegistry);
123118

124119
this.migrations = buildActiveMigrations(typeRegistry, log);
125120
this.transformDoc = buildDocumentTransform({
126121
kibanaVersion,
127122
migrations: this.migrations,
128-
validateDoc,
129123
});
130124
}
131125

@@ -231,21 +225,16 @@ function buildActiveMigrations(
231225
* Creates a function which migrates and validates any document that is passed to it.
232226
*/
233227
function buildDocumentTransform({
234-
kibanaVersion,
235228
migrations,
236-
validateDoc,
237229
}: {
238230
kibanaVersion: string;
239231
migrations: ActiveMigrations;
240-
validateDoc: ValidateDoc;
241232
}): TransformFn {
242233
return function transformAndValidate(doc: SavedObjectUnsanitizedDoc) {
243234
const result = doc.migrationVersion
244235
? applyMigrations(doc, migrations)
245236
: markAsUpToDate(doc, migrations);
246237

247-
validateDoc(result);
248-
249238
// In order to keep tests a bit more stable, we won't
250239
// tack on an empy migrationVersion to docs that have
251240
// no migrations defined.

0 commit comments

Comments
 (0)