diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.adminclient.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.adminclient.md
deleted file mode 100644
index 3fcb855586129..0000000000000
--- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.adminclient.md
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchServiceSetup](./kibana-plugin-core-server.elasticsearchservicesetup.md) > [adminClient](./kibana-plugin-core-server.elasticsearchservicesetup.adminclient.md)
-
-## ElasticsearchServiceSetup.adminClient property
-
-> Warning: This API is now obsolete.
->
-> Use [ElasticsearchServiceStart.legacy.client](./kibana-plugin-core-server.elasticsearchservicestart.legacy.md) instead.
->
-> A client for the `admin` cluster. All Elasticsearch config value changes are processed under the hood. See [IClusterClient](./kibana-plugin-core-server.iclusterclient.md).
->
-
-Signature:
-
-```typescript
-readonly adminClient: IClusterClient;
-```
-
-## Example
-
-
-```js
-const client = core.elasticsearch.adminClient;
-
-```
-
diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.createclient.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.createclient.md
deleted file mode 100644
index 75bf6c6aa461b..0000000000000
--- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.createclient.md
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchServiceSetup](./kibana-plugin-core-server.elasticsearchservicesetup.md) > [createClient](./kibana-plugin-core-server.elasticsearchservicesetup.createclient.md)
-
-## ElasticsearchServiceSetup.createClient property
-
-> Warning: This API is now obsolete.
->
-> Use [ElasticsearchServiceStart.legacy.createClient](./kibana-plugin-core-server.elasticsearchservicestart.legacy.md) instead.
->
-> Create application specific Elasticsearch cluster API client with customized config. See [IClusterClient](./kibana-plugin-core-server.iclusterclient.md).
->
-
-Signature:
-
-```typescript
-readonly createClient: (type: string, clientConfig?: Partial) => ICustomClusterClient;
-```
-
-## Example
-
-
-```js
-const client = elasticsearch.createCluster('my-app-name', config);
-const data = await client.callAsInternalUser();
-
-```
-
diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.dataclient.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.dataclient.md
deleted file mode 100644
index 867cafa957f42..0000000000000
--- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.dataclient.md
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchServiceSetup](./kibana-plugin-core-server.elasticsearchservicesetup.md) > [dataClient](./kibana-plugin-core-server.elasticsearchservicesetup.dataclient.md)
-
-## ElasticsearchServiceSetup.dataClient property
-
-> Warning: This API is now obsolete.
->
-> Use [ElasticsearchServiceStart.legacy.client](./kibana-plugin-core-server.elasticsearchservicestart.legacy.md) instead.
->
-> A client for the `data` cluster. All Elasticsearch config value changes are processed under the hood. See [IClusterClient](./kibana-plugin-core-server.iclusterclient.md).
->
-
-Signature:
-
-```typescript
-readonly dataClient: IClusterClient;
-```
-
-## Example
-
-
-```js
-const client = core.elasticsearch.dataClient;
-
-```
-
diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.legacy.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.legacy.md
new file mode 100644
index 0000000000000..e8c4c63dc6a96
--- /dev/null
+++ b/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.legacy.md
@@ -0,0 +1,19 @@
+
+
+[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchServiceSetup](./kibana-plugin-core-server.elasticsearchservicesetup.md) > [legacy](./kibana-plugin-core-server.elasticsearchservicesetup.legacy.md)
+
+## ElasticsearchServiceSetup.legacy property
+
+> Warning: This API is now obsolete.
+>
+> Use [ElasticsearchServiceStart.legacy](./kibana-plugin-core-server.elasticsearchservicestart.legacy.md) instead.
+>
+
+Signature:
+
+```typescript
+legacy: {
+ readonly createClient: (type: string, clientConfig?: Partial) => ICustomClusterClient;
+ readonly client: IClusterClient;
+ };
+```
diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.md
index ee56f8b4a6284..c1e23527e9516 100644
--- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.md
+++ b/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.md
@@ -15,7 +15,5 @@ export interface ElasticsearchServiceSetup
| Property | Type | Description |
| --- | --- | --- |
-| [adminClient](./kibana-plugin-core-server.elasticsearchservicesetup.adminclient.md) | IClusterClient
| |
-| [createClient](./kibana-plugin-core-server.elasticsearchservicesetup.createclient.md) | (type: string, clientConfig?: Partial<ElasticsearchClientConfig>) => ICustomClusterClient
| |
-| [dataClient](./kibana-plugin-core-server.elasticsearchservicesetup.dataclient.md) | IClusterClient
| |
+| [legacy](./kibana-plugin-core-server.elasticsearchservicesetup.legacy.md) | {
readonly createClient: (type: string, clientConfig?: Partial<ElasticsearchClientConfig>) => ICustomClusterClient;
readonly client: IClusterClient;
}
| |
diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicestart.legacy.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicestart.legacy.md
index 08765aaf93d3d..667a36091f232 100644
--- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicestart.legacy.md
+++ b/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicestart.legacy.md
@@ -4,6 +4,11 @@
## ElasticsearchServiceStart.legacy property
+> Warning: This API is now obsolete.
+>
+> Provided for the backward compatibility. Switch to the new elasticsearch client as soon as https://github.com/elastic/kibana/issues/35508 done.
+>
+
Signature:
```typescript
diff --git a/docs/development/core/server/kibana-plugin-core-server.md b/docs/development/core/server/kibana-plugin-core-server.md
index 14e01fda3d287..147a72016b235 100644
--- a/docs/development/core/server/kibana-plugin-core-server.md
+++ b/docs/development/core/server/kibana-plugin-core-server.md
@@ -125,7 +125,7 @@ The plugin integrates with the core system via lifecycle events: `setup`
| [PluginConfigDescriptor](./kibana-plugin-core-server.pluginconfigdescriptor.md) | Describes a plugin configuration properties. |
| [PluginInitializerContext](./kibana-plugin-core-server.plugininitializercontext.md) | Context that's available to plugins during initialization stage. |
| [PluginManifest](./kibana-plugin-core-server.pluginmanifest.md) | Describes the set of required and optional properties plugin can define in its mandatory JSON manifest file. |
-| [RequestHandlerContext](./kibana-plugin-core-server.requesthandlercontext.md) | Plugin specific context passed to a route handler.Provides the following clients and services: - [savedObjects.client](./kibana-plugin-core-server.savedobjectsclient.md) - Saved Objects client which uses the credentials of the incoming request - [savedObjects.typeRegistry](./kibana-plugin-core-server.isavedobjecttyperegistry.md) - Type registry containing all the registered types. - [elasticsearch.dataClient](./kibana-plugin-core-server.scopedclusterclient.md) - Elasticsearch data client which uses the credentials of the incoming request - [elasticsearch.adminClient](./kibana-plugin-core-server.scopedclusterclient.md) - Elasticsearch admin client which uses the credentials of the incoming request - [uiSettings.client](./kibana-plugin-core-server.iuisettingsclient.md) - uiSettings client which uses the credentials of the incoming request |
+| [RequestHandlerContext](./kibana-plugin-core-server.requesthandlercontext.md) | Plugin specific context passed to a route handler.Provides the following clients and services: - [savedObjects.client](./kibana-plugin-core-server.savedobjectsclient.md) - Saved Objects client which uses the credentials of the incoming request - [savedObjects.typeRegistry](./kibana-plugin-core-server.isavedobjecttyperegistry.md) - Type registry containing all the registered types. - [elasticsearch.legacy.client](./kibana-plugin-core-server.scopedclusterclient.md) - Elasticsearch data client which uses the credentials of the incoming request - [uiSettings.client](./kibana-plugin-core-server.iuisettingsclient.md) - uiSettings client which uses the credentials of the incoming request |
| [RouteConfig](./kibana-plugin-core-server.routeconfig.md) | Route specific configuration. |
| [RouteConfigOptions](./kibana-plugin-core-server.routeconfigoptions.md) | Additional route options. |
| [RouteConfigOptionsBody](./kibana-plugin-core-server.routeconfigoptionsbody.md) | Additional body options for a route |
diff --git a/docs/development/core/server/kibana-plugin-core-server.requesthandlercontext.md b/docs/development/core/server/kibana-plugin-core-server.requesthandlercontext.md
index 6b3fc4c03ec73..99be0676bcda3 100644
--- a/docs/development/core/server/kibana-plugin-core-server.requesthandlercontext.md
+++ b/docs/development/core/server/kibana-plugin-core-server.requesthandlercontext.md
@@ -6,7 +6,7 @@
Plugin specific context passed to a route handler.
-Provides the following clients and services: - [savedObjects.client](./kibana-plugin-core-server.savedobjectsclient.md) - Saved Objects client which uses the credentials of the incoming request - [savedObjects.typeRegistry](./kibana-plugin-core-server.isavedobjecttyperegistry.md) - Type registry containing all the registered types. - [elasticsearch.dataClient](./kibana-plugin-core-server.scopedclusterclient.md) - Elasticsearch data client which uses the credentials of the incoming request - [elasticsearch.adminClient](./kibana-plugin-core-server.scopedclusterclient.md) - Elasticsearch admin client which uses the credentials of the incoming request - [uiSettings.client](./kibana-plugin-core-server.iuisettingsclient.md) - uiSettings client which uses the credentials of the incoming request
+Provides the following clients and services: - [savedObjects.client](./kibana-plugin-core-server.savedobjectsclient.md) - Saved Objects client which uses the credentials of the incoming request - [savedObjects.typeRegistry](./kibana-plugin-core-server.isavedobjecttyperegistry.md) - Type registry containing all the registered types. - [elasticsearch.legacy.client](./kibana-plugin-core-server.scopedclusterclient.md) - Elasticsearch data client which uses the credentials of the incoming request - [uiSettings.client](./kibana-plugin-core-server.iuisettingsclient.md) - uiSettings client which uses the credentials of the incoming request
Signature:
diff --git a/src/core/server/elasticsearch/elasticsearch_service.mock.ts b/src/core/server/elasticsearch/elasticsearch_service.mock.ts
index a7d78b56ff3fd..55e60f5987604 100644
--- a/src/core/server/elasticsearch/elasticsearch_service.mock.ts
+++ b/src/core/server/elasticsearch/elasticsearch_service.mock.ts
@@ -23,12 +23,7 @@ import { IClusterClient, ICustomClusterClient } from './cluster_client';
import { IScopedClusterClient } from './scoped_cluster_client';
import { ElasticsearchConfig } from './elasticsearch_config';
import { ElasticsearchService } from './elasticsearch_service';
-import {
- InternalElasticsearchServiceSetup,
- ElasticsearchServiceSetup,
- ElasticsearchServiceStart,
- ElasticsearchStatusMeta,
-} from './types';
+import { InternalElasticsearchServiceSetup, ElasticsearchStatusMeta } from './types';
import { NodesVersionCompatibility } from './version_check/ensure_es_version';
import { ServiceStatus, ServiceStatusLevels } from '../status';
@@ -51,32 +46,26 @@ function createClusterClientMock() {
return client;
}
-type MockedElasticSearchServiceSetup = jest.Mocked<
- ElasticsearchServiceSetup & {
- adminClient: jest.Mocked;
- dataClient: jest.Mocked;
- }
->;
+interface MockedElasticSearchServiceSetup {
+ legacy: {
+ createClient: jest.Mock;
+ client: jest.Mocked;
+ };
+}
const createSetupContractMock = () => {
const setupContract: MockedElasticSearchServiceSetup = {
- createClient: jest.fn(),
- adminClient: createClusterClientMock(),
- dataClient: createClusterClientMock(),
+ legacy: {
+ createClient: jest.fn(),
+ client: createClusterClientMock(),
+ },
};
- setupContract.createClient.mockReturnValue(createCustomClusterClientMock());
- setupContract.adminClient.asScoped.mockReturnValue(createScopedClusterClientMock());
- setupContract.dataClient.asScoped.mockReturnValue(createScopedClusterClientMock());
+ setupContract.legacy.createClient.mockReturnValue(createCustomClusterClientMock());
+ setupContract.legacy.client.asScoped.mockReturnValue(createScopedClusterClientMock());
return setupContract;
};
-type MockedElasticSearchServiceStart = {
- legacy: jest.Mocked;
-} & {
- legacy: {
- client: jest.Mocked;
- };
-};
+type MockedElasticSearchServiceStart = MockedElasticSearchServiceSetup;
const createStartContractMock = () => {
const startContract: MockedElasticSearchServiceStart = {
@@ -92,13 +81,11 @@ const createStartContractMock = () => {
type MockedInternalElasticSearchServiceSetup = jest.Mocked<
InternalElasticsearchServiceSetup & {
- adminClient: jest.Mocked;
- dataClient: jest.Mocked;
+ legacy: { client: jest.Mocked };
}
>;
const createInternalSetupContractMock = () => {
const setupContract: MockedInternalElasticSearchServiceSetup = {
- ...createSetupContractMock(),
esNodesCompatibility$: new BehaviorSubject({
isCompatible: true,
incompatibleNodes: [],
@@ -111,10 +98,10 @@ const createInternalSetupContractMock = () => {
}),
legacy: {
config$: new BehaviorSubject({} as ElasticsearchConfig),
+ ...createSetupContractMock().legacy,
},
};
- setupContract.adminClient.asScoped.mockReturnValue(createScopedClusterClientMock());
- setupContract.dataClient.asScoped.mockReturnValue(createScopedClusterClientMock());
+ setupContract.legacy.client.asScoped.mockReturnValue(createScopedClusterClientMock());
return setupContract;
};
diff --git a/src/core/server/elasticsearch/elasticsearch_service.test.ts b/src/core/server/elasticsearch/elasticsearch_service.test.ts
index 26144eaaa4afa..e7dab3807733a 100644
--- a/src/core/server/elasticsearch/elasticsearch_service.test.ts
+++ b/src/core/server/elasticsearch/elasticsearch_service.test.ts
@@ -74,25 +74,16 @@ describe('#setup', () => {
);
});
- it('returns data and admin client as a part of the contract', async () => {
- const mockAdminClusterClientInstance = elasticsearchServiceMock.createClusterClient();
- const mockDataClusterClientInstance = elasticsearchServiceMock.createClusterClient();
- MockClusterClient.mockImplementationOnce(
- () => mockAdminClusterClientInstance
- ).mockImplementationOnce(() => mockDataClusterClientInstance);
+ it('returns elasticsearch client as a part of the contract', async () => {
+ const mockClusterClientInstance = elasticsearchServiceMock.createClusterClient();
+ MockClusterClient.mockImplementationOnce(() => mockClusterClientInstance);
const setupContract = await elasticsearchService.setup(deps);
+ const client = setupContract.legacy.client;
- const adminClient = setupContract.adminClient;
- const dataClient = setupContract.dataClient;
-
- expect(mockAdminClusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(0);
- await adminClient.callAsInternalUser('any');
- expect(mockAdminClusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(1);
-
- expect(mockDataClusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(0);
- await dataClient.callAsInternalUser('any');
- expect(mockDataClusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(1);
+ expect(mockClusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(0);
+ await client.callAsInternalUser('any');
+ expect(mockClusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(1);
});
describe('#createClient', () => {
@@ -103,7 +94,7 @@ describe('#setup', () => {
MockClusterClient.mockImplementation(() => mockClusterClientInstance);
const customConfig = { logQueries: true };
- const clusterClient = setupContract.createClient('some-custom-type', customConfig);
+ const clusterClient = setupContract.legacy.createClient('some-custom-type', customConfig);
expect(clusterClient).toBe(mockClusterClientInstance);
@@ -124,7 +115,7 @@ describe('#setup', () => {
logQueries: true,
ssl: { certificate: 'certificate-value' },
};
- setupContract.createClient('some-custom-type', customConfig);
+ setupContract.legacy.createClient('some-custom-type', customConfig);
const config = MockClusterClient.mock.calls[0][0];
expect(config).toMatchInlineSnapshot(`
@@ -149,7 +140,7 @@ describe('#setup', () => {
// reset all mocks called during setup phase
MockClusterClient.mockClear();
- setupContract.createClient('another-type');
+ setupContract.legacy.createClient('another-type');
const config = MockClusterClient.mock.calls[0][0];
expect(config).toMatchInlineSnapshot(`
@@ -195,7 +186,7 @@ describe('#setup', () => {
logQueries: true,
ssl: { certificate: 'certificate-value' },
};
- setupContract.createClient('some-custom-type', customConfig);
+ setupContract.legacy.createClient('some-custom-type', customConfig);
const config = MockClusterClient.mock.calls[0][0];
expect(config).toMatchInlineSnapshot(`
@@ -218,40 +209,34 @@ describe('#setup', () => {
});
it('esNodeVersionCompatibility$ only starts polling when subscribed to', async (done) => {
- const mockAdminClusterClientInstance = elasticsearchServiceMock.createClusterClient();
- const mockDataClusterClientInstance = elasticsearchServiceMock.createClusterClient();
- MockClusterClient.mockImplementationOnce(
- () => mockAdminClusterClientInstance
- ).mockImplementationOnce(() => mockDataClusterClientInstance);
+ const clusterClientInstance = elasticsearchServiceMock.createClusterClient();
+ MockClusterClient.mockImplementationOnce(() => clusterClientInstance);
- mockAdminClusterClientInstance.callAsInternalUser.mockRejectedValue(new Error());
+ clusterClientInstance.callAsInternalUser.mockRejectedValue(new Error());
const setupContract = await elasticsearchService.setup(deps);
await delay(10);
- expect(mockAdminClusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(0);
+ expect(clusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(0);
setupContract.esNodesCompatibility$.subscribe(() => {
- expect(mockAdminClusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(1);
+ expect(clusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(1);
done();
});
});
it('esNodeVersionCompatibility$ stops polling when unsubscribed from', async (done) => {
- const mockAdminClusterClientInstance = elasticsearchServiceMock.createClusterClient();
- const mockDataClusterClientInstance = elasticsearchServiceMock.createClusterClient();
- MockClusterClient.mockImplementationOnce(
- () => mockAdminClusterClientInstance
- ).mockImplementationOnce(() => mockDataClusterClientInstance);
+ const mockClusterClientInstance = elasticsearchServiceMock.createClusterClient();
+ MockClusterClient.mockImplementationOnce(() => mockClusterClientInstance);
- mockAdminClusterClientInstance.callAsInternalUser.mockRejectedValue(new Error());
+ mockClusterClientInstance.callAsInternalUser.mockRejectedValue(new Error());
const setupContract = await elasticsearchService.setup(deps);
- expect(mockAdminClusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(0);
+ expect(mockClusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(0);
const sub = setupContract.esNodesCompatibility$.subscribe(async () => {
sub.unsubscribe();
await delay(100);
- expect(mockAdminClusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(1);
+ expect(mockClusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(1);
done();
});
});
@@ -259,38 +244,31 @@ describe('#setup', () => {
describe('#stop', () => {
it('stops both admin and data clients', async () => {
- const mockAdminClusterClientInstance = { close: jest.fn() };
- const mockDataClusterClientInstance = { close: jest.fn() };
- MockClusterClient.mockImplementationOnce(
- () => mockAdminClusterClientInstance
- ).mockImplementationOnce(() => mockDataClusterClientInstance);
+ const mockClusterClientInstance = { close: jest.fn() };
+ MockClusterClient.mockImplementationOnce(() => mockClusterClientInstance);
await elasticsearchService.setup(deps);
await elasticsearchService.stop();
- expect(mockAdminClusterClientInstance.close).toHaveBeenCalledTimes(1);
- expect(mockDataClusterClientInstance.close).toHaveBeenCalledTimes(1);
+ expect(mockClusterClientInstance.close).toHaveBeenCalledTimes(1);
});
it('stops pollEsNodeVersions even if there are active subscriptions', async (done) => {
expect.assertions(2);
- const mockAdminClusterClientInstance = elasticsearchServiceMock.createCustomClusterClient();
- const mockDataClusterClientInstance = elasticsearchServiceMock.createCustomClusterClient();
+ const mockClusterClientInstance = elasticsearchServiceMock.createCustomClusterClient();
- MockClusterClient.mockImplementationOnce(
- () => mockAdminClusterClientInstance
- ).mockImplementationOnce(() => mockDataClusterClientInstance);
+ MockClusterClient.mockImplementationOnce(() => mockClusterClientInstance);
- mockAdminClusterClientInstance.callAsInternalUser.mockRejectedValue(new Error());
+ mockClusterClientInstance.callAsInternalUser.mockRejectedValue(new Error());
const setupContract = await elasticsearchService.setup(deps);
setupContract.esNodesCompatibility$.subscribe(async () => {
- expect(mockAdminClusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(1);
+ expect(mockClusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(1);
await elasticsearchService.stop();
await delay(100);
- expect(mockAdminClusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(1);
+ expect(mockClusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(1);
done();
});
});
diff --git a/src/core/server/elasticsearch/elasticsearch_service.ts b/src/core/server/elasticsearch/elasticsearch_service.ts
index ab9c9e11fedc8..26001bf83924f 100644
--- a/src/core/server/elasticsearch/elasticsearch_service.ts
+++ b/src/core/server/elasticsearch/elasticsearch_service.ts
@@ -50,8 +50,7 @@ import { calculateStatus$ } from './status';
/** @internal */
interface CoreClusterClients {
config: ElasticsearchConfig;
- adminClient: ClusterClient;
- dataClient: ClusterClient;
+ client: ClusterClient;
}
interface SetupDeps {
@@ -70,7 +69,7 @@ export class ElasticsearchService
type: string,
clientConfig?: Partial
) => ICustomClusterClient;
- private adminClient?: IClusterClient;
+ private client?: IClusterClient;
constructor(private readonly coreContext: CoreContext) {
this.kibanaVersion = coreContext.env.packageInfo.version;
@@ -95,21 +94,19 @@ export class ElasticsearchService
switchMap(
(config) =>
new Observable((subscriber) => {
- this.log.debug(`Creating elasticsearch clients`);
+ this.log.debug('Creating elasticsearch client');
const coreClients = {
config,
- adminClient: this.createClusterClient('admin', config),
- dataClient: this.createClusterClient('data', config, deps.http.getAuthHeaders),
+ client: this.createClusterClient('data', config, deps.http.getAuthHeaders),
};
subscriber.next(coreClients);
return () => {
- this.log.debug(`Closing elasticsearch clients`);
+ this.log.debug('Closing elasticsearch client');
- coreClients.adminClient.close();
- coreClients.dataClient.close();
+ coreClients.client.close();
};
})
),
@@ -120,54 +117,27 @@ export class ElasticsearchService
const config = await this.config$.pipe(first()).toPromise();
- const adminClient$ = clients$.pipe(map((clients) => clients.adminClient));
- const dataClient$ = clients$.pipe(map((clients) => clients.dataClient));
+ const client$ = clients$.pipe(map((clients) => clients.client));
- this.adminClient = {
+ const client = {
async callAsInternalUser(
endpoint: string,
clientParams: Record = {},
options?: CallAPIOptions
) {
- const client = await adminClient$.pipe(take(1)).toPromise();
- return await client.callAsInternalUser(endpoint, clientParams, options);
- },
- asScoped: (request: ScopeableRequest) => {
- return {
- callAsInternalUser: this.adminClient!.callAsInternalUser,
- async callAsCurrentUser(
- endpoint: string,
- clientParams: Record = {},
- options?: CallAPIOptions
- ) {
- const client = await adminClient$.pipe(take(1)).toPromise();
- return await client
- .asScoped(request)
- .callAsCurrentUser(endpoint, clientParams, options);
- },
- };
- },
- };
-
- const dataClient = {
- async callAsInternalUser(
- endpoint: string,
- clientParams: Record = {},
- options?: CallAPIOptions
- ) {
- const client = await dataClient$.pipe(take(1)).toPromise();
- return await client.callAsInternalUser(endpoint, clientParams, options);
+ const _client = await client$.pipe(take(1)).toPromise();
+ return await _client.callAsInternalUser(endpoint, clientParams, options);
},
asScoped(request: ScopeableRequest) {
return {
- callAsInternalUser: dataClient.callAsInternalUser,
+ callAsInternalUser: client.callAsInternalUser,
async callAsCurrentUser(
endpoint: string,
clientParams: Record = {},
options?: CallAPIOptions
) {
- const client = await dataClient$.pipe(take(1)).toPromise();
- return await client
+ const _client = await client$.pipe(take(1)).toPromise();
+ return await _client
.asScoped(request)
.callAsCurrentUser(endpoint, clientParams, options);
},
@@ -175,8 +145,10 @@ export class ElasticsearchService
},
};
+ this.client = client;
+
const esNodesCompatibility$ = pollEsNodesVersion({
- callWithInternalUser: this.adminClient.callAsInternalUser,
+ callWithInternalUser: client.callAsInternalUser,
log: this.log,
ignoreVersionMismatch: config.ignoreVersionMismatch,
esVersionCheckInterval: config.healthCheckDelay.asMilliseconds(),
@@ -189,22 +161,22 @@ export class ElasticsearchService
};
return {
- legacy: { config$: clients$.pipe(map((clients) => clients.config)) },
+ legacy: {
+ config$: clients$.pipe(map((clients) => clients.config)),
+ client,
+ createClient: this.createClient,
+ },
esNodesCompatibility$,
- adminClient: this.adminClient,
- dataClient,
- createClient: this.createClient,
status$: calculateStatus$(esNodesCompatibility$),
};
}
-
public async start() {
- if (typeof this.adminClient === 'undefined' || typeof this.createClient === 'undefined') {
+ if (typeof this.client === 'undefined' || typeof this.createClient === 'undefined') {
throw new Error('ElasticsearchService needs to be setup before calling start');
} else {
return {
legacy: {
- client: this.adminClient,
+ client: this.client,
createClient: this.createClient,
},
};
diff --git a/src/core/server/elasticsearch/types.ts b/src/core/server/elasticsearch/types.ts
index 3d38935e9fbf0..6fef08fc298ff 100644
--- a/src/core/server/elasticsearch/types.ts
+++ b/src/core/server/elasticsearch/types.ts
@@ -30,62 +30,60 @@ import { ServiceStatus } from '../status';
export interface ElasticsearchServiceSetup {
/**
* @deprecated
- * Use {@link ElasticsearchServiceStart.legacy | ElasticsearchServiceStart.legacy.createClient} instead.
+ * Use {@link ElasticsearchServiceStart.legacy} instead.
*
- * Create application specific Elasticsearch cluster API client with customized config. See {@link IClusterClient}.
- *
- * @param type Unique identifier of the client
- * @param clientConfig A config consists of Elasticsearch JS client options and
- * valid sub-set of Elasticsearch service config.
- * We fill all the missing properties in the `clientConfig` using the default
- * Elasticsearch config so that we don't depend on default values set and
- * controlled by underlying Elasticsearch JS client.
- * We don't run validation against the passed config and expect it to be valid.
- *
- * @example
- * ```js
- * const client = elasticsearch.createCluster('my-app-name', config);
- * const data = await client.callAsInternalUser();
- * ```
- */
- readonly createClient: (
- type: string,
- clientConfig?: Partial
- ) => ICustomClusterClient;
-
- /**
- * @deprecated
- * Use {@link ElasticsearchServiceStart.legacy | ElasticsearchServiceStart.legacy.client} instead.
- *
- * A client for the `admin` cluster. All Elasticsearch config value changes are processed under the hood.
- * See {@link IClusterClient}.
- *
- * @example
- * ```js
- * const client = core.elasticsearch.adminClient;
- * ```
- */
- readonly adminClient: IClusterClient;
+ * */
+ legacy: {
+ /**
+ * @deprecated
+ * Use {@link ElasticsearchServiceStart.legacy | ElasticsearchServiceStart.legacy.createClient} instead.
+ *
+ * Create application specific Elasticsearch cluster API client with customized config. See {@link IClusterClient}.
+ *
+ * @param type Unique identifier of the client
+ * @param clientConfig A config consists of Elasticsearch JS client options and
+ * valid sub-set of Elasticsearch service config.
+ * We fill all the missing properties in the `clientConfig` using the default
+ * Elasticsearch config so that we don't depend on default values set and
+ * controlled by underlying Elasticsearch JS client.
+ * We don't run validation against the passed config and expect it to be valid.
+ *
+ * @example
+ * ```js
+ * const client = elasticsearch.createCluster('my-app-name', config);
+ * const data = await client.callAsInternalUser();
+ * ```
+ */
+ readonly createClient: (
+ type: string,
+ clientConfig?: Partial
+ ) => ICustomClusterClient;
- /**
- * @deprecated
- * Use {@link ElasticsearchServiceStart.legacy | ElasticsearchServiceStart.legacy.client} instead.
- *
- * A client for the `data` cluster. All Elasticsearch config value changes are processed under the hood.
- * See {@link IClusterClient}.
- *
- * @example
- * ```js
- * const client = core.elasticsearch.dataClient;
- * ```
- */
- readonly dataClient: IClusterClient;
+ /**
+ * @deprecated
+ * Use {@link ElasticsearchServiceStart.legacy | ElasticsearchServiceStart.legacy.client} instead.
+ *
+ * All Elasticsearch config value changes are processed under the hood.
+ * See {@link IClusterClient}.
+ *
+ * @example
+ * ```js
+ * const client = core.elasticsearch.legacy.client;
+ * ```
+ */
+ readonly client: IClusterClient;
+ };
}
/**
* @public
*/
export interface ElasticsearchServiceStart {
+ /**
+ * @deprecated
+ * Provided for the backward compatibility.
+ * Switch to the new elasticsearch client as soon as https://github.com/elastic/kibana/issues/35508 done.
+ * */
legacy: {
/**
* Create application specific Elasticsearch cluster API client with customized config. See {@link IClusterClient}.
@@ -123,9 +121,9 @@ export interface ElasticsearchServiceStart {
}
/** @internal */
-export interface InternalElasticsearchServiceSetup extends ElasticsearchServiceSetup {
+export interface InternalElasticsearchServiceSetup {
// Required for the BWC with the legacy Kibana only.
- readonly legacy: {
+ readonly legacy: ElasticsearchServiceSetup['legacy'] & {
readonly config$: Observable;
};
esNodesCompatibility$: Observable;
diff --git a/src/core/server/http/integration_tests/core_services.test.ts b/src/core/server/http/integration_tests/core_services.test.ts
index 9583cca177619..ba39effa77016 100644
--- a/src/core/server/http/integration_tests/core_services.test.ts
+++ b/src/core/server/http/integration_tests/core_services.test.ts
@@ -383,8 +383,8 @@ describe('http service', () => {
// client contains authHeaders for BWC with legacy platform.
const [client] = clusterClientMock.mock.calls;
- const [, , dataClientHeaders] = client;
- expect(dataClientHeaders).toEqual(authHeaders);
+ const [, , clientHeaders] = client;
+ expect(clientHeaders).toEqual(authHeaders);
});
it('passes request authorization header to Elasticsearch if registerAuth was not set', async () => {
@@ -407,8 +407,8 @@ describe('http service', () => {
.expect(200);
const [client] = clusterClientMock.mock.calls;
- const [, , dataClientHeaders] = client;
- expect(dataClientHeaders).toEqual({ authorization: authorizationHeader });
+ const [, , clientHeaders] = client;
+ expect(clientHeaders).toEqual({ authorization: authorizationHeader });
});
});
});
diff --git a/src/core/server/index.ts b/src/core/server/index.ts
index 96bb0c9a006b0..658c24f835020 100644
--- a/src/core/server/index.ts
+++ b/src/core/server/index.ts
@@ -338,10 +338,8 @@ export {
* which uses the credentials of the incoming request
* - {@link ISavedObjectTypeRegistry | savedObjects.typeRegistry} - Type registry containing
* all the registered types.
- * - {@link ScopedClusterClient | elasticsearch.dataClient} - Elasticsearch
+ * - {@link ScopedClusterClient | elasticsearch.legacy.client} - Elasticsearch
* data client which uses the credentials of the incoming request
- * - {@link ScopedClusterClient | elasticsearch.adminClient} - Elasticsearch
- * admin client which uses the credentials of the incoming request
* - {@link IUiSettingsClient | uiSettings.client} - uiSettings client
* which uses the credentials of the incoming request
*
diff --git a/src/core/server/legacy/legacy_service.ts b/src/core/server/legacy/legacy_service.ts
index cadbecb2e9a3f..2ced8b4762406 100644
--- a/src/core/server/legacy/legacy_service.ts
+++ b/src/core/server/legacy/legacy_service.ts
@@ -279,9 +279,10 @@ export class LegacyService implements CoreService {
capabilities: setupDeps.core.capabilities,
context: setupDeps.core.context,
elasticsearch: {
- adminClient: setupDeps.core.elasticsearch.adminClient,
- dataClient: setupDeps.core.elasticsearch.dataClient,
- createClient: setupDeps.core.elasticsearch.createClient,
+ legacy: {
+ client: setupDeps.core.elasticsearch.legacy.client,
+ createClient: setupDeps.core.elasticsearch.legacy.createClient,
+ },
},
http: {
createCookieSessionStorageFactory: setupDeps.core.http.createCookieSessionStorageFactory,
diff --git a/src/core/server/mocks.ts b/src/core/server/mocks.ts
index f0fd471abb9be..b6e9ffef6f3f1 100644
--- a/src/core/server/mocks.ts
+++ b/src/core/server/mocks.ts
@@ -101,6 +101,7 @@ function pluginInitializerContextMock(config: T = {} as T) {
}
type CoreSetupMockType = MockedKeys & {
+ elasticsearch: ReturnType;
getStartServices: jest.MockedFunction>;
};
diff --git a/src/core/server/plugins/plugin_context.ts b/src/core/server/plugins/plugin_context.ts
index ab18a9cbbc062..7afb607192cae 100644
--- a/src/core/server/plugins/plugin_context.ts
+++ b/src/core/server/plugins/plugin_context.ts
@@ -147,9 +147,7 @@ export function createPluginSetupContext(
createContextContainer: deps.context.createContextContainer,
},
elasticsearch: {
- adminClient: deps.elasticsearch.adminClient,
- dataClient: deps.elasticsearch.dataClient,
- createClient: deps.elasticsearch.createClient,
+ legacy: deps.elasticsearch.legacy,
},
http: {
createCookieSessionStorageFactory: deps.http.createCookieSessionStorageFactory,
diff --git a/src/core/server/saved_objects/saved_objects_service.test.ts b/src/core/server/saved_objects/saved_objects_service.test.ts
index bff392e8761eb..9fba2728003d2 100644
--- a/src/core/server/saved_objects/saved_objects_service.test.ts
+++ b/src/core/server/saved_objects/saved_objects_service.test.ts
@@ -67,6 +67,13 @@ describe('SavedObjectsService', () => {
};
};
+ const createStartDeps = (pluginsInitialized: boolean = true) => {
+ return {
+ pluginsInitialized,
+ elasticsearch: elasticsearchServiceMock.createStart(),
+ };
+ };
+
afterEach(() => {
jest.clearAllMocks();
});
@@ -83,7 +90,7 @@ describe('SavedObjectsService', () => {
setup.setClientFactoryProvider(factoryProvider);
- await soService.start({});
+ await soService.start(createStartDeps());
expect(clientProviderInstanceMock.setClientFactory).toHaveBeenCalledWith(factory);
});
@@ -117,7 +124,7 @@ describe('SavedObjectsService', () => {
setup.addClientWrapper(1, 'A', wrapperA);
setup.addClientWrapper(2, 'B', wrapperB);
- await soService.start({});
+ await soService.start(createStartDeps());
expect(clientProviderInstanceMock.addClientWrapperFactory).toHaveBeenCalledTimes(2);
expect(clientProviderInstanceMock.addClientWrapperFactory).toHaveBeenCalledWith(
@@ -159,9 +166,10 @@ describe('SavedObjectsService', () => {
const soService = new SavedObjectsService(coreContext);
const coreSetup = createSetupDeps();
+ const coreStart = createStartDeps();
let i = 0;
- coreSetup.elasticsearch.adminClient.callAsInternalUser = jest
+ coreStart.elasticsearch.legacy.client.callAsInternalUser = jest
.fn()
.mockImplementation(() =>
i++ <= 2
@@ -170,7 +178,7 @@ describe('SavedObjectsService', () => {
);
await soService.setup(coreSetup);
- await soService.start({}, 1);
+ await soService.start(coreStart, 1);
return expect(KibanaMigratorMock.mock.calls[0][0].callCluster()).resolves.toMatch('success');
});
@@ -180,7 +188,7 @@ describe('SavedObjectsService', () => {
const soService = new SavedObjectsService(coreContext);
await soService.setup(createSetupDeps());
- await soService.start({ pluginsInitialized: false });
+ await soService.start(createStartDeps(false));
expect(migratorInstanceMock.runMigrations).not.toHaveBeenCalled();
});
@@ -188,7 +196,7 @@ describe('SavedObjectsService', () => {
const coreContext = createCoreContext({ skipMigration: true });
const soService = new SavedObjectsService(coreContext);
await soService.setup(createSetupDeps());
- await soService.start({});
+ await soService.start(createStartDeps());
expect(migratorInstanceMock.runMigrations).not.toHaveBeenCalled();
});
@@ -206,7 +214,7 @@ describe('SavedObjectsService', () => {
kibanaVersion: '8.0.0',
});
await soService.setup(setupDeps);
- soService.start({});
+ soService.start(createStartDeps());
expect(migratorInstanceMock.runMigrations).toHaveBeenCalledTimes(0);
((setupDeps.elasticsearch.esNodesCompatibility$ as any) as BehaviorSubject<
NodesVersionCompatibility
@@ -228,7 +236,7 @@ describe('SavedObjectsService', () => {
await soService.setup(createSetupDeps());
expect(migratorInstanceMock.runMigrations).toHaveBeenCalledTimes(0);
- const startContract = await soService.start({});
+ const startContract = await soService.start(createStartDeps());
expect(startContract.migrator).toBe(migratorInstanceMock);
expect(migratorInstanceMock.runMigrations).toHaveBeenCalledTimes(1);
});
@@ -237,7 +245,7 @@ describe('SavedObjectsService', () => {
const coreContext = createCoreContext({ skipMigration: false });
const soService = new SavedObjectsService(coreContext);
const setup = await soService.setup(createSetupDeps());
- await soService.start({});
+ await soService.start(createStartDeps());
expect(() => {
setup.setClientFactoryProvider(jest.fn());
@@ -268,7 +276,7 @@ describe('SavedObjectsService', () => {
const coreContext = createCoreContext({ skipMigration: false });
const soService = new SavedObjectsService(coreContext);
await soService.setup(createSetupDeps());
- const { getTypeRegistry } = await soService.start({});
+ const { getTypeRegistry } = await soService.start(createStartDeps());
expect(getTypeRegistry()).toBe(typeRegistryInstanceMock);
});
@@ -280,18 +288,19 @@ describe('SavedObjectsService', () => {
const soService = new SavedObjectsService(coreContext);
const coreSetup = createSetupDeps();
await soService.setup(coreSetup);
- const { createScopedRepository } = await soService.start({});
+ const coreStart = createStartDeps();
+ const { createScopedRepository } = await soService.start(coreStart);
const req = {} as KibanaRequest;
createScopedRepository(req);
- expect(coreSetup.elasticsearch.adminClient.asScoped).toHaveBeenCalledWith(req);
+ expect(coreStart.elasticsearch.legacy.client.asScoped).toHaveBeenCalledWith(req);
const [
{
value: { callAsCurrentUser },
},
- ] = coreSetup.elasticsearch.adminClient.asScoped.mock.results;
+ ] = coreStart.elasticsearch.legacy.client.asScoped.mock.results;
const [
[, , , callCluster, includedHiddenTypes],
@@ -306,7 +315,8 @@ describe('SavedObjectsService', () => {
const soService = new SavedObjectsService(coreContext);
const coreSetup = createSetupDeps();
await soService.setup(coreSetup);
- const { createScopedRepository } = await soService.start({});
+ const coreStart = createStartDeps();
+ const { createScopedRepository } = await soService.start(coreStart);
const req = {} as KibanaRequest;
createScopedRepository(req, ['someHiddenType']);
@@ -325,7 +335,8 @@ describe('SavedObjectsService', () => {
const soService = new SavedObjectsService(coreContext);
const coreSetup = createSetupDeps();
await soService.setup(coreSetup);
- const { createInternalRepository } = await soService.start({});
+ const coreStart = createStartDeps();
+ const { createInternalRepository } = await soService.start(coreStart);
createInternalRepository();
@@ -333,8 +344,8 @@ describe('SavedObjectsService', () => {
[, , , callCluster, includedHiddenTypes],
] = (SavedObjectsRepository.createRepository as jest.Mocked).mock.calls;
- expect(coreSetup.elasticsearch.adminClient.callAsInternalUser).toBe(callCluster);
- expect(callCluster).toBe(coreSetup.elasticsearch.adminClient.callAsInternalUser);
+ expect(coreStart.elasticsearch.legacy.client.callAsInternalUser).toBe(callCluster);
+ expect(callCluster).toBe(coreStart.elasticsearch.legacy.client.callAsInternalUser);
expect(includedHiddenTypes).toEqual([]);
});
@@ -343,7 +354,7 @@ describe('SavedObjectsService', () => {
const soService = new SavedObjectsService(coreContext);
const coreSetup = createSetupDeps();
await soService.setup(coreSetup);
- const { createInternalRepository } = await soService.start({});
+ const { createInternalRepository } = await soService.start(createStartDeps());
createInternalRepository(['someHiddenType']);
diff --git a/src/core/server/saved_objects/saved_objects_service.ts b/src/core/server/saved_objects/saved_objects_service.ts
index a822a92acb91a..48b1e12fc187e 100644
--- a/src/core/server/saved_objects/saved_objects_service.ts
+++ b/src/core/server/saved_objects/saved_objects_service.ts
@@ -29,7 +29,12 @@ import {
import { KibanaMigrator, IKibanaMigrator } from './migrations';
import { CoreContext } from '../core_context';
import { LegacyServiceDiscoverPlugins } from '../legacy';
-import { InternalElasticsearchServiceSetup, APICaller } from '../elasticsearch';
+import {
+ APICaller,
+ ElasticsearchServiceStart,
+ IClusterClient,
+ InternalElasticsearchServiceSetup,
+} from '../elasticsearch';
import { KibanaConfigType } from '../kibana_config';
import { migrationsRetryCallCluster } from '../elasticsearch/retry_call_cluster';
import {
@@ -278,8 +283,8 @@ interface WrappedClientFactoryWrapper {
}
/** @internal */
-// eslint-disable-next-line @typescript-eslint/no-empty-interface
export interface SavedObjectsStartDeps {
+ elasticsearch: ElasticsearchServiceStart;
pluginsInitialized?: boolean;
}
@@ -365,7 +370,7 @@ export class SavedObjectsService
}
public async start(
- { pluginsInitialized = true }: SavedObjectsStartDeps,
+ { elasticsearch, pluginsInitialized = true }: SavedObjectsStartDeps,
migrationsRetryDelay?: number
): Promise {
if (!this.setupDeps || !this.config) {
@@ -378,8 +383,14 @@ export class SavedObjectsService
.atPath('kibana')
.pipe(first())
.toPromise();
- const adminClient = this.setupDeps!.elasticsearch.adminClient;
- const migrator = this.createMigrator(kibanaConfig, this.config.migration, migrationsRetryDelay);
+ const client = elasticsearch.legacy.client;
+
+ const migrator = this.createMigrator(
+ kibanaConfig,
+ this.config.migration,
+ client,
+ migrationsRetryDelay
+ );
this.migrator$.next(migrator);
@@ -435,9 +446,9 @@ export class SavedObjectsService
const repositoryFactory: SavedObjectsRepositoryFactory = {
createInternalRepository: (includedHiddenTypes?: string[]) =>
- createRepository(adminClient.callAsInternalUser, includedHiddenTypes),
+ createRepository(client.callAsInternalUser, includedHiddenTypes),
createScopedRepository: (req: KibanaRequest, includedHiddenTypes?: string[]) =>
- createRepository(adminClient.asScoped(req).callAsCurrentUser, includedHiddenTypes),
+ createRepository(client.asScoped(req).callAsCurrentUser, includedHiddenTypes),
};
const clientProvider = new SavedObjectsClientProvider({
@@ -473,10 +484,9 @@ export class SavedObjectsService
private createMigrator(
kibanaConfig: KibanaConfigType,
savedObjectsConfig: SavedObjectsMigrationConfigType,
+ esClient: IClusterClient,
migrationsRetryDelay?: number
): KibanaMigrator {
- const adminClient = this.setupDeps!.elasticsearch.adminClient;
-
return new KibanaMigrator({
typeRegistry: this.typeRegistry,
logger: this.logger,
@@ -485,7 +495,7 @@ export class SavedObjectsService
savedObjectValidations: this.validations,
kibanaConfig,
callCluster: migrationsRetryCallCluster(
- adminClient.callAsInternalUser,
+ esClient.callAsInternalUser,
this.logger,
migrationsRetryDelay
),
diff --git a/src/core/server/server.api.md b/src/core/server/server.api.md
index 858458bfe40de..eef071e9488bf 100644
--- a/src/core/server/server.api.md
+++ b/src/core/server/server.api.md
@@ -823,16 +823,15 @@ export class ElasticsearchErrorHelpers {
// @public (undocumented)
export interface ElasticsearchServiceSetup {
// @deprecated (undocumented)
- readonly adminClient: IClusterClient;
- // @deprecated (undocumented)
- readonly createClient: (type: string, clientConfig?: Partial) => ICustomClusterClient;
- // @deprecated (undocumented)
- readonly dataClient: IClusterClient;
+ legacy: {
+ readonly createClient: (type: string, clientConfig?: Partial) => ICustomClusterClient;
+ readonly client: IClusterClient;
+ };
}
// @public (undocumented)
export interface ElasticsearchServiceStart {
- // (undocumented)
+ // @deprecated (undocumented)
legacy: {
readonly createClient: (type: string, clientConfig?: Partial) => ICustomClusterClient;
readonly client: IClusterClient;
diff --git a/src/core/server/server.ts b/src/core/server/server.ts
index b33528e2a3931..ef12379c199e8 100644
--- a/src/core/server/server.ts
+++ b/src/core/server/server.ts
@@ -195,12 +195,13 @@ export class Server {
public async start() {
this.log.debug('starting server');
+ const elasticsearchStart = await this.elasticsearch.start();
const savedObjectsStart = await this.savedObjects.start({
+ elasticsearch: elasticsearchStart,
pluginsInitialized: this.pluginsInitialized,
});
const capabilitiesStart = this.capabilities.start();
const uiSettingsStart = await this.uiSettings.start();
- const elasticsearchStart = await this.elasticsearch.start();
this.coreStart = {
capabilities: capabilitiesStart,
diff --git a/src/legacy/core_plugins/elasticsearch/index.js b/src/legacy/core_plugins/elasticsearch/index.js
index a7d6810ac6158..eb502e97fb77c 100644
--- a/src/legacy/core_plugins/elasticsearch/index.js
+++ b/src/legacy/core_plugins/elasticsearch/index.js
@@ -34,9 +34,9 @@ export default function (kibana) {
// All methods that ES plugin exposes are synchronous so we should get the first
// value from all observables here to be able to synchronously return and create
// cluster clients afterwards.
- const { adminClient, dataClient } = server.newPlatform.setup.core.elasticsearch;
- const adminCluster = new Cluster(adminClient);
- const dataCluster = new Cluster(dataClient);
+ const { client } = server.newPlatform.setup.core.elasticsearch.legacy;
+ const adminCluster = new Cluster(client);
+ const dataCluster = new Cluster(client);
const esConfig = await server.newPlatform.__internals.elasticsearch.legacy.config$
.pipe(first())
@@ -72,7 +72,7 @@ export default function (kibana) {
}
const cluster = new Cluster(
- server.newPlatform.setup.core.elasticsearch.createClient(name, clientConfig)
+ server.newPlatform.setup.core.elasticsearch.legacy.createClient(name, clientConfig)
);
clusters.set(name, cluster);
diff --git a/src/legacy/server/saved_objects/saved_objects_mixin.test.js b/src/legacy/server/saved_objects/saved_objects_mixin.test.js
index 5b40cc4b5aa35..63e4a632ab5e0 100644
--- a/src/legacy/server/saved_objects/saved_objects_mixin.test.js
+++ b/src/legacy/server/saved_objects/saved_objects_mixin.test.js
@@ -129,13 +129,6 @@ describe('Saved Objects Mixin', () => {
waitUntilReady: jest.fn(),
},
},
- newPlatform: {
- __internals: {
- elasticsearch: {
- adminClient: { callAsInternalUser: mockCallCluster },
- },
- },
- },
};
const coreStart = coreMock.createStart();
diff --git a/src/plugins/telemetry/server/plugin.ts b/src/plugins/telemetry/server/plugin.ts
index 8ae63682413e5..e555c40d25592 100644
--- a/src/plugins/telemetry/server/plugin.ts
+++ b/src/plugins/telemetry/server/plugin.ts
@@ -82,7 +82,7 @@ export class TelemetryPlugin implements Plugin {
const config$ = this.config$;
const isDev = this.isDev;
- registerCollection(telemetryCollectionManager, elasticsearch.dataClient);
+ registerCollection(telemetryCollectionManager, elasticsearch.legacy.client);
const router = http.createRouter();
registerRoutes({
diff --git a/x-pack/legacy/plugins/reporting/export_types/csv/server/execute_job.test.ts b/x-pack/legacy/plugins/reporting/export_types/csv/server/execute_job.test.ts
index f6ae8edb9d5cb..dd7b37d989acb 100644
--- a/x-pack/legacy/plugins/reporting/export_types/csv/server/execute_job.test.ts
+++ b/x-pack/legacy/plugins/reporting/export_types/csv/server/execute_job.test.ts
@@ -50,8 +50,10 @@ describe('CSV Execute Job', function () {
let cancellationToken: any;
const mockElasticsearch = {
- dataClient: {
- asScoped: () => clusterStub,
+ legacy: {
+ client: {
+ asScoped: () => clusterStub,
+ },
},
};
const mockUiSettingsClient = {
diff --git a/x-pack/legacy/plugins/reporting/export_types/csv/server/execute_job.ts b/x-pack/legacy/plugins/reporting/export_types/csv/server/execute_job.ts
index 7d95c45d5d233..a6b2b0d0561d0 100644
--- a/x-pack/legacy/plugins/reporting/export_types/csv/server/execute_job.ts
+++ b/x-pack/legacy/plugins/reporting/export_types/csv/server/execute_job.ts
@@ -81,7 +81,7 @@ export const executeJobFactory: ExecuteJobFactory
callAsCurrentUser(endpoint, clientParams, options);
diff --git a/x-pack/legacy/plugins/reporting/export_types/csv_from_savedobject/server/lib/generate_csv_search.ts b/x-pack/legacy/plugins/reporting/export_types/csv_from_savedobject/server/lib/generate_csv_search.ts
index 51e0ddad53355..848623ede5b2f 100644
--- a/x-pack/legacy/plugins/reporting/export_types/csv_from_savedobject/server/lib/generate_csv_search.ts
+++ b/x-pack/legacy/plugins/reporting/export_types/csv_from_savedobject/server/lib/generate_csv_search.ts
@@ -149,7 +149,7 @@ export async function generateCsvSearch(
const config = reporting.getConfig();
const elasticsearch = await reporting.getElasticsearchService();
- const { callAsCurrentUser } = elasticsearch.dataClient.asScoped(req);
+ const { callAsCurrentUser } = elasticsearch.legacy.client.asScoped(req);
const callCluster = (...params: [string, object]) => callAsCurrentUser(...params);
const uiSettings = await getUiSettings(uiConfig);
diff --git a/x-pack/legacy/plugins/reporting/export_types/png/server/execute_job/index.test.ts b/x-pack/legacy/plugins/reporting/export_types/png/server/execute_job/index.test.ts
index 72695545e3b5f..7e816e11f1953 100644
--- a/x-pack/legacy/plugins/reporting/export_types/png/server/execute_job/index.test.ts
+++ b/x-pack/legacy/plugins/reporting/export_types/png/server/execute_job/index.test.ts
@@ -59,8 +59,10 @@ beforeEach(async () => {
mockReporting = await createMockReportingCore(mockReportingConfig);
const mockElasticsearch = {
- dataClient: {
- asScoped: () => ({ callAsCurrentUser: jest.fn() }),
+ legacy: {
+ client: {
+ asScoped: () => ({ callAsCurrentUser: jest.fn() }),
+ },
},
};
const mockGetElasticsearch = jest.fn();
diff --git a/x-pack/legacy/plugins/reporting/export_types/printable_pdf/server/execute_job/index.test.ts b/x-pack/legacy/plugins/reporting/export_types/printable_pdf/server/execute_job/index.test.ts
index b081521fef8dd..fdf9c24730638 100644
--- a/x-pack/legacy/plugins/reporting/export_types/printable_pdf/server/execute_job/index.test.ts
+++ b/x-pack/legacy/plugins/reporting/export_types/printable_pdf/server/execute_job/index.test.ts
@@ -57,8 +57,10 @@ beforeEach(async () => {
mockReporting = await createMockReportingCore(mockReportingConfig);
const mockElasticsearch = {
- dataClient: {
- asScoped: () => ({ callAsCurrentUser: jest.fn() }),
+ legacy: {
+ client: {
+ asScoped: () => ({ callAsCurrentUser: jest.fn() }),
+ },
},
};
const mockGetElasticsearch = jest.fn();
diff --git a/x-pack/legacy/plugins/reporting/server/lib/create_queue.ts b/x-pack/legacy/plugins/reporting/server/lib/create_queue.ts
index 2cac4bd654487..d993a17c0b314 100644
--- a/x-pack/legacy/plugins/reporting/server/lib/create_queue.ts
+++ b/x-pack/legacy/plugins/reporting/server/lib/create_queue.ts
@@ -52,7 +52,7 @@ export async function createQueueFactory(
interval: queueIndexInterval,
timeout: queueTimeout,
dateSeparator: '.',
- client: elasticsearch.dataClient,
+ client: elasticsearch.legacy.client,
logger: createTaggedLogger(logger, ['esqueue', 'queue-worker']),
};
diff --git a/x-pack/legacy/plugins/reporting/server/lib/jobs_query.ts b/x-pack/legacy/plugins/reporting/server/lib/jobs_query.ts
index 5153fd0f4e5b8..06c4a7714099e 100644
--- a/x-pack/legacy/plugins/reporting/server/lib/jobs_query.ts
+++ b/x-pack/legacy/plugins/reporting/server/lib/jobs_query.ts
@@ -47,7 +47,7 @@ export function jobsQueryFactory(
elasticsearch: ElasticsearchServiceSetup
) {
const index = config.get('index');
- const { callAsInternalUser } = elasticsearch.adminClient;
+ const { callAsInternalUser } = elasticsearch.legacy.client;
function execQuery(queryType: string, body: QueryBody) {
const defaultBody: Record = {
diff --git a/x-pack/legacy/plugins/reporting/server/lib/validate/validate_max_content_length.test.js b/x-pack/legacy/plugins/reporting/server/lib/validate/validate_max_content_length.test.js
index 2551fd48b91f3..f358021560cff 100644
--- a/x-pack/legacy/plugins/reporting/server/lib/validate/validate_max_content_length.test.js
+++ b/x-pack/legacy/plugins/reporting/server/lib/validate/validate_max_content_length.test.js
@@ -12,14 +12,16 @@ const ONE_HUNDRED_MEGABYTES = 104857600;
describe('Reporting: Validate Max Content Length', () => {
const elasticsearch = {
- dataClient: {
- callAsInternalUser: () => ({
- defaults: {
- http: {
- max_content_length: '100mb',
+ legacy: {
+ client: {
+ callAsInternalUser: () => ({
+ defaults: {
+ http: {
+ max_content_length: '100mb',
+ },
},
- },
- }),
+ }),
+ },
},
};
@@ -34,14 +36,16 @@ describe('Reporting: Validate Max Content Length', () => {
it('should log warning messages when reporting has a higher max-size than elasticsearch', async () => {
const config = { get: sinon.stub().returns(FIVE_HUNDRED_MEGABYTES) };
const elasticsearch = {
- dataClient: {
- callAsInternalUser: () => ({
- defaults: {
- http: {
- max_content_length: '100mb',
+ legacy: {
+ client: {
+ callAsInternalUser: () => ({
+ defaults: {
+ http: {
+ max_content_length: '100mb',
+ },
},
- },
- }),
+ }),
+ },
},
};
diff --git a/x-pack/legacy/plugins/reporting/server/lib/validate/validate_max_content_length.ts b/x-pack/legacy/plugins/reporting/server/lib/validate/validate_max_content_length.ts
index f6acf72612e01..6d34937d9bd75 100644
--- a/x-pack/legacy/plugins/reporting/server/lib/validate/validate_max_content_length.ts
+++ b/x-pack/legacy/plugins/reporting/server/lib/validate/validate_max_content_length.ts
@@ -18,7 +18,7 @@ export async function validateMaxContentLength(
elasticsearch: ElasticsearchServiceSetup,
logger: LevelLogger
) {
- const { callAsInternalUser } = elasticsearch.dataClient;
+ const { callAsInternalUser } = elasticsearch.legacy.client;
const elasticClusterSettingsResponse = await callAsInternalUser('cluster.getSettings', {
includeDefaults: true,
diff --git a/x-pack/legacy/plugins/reporting/server/routes/generation.test.ts b/x-pack/legacy/plugins/reporting/server/routes/generation.test.ts
index fdde3253cf28e..87ac71e250d0c 100644
--- a/x-pack/legacy/plugins/reporting/server/routes/generation.test.ts
+++ b/x-pack/legacy/plugins/reporting/server/routes/generation.test.ts
@@ -51,7 +51,9 @@ describe('POST /api/reporting/generate', () => {
({ server, httpSetup } = await setupServer());
const mockDeps = ({
elasticsearch: {
- adminClient: { callAsInternalUser: jest.fn() },
+ legacy: {
+ client: { callAsInternalUser: jest.fn() },
+ },
},
security: {
authc: {
diff --git a/x-pack/legacy/plugins/reporting/server/routes/jobs.test.ts b/x-pack/legacy/plugins/reporting/server/routes/jobs.test.ts
index 73f3c660141c1..0911f48f82ca4 100644
--- a/x-pack/legacy/plugins/reporting/server/routes/jobs.test.ts
+++ b/x-pack/legacy/plugins/reporting/server/routes/jobs.test.ts
@@ -43,7 +43,7 @@ describe('GET /api/reporting/jobs/download', () => {
({ server, httpSetup } = await setupServer());
core = await createMockReportingCore(config, ({
elasticsearch: {
- adminClient: { callAsInternalUser: jest.fn() },
+ legacy: { client: { callAsInternalUser: jest.fn() } },
},
security: {
authc: {
@@ -89,7 +89,7 @@ describe('GET /api/reporting/jobs/download', () => {
it('fails on malformed download IDs', async () => {
// @ts-ignore
- core.pluginSetupDeps.elasticsearch.adminClient = {
+ core.pluginSetupDeps.elasticsearch.legacy.client = {
callAsInternalUser: jest.fn().mockReturnValue(Promise.resolve(getHits())),
};
registerJobInfoRoutes(core);
@@ -158,7 +158,7 @@ describe('GET /api/reporting/jobs/download', () => {
it('returns 404 if job not found', async () => {
// @ts-ignore
- core.pluginSetupDeps.elasticsearch.adminClient = {
+ core.pluginSetupDeps.elasticsearch.legacy.client = {
callAsInternalUser: jest.fn().mockReturnValue(Promise.resolve(getHits())),
};
@@ -171,7 +171,7 @@ describe('GET /api/reporting/jobs/download', () => {
it('returns a 401 if not a valid job type', async () => {
// @ts-ignore
- core.pluginSetupDeps.elasticsearch.adminClient = {
+ core.pluginSetupDeps.elasticsearch.legacy.client = {
callAsInternalUser: jest
.fn()
.mockReturnValue(Promise.resolve(getHits({ jobtype: 'invalidJobType' }))),
@@ -185,7 +185,7 @@ describe('GET /api/reporting/jobs/download', () => {
it('when a job is incomplete', async () => {
// @ts-ignore
- core.pluginSetupDeps.elasticsearch.adminClient = {
+ core.pluginSetupDeps.elasticsearch.legacy.client = {
callAsInternalUser: jest
.fn()
.mockReturnValue(
@@ -205,7 +205,7 @@ describe('GET /api/reporting/jobs/download', () => {
it('when a job fails', async () => {
// @ts-ignore
- core.pluginSetupDeps.elasticsearch.adminClient = {
+ core.pluginSetupDeps.elasticsearch.legacy.client = {
callAsInternalUser: jest.fn().mockReturnValue(
Promise.resolve(
getHits({
@@ -248,7 +248,7 @@ describe('GET /api/reporting/jobs/download', () => {
it('when a known job-type is complete', async () => {
const hits = getCompleteHits();
// @ts-ignore
- core.pluginSetupDeps.elasticsearch.adminClient = {
+ core.pluginSetupDeps.elasticsearch.legacy.client = {
callAsInternalUser: jest.fn().mockReturnValue(Promise.resolve(hits)),
};
registerJobInfoRoutes(core);
@@ -264,7 +264,7 @@ describe('GET /api/reporting/jobs/download', () => {
it('succeeds when security is not there or disabled', async () => {
const hits = getCompleteHits();
// @ts-ignore
- core.pluginSetupDeps.elasticsearch.adminClient = {
+ core.pluginSetupDeps.elasticsearch.legacy.client = {
callAsInternalUser: jest.fn().mockReturnValue(Promise.resolve(hits)),
};
@@ -288,7 +288,7 @@ describe('GET /api/reporting/jobs/download', () => {
outputContent: 'test',
});
// @ts-ignore
- core.pluginSetupDeps.elasticsearch.adminClient = {
+ core.pluginSetupDeps.elasticsearch.legacy.client = {
callAsInternalUser: jest.fn().mockReturnValue(Promise.resolve(hits)),
};
registerJobInfoRoutes(core);
@@ -308,7 +308,7 @@ describe('GET /api/reporting/jobs/download', () => {
outputContentType: 'application/pdf',
});
// @ts-ignore
- core.pluginSetupDeps.elasticsearch.adminClient = {
+ core.pluginSetupDeps.elasticsearch.legacy.client = {
callAsInternalUser: jest.fn().mockReturnValue(Promise.resolve(hits)),
};
registerJobInfoRoutes(core);
@@ -329,7 +329,7 @@ describe('GET /api/reporting/jobs/download', () => {
outputContentType: 'application/html',
});
// @ts-ignore
- core.pluginSetupDeps.elasticsearch.adminClient = {
+ core.pluginSetupDeps.elasticsearch.legacy.client = {
callAsInternalUser: jest.fn().mockReturnValue(Promise.resolve(hits)),
};
registerJobInfoRoutes(core);
diff --git a/x-pack/plugins/licensing/server/plugin.ts b/x-pack/plugins/licensing/server/plugin.ts
index 33f70c549914d..e1aa4a1b32517 100644
--- a/x-pack/plugins/licensing/server/plugin.ts
+++ b/x-pack/plugins/licensing/server/plugin.ts
@@ -107,7 +107,7 @@ export class LicensingPlugin implements Plugin
): ReturnType {
const [coreStart] = await core.getStartServices();
- const client = coreStart.elasticsearch.legacy.client;
- return await client.asScoped(request).callAsCurrentUser(...args);
+ const _client = coreStart.elasticsearch.legacy.client;
+ return await _client.asScoped(request).callAsCurrentUser(...args);
},
callAsInternalUser,
};
@@ -124,7 +124,7 @@ export class LicensingPlugin implements Plugin {
+ this._cluster = elasticsearch.legacy.createClient('monitoring-direct', config.elasticsearch);
+ elasticsearch.legacy.client.callAsInternalUser('info').then((data) => {
this._productionClusterUuid = get(data, 'cluster_uuid');
});
}
diff --git a/x-pack/plugins/monitoring/server/plugin.ts b/x-pack/plugins/monitoring/server/plugin.ts
index a45e80ac71d65..14bef307b2f85 100644
--- a/x-pack/plugins/monitoring/server/plugin.ts
+++ b/x-pack/plugins/monitoring/server/plugin.ts
@@ -131,7 +131,7 @@ export class Plugin {
this.legacyShimDependencies = {
router: core.http.createRouter(),
instanceUuid: core.uuid.getInstanceUuid(),
- esDataClient: core.elasticsearch.dataClient,
+ esDataClient: core.elasticsearch.legacy.client,
kibanaStatsCollector: plugins.usageCollection?.getCollectorByType(
KIBANA_STATS_TYPE_MONITORING
),
@@ -142,7 +142,7 @@ export class Plugin {
const cluster = (this.cluster = instantiateClient(
config.ui.elasticsearch,
this.log,
- core.elasticsearch.createClient
+ core.elasticsearch.legacy.createClient
));
// Start our license service which will ensure
diff --git a/x-pack/plugins/remote_clusters/server/routes/api/add_route.test.ts b/x-pack/plugins/remote_clusters/server/routes/api/add_route.test.ts
index cbfbbfd2d61f3..d28e95834ca0b 100644
--- a/x-pack/plugins/remote_clusters/server/routes/api/add_route.test.ts
+++ b/x-pack/plugins/remote_clusters/server/routes/api/add_route.test.ts
@@ -28,7 +28,7 @@ describe('ADD remote clusters', () => {
{ licenseCheckResult = { valid: true }, apiResponses = [], asserts, payload }: TestOptions
) => {
test(description, async () => {
- const { adminClient: elasticsearchMock } = elasticsearchServiceMock.createSetup();
+ const elasticsearchMock = elasticsearchServiceMock.createClusterClient();
const mockRouteDependencies = {
router: httpServiceMock.createRouter(),
diff --git a/x-pack/plugins/remote_clusters/server/routes/api/delete_route.test.ts b/x-pack/plugins/remote_clusters/server/routes/api/delete_route.test.ts
index b9328cb61e967..d1e3cf89e94d9 100644
--- a/x-pack/plugins/remote_clusters/server/routes/api/delete_route.test.ts
+++ b/x-pack/plugins/remote_clusters/server/routes/api/delete_route.test.ts
@@ -30,7 +30,7 @@ describe('DELETE remote clusters', () => {
{ licenseCheckResult = { valid: true }, apiResponses = [], asserts, params }: TestOptions
) => {
test(description, async () => {
- const { adminClient: elasticsearchMock } = elasticsearchServiceMock.createSetup();
+ const elasticsearchMock = elasticsearchServiceMock.createClusterClient();
const mockRouteDependencies = {
router: httpServiceMock.createRouter(),
diff --git a/x-pack/plugins/remote_clusters/server/routes/api/get_route.test.ts b/x-pack/plugins/remote_clusters/server/routes/api/get_route.test.ts
index f0444162e80b9..24e469c9ec9b2 100644
--- a/x-pack/plugins/remote_clusters/server/routes/api/get_route.test.ts
+++ b/x-pack/plugins/remote_clusters/server/routes/api/get_route.test.ts
@@ -29,7 +29,7 @@ describe('GET remote clusters', () => {
{ licenseCheckResult = { valid: true }, apiResponses = [], asserts }: TestOptions
) => {
test(description, async () => {
- const { adminClient: elasticsearchMock } = elasticsearchServiceMock.createSetup();
+ const elasticsearchMock = elasticsearchServiceMock.createClusterClient();
const mockRouteDependencies = {
router: httpServiceMock.createRouter(),
diff --git a/x-pack/plugins/remote_clusters/server/routes/api/update_route.test.ts b/x-pack/plugins/remote_clusters/server/routes/api/update_route.test.ts
index 7f8acb2b018d9..9669c98e1349e 100644
--- a/x-pack/plugins/remote_clusters/server/routes/api/update_route.test.ts
+++ b/x-pack/plugins/remote_clusters/server/routes/api/update_route.test.ts
@@ -37,7 +37,7 @@ describe('UPDATE remote clusters', () => {
}: TestOptions
) => {
test(description, async () => {
- const { adminClient: elasticsearchMock } = elasticsearchServiceMock.createSetup();
+ const elasticsearchMock = elasticsearchServiceMock.createClusterClient();
const mockRouteDependencies = {
router: httpServiceMock.createRouter(),
diff --git a/x-pack/plugins/security/server/plugin.test.ts b/x-pack/plugins/security/server/plugin.test.ts
index fc49bdd9bc0c3..3e30ff9447f3e 100644
--- a/x-pack/plugins/security/server/plugin.test.ts
+++ b/x-pack/plugins/security/server/plugin.test.ts
@@ -39,9 +39,7 @@ describe('Security Plugin', () => {
mockCoreSetup.http.isTlsEnabled = true;
mockClusterClient = elasticsearchServiceMock.createCustomClusterClient();
- mockCoreSetup.elasticsearch.createClient.mockReturnValue(
- (mockClusterClient as unknown) as jest.Mocked
- );
+ mockCoreSetup.elasticsearch.legacy.createClient.mockReturnValue(mockClusterClient);
mockDependencies = { licensing: { license$: of({}) } } as PluginSetupDependencies;
});
@@ -114,8 +112,8 @@ describe('Security Plugin', () => {
it('properly creates cluster client instance', async () => {
await plugin.setup(mockCoreSetup, mockDependencies);
- expect(mockCoreSetup.elasticsearch.createClient).toHaveBeenCalledTimes(1);
- expect(mockCoreSetup.elasticsearch.createClient).toHaveBeenCalledWith('security', {
+ expect(mockCoreSetup.elasticsearch.legacy.createClient).toHaveBeenCalledTimes(1);
+ expect(mockCoreSetup.elasticsearch.legacy.createClient).toHaveBeenCalledWith('security', {
plugins: [elasticsearchClientPlugin],
});
});
diff --git a/x-pack/plugins/security/server/plugin.ts b/x-pack/plugins/security/server/plugin.ts
index cdfc6f0ae542f..bdda0be9b15a7 100644
--- a/x-pack/plugins/security/server/plugin.ts
+++ b/x-pack/plugins/security/server/plugin.ts
@@ -109,7 +109,7 @@ export class Plugin {
.pipe(first())
.toPromise();
- this.clusterClient = core.elasticsearch.createClient('security', {
+ this.clusterClient = core.elasticsearch.legacy.createClient('security', {
plugins: [elasticsearchClientPlugin],
});
diff --git a/x-pack/plugins/telemetry_collection_xpack/server/plugin.ts b/x-pack/plugins/telemetry_collection_xpack/server/plugin.ts
index b0afba8852495..3f01d7423eded 100644
--- a/x-pack/plugins/telemetry_collection_xpack/server/plugin.ts
+++ b/x-pack/plugins/telemetry_collection_xpack/server/plugin.ts
@@ -18,7 +18,7 @@ export class TelemetryCollectionXpackPlugin implements Plugin {
public setup(core: CoreSetup, { telemetryCollectionManager }: TelemetryCollectionXpackDepsSetup) {
telemetryCollectionManager.setCollection({
- esCluster: core.elasticsearch.dataClient,
+ esCluster: core.elasticsearch.legacy.client,
title: 'local_xpack',
priority: 1,
statsGetter: getStatsWithXpack,
diff --git a/x-pack/test/alerting_api_integration/common/fixtures/plugins/alerts/server/action_types.ts b/x-pack/test/alerting_api_integration/common/fixtures/plugins/alerts/server/action_types.ts
index a921dac7d43a1..3b6befb3fe807 100644
--- a/x-pack/test/alerting_api_integration/common/fixtures/plugins/alerts/server/action_types.ts
+++ b/x-pack/test/alerting_api_integration/common/fixtures/plugins/alerts/server/action_types.ts
@@ -4,7 +4,7 @@
* you may not use this file except in compliance with the Elastic License.
*/
-import { CoreSetup } from 'kibana/server';
+import { CoreSetup } from 'src/core/server';
import { schema } from '@kbn/config-schema';
import { FixtureStartDeps, FixtureSetupDeps } from './plugin';
import { ActionType, ActionTypeExecutorOptions } from '../../../../../../../plugins/actions/server';
@@ -13,7 +13,7 @@ export function defineActionTypes(
core: CoreSetup,
{ actions }: Pick
) {
- const clusterClient = core.elasticsearch.adminClient;
+ const clusterClient = core.elasticsearch.legacy.client;
// Action types
const noopActionType: ActionType = {
diff --git a/x-pack/test/alerting_api_integration/common/fixtures/plugins/alerts/server/alert_types.ts b/x-pack/test/alerting_api_integration/common/fixtures/plugins/alerts/server/alert_types.ts
index ff3a3e48d5b1a..bfabbb8169391 100644
--- a/x-pack/test/alerting_api_integration/common/fixtures/plugins/alerts/server/alert_types.ts
+++ b/x-pack/test/alerting_api_integration/common/fixtures/plugins/alerts/server/alert_types.ts
@@ -4,7 +4,7 @@
* you may not use this file except in compliance with the Elastic License.
*/
-import { CoreSetup } from 'kibana/server';
+import { CoreSetup } from 'src/core/server';
import { schema } from '@kbn/config-schema';
import { times } from 'lodash';
import { FixtureStartDeps, FixtureSetupDeps } from './plugin';
@@ -14,7 +14,7 @@ export function defineAlertTypes(
core: CoreSetup,
{ alerting }: Pick
) {
- const clusterClient = core.elasticsearch.adminClient;
+ const clusterClient = core.elasticsearch.legacy.client;
const alwaysFiringAlertType: AlertType = {
id: 'test.always-firing',
name: 'Test: Always Firing',
diff --git a/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/init_routes.ts b/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/init_routes.ts
index e4c4d13ee4a41..f35d6baac8f5a 100644
--- a/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/init_routes.ts
+++ b/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/init_routes.ts
@@ -11,7 +11,7 @@ import {
IKibanaResponse,
IRouter,
CoreSetup,
-} from 'kibana/server';
+} from 'src/core/server';
import { EventEmitter } from 'events';
import { TaskManagerStartContract } from '../../../../../plugins/task_manager/server';
@@ -39,7 +39,7 @@ export function initRoutes(
taskTestingEvents: EventEmitter
) {
async function ensureIndexIsRefreshed() {
- return await core.elasticsearch.adminClient.callAsInternalUser('indices.refresh', {
+ return await core.elasticsearch.legacy.client.callAsInternalUser('indices.refresh', {
index: '.kibana_task_manager',
});
}
diff --git a/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/plugin.ts b/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/plugin.ts
index ae756bb56b921..3ea669ae9d404 100644
--- a/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/plugin.ts
+++ b/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/plugin.ts
@@ -4,7 +4,7 @@
* you may not use this file except in compliance with the Elastic License.
*/
-import { Plugin, CoreSetup, CoreStart } from 'kibana/server';
+import { Plugin, CoreSetup, CoreStart } from 'src/core/server';
import { EventEmitter } from 'events';
import { Subject } from 'rxjs';
import { first } from 'rxjs/operators';
@@ -64,7 +64,7 @@ export class SampleTaskManagerFixturePlugin
}
}
- await core.elasticsearch.adminClient.callAsInternalUser('index', {
+ await core.elasticsearch.legacy.client.callAsInternalUser('index', {
index: '.kibana_task_manager_test_result',
body: {
type: 'task',