diff --git a/src/sunstone/public/app/tabs/templates-tab/form-panels/create-common.js b/src/sunstone/public/app/tabs/templates-tab/form-panels/create-common.js index 202b0d9956..198179b766 100644 --- a/src/sunstone/public/app/tabs/templates-tab/form-panels/create-common.js +++ b/src/sunstone/public/app/tabs/templates-tab/form-panels/create-common.js @@ -245,26 +245,32 @@ define(function(require) { success: function(request, response){ if(response){ var template = response.VMTEMPLATE && response.VMTEMPLATE.TEMPLATE; - if(template && template.DISK){ - var lastDisk = template.DISK; - var newDisk = templateJSON.DISK[0]; - var setNewdisk = function(){ - if(lastDisk.OPENNEBULA_MANAGED && lastDisk.OPENNEBULA_MANAGED === "NO" ){ - newDisk.LAST_IMAGE_DISK = (lastDisk && lastDisk.IMAGE_ID) || (lastDisk && lastDisk.IMAGE); - delete newDisk.OPENNEBULA_MANAGED; + if( + template && + template.DISK && + template.DISK instanceof Array && + templateJSON && + templateJSON.DISK && + templateJSON.DISK instanceof Array + ){ + var disks = []; + var lastDisks = template.DISK; + var lengthLastDisks = lastDisks.length; + var lengthNewDisks = templateJSON.DISK.length; + var diffPositions = lengthLastDisks - lengthNewDisks; + templateJSON.DISK.map(function(element,id){ + var disk = element; + var position = diffPositions>0? id+diffPositions : id; + if(lastDisks && lastDisks[position] && JSON.stringify(lastDisks[position]) !== JSON.stringify(element)){ + if(element.OPENNEBULA_MANAGED && element.OPENNEBULA_MANAGED === "NO"){ + disk.LAST_IMAGE_DISK = (lastDisks[position] && lastDisks[position].IMAGE_ID) || (lastDisks[position] && lastDisks[position].IMAGE); + delete disk.OPENNEBULA_MANAGED; + } } - }; - if(lastDisk && lastDisk.LAST_IMAGE_DISK){ - if(lastDisk.LAST_IMAGE_DISK === newDisk.IMAGE || lastDisk.LAST_IMAGE_DISK === newDisk.IMAGE_ID){ - newDisk.OPENNEBULA_MANAGED = "NO"; - delete newDisk.LAST_IMAGE_DISK; - }else{ - setNewdisk(); - } - }else{ - setNewdisk(); - } - templateJSON.DISK = [newDisk]; + + disks.push(disk); + }); + templateJSON.DISK = disks; Sunstone.runAction(actionUpdate, resourceId, TemplateUtils.templateToString(templateJSON)); } }