[Connectors] Disable Elastic-managed connectors (#211178)

## Summary

Disable Elastic-managed connectors in stack. Force user to convert to
self-managed



https://github.com/user-attachments/assets/90c477f0-a801-4a64-8177-dc4c687c5451




### Checklist

Check the PR satisfies following conditions. 

Reviewers should verify this PR satisfies this list as well.

- [x] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [ x [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [x] This was checked for breaking HTTP API changes, and any breaking
changes have been approved by the breaking-change committee. The
`release_note:breaking` label should be applied in these situations.
- [x] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [x] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)

Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
This commit is contained in:
Jedr Blaszyk 2025-02-14 18:00:23 +01:00 committed by GitHub
parent d3fd2ed770
commit 44ef445f8a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 67 additions and 109 deletions

View file

@ -97,7 +97,7 @@ export const ConnectorDetail: React.FC = () => {
},
{
content: <SearchIndexDocuments />,
disabled: !index,
disabled: !index || connector?.is_native,
id: ConnectorDetailTabId.DOCUMENTS,
isSelected: tabId === ConnectorDetailTabId.DOCUMENTS,
label: i18n.translate(
@ -116,7 +116,7 @@ export const ConnectorDetail: React.FC = () => {
},
{
content: <SearchIndexIndexMappings />,
disabled: !index,
disabled: !index || connector?.is_native,
id: ConnectorDetailTabId.INDEX_MAPPINGS,
isSelected: tabId === ConnectorDetailTabId.INDEX_MAPPINGS,
label: i18n.translate(
@ -140,7 +140,7 @@ export const ConnectorDetail: React.FC = () => {
? [
{
content: <ConnectorSyncRules />,
disabled: !index,
disabled: !index || connector?.is_native,
id: ConnectorDetailTabId.SYNC_RULES,
isSelected: tabId === ConnectorDetailTabId.SYNC_RULES,
label: i18n.translate(
@ -161,7 +161,7 @@ export const ConnectorDetail: React.FC = () => {
: []),
{
content: <ConnectorScheduling />,
disabled: !connector?.index_name,
disabled: !connector?.index_name || connector?.is_native,
id: ConnectorDetailTabId.SCHEDULING,
isSelected: tabId === ConnectorDetailTabId.SCHEDULING,
label: i18n.translate(
@ -183,6 +183,7 @@ export const ConnectorDetail: React.FC = () => {
const CONFIG_TAB = [
{
content: <ConnectorConfiguration />,
disabled: connector?.is_native,
id: ConnectorDetailTabId.CONFIGURATION,
isSelected: tabId === ConnectorDetailTabId.CONFIGURATION,
label: i18n.translate(
@ -203,7 +204,7 @@ export const ConnectorDetail: React.FC = () => {
const PIPELINES_TAB = {
content: <SearchIndexPipelines />,
disabled: !index,
disabled: !index || connector?.is_native,
id: ConnectorDetailTabId.PIPELINES,
isSelected: tabId === ConnectorDetailTabId.PIPELINES,
label: i18n.translate(

View file

@ -9,17 +9,7 @@ import React from 'react';
import { useActions, useValues } from 'kea';
import {
EuiButton,
EuiCallOut,
EuiCode,
EuiFlexGroup,
EuiFlexItem,
EuiLink,
EuiLoadingSpinner,
EuiSpacer,
EuiText,
} from '@elastic/eui';
import { EuiButton, EuiCallOut, EuiCode, EuiLink, EuiSpacer, EuiText } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
@ -32,7 +22,6 @@ import {
import { docLinks } from '../../../shared/doc_links';
import { generateEncodedPath } from '../../../shared/encode_path_params';
import { KibanaLogic } from '../../../shared/kibana';
import { EuiButtonTo } from '../../../shared/react_router_helpers/eui_components';
import { CONNECTOR_DETAIL_TAB_PATH } from '../../routes';
@ -48,10 +37,8 @@ import { ConnectorViewLogic } from './connector_view_logic';
export const ConnectorDetailOverview: React.FC = () => {
const { indexData } = useValues(IndexViewLogic);
const { connector, error, isWaitingOnAgentlessDeployment, connectorAgentlessPolicy } =
useValues(ConnectorViewLogic);
const { connector, error, connectorAgentlessPolicy } = useValues(ConnectorViewLogic);
const { isCloud } = useValues(KibanaLogic);
const { showModal } = useActions(ConvertConnectorLogic);
const { isModalVisible } = useValues(ConvertConnectorLogic);
@ -85,35 +72,55 @@ export const ConnectorDetailOverview: React.FC = () => {
</>
)
}
{isWaitingOnAgentlessDeployment && (
{connector?.is_native && (
<>
{isModalVisible && <ConvertConnectorModal />}
<EuiCallOut
iconType="warning"
color="warning"
title={
<EuiFlexGroup alignItems="center">
<EuiFlexItem grow={false}>
<EuiLoadingSpinner />
</EuiFlexItem>
<EuiFlexItem>
{i18n.translate(
'xpack.enterpriseSearch.content.connectors.overview.agentlessDeploymentNotReadyCallOut.title',
{
defaultMessage: 'Provisioning infrastructure',
}
)}
</EuiFlexItem>
</EuiFlexGroup>
}
title={i18n.translate(
'xpack.enterpriseSearch.content.connectors.overview.nativeCloudCallout.title',
{
defaultMessage: 'Elastic managed connectors are no longer supported',
}
)}
>
<EuiSpacer size="s" />
<EuiText size="s">
{i18n.translate(
'xpack.enterpriseSearch.content.connectors.overview.agentlessDeploymentNotReadyCallOut.description',
{
defaultMessage: 'Setting up the agentless infrastructure to run the connector.',
}
)}
<p>
<FormattedMessage
id="xpack.enterpriseSearch.content.connectors.overview.nativeCloudCallout.content"
defaultMessage="Elastic managed connectors are no longer supported. Convert it to a {link} to continue using it."
values={{
link: (
<EuiLink
data-test-subj="entSearchContent-connectorDetailOverview-nativeCloudCallout-connectorClientLink"
data-telemetry-id="entSearchContent-connectorDetailOverview-nativeCloudCallout-connectorClientLink"
href={docLinks.buildConnector}
target="_blank"
>
{i18n.translate(
'xpack.enterpriseSearch.content.connectors.overview.nativeCloudCallout.connectorClient',
{ defaultMessage: 'self-managed connector' }
)}
</EuiLink>
),
}}
/>
</p>
</EuiText>
<EuiSpacer size="s" />
<EuiButton
data-test-subj="entSearchContent-connectorDetailOverview-nativeCloudCallout-convertToSelfManagedClientButton"
color="warning"
fill
onClick={() => showModal()}
>
{i18n.translate(
'xpack.enterpriseSearch.content.indices.connectors.overview.convertConnector.buttonLabel',
{ defaultMessage: 'Convert connector' }
)}
</EuiButton>
</EuiCallOut>
<EuiSpacer />
</>
@ -203,73 +210,23 @@ export const ConnectorDetailOverview: React.FC = () => {
<EuiSpacer />
</>
)}
{connector?.is_native && !isCloud && (
<>
{isModalVisible && <ConvertConnectorModal />}
<EuiCallOut
iconType="warning"
color="warning"
title={i18n.translate(
'xpack.enterpriseSearch.content.connectors.overview.nativeCloudCallout.title',
{
defaultMessage:
'Elastic managed connectors (formerly native connectors) are no longer supported outside Elastic Cloud',
}
)}
>
<EuiSpacer size="s" />
<EuiText size="s">
<p>
<FormattedMessage
id="xpack.enterpriseSearch.content.connectors.overview.nativeCloudCallout.content"
defaultMessage="Convert it to a {link}, to be self-hosted on your own infrastructure. Elastic managed connectors are available only in your Elastic Cloud deployment."
values={{
link: (
<EuiLink
data-test-subj="entSearchContent-connectorDetailOverview-nativeCloudCallout-connectorClientLink"
data-telemetry-id="entSearchContent-connectorDetailOverview-nativeCloudCallout-connectorClientLink"
href={docLinks.buildConnector}
target="_blank"
>
{i18n.translate(
'xpack.enterpriseSearch.content.connectors.overview.nativeCloudCallout.connectorClient',
{ defaultMessage: 'self-managed connector' }
)}
</EuiLink>
),
}}
/>
</p>
</EuiText>
<EuiSpacer size="s" />
<EuiButton
data-test-subj="entSearchContent-connectorDetailOverview-nativeCloudCallout-convertToSelfManagedClientButton"
color="warning"
fill
onClick={() => showModal()}
>
{i18n.translate(
'xpack.enterpriseSearch.content.indices.connectors.overview.convertConnector.buttonLabel',
{ defaultMessage: 'Convert connector' }
)}
</EuiButton>
</EuiCallOut>
<EuiSpacer />
</>
)}
{connector && connector.service_type !== ENTERPRISE_SEARCH_CONNECTOR_CRAWLER_SERVICE_TYPE && (
<ConnectorStats
connector={connector}
indexData={indexData || undefined}
agentlessOverview={connectorAgentlessPolicy}
/>
)}
{connector && connector.service_type !== ENTERPRISE_SEARCH_CONNECTOR_CRAWLER_SERVICE_TYPE && (
<>
<EuiSpacer />
<SyncJobs connector={connector} />
</>
)}
{connector &&
!connector.is_native &&
connector.service_type !== ENTERPRISE_SEARCH_CONNECTOR_CRAWLER_SERVICE_TYPE && (
<ConnectorStats
connector={connector}
indexData={indexData || undefined}
agentlessOverview={connectorAgentlessPolicy}
/>
)}
{connector &&
!connector.is_native &&
connector.service_type !== ENTERPRISE_SEARCH_CONNECTOR_CRAWLER_SERVICE_TYPE && (
<>
<EuiSpacer />
<SyncJobs connector={connector} />
</>
)}
</>
);
};