Skip to content

Commit

Permalink
Es client cleanup (#54337)
Browse files Browse the repository at this point in the history
* Add esClient instance to data.__LEGACY and replace old usages

* add es clinet to setup karma mock

* delete unneeded import

* fix get inner angular

* Fix karma test

* Fix vega browser test

* Update esClient usage

* ts fixes

* ts + karma tests

* update tests

* Fix karma test

* eslint

* Register default strategy from plugin

* export

* Revert map change

* Delete legacy saved objects client provider

* Fix management digest cycle

Co-authored-by: Elastic Machine <[email protected]>
  • Loading branch information
Liza Katz and elasticmachine authored Jan 26, 2020
1 parent 9c1c941 commit 55b7905
Show file tree
Hide file tree
Showing 24 changed files with 82 additions and 192 deletions.
10 changes: 0 additions & 10 deletions src/legacy/core_plugins/data/public/search/fetch/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,6 @@

import { ISearchStart } from 'src/plugins/data/public';
import { IUiSettingsClient } from '../../../../../../core/public';
import { SearchRequest, SearchResponse } from '../types';

export interface ApiCaller {
search: (searchRequest: SearchRequest) => ApiCallerResponse;
msearch: (searchRequest: SearchRequest) => ApiCallerResponse;
}

export interface ApiCallerResponse extends Promise<SearchResponse> {
abort: () => void;
}

export interface FetchOptions {
abortSignal?: AbortSignal;
Expand Down
4 changes: 3 additions & 1 deletion src/legacy/core_plugins/data/public/search/search_service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

import { Plugin, CoreSetup, CoreStart } from '../../../../../core/public';
import { SearchSource } from './search_source';
import { defaultSearchStrategy } from './search_strategy';
import { defaultSearchStrategy, addSearchStrategy } from './search_strategy';
import { SearchStrategyProvider } from './search_strategy/types';

export interface SearchSetup {} // eslint-disable-line @typescript-eslint/no-empty-interface
Expand All @@ -41,6 +41,8 @@ export class SearchService implements Plugin<SearchSetup, SearchStart> {
}

public start(core: CoreStart): SearchStart {
addSearchStrategy(defaultSearchStrategy);

return {
defaultSearchStrategy,
SearchSource,
Expand Down
20 changes: 10 additions & 10 deletions src/legacy/core_plugins/kibana/public/discover/get_inner_angular.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,6 @@ import { EventsProvider } from 'ui/events';
import { PersistedState } from 'ui/persisted_state';
// @ts-ignore
import { PromiseServiceCreator } from 'ui/promises/promises';
// @ts-ignore
import { createEsService } from 'ui/es';
import { i18nDirective, i18nFilter, I18nProvider } from '@kbn/i18n/angular';
// @ts-ignore
import { PrivateProvider } from 'ui/private/private';
Expand Down Expand Up @@ -66,7 +64,7 @@ import { KbnUrlProvider, RedirectWhenMissingProvider } from 'ui/url';
// @ts-ignore
import { createTopNavDirective, createTopNavHelper } from 'ui/kbn_top_nav/kbn_top_nav';
import { configureAppAngularModule } from 'ui/legacy_compat';
import { IndexPatterns } from '../../../../../plugins/data/public';
import { IndexPatterns, DataPublicPluginStart } from '../../../../../plugins/data/public';
import { Storage } from '../../../../../plugins/kibana_utils/public';
import { NavigationPublicPluginStart as NavigationStart } from '../../../../../plugins/navigation/public';
import { createDocTableDirective } from './np_ready/angular/doc_table/doc_table';
Expand Down Expand Up @@ -94,7 +92,7 @@ import { DiscoverStartPlugins } from './plugin';
* needs to render, so in the end the current 'kibana' angular module is no longer necessary
*/
export function getInnerAngularModule(name: string, core: CoreStart, deps: DiscoverStartPlugins) {
const module = initializeInnerAngularModule(name, core, deps.navigation);
const module = initializeInnerAngularModule(name, core, deps.navigation, deps.data);
configureAppAngularModule(module, core as LegacyCoreStart, true);
return module;
}
Expand All @@ -107,7 +105,7 @@ export function getInnerAngularModuleEmbeddable(
core: CoreStart,
deps: DiscoverStartPlugins
) {
const module = initializeInnerAngularModule(name, core, deps.navigation, true);
const module = initializeInnerAngularModule(name, core, deps.navigation, deps.data, true);
configureAppAngularModule(module, core as LegacyCoreStart, true);
return module;
}
Expand All @@ -118,6 +116,7 @@ export function initializeInnerAngularModule(
name = 'app/discover',
core: CoreStart,
navigation: NavigationStart,
data: DataPublicPluginStart,
embeddable = false
) {
if (!initialized) {
Expand All @@ -131,7 +130,7 @@ export function initializeInnerAngularModule(
createLocalGlobalStateModule();
createLocalAppStateModule();
createLocalStorageModule();
createElasticSearchModule();
createElasticSearchModule(data);
createIndexPatternsModule();
createPagerFactoryModule();
createDocTableModule();
Expand Down Expand Up @@ -163,7 +162,6 @@ export function initializeInnerAngularModule(
'ngRoute',
'react',
'ui.bootstrap',
'elasticsearch',
'discoverConfig',
'discoverI18n',
'discoverPrivate',
Expand Down Expand Up @@ -298,11 +296,13 @@ const createLocalStorageService = function(type: string) {
};
};

function createElasticSearchModule() {
function createElasticSearchModule(data: DataPublicPluginStart) {
angular
.module('discoverEs', ['elasticsearch', 'discoverConfig'])
.module('discoverEs', ['discoverConfig'])
// Elasticsearch client used for requesting data. Connects to the /elasticsearch proxy
.service('es', createEsService);
.service('es', () => {
return data.search.__LEGACY.esClient;
});
}

function createIndexPatternsModule() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
* under the License.
*/

import { SavedObjectsClientProvider } from 'ui/saved_objects';
import uiRoutes from 'ui/routes';
import angularTemplate from './angular_template.html';
import { npStart } from 'ui/new_platform';
Expand All @@ -32,18 +31,17 @@ uiRoutes.when('/management/kibana/index_pattern', {
controller: function($scope, $injector) {
// Wait for the directives to execute
const kbnUrl = $injector.get('kbnUrl');
const Private = $injector.get('Private');
$scope.$$postDigest(() => {
const $routeParams = $injector.get('$routeParams');
const indexPatternCreationType = managementSetup.indexPattern.creation.getType(
$routeParams.type
);
const services = {
config: $injector.get('config'),
es: $injector.get('es'),
config: npStart.core.uiSettings,
es: npStart.plugins.data.search.__LEGACY.esClient,
indexPatterns: npStart.plugins.data.indexPatterns,
$http: $injector.get('$http'),
savedObjectsClient: Private(SavedObjectsClientProvider),
$http: npStart.core.http,
savedObjectsClient: npStart.core.savedObjects.client,
indexPatternCreationType,
confirmModalPromise: $injector.get('confirmModalPromise'),
changeUrl: url => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import { uiModules } from 'ui/modules';
import indexTemplate from './index.html';
import indexPatternListTemplate from './list.html';
import { IndexPatternTable } from './index_pattern_table';
import { SavedObjectsClientProvider } from 'ui/saved_objects';
import { npStart } from 'ui/new_platform';
import {
FeatureCatalogueRegistryProvider,
FeatureCatalogueCategory,
Expand Down Expand Up @@ -67,8 +67,8 @@ export const destroyIndexPatternList = () => {
};

const indexPatternsResolutions = {
indexPatterns: function(Private) {
const savedObjectsClient = Private(SavedObjectsClientProvider);
indexPatterns: function() {
const savedObjectsClient = npStart.core.savedObjects.client;

return savedObjectsClient
.find({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import { savedObjectManagementRegistry } from '../../saved_object_registry';
import objectIndexHTML from './_objects.html';
import uiRoutes from 'ui/routes';
import chrome from 'ui/chrome';
import { SavedObjectsClientProvider } from 'ui/saved_objects';
import { uiModules } from 'ui/modules';
import React from 'react';
import { render, unmountComponentAtNode } from 'react-dom';
Expand All @@ -35,14 +34,13 @@ import { getIndexBreadcrumbs } from './breadcrumbs';
const REACT_OBJECTS_TABLE_DOM_ELEMENT_ID = 'reactSavedObjectsTable';

function updateObjectsTable($scope, $injector) {
const Private = $injector.get('Private');
const indexPatterns = npStart.plugins.data.indexPatterns;
const $http = $injector.get('$http');
const kbnUrl = $injector.get('kbnUrl');
const config = $injector.get('config');
const confirmModalPromise = $injector.get('confirmModalPromise');

const savedObjectsClient = Private(SavedObjectsClientProvider);
const savedObjectsClient = npStart.core.savedObjects.client;
const services = savedObjectManagementRegistry.all().map(obj => $injector.get(obj.service));
const uiCapabilites = npStart.core.application.capabilities;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ import uiRoutes from 'ui/routes';
import { uiModules } from 'ui/modules';
import { fatalError, toastNotifications } from 'ui/notify';
import 'ui/accessibility/kbn_ui_ace_keyboard_mode';
import { SavedObjectsClientProvider } from 'ui/saved_objects';
import { isNumeric } from './lib/numeric';
import { canViewInApp } from './lib/in_app_url';
import { npStart } from 'ui/new_platform';

import { castEsToKbnFieldTypeName } from '../../../../../../../plugins/data/public';

Expand All @@ -56,12 +56,11 @@ uiModules
$location,
$window,
$rootScope,
Private,
uiCapabilities
) {
const serviceObj = savedObjectManagementRegistry.get($routeParams.service);
const service = $injector.get(serviceObj.service);
const savedObjectsClient = Private(SavedObjectsClientProvider);
const savedObjectsClient = npStart.core.savedObjects.client;

/**
* Creates a field definition and pushes it to the memo stack. This function
Expand Down Expand Up @@ -177,11 +176,13 @@ uiModules
// sorts twice since we want numerical sort to prioritize over name,
// and sortBy will do string comparison if trying to match against strings
const nameSortedFields = _.sortBy(fields, 'name');
$scope.fields = _.sortBy(nameSortedFields, field => {
const orderIndex = service.Class.fieldOrder
? service.Class.fieldOrder.indexOf(field.name)
: -1;
return orderIndex > -1 ? orderIndex : Infinity;
$scope.$evalAsync(() => {
$scope.fields = _.sortBy(nameSortedFields, field => {
const orderIndex = service.Class.fieldOrder
? service.Class.fieldOrder.indexOf(field.name)
: -1;
return orderIndex > -1 ? orderIndex : Infinity;
});
});
})
.catch(error => fatalError(error, location));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ import { SearchCache } from '../data_model/search_cache';

import { setup as visualizationsSetup } from '../../../visualizations/public/np_ready/public/legacy';
import { createVegaTypeDefinition } from '../vega_type';
import { npStart } from 'ui/new_platform';

const THRESHOLD = 0.1;
const PIXEL_DIFF = 30;
Expand All @@ -60,10 +61,9 @@ describe('VegaVisualizations', () => {
beforeEach(
ngMock.inject((Private, $injector) => {
vegaVisualizationDependencies = {
es: $injector.get('es'),
serviceSettings: $injector.get('serviceSettings'),
core: {
uiSettings: $injector.get('config'),
uiSettings: npStart.core.uiSettings,
},
plugins: {
data: {
Expand All @@ -72,6 +72,9 @@ describe('VegaVisualizations', () => {
timefilter: {},
},
},
__LEGACY: {
esClient: npStart.plugins.data.search.__LEGACY.esClient,
},
},
},
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,10 @@

import chrome from 'ui/chrome';
import 'ui/vis/map/service_settings';
import 'ui/es'; // required for $injector.get('es') below
import { CoreStart, Plugin } from 'kibana/public';

/** @internal */
export interface LegacyDependenciesPluginSetup {
es: any;
serviceSettings: any;
}

Expand All @@ -34,9 +32,6 @@ export class LegacyDependenciesPlugin
const $injector = await chrome.dangerouslyGetActiveInjector();

return {
// Client of Elastic Search.
es: $injector.get('es'),

// Settings for EMSClient.
// EMSClient, which currently lives in the tile_map vis,
// will probably end up being exposed from the future vis_type_maps plugin,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@
* specific language governing permissions and limitations
* under the License.
*/

// eslint-disable-next-line @kbn/eslint/no-restricted-paths
import { getSearchService } from '../../../../plugins/data/public/services';
import { esFilters, esQuery, TimeRange, Query } from '../../../../plugins/data/public';

// @ts-ignore
Expand All @@ -36,13 +39,13 @@ interface VegaRequestHandlerParams {
}

export function createVegaRequestHandler({
es,
plugins,
plugins: { data },
core: { uiSettings },
serviceSettings,
}: VegaVisualizationDependencies) {
const searchCache = new SearchCache(es, { max: 10, maxAge: 4 * 1000 });
const { timefilter } = plugins.data.query.timefilter;
const { esClient } = getSearchService().__LEGACY;
const searchCache = new SearchCache(esClient, { max: 10, maxAge: 4 * 1000 });
const { timefilter } = data.query.timefilter;
const timeCache = new TimeCache(timefilter, 3 * 1000);

return ({ timeRange, filters, query, visParams }: VegaRequestHandlerParams) => {
Expand Down
1 change: 0 additions & 1 deletion src/legacy/ui/public/autoload/modules.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
import 'angular';
import '../chrome';
import '../config';
import '../es';
import '../notify';
import '../private';
import '../promises';
Expand Down
62 changes: 0 additions & 62 deletions src/legacy/ui/public/es.js

This file was deleted.

6 changes: 6 additions & 0 deletions src/legacy/ui/public/new_platform/new_platform.karma_mock.js
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,12 @@ export const npSetup = {
getSavedQueryCount: sinon.fake(),
},
},
__LEGACY: {
esClient: {
search: sinon.fake(),
msearch: sinon.fake(),
},
},
fieldFormats: getFieldFormatsRegistry(mockCore),
},
share: {
Expand Down
Loading

0 comments on commit 55b7905

Please sign in to comment.