Skip to content

Commit

Permalink
config as observable
Browse files Browse the repository at this point in the history
  • Loading branch information
Bamieh committed Nov 27, 2019
1 parent fd81fc0 commit 70dba2f
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 22 deletions.
26 changes: 10 additions & 16 deletions x-pack/plugins/cloud/server/collectors/cloud_usage_collector.ts
Expand Up @@ -6,35 +6,29 @@

import { UsageCollectionSetup } from 'src/plugins/usage_collection/server';
import { KIBANA_CLOUD_STATS_TYPE } from '../../common/constants';
import { CoreSetup } from 'kibana/server';

export interface UsageStats {
interface Config {
isCloudEnabled: boolean;
}

export function createCollectorFetch(core: CoreSetup) {
return async function fetchUsageStats(): Promise<UsageStats> {
const cloudId = core.getServerConfig().get<string>('xpack.cloud.id', null);

return {
isCloudEnabled: !!cloudId,
};
};
}

export function createCloudUsageCollector(usageCollection: UsageCollectionSetup, core: CoreSetup) {
export function createCloudUsageCollector(usageCollection: UsageCollectionSetup, config: Config) {
const { isCloudEnabled } = config;
return usageCollection.makeUsageCollector({
type: KIBANA_CLOUD_STATS_TYPE,
isReady: () => true,
fetch: createCollectorFetch(core),
fetch: () => {
return {
isCloudEnabled,
};
}
});
}

export function registerCloudUsageCollector(usageCollection: UsageCollectionSetup, core: CoreSetup) {
export function registerCloudUsageCollector(usageCollection: UsageCollectionSetup | undefined, config: Config) {
if (!usageCollection) {
return;
}

const collector = createCloudUsageCollector(usageCollection, core);
const collector = createCloudUsageCollector(usageCollection, config);
usageCollection.registerCollector(collector);
}
21 changes: 15 additions & 6 deletions x-pack/plugins/cloud/server/plugin.ts
Expand Up @@ -4,18 +4,23 @@
* you may not use this file except in compliance with the Elastic License.
*/

import { first } from 'rxjs/operators';
// import { first, take, takeUntil } from 'rxjs/operators';
import { first, Observable } from 'rxjs/operators';
import { Observable } from 'rxjs';
import { CloudConfigSchema } from './config';
import { registerCloudUsageCollector } from './collectors';
import { UsageCollectionSetup } from 'src/plugins/usage_collection/server';
import {
CoreSetup,
Logger,
Plugin,
PluginInitializerContext,
} from 'src/core/server';

interface PluginsSetup {
usageCollection?: UsageCollectionSetup;
}
export interface CloudSetup {

isCloudEnabled: boolean;
}

export class CloudPlugin implements Plugin<CloudSetup> {
Expand All @@ -27,11 +32,15 @@ export class CloudPlugin implements Plugin<CloudSetup> {
this.config$ = this.context.config.create<CloudConfigSchema>();
}

public async setup(core: CoreSetup) {
public async setup(core: CoreSetup, { usageCollection }: PluginsSetup) {
this.logger.debug('Setting up Cloud plugin');
const config = await this.config$.pipe(first()).toPromise();
console.log('config::', config);
return {};
const isCloudEnabled = !!config.id;
registerCloudUsageCollector(usageCollection, { isCloudEnabled })

return {
isCloudEnabled,
};
}

public start() {}
Expand Down

0 comments on commit 70dba2f

Please sign in to comment.