[Ent Search Plugin] Fix loading initial plugin data, save kbn version in kea, fix connector img version (#199777)

## Summary

PR is a bugfix to dynamically populate the `version` of the connectors
docker image shown in the onboarding. It's hardcoded to `8.15.0` now
....

Ideally we want to backport this to 8.16.1 +

Changes:
- Given that we are already getting
[kibanaVersion](https://github.com/elastic/kibana/blob/main/x-pack/plugins/enterprise_search/public/applications/index.tsx#L65)
from the
[backend](https://github.com/elastic/kibana/blob/main/x-pack/plugins/enterprise_search/public/plugin.ts#L212),
I'm saving the version in `KibanaLogic` reducer and use it to popuale
the docker image version
- I realised that because of [this
change](664c1a0a08 (diff-19a48c92980fd550e48c5e1d4d1f9a2bec4d309909b7cfa693264c92b387fe3dR95))
~10 months ago, we stopped passing plugin data, due to `if
(!this.config.host) return; // No API to call` therefore I removed this
line to fix this. Why I think it's safe to merge?
- It was only added 10 months ago, before things were working without
this extra if statement
- The backend logic handles the non-existent host: see
[here](https://github.com/elastic/kibana/blob/main/x-pack/plugins/enterprise_search/server/lib/enterprise_search_config_api.ts#L45-L61)
- We are guaranteed that other config fields exist, see [config
schema](d276b48995/x-pack/plugins/enterprise_search/server/index.ts (L16-L42))

<img width="1204" alt="Screenshot 2024-11-13 at 10 51 36"
src="https://github.com/user-attachments/assets/dbd2395b-00e5-4331-a9be-cb2a87133321">

### Checklist

Delete any items that are not applicable to this PR.


- [ ] [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)

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
This commit is contained in:
Jedr Blaszyk 2024-11-18 11:13:19 +01:00 committed by GitHub
parent de2d9675b2
commit 5d00a0a098
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 11 additions and 2 deletions

View file

@ -47,6 +47,7 @@ export const mockKibanaValues = {
indexMappingComponent: null,
isCloud: false,
isSidebarEnabled: true,
kibanaVersion: null,
lens: {
EmbeddableComponent: jest.fn(),
stateHelperApi: jest.fn().mockResolvedValue({

View file

@ -34,12 +34,14 @@ export interface DockerInstructionsStepProps {
hasApiKey: boolean;
isWaitingForConnector: boolean;
serviceType: string;
connectorVersion: string;
}
export const DockerInstructionsStep: React.FC<DockerInstructionsStepProps> = ({
connectorId,
isWaitingForConnector,
serviceType,
apiKeyData,
connectorVersion,
}) => {
const [isOpen, setIsOpen] = React.useState<EuiAccordionProps['forceState']>('open');
const { elasticsearchUrl } = useCloudDetails();
@ -163,7 +165,7 @@ export const DockerInstructionsStep: React.FC<DockerInstructionsStepProps> = ({
showTopBar={false}
languageType="bash"
codeSnippet={getRunFromDockerSnippet({
version: '8.15.0',
version: connectorVersion,
})}
/>
</EuiAccordion>

View file

@ -30,6 +30,7 @@ import { ConnectorStatus } from '@kbn/search-connectors';
import { Status } from '../../../../../common/types/api';
import { KibanaLogic } from '../../../shared/kibana';
import { GetApiKeyByIdLogic } from '../../api/api_key/get_api_key_by_id_api_logic';
import { GenerateConnectorApiKeyApiLogic } from '../../api/connector/generate_connector_api_key_api_logic';
@ -48,6 +49,7 @@ export const ConnectorDeployment: React.FC = () => {
const [selectedDeploymentMethod, setSelectedDeploymentMethod] = useState<'docker' | 'source'>(
'docker'
);
const { kibanaVersion } = useValues(KibanaLogic);
const { generatedData, isGenerateLoading } = useValues(DeploymentLogic);
const { index, isLoading, connector, connectorId } = useValues(ConnectorViewLogic);
const { fetchConnector } = useActions(ConnectorViewLogic);
@ -199,6 +201,7 @@ export const ConnectorDeployment: React.FC = () => {
serviceType={connector.service_type ?? ''}
isWaitingForConnector={isWaitingForConnector}
apiKeyData={apiKey}
connectorVersion={kibanaVersion ?? ''}
/>
)}
</>

View file

@ -119,6 +119,7 @@ export const renderApp = (
history,
indexMappingComponent,
isSidebarEnabled,
kibanaVersion,
lens,
ml,
navigateToUrl,

View file

@ -60,6 +60,7 @@ export interface KibanaLogicProps {
history: ScopedHistory;
indexMappingComponent?: React.FC<IndexMappingProps>;
isSidebarEnabled: boolean;
kibanaVersion?: string;
lens?: LensPublicStart;
ml?: MlPluginStart;
navigateToUrl: RequiredFieldsOnly<ApplicationStart['navigateToUrl']>;
@ -94,6 +95,7 @@ export interface KibanaValues {
indexMappingComponent: React.FC<IndexMappingProps> | null;
isCloud: boolean;
isSidebarEnabled: boolean;
kibanaVersion: string | null;
lens: LensPublicStart | null;
ml: MlPluginStart | null;
navigateToUrl(path: string, options?: CreateHrefOptions): Promise<void>;
@ -133,6 +135,7 @@ export const KibanaLogic = kea<MakeLogicType<KibanaValues>>({
history: [props.history, {}],
indexMappingComponent: [props.indexMappingComponent || null, {}],
isSidebarEnabled: [props.isSidebarEnabled, {}],
kibanaVersion: [props.kibanaVersion || null, {}],
lens: [props.lens || null, {}],
ml: [props.ml || null, {}],
navigateToUrl: [

View file

@ -199,7 +199,6 @@ export class EnterpriseSearchPlugin implements Plugin {
this.esConfig = { elasticsearch_host: ELASTICSEARCH_URL_PLACEHOLDER };
}
if (!this.config.host) return; // No API to call
if (this.hasInitialized) return; // We've already made an initial call
try {