From 8d6797dc9f0a5a937be915dec289c166a4d6dc3b Mon Sep 17 00:00:00 2001 From: Chaim Lev-Ari Date: Thu, 2 Mar 2023 19:32:43 +0200 Subject: [PATCH] fix(edge): show edge settings [EE-4959] (#8581) * fix(edge): show edge settings [EE-4959] fix [EE-4959] * fix(edge/settings): validate ce --- .../EdgeComputeSettings.tsx | 2 +- .../EdgeComputeSettings.validation.ts | 35 +++++++++++++++---- 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/app/react/portainer/settings/EdgeComputeView/EdgeComputeSettings/EdgeComputeSettings.tsx b/app/react/portainer/settings/EdgeComputeView/EdgeComputeSettings/EdgeComputeSettings.tsx index cdd687ac4..70e3313b6 100644 --- a/app/react/portainer/settings/EdgeComputeView/EdgeComputeSettings/EdgeComputeSettings.tsx +++ b/app/react/portainer/settings/EdgeComputeView/EdgeComputeSettings/EdgeComputeSettings.tsx @@ -29,7 +29,7 @@ export function EdgeComputeSettings({ settings, onSubmit }: Props) { EnableEdgeComputeFeatures: settings.EnableEdgeComputeFeatures, EdgePortainerUrl: settings.EdgePortainerUrl, Edge: { - TunnelServerAddress: settings.Edge.TunnelServerAddress, + TunnelServerAddress: settings.Edge?.TunnelServerAddress, }, EnforceEdgeID: settings.EnforceEdgeID, }; diff --git a/app/react/portainer/settings/EdgeComputeView/EdgeComputeSettings/EdgeComputeSettings.validation.ts b/app/react/portainer/settings/EdgeComputeView/EdgeComputeSettings/EdgeComputeSettings.validation.ts index 662b512e7..b1eee135a 100644 --- a/app/react/portainer/settings/EdgeComputeView/EdgeComputeSettings/EdgeComputeSettings.validation.ts +++ b/app/react/portainer/settings/EdgeComputeView/EdgeComputeSettings/EdgeComputeSettings.validation.ts @@ -1,9 +1,30 @@ -import { boolean, number, object } from 'yup'; +import { boolean, object, SchemaOf, string } from 'yup'; -export function validationSchema() { - return object().shape({ - EdgeAgentCheckinInterval: number().required('This field is required.'), - EnableEdgeComputeFeatures: boolean().required('This field is required.'), - EnforceEdgeID: boolean().required('This field is required.'), - }); +import { validation as tunnelValidation } from '@/react/portainer/common/PortainerTunnelAddrField'; +import { validation as urlValidation } from '@/react/portainer/common/PortainerUrlField'; +import { isBE } from '@/react/portainer/feature-flags/feature-flags.service'; + +import { FormValues } from './types'; + +export function validationSchema(): SchemaOf { + return object() + .shape({ + EnableEdgeComputeFeatures: boolean().required('This field is required.'), + EnforceEdgeID: boolean().required('This field is required.'), + }) + .concat( + isBE + ? object({ + EdgePortainerUrl: urlValidation(), + Edge: object({ + TunnelServerAddress: tunnelValidation(), + }), + }) + : object({ + EdgePortainerUrl: string().default(''), + Edge: object({ + TunnelServerAddress: string().default(''), + }), + }) + ); }