From 6b270d26ea463d5a09f352f44be053fd490671c6 Mon Sep 17 00:00:00 2001 From: Frederick Borges Date: Mon, 22 Mar 2021 10:27:56 +0100 Subject: [PATCH] B #~: Can't Import vCenter VMs to Marketplace (#1004) Signed-off-by: Frederick Borges --- src/sunstone/public/app/opennebula/vm.js | 14 +++--- .../marketplaceapps-tab/form-panels/create.js | 48 ++++++++----------- 2 files changed, 29 insertions(+), 33 deletions(-) diff --git a/src/sunstone/public/app/opennebula/vm.js b/src/sunstone/public/app/opennebula/vm.js index dcc027d30c..90917d9286 100644 --- a/src/sunstone/public/app/opennebula/vm.js +++ b/src/sunstone/public/app/opennebula/vm.js @@ -843,7 +843,8 @@ define(function(require) { "promiseGetVm" : _promiseGetVm, "getName": function(id){ return OpenNebulaAction.getName(id, RESOURCE); - } + }, + "isvCenterVM": isVCenterVM, }; function _promiseGetVm({ id, success, async = true } = {}) { @@ -1165,15 +1166,16 @@ define(function(require) { return actionEnabled && vncSupported } + function isVCenterVM(element = {}){ + return Boolean(element.USER_TEMPLATE && + String(element.USER_TEMPLATE.HYPERVISOR).toLowerCase() === 'vcenter'); + } + function isVMRCSupported(element = {}) { var actionEnabled = Config.isTabActionEnabled('vms-tab', 'VM.startvmrc') var vmrcSupported = graphicSupported(element, 'vnc') - var isVCenter = Boolean( - element.USER_TEMPLATE && - String(element.USER_TEMPLATE.HYPERVISOR).toLowerCase() === 'vcenter' - ) - return actionEnabled && vmrcSupported && isVCenter + return actionEnabled && vmrcSupported && isVCenterVM(element); } function isSPICESupported(element = {}) { diff --git a/src/sunstone/public/app/tabs/marketplaceapps-tab/form-panels/create.js b/src/sunstone/public/app/tabs/marketplaceapps-tab/form-panels/create.js index 6212f7c83b..bcfa800c98 100644 --- a/src/sunstone/public/app/tabs/marketplaceapps-tab/form-panels/create.js +++ b/src/sunstone/public/app/tabs/marketplaceapps-tab/form-panels/create.js @@ -33,7 +33,6 @@ define(function(require) { var WizardFields = require("utils/wizard-fields"); var OpenNebula = require("opennebula"); var OpenNebulaAction = require("opennebula/action"); - var OpenNebulaVM = require('opennebula/vm'); /* TEMPLATES @@ -107,7 +106,7 @@ define(function(require) { { "select": true, "selectOptions": { "filter_fn": function(vm) { - return String(OpenNebulaVM.STATES.POWEROFF) === vm.STATE; + return String(OpenNebula.VM.STATES.POWEROFF) === vm.STATE; } } }); @@ -424,32 +423,27 @@ define(function(require) { }, timeout: true, success: function (_, vmTemplate) { - if (vmTemplate && - vmTemplate.VM && - vmTemplate.VM.USER_TEMPLATE && - vmTemplate.VM.USER_TEMPLATE.HYPERVISOR && - vmTemplate.VM.USER_TEMPLATE.HYPERVISOR !== "vcenter"){ - - OpenNebula.VM.save_as_template({ - data: template, - success: function(_, templateId) { - Notifier.notifyMessage(Locale.tr("VM Template") + ' ' + marketPlaceJSON.NAME + ' ' + Locale.tr("saved successfully")); - - var newTemplate = $.extend(marketPlaceJSON, { ORIGIN_ID: String(templateId) }); - - Sunstone.runAction("MarketPlaceApp.import_vm_template", marketplaceIdSelected, newTemplate); - }, - error: function(request, response) { - Sunstone.hideFormPanelLoading(TAB_ID); - Notifier.onError(request, response); - } - }); - + if ( OpenNebula.VM.isvCenterVM(vmTemplate.VM)){ + Notifier.notifyError( + Locale.tr("Import error: Can't import vCenter VMs to a marketplace, only vCenter VM templates.") + ); + } + else{ + OpenNebula.VM.save_as_template({ + data: template, + success: function(_, templateId) { + Notifier.notifyMessage(Locale.tr("VM Template") + ' ' + marketPlaceJSON.NAME + ' ' + Locale.tr("saved successfully")); + + var newTemplate = $.extend(marketPlaceJSON, { ORIGIN_ID: String(templateId) }); + + Sunstone.runAction("MarketPlaceApp.import_vm_template", marketplaceIdSelected, newTemplate); + }, + error: function(request, response) { + Sunstone.hideFormPanelLoading(TAB_ID); + Notifier.onError(request, response); + } + }); } - else - Notifier.notifyError( - Locale.tr("Import error: Can't import vCenter VMs to a marketplace, only vCenter VM templates.") - ); }, error: function(request, response) {