Expose SavedObjectsMigrationLogger

This commit is contained in:
Rudolf Meijering 2019-07-29 12:26:22 +02:00
parent 40ffbc0367
commit 75f837a859
13 changed files with 94 additions and 14 deletions

View file

@ -61,6 +61,7 @@ The plugin integrates with the core system via lifecycle events: `setup`<!-- -->
| [SavedObjectsCreateOptions](./kibana-plugin-server.savedobjectscreateoptions.md) | |
| [SavedObjectsFindOptions](./kibana-plugin-server.savedobjectsfindoptions.md) | |
| [SavedObjectsFindResponse](./kibana-plugin-server.savedobjectsfindresponse.md) | |
| [SavedObjectsMigrationLogger](./kibana-plugin-server.savedobjectsmigrationlogger.md) | |
| [SavedObjectsMigrationVersion](./kibana-plugin-server.savedobjectsmigrationversion.md) | Information about the migrations that have been applied to this SavedObject. When Kibana starts up, KibanaMigrator detects outdated documents and migrates them based on this value. For each migration that has been applied, the plugin's name is used as a key and the latest migration version as the value. |
| [SavedObjectsRawDoc](./kibana-plugin-server.savedobjectsrawdoc.md) | A raw document as represented directly in the saved object index. |
| [SavedObjectsService](./kibana-plugin-server.savedobjectsservice.md) | |

View file

@ -0,0 +1,11 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [kibana-plugin-server](./kibana-plugin-server.md) &gt; [SavedObjectsMigrationLogger](./kibana-plugin-server.savedobjectsmigrationlogger.md) &gt; [debug](./kibana-plugin-server.savedobjectsmigrationlogger.debug.md)
## SavedObjectsMigrationLogger.debug property
<b>Signature:</b>
```typescript
debug: (msg: string) => void;
```

View file

@ -0,0 +1,11 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [kibana-plugin-server](./kibana-plugin-server.md) &gt; [SavedObjectsMigrationLogger](./kibana-plugin-server.savedobjectsmigrationlogger.md) &gt; [info](./kibana-plugin-server.savedobjectsmigrationlogger.info.md)
## SavedObjectsMigrationLogger.info property
<b>Signature:</b>
```typescript
info: (msg: string) => void;
```

View file

@ -0,0 +1,21 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [kibana-plugin-server](./kibana-plugin-server.md) &gt; [SavedObjectsMigrationLogger](./kibana-plugin-server.savedobjectsmigrationlogger.md)
## SavedObjectsMigrationLogger interface
<b>Signature:</b>
```typescript
export interface SavedObjectsMigrationLogger
```
## Properties
| Property | Type | Description |
| --- | --- | --- |
| [debug](./kibana-plugin-server.savedobjectsmigrationlogger.debug.md) | <code>(msg: string) =&gt; void</code> | |
| [info](./kibana-plugin-server.savedobjectsmigrationlogger.info.md) | <code>(msg: string) =&gt; void</code> | |
| [warning](./kibana-plugin-server.savedobjectsmigrationlogger.warning.md) | <code>(msg: string) =&gt; void</code> | |

View file

@ -0,0 +1,11 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [kibana-plugin-server](./kibana-plugin-server.md) &gt; [SavedObjectsMigrationLogger](./kibana-plugin-server.savedobjectsmigrationlogger.md) &gt; [warning](./kibana-plugin-server.savedobjectsmigrationlogger.warning.md)
## SavedObjectsMigrationLogger.warning property
<b>Signature:</b>
```typescript
warning: (msg: string) => void;
```

View file

