Skip to content

Commit

Permalink
Deprecate kibana.index setting (#83988) (#84276)
Browse files Browse the repository at this point in the history
* Deprecating `kibana.index` setting

* Using ela.st service so this can be changed to the blog in the future

* Adding unit tests

* Revising deprecation log message

* Changing the deprecation log message to be more consistent with others

* Updating kibana.index docs also

* Using rename deprecation as the "standard" for the deprecation messages

* /s/'/`
  • Loading branch information
kobelb authored Nov 25, 2020
1 parent accd2d0 commit 599074c
Show file tree
Hide file tree
Showing 3 changed files with 84 additions and 2 deletions.
6 changes: 4 additions & 2 deletions docs/setup/settings.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -214,10 +214,12 @@ Please use the `defaultRoute` advanced setting instead.
The default application to load. *Default: `"home"`*

|[[kibana-index]] `kibana.index:`
| {kib} uses an index in {es} to store saved searches, visualizations, and
| *deprecated* This setting is deprecated and will be removed in 8.0. Multitenancy by changing
`kibana.index` will not be supported starting in 8.0. See https://ela.st/kbn-remove-legacy-multitenancy[8.0 Breaking Changes]
for more details. {kib} uses an index in {es} to store saved searches, visualizations, and
dashboards. {kib} creates a new index if the index doesn’t already exist.
If you configure a custom index, the name must be lowercase, and conform to the
{es} {ref}/indices-create-index.html[index name limitations].
{es} {ref}/indices-create-index.html[index name limitations].
*Default: `".kibana"`*

| `kibana.autocompleteTimeout:` {ess-icon}
Expand Down
66 changes: 66 additions & 0 deletions src/core/server/kibana_config.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
/*
* Licensed to Elasticsearch B.V. under one or more contributor
* license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright
* ownership. Elasticsearch B.V. licenses this file to you under
* the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import { config } from './kibana_config';
import { applyDeprecations, configDeprecationFactory } from '@kbn/config';

const CONFIG_PATH = 'kibana';

const applyKibanaDeprecations = (settings: Record<string, any> = {}) => {
const deprecations = config.deprecations!(configDeprecationFactory);
const deprecationMessages: string[] = [];
const _config: any = {};
_config[CONFIG_PATH] = settings;
const migrated = applyDeprecations(
_config,
deprecations.map((deprecation) => ({
deprecation,
path: CONFIG_PATH,
})),
(msg) => deprecationMessages.push(msg)
);
return {
messages: deprecationMessages,
migrated,
};
};

it('set correct defaults ', () => {
const configValue = config.schema.validate({});
expect(configValue).toMatchInlineSnapshot(`
Object {
"autocompleteTerminateAfter": "PT1M40S",
"autocompleteTimeout": "PT1S",
"enabled": true,
"index": ".kibana",
}
`);
});

describe('deprecations', () => {
['.foo', '.kibana'].forEach((index) => {
it('logs a warning if index is set', () => {
const { messages } = applyKibanaDeprecations({ index });
expect(messages).toMatchInlineSnapshot(`
Array [
"\\"kibana.index\\" is deprecated. Multitenancy by changing \\"kibana.index\\" will not be supported starting in 8.0. See https://ela.st/kbn-remove-legacy-multitenancy for more details",
]
`);
});
});
});
14 changes: 14 additions & 0 deletions src/core/server/kibana_config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,22 @@
*/

import { schema, TypeOf } from '@kbn/config-schema';
import { ConfigDeprecationProvider } from '@kbn/config';

export type KibanaConfigType = TypeOf<typeof config.schema>;

const deprecations: ConfigDeprecationProvider = () => [
(settings, fromPath, log) => {
const kibana = settings[fromPath];
if (kibana?.index) {
log(
`"kibana.index" is deprecated. Multitenancy by changing "kibana.index" will not be supported starting in 8.0. See https://ela.st/kbn-remove-legacy-multitenancy for more details`
);
}
return settings;
},
];

export const config = {
path: 'kibana',
schema: schema.object({
Expand All @@ -29,4 +42,5 @@ export const config = {
autocompleteTerminateAfter: schema.duration({ defaultValue: 100000 }),
autocompleteTimeout: schema.duration({ defaultValue: 1000 }),
}),
deprecations,
};

0 comments on commit 599074c

Please sign in to comment.