function vmToHostCB()

in web/js/vm.js [182:282]


function vmToHostCB(data, ioArgs) {
	if(data.items.failed) {
		if(data.items.failed == 'nohostaccess')
			alert('You do not have access to manage this VM host.');
		if(data.items.failed == 'invaliddata')
			alert('Invalid list of VMs submitted.');
		document.body.style.cursor = 'default';
		return;
	}
	/*
	for each vmid sent back we
		search through allvms until we find it keeping track of the previous item with inout == 1
		we set allvms[vmid].inout to 1
		we find the previous item in the select.options array
		we insert a new option right after that one
	*/
	var vms = data.items.vms;
	var addrem = data.items.addrem; // 1 for add, 0 for rem
	var fails = data.items.fails;
	var obj = dojo.byId('freevms');
	for(var i = obj.options.length - 1; i >= 0; i--) {
		if(obj.options[i].selected) {
			var remove = 1;
			for(var j = 0; j < fails.length; j++) {
				if(obj.options[i].value == fails[j].id) {
					obj.options[i].selected = false;
					remove = 0;
					break;
				}
			}
			if(remove)
				obj.remove(i);
		}
	}
	var obj = dojo.byId('currvms');
	for(var i = 0; i < vms.length; i++) {
		var lastid = -1;
		for(var j = 0; j < allvms.length; j++) {
			if(allvms[j].id == vms[i].id) {
				allvms[j].inout = addrem;
				if(lastid < 0) {
					if(addrem)
						currvms.splice(0, 0, vms[i]);
					var before = obj.options[0];
					var newoption = new Option(allvms[j].name, allvms[j].id);
					try {
						obj.add(newoption, before);
					}
					catch(ex) {
						obj.add(newoption, 0);
					}
					break;
				}
				else {
					for(var k = 0; k < obj.options.length; k++) {
						if(obj.options[k].value == lastid) {
							if(addrem)
								currvms.splice(0, 0, vms[i]);
							var before = obj.options[k + 1];
							var newoption = new Option(allvms[j].name, allvms[j].id);
							if(before)
								try {
									obj.add(newoption, before);
								}
								catch(ex) {
									obj.add(newoption, k + 1);
								}
							else
								obj.options[obj.options.length] = newoption;
							break;
						}
					}
				}
				break;
			}
			if(allvms[j].inout == addrem)
				lastid = allvms[j].id;
		}
	}
	dojo.byId('assignedcnt').innerHTML = dojo.byId('currvms').options.length;
	document.body.style.cursor = 'default';
	if(fails.length) {
		var msg = '';
		var msg1 = 'There was a problem that prevented the following\n'
		         + 'VM(s) from being added to the host:\n\n';
		var msg2 = 'You do not have access to add the following vm(s):\n\n';
		var msg3 = ''; // problem
		var msg4 = ''; // no access
		for(var i = 0; i < fails.length; i++) {
			if(fails[i].reason == 'noaccess')
				msg4 += fails[i].name + '\n';
			else
				msg3 += fails[i].name + '\n';
		}
		if(msg3 != '')
			msg += msg1 + msg3 + '\n';
		if(msg4 != '')
			msg += msg2 + msg4 + '\n';
		alert(msg);
	}
}