Skip to content

Commit

Permalink
Expose SavedObjectsMigrationLogger
Browse files Browse the repository at this point in the history
  • Loading branch information
rudolf committed Jul 29, 2019
1 parent 40ffbc0 commit 75f837a
Show file tree
Hide file tree
Showing 13 changed files with 94 additions and 14 deletions.
1 change: 1 addition & 0 deletions docs/development/core/server/kibana-plugin-server.md
Original file line number Diff line number Diff line change
Expand Up @@ -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) | |
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
```
Original file line number Diff line number Diff line change
@@ -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;
```
Original file line number Diff line number Diff line change
@@ -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> | |

Original file line number Diff line number Diff line change
@@ -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;
```
3 changes: 2 additions & 1 deletion src/core/server/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -91,11 +91,12 @@ export {
SavedObjectsBulkGetObject,
SavedObjectsBulkResponse,
SavedObjectsClient,
SavedObjectsCreateOptions,
SavedObjectsClientWrapperFactory,
SavedObjectsClientWrapperOptions,
SavedObjectsCreateOptions,
SavedObjectsErrorHelpers,
SavedObjectsFindResponse,
SavedObjectsMigrationLogger,
SavedObjectsRawDoc,
SavedObjectsSchema,
SavedObjectsSerializer,
Expand Down
2 changes: 2 additions & 0 deletions src/core/server/saved_objects/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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';
19 changes: 15 additions & 4 deletions src/core/server/saved_objects/migrations/core/document_migrator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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]) => ({
Expand Down Expand Up @@ -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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -57,7 +57,7 @@ export interface Context {
source: FullIndexInfo;
dest: FullIndexInfo;
documentMigrator: VersionedTransformer;
log: Logger;
log: SavedObjectsMigrationLogger;
batchSize: number;
pollInterval: number;
scrollDuration: string;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
*/

import _ from 'lodash';
import { Logger } from './migration_logger';
import { SavedObjectsMigrationLogger } from './migration_logger';

const DEFAULT_POLL_INTERVAL = 15000;

Expand All @@ -52,7 +52,7 @@ export type MigrationResult =
interface Opts {
runMigration: () => Promise<MigrationResult>;
isMigrated: () => Promise<boolean>;
log: Logger;
log: SavedObjectsMigrationLogger;
pollInterval?: number;
}

Expand Down Expand Up @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
10 changes: 10 additions & 0 deletions src/core/server/server.api.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand All @@ -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
Expand Down

0 comments on commit 75f837a

Please sign in to comment.