From 5333608e42a4524947d17d268c565a62a0432bf4 Mon Sep 17 00:00:00 2001 From: vichansson Date: Mon, 21 Oct 2024 12:00:15 +0300 Subject: [PATCH] B OpenNebula/one#6751: Fix raw data validation handling (#3269) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Victor Hansson Co-authored-by: Tino Vázquez --- .../src/client/containers/VmTemplates/Create.js | 4 +++- .../src/client/utils/parser/vmTemplateFilter.js | 17 ++++++++++------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/fireedge/src/client/containers/VmTemplates/Create.js b/src/fireedge/src/client/containers/VmTemplates/Create.js index fada1c8a2f0..7a9750a8e88 100644 --- a/src/fireedge/src/client/containers/VmTemplates/Create.js +++ b/src/fireedge/src/client/containers/VmTemplates/Create.js @@ -162,7 +162,9 @@ function CreateVmTemplate() { history.push(PATH.TEMPLATE.VMS.LIST) enqueueSuccess(T.SuccessVMTemplateUpdated, [templateId, NAME]) } - } catch {} + } catch (error) { + isDevelopment() && console.log('VM Template error: ', error) + } } return templateId && diff --git a/src/fireedge/src/client/utils/parser/vmTemplateFilter.js b/src/fireedge/src/client/utils/parser/vmTemplateFilter.js index d3f0ee8d4d5..f64e10abc30 100644 --- a/src/fireedge/src/client/utils/parser/vmTemplateFilter.js +++ b/src/fireedge/src/client/utils/parser/vmTemplateFilter.js @@ -767,15 +767,18 @@ const transformActionsCommon = (template) => { }) } - // If template has RAW attribute if (template.RAW) { - // // Add type (hypervisor) on RAW data if exists data, if not, delete RAW section. - if (template.RAW?.DATA) template.RAW.TYPE = template.HYPERVISOR - else delete template.RAW + // Clone template.RAW to ensure its mutable + template.RAW = { ...template.RAW } - // ISSUE #6418: Raw data is in XML format, so it needs to be transform before sennding it to the API (otherwise the value of RAW.DATA will be treat as part of the XML template) - template?.RAW?.DATA && - (template.RAW.DATA = transformXmlString(template.RAW.DATA)) + if (template.RAW.DATA) { + // DATA exists, so we add TYPE and transform DATA + template.RAW.TYPE = template.HYPERVISOR + template.RAW.DATA = transformXmlString(template.RAW.DATA) + } else { + // DATA doesn't exist, remove RAW from template + delete template.RAW + } } }