B #3195: fix bug position elements (#3539)

Signed-off-by: Jorge Lobo <jlobo@opennebula.systems>
(cherry picked from commit 1194eb44de)
This commit is contained in:
Jorge Lobo authored and Tino Vazquez committed 2019-07-22 16:29:53 +02:00
1 parent af568a9cc9
commit 6a8a427461
1 file changed
+25 -19
@@ -223,26 +223,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));
}
}