From d8fcdbb04695d39e56305224b669326857623761 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 (cherry picked from commit 5333608e42a4524947d17d268c565a62a0432bf4) --- .../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 95d0eb6bc6..6fce2d5a1f 100644 --- a/src/fireedge/src/client/containers/VmTemplates/Create.js +++ b/src/fireedge/src/client/containers/VmTemplates/Create.js @@ -131,7 +131,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 d3f0ee8d4d..f64e10abc3 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 + } } }