Skip to content

Commit b576b95

Browse files
author
spalger
committed
[serverless] split serverless config file based on expected project types
1 parent 52936a9 commit b576b95

File tree

9 files changed

+51
-16
lines changed

9 files changed

+51
-16
lines changed

.gitignore

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,11 @@ disabledPlugins
5050
webpackstats.json
5151
/config/*
5252
!/config/kibana.yml
53-
!/config/kibana.serverless.yml
53+
!/config/README.md
54+
!/config/serverless.yml
55+
!/config/serverless.es.yml
56+
!/config/serverless.oblt.yml
57+
!/config/serverless.security.yml
5458
!/config/node.options
5559
coverage
5660
selenium

config/README.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
as work on serverless picks up we will add config values to these files that
2+
define how Kibana will run in "serverless" modes. To start Kibana locally with
3+
this configuration, pass `--serverless={mode}` or run `yarn serverless-{mode}`
4+
5+
valid modes are currently: `es`, `oblt`, and `security`
6+
7+
configuration is applied in the following order, later values override
8+
1. kibana.yml
9+
2. serverless.yml
10+
3. serverless.{mode}.yml
11+
4. kibana.dev.yml
12+
5. serverless.dev.yml
13+
6. serverless.{mode}.dev.yml

config/kibana.serverless.yml

Lines changed: 0 additions & 9 deletions
This file was deleted.

config/serverless.es.yml

Whitespace-only changes.

config/serverless.oblt.yml

Whitespace-only changes.

config/serverless.security.yml

Whitespace-only changes.

config/serverless.yml

Whitespace-only changes.

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,11 @@
5454
"lint:es": "node scripts/eslint",
5555
"lint:style": "node scripts/stylelint",
5656
"makelogs": "node scripts/makelogs",
57+
"serverless-es": "node scripts/kibana --dev --serverless=es",
58+
"serverless-oblt": "node scripts/kibana --dev --serverless=oblt",
59+
"serverless-security": "node scripts/kibana --dev --serverless=security",
5760
"spec_to_console": "node scripts/spec_to_console",
5861
"start": "node scripts/kibana --dev",
59-
"start-serverless": "node scripts/kibana --dev --serverless",
6062
"storybook": "node scripts/storybook",
6163
"test:ftr": "node scripts/functional_tests",
6264
"test:ftr:runner": "node scripts/functional_test_runner",

src/cli/serve/serve.js

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,28 @@ import { getConfigPath, getConfigDirectory } from '@kbn/utils';
1616
import { isKibanaDistributable } from '@kbn/repo-info';
1717
import { readKeystore } from '../keystore/read_keystore';
1818

19+
/** @typedef {'es' | 'oblt' | 'security'} ServerlessProjectMode */
20+
/** @type {ServerlessProjectMode[]} */
21+
const VALID_SERVERLESS_PROJECT_MODE = ['es', 'oblt', 'security'];
22+
23+
/**
24+
* @param {Record<string, unknown>} opts
25+
* @returns {ServerlessProjectMode | null}
26+
*/
27+
function getServerlessProjectMode(opts) {
28+
if (!opts.serverless) {
29+
return null;
30+
}
31+
32+
if (VALID_SERVERLESS_PROJECT_MODE.includes(opts.serverless)) {
33+
return opts.serverless;
34+
}
35+
36+
throw new Error(
37+
`invalid --serverless value, must be one of ${VALID_SERVERLESS_PROJECT_MODE.join(', ')}`
38+
);
39+
}
40+
1941
function canRequire(path) {
2042
try {
2143
require.resolve(path);
@@ -212,7 +234,7 @@ export default function (program) {
212234
'--run-examples',
213235
'Adds plugin paths for all the Kibana example plugins and runs with no base path'
214236
)
215-
.option('--serverless', 'Start Kibana with serverless configuration overrides');
237+
.option('--serverless <oblt|security|es>', 'Start Kibana in a serverless project mode');
216238
}
217239

218240
if (DEV_MODE_SUPPORTED) {
@@ -237,17 +259,20 @@ export default function (program) {
237259
command.action(async function (opts) {
238260
const unknownOptions = this.getUnknownOptions();
239261
const configs = [getConfigPath(), ...getEnvConfigs(), ...(opts.config || [])];
262+
const serverlessMode = getServerlessProjectMode(opts);
240263

241264
// we "unshift" .serverless. config so that it only overrides defaults
242-
if (opts.serverless) {
243-
maybeAddConfig('kibana.serverless.yml', configs, 'unshift');
265+
if (serverlessMode) {
266+
maybeAddConfig(`serverless.yml`, configs, 'push');
267+
maybeAddConfig(`serverless.${serverlessMode}.yml`, configs, 'unshift');
244268
}
245269

246270
// .dev. configs are "pushed" so that they override all other config files
247271
if (opts.dev && opts.devConfig !== false) {
248272
maybeAddConfig('kibana.dev.yml', configs, 'push');
249-
if (opts.serverless) {
250-
maybeAddConfig('kibana.serverless.dev.yml', configs, 'push');
273+
if (serverlessMode) {
274+
maybeAddConfig(`serverless.dev.yml`, configs, 'push');
275+
maybeAddConfig(`serverless.${serverlessMode}.dev.yml`, configs, 'push');
251276
}
252277
}
253278

0 commit comments

Comments
 (0)