Skip to content

Commit

Permalink
[Ingest] Adds support for a working default output (#51841)
Browse files Browse the repository at this point in the history
* aadding config

* add working settings to the default output

* remove default username and password

* update libs
  • Loading branch information
Matt Apperson authored Nov 27, 2019
1 parent ce760f0 commit ef9bc47
Show file tree
Hide file tree
Showing 6 changed files with 36 additions and 21 deletions.
1 change: 1 addition & 0 deletions x-pack/legacy/plugins/ingest/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import { mappings } from './server/mappings';

export const config = Joi.object({
enabled: Joi.boolean().default(true),
defaultOutputHost: Joi.string().default('http://localhost:9200'),
}).default();

export function ingest(kibana: any) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,8 @@ export enum InputType {
*/
export interface Output {
api_token?: string;
username?: string;
password?: string;
/**
* contains everything not otherwise specified (e.g. TLS, etc)
*/
Expand Down
12 changes: 6 additions & 6 deletions x-pack/legacy/plugins/ingest/server/libs/compose/kibana.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@ import { PLUGIN } from '../../../common/constants';
import { CONFIG_PREFIX } from '../../../common/constants/plugin';
import { DatabaseKbnESPlugin } from '../adapters/es_database/adapter_types';
import { ESDatabaseAdapter } from '../adapters/es_database/default';
import { KibanaLegacyServer } from '../adapters/framework/adapter_types';
import { BackendFrameworkAdapter } from '../adapters/framework/default';
import { ServerLibs } from '../types';
import { BackendFrameworkLib } from './../framework';
import { PolicyLib } from '../policy';
import { PolicyAdapter } from '../adapters/policy/default';
import { SODatabaseAdapter } from '../adapters/so_database/default';
import { KibanaLegacyServer } from '../adapters/framework/adapter_types';
import { OutputsLib } from '../outputs';
import { DatasourcesLib } from '../datasources';
import { OutputsLib } from '../outputs';
import { PolicyLib } from '../policy';
import { ServerLibs } from '../types';
import { BackendFrameworkLib } from './../framework';

export function compose(server: KibanaLegacyServer): ServerLibs {
const framework = new BackendFrameworkLib(
Expand All @@ -26,7 +26,7 @@ export function compose(server: KibanaLegacyServer): ServerLibs {
const database = new ESDatabaseAdapter(server.plugins.elasticsearch as DatabaseKbnESPlugin);
const soDatabase = new SODatabaseAdapter(server.savedObjects, server.plugins.elasticsearch);

const outputs = new OutputsLib();
const outputs = new OutputsLib({ framework });

const datasources = new DatasourcesLib();

Expand Down
18 changes: 9 additions & 9 deletions x-pack/legacy/plugins/ingest/server/libs/compose/memorized.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,22 @@
* you may not use this file except in compliance with the Elastic License.
*/

import { camelCase } from 'lodash';
import { callWhenOnline } from '@mattapperson/slapshot/lib/call_when_online';
import { camelCase } from 'lodash';
import { PLUGIN } from '../../../common/constants';
import { CONFIG_PREFIX } from '../../../common/constants/plugin';
import { ESDatabaseAdapter } from '../adapters/es_database/default';
import { KibanaLegacyServer } from '../adapters/framework/adapter_types';
import { BackendFrameworkAdapter } from '../adapters/framework/default';
import { ServerLibs } from '../types';
import { BackendFrameworkLib } from './../framework';
import { PolicyLib } from '../policy';
import { MemorizedBackendFrameworkAdapter } from '../adapters/framework/memorized';
import { PolicyAdapter } from '../adapters/policy/default';
import { SODatabaseAdapter } from '../adapters/so_database/default';
import { KibanaLegacyServer } from '../adapters/framework/adapter_types';
import { MemorizedPolicyAdapter } from '../adapters/policy/memorized';
import { MemorizedBackendFrameworkAdapter } from '../adapters/framework/memorized';
import { OutputsLib } from '../outputs';
import { SODatabaseAdapter } from '../adapters/so_database/default';
import { DatasourcesLib } from '../datasources';
import { OutputsLib } from '../outputs';
import { PolicyLib } from '../policy';
import { ServerLibs } from '../types';
import { BackendFrameworkLib } from './../framework';

export function compose(servers?: {
shutdown: () => Promise<void>;
Expand Down Expand Up @@ -52,7 +52,7 @@ export function compose(servers?: {
) as BackendFrameworkAdapter;
const framework = new BackendFrameworkLib(memorizedFrameworkAdapter);

const outputs = new OutputsLib();
const outputs = new OutputsLib({ framework });

const datasources = new DatasourcesLib();

Expand Down
10 changes: 6 additions & 4 deletions x-pack/legacy/plugins/ingest/server/libs/framework.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
* you may not use this file except in compliance with the Elastic License.
*/

import { Request } from 'src/legacy/server/kbn_server';
import { get } from 'lodash';
import { BackendFrameworkAdapter } from './adapters/framework/default';
import { Request } from 'src/legacy/server/kbn_server';
import { LicenseType } from '../../common/types/security';
import { BackendFrameworkAdapter } from './adapters/framework/default';

export class BackendFrameworkLib {
/**
Expand Down Expand Up @@ -37,9 +37,11 @@ export class BackendFrameworkLib {
public getCurrentUser(request: Request) {
return this.adapter.getUser(request);
}

public getSetting(setting: 'defaultOutputHost'): string;
public getSetting(setting: 'defaultUserRoles'): string[];
public getSetting(setting: 'defaultUserRoles') {
return this.adapter.getSetting(`xpack.ingest-do-not-disable.${setting}`);
public getSetting(setting: string): string | string[] {
return this.adapter.getSetting(`xpack.ingest.${setting}`) as any;
}
public expose(name: string, thing: any) {
return this.adapter.expose(name, thing);
Expand Down
14 changes: 12 additions & 2 deletions x-pack/legacy/plugins/ingest/server/libs/outputs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,25 @@
*/
import { FrameworkUser } from './adapters/framework/adapter_types';
import { Output, OutputType } from './adapters/policy/adapter_types';
import { BackendFrameworkLib } from './framework';

export class OutputsLib {
public async getByIDs(_user: FrameworkUser, _ids: string[]): Promise<Output[]> {
constructor(
private readonly libs: {
framework: BackendFrameworkLib;
}
) {}
public async getByIDs(_user: FrameworkUser, ids: string[]): Promise<Output[]> {
if (ids.length > 0 || ids[0] !== 'default') {
throw new Error('Currently, only a default output is supported');
}

return [
{
id: 'default',
name: 'default',
type: OutputType.Elasticsearch,
url: '<Kibana URL>',
url: this.libs.framework.getSetting('defaultOutputHost'),
ingest_pipeline: 'default',
},
];
Expand Down

0 comments on commit ef9bc47

Please sign in to comment.