diff --git a/x-pack/plugins/ingest_manager/common/services/is_agent_upgradeable.ts b/x-pack/plugins/ingest_manager/common/services/is_agent_upgradeable.ts index 88121c71f1ae082..1511d436c9b8429 100644 --- a/x-pack/plugins/ingest_manager/common/services/is_agent_upgradeable.ts +++ b/x-pack/plugins/ingest_manager/common/services/is_agent_upgradeable.ts @@ -4,14 +4,20 @@ * you may not use this file except in compliance with the Elastic License. */ import semver from 'semver'; +import { Agent } from '../types'; -export function isAgentUpgradeable({ - agentVersion, - kibanaVersion, -}: { - agentVersion: string; - kibanaVersion: string; -}) { +export function isAgentUpgradeable(agent: Agent, kibanaVersion: string) { + let agentVersion: string; + if ( + typeof agent.local_metadata === 'object' && + typeof agent.local_metadata.elastic === 'object' && + typeof agent.local_metadata.elastic.agent === 'object' && + typeof agent.local_metadata.elastic.agent.version === 'string' + ) { + agentVersion = agent.local_metadata.elastic.agent.version; + } else { + return false; + } const kibanaVersionParsed = semver.parse(kibanaVersion); const agentVersionParsed = semver.parse(agentVersion); if (!agentVersionParsed || !kibanaVersionParsed) throw new Error('version cannot be parsed'); diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/agent_details_page/components/actions_menu.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/agent_details_page/components/actions_menu.tsx index 043ea08aeddbdde..9ed464401fdc682 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/agent_details_page/components/actions_menu.tsx +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/agent_details_page/components/actions_menu.tsx @@ -15,6 +15,7 @@ import { AgentUpgradeAgentModal, } from '../../components'; import { useAgentRefresh } from '../hooks'; +import { isAgentUpgradeable } from '../../../../services'; export const AgentDetailsActionMenu: React.FunctionComponent<{ agent: Agent; @@ -115,6 +116,7 @@ export const AgentDetailsActionMenu: React.FunctionComponent<{ , { setIsUpgradeModalOpen(true); }} diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/agent_details_page/components/agent_details.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/agent_details_page/components/agent_details.tsx index 2c51f63f493d963..2493fda3317d204 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/agent_details_page/components/agent_details.tsx +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/agent_details_page/components/agent_details.tsx @@ -79,10 +79,7 @@ export const AgentDetailsContent: React.FunctionComponent<{ {agent.local_metadata.elastic.agent.version} - {isAgentUpgradeable({ - agentVersion: agent.local_metadata.elastic.agent.version, - kibanaVersion, - }) ? ( + {isAgentUpgradeable(agent, kibanaVersion) ? ( diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/agent_details_page/index.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/agent_details_page/index.tsx index 9e48f696263c8f4..88cf0e74a8fb868 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/agent_details_page/index.tsx +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/agent_details_page/index.tsx @@ -160,10 +160,7 @@ export const AgentDetailsPage: React.FunctionComponent = () => { {agentData.item.local_metadata.elastic.agent.version} - {isAgentUpgradeable({ - agentVersion: agentData.item.local_metadata.elastic.agent.version, - kibanaVersion, - }) ? ( + {isAgentUpgradeable(agentData.item, kibanaVersion) ? ( , { onUpgradeClick(); }} @@ -363,7 +365,7 @@ export const AgentListPage: React.FunctionComponent<{}> = () => { {safeMetadata(version)} - {isAgentUpgradeable({ agentVersion: version, kibanaVersion }) ? ( + {isAgentUpgradeable(agent, kibanaVersion) ? (