mirror of
				https://github.com/xcat2/xcat-core.git
				synced 2025-11-03 21:02:34 +00:00 
			
		
		
		
	Removed jquery.impromptu and replaced it with the built-in jquery dialog. Added input checks for edit virtual server.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@7601 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
		@@ -1,16 +1,15 @@
 | 
			
		||||
/***************** Login dialog *****************/
 | 
			
		||||
#logdialog {
 | 
			
		||||
	margin: 0px 10px 20px 10px;
 | 
			
		||||
	padding: 0px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#logdialog label,input,p {
 | 
			
		||||
	font: 14px verdana, arial, helvetica, sans-serif;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#logdialog input {
 | 
			
		||||
/***************** Dialogs *****************/
 | 
			
		||||
.ui-dialog input {
 | 
			
		||||
	border: solid 1px #BDBDBD;
 | 
			
		||||
	font: 14px verdana, arial, helvetica, sans-serif;
 | 
			
		||||
	font: 12px verdana, arial, helvetica, sans-serif;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.ui-dialog label, input, p, button {
 | 
			
		||||
	font: 12px verdana, arial, helvetica, sans-serif;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.ui-widget {
 | 
			
		||||
	font: 12px verdana, arial, helvetica, sans-serif;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/****************** Header ******************/
 | 
			
		||||
@@ -133,15 +132,15 @@ body {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/****************** Info bar ******************/
 | 
			
		||||
.info {
 | 
			
		||||
	font: 12px verdana, arial, helvetica, sans-serif;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
span.ui-icon-info {
 | 
			
		||||
	float: left;
 | 
			
		||||
	margin-right: 0.3em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.ui-icon {
 | 
			
		||||
	float: left;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.ui-button {
 | 
			
		||||
	display: inline-block;
 | 
			
		||||
	position: relative;
 | 
			
		||||
@@ -393,6 +392,7 @@ span.ui-icon-info {
 | 
			
		||||
	border-style: solid;
 | 
			
		||||
	border-color: #BDBDBD;
 | 
			
		||||
	vertical-align: middle;
 | 
			
		||||
	text-align: center;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*** Row color (odd) ***/
 | 
			
		||||
@@ -444,70 +444,6 @@ span.ui-icon-info {
 | 
			
		||||
	background-color: #E6E6E6;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/****************** Prompts ******************/
 | 
			
		||||
.cleanbluewarning .cleanblue {
 | 
			
		||||
	background-color: #acb4c4;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.cleanbluefade {
 | 
			
		||||
	position: absolute;
 | 
			
		||||
	background-color: #aaaaaa;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
div.cleanblue {
 | 
			
		||||
	font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
 | 
			
		||||
	position: absolute;
 | 
			
		||||
	background-color: #ffffff;
 | 
			
		||||
	width: 400px;
 | 
			
		||||
	font-size: 11px;
 | 
			
		||||
	text-align: left;
 | 
			
		||||
	border: solid 1px #213e80;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
div.cleanblue .cleanbluecontainer {
 | 
			
		||||
	background-color: #ffffff;
 | 
			
		||||
	border-top: solid 14px #213e80;
 | 
			
		||||
	padding: 5px;
 | 
			
		||||
	font-weight: bold;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
div.cleanblue .cleanblueclose {
 | 
			
		||||
	float: right;
 | 
			
		||||
	width: 18px;
 | 
			
		||||
	cursor: default;
 | 
			
		||||
	margin: -19px -12px 0 0;
 | 
			
		||||
	color: #ffffff;
 | 
			
		||||
	font-weight: bold;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
div.cleanblue .cleanbluemessage {
 | 
			
		||||
	padding: 10px;
 | 
			
		||||
	line-height: 20px;
 | 
			
		||||
	font-size: 11px;
 | 
			
		||||
	color: #333333;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
div.cleanblue .cleanbluebuttons {
 | 
			
		||||
	text-align: right;
 | 
			
		||||
	padding: 5px 0 5px 0;
 | 
			
		||||
	border: solid 1px #eeeeee;
 | 
			
		||||
	background-color: #f4f4f4;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
div.cleanblue button {
 | 
			
		||||
	padding: 3px 10px;
 | 
			
		||||
	margin: 0 10px;
 | 
			
		||||
	background-color: #314e90;
 | 
			
		||||
	border: solid 1px #f4f4f4;
 | 
			
		||||
	color: #ffffff;
 | 
			
		||||
	font-weight: bold;
 | 
			
		||||
	font-size: 12px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
div.cleanblue button:hover {
 | 
			
		||||
	border: solid 1px #d4d4d4;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/****************** Context menu ******************/
 | 
			
		||||
.context-menu-theme-vista {
 | 
			
		||||
	background: #FAFAFA url(../images/context-menu-bg.gif) repeat-y left top
 | 
			
		||||
@@ -585,7 +521,7 @@ div.cleanblue button:hover {
 | 
			
		||||
	display: inline-table;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.form input {
 | 
			
		||||
.form input, textarea, select {
 | 
			
		||||
	font: 12px verdana, arial, helvetica, sans-serif;
 | 
			
		||||
	border: solid 1px #BDBDBD;
 | 
			
		||||
	padding: 5px;
 | 
			
		||||
@@ -593,10 +529,6 @@ div.cleanblue button:hover {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.form textarea {
 | 
			
		||||
	font: 12px verdana, arial, helvetica, sans-serif;
 | 
			
		||||
	border: solid 1px #BDBDBD;
 | 
			
		||||
	padding: 5px;
 | 
			
		||||
	display: inline-table;
 | 
			
		||||
	width: 350px;
 | 
			
		||||
	height: 150px;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -145,10 +145,8 @@ bladePlugin.prototype.loadResources = function() {
 | 
			
		||||
/**
 | 
			
		||||
 * Add node
 | 
			
		||||
 * 
 | 
			
		||||
 * @param f
 | 
			
		||||
 * 			Key/value pairs of the form values
 | 
			
		||||
 * @return Nothing
 | 
			
		||||
 */
 | 
			
		||||
bladePlugin.prototype.addNode = function(f) {
 | 
			
		||||
bladePlugin.prototype.addNode = function() {
 | 
			
		||||
	
 | 
			
		||||
};
 | 
			
		||||
@@ -145,10 +145,8 @@ fspPlugin.prototype.loadResources = function() {
 | 
			
		||||
/**
 | 
			
		||||
 * Add node
 | 
			
		||||
 * 
 | 
			
		||||
 * @param f
 | 
			
		||||
 * 			Key/value pairs of the form values
 | 
			
		||||
 * @return Nothing
 | 
			
		||||
 */
 | 
			
		||||
fspPlugin.prototype.addNode = function(f) {
 | 
			
		||||
fspPlugin.prototype.addNode = function() {
 | 
			
		||||
	
 | 
			
		||||
};
 | 
			
		||||
@@ -198,10 +198,8 @@ hmcPlugin.prototype.loadResources = function() {
 | 
			
		||||
/**
 | 
			
		||||
 * Add node
 | 
			
		||||
 * 
 | 
			
		||||
 * @param f
 | 
			
		||||
 * 			Key/value pairs of the form values
 | 
			
		||||
 * @return Nothing
 | 
			
		||||
 */
 | 
			
		||||
hmcPlugin.prototype.addNode = function(f) {
 | 
			
		||||
hmcPlugin.prototype.addNode = function() {
 | 
			
		||||
	
 | 
			
		||||
};
 | 
			
		||||
@@ -145,10 +145,8 @@ ipmiPlugin.prototype.loadResources = function() {
 | 
			
		||||
/**
 | 
			
		||||
 * Add node
 | 
			
		||||
 * 
 | 
			
		||||
 * @param f
 | 
			
		||||
 * 			Key/value pairs of the form values
 | 
			
		||||
 * @return Nothing
 | 
			
		||||
 */
 | 
			
		||||
ipmiPlugin.prototype.addNode = function(f) {
 | 
			
		||||
ipmiPlugin.prototype.addNode = function() {
 | 
			
		||||
	
 | 
			
		||||
};
 | 
			
		||||
@@ -145,10 +145,8 @@ ivmPlugin.prototype.loadResources = function() {
 | 
			
		||||
/**
 | 
			
		||||
 * Add node
 | 
			
		||||
 * 
 | 
			
		||||
 * @param f
 | 
			
		||||
 * 			Key/value pairs of the form values
 | 
			
		||||
 * @return Nothing
 | 
			
		||||
 */
 | 
			
		||||
ivmPlugin.prototype.addNode = function(f) {
 | 
			
		||||
ivmPlugin.prototype.addNode = function() {
 | 
			
		||||
	
 | 
			
		||||
};
 | 
			
		||||
@@ -556,28 +556,9 @@ zvmPlugin.prototype.loadInventory = function(data) {
 | 
			
		||||
			 */
 | 
			
		||||
			var addProcLink = $('<a href="#">Add processor</a>');
 | 
			
		||||
			addProcLink.bind('click', function(event) {
 | 
			
		||||
    			var procForm = '<div class="form">'
 | 
			
		||||
        				+ '<div><label for="procNode">Processor for:</label><input type="text" readonly="readonly" id="procNode" name="procNode" value="' + node + '"/></div>'
 | 
			
		||||
        				+ '<div><label for="procAddress">Processor address:</label><input type="text" id="procAddress" name="procAddress"/></div>'
 | 
			
		||||
        				+ '<div><label for="procType">Processor type:</label>'
 | 
			
		||||
            				+ '<select id="procType" name="procType">'
 | 
			
		||||
                				+ '<option>CP</option>' 
 | 
			
		||||
                				+ '<option>IFL</option>'
 | 
			
		||||
                				+ '<option>ZAAP</option>' 
 | 
			
		||||
                				+ '<option>ZIIP</option>'
 | 
			
		||||
            				+ '</select>' 
 | 
			
		||||
        				+ '</div>' 
 | 
			
		||||
    				+ '</div>';
 | 
			
		||||
    
 | 
			
		||||
    			$.prompt(procForm, {
 | 
			
		||||
    				callback : addProcessor,
 | 
			
		||||
    				buttons : {
 | 
			
		||||
    					Ok : true,
 | 
			
		||||
    					Cancel : false
 | 
			
		||||
    				},
 | 
			
		||||
    				prefix : 'cleanblue'
 | 
			
		||||
    			});
 | 
			
		||||
    		});
 | 
			
		||||
				createAddProcDialog(node);
 | 
			
		||||
			});
 | 
			
		||||
			
 | 
			
		||||
			procFooter.append(addProcLink);
 | 
			
		||||
			procTable.append(procFooter);
 | 
			
		||||
 | 
			
		||||
@@ -653,48 +634,8 @@ zvmPlugin.prototype.loadInventory = function(data) {
 | 
			
		||||
			 */
 | 
			
		||||
			var addDasdLink = $('<a href="#">Add disk</a>');
 | 
			
		||||
			addDasdLink.bind('click', function(event) {
 | 
			
		||||
				// Get list of disk pools
 | 
			
		||||
				var temp = attrs['hcp'][0].split('.');
 | 
			
		||||
				var cookie = $.cookie(temp[0] + 'DiskPools');
 | 
			
		||||
 | 
			
		||||
				// Create drop down list for disk pool
 | 
			
		||||
				var pools = cookie.split(',');
 | 
			
		||||
				var selectPool = '<select id="diskPool" name="diskPool">';
 | 
			
		||||
				for ( var i = 0; i < pools.length; i++) {
 | 
			
		||||
					selectPool = selectPool + '<option>' + pools[i]
 | 
			
		||||
						+ '</option>';
 | 
			
		||||
				}
 | 
			
		||||
				selectPool = selectPool + '</select>';
 | 
			
		||||
				
 | 
			
		||||
				// Create drop down list for disk mode
 | 
			
		||||
				var selectMode = '<select id="diskMode" name="diskMode">';
 | 
			
		||||
				selectMode = selectMode + '<option>R</option>';
 | 
			
		||||
				selectMode = selectMode + '<option>RR</option>';
 | 
			
		||||
				selectMode = selectMode + '<option>W</option>';
 | 
			
		||||
				selectMode = selectMode + '<option>WR</option>';
 | 
			
		||||
				selectMode = selectMode + '<option>M</option>';
 | 
			
		||||
				selectMode = selectMode + '<option>MR</option>';
 | 
			
		||||
				selectMode = selectMode + '<option>MW</option>';
 | 
			
		||||
				selectMode = selectMode + '</select>';
 | 
			
		||||
				
 | 
			
		||||
				var dasdForm = '<div class="form">'
 | 
			
		||||
    					+ '<div><label for="diskNode">Disk for:</label><input type="text" readonly="readonly" id="diskNode" name="diskNode" value="' + node + '"/></div>'
 | 
			
		||||
    					+ '<div><label for="diskType">Disk type:</label><select id="diskType" name="diskType"><option value="3390">3390</option><option value="9336">9336</option></select></div>'
 | 
			
		||||
    					+ '<div><label for="diskAddress">Disk address:</label><input type="text" id="diskAddress" name="diskAddress"/></div>'
 | 
			
		||||
    					+ '<div><label for="diskSize">Disk size:</label><input type="text" id="diskSize" name="diskSize"/></div>'
 | 
			
		||||
    					+ '<div><label for="diskPool">Disk pool:</label>' + selectPool + '</div>'
 | 
			
		||||
    					+ '<div><label for="diskMode">Disk mode:</label>' + selectMode + '</div>'
 | 
			
		||||
    					+ '<div><label for="diskPassword">Disk password:</label><input type="password" id="diskPassword" name="diskPassword"/></div>'
 | 
			
		||||
    				+ '</div>';
 | 
			
		||||
 | 
			
		||||
				$.prompt(dasdForm, {
 | 
			
		||||
					callback : addDisk,
 | 
			
		||||
					buttons : {
 | 
			
		||||
						Ok : true,
 | 
			
		||||
						Cancel : false
 | 
			
		||||
					},
 | 
			
		||||
					prefix : 'cleanblue'
 | 
			
		||||
				});
 | 
			
		||||
				var hcp = attrs['hcp'][0].split('.');
 | 
			
		||||
				createAddDiskDialog(node, hcp[0]);
 | 
			
		||||
			});
 | 
			
		||||
			dasdFooter.append(addDasdLink);
 | 
			
		||||
			dasdTable.append(dasdFooter);
 | 
			
		||||
@@ -774,148 +715,8 @@ zvmPlugin.prototype.loadInventory = function(data) {
 | 
			
		||||
			 */
 | 
			
		||||
			var addNicLink = $('<a href="#">Add NIC</a>');
 | 
			
		||||
			addNicLink.bind('click', function(event) {
 | 
			
		||||
				// Get network names
 | 
			
		||||
				var temp = attrs['hcp'][0].split('.');
 | 
			
		||||
				var networks = $.cookie(temp[0] + 'Networks').split(',');
 | 
			
		||||
 | 
			
		||||
				// Create a drop down list
 | 
			
		||||
				var gLansQdio = '<select id="nicLanQdioName" name="nicLanQdioName">';
 | 
			
		||||
				var gLansHipers = '<select id="nicLanHipersName" name="nicLanHipersName">';
 | 
			
		||||
				var vswitches = '<select id="nicVSwitchName" name="nicVSwitchName">';
 | 
			
		||||
				for ( var i = 0; i < networks.length; i++) {
 | 
			
		||||
					var network = networks[i].split(' ');
 | 
			
		||||
					if (network[0] == 'VSWITCH') {
 | 
			
		||||
						vswitches = vswitches + '<option>' + network[1] + ' ' + network[2] + '</option>';
 | 
			
		||||
					} else if (network[0] == 'LAN:QDIO') {
 | 
			
		||||
						gLansQdio = gLansQdio + '<option>' + network[1] + ' ' + network[2] + '</option>';
 | 
			
		||||
					} else if (network[0] == 'LAN:HIPERS') {
 | 
			
		||||
						gLansHipers = gLansHipers + '<option>' + network[1] + ' ' + network[2] + '</option>';
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				vswitches = vswitches + '</select>';
 | 
			
		||||
				gLansQdio = gLansQdio + '</select>';
 | 
			
		||||
				gLansHipers = gLansHipers + '</select>';
 | 
			
		||||
 | 
			
		||||
				var nicTypeForm = '<div class="form">'
 | 
			
		||||
					+ '<div><label for="nicNode">NIC for:</label><input type="text" readonly="readonly" id="nicNode" name="nicNode" value="' + node + '"/></div>'
 | 
			
		||||
					+ '<div><label for="nicAddress">NIC address:</label><input type="text" id="nicAddress" name="nicAddress"/></div>'
 | 
			
		||||
					+ '<div><label for="nicType">NIC type:</label>'
 | 
			
		||||
    					+ '<select id="nicType" name="nicType">'
 | 
			
		||||
        					+ '<option>QDIO</option>'
 | 
			
		||||
        					+ '<option>HiperSockets</option>'
 | 
			
		||||
    					+ '</select>'
 | 
			
		||||
					+ '</div>'
 | 
			
		||||
					+ '<div><label for="nicNetworkType">Network type:</label>'
 | 
			
		||||
    					+ '<select id="nicNetworkType" name="nicNetworkType">'
 | 
			
		||||
    						+ '<option>Guest LAN</option>'
 | 
			
		||||
    						+ '<option>Virtual Switch</option>' + '</select>'
 | 
			
		||||
    					+ '</div>' 
 | 
			
		||||
					+ '</div>';
 | 
			
		||||
				var configGuestLanQdioForm = '<div class="form"><div><label for="nicLanQdioName">Guest LAN name:</label>' + gLansQdio + '</div></div>';
 | 
			
		||||
				var configGuestLanHipersForm = '<div class="form"><div><label for="nicLanHipersName">Guest LAN name:</label>' + gLansHipers + '</div></div>';
 | 
			
		||||
				var configVSwitchForm = '<div class="form"><div><label for="nicVSwitchName">VSWITCH name:</label>' + vswitches + '</div></div>';
 | 
			
		||||
				var notSupportedForm = '<div class="form"><p>The requested operation is not supported</p></div>';
 | 
			
		||||
 | 
			
		||||
				var states = {
 | 
			
		||||
					// Select NIC type
 | 
			
		||||
					type : {
 | 
			
		||||
						html : nicTypeForm,
 | 
			
		||||
						buttons : {
 | 
			
		||||
							Ok : true,
 | 
			
		||||
							Cancel : false
 | 
			
		||||
						},
 | 
			
		||||
						focus : 1,
 | 
			
		||||
						prefix : 'cleanblue',
 | 
			
		||||
						submit : function(v, m, f) {
 | 
			
		||||
							if (!v) {
 | 
			
		||||
								return true;
 | 
			
		||||
							} else {
 | 
			
		||||
								var nicType = f.nicType;
 | 
			
		||||
								var networkType = f.nicNetworkType;
 | 
			
		||||
								if (networkType == 'Guest LAN' && nicType == 'QDIO')
 | 
			
		||||
									$.prompt.goToState('configGuestLanQdio');
 | 
			
		||||
								else if (networkType == 'Guest LAN' && nicType == 'HiperSockets')
 | 
			
		||||
									$.prompt.goToState('configGuestLanHipers');
 | 
			
		||||
								else if (networkType == 'Virtual Switch' && nicType == 'QDIO')
 | 
			
		||||
									$.prompt.goToState('configVSwitch');
 | 
			
		||||
								else
 | 
			
		||||
									$.prompt.goToState('notSupported');
 | 
			
		||||
								return false;
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
					},
 | 
			
		||||
 | 
			
		||||
					// Configure QDIO guest LAN page
 | 
			
		||||
					configGuestLanQdio : {
 | 
			
		||||
						html : configGuestLanQdioForm,
 | 
			
		||||
						callback : addNic,
 | 
			
		||||
						buttons : {
 | 
			
		||||
							Ok : true,
 | 
			
		||||
							Cancel : false
 | 
			
		||||
						},
 | 
			
		||||
						focus : 1,
 | 
			
		||||
						prefix : 'cleanblue',
 | 
			
		||||
						submit : function(v, m, f) {
 | 
			
		||||
							if (v) {
 | 
			
		||||
								return true;
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
					},
 | 
			
		||||
					
 | 
			
		||||
					// Configure HIPERS guest LAN page
 | 
			
		||||
					configGuestLanHipers : {
 | 
			
		||||
						html : configGuestLanHipersForm,
 | 
			
		||||
						callback : addNic,
 | 
			
		||||
						buttons : {
 | 
			
		||||
							Ok : true,
 | 
			
		||||
							Cancel : false
 | 
			
		||||
						},
 | 
			
		||||
						focus : 1,
 | 
			
		||||
						prefix : 'cleanblue',
 | 
			
		||||
						submit : function(v, m, f) {
 | 
			
		||||
							if (v) {
 | 
			
		||||
								return true;
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
					},
 | 
			
		||||
 | 
			
		||||
					// Configure VSwitch page
 | 
			
		||||
					configVSwitch : {
 | 
			
		||||
						html : configVSwitchForm,
 | 
			
		||||
						callback : addNic,
 | 
			
		||||
						buttons : {
 | 
			
		||||
							Ok : true,
 | 
			
		||||
							Cancel : false
 | 
			
		||||
						},
 | 
			
		||||
						focus : 1,
 | 
			
		||||
						prefix : 'cleanblue',
 | 
			
		||||
						submit : function(v, m, f) {
 | 
			
		||||
							if (v) {
 | 
			
		||||
								return true;
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
					},
 | 
			
		||||
					
 | 
			
		||||
					// Not supported page
 | 
			
		||||
					notSupported : {
 | 
			
		||||
						html : notSupportedForm,
 | 
			
		||||
						buttons : {
 | 
			
		||||
							Ok : false
 | 
			
		||||
						},
 | 
			
		||||
						focus : 1,
 | 
			
		||||
						prefix : 'cleanblue',
 | 
			
		||||
						submit : function(v, m, f) {
 | 
			
		||||
							if (v) {
 | 
			
		||||
								return true;
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
				};
 | 
			
		||||
 | 
			
		||||
				$.prompt(states, {
 | 
			
		||||
					callback : addNic,
 | 
			
		||||
					prefix : 'cleanblue'
 | 
			
		||||
				});
 | 
			
		||||
				var hcp = attrs['hcp'][0].split('.');
 | 
			
		||||
				createAddNicDialog(node, hcp[0]);
 | 
			
		||||
			});
 | 
			
		||||
			nicFooter.append(addNicLink);
 | 
			
		||||
			nicTable.append(nicFooter);
 | 
			
		||||
@@ -1064,179 +865,197 @@ zvmPlugin.prototype.loadResources = function() {
 | 
			
		||||
/**
 | 
			
		||||
 * Add node
 | 
			
		||||
 * 
 | 
			
		||||
 * @param f
 | 
			
		||||
 * 			Key/value pairs of the form values
 | 
			
		||||
 * @return Nothing
 | 
			
		||||
 */
 | 
			
		||||
zvmPlugin.prototype.addNode = function(f) {
 | 
			
		||||
	var nodeRange = f.node;
 | 
			
		||||
	var group = f.group;
 | 
			
		||||
	var hcp = f.hcp;
 | 
			
		||||
	var userIdRange = f.userId;
 | 
			
		||||
	
 | 
			
		||||
	// Check node range and user ID range
 | 
			
		||||
	var errMsg = '';
 | 
			
		||||
	var ready = true;
 | 
			
		||||
	if (nodeRange.indexOf('-') > -1 || userIdRange.indexOf('-') > -1) {
 | 
			
		||||
		if (nodeRange.indexOf('-') < 0 || userIdRange.indexOf('-') < 0) {
 | 
			
		||||
			errMsg = errMsg + 'A user ID range and node range needs to be given. ';
 | 
			
		||||
			ready = false;
 | 
			
		||||
		} else {
 | 
			
		||||
			var tmp = nodeRange.split('-');
 | 
			
		||||
 | 
			
		||||
			// Get node base name
 | 
			
		||||
			var nodeBase = tmp[0].match(/[a-zA-Z]+/);
 | 
			
		||||
			// Get starting index
 | 
			
		||||
			var nodeStart = parseInt(tmp[0].match(/\d+/));
 | 
			
		||||
			// Get ending index
 | 
			
		||||
			var nodeEnd = parseInt(tmp[1]);
 | 
			
		||||
 | 
			
		||||
			tmp = userIdRange.split('-');
 | 
			
		||||
 | 
			
		||||
			// Get user ID base name
 | 
			
		||||
			var userIdBase = tmp[0].match(/[a-zA-Z]+/);
 | 
			
		||||
			// Get starting index
 | 
			
		||||
			var userIdStart = parseInt(tmp[0].match(/\d+/));
 | 
			
		||||
			// Get ending index
 | 
			
		||||
			var userIdEnd = parseInt(tmp[1]);
 | 
			
		||||
 | 
			
		||||
			// If starting and ending index do not match
 | 
			
		||||
			if (!(nodeStart == userIdStart) || !(nodeEnd == userIdEnd)) {
 | 
			
		||||
				// Not ready
 | 
			
		||||
				errMsg = errMsg + 'The node range and user ID range does not match. ';
 | 
			
		||||
				ready = false;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	// If there are no errors catched
 | 
			
		||||
	if (ready) {
 | 
			
		||||
    	// If a node range is given
 | 
			
		||||
    	if (nodeRange.indexOf('-') > -1 && userIdRange.indexOf('-') > -1) {
 | 
			
		||||
    		var tmp = nodeRange.split('-');
 | 
			
		||||
zvmPlugin.prototype.addNode = function() {
 | 
			
		||||
	var info = createInfoBar('Add a new node');
 | 
			
		||||
	var addNodeForm = $('<div class="form"></div>');
 | 
			
		||||
	addNodeForm.append(info);	
 | 
			
		||||
	addNodeForm.append('<div><label for="node">Node range:</label><input type="text" id="node" name="node"/></div>');
 | 
			
		||||
	addNodeForm.append('<div><label for="userId">User ID range:</label><input type="text" id="userId" name="userId"/></div>');
 | 
			
		||||
	addNodeForm.append('<div><label for="hcp">Hardware control point:</label><input type="text" id="hcp" name="hcp"/></div>');
 | 
			
		||||
	addNodeForm.append('<div><label for="group">Group:</label><input type="text" id="group" name="group"/></div>');
 | 
			
		||||
					
 | 
			
		||||
	// Create add node dialog
 | 
			
		||||
	addNodeForm.dialog({
 | 
			
		||||
		position: 'top',
 | 
			
		||||
		modal: true,
 | 
			
		||||
		width: 400,
 | 
			
		||||
		buttons: {
 | 
			
		||||
        	"Cancel": function(){
 | 
			
		||||
        		// Close dialog
 | 
			
		||||
        		$(this).dialog( "close" );
 | 
			
		||||
        	},
 | 
			
		||||
			"Ok": function(){
 | 
			
		||||
        		// Remove any warning messages
 | 
			
		||||
        		$(this).find('.ui-state-error').remove();
 | 
			
		||||
        		
 | 
			
		||||
				// Get inputs
 | 
			
		||||
				var nodeRange = $(this).find('input[name=node]').val();
 | 
			
		||||
				var userIdRange = $(this).find('input[name=userId]').val();				
 | 
			
		||||
				var group = $(this).find('input[name=group]').val();
 | 
			
		||||
				var hcp = $(this).find('input[name=hcp]').val();
 | 
			
		||||
								
 | 
			
		||||
				if (!nodeRange || !userIdRange || !group || !hcp) {
 | 
			
		||||
					var warn = createWarnBar('Missing values');
 | 
			
		||||
					warn.prependTo($(this));
 | 
			
		||||
        		} else {
 | 
			
		||||
    				// Check node range and user ID range
 | 
			
		||||
    				var errMsg = '';
 | 
			
		||||
    				var ready = true;
 | 
			
		||||
    				if (nodeRange.indexOf('-') > -1 || userIdRange.indexOf('-') > -1) {
 | 
			
		||||
    					if (nodeRange.indexOf('-') < 0 || userIdRange.indexOf('-') < 0) {
 | 
			
		||||
    						errMsg = errMsg + 'A user ID range and node range needs to be given. ';
 | 
			
		||||
    						ready = false;
 | 
			
		||||
    					} else {
 | 
			
		||||
    						var tmp = nodeRange.split('-');
 | 
			
		||||
    
 | 
			
		||||
    		// Get node base name
 | 
			
		||||
    		var nodeBase = tmp[0].match(/[a-zA-Z]+/);
 | 
			
		||||
    		// Get starting index
 | 
			
		||||
    		var nodeStart = parseInt(tmp[0].match(/\d+/));
 | 
			
		||||
    		// Get ending index
 | 
			
		||||
    		var nodeEnd = parseInt(tmp[1]);
 | 
			
		||||
    						// Get node base name
 | 
			
		||||
    						var nodeBase = tmp[0].match(/[a-zA-Z]+/);
 | 
			
		||||
    						// Get starting index
 | 
			
		||||
    						var nodeStart = parseInt(tmp[0].match(/\d+/));
 | 
			
		||||
    						// Get ending index
 | 
			
		||||
    						var nodeEnd = parseInt(tmp[1]);
 | 
			
		||||
    
 | 
			
		||||
    		tmp = userIdRange.split('-');
 | 
			
		||||
    						tmp = userIdRange.split('-');
 | 
			
		||||
    
 | 
			
		||||
    		// Get user ID base name
 | 
			
		||||
    		var userIdBase = tmp[0].match(/[a-zA-Z]+/);
 | 
			
		||||
    		// Get starting index
 | 
			
		||||
    		var userIdStart = parseInt(tmp[0].match(/\d+/));
 | 
			
		||||
    		// Get ending index
 | 
			
		||||
    		var userIdEnd = parseInt(tmp[1]);
 | 
			
		||||
    						// Get user ID base name
 | 
			
		||||
    						var userIdBase = tmp[0].match(/[a-zA-Z]+/);
 | 
			
		||||
    						// Get starting index
 | 
			
		||||
    						var userIdStart = parseInt(tmp[0].match(/\d+/));
 | 
			
		||||
    						// Get ending index
 | 
			
		||||
    						var userIdEnd = parseInt(tmp[1]);
 | 
			
		||||
    
 | 
			
		||||
    		// Loop through each node in the node range
 | 
			
		||||
    		for ( var i = nodeStart; i <= nodeEnd; i++) {
 | 
			
		||||
    			var node = nodeBase + i.toString();
 | 
			
		||||
    			var userId = userIdBase + i.toString();
 | 
			
		||||
    			var inst = i + '/' + nodeEnd;
 | 
			
		||||
    
 | 
			
		||||
    			/**
 | 
			
		||||
    			 * (1) Define node
 | 
			
		||||
    			 */
 | 
			
		||||
    			$.ajax( {
 | 
			
		||||
    				url : 'lib/cmd.php',
 | 
			
		||||
    				dataType : 'json',
 | 
			
		||||
    				data : {
 | 
			
		||||
    					cmd : 'nodeadd',
 | 
			
		||||
    					tgt : '',
 | 
			
		||||
    					args : node + ';zvm.hcp=' + hcp
 | 
			
		||||
    						+ ';zvm.userid=' + userId
 | 
			
		||||
    						+ ';nodehm.mgt=zvm' + ';groups=' + group,
 | 
			
		||||
    					msg : 'cmd=addnewnode;inst=' + inst + ';noderange=' + nodeRange
 | 
			
		||||
    				},
 | 
			
		||||
    
 | 
			
		||||
    				/**
 | 
			
		||||
    				 * Return function on successful AJAX call
 | 
			
		||||
    				 * 
 | 
			
		||||
    				 * @param data
 | 
			
		||||
    				 *            Data returned from HTTP request
 | 
			
		||||
    				 * @return Nothing
 | 
			
		||||
    				 */
 | 
			
		||||
    				success : function (data) {
 | 
			
		||||
    					// Get ajax response
 | 
			
		||||
    					var rsp = data.rsp;
 | 
			
		||||
    					var args = data.msg.split(';');
 | 
			
		||||
    
 | 
			
		||||
    					// Get command invoked
 | 
			
		||||
    					var cmd = args[0].replace('cmd=', '');
 | 
			
		||||
    					var inst = args[1].replace('inst=', '');    					
 | 
			
		||||
    					var nodeRange = args[2].replace('noderange=', '');
 | 
			
		||||
    					
 | 
			
		||||
    					// If the last node was added
 | 
			
		||||
    					var tmp = inst.split('/');
 | 
			
		||||
    					if (tmp[0] == tmp[1]) {
 | 
			
		||||
        					// If there was an error, do not continue
 | 
			
		||||
        					var msg;
 | 
			
		||||
        					if (rsp.length) {
 | 
			
		||||
        						msg = '<p>(Error) Failed to create node definition</p>';					
 | 
			
		||||
        					} else {
 | 
			
		||||
        						msg = '<p>Node definitions created for ' + nodeRange + '</p>';	
 | 
			
		||||
        					}
 | 
			
		||||
        					
 | 
			
		||||
        					$.prompt(msg, {
 | 
			
		||||
        						buttons: { Ok: true },
 | 
			
		||||
        						prefix: 'cleanblue'
 | 
			
		||||
        					});
 | 
			
		||||
    						// If starting and ending index do not match
 | 
			
		||||
    						if (!(nodeStart == userIdStart) || !(nodeEnd == userIdEnd)) {
 | 
			
		||||
    							// Not ready
 | 
			
		||||
    							errMsg = errMsg + 'The node range and user ID range does not match. ';
 | 
			
		||||
    							ready = false;
 | 
			
		||||
    						}
 | 
			
		||||
    					}
 | 
			
		||||
    				}
 | 
			
		||||
    			});
 | 
			
		||||
    		}
 | 
			
		||||
    	} else {
 | 
			
		||||
    		$.ajax( {
 | 
			
		||||
    			url : 'lib/cmd.php',
 | 
			
		||||
    			dataType : 'json',
 | 
			
		||||
    			data : {
 | 
			
		||||
    				cmd : 'nodeadd',
 | 
			
		||||
    				tgt : '',
 | 
			
		||||
    				args : nodeRange + ';zvm.hcp=' + hcp
 | 
			
		||||
    					+ ';zvm.userid=' + userIdRange
 | 
			
		||||
    					+ ';nodehm.mgt=zvm' + ';groups=' + group,
 | 
			
		||||
    				msg : 'cmd=addnewnode;node=' + nodeRange
 | 
			
		||||
    			},
 | 
			
		||||
    
 | 
			
		||||
    			/**
 | 
			
		||||
    			 * Return function on successful AJAX call
 | 
			
		||||
    			 * 
 | 
			
		||||
    			 * @param data
 | 
			
		||||
    			 *            Data returned from HTTP request
 | 
			
		||||
    			 * @return Nothing
 | 
			
		||||
    			 */
 | 
			
		||||
    			success : function (data) {
 | 
			
		||||
    				// Get ajax response
 | 
			
		||||
    				var rsp = data.rsp;
 | 
			
		||||
    				var args = data.msg.split(';');
 | 
			
		||||
    
 | 
			
		||||
    				// Get command invoked
 | 
			
		||||
    				var cmd = args[0].replace('cmd=', '');
 | 
			
		||||
    				var node = args[1].replace('node=', '');
 | 
			
		||||
    				
 | 
			
		||||
    				// If there was an error, do not continue
 | 
			
		||||
    				var msg;
 | 
			
		||||
    				if (rsp.length) {
 | 
			
		||||
    					msg = '<p>(Error) Failed to create node definition</p>';					
 | 
			
		||||
    				// If there are no errors
 | 
			
		||||
    				if (ready) {
 | 
			
		||||
    			    	// If a node range is given
 | 
			
		||||
    			    	if (nodeRange.indexOf('-') > -1 && userIdRange.indexOf('-') > -1) {
 | 
			
		||||
    			    		var tmp = nodeRange.split('-');
 | 
			
		||||
    			    
 | 
			
		||||
    			    		// Get node base name
 | 
			
		||||
    			    		var nodeBase = tmp[0].match(/[a-zA-Z]+/);
 | 
			
		||||
    			    		// Get starting index
 | 
			
		||||
    			    		var nodeStart = parseInt(tmp[0].match(/\d+/));
 | 
			
		||||
    			    		// Get ending index
 | 
			
		||||
    			    		var nodeEnd = parseInt(tmp[1]);
 | 
			
		||||
    			    
 | 
			
		||||
    			    		tmp = userIdRange.split('-');
 | 
			
		||||
    			    
 | 
			
		||||
    			    		// Get user ID base name
 | 
			
		||||
    			    		var userIdBase = tmp[0].match(/[a-zA-Z]+/);
 | 
			
		||||
    			    		// Get starting index
 | 
			
		||||
    			    		var userIdStart = parseInt(tmp[0].match(/\d+/));
 | 
			
		||||
    			    		// Get ending index
 | 
			
		||||
    			    		var userIdEnd = parseInt(tmp[1]);
 | 
			
		||||
    			    
 | 
			
		||||
    			    		// Loop through each node in the node range
 | 
			
		||||
    			    		for ( var i = nodeStart; i <= nodeEnd; i++) {
 | 
			
		||||
    			    			var node = nodeBase + i.toString();
 | 
			
		||||
    			    			var userId = userIdBase + i.toString();
 | 
			
		||||
    			    			var inst = i + '/' + nodeEnd;
 | 
			
		||||
    			    
 | 
			
		||||
    			    			/**
 | 
			
		||||
    			    			 * (1) Define node
 | 
			
		||||
    			    			 */
 | 
			
		||||
    			    			$.ajax( {
 | 
			
		||||
    			    				url : 'lib/cmd.php',
 | 
			
		||||
    			    				dataType : 'json',
 | 
			
		||||
    			    				data : {
 | 
			
		||||
    			    					cmd : 'nodeadd',
 | 
			
		||||
    			    					tgt : '',
 | 
			
		||||
    			    					args : node + ';zvm.hcp=' + hcp
 | 
			
		||||
    			    						+ ';zvm.userid=' + userId
 | 
			
		||||
    			    						+ ';nodehm.mgt=zvm' + ';groups=' + group,
 | 
			
		||||
    			    					msg : 'cmd=addnewnode;inst=' + inst + ';noderange=' + nodeRange
 | 
			
		||||
    			    				},
 | 
			
		||||
    			    
 | 
			
		||||
    			    				/**
 | 
			
		||||
    			    				 * Return function on successful AJAX call
 | 
			
		||||
    			    				 * 
 | 
			
		||||
    			    				 * @param data
 | 
			
		||||
    			    				 *            Data returned from HTTP request
 | 
			
		||||
    			    				 * @return Nothing
 | 
			
		||||
    			    				 */
 | 
			
		||||
    			    				success : function (data) {
 | 
			
		||||
    			    					// Get ajax response
 | 
			
		||||
    			    					var rsp = data.rsp;
 | 
			
		||||
    			    					var args = data.msg.split(';');
 | 
			
		||||
    			    
 | 
			
		||||
    			    					// Get command invoked
 | 
			
		||||
    			    					var cmd = args[0].replace('cmd=', '');
 | 
			
		||||
    			    					var inst = args[1].replace('inst=', '');    					
 | 
			
		||||
    			    					var nodeRange = args[2].replace('noderange=', '');
 | 
			
		||||
    			    					
 | 
			
		||||
    			    					// If the last node was added
 | 
			
		||||
    			    					var tmp = inst.split('/');
 | 
			
		||||
    			    					if (tmp[0] == tmp[1]) {
 | 
			
		||||
    			        					// If there was an error, do not continue
 | 
			
		||||
    			        					if (rsp.length) {
 | 
			
		||||
    			        						openDialog('(Error) Failed to create node definition');		
 | 
			
		||||
    			        					} else {
 | 
			
		||||
    			        						openDialog('Node definitions created for ' + nodeRange);	
 | 
			
		||||
    			        					}
 | 
			
		||||
    			    					}
 | 
			
		||||
    			    				}
 | 
			
		||||
    			    			});
 | 
			
		||||
    			    		}
 | 
			
		||||
    			    	} else {
 | 
			
		||||
    			    		$.ajax( {
 | 
			
		||||
    			    			url : 'lib/cmd.php',
 | 
			
		||||
    			    			dataType : 'json',
 | 
			
		||||
    			    			data : {
 | 
			
		||||
    			    				cmd : 'nodeadd',
 | 
			
		||||
    			    				tgt : '',
 | 
			
		||||
    			    				args : nodeRange + ';zvm.hcp=' + hcp
 | 
			
		||||
    			    					+ ';zvm.userid=' + userIdRange
 | 
			
		||||
    			    					+ ';nodehm.mgt=zvm' + ';groups=' + group,
 | 
			
		||||
    			    				msg : 'cmd=addnewnode;node=' + nodeRange
 | 
			
		||||
    			    			},
 | 
			
		||||
    			    
 | 
			
		||||
    			    			/**
 | 
			
		||||
    			    			 * Return function on successful AJAX call
 | 
			
		||||
    			    			 * 
 | 
			
		||||
    			    			 * @param data
 | 
			
		||||
    			    			 *            Data returned from HTTP request
 | 
			
		||||
    			    			 * @return Nothing
 | 
			
		||||
    			    			 */
 | 
			
		||||
    			    			success : function (data) {
 | 
			
		||||
    			    				// Get ajax response
 | 
			
		||||
    			    				var rsp = data.rsp;
 | 
			
		||||
    			    				var args = data.msg.split(';');
 | 
			
		||||
    			    
 | 
			
		||||
    			    				// Get command invoked
 | 
			
		||||
    			    				var cmd = args[0].replace('cmd=', '');
 | 
			
		||||
    			    				var node = args[1].replace('node=', '');
 | 
			
		||||
    			    				
 | 
			
		||||
    			    				// If there was an error, do not continue
 | 
			
		||||
    			    				if (rsp.length) {
 | 
			
		||||
    									openDialog('(Error) Failed to create node definition');		
 | 
			
		||||
    								} else {
 | 
			
		||||
    									openDialog('Node definitions created for ' + node);	
 | 
			
		||||
    								}    				
 | 
			
		||||
    			    			}
 | 
			
		||||
    			    		});
 | 
			
		||||
    			    	}
 | 
			
		||||
    			    	
 | 
			
		||||
    			    	// Close dialog
 | 
			
		||||
    					$(this).dialog( "close" );
 | 
			
		||||
    				} else {
 | 
			
		||||
    					msg = '<p>Node definition created for ' + node + '</p>';	
 | 
			
		||||
    				}
 | 
			
		||||
    				
 | 
			
		||||
    				$.prompt(msg, {
 | 
			
		||||
    					buttons: { Ok: true },
 | 
			
		||||
    					prefix: 'cleanblue'
 | 
			
		||||
    				});
 | 
			
		||||
    					// Show warning message
 | 
			
		||||
    					var warn = createWarnBar(errMsg);
 | 
			
		||||
    					warn.prependTo($(this));
 | 
			
		||||
    				}				
 | 
			
		||||
    			}
 | 
			
		||||
    		});
 | 
			
		||||
    	}
 | 
			
		||||
	} else {
 | 
			
		||||
		// Prompt an error message
 | 
			
		||||
		$.prompt('<p>' + errMsg + '</p>', {
 | 
			
		||||
			buttons: { Ok: true },
 | 
			
		||||
			prefix: 'cleanblue'
 | 
			
		||||
		});
 | 
			
		||||
	}
 | 
			
		||||
        	}
 | 
			
		||||
		}
 | 
			
		||||
	});
 | 
			
		||||
};
 | 
			
		||||
@@ -1001,206 +1001,433 @@ function getAttrs(keys, propNames, data) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Add processor
 | 
			
		||||
 * 
 | 
			
		||||
 * @param v
 | 
			
		||||
 *            Value of the button clicked
 | 
			
		||||
 * @param m
 | 
			
		||||
 *            jQuery object of the message within the active state when the user
 | 
			
		||||
 *            clicked the button
 | 
			
		||||
 * @param f
 | 
			
		||||
 *            Key/value pairs of the form values
 | 
			
		||||
 * Create add processor dialog
 | 
			
		||||
 * 
 | 
			
		||||
 * @param node
 | 
			
		||||
 * 			Node to add processor to
 | 
			
		||||
 * @return Nothing
 | 
			
		||||
 */
 | 
			
		||||
function addProcessor(v, m, f) {
 | 
			
		||||
	// If user clicks Ok, add processor
 | 
			
		||||
	if (v) {
 | 
			
		||||
		var node = f.procNode;
 | 
			
		||||
		var type = f.procType;
 | 
			
		||||
		var address = f.procAddress;
 | 
			
		||||
 | 
			
		||||
		// Add processor
 | 
			
		||||
		$.ajax( {
 | 
			
		||||
			url : 'lib/cmd.php',
 | 
			
		||||
			dataType : 'json',
 | 
			
		||||
			data : {
 | 
			
		||||
				cmd : 'chvm',
 | 
			
		||||
				tgt : node,
 | 
			
		||||
				args : '--addprocessoractive;' + address + ';' + type,
 | 
			
		||||
				msg : node
 | 
			
		||||
			},
 | 
			
		||||
 | 
			
		||||
			success : updateZNodeStatus
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
		// Increment node process
 | 
			
		||||
		incrementNodeProcess(node);
 | 
			
		||||
 | 
			
		||||
		// Show loader
 | 
			
		||||
		var statusId = node + 'StatusBar';
 | 
			
		||||
		var statusBarLoaderId = node + 'StatusBarLoader';
 | 
			
		||||
		$('#' + statusBarLoaderId).show();
 | 
			
		||||
		$('#' + statusId).show();
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Add disk
 | 
			
		||||
 * 
 | 
			
		||||
 * @param v
 | 
			
		||||
 *            Value of the button clicked
 | 
			
		||||
 * @param m
 | 
			
		||||
 *            jQuery object of the message within the active state when the user
 | 
			
		||||
 *            clicked the button
 | 
			
		||||
 * @param f
 | 
			
		||||
 *            Key/value pairs of the form values
 | 
			
		||||
 * @return Nothing
 | 
			
		||||
 */
 | 
			
		||||
function addDisk(v, m, f) {
 | 
			
		||||
	// If user clicks Ok, add disk
 | 
			
		||||
	if (v) {
 | 
			
		||||
		var node = f.diskNode;
 | 
			
		||||
		var type = f.diskType;
 | 
			
		||||
		var address = f.diskAddress;
 | 
			
		||||
		var size = f.diskSize;
 | 
			
		||||
		var pool = f.diskPool;
 | 
			
		||||
		var mode = f.diskMode;
 | 
			
		||||
		var password = f.diskPassword;
 | 
			
		||||
 | 
			
		||||
		// Add disk
 | 
			
		||||
		if (type == '3390') {
 | 
			
		||||
			$.ajax( {
 | 
			
		||||
				url : 'lib/cmd.php',
 | 
			
		||||
				dataType : 'json',
 | 
			
		||||
				data : {
 | 
			
		||||
					cmd : 'chvm',
 | 
			
		||||
					tgt : node,
 | 
			
		||||
					args : '--add3390;' + pool + ';' + address + ';' + size
 | 
			
		||||
						+ ';' + mode + ';' + password + ';' + password + ';' + password,
 | 
			
		||||
					msg : node
 | 
			
		||||
				},
 | 
			
		||||
 | 
			
		||||
				success : updateZNodeStatus
 | 
			
		||||
			});
 | 
			
		||||
 | 
			
		||||
			// Increment node process
 | 
			
		||||
			incrementNodeProcess(node);
 | 
			
		||||
 | 
			
		||||
			// Show loader
 | 
			
		||||
			var statusId = node + 'StatusBar';
 | 
			
		||||
			var statusBarLoaderId = node + 'StatusBarLoader';
 | 
			
		||||
			$('#' + statusBarLoaderId).show();
 | 
			
		||||
			$('#' + statusId).show();
 | 
			
		||||
		} else if (type == '9336') {
 | 
			
		||||
			// Default block size for FBA volumes = 512
 | 
			
		||||
			var blkSize = '512';
 | 
			
		||||
			
 | 
			
		||||
			$.ajax( {
 | 
			
		||||
				url : 'lib/cmd.php',
 | 
			
		||||
				dataType : 'json',
 | 
			
		||||
				data : {
 | 
			
		||||
					cmd : 'chvm',
 | 
			
		||||
					tgt : node,
 | 
			
		||||
					args : '--add9336;' + pool + ';' + address + ';' + blkSize + ';' + size
 | 
			
		||||
						+ ';' + mode + ';' + password + ';' + password + ';' + password,
 | 
			
		||||
					msg : node
 | 
			
		||||
				},
 | 
			
		||||
 | 
			
		||||
				success : updateZNodeStatus
 | 
			
		||||
			});
 | 
			
		||||
 | 
			
		||||
			// Increment node process
 | 
			
		||||
			incrementNodeProcess(node);
 | 
			
		||||
 | 
			
		||||
			// Show loader
 | 
			
		||||
			var statusId = node + 'StatusBar';
 | 
			
		||||
			var statusBarLoaderId = node + 'StatusBarLoader';
 | 
			
		||||
			$('#' + statusBarLoaderId).show();
 | 
			
		||||
			$('#' + statusId).show();
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Add NIC
 | 
			
		||||
 * 
 | 
			
		||||
 * @param v
 | 
			
		||||
 *            Value of the button clicked
 | 
			
		||||
 * @param m
 | 
			
		||||
 *            jQuery object of the message within the active state when the user
 | 
			
		||||
 *            clicked the button
 | 
			
		||||
 * @param f
 | 
			
		||||
 *            Key/value pairs of the form values
 | 
			
		||||
 * @return Nothing
 | 
			
		||||
 */
 | 
			
		||||
function addNic(v, m, f) {
 | 
			
		||||
	// If user clicks Ok, add NIC
 | 
			
		||||
	if (v) {
 | 
			
		||||
		var node = f.nicNode;
 | 
			
		||||
		var nicType = f.nicType;
 | 
			
		||||
		var networkType = f.nicNetworkType;
 | 
			
		||||
		var address = f.nicAddress;
 | 
			
		||||
		
 | 
			
		||||
		/**
 | 
			
		||||
		 * Add guest LAN
 | 
			
		||||
		 */
 | 
			
		||||
		if (networkType == 'Guest LAN') {
 | 
			
		||||
			var temp;
 | 
			
		||||
			if (nicType == 'QDIO') {
 | 
			
		||||
				temp = f.nicLanQdioName.split(' ');
 | 
			
		||||
			} else {
 | 
			
		||||
				temp = f.nicLanHipersName.split(' ');
 | 
			
		||||
function createAddProcDialog(node) {
 | 
			
		||||
	// Create info bar
 | 
			
		||||
	var info = createInfoBar('Add a processor');
 | 
			
		||||
	
 | 
			
		||||
	// Create add processor form
 | 
			
		||||
	var addProcForm = $('<div class="form"></div>');
 | 
			
		||||
	addProcForm.append(info);
 | 
			
		||||
	addProcForm.append('<div><label for="procNode">Processor for:</label><input type="text" readonly="readonly" id="procNode" name="procNode" value="' + node + '"/></div>');
 | 
			
		||||
	addProcForm.append('<div><label for="procAddress">Processor address:</label><input type="text" id="procAddress" name="procAddress"/></div>');
 | 
			
		||||
	
 | 
			
		||||
	// Create drop down for processor type
 | 
			
		||||
	var procType = $('<div></div>');
 | 
			
		||||
	procType.append('<label for="procType">Processor type:</label>');
 | 
			
		||||
	var typeSelect = $('<select id="procType" name="procType"></select>');
 | 
			
		||||
	typeSelect.append('<option>CP</option>');
 | 
			
		||||
	typeSelect.append('<option>IFL</option>');
 | 
			
		||||
	typeSelect.append('<option>ZAAP</option>');
 | 
			
		||||
	typeSelect.append('<option>ZIIP</option>');
 | 
			
		||||
	procType.append(typeSelect);
 | 
			
		||||
	addProcForm.append(procType);
 | 
			
		||||
	
 | 
			
		||||
	// Create add processor dialog
 | 
			
		||||
	addProcForm.dialog({
 | 
			
		||||
		position: 'top',
 | 
			
		||||
		modal: true,
 | 
			
		||||
		width: 400,
 | 
			
		||||
		buttons: {
 | 
			
		||||
        	"Cancel": function() {
 | 
			
		||||
        		// Close dialog
 | 
			
		||||
        		$(this).dialog( "close" );
 | 
			
		||||
        	},
 | 
			
		||||
			"Ok": function(){
 | 
			
		||||
        		// Remove any warning messages
 | 
			
		||||
        		$(this).find('.ui-state-error').remove();
 | 
			
		||||
        		
 | 
			
		||||
				// Get processor properties
 | 
			
		||||
				var node = $(this).find('input[name=procNode]').val();
 | 
			
		||||
				var address = $(this).find('input[name=procAddress]').val();
 | 
			
		||||
				var type = $(this).find('select[name=procType]').val();
 | 
			
		||||
				
 | 
			
		||||
				if (!node || !address || !type) {
 | 
			
		||||
					var warn = createWarnBar('Missing values');
 | 
			
		||||
					warn.prependTo($(this));
 | 
			
		||||
				} else {
 | 
			
		||||
    				// Add processor
 | 
			
		||||
    				$.ajax( {
 | 
			
		||||
    					url : 'lib/cmd.php',
 | 
			
		||||
    					dataType : 'json',
 | 
			
		||||
    					data : {
 | 
			
		||||
    						cmd : 'chvm',
 | 
			
		||||
    						tgt : node,
 | 
			
		||||
    						args : '--addprocessoractive;' + address + ';' + type,
 | 
			
		||||
    						msg : node
 | 
			
		||||
    					},
 | 
			
		||||
    
 | 
			
		||||
    					success : updateZNodeStatus
 | 
			
		||||
    				});
 | 
			
		||||
    
 | 
			
		||||
    				// Increment node process
 | 
			
		||||
    				incrementNodeProcess(node);
 | 
			
		||||
    
 | 
			
		||||
    				// Show loader
 | 
			
		||||
    				var statusId = node + 'StatusBar';
 | 
			
		||||
    				var statusBarLoaderId = node + 'StatusBarLoader';
 | 
			
		||||
    				$('#' + statusBarLoaderId).show();
 | 
			
		||||
    				$('#' + statusId).show();
 | 
			
		||||
    				
 | 
			
		||||
    				// Close dialog
 | 
			
		||||
    				$(this).dialog( "close" );
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			var lanOwner = temp[0];
 | 
			
		||||
			var lanName = temp[1];
 | 
			
		||||
			
 | 
			
		||||
			$.ajax( {
 | 
			
		||||
				url : 'lib/cmd.php',
 | 
			
		||||
				dataType : 'json',
 | 
			
		||||
				data : {
 | 
			
		||||
					cmd : 'chvm',
 | 
			
		||||
					tgt : node,
 | 
			
		||||
					args : '--addnic;' + address + ';' + nicType + ';3',
 | 
			
		||||
					msg : 'node=' + node + ';addr=' + address + ';lan='
 | 
			
		||||
						+ lanName + ';owner=' + lanOwner
 | 
			
		||||
				},
 | 
			
		||||
				success : connect2GuestLan
 | 
			
		||||
			});
 | 
			
		||||
		}
 | 
			
		||||
	});
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		/**
 | 
			
		||||
		 * Add virtual switch
 | 
			
		||||
		 */
 | 
			
		||||
		else if (networkType == 'Virtual Switch') {
 | 
			
		||||
			var temp = f.nicVSwitchName.split(' ');
 | 
			
		||||
			var vswitchName = temp[1];
 | 
			
		||||
 | 
			
		||||
			$.ajax( {
 | 
			
		||||
				url : 'lib/cmd.php',
 | 
			
		||||
				dataType : 'json',
 | 
			
		||||
				data : {
 | 
			
		||||
					cmd : 'chvm',
 | 
			
		||||
					tgt : node,
 | 
			
		||||
					args : '--addnic;' + address + ';' + nicType + ';3',
 | 
			
		||||
					msg : 'node=' + node + ';addr=' + address + ';vsw='
 | 
			
		||||
						+ vswitchName
 | 
			
		||||
				},
 | 
			
		||||
 | 
			
		||||
				success : connect2VSwitch
 | 
			
		||||
			});
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Increment node process
 | 
			
		||||
		incrementNodeProcess(node);
 | 
			
		||||
 | 
			
		||||
		// Show loader
 | 
			
		||||
		var statusId = node + 'StatusBar';
 | 
			
		||||
		var statusBarLoaderId = node + 'StatusBarLoader';
 | 
			
		||||
		$('#' + statusBarLoaderId).show();
 | 
			
		||||
		$('#' + statusId).show();
 | 
			
		||||
/**
 | 
			
		||||
 * Create add disk dialog
 | 
			
		||||
 * 
 | 
			
		||||
 * @param node
 | 
			
		||||
 * 			Node to add disk to
 | 
			
		||||
 * @param hcp
 | 
			
		||||
 * 			Hardware control point of node
 | 
			
		||||
 * @return Nothing
 | 
			
		||||
 */
 | 
			
		||||
function createAddDiskDialog(node, hcp) {
 | 
			
		||||
	// Get list of disk pools
 | 
			
		||||
	var cookie = $.cookie(hcp + 'DiskPools');
 | 
			
		||||
	var pools = cookie.split(',');
 | 
			
		||||
	
 | 
			
		||||
	// Create info bar
 | 
			
		||||
	var info = createInfoBar('Add a disk');
 | 
			
		||||
	
 | 
			
		||||
	// Create add disk form
 | 
			
		||||
	var addDiskForm = $('<div class="form"></div>');
 | 
			
		||||
	addDiskForm.append(info);
 | 
			
		||||
	addDiskForm.append('<div><label for="diskNode">Disk for:</label><input type="text" readonly="readonly" id="diskNode" name="diskNode" value="' + node + '"/></div>');
 | 
			
		||||
	addDiskForm.append('<div><label for="diskType">Disk type:</label><select id="diskType" name="diskType"><option value="3390">3390</option><option value="9336">9336</option></select></div>');
 | 
			
		||||
	addDiskForm.append('<div><label for="diskAddress">Disk address:</label><input type="text" id="diskAddress" name="diskAddress"/></div>');
 | 
			
		||||
	addDiskForm.append('<div><label for="diskSize">Disk size:</label><input type="text" id="diskSize" name="diskSize"/></div>');
 | 
			
		||||
	
 | 
			
		||||
	// Create drop down for disk pool
 | 
			
		||||
	var diskPool = $('<div></div>');
 | 
			
		||||
	diskPool.append('<label for="diskPool">Disk pool:</label>');
 | 
			
		||||
	var poolSelect = $('<select id="diskPool" name="diskPool"></select>');
 | 
			
		||||
	for ( var i = 0; i < pools.length; i++) {
 | 
			
		||||
		poolSelect.append('<option>' + pools[i] + '</option>');
 | 
			
		||||
	}
 | 
			
		||||
	diskPool.append(poolSelect);
 | 
			
		||||
	addDiskForm.append(diskPool);
 | 
			
		||||
 | 
			
		||||
	// Create drop down for disk mode
 | 
			
		||||
	var diskMode = $('<div></div>');
 | 
			
		||||
	diskMode.append('<label for="diskMode">Disk mode:</label>');
 | 
			
		||||
	var modeSelect = $('<select id="diskMode" name="diskMode"></select>');
 | 
			
		||||
	modeSelect.append('<option>R</option>');
 | 
			
		||||
	modeSelect.append('<option>RR</option>');
 | 
			
		||||
	modeSelect.append('<option>W</option>');
 | 
			
		||||
	modeSelect.append('<option>WR</option>');
 | 
			
		||||
	modeSelect.append('<option>M</option>');
 | 
			
		||||
	modeSelect.append('<option>MR</option>');
 | 
			
		||||
	modeSelect.append('<option>MW</option>');
 | 
			
		||||
	diskMode.append(modeSelect);
 | 
			
		||||
	addDiskForm.append(diskMode);
 | 
			
		||||
 | 
			
		||||
	addDiskForm.append('<div><label for="diskPassword">Disk password:</label><input type="password" id="diskPassword" name="diskPassword"/></div>');
 | 
			
		||||
 | 
			
		||||
	// Create add disk dialog
 | 
			
		||||
	addDiskForm.dialog({
 | 
			
		||||
		position: 'top',
 | 
			
		||||
		modal: true,
 | 
			
		||||
		width: 400,
 | 
			
		||||
		buttons: {
 | 
			
		||||
        	"Cancel": function() {
 | 
			
		||||
        		// Close dialog
 | 
			
		||||
        		$(this).dialog( "close" );
 | 
			
		||||
        	},
 | 
			
		||||
			"Ok": function(){
 | 
			
		||||
        		// Remove any warning messages
 | 
			
		||||
        		$(this).find('.ui-state-error').remove();
 | 
			
		||||
        		
 | 
			
		||||
				// Get disk properties
 | 
			
		||||
				var node = $(this).find('input[name=diskNode]').val();
 | 
			
		||||
        		var type = $(this).find('select[name=diskType]').val();
 | 
			
		||||
        		var address = $(this).find('input[name=diskAddress]').val();
 | 
			
		||||
        		var size = $(this).find('input[name=diskSize]').val();
 | 
			
		||||
        		var pool = $(this).find('select[name=diskPool]').val();
 | 
			
		||||
        		var mode = $(this).find('select[name=diskMode]').val();
 | 
			
		||||
        		var password = $(this).find('input[name=diskPassword]').val();
 | 
			
		||||
        		
 | 
			
		||||
        		if (!node || !type || !address || !size || !pool || !mode) {
 | 
			
		||||
					var warn = createWarnBar('Missing values');
 | 
			
		||||
					warn.prependTo($(this));
 | 
			
		||||
        		} else {
 | 
			
		||||
            		// Add disk
 | 
			
		||||
            		if (type == '3390') {
 | 
			
		||||
            			$.ajax( {
 | 
			
		||||
            				url : 'lib/cmd.php',
 | 
			
		||||
            				dataType : 'json',
 | 
			
		||||
            				data : {
 | 
			
		||||
            					cmd : 'chvm',
 | 
			
		||||
            					tgt : node,
 | 
			
		||||
            					args : '--add3390;' + pool + ';' + address + ';' + size
 | 
			
		||||
            						+ ';' + mode + ';' + password + ';' + password + ';' + password,
 | 
			
		||||
            					msg : node
 | 
			
		||||
            				},
 | 
			
		||||
    
 | 
			
		||||
            				success : updateZNodeStatus
 | 
			
		||||
            			});
 | 
			
		||||
    
 | 
			
		||||
            			// Increment node process
 | 
			
		||||
            			incrementNodeProcess(node);
 | 
			
		||||
    
 | 
			
		||||
            			// Show loader
 | 
			
		||||
            			var statusId = node + 'StatusBar';
 | 
			
		||||
            			var statusBarLoaderId = node + 'StatusBarLoader';
 | 
			
		||||
            			$('#' + statusBarLoaderId).show();
 | 
			
		||||
            			$('#' + statusId).show();
 | 
			
		||||
            		} else if (type == '9336') {
 | 
			
		||||
            			// Default block size for FBA volumes = 512
 | 
			
		||||
            			var blkSize = '512';
 | 
			
		||||
            			
 | 
			
		||||
            			$.ajax( {
 | 
			
		||||
            				url : 'lib/cmd.php',
 | 
			
		||||
            				dataType : 'json',
 | 
			
		||||
            				data : {
 | 
			
		||||
            					cmd : 'chvm',
 | 
			
		||||
            					tgt : node,
 | 
			
		||||
            					args : '--add9336;' + pool + ';' + address + ';' + blkSize + ';' + size
 | 
			
		||||
            						+ ';' + mode + ';' + password + ';' + password + ';' + password,
 | 
			
		||||
            					msg : node
 | 
			
		||||
            				},
 | 
			
		||||
    
 | 
			
		||||
            				success : updateZNodeStatus
 | 
			
		||||
            			});
 | 
			
		||||
    
 | 
			
		||||
            			// Increment node process
 | 
			
		||||
            			incrementNodeProcess(node);
 | 
			
		||||
    
 | 
			
		||||
            			// Show loader
 | 
			
		||||
            			var statusId = node + 'StatusBar';
 | 
			
		||||
            			var statusBarLoaderId = node + 'StatusBarLoader';
 | 
			
		||||
            			$('#' + statusBarLoaderId).show();
 | 
			
		||||
            			$('#' + statusId).show();
 | 
			
		||||
            		}
 | 
			
		||||
    				
 | 
			
		||||
    				// Close dialog
 | 
			
		||||
    				$(this).dialog( "close" );
 | 
			
		||||
        		} // End of else
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	});
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Create add NIC dialog
 | 
			
		||||
 * 
 | 
			
		||||
 * @param node
 | 
			
		||||
 * 			Node to add NIC to
 | 
			
		||||
 * @param hcp
 | 
			
		||||
 * 			Hardware control point of node
 | 
			
		||||
 * @return Nothing
 | 
			
		||||
 */
 | 
			
		||||
function createAddNicDialog(node, hcp) {
 | 
			
		||||
	// Get network names
 | 
			
		||||
	var networks = $.cookie(hcp + 'Networks').split(',');
 | 
			
		||||
 | 
			
		||||
	// Create info bar
 | 
			
		||||
	var info = createInfoBar('Add a NIC');
 | 
			
		||||
		
 | 
			
		||||
	// Create add NIC form
 | 
			
		||||
	var addNicForm = $('<div class="form"></div>');
 | 
			
		||||
	addNicForm.append(info);
 | 
			
		||||
	addNicForm.append('<div><label for="nicNode">NIC for:</label><input type="text" readonly="readonly" id="nicNode" name="nicNode" value="' + node + '"/></div>');
 | 
			
		||||
	addNicForm.append('<div><label for="nicAddress">NIC address:</label><input type="text" id="nicAddress" name="nicAddress"/></div>');
 | 
			
		||||
	
 | 
			
		||||
	// Create drop down for NIC types
 | 
			
		||||
	var nicType = $('<div></div>');
 | 
			
		||||
	nicType.append('<label for="nicType">NIC type:</label>');
 | 
			
		||||
	var nicTypeSelect = $('<select id="nicType" name="nicType"></select>');
 | 
			
		||||
	nicTypeSelect.append('<option></option>');
 | 
			
		||||
	nicTypeSelect.append('<option>QDIO</option>');
 | 
			
		||||
	nicTypeSelect.append('<option>HiperSockets</option>');
 | 
			
		||||
	nicType.append(nicTypeSelect);
 | 
			
		||||
	addNicForm.append(nicType);
 | 
			
		||||
		
 | 
			
		||||
	// Create drop down for network types
 | 
			
		||||
	var networkType = $('<div></div>');
 | 
			
		||||
	networkType.append('<label for="nicNetworkType">Network type:</label>');
 | 
			
		||||
	var networkTypeSelect = $('<select id="nicNetworkType" name="nicNetworkType"></select>');
 | 
			
		||||
	networkTypeSelect.append('<option></option>');
 | 
			
		||||
	networkTypeSelect.append('<option>Guest LAN</option>');
 | 
			
		||||
	networkTypeSelect.append('<option>Virtual Switch</option>');
 | 
			
		||||
	networkType.append(networkTypeSelect);
 | 
			
		||||
	addNicForm.append(networkType);
 | 
			
		||||
			
 | 
			
		||||
	// Create drop down for network names
 | 
			
		||||
	var gLansQdioSelect = $('<select id="nicLanQdioName" name="nicLanQdioName"></select>');
 | 
			
		||||
	var gLansHipersSelect = $('<select id="nicLanHipersName" name="nicLanHipersName"></select>');
 | 
			
		||||
	var vswitchSelect = $('<select id="nicVSwitchName" name="nicVSwitchName"></select>');
 | 
			
		||||
	for ( var i = 0; i < networks.length; i++) {
 | 
			
		||||
		var network = networks[i].split(' ');
 | 
			
		||||
		var networkOption = $('<option>' + network[1] + ' ' + network[2] + '</option>');
 | 
			
		||||
		if (network[0] == 'VSWITCH') {
 | 
			
		||||
			vswitchSelect.append(networkOption);
 | 
			
		||||
		} else if (network[0] == 'LAN:QDIO') {
 | 
			
		||||
			gLansQdioSelect.append(networkOption);
 | 
			
		||||
		} else if (network[0] == 'LAN:HIPERS') {
 | 
			
		||||
			gLansHipersSelect.append(networkOption);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	var guestLanQdio = $('<div></div>').hide();
 | 
			
		||||
	guestLanQdio.append('<label for="nicLanQdioName">Guest LAN name:</label>');
 | 
			
		||||
	guestLanQdio.append(gLansQdioSelect);
 | 
			
		||||
	addNicForm.append(guestLanQdio);
 | 
			
		||||
	
 | 
			
		||||
	var guestLanHipers = $('<div></div>').hide();
 | 
			
		||||
	guestLanHipers.append('<label for="nicLanHipersName">Guest LAN name:</label>');
 | 
			
		||||
	guestLanHipers.append(gLansHipersSelect);
 | 
			
		||||
	addNicForm.append(guestLanHipers);
 | 
			
		||||
	
 | 
			
		||||
	var vswitch = $('<div></div>').hide();
 | 
			
		||||
	vswitch.append('<label for="nicVSwitchName">VSWITCH name:</label>');
 | 
			
		||||
	vswitch.append(vswitchSelect);
 | 
			
		||||
	addNicForm.append(vswitch);
 | 
			
		||||
	
 | 
			
		||||
	// Show network names on change
 | 
			
		||||
	networkTypeSelect.change(function(){
 | 
			
		||||
		// Remove any warning messages
 | 
			
		||||
		$(this).parent().parent().find('.ui-state-error').remove();
 | 
			
		||||
		
 | 
			
		||||
		var nicType = nicTypeSelect.val();
 | 
			
		||||
		var networkType = $(this).val();
 | 
			
		||||
				
 | 
			
		||||
		guestLanQdio.hide();
 | 
			
		||||
		guestLanHipers.hide();
 | 
			
		||||
		vswitch.hide();
 | 
			
		||||
		
 | 
			
		||||
		if (networkType == 'Guest LAN' && nicType == 'QDIO')
 | 
			
		||||
			guestLanQdio.show();
 | 
			
		||||
		else if (networkType == 'Guest LAN' && nicType == 'HiperSockets')
 | 
			
		||||
			guestLanHipers.show();
 | 
			
		||||
		else if (networkType == 'Virtual Switch' && nicType == 'QDIO')
 | 
			
		||||
			vswitch.show();
 | 
			
		||||
		else if (networkType == 'Virtual Switch' && nicType != 'QDIO') {
 | 
			
		||||
			var warn = createWarnBar('The selected choices are not valid');
 | 
			
		||||
			warn.prependTo($(this).parent().parent());
 | 
			
		||||
		}
 | 
			
		||||
	});
 | 
			
		||||
	
 | 
			
		||||
	nicTypeSelect.change(function(){
 | 
			
		||||
		// Remove any warning messages
 | 
			
		||||
		$(this).parent().parent().find('.ui-state-error').remove();
 | 
			
		||||
		
 | 
			
		||||
		var nicType = $(this).val();
 | 
			
		||||
		var networkType = networkTypeSelect.val();
 | 
			
		||||
 | 
			
		||||
		guestLanQdio.hide();
 | 
			
		||||
		guestLanHipers.hide();
 | 
			
		||||
		vswitch.hide();
 | 
			
		||||
		
 | 
			
		||||
		if (networkType == 'Guest LAN' && nicType == 'QDIO')
 | 
			
		||||
			guestLanQdio.show();
 | 
			
		||||
		else if (networkType == 'Guest LAN' && nicType == 'HiperSockets')
 | 
			
		||||
			guestLanHipers.show();
 | 
			
		||||
		else if (networkType == 'Virtual Switch' && nicType == 'QDIO')
 | 
			
		||||
			vswitch.show();
 | 
			
		||||
		else if (networkType == 'Virtual Switch' && nicType != 'QDIO') {
 | 
			
		||||
			var warn = createWarnBar('The selected choices are not valid');
 | 
			
		||||
			warn.prependTo($(this).parent().parent());	
 | 
			
		||||
		}
 | 
			
		||||
	});
 | 
			
		||||
	
 | 
			
		||||
	// Create add NIC dialog
 | 
			
		||||
	addNicForm.dialog({
 | 
			
		||||
		position: 'top',
 | 
			
		||||
		modal: true,
 | 
			
		||||
		width: 400,
 | 
			
		||||
		buttons: {
 | 
			
		||||
        	"Cancel": function(){
 | 
			
		||||
        		// Close dialog
 | 
			
		||||
        		$(this).dialog( "close" );
 | 
			
		||||
        	},
 | 
			
		||||
			"Ok": function(){
 | 
			
		||||
        		// Remove any warning messages
 | 
			
		||||
        		$(this).find('.ui-state-error').remove();
 | 
			
		||||
        		
 | 
			
		||||
				var node = $(this).find('input[name=nicNode]').val();
 | 
			
		||||
				var nicType = $(this).find('select[name=nicType]').val();
 | 
			
		||||
				var networkType = $(this).find('select[name=nicNetworkType]').val();
 | 
			
		||||
				var address = $(this).find('input[name=nicAddress]').val();
 | 
			
		||||
        		        		
 | 
			
		||||
				if (!node || !nicType || !networkType || !address) {
 | 
			
		||||
					var warn = createWarnBar('Missing values');
 | 
			
		||||
					warn.prependTo($(this));
 | 
			
		||||
        		} else {
 | 
			
		||||
            		/**
 | 
			
		||||
            		 * Add guest LAN
 | 
			
		||||
            		 */
 | 
			
		||||
            		if (networkType == 'Guest LAN') {
 | 
			
		||||
            			var temp;
 | 
			
		||||
            			if (nicType == 'QDIO') {
 | 
			
		||||
            				temp = $(this).find('select[name=nicLanQdioName]').val().split(' ');
 | 
			
		||||
            			} else {
 | 
			
		||||
            				temp = $(this).find('select[name=nicLanHipersName]').val().split(' ');
 | 
			
		||||
            			}
 | 
			
		||||
            			
 | 
			
		||||
            			var lanOwner = temp[0];
 | 
			
		||||
            			var lanName = temp[1];
 | 
			
		||||
            			
 | 
			
		||||
            			$.ajax( {
 | 
			
		||||
            				url : 'lib/cmd.php',
 | 
			
		||||
            				dataType : 'json',
 | 
			
		||||
            				data : {
 | 
			
		||||
            					cmd : 'chvm',
 | 
			
		||||
            					tgt : node,
 | 
			
		||||
            					args : '--addnic;' + address + ';' + nicType + ';3',
 | 
			
		||||
            					msg : 'node=' + node + ';addr=' + address + ';lan='
 | 
			
		||||
            						+ lanName + ';owner=' + lanOwner
 | 
			
		||||
            				},
 | 
			
		||||
            				success : connect2GuestLan
 | 
			
		||||
            			});
 | 
			
		||||
            		}
 | 
			
		||||
            
 | 
			
		||||
            		/**
 | 
			
		||||
            		 * Add virtual switch
 | 
			
		||||
            		 */
 | 
			
		||||
            		else if (networkType == 'Virtual Switch' && nicType == 'QDIO') {
 | 
			
		||||
            			var temp = $(this).find('select[name=nicVSwitchName]').val().split(' ');
 | 
			
		||||
            			var vswitchName = temp[1];
 | 
			
		||||
            
 | 
			
		||||
            			$.ajax( {
 | 
			
		||||
            				url : 'lib/cmd.php',
 | 
			
		||||
            				dataType : 'json',
 | 
			
		||||
            				data : {
 | 
			
		||||
            					cmd : 'chvm',
 | 
			
		||||
            					tgt : node,
 | 
			
		||||
            					args : '--addnic;' + address + ';' + nicType + ';3',
 | 
			
		||||
            					msg : 'node=' + node + ';addr=' + address + ';vsw='
 | 
			
		||||
            						+ vswitchName
 | 
			
		||||
            				},
 | 
			
		||||
            
 | 
			
		||||
            				success : connect2VSwitch
 | 
			
		||||
            			});
 | 
			
		||||
            		} 
 | 
			
		||||
            		        		        		
 | 
			
		||||
            		// Increment node process
 | 
			
		||||
            		incrementNodeProcess(node);
 | 
			
		||||
            
 | 
			
		||||
            		// Show loader
 | 
			
		||||
            		var statusId = node + 'StatusBar';
 | 
			
		||||
            		var statusBarLoaderId = node + 'StatusBarLoader';
 | 
			
		||||
            		$('#' + statusBarLoaderId).show();
 | 
			
		||||
            		$('#' + statusId).show();
 | 
			
		||||
    		
 | 
			
		||||
    				// Close dialog
 | 
			
		||||
    				$(this).dialog( "close" );
 | 
			
		||||
        		} // End of else
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	});
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										318
									
								
								xCAT-UI/js/jquery/jquery-impromptu.3.0.min.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										318
									
								
								xCAT-UI/js/jquery/jquery-impromptu.3.0.min.js
									
									
									
									
										vendored
									
									
								
							@@ -1,318 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
 * jQuery Impromptu
 | 
			
		||||
 * By: Trent Richardson [http://trentrichardson.com]
 | 
			
		||||
 * Version 3.0
 | 
			
		||||
 * Last Modified: 2/15/2010
 | 
			
		||||
 * 
 | 
			
		||||
 * Copyright 2010 Trent Richardson
 | 
			
		||||
 * Dual licensed under the MIT and GPL licenses.
 | 
			
		||||
 * http://trentrichardson.com/Impromptu/GPL-LICENSE.txt
 | 
			
		||||
 * http://trentrichardson.com/Impromptu/MIT-LICENSE.txt
 | 
			
		||||
 * 
 | 
			
		||||
 */
 | 
			
		||||
(function($) {
 | 
			
		||||
	$.prompt = function(message, options) {
 | 
			
		||||
		options = $.extend( {}, $.prompt.defaults, options);
 | 
			
		||||
		$.prompt.currentPrefix = options.prefix;
 | 
			
		||||
		var ie6 = ($.browser.msie && $.browser.version < 7);
 | 
			
		||||
		var $body = $(document.body);
 | 
			
		||||
		var $window = $(window);
 | 
			
		||||
		options.classes = $.trim(options.classes);
 | 
			
		||||
		if (options.classes != '')
 | 
			
		||||
			options.classes = ' ' + options.classes;
 | 
			
		||||
		var msgbox = '<div class="' + options.prefix + 'box' + options.classes + '" id="' + options.prefix + 'box">';
 | 
			
		||||
		if (options.useiframe && (($('object, applet').length > 0) || ie6)) {
 | 
			
		||||
			msgbox += '<iframe src="javascript:false;" style="display:block;position:absolute;z-index:-1;" class="' + options.prefix + 'fade" id="' + options.prefix + 'fade"></iframe>';
 | 
			
		||||
		} else {
 | 
			
		||||
			if (ie6) {
 | 
			
		||||
				$('select').css('visibility', 'hidden');
 | 
			
		||||
			}
 | 
			
		||||
			msgbox += '<div class="' + options.prefix + 'fade" id="' + options.prefix + 'fade"></div>';
 | 
			
		||||
		}
 | 
			
		||||
		msgbox += '<div class="' + options.prefix + '" id="' + options.prefix + '"><div class="' + options.prefix + 'container"><div class="';
 | 
			
		||||
		msgbox += options.prefix + 'close">X</div><div id="' + options.prefix + 'states"></div>';
 | 
			
		||||
		msgbox += '</div></div></div>';
 | 
			
		||||
		var $jqib = $(msgbox).appendTo($body);
 | 
			
		||||
		var $jqi = $jqib.children('#' + options.prefix);
 | 
			
		||||
		var $jqif = $jqib.children('#' + options.prefix + 'fade');
 | 
			
		||||
		if (message.constructor == String) {
 | 
			
		||||
			message = {
 | 
			
		||||
				state0 : {
 | 
			
		||||
					html : message,
 | 
			
		||||
					buttons : options.buttons,
 | 
			
		||||
					focus : options.focus,
 | 
			
		||||
					submit : options.submit
 | 
			
		||||
				}
 | 
			
		||||
			};
 | 
			
		||||
		}
 | 
			
		||||
		var states = "";
 | 
			
		||||
		$
 | 
			
		||||
			.each(
 | 
			
		||||
				message,
 | 
			
		||||
				function(statename, stateobj) {
 | 
			
		||||
					stateobj = $.extend( {}, $.prompt.defaults.state, stateobj);
 | 
			
		||||
					message[statename] = stateobj;
 | 
			
		||||
					states += '<div id="' + options.prefix + '_state_' + statename + '" class="' + options.prefix + '_state" style="display:none;"><div class="' + options.prefix + 'message">' + stateobj.html + '</div><div class="' + options.prefix + 'buttons">';
 | 
			
		||||
					$
 | 
			
		||||
						.each(
 | 
			
		||||
							stateobj.buttons,
 | 
			
		||||
							function(k, v) {
 | 
			
		||||
								states += '<button name="' + options.prefix + '_' + statename + '_button' + k + '" id="' + options.prefix + '_' + statename + '_button' + k + '" value="' + v + '">' + k + '</button>';
 | 
			
		||||
							});
 | 
			
		||||
					states += '</div></div>';
 | 
			
		||||
				});
 | 
			
		||||
		$jqi.find('#' + options.prefix + 'states').html(states).children(
 | 
			
		||||
			'.' + options.prefix + '_state:first').css('display', 'block');
 | 
			
		||||
		$jqi.find('.' + options.prefix + 'buttons:empty')
 | 
			
		||||
			.css('display', 'none');
 | 
			
		||||
		$
 | 
			
		||||
			.each(
 | 
			
		||||
				message,
 | 
			
		||||
				function(statename, stateobj) {
 | 
			
		||||
					var $state = $jqi
 | 
			
		||||
						.find('#' + options.prefix + '_state_' + statename);
 | 
			
		||||
					$state
 | 
			
		||||
						.children('.' + options.prefix + 'buttons')
 | 
			
		||||
						.children('button')
 | 
			
		||||
						.click(
 | 
			
		||||
							function() {
 | 
			
		||||
								var msg = $state
 | 
			
		||||
									.children('.' + options.prefix + 'message');
 | 
			
		||||
								var clicked = stateobj.buttons[$(this).text()];
 | 
			
		||||
								var forminputs = {};
 | 
			
		||||
								$
 | 
			
		||||
									.each(
 | 
			
		||||
										$jqi
 | 
			
		||||
											.find(
 | 
			
		||||
												'#' + options.prefix + 'states :input')
 | 
			
		||||
											.serializeArray(),
 | 
			
		||||
										function(i, obj) {
 | 
			
		||||
											if (forminputs[obj.name] === undefined) {
 | 
			
		||||
												forminputs[obj.name] = obj.value;
 | 
			
		||||
											} else if (typeof forminputs[obj.name] == Array || typeof forminputs[obj.name] == 'object') {
 | 
			
		||||
												forminputs[obj.name]
 | 
			
		||||
													.push(obj.value);
 | 
			
		||||
											} else {
 | 
			
		||||
												forminputs[obj.name] = [
 | 
			
		||||
													forminputs[obj.name],
 | 
			
		||||
													obj.value ];
 | 
			
		||||
											}
 | 
			
		||||
										});
 | 
			
		||||
								var close = stateobj.submit(clicked, msg,
 | 
			
		||||
									forminputs);
 | 
			
		||||
								if (close === undefined || close) {
 | 
			
		||||
									removePrompt(true, clicked, msg, forminputs);
 | 
			
		||||
								}
 | 
			
		||||
							});
 | 
			
		||||
					$state
 | 
			
		||||
						.find(
 | 
			
		||||
							'.' + options.prefix + 'buttons button:eq(' + stateobj.focus + ')')
 | 
			
		||||
						.addClass(options.prefix + 'defaultbutton');
 | 
			
		||||
				});
 | 
			
		||||
		var ie6scroll = function() {
 | 
			
		||||
			$jqib.css( {
 | 
			
		||||
				top : $window.scrollTop()
 | 
			
		||||
			});
 | 
			
		||||
		};
 | 
			
		||||
		var fadeClicked = function() {
 | 
			
		||||
			if (options.persistent) {
 | 
			
		||||
				var i = 0;
 | 
			
		||||
				$jqib.addClass(options.prefix + 'warning');
 | 
			
		||||
				var intervalid = setInterval(function() {
 | 
			
		||||
					$jqib.toggleClass(options.prefix + 'warning');
 | 
			
		||||
					if (i++ > 1) {
 | 
			
		||||
						clearInterval(intervalid);
 | 
			
		||||
						$jqib.removeClass(options.prefix + 'warning');
 | 
			
		||||
					}
 | 
			
		||||
				}, 100);
 | 
			
		||||
			} else {
 | 
			
		||||
				removePrompt();
 | 
			
		||||
			}
 | 
			
		||||
		};
 | 
			
		||||
		var keyPressEventHandler = function(e) {
 | 
			
		||||
			var key = (window.event) ? event.keyCode : e.keyCode;
 | 
			
		||||
			if (key == 27) {
 | 
			
		||||
				fadeClicked();
 | 
			
		||||
			}
 | 
			
		||||
			if (key == 9) {
 | 
			
		||||
				var $inputels = $(':input:enabled:visible', $jqib);
 | 
			
		||||
				var fwd = !e.shiftKey && e.target == $inputels[$inputels.length - 1];
 | 
			
		||||
				var back = e.shiftKey && e.target == $inputels[0];
 | 
			
		||||
				if (fwd || back) {
 | 
			
		||||
					setTimeout(
 | 
			
		||||
						function() {
 | 
			
		||||
							if (!$inputels)
 | 
			
		||||
								return;
 | 
			
		||||
							var el = $inputels[back === true ? $inputels.length - 1 : 0];
 | 
			
		||||
							if (el)
 | 
			
		||||
								el.focus();
 | 
			
		||||
						}, 10);
 | 
			
		||||
					return false;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		};
 | 
			
		||||
		var positionPrompt = function() {
 | 
			
		||||
			$jqib.css( {
 | 
			
		||||
				position : (ie6) ? "absolute" : "fixed",
 | 
			
		||||
				height : $window.height(),
 | 
			
		||||
				width : "100%",
 | 
			
		||||
				top : (ie6) ? $window.scrollTop() : 0,
 | 
			
		||||
				left : 0,
 | 
			
		||||
				right : 0,
 | 
			
		||||
				bottom : 0
 | 
			
		||||
			});
 | 
			
		||||
			$jqif.css( {
 | 
			
		||||
				position : "absolute",
 | 
			
		||||
				height : $window.height(),
 | 
			
		||||
				width : "100%",
 | 
			
		||||
				top : 0,
 | 
			
		||||
				left : 0,
 | 
			
		||||
				right : 0,
 | 
			
		||||
				bottom : 0
 | 
			
		||||
			});
 | 
			
		||||
			$jqi.css( {
 | 
			
		||||
				position : "absolute",
 | 
			
		||||
				top : options.top,
 | 
			
		||||
				left : "50%",
 | 
			
		||||
				marginLeft : (($jqi.outerWidth() / 2) * -1)
 | 
			
		||||
			});
 | 
			
		||||
		};
 | 
			
		||||
		var stylePrompt = function() {
 | 
			
		||||
			$jqif.css( {
 | 
			
		||||
				zIndex : options.zIndex,
 | 
			
		||||
				display : "none",
 | 
			
		||||
				opacity : options.opacity
 | 
			
		||||
			});
 | 
			
		||||
			$jqi.css( {
 | 
			
		||||
				zIndex : options.zIndex + 1,
 | 
			
		||||
				display : "none"
 | 
			
		||||
			});
 | 
			
		||||
			$jqib.css( {
 | 
			
		||||
				zIndex : options.zIndex
 | 
			
		||||
			});
 | 
			
		||||
		};
 | 
			
		||||
		var removePrompt = function(callCallback, clicked, msg, formvals) {
 | 
			
		||||
			$jqi.remove();
 | 
			
		||||
			if (ie6) {
 | 
			
		||||
				$body.unbind('scroll', ie6scroll);
 | 
			
		||||
			}
 | 
			
		||||
			$window.unbind('resize', positionPrompt);
 | 
			
		||||
			$jqif.fadeOut(options.overlayspeed, function() {
 | 
			
		||||
				$jqif.unbind('click', fadeClicked);
 | 
			
		||||
				$jqif.remove();
 | 
			
		||||
				if (callCallback) {
 | 
			
		||||
					options.callback(clicked, msg, formvals);
 | 
			
		||||
				}
 | 
			
		||||
				$jqib.unbind('keypress', keyPressEventHandler);
 | 
			
		||||
				$jqib.remove();
 | 
			
		||||
				if (ie6 && !options.useiframe) {
 | 
			
		||||
					$('select').css('visibility', 'visible');
 | 
			
		||||
				}
 | 
			
		||||
			});
 | 
			
		||||
		};
 | 
			
		||||
		positionPrompt();
 | 
			
		||||
		stylePrompt();
 | 
			
		||||
		if (ie6) {
 | 
			
		||||
			$window.scroll(ie6scroll);
 | 
			
		||||
		}
 | 
			
		||||
		$jqif.click(fadeClicked);
 | 
			
		||||
		$window.resize(positionPrompt);
 | 
			
		||||
		$jqib.bind("keydown keypress", keyPressEventHandler);
 | 
			
		||||
		$jqi.find('.' + options.prefix + 'close').click(removePrompt);
 | 
			
		||||
		$jqif.fadeIn(options.overlayspeed);
 | 
			
		||||
		$jqi[options.show](options.promptspeed, options.loaded);
 | 
			
		||||
		$jqi
 | 
			
		||||
			.find(
 | 
			
		||||
				'#' + options.prefix + 'states .' + options.prefix + '_state:first .' + options.prefix + 'defaultbutton')
 | 
			
		||||
			.focus();
 | 
			
		||||
		if (options.timeout > 0)
 | 
			
		||||
			setTimeout($.prompt.close, options.timeout);
 | 
			
		||||
		return $jqib;
 | 
			
		||||
	};
 | 
			
		||||
	$.prompt.defaults = {
 | 
			
		||||
		prefix : 'jqi',
 | 
			
		||||
		classes : '',
 | 
			
		||||
		buttons : {
 | 
			
		||||
			Ok : true
 | 
			
		||||
		},
 | 
			
		||||
		loaded : function() {
 | 
			
		||||
		},
 | 
			
		||||
		submit : function() {
 | 
			
		||||
			return true;
 | 
			
		||||
		},
 | 
			
		||||
		callback : function() {
 | 
			
		||||
		},
 | 
			
		||||
		opacity : 0.6,
 | 
			
		||||
		zIndex : 999,
 | 
			
		||||
		overlayspeed : 'slow',
 | 
			
		||||
		promptspeed : 'fast',
 | 
			
		||||
		show : 'fadeIn',
 | 
			
		||||
		focus : 0,
 | 
			
		||||
		useiframe : false,
 | 
			
		||||
		top : "15%",
 | 
			
		||||
		persistent : true,
 | 
			
		||||
		timeout : 0,
 | 
			
		||||
		state : {
 | 
			
		||||
			html : '',
 | 
			
		||||
			buttons : {
 | 
			
		||||
				Ok : true
 | 
			
		||||
			},
 | 
			
		||||
			focus : 0,
 | 
			
		||||
			submit : function() {
 | 
			
		||||
				return true;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	};
 | 
			
		||||
	$.prompt.currentPrefix = $.prompt.defaults.prefix;
 | 
			
		||||
	$.prompt.setDefaults = function(o) {
 | 
			
		||||
		$.prompt.defaults = $.extend( {}, $.prompt.defaults, o);
 | 
			
		||||
	};
 | 
			
		||||
	$.prompt.setStateDefaults = function(o) {
 | 
			
		||||
		$.prompt.defaults.state = $.extend( {}, $.prompt.defaults.state, o);
 | 
			
		||||
	};
 | 
			
		||||
	$.prompt.getStateContent = function(state) {
 | 
			
		||||
		return $('#' + $.prompt.currentPrefix + '_state_' + state);
 | 
			
		||||
	};
 | 
			
		||||
	$.prompt.getCurrentState = function() {
 | 
			
		||||
		return $('.' + $.prompt.currentPrefix + '_state:visible');
 | 
			
		||||
	};
 | 
			
		||||
	$.prompt.getCurrentStateName = function() {
 | 
			
		||||
		var stateid = $.prompt.getCurrentState().attr('id');
 | 
			
		||||
		return stateid.replace($.prompt.currentPrefix + '_state_', '');
 | 
			
		||||
	};
 | 
			
		||||
	$.prompt.goToState = function(state) {
 | 
			
		||||
		$('.' + $.prompt.currentPrefix + '_state').slideUp('slow');
 | 
			
		||||
		$('#' + $.prompt.currentPrefix + '_state_' + state).slideDown(
 | 
			
		||||
			'slow',
 | 
			
		||||
			function() {
 | 
			
		||||
				$(this).find('.' + $.prompt.currentPrefix + 'defaultbutton')
 | 
			
		||||
					.focus();
 | 
			
		||||
			});
 | 
			
		||||
	};
 | 
			
		||||
	$.prompt.nextState = function() {
 | 
			
		||||
		var $next = $('.' + $.prompt.currentPrefix + '_state:visible').next();
 | 
			
		||||
		$('.' + $.prompt.currentPrefix + '_state').slideUp('slow');
 | 
			
		||||
		$next.slideDown('slow', function() {
 | 
			
		||||
			$next.find('.' + $.prompt.currentPrefix + 'defaultbutton').focus();
 | 
			
		||||
		});
 | 
			
		||||
	};
 | 
			
		||||
	$.prompt.prevState = function() {
 | 
			
		||||
		var $next = $('.' + $.prompt.currentPrefix + '_state:visible').prev();
 | 
			
		||||
		$('.' + $.prompt.currentPrefix + '_state').slideUp('slow');
 | 
			
		||||
		$next.slideDown('slow', function() {
 | 
			
		||||
			$next.find('.' + $.prompt.currentPrefix + 'defaultbutton').focus();
 | 
			
		||||
		});
 | 
			
		||||
	};
 | 
			
		||||
	$.prompt.close = function() {
 | 
			
		||||
		$('#' + $.prompt.currentPrefix + 'box').fadeOut('fast', function() {
 | 
			
		||||
			$(this).remove();
 | 
			
		||||
		});
 | 
			
		||||
	};
 | 
			
		||||
	$.fn.prompt = function(options) {
 | 
			
		||||
		if (options == undefined)
 | 
			
		||||
			options = {};
 | 
			
		||||
		if (options.withDataAndEvents == undefined)
 | 
			
		||||
			options.withDataAndEvents = false;
 | 
			
		||||
		$.prompt($(this).clone(withDataAndEvents).html(), options);
 | 
			
		||||
	}
 | 
			
		||||
})(jQuery);
 | 
			
		||||
@@ -154,195 +154,63 @@ function loadGroups(data) {
 | 
			
		||||
	// Create link to add nodes
 | 
			
		||||
	var addNodeLink = $('<a href="#">Add node</a>');
 | 
			
		||||
	addNodeLink.bind('click', function(event) {
 | 
			
		||||
		// Create form to give node range, group, and hardware management
 | 
			
		||||
		var mgtForm = '<div class="form">'
 | 
			
		||||
				+ '<div><label for="node">Node range:</label><input type="text" id="node" name="node"/></div>'
 | 
			
		||||
				+ '<div><label for="group">Group:</label><input type="text" id="group" name="group"/></div>'
 | 
			
		||||
				+ '<div><label for="mgt">Hardware management:</label>'
 | 
			
		||||
    				+ '<select id="mgt" name="mgt">'
 | 
			
		||||
        				+ '<option>ipmi</option>' 
 | 
			
		||||
        				+ '<option>blade</option>'
 | 
			
		||||
        				+ '<option>hmc</option>' 
 | 
			
		||||
        				+ '<option>ivm</option>'
 | 
			
		||||
        				+ '<option>fsp</option>'
 | 
			
		||||
        				+ '<option>zvm</option>'
 | 
			
		||||
    				+ '</select>'
 | 
			
		||||
				+ '</div>' 
 | 
			
		||||
			+ '</div>';
 | 
			
		||||
			
 | 
			
		||||
		// Create form for ipmi plugin
 | 
			
		||||
		var ipmiForm = '<div class="form">'
 | 
			
		||||
				+ '<div>Under contruction</div>'
 | 
			
		||||
			+ '</div>';
 | 
			
		||||
			
 | 
			
		||||
		// Create form for blade plugin
 | 
			
		||||
		var bladeForm = '<div class="form">'
 | 
			
		||||
				+ '<div>Under contruction</div>'
 | 
			
		||||
			+ '</div>';
 | 
			
		||||
			
 | 
			
		||||
		// Create form for hmc plugin
 | 
			
		||||
		var hmcForm = '<div class="form">'
 | 
			
		||||
				+ '<div>Under contruction</div>'
 | 
			
		||||
			+ '</div>';
 | 
			
		||||
			
 | 
			
		||||
		// Create form for ivm plugin
 | 
			
		||||
		var ivmForm = '<div class="form">'
 | 
			
		||||
				+ '<div>Under contruction</div>'
 | 
			
		||||
			+ '</div>';
 | 
			
		||||
			
 | 
			
		||||
		// Create form for fsp plugin
 | 
			
		||||
		var fspForm = '<div class="form">'
 | 
			
		||||
				+ '<div>Under contruction</div>'
 | 
			
		||||
			+ '</div>';
 | 
			
		||||
			
 | 
			
		||||
		// Create form for zvm plugin
 | 
			
		||||
		var zvmForm = '<div class="form">'
 | 
			
		||||
				+ '<div><label for="userId">User ID range:</label><input type="text" id="userId" name="userId"/></div>'
 | 
			
		||||
				+ '<div><label for="hcp">Hardware control point:</label><input type="text" id="hcp" name="hcp"/></div>'
 | 
			
		||||
			+ '</div>';
 | 
			
		||||
 | 
			
		||||
		var states = {
 | 
			
		||||
			mgt : {
 | 
			
		||||
				html : mgtForm,
 | 
			
		||||
				buttons : {
 | 
			
		||||
					Ok : true,
 | 
			
		||||
					Cancel : false
 | 
			
		||||
				},
 | 
			
		||||
				focus : 1,
 | 
			
		||||
				prefix : 'cleanblue',
 | 
			
		||||
				submit : function(v, m, f) {
 | 
			
		||||
					if (!v) {
 | 
			
		||||
						return true;
 | 
			
		||||
					} else {
 | 
			
		||||
						// Get the hardware management selected
 | 
			
		||||
						var mgt = f.mgt;
 | 
			
		||||
						switch(mgt) {
 | 
			
		||||
            				case "blade":
 | 
			
		||||
            		    		$.prompt.goToState("blade");
 | 
			
		||||
            		    		break;
 | 
			
		||||
            				case "fsp":
 | 
			
		||||
            					$.prompt.goToState("fsp");
 | 
			
		||||
            					break;
 | 
			
		||||
            				case "hmc":
 | 
			
		||||
            					$.prompt.goToState("hmc");
 | 
			
		||||
            					break;
 | 
			
		||||
            				case "ipmi":
 | 
			
		||||
            					$.prompt.goToState("ipmi");
 | 
			
		||||
            					break;		
 | 
			
		||||
            				case "ivm":
 | 
			
		||||
            					$.prompt.goToState("ivm");
 | 
			
		||||
            					break;
 | 
			
		||||
            				case "zvm":
 | 
			
		||||
            					$.prompt.goToState("zvm");
 | 
			
		||||
            					break;
 | 
			
		||||
            			}
 | 
			
		||||
 | 
			
		||||
						return false;
 | 
			
		||||
					} // End of else
 | 
			
		||||
				} // End of submit
 | 
			
		||||
			},
 | 
			
		||||
 | 
			
		||||
			// Show blade form
 | 
			
		||||
			blade : {
 | 
			
		||||
				html : bladeForm,
 | 
			
		||||
				buttons : {
 | 
			
		||||
					Ok : true,
 | 
			
		||||
					Cancel : false
 | 
			
		||||
				},
 | 
			
		||||
				focus : 1,
 | 
			
		||||
				prefix : 'cleanblue',
 | 
			
		||||
				submit : function(v, m, f) {
 | 
			
		||||
					if (v) {
 | 
			
		||||
						return true;
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			},
 | 
			
		||||
			
 | 
			
		||||
			// Show fsp form
 | 
			
		||||
			fsp : {
 | 
			
		||||
				html : fspForm,
 | 
			
		||||
				buttons : {
 | 
			
		||||
					Ok : true,
 | 
			
		||||
					Cancel : false
 | 
			
		||||
				},
 | 
			
		||||
				focus : 1,
 | 
			
		||||
				prefix : 'cleanblue',
 | 
			
		||||
				submit : function(v, m, f) {
 | 
			
		||||
					if (v) {
 | 
			
		||||
						return true;
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			},
 | 
			
		||||
			
 | 
			
		||||
			// Show hmc form
 | 
			
		||||
			hmc : {
 | 
			
		||||
				html : hmcForm,
 | 
			
		||||
				buttons : {
 | 
			
		||||
					Ok : true,
 | 
			
		||||
					Cancel : false
 | 
			
		||||
				},
 | 
			
		||||
				focus : 1,
 | 
			
		||||
				prefix : 'cleanblue',
 | 
			
		||||
				submit : function(v, m, f) {
 | 
			
		||||
					if (v) {
 | 
			
		||||
						return true;
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			},
 | 
			
		||||
			
 | 
			
		||||
			// Show ipmi form
 | 
			
		||||
			ipmi : {
 | 
			
		||||
				html : ipmiForm,
 | 
			
		||||
				buttons : {
 | 
			
		||||
					Ok : true,
 | 
			
		||||
					Cancel : false
 | 
			
		||||
				},
 | 
			
		||||
				focus : 1,
 | 
			
		||||
				prefix : 'cleanblue',
 | 
			
		||||
				submit : function(v, m, f) {
 | 
			
		||||
					if (v) {
 | 
			
		||||
						return true;
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			},
 | 
			
		||||
			
 | 
			
		||||
			// Show ivm form
 | 
			
		||||
			ivm : {
 | 
			
		||||
				html : ivmForm,
 | 
			
		||||
				buttons : {
 | 
			
		||||
					Ok : true,
 | 
			
		||||
					Cancel : false
 | 
			
		||||
				},
 | 
			
		||||
				focus : 1,
 | 
			
		||||
				prefix : 'cleanblue',
 | 
			
		||||
				submit : function(v, m, f) {
 | 
			
		||||
					if (v) {
 | 
			
		||||
						return true;
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			},
 | 
			
		||||
			
 | 
			
		||||
			// Show zvm form
 | 
			
		||||
			zvm : {
 | 
			
		||||
				html : zvmForm,
 | 
			
		||||
				buttons : {
 | 
			
		||||
					Ok : true,
 | 
			
		||||
					Cancel : false
 | 
			
		||||
				},
 | 
			
		||||
				focus : 1,
 | 
			
		||||
				prefix : 'cleanblue',
 | 
			
		||||
				submit : function(v, m, f) {
 | 
			
		||||
					if (v) {
 | 
			
		||||
						return true;
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
		var info = createInfoBar('Select the hardware management for the new node range');
 | 
			
		||||
		var addNodeForm = $('<div class="form"></div>');
 | 
			
		||||
		addNodeForm.append(info);
 | 
			
		||||
		addNodeForm.append('<div><label for="mgt">Hardware management:</label>'
 | 
			
		||||
    			+ '<select id="mgt" name="mgt">'
 | 
			
		||||
    			+ '<option>ipmi</option>' 
 | 
			
		||||
    			+ '<option>blade</option>'
 | 
			
		||||
    			+ '<option>hmc</option>' 
 | 
			
		||||
    			+ '<option>ivm</option>'
 | 
			
		||||
    			+ '<option>fsp</option>'
 | 
			
		||||
    			+ '<option>zvm</option>'
 | 
			
		||||
    		+ '</select>'
 | 
			
		||||
    	+ '</div>' );
 | 
			
		||||
					
 | 
			
		||||
		// Create add processor dialog
 | 
			
		||||
		addNodeForm.dialog({
 | 
			
		||||
			position: 'top',
 | 
			
		||||
			modal: true,
 | 
			
		||||
			width: 400,
 | 
			
		||||
			buttons: {
 | 
			
		||||
        		"Cancel": function(){
 | 
			
		||||
        			// Close dialog
 | 
			
		||||
        			$(this).dialog( "close" );
 | 
			
		||||
        		},
 | 
			
		||||
				"Ok": function(){
 | 
			
		||||
					// Get processor properties
 | 
			
		||||
					var mgt = $(this).find('select[name=mgt]').val();					
 | 
			
		||||
					
 | 
			
		||||
					var plugin;
 | 
			
		||||
					switch(mgt) {
 | 
			
		||||
			    		case "blade":
 | 
			
		||||
			        		plugin = new bladePlugin();
 | 
			
		||||
			        		break;
 | 
			
		||||
			    		case "fsp":
 | 
			
		||||
			    			plugin = new fspPlugin();
 | 
			
		||||
			    			break;
 | 
			
		||||
			    		case "hmc":
 | 
			
		||||
			    			plugin = new hmcPlugin();
 | 
			
		||||
			    			break;
 | 
			
		||||
			    		case "ipmi":
 | 
			
		||||
			    			plugin = new ipmiPlugin();
 | 
			
		||||
			    			break;		
 | 
			
		||||
			    		case "ivm":
 | 
			
		||||
			    			plugin = new ivmPlugin();
 | 
			
		||||
			    			break;
 | 
			
		||||
			    		case "zvm":
 | 
			
		||||
			    			plugin = new zvmPlugin();
 | 
			
		||||
			    			break;
 | 
			
		||||
			    	}
 | 
			
		||||
					
 | 
			
		||||
					plugin.addNode();
 | 
			
		||||
					
 | 
			
		||||
					// Close dialog
 | 
			
		||||
					$(this).dialog( "close" );
 | 
			
		||||
				}				
 | 
			
		||||
			}
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		$.prompt(states, {
 | 
			
		||||
			callback : addNode,
 | 
			
		||||
			prefix : 'cleanblue'
 | 
			
		||||
		});
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
	});
 | 
			
		||||
	$('#groups').append(addNodeLink);
 | 
			
		||||
@@ -1671,47 +1539,4 @@ function loadRconsPage(tgtNodes){
 | 
			
		||||
	
 | 
			
		||||
	//open the rcons page
 | 
			
		||||
	window.open(redirectUrl + "?rconsnd=" + tgtNodes, '', "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,width=670,height=436");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Add node
 | 
			
		||||
 * 
 | 
			
		||||
 * @param v
 | 
			
		||||
 *            Value of the button clicked
 | 
			
		||||
 * @param m
 | 
			
		||||
 *            jQuery object of the message within the active state when the user
 | 
			
		||||
 *            clicked the button
 | 
			
		||||
 * @param f
 | 
			
		||||
 *            Key/value pairs of the form values
 | 
			
		||||
 * 
 | 
			
		||||
 * @return Nothing
 | 
			
		||||
 */
 | 
			
		||||
function addNode(v, m, f) {
 | 
			
		||||
	// If user clicks Ok
 | 
			
		||||
	if (v) {
 | 
			
		||||
		var mgt = f.mgt;
 | 
			
		||||
		var plugin;
 | 
			
		||||
		switch(mgt) {
 | 
			
		||||
    		case "blade":
 | 
			
		||||
        		plugin = new bladePlugin();
 | 
			
		||||
        		break;
 | 
			
		||||
    		case "fsp":
 | 
			
		||||
    			plugin = new fspPlugin();
 | 
			
		||||
    			break;
 | 
			
		||||
    		case "hmc":
 | 
			
		||||
    			plugin = new hmcPlugin();
 | 
			
		||||
    			break;
 | 
			
		||||
    		case "ipmi":
 | 
			
		||||
    			plugin = new ipmiPlugin();
 | 
			
		||||
    			break;		
 | 
			
		||||
    		case "ivm":
 | 
			
		||||
    			plugin = new ivmPlugin();
 | 
			
		||||
    			break;
 | 
			
		||||
    		case "zvm":
 | 
			
		||||
    			plugin = new zvmPlugin();
 | 
			
		||||
    			break;
 | 
			
		||||
    	}
 | 
			
		||||
		
 | 
			
		||||
		plugin.addNode(f);
 | 
			
		||||
	} // End of if
 | 
			
		||||
}
 | 
			
		||||
@@ -320,12 +320,27 @@ function createStatusBar(barId) {
 | 
			
		||||
 */
 | 
			
		||||
function createInfoBar(msg) {
 | 
			
		||||
	var infoBar = $('<div class="ui-state-highlight ui-corner-all">');
 | 
			
		||||
	var msg = $('<p class="info"><span class="ui-icon ui-icon-info"></span>' + msg + '</p>');
 | 
			
		||||
	var msg = $('<p><span class="ui-icon ui-icon-info"></span>' + msg + '</p>');
 | 
			
		||||
	infoBar.append(msg);
 | 
			
		||||
 | 
			
		||||
	return infoBar;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Create warning bar
 | 
			
		||||
 * 
 | 
			
		||||
 * @param msg
 | 
			
		||||
 *            Warning message
 | 
			
		||||
 * @return Warning bar
 | 
			
		||||
 */
 | 
			
		||||
function createWarnBar(msg) {
 | 
			
		||||
	var warnBar = $('<div class="ui-state-error ui-corner-all">');
 | 
			
		||||
	var msg = $('<p><span class="ui-icon ui-icon-alert"></span>' + msg + '</p>');
 | 
			
		||||
	warnBar.append(msg);
 | 
			
		||||
 | 
			
		||||
	return warnBar;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Create a loader
 | 
			
		||||
 * 
 | 
			
		||||
@@ -504,4 +519,29 @@ function writeRsp(rsp, pattern) {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return prg;
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Open a dialog and show given message
 | 
			
		||||
 * 
 | 
			
		||||
 * @param msg
 | 
			
		||||
 * 			Message to show
 | 
			
		||||
 * @return Nothing
 | 
			
		||||
 */
 | 
			
		||||
function openDialog(msg) {
 | 
			
		||||
	// If there was an error, do not continue
 | 
			
		||||
	var div = $('<div><p>' + msg + '</p></div>');
 | 
			
		||||
		
 | 
			
		||||
	// Create dialog
 | 
			
		||||
	div.dialog({
 | 
			
		||||
		position: 'top',
 | 
			
		||||
		modal: true,
 | 
			
		||||
		width: 400,
 | 
			
		||||
		buttons: {
 | 
			
		||||
			"Ok": function(){ 
 | 
			
		||||
				// Close dialog
 | 
			
		||||
				$(this).dialog("close");
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	});
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user