@ -91,11 +91,12 @@ export {
SavedObjectsBulkGetObject,
SavedObjectsBulkResponse,
SavedObjectsClient,
SavedObjectsCreateOptions,
SavedObjectsClientWrapperFactory,
SavedObjectsClientWrapperOptions,
SavedObjectsCreateOptions,
SavedObjectsErrorHelpers,
SavedObjectsFindResponse,
SavedObjectsMigrationLogger,
SavedObjectsRawDoc,
SavedObjectsSchema,
SavedObjectsSerializer,

View file

@ -24,3 +24,5 @@ export { SavedObjectsSchema } from './schema';
export { SavedObjectsManagement } from './management';
export { SavedObjectsSerializer, RawDoc as SavedObjectsRawDoc } from './serialization';
export { SavedObjectsMigrationLogger } from './migrations/core/migration_logger';

View file

@ -66,9 +66,12 @@ import cloneDeep from 'lodash.clonedeep';
import Semver from 'semver';
import { RawSavedObjectDoc } from '../../serialization';
import { SavedObjectsMigrationVersion } from '../../types';
import { LogFn, Logger, MigrationLogger } from './migration_logger';
import { LogFn, SavedObjectsMigrationLogger, MigrationLogger } from './migration_logger';
export type TransformFn = (doc: RawSavedObjectDoc, log?: Logger) => RawSavedObjectDoc;
export type TransformFn = (
doc: RawSavedObjectDoc,
log?: SavedObjectsMigrationLogger
) => RawSavedObjectDoc;
type ValidateDoc = (doc: RawSavedObjectDoc) => void;
@ -204,7 +207,10 @@ function validateMigrationDefinition(migrations: MigrationDefinition) {
* From: { type: { version: fn } }
* To: { type: { latestVersion: string, transforms: [{ version: string, transform: fn }] } }
*/
function buildActiveMigrations(migrations: MigrationDefinition, log: Logger): ActiveMigrations {
function buildActiveMigrations(
migrations: MigrationDefinition,
log: SavedObjectsMigrationLogger
): ActiveMigrations {
return _.mapValues(migrations, (versions, prop) => {
const transforms = Object.entries(versions)
.map(([version, transform]) => ({
@ -293,7 +299,12 @@ function markAsUpToDate(doc: RawSavedObjectDoc, migrations: ActiveMigrations) {
* If a specific transform function fails, this tacks on a bit of information
* about the document and transform that caused the failure.
*/
function wrapWithTry(version: string, prop: string, transform: TransformFn, log: Logger) {
function wrapWithTry(
version: string,
prop: string,
transform: TransformFn,
log: SavedObjectsMigrationLogger
) {
return function tryTransformDoc(doc: RawSavedObjectDoc) {
try {
const result = transform(doc, log);

View file

@ -30,7 +30,7 @@ import { buildActiveMappings } from './build_active_mappings';
import { CallCluster } from './call_cluster';
import { VersionedTransformer } from './document_migrator';
import { fetchInfo, FullIndexInfo } from './elastic_index';
import { LogFn, Logger, MigrationLogger } from './migration_logger';
import { LogFn, SavedObjectsMigrationLogger, MigrationLogger } from './migration_logger';
export interface MigrationOpts {
batchSize: number;
@ -57,7 +57,7 @@ export interface Context {
source: FullIndexInfo;
dest: FullIndexInfo;
documentMigrator: VersionedTransformer;
log: Logger;
log: SavedObjectsMigrationLogger;
batchSize: number;
pollInterval: number;
scrollDuration: string;

View file

@ -35,7 +35,7 @@
*/
import _ from 'lodash';
import { Logger } from './migration_logger';
import { SavedObjectsMigrationLogger } from './migration_logger';
const DEFAULT_POLL_INTERVAL = 15000;
@ -52,7 +52,7 @@ export type MigrationResult =
interface Opts {
runMigration: () => Promise<MigrationResult>;
isMigrated: () => Promise<boolean>;
log: Logger;
log: SavedObjectsMigrationLogger;
pollInterval?: number;
}
@ -86,7 +86,7 @@ export async function coordinateMigration(opts: Opts): Promise<MigrationResult>
* and is the cue for us to fall into a polling loop, waiting for some
* other Kibana instance to complete the migration.
*/
function handleIndexExists(error: any, log: Logger) {
function handleIndexExists(error: any, log: SavedObjectsMigrationLogger) {
const isIndexExistsError =
_.get(error, 'body.error.type') === 'resource_already_exists_exception';
if (!isIndexExistsError) {

View file

@ -24,13 +24,14 @@
export type LogFn = (path: string[], message: string) => void;
export interface Logger {
/** @public */
export interface SavedObjectsMigrationLogger {
debug: (msg: string) => void;
info: (msg: string) => void;
warning: (msg: string) => void;
}
export class MigrationLogger implements Logger {
export class MigrationLogger implements SavedObjectsMigrationLogger {
private log: LogFn;
constructor(log: LogFn) {

View file

@ -620,6 +620,16 @@ export interface SavedObjectsFindResponse<T extends SavedObjectAttributes = any>
total: number;
}
// @public (undocumented)
export interface SavedObjectsMigrationLogger {
// (undocumented)
debug: (msg: string) => void;
// (undocumented)
info: (msg: string) => void;
// (undocumented)
warning: (msg: string) => void;
}
// @public
export interface SavedObjectsMigrationVersion {
// (undocumented)

View file

@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
import { Logger } from 'src/core/server/saved_objects/migrations/core/migration_logger';
import { SavedObjectsMigrationLogger } from 'src/core/server';
import { DashboardDoc730ToLatest, DashboardDoc700To720 } from './types';
import { isDashboardDoc } from './is_dashboard_doc';
import { moveFiltersToQuery } from './move_filters_to_query';
@ -28,7 +28,7 @@ export function migrations730(
[key: string]: unknown;
}
| DashboardDoc700To720,
logger: Logger
logger: SavedObjectsMigrationLogger
): DashboardDoc730ToLatest | { [key: string]: unknown } {
if (!isDashboardDoc(doc)) {
// NOTE: we should probably throw an error here... but for now following suit and in the