mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 09:48:58 -04:00
* add getImportExportObjectLimit to so setup * expose static method for so import / export * improve functions naming * fix mocked reference
This commit is contained in:
parent
42bf1222b6
commit
e1b8938f1f
42 changed files with 236 additions and 77 deletions
|
@ -0,0 +1,24 @@
|
|||
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||
|
||||
[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [exportSavedObjectsToStream](./kibana-plugin-server.exportsavedobjectstostream.md)
|
||||
|
||||
## exportSavedObjectsToStream() function
|
||||
|
||||
Generates sorted saved object stream to be used for export. See the [options](./kibana-plugin-server.savedobjectsexportoptions.md) for more detailed information.
|
||||
|
||||
<b>Signature:</b>
|
||||
|
||||
```typescript
|
||||
export declare function exportSavedObjectsToStream({ types, objects, search, savedObjectsClient, exportSizeLimit, includeReferencesDeep, excludeExportDetails, namespace, }: SavedObjectsExportOptions): Promise<import("stream").Readable>;
|
||||
```
|
||||
|
||||
## Parameters
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --- | --- | --- |
|
||||
| { types, objects, search, savedObjectsClient, exportSizeLimit, includeReferencesDeep, excludeExportDetails, namespace, } | <code>SavedObjectsExportOptions</code> | |
|
||||
|
||||
<b>Returns:</b>
|
||||
|
||||
`Promise<import("stream").Readable>`
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||
|
||||
[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [importSavedObjectsFromStream](./kibana-plugin-server.importsavedobjectsfromstream.md)
|
||||
|
||||
## importSavedObjectsFromStream() function
|
||||
|
||||
Import saved objects from given stream. See the [options](./kibana-plugin-server.savedobjectsimportoptions.md) for more detailed information.
|
||||
|
||||
<b>Signature:</b>
|
||||
|
||||
```typescript
|
||||
export declare function importSavedObjectsFromStream({ readStream, objectLimit, overwrite, savedObjectsClient, supportedTypes, namespace, }: SavedObjectsImportOptions): Promise<SavedObjectsImportResponse>;
|
||||
```
|
||||
|
||||
## Parameters
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --- | --- | --- |
|
||||
| { readStream, objectLimit, overwrite, savedObjectsClient, supportedTypes, namespace, } | <code>SavedObjectsImportOptions</code> | |
|
||||
|
||||
<b>Returns:</b>
|
||||
|
||||
`Promise<SavedObjectsImportResponse>`
|
||||
|
|
@ -37,6 +37,14 @@ The plugin integrates with the core system via lifecycle events: `setup`<!-- -->
|
|||
| [AuthResultType](./kibana-plugin-server.authresulttype.md) | |
|
||||
| [AuthStatus](./kibana-plugin-server.authstatus.md) | Status indicating an outcome of the authentication. |
|
||||
|
||||
## Functions
|
||||
|
||||
| Function | Description |
|
||||
| --- | --- |
|
||||
| [exportSavedObjectsToStream({ types, objects, search, savedObjectsClient, exportSizeLimit, includeReferencesDeep, excludeExportDetails, namespace, })](./kibana-plugin-server.exportsavedobjectstostream.md) | Generates sorted saved object stream to be used for export. See the [options](./kibana-plugin-server.savedobjectsexportoptions.md) for more detailed information. |
|
||||
| [importSavedObjectsFromStream({ readStream, objectLimit, overwrite, savedObjectsClient, supportedTypes, namespace, })](./kibana-plugin-server.importsavedobjectsfromstream.md) | Import saved objects from given stream. See the [options](./kibana-plugin-server.savedobjectsimportoptions.md) for more detailed information. |
|
||||
| [resolveSavedObjectsImportErrors({ readStream, objectLimit, retries, savedObjectsClient, supportedTypes, namespace, })](./kibana-plugin-server.resolvesavedobjectsimporterrors.md) | Resolve and return saved object import errors. See the [options](./kibana-plugin-server.savedobjectsresolveimporterrorsoptions.md) for more detailed informations. |
|
||||
|
||||
## Interfaces
|
||||
|
||||
| Interface | Description |
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||
|
||||
[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [resolveSavedObjectsImportErrors](./kibana-plugin-server.resolvesavedobjectsimporterrors.md)
|
||||
|
||||
## resolveSavedObjectsImportErrors() function
|
||||
|
||||
Resolve and return saved object import errors. See the [options](./kibana-plugin-server.savedobjectsresolveimporterrorsoptions.md) for more detailed informations.
|
||||
|
||||
<b>Signature:</b>
|
||||
|
||||
```typescript
|
||||
export declare function resolveSavedObjectsImportErrors({ readStream, objectLimit, retries, savedObjectsClient, supportedTypes, namespace, }: SavedObjectsResolveImportErrorsOptions): Promise<SavedObjectsImportResponse>;
|
||||
```
|
||||
|
||||
## Parameters
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --- | --- | --- |
|
||||
| { readStream, objectLimit, retries, savedObjectsClient, supportedTypes, namespace, } | <code>SavedObjectsResolveImportErrorsOptions</code> | |
|
||||
|
||||
<b>Returns:</b>
|
||||
|
||||
`Promise<SavedObjectsImportResponse>`
|
||||
|
|
@ -16,10 +16,10 @@ export interface SavedObjectsImportOptions
|
|||
|
||||
| Property | Type | Description |
|
||||
| --- | --- | --- |
|
||||
| [namespace](./kibana-plugin-server.savedobjectsimportoptions.namespace.md) | <code>string</code> | |
|
||||
| [objectLimit](./kibana-plugin-server.savedobjectsimportoptions.objectlimit.md) | <code>number</code> | |
|
||||
| [overwrite](./kibana-plugin-server.savedobjectsimportoptions.overwrite.md) | <code>boolean</code> | |
|
||||
| [readStream](./kibana-plugin-server.savedobjectsimportoptions.readstream.md) | <code>Readable</code> | |
|
||||
| [savedObjectsClient](./kibana-plugin-server.savedobjectsimportoptions.savedobjectsclient.md) | <code>SavedObjectsClientContract</code> | |
|
||||
| [supportedTypes](./kibana-plugin-server.savedobjectsimportoptions.supportedtypes.md) | <code>string[]</code> | |
|
||||
| [namespace](./kibana-plugin-server.savedobjectsimportoptions.namespace.md) | <code>string</code> | if specified, will import in given namespace, else will import as global object |
|
||||
| [objectLimit](./kibana-plugin-server.savedobjectsimportoptions.objectlimit.md) | <code>number</code> | The maximum number of object to import |
|
||||
| [overwrite](./kibana-plugin-server.savedobjectsimportoptions.overwrite.md) | <code>boolean</code> | if true, will override existing object if present |
|
||||
| [readStream](./kibana-plugin-server.savedobjectsimportoptions.readstream.md) | <code>Readable</code> | The stream of [saved objects](./kibana-plugin-server.savedobject.md) to import |
|
||||
| [savedObjectsClient](./kibana-plugin-server.savedobjectsimportoptions.savedobjectsclient.md) | <code>SavedObjectsClientContract</code> | [client](./kibana-plugin-server.savedobjectsclientcontract.md) to use to perform the import operation |
|
||||
| [supportedTypes](./kibana-plugin-server.savedobjectsimportoptions.supportedtypes.md) | <code>string[]</code> | the list of allowed types to import |
|
||||
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
## SavedObjectsImportOptions.namespace property
|
||||
|
||||
if specified, will import in given namespace, else will import as global object
|
||||
|
||||
<b>Signature:</b>
|
||||
|
||||
```typescript
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
## SavedObjectsImportOptions.objectLimit property
|
||||
|
||||
The maximum number of object to import
|
||||
|
||||
<b>Signature:</b>
|
||||
|
||||
```typescript
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
## SavedObjectsImportOptions.overwrite property
|
||||
|
||||
if true, will override existing object if present
|
||||
|
||||
<b>Signature:</b>
|
||||
|
||||
```typescript
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
## SavedObjectsImportOptions.readStream property
|
||||
|
||||
The stream of [saved objects](./kibana-plugin-server.savedobject.md) to import
|
||||
|
||||
<b>Signature:</b>
|
||||
|
||||
```typescript
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
## SavedObjectsImportOptions.savedObjectsClient property
|
||||
|
||||
[client](./kibana-plugin-server.savedobjectsclientcontract.md) to use to perform the import operation
|
||||
|
||||
<b>Signature:</b>
|
||||
|
||||
```typescript
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
## SavedObjectsImportOptions.supportedTypes property
|
||||
|
||||
the list of allowed types to import
|
||||
|
||||
<b>Signature:</b>
|
||||
|
||||
```typescript
|
||||
|
|
|
@ -16,10 +16,10 @@ export interface SavedObjectsResolveImportErrorsOptions
|
|||
|
||||
| Property | Type | Description |
|
||||
| --- | --- | --- |
|
||||
| [namespace](./kibana-plugin-server.savedobjectsresolveimporterrorsoptions.namespace.md) | <code>string</code> | |
|
||||
| [objectLimit](./kibana-plugin-server.savedobjectsresolveimporterrorsoptions.objectlimit.md) | <code>number</code> | |
|
||||
| [readStream](./kibana-plugin-server.savedobjectsresolveimporterrorsoptions.readstream.md) | <code>Readable</code> | |
|
||||
| [retries](./kibana-plugin-server.savedobjectsresolveimporterrorsoptions.retries.md) | <code>SavedObjectsImportRetry[]</code> | |
|
||||
| [savedObjectsClient](./kibana-plugin-server.savedobjectsresolveimporterrorsoptions.savedobjectsclient.md) | <code>SavedObjectsClientContract</code> | |
|
||||
| [supportedTypes](./kibana-plugin-server.savedobjectsresolveimporterrorsoptions.supportedtypes.md) | <code>string[]</code> | |
|
||||
| [namespace](./kibana-plugin-server.savedobjectsresolveimporterrorsoptions.namespace.md) | <code>string</code> | if specified, will import in given namespace |
|
||||
| [objectLimit](./kibana-plugin-server.savedobjectsresolveimporterrorsoptions.objectlimit.md) | <code>number</code> | The maximum number of object to import |
|
||||
| [readStream](./kibana-plugin-server.savedobjectsresolveimporterrorsoptions.readstream.md) | <code>Readable</code> | The stream of [saved objects](./kibana-plugin-server.savedobject.md) to resolve errors from |
|
||||
| [retries](./kibana-plugin-server.savedobjectsresolveimporterrorsoptions.retries.md) | <code>SavedObjectsImportRetry[]</code> | saved object import references to retry |
|
||||
| [savedObjectsClient](./kibana-plugin-server.savedobjectsresolveimporterrorsoptions.savedobjectsclient.md) | <code>SavedObjectsClientContract</code> | client to use to perform the import operation |
|
||||
| [supportedTypes](./kibana-plugin-server.savedobjectsresolveimporterrorsoptions.supportedtypes.md) | <code>string[]</code> | the list of allowed types to import |
|
||||
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
## SavedObjectsResolveImportErrorsOptions.namespace property
|
||||
|
||||
if specified, will import in given namespace
|
||||
|
||||
<b>Signature:</b>
|
||||
|
||||
```typescript
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
## SavedObjectsResolveImportErrorsOptions.objectLimit property
|
||||
|
||||
The maximum number of object to import
|
||||
|
||||
<b>Signature:</b>
|
||||
|
||||
```typescript
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
## SavedObjectsResolveImportErrorsOptions.readStream property
|
||||
|
||||
The stream of [saved objects](./kibana-plugin-server.savedobject.md) to resolve errors from
|
||||
|
||||
<b>Signature:</b>
|
||||
|
||||
```typescript
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
## SavedObjectsResolveImportErrorsOptions.retries property
|
||||
|
||||
saved object import references to retry
|
||||
|
||||
<b>Signature:</b>
|
||||
|
||||
```typescript
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
## SavedObjectsResolveImportErrorsOptions.savedObjectsClient property
|
||||
|
||||
client to use to perform the import operation
|
||||
|
||||
<b>Signature:</b>
|
||||
|
||||
```typescript
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
## SavedObjectsResolveImportErrorsOptions.supportedTypes property
|
||||
|
||||
the list of allowed types to import
|
||||
|
||||
<b>Signature:</b>
|
||||
|
||||
```typescript
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||
|
||||
[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [SavedObjectsServiceSetup](./kibana-plugin-server.savedobjectsservicesetup.md) > [getImportExportObjectLimit](./kibana-plugin-server.savedobjectsservicesetup.getimportexportobjectlimit.md)
|
||||
|
||||
## SavedObjectsServiceSetup.getImportExportObjectLimit property
|
||||
|
||||
Returns the maximum number of objects allowed for import or export operations.
|
||||
|
||||
<b>Signature:</b>
|
||||
|
||||
```typescript
|
||||
getImportExportObjectLimit: () => number;
|
||||
```
|
|
@ -54,6 +54,7 @@ export class Plugin() {
|
|||
| Property | Type | Description |
|
||||
| --- | --- | --- |
|
||||
| [addClientWrapper](./kibana-plugin-server.savedobjectsservicesetup.addclientwrapper.md) | <code>(priority: number, id: string, factory: SavedObjectsClientWrapperFactory) => void</code> | Add a [client wrapper factory](./kibana-plugin-server.savedobjectsclientwrapperfactory.md) with the given priority. |
|
||||
| [getImportExportObjectLimit](./kibana-plugin-server.savedobjectsservicesetup.getimportexportobjectlimit.md) | <code>() => number</code> | Returns the maximum number of objects allowed for import or export operations. |
|
||||
| [registerType](./kibana-plugin-server.savedobjectsservicesetup.registertype.md) | <code>(type: SavedObjectsType) => void</code> | Register a [savedObjects type](./kibana-plugin-server.savedobjectstype.md) definition.<!-- -->See the [mappings format](./kibana-plugin-server.savedobjectstypemappingdefinition.md) and [migration format](./kibana-plugin-server.savedobjectmigrationmap.md) for more details about these. |
|
||||
| [setClientFactoryProvider](./kibana-plugin-server.savedobjectsservicesetup.setclientfactoryprovider.md) | <code>(clientFactoryProvider: SavedObjectsClientFactoryProvider) => void</code> | Set the default [factory provider](./kibana-plugin-server.savedobjectsclientfactoryprovider.md) for creating Saved Objects clients. Only one provider can be set, subsequent calls to this method will fail. |
|
||||
|
||||
|
|
|
@ -231,6 +231,9 @@ export {
|
|||
SavedObjectsType,
|
||||
SavedObjectMigrationMap,
|
||||
SavedObjectMigrationFn,
|
||||
exportSavedObjectsToStream,
|
||||
importSavedObjectsFromStream,
|
||||
resolveSavedObjectsImportErrors,
|
||||
} from './saved_objects';
|
||||
|
||||
export {
|
||||
|
|
|
@ -300,6 +300,7 @@ export class LegacyService implements CoreService {
|
|||
setClientFactoryProvider: setupDeps.core.savedObjects.setClientFactoryProvider,
|
||||
addClientWrapper: setupDeps.core.savedObjects.addClientWrapper,
|
||||
registerType: setupDeps.core.savedObjects.registerType,
|
||||
getImportExportObjectLimit: setupDeps.core.savedObjects.getImportExportObjectLimit,
|
||||
},
|
||||
uiSettings: {
|
||||
register: setupDeps.core.uiSettings.register,
|
||||
|
|
|
@ -170,6 +170,7 @@ export function createPluginSetupContext<TPlugin, TPluginDependencies>(
|
|||
setClientFactoryProvider: deps.savedObjects.setClientFactoryProvider,
|
||||
addClientWrapper: deps.savedObjects.addClientWrapper,
|
||||
registerType: deps.savedObjects.registerType,
|
||||
getImportExportObjectLimit: deps.savedObjects.getImportExportObjectLimit,
|
||||
},
|
||||
uiSettings: {
|
||||
register: deps.uiSettings.register,
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
* under the License.
|
||||
*/
|
||||
|
||||
import { getSortedObjectsForExport } from './get_sorted_objects_for_export';
|
||||
import { exportSavedObjectsToStream } from './get_sorted_objects_for_export';
|
||||
import { savedObjectsClientMock } from '../service/saved_objects_client.mock';
|
||||
import { Readable } from 'stream';
|
||||
import { createPromiseFromStreams, createConcatStream } from '../../../../legacy/utils/streams';
|
||||
|
@ -65,7 +65,7 @@ describe('getSortedObjectsForExport()', () => {
|
|||
per_page: 1,
|
||||
page: 0,
|
||||
});
|
||||
const exportStream = await getSortedObjectsForExport({
|
||||
const exportStream = await exportSavedObjectsToStream({
|
||||
savedObjectsClient,
|
||||
exportSizeLimit: 500,
|
||||
types: ['index-pattern', 'search'],
|
||||
|
@ -151,7 +151,7 @@ describe('getSortedObjectsForExport()', () => {
|
|||
per_page: 1,
|
||||
page: 0,
|
||||
});
|
||||
const exportStream = await getSortedObjectsForExport({
|
||||
const exportStream = await exportSavedObjectsToStream({
|
||||
savedObjectsClient,
|
||||
exportSizeLimit: 500,
|
||||
types: ['index-pattern', 'search'],
|
||||
|
@ -210,7 +210,7 @@ describe('getSortedObjectsForExport()', () => {
|
|||
per_page: 1,
|
||||
page: 0,
|
||||
});
|
||||
const exportStream = await getSortedObjectsForExport({
|
||||
const exportStream = await exportSavedObjectsToStream({
|
||||
savedObjectsClient,
|
||||
exportSizeLimit: 500,
|
||||
types: ['index-pattern', 'search'],
|
||||
|
@ -297,7 +297,7 @@ describe('getSortedObjectsForExport()', () => {
|
|||
per_page: 1,
|
||||
page: 0,
|
||||
});
|
||||
const exportStream = await getSortedObjectsForExport({
|
||||
const exportStream = await exportSavedObjectsToStream({
|
||||
savedObjectsClient,
|
||||
exportSizeLimit: 500,
|
||||
types: ['index-pattern', 'search'],
|
||||
|
@ -385,7 +385,7 @@ describe('getSortedObjectsForExport()', () => {
|
|||
page: 0,
|
||||
});
|
||||
await expect(
|
||||
getSortedObjectsForExport({
|
||||
exportSavedObjectsToStream({
|
||||
savedObjectsClient,
|
||||
exportSizeLimit: 1,
|
||||
types: ['index-pattern', 'search'],
|
||||
|
@ -425,7 +425,7 @@ describe('getSortedObjectsForExport()', () => {
|
|||
},
|
||||
],
|
||||
});
|
||||
const exportStream = await getSortedObjectsForExport({
|
||||
const exportStream = await exportSavedObjectsToStream({
|
||||
exportSizeLimit: 10000,
|
||||
savedObjectsClient,
|
||||
types: ['index-pattern'],
|
||||
|
@ -489,7 +489,7 @@ describe('getSortedObjectsForExport()', () => {
|
|||
},
|
||||
],
|
||||
});
|
||||
const exportStream = await getSortedObjectsForExport({
|
||||
const exportStream = await exportSavedObjectsToStream({
|
||||
exportSizeLimit: 10000,
|
||||
savedObjectsClient,
|
||||
objects: [
|
||||
|
@ -587,7 +587,7 @@ describe('getSortedObjectsForExport()', () => {
|
|||
},
|
||||
],
|
||||
});
|
||||
const exportStream = await getSortedObjectsForExport({
|
||||
const exportStream = await exportSavedObjectsToStream({
|
||||
exportSizeLimit: 10000,
|
||||
savedObjectsClient,
|
||||
objects: [
|
||||
|
@ -681,7 +681,7 @@ describe('getSortedObjectsForExport()', () => {
|
|||
},
|
||||
],
|
||||
};
|
||||
await expect(getSortedObjectsForExport(exportOpts)).rejects.toThrowErrorMatchingInlineSnapshot(
|
||||
await expect(exportSavedObjectsToStream(exportOpts)).rejects.toThrowErrorMatchingInlineSnapshot(
|
||||
`"Can't export more than 1 objects"`
|
||||
);
|
||||
});
|
||||
|
@ -694,7 +694,7 @@ describe('getSortedObjectsForExport()', () => {
|
|||
objects: undefined,
|
||||
};
|
||||
|
||||
expect(getSortedObjectsForExport(exportOpts)).rejects.toThrowErrorMatchingInlineSnapshot(
|
||||
expect(exportSavedObjectsToStream(exportOpts)).rejects.toThrowErrorMatchingInlineSnapshot(
|
||||
`"Either \`type\` or \`objects\` are required."`
|
||||
);
|
||||
});
|
||||
|
@ -707,7 +707,7 @@ describe('getSortedObjectsForExport()', () => {
|
|||
search: 'foo',
|
||||
};
|
||||
|
||||
expect(getSortedObjectsForExport(exportOpts)).rejects.toThrowErrorMatchingInlineSnapshot(
|
||||
expect(exportSavedObjectsToStream(exportOpts)).rejects.toThrowErrorMatchingInlineSnapshot(
|
||||
`"Can't specify both \\"search\\" and \\"objects\\" properties when exporting"`
|
||||
);
|
||||
});
|
||||
|
|
|
@ -124,7 +124,13 @@ async function fetchObjectsToExport({
|
|||
}
|
||||
}
|
||||
|
||||
export async function getSortedObjectsForExport({
|
||||
/**
|
||||
* Generates sorted saved object stream to be used for export.
|
||||
* See the {@link SavedObjectsExportOptions | options} for more detailed information.
|
||||
*
|
||||
* @public
|
||||
*/
|
||||
export async function exportSavedObjectsToStream({
|
||||
types,
|
||||
objects,
|
||||
search,
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
*/
|
||||
|
||||
export {
|
||||
getSortedObjectsForExport,
|
||||
exportSavedObjectsToStream,
|
||||
SavedObjectsExportOptions,
|
||||
SavedObjectsExportResultDetails,
|
||||
} from './get_sorted_objects_for_export';
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
import { Readable } from 'stream';
|
||||
import { SavedObject } from '../types';
|
||||
import { importSavedObjects } from './import_saved_objects';
|
||||
import { importSavedObjectsFromStream } from './import_saved_objects';
|
||||
import { savedObjectsClientMock } from '../../mocks';
|
||||
|
||||
const emptyResponse = {
|
||||
|
@ -76,7 +76,7 @@ describe('importSavedObjects()', () => {
|
|||
this.push(null);
|
||||
},
|
||||
});
|
||||
const result = await importSavedObjects({
|
||||
const result = await importSavedObjectsFromStream({
|
||||
readStream,
|
||||
objectLimit: 1,
|
||||
overwrite: false,
|
||||
|
@ -103,7 +103,7 @@ describe('importSavedObjects()', () => {
|
|||
savedObjectsClient.bulkCreate.mockResolvedValue({
|
||||
saved_objects: savedObjects,
|
||||
});
|
||||
const result = await importSavedObjects({
|
||||
const result = await importSavedObjectsFromStream({
|
||||
readStream,
|
||||
objectLimit: 4,
|
||||
overwrite: false,
|
||||
|
@ -186,7 +186,7 @@ describe('importSavedObjects()', () => {
|
|||
savedObjectsClient.bulkCreate.mockResolvedValue({
|
||||
saved_objects: savedObjects,
|
||||
});
|
||||
const result = await importSavedObjects({
|
||||
const result = await importSavedObjectsFromStream({
|
||||
readStream,
|
||||
objectLimit: 4,
|
||||
overwrite: false,
|
||||
|
@ -270,7 +270,7 @@ describe('importSavedObjects()', () => {
|
|||
savedObjectsClient.bulkCreate.mockResolvedValue({
|
||||
saved_objects: savedObjects,
|
||||
});
|
||||
const result = await importSavedObjects({
|
||||
const result = await importSavedObjectsFromStream({
|
||||
readStream,
|
||||
objectLimit: 4,
|
||||
overwrite: true,
|
||||
|
@ -362,7 +362,7 @@ describe('importSavedObjects()', () => {
|
|||
references: [],
|
||||
})),
|
||||
});
|
||||
const result = await importSavedObjects({
|
||||
const result = await importSavedObjectsFromStream({
|
||||
readStream,
|
||||
objectLimit: 4,
|
||||
overwrite: false,
|
||||
|
@ -460,7 +460,7 @@ describe('importSavedObjects()', () => {
|
|||
},
|
||||
],
|
||||
});
|
||||
const result = await importSavedObjects({
|
||||
const result = await importSavedObjectsFromStream({
|
||||
readStream,
|
||||
objectLimit: 4,
|
||||
overwrite: false,
|
||||
|
@ -536,7 +536,7 @@ describe('importSavedObjects()', () => {
|
|||
savedObjectsClient.bulkCreate.mockResolvedValue({
|
||||
saved_objects: savedObjects,
|
||||
});
|
||||
const result = await importSavedObjects({
|
||||
const result = await importSavedObjectsFromStream({
|
||||
readStream,
|
||||
objectLimit: 5,
|
||||
overwrite: false,
|
||||
|
|
|
@ -26,7 +26,13 @@ import {
|
|||
} from './types';
|
||||
import { validateReferences } from './validate_references';
|
||||
|
||||
export async function importSavedObjects({
|
||||
/**
|
||||
* Import saved objects from given stream. See the {@link SavedObjectsImportOptions | options} for more
|
||||
* detailed information.
|
||||
*
|
||||
* @public
|
||||
*/
|
||||
export async function importSavedObjectsFromStream({
|
||||
readStream,
|
||||
objectLimit,
|
||||
overwrite,
|
||||
|
|
|
@ -17,8 +17,8 @@
|
|||
* under the License.
|
||||
*/
|
||||
|
||||
export { importSavedObjects } from './import_saved_objects';
|
||||
export { resolveImportErrors } from './resolve_import_errors';
|
||||
export { importSavedObjectsFromStream } from './import_saved_objects';
|
||||
export { resolveSavedObjectsImportErrors } from './resolve_import_errors';
|
||||
export {
|
||||
SavedObjectsImportResponse,
|
||||
SavedObjectsImportError,
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
import { Readable } from 'stream';
|
||||
import { SavedObject } from '../types';
|
||||
import { resolveImportErrors } from './resolve_import_errors';
|
||||
import { resolveSavedObjectsImportErrors } from './resolve_import_errors';
|
||||
import { savedObjectsClientMock } from '../../mocks';
|
||||
|
||||
describe('resolveImportErrors()', () => {
|
||||
|
@ -80,7 +80,7 @@ describe('resolveImportErrors()', () => {
|
|||
savedObjectsClient.bulkCreate.mockResolvedValue({
|
||||
saved_objects: [],
|
||||
});
|
||||
const result = await resolveImportErrors({
|
||||
const result = await resolveSavedObjectsImportErrors({
|
||||
readStream,
|
||||
objectLimit: 4,
|
||||
retries: [],
|
||||
|
@ -107,7 +107,7 @@ describe('resolveImportErrors()', () => {
|
|||
savedObjectsClient.bulkCreate.mockResolvedValueOnce({
|
||||
saved_objects: savedObjects.filter(obj => obj.type === 'visualization' && obj.id === '3'),
|
||||
});
|
||||
const result = await resolveImportErrors({
|
||||
const result = await resolveSavedObjectsImportErrors({
|
||||
readStream,
|
||||
objectLimit: 4,
|
||||
retries: [
|
||||
|
@ -168,7 +168,7 @@ describe('resolveImportErrors()', () => {
|
|||
savedObjectsClient.bulkCreate.mockResolvedValue({
|
||||
saved_objects: savedObjects.filter(obj => obj.type === 'index-pattern' && obj.id === '1'),
|
||||
});
|
||||
const result = await resolveImportErrors({
|
||||
const result = await resolveSavedObjectsImportErrors({
|
||||
readStream,
|
||||
objectLimit: 4,
|
||||
retries: [
|
||||
|
@ -230,7 +230,7 @@ describe('resolveImportErrors()', () => {
|
|||
savedObjectsClient.bulkCreate.mockResolvedValue({
|
||||
saved_objects: savedObjects.filter(obj => obj.type === 'dashboard' && obj.id === '4'),
|
||||
});
|
||||
const result = await resolveImportErrors({
|
||||
const result = await resolveSavedObjectsImportErrors({
|
||||
readStream,
|
||||
objectLimit: 4,
|
||||
retries: [
|
||||
|
@ -312,7 +312,7 @@ describe('resolveImportErrors()', () => {
|
|||
references: [],
|
||||
})),
|
||||
});
|
||||
const result = await resolveImportErrors({
|
||||
const result = await resolveSavedObjectsImportErrors({
|
||||
readStream,
|
||||
objectLimit: 4,
|
||||
retries: savedObjects.map(obj => ({
|
||||
|
@ -415,7 +415,7 @@ describe('resolveImportErrors()', () => {
|
|||
},
|
||||
],
|
||||
});
|
||||
const result = await resolveImportErrors({
|
||||
const result = await resolveSavedObjectsImportErrors({
|
||||
readStream,
|
||||
objectLimit: 2,
|
||||
retries: [
|
||||
|
@ -503,7 +503,7 @@ describe('resolveImportErrors()', () => {
|
|||
savedObjectsClient.bulkCreate.mockResolvedValue({
|
||||
saved_objects: [],
|
||||
});
|
||||
const result = await resolveImportErrors({
|
||||
const result = await resolveSavedObjectsImportErrors({
|
||||
readStream,
|
||||
objectLimit: 5,
|
||||
retries: [
|
||||
|
@ -547,7 +547,7 @@ describe('resolveImportErrors()', () => {
|
|||
savedObjectsClient.bulkCreate.mockResolvedValue({
|
||||
saved_objects: savedObjects.filter(obj => obj.type === 'index-pattern' && obj.id === '1'),
|
||||
});
|
||||
const result = await resolveImportErrors({
|
||||
const result = await resolveSavedObjectsImportErrors({
|
||||
readStream,
|
||||
objectLimit: 4,
|
||||
retries: [
|
||||
|
|
|
@ -27,7 +27,13 @@ import {
|
|||
} from './types';
|
||||
import { validateReferences } from './validate_references';
|
||||
|
||||
export async function resolveImportErrors({
|
||||
/**
|
||||
* Resolve and return saved object import errors.
|
||||
* See the {@link SavedObjectsResolveImportErrorsOptions | options} for more detailed informations.
|
||||
*
|
||||
* @public
|
||||
*/
|
||||
export async function resolveSavedObjectsImportErrors({
|
||||
readStream,
|
||||
objectLimit,
|
||||
retries,
|
||||
|
|
|
@ -107,11 +107,17 @@ export interface SavedObjectsImportResponse {
|
|||
* @public
|
||||
*/
|
||||
export interface SavedObjectsImportOptions {
|
||||
/** The stream of {@link SavedObject | saved objects} to import */
|
||||
readStream: Readable;
|
||||
/** The maximum number of object to import */
|
||||
objectLimit: number;
|
||||
/** if true, will override existing object if present */
|
||||
overwrite: boolean;
|
||||
/** {@link SavedObjectsClientContract | client} to use to perform the import operation */
|
||||
savedObjectsClient: SavedObjectsClientContract;
|
||||
/** the list of allowed types to import */
|
||||
supportedTypes: string[];
|
||||
/** if specified, will import in given namespace, else will import as global object */
|
||||
namespace?: string;
|
||||
}
|
||||
|
||||
|
@ -120,10 +126,16 @@ export interface SavedObjectsImportOptions {
|
|||
* @public
|
||||
*/
|
||||
export interface SavedObjectsResolveImportErrorsOptions {
|
||||
/** The stream of {@link SavedObject | saved objects} to resolve errors from */
|
||||
readStream: Readable;
|
||||
/** The maximum number of object to import */
|
||||
objectLimit: number;
|
||||
/** client to use to perform the import operation */
|
||||
savedObjectsClient: SavedObjectsClientContract;
|
||||
/** saved object import references to retry */
|
||||
retries: SavedObjectsImportRetry[];
|
||||
/** the list of allowed types to import */
|
||||
supportedTypes: string[];
|
||||
/** if specified, will import in given namespace */
|
||||
namespace?: string;
|
||||
}
|
||||
|
|
|
@ -26,7 +26,7 @@ export { SavedObjectsManagement } from './management';
|
|||
export * from './import';
|
||||
|
||||
export {
|
||||
getSortedObjectsForExport,
|
||||
exportSavedObjectsToStream,
|
||||
SavedObjectsExportOptions,
|
||||
SavedObjectsExportResultDetails,
|
||||
} from './export';
|
||||
|
|
|
@ -26,7 +26,7 @@ import {
|
|||
} from '../../../../legacy/utils/streams';
|
||||
import { IRouter } from '../../http';
|
||||
import { SavedObjectConfig } from '../saved_objects_config';
|
||||
import { getSortedObjectsForExport } from '../export';
|
||||
import { exportSavedObjectsToStream } from '../export';
|
||||
|
||||
export const registerExportRoute = (
|
||||
router: IRouter,
|
||||
|
@ -67,7 +67,7 @@ export const registerExportRoute = (
|
|||
router.handleLegacyErrors(async (context, req, res) => {
|
||||
const savedObjectsClient = context.core.savedObjects.client;
|
||||
const { type, objects, search, excludeExportDetails, includeReferencesDeep } = req.body;
|
||||
const exportStream = await getSortedObjectsForExport({
|
||||
const exportStream = await exportSavedObjectsToStream({
|
||||
savedObjectsClient,
|
||||
types: typeof type === 'string' ? [type] : type,
|
||||
search,
|
||||
|
|
|
@ -21,7 +21,7 @@ import { Readable } from 'stream';
|
|||
import { extname } from 'path';
|
||||
import { schema } from '@kbn/config-schema';
|
||||
import { IRouter } from '../../http';
|
||||
import { importSavedObjects } from '../import';
|
||||
import { importSavedObjectsFromStream } from '../import';
|
||||
import { SavedObjectConfig } from '../saved_objects_config';
|
||||
import { createSavedObjectsStreamFromNdJson } from './utils';
|
||||
|
||||
|
@ -65,7 +65,7 @@ export const registerImportRoute = (
|
|||
return res.badRequest({ body: `Invalid file extension ${fileExtension}` });
|
||||
}
|
||||
|
||||
const result = await importSavedObjects({
|
||||
const result = await importSavedObjectsFromStream({
|
||||
supportedTypes,
|
||||
savedObjectsClient: context.core.savedObjects.client,
|
||||
readStream: createSavedObjectsStreamFromNdJson(file),
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
*/
|
||||
|
||||
jest.mock('../../export', () => ({
|
||||
getSortedObjectsForExport: jest.fn(),
|
||||
exportSavedObjectsToStream: jest.fn(),
|
||||
}));
|
||||
|
||||
import * as exportMock from '../../export';
|
||||
|
@ -30,7 +30,7 @@ import { registerExportRoute } from '../export';
|
|||
import { setupServer } from './test_utils';
|
||||
|
||||
type setupServerReturn = UnwrapPromise<ReturnType<typeof setupServer>>;
|
||||
const getSortedObjectsForExport = exportMock.getSortedObjectsForExport as jest.Mock;
|
||||
const exportSavedObjectsToStream = exportMock.exportSavedObjectsToStream as jest.Mock;
|
||||
const allowedTypes = ['index-pattern', 'search'];
|
||||
const config = {
|
||||
maxImportPayloadBytes: 10485760,
|
||||
|
@ -76,7 +76,7 @@ describe('POST /api/saved_objects/_export', () => {
|
|||
],
|
||||
},
|
||||
];
|
||||
getSortedObjectsForExport.mockResolvedValueOnce(createListStream(sortedObjects));
|
||||
exportSavedObjectsToStream.mockResolvedValueOnce(createListStream(sortedObjects));
|
||||
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
.post('/api/saved_objects/_export')
|
||||
|
@ -96,7 +96,7 @@ describe('POST /api/saved_objects/_export', () => {
|
|||
|
||||
const objects = (result.text as string).split('\n').map(row => JSON.parse(row));
|
||||
expect(objects).toEqual(sortedObjects);
|
||||
expect(getSortedObjectsForExport.mock.calls[0][0]).toEqual(
|
||||
expect(exportSavedObjectsToStream.mock.calls[0][0]).toEqual(
|
||||
expect.objectContaining({
|
||||
excludeExportDetails: false,
|
||||
exportSizeLimit: 10000,
|
||||
|
|
|
@ -21,7 +21,7 @@ import { extname } from 'path';
|
|||
import { Readable } from 'stream';
|
||||
import { schema } from '@kbn/config-schema';
|
||||
import { IRouter } from '../../http';
|
||||
import { resolveImportErrors } from '../import';
|
||||
import { resolveSavedObjectsImportErrors } from '../import';
|
||||
import { SavedObjectConfig } from '../saved_objects_config';
|
||||
import { createSavedObjectsStreamFromNdJson } from './utils';
|
||||
|
||||
|
@ -75,7 +75,7 @@ export const registerResolveImportErrorsRoute = (
|
|||
if (fileExtension !== '.ndjson') {
|
||||
return res.badRequest({ body: `Invalid file extension ${fileExtension}` });
|
||||
}
|
||||
const result = await resolveImportErrors({
|
||||
const result = await resolveSavedObjectsImportErrors({
|
||||
supportedTypes,
|
||||
savedObjectsClient: context.core.savedObjects.client,
|
||||
readStream: createSavedObjectsStreamFromNdJson(file),
|
||||
|
|
|
@ -64,8 +64,11 @@ const createSetupContractMock = () => {
|
|||
setClientFactoryProvider: jest.fn(),
|
||||
addClientWrapper: jest.fn(),
|
||||
registerType: jest.fn(),
|
||||
getImportExportObjectLimit: jest.fn(),
|
||||
};
|
||||
|
||||
setupContract.getImportExportObjectLimit.mockReturnValue(100);
|
||||
|
||||
return setupContract;
|
||||
};
|
||||
|
||||
|
|
|
@ -154,6 +154,11 @@ export interface SavedObjectsServiceSetup {
|
|||
* This API is the single entry point to register saved object types in the new platform.
|
||||
*/
|
||||
registerType: (type: SavedObjectsType) => void;
|
||||
|
||||
/**
|
||||
* Returns the maximum number of objects allowed for import or export operations.
|
||||
*/
|
||||
getImportExportObjectLimit: () => number;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -344,6 +349,7 @@ export class SavedObjectsService
|
|||
}
|
||||
this.typeRegistry.registerType(type);
|
||||
},
|
||||
getImportExportObjectLimit: () => this.config!.maxImportExportSize,
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -62,7 +62,6 @@ export interface SavedObjectsMigrationVersion {
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @public
|
||||
*/
|
||||
export interface SavedObject<T = unknown> {
|
||||
|
|
|
@ -766,6 +766,9 @@ export interface ErrorHttpResponseOptions {
|
|||
headers?: ResponseHeaders;
|
||||
}
|
||||
|
||||
// @public
|
||||
export function exportSavedObjectsToStream({ types, objects, search, savedObjectsClient, exportSizeLimit, includeReferencesDeep, excludeExportDetails, namespace, }: SavedObjectsExportOptions): Promise<import("stream").Readable>;
|
||||
|
||||
// @public
|
||||
export interface FakeRequest {
|
||||
headers: Headers;
|
||||
|
@ -894,6 +897,9 @@ export interface ImageValidation {
|
|||
};
|
||||
}
|
||||
|
||||
// @public
|
||||
export function importSavedObjectsFromStream({ readStream, objectLimit, overwrite, savedObjectsClient, supportedTypes, namespace, }: SavedObjectsImportOptions): Promise<SavedObjectsImportResponse>;
|
||||
|
||||
// @public (undocumented)
|
||||
export interface IndexSettingsDeprecationInfo {
|
||||
// (undocumented)
|
||||
|
@ -1434,6 +1440,9 @@ export type RequestHandlerContextContainer = IContextContainer<RequestHandler<an
|
|||
// @public
|
||||
export type RequestHandlerContextProvider<TContextName extends keyof RequestHandlerContext> = IContextProvider<RequestHandler<any, any, any>, TContextName>;
|
||||
|
||||
// @public
|
||||
export function resolveSavedObjectsImportErrors({ readStream, objectLimit, retries, savedObjectsClient, supportedTypes, namespace, }: SavedObjectsResolveImportErrorsOptions): Promise<SavedObjectsImportResponse>;
|
||||
|
||||
// @public
|
||||
export type ResponseError = string | Error | {
|
||||
message: string | Error;
|
||||
|
@ -1896,17 +1905,11 @@ export interface SavedObjectsImportMissingReferencesError {
|
|||
|
||||
// @public
|
||||
export interface SavedObjectsImportOptions {
|
||||
// (undocumented)
|
||||
namespace?: string;
|
||||
// (undocumented)
|
||||
objectLimit: number;
|
||||
// (undocumented)
|
||||
overwrite: boolean;
|
||||
// (undocumented)
|
||||
readStream: Readable;
|
||||
// (undocumented)
|
||||
savedObjectsClient: SavedObjectsClientContract;
|
||||
// (undocumented)
|
||||
supportedTypes: string[];
|
||||
}
|
||||
|
||||
|
@ -2060,17 +2063,11 @@ export interface SavedObjectsRepositoryFactory {
|
|||
|
||||
// @public
|
||||
export interface SavedObjectsResolveImportErrorsOptions {
|
||||
// (undocumented)
|
||||
namespace?: string;
|
||||
// (undocumented)
|
||||
objectLimit: number;
|
||||
// (undocumented)
|
||||
readStream: Readable;
|
||||
// (undocumented)
|
||||
retries: SavedObjectsImportRetry[];
|
||||
// (undocumented)
|
||||
savedObjectsClient: SavedObjectsClientContract;
|
||||
// (undocumented)
|
||||
supportedTypes: string[];
|
||||
}
|
||||
|
||||
|
@ -2101,6 +2098,7 @@ export class SavedObjectsSerializer {
|
|||
// @public
|
||||
export interface SavedObjectsServiceSetup {
|
||||
addClientWrapper: (priority: number, id: string, factory: SavedObjectsClientWrapperFactory) => void;
|
||||
getImportExportObjectLimit: () => number;
|
||||
registerType: (type: SavedObjectsType) => void;
|
||||
setClientFactoryProvider: (clientFactoryProvider: SavedObjectsClientFactoryProvider) => void;
|
||||
}
|
||||
|
|
|
@ -23,9 +23,9 @@ import { SavedObjectsSchema } from '../../../core/server/saved_objects/schema';
|
|||
import {
|
||||
SavedObjectsClient,
|
||||
SavedObjectsRepository,
|
||||
getSortedObjectsForExport,
|
||||
importSavedObjects,
|
||||
resolveImportErrors,
|
||||
exportSavedObjectsToStream,
|
||||
importSavedObjectsFromStream,
|
||||
resolveSavedObjectsImportErrors,
|
||||
} from '../../../core/server/saved_objects';
|
||||
import { getRootPropertiesObjects } from '../../../core/server/saved_objects/mappings';
|
||||
import { convertTypesToLegacySchema } from '../../../core/server/saved_objects/utils';
|
||||
|
@ -95,9 +95,9 @@ export function savedObjectsMixin(kbnServer, server) {
|
|||
provider.addClientWrapperFactory(...args),
|
||||
importExport: {
|
||||
objectLimit: server.config().get('savedObjects.maxImportExportSize'),
|
||||
importSavedObjects,
|
||||
resolveImportErrors,
|
||||
getSortedObjectsForExport,
|
||||
importSavedObjects: importSavedObjectsFromStream,
|
||||
resolveImportErrors: resolveSavedObjectsImportErrors,
|
||||
getSortedObjectsForExport: exportSavedObjectsToStream,
|
||||
},
|
||||
schema,
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue