365 lines
14 KiB
HTML
365 lines
14 KiB
HTML
|
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 4.0//EN">
|
|||
|
<html>
|
|||
|
<head>
|
|||
|
<meta name="Copyright" content="Copyright (c) 2004 by IBM Corporation">
|
|||
|
<!-- All rights reserved. Licensed Materials Property of IBM -->
|
|||
|
<!-- US Government Users Restricted Rights -->
|
|||
|
<!-- Use, duplication or disclosure restricted by -->
|
|||
|
<!-- GSA ADP Schedule Contract with IBM Corp. -->
|
|||
|
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
|
|||
|
<title>Windows Server installation advisor--Create new cluster</title>
|
|||
|
<script language="Javascript" type="text/javascript" src="rzahqadvcommon.js"></script>
|
|||
|
<script type="text/javascript" language="Javascript">
|
|||
|
<!-- // Hide script from older browsers
|
|||
|
|
|||
|
var errMess3 = "The cluster name is not in a valid format. The first character must be a letter (A-Z), dollar sign ($), pound sign (#), or 'at' sign (@). The remaining characters can contain these characters as well as digits (0-9), underscores (_), and periods (.).";
|
|||
|
var errMess1 = "Enter the name of the new cluster.";
|
|||
|
var errMess2 = "Enter the domain name of the cluster.";
|
|||
|
var errMess4 = "Enter the quorum resource disk pool. The disk pool must be a integer from 1 to 255.";
|
|||
|
var errMess5 = "The quorum resource disk pool must be an integer from 1 to 255.";
|
|||
|
var errMess6 = "Enter the account password.";
|
|||
|
var errMess7 = "Enter the account name.";
|
|||
|
var errMess11 = "The account name is not in a valid format. The first character must be a letter (A-Z), dollar sign ($), pound sign (#), or 'at' sign (@). The remaining characters can contain these characters as well as digits (0-9) and underscores (_).";
|
|||
|
|
|||
|
|
|||
|
var errMess = "You entered an unallowed internet address. The segments of an internet address must be numbers from 0 to 255.";
|
|||
|
var errMess8 = "You entered an unallowed subnet mask. The segments of an subnet mask must be numbers from 0 to 255.";
|
|||
|
var errMess9 = "Enter an internet address for the cluster.";
|
|||
|
var errMess10 = "Enter a subnet mask for the cluster.";
|
|||
|
|
|||
|
var errMess12 = "Specify a value for the quorum resource size between 550 and 1024000 MB.";
|
|||
|
|
|||
|
var errMess13 = "If a quorum resource disk pool name is specified, the quorum resource disk pool number must be equal to 1.";
|
|||
|
|
|||
|
//START NON-TRANSLATABLE
|
|||
|
//Obtain name of HTML file in parent frame.
|
|||
|
var parentDir = parent.window.location.href.substring(0,location.href.lastIndexOf('/')+1);
|
|||
|
var parentUrl = parent.window.location.href.substring(parentDir.length,parent.window.location.href.length+1);
|
|||
|
if (parentUrl.indexOf("#") >= 0) { parentUrl = parentUrl.substring(0,parentUrl.indexOf("#"));}
|
|||
|
|
|||
|
function checkFrame() {
|
|||
|
//Is the hidden frame already loaded with the correct html?
|
|||
|
if (parentUrl != "rzahqadvisor1.htm") {
|
|||
|
window.location = "rzahqadvisor1.htm"; //load advisor frameset
|
|||
|
return;
|
|||
|
} else {
|
|||
|
//Obtain name of HTML file in hidden frame.
|
|||
|
var hiddenDir = parent.hidden.window.location.href.substring(0,location.href.lastIndexOf('/')+1);
|
|||
|
var hiddenUrl = parent.hidden.window.location.href.substring(hiddenDir.length,parent.hidden.window.location.href.length+1);
|
|||
|
if (hiddenUrl.indexOf("#") >= 0) { hiddenUrl = hiddenUrl.substring(0,hiddenUrl.indexOf("#"));}
|
|||
|
if (hiddenUrl != "rzahqadvhidden.htm") {
|
|||
|
//Correct HTML not loaded, load it
|
|||
|
parent.hidden.window.location = "rzahqadvhidden.htm";
|
|||
|
} else { //already loaded
|
|||
|
getData();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
function getData() {
|
|||
|
clustfound = false;
|
|||
|
z = 0;
|
|||
|
if (!isEmpty(parent.hidden.v1[87])) { document.form1.newname.value = parent.hidden.v1[87]; }
|
|||
|
if (!isEmpty(parent.hidden.v1[88])) { document.form1.clustdom.value = parent.hidden.v1[88]; }
|
|||
|
if (!isEmpty(parent.hidden.v1[89])) {
|
|||
|
document.form1.quorum.value = parent.hidden.v1[89];
|
|||
|
} else { //default
|
|||
|
document.form1.quorum.value = "1";
|
|||
|
}
|
|||
|
if (!isEmpty(parent.hidden.v1[94])) { document.form1.qASPname.value = parent.hidden.v1[94]; }
|
|||
|
if (!isEmpty(parent.hidden.v1[90])) {
|
|||
|
while (z < document.form1.clusterport.length && clustfound == false) {
|
|||
|
if (document.form1.clusterport.options[z].value == parseInt(parent.hidden.v1[90],10)) {
|
|||
|
document.form1.clusterport[z].selected = true;
|
|||
|
clustfound = true;
|
|||
|
} else {
|
|||
|
z = z + 1;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
if (!isEmpty(parent.hidden.v1[91])) {
|
|||
|
var seg = parent.hidden.v1[91].split(".");
|
|||
|
document.form1.a1.value = seg[0];
|
|||
|
document.form1.a2.value = seg[1];
|
|||
|
document.form1.a3.value = seg[2];
|
|||
|
document.form1.a4.value = seg[3];
|
|||
|
}
|
|||
|
if (!isEmpty(parent.hidden.v1[92])) {
|
|||
|
var seg = parent.hidden.v1[92].split(".");
|
|||
|
document.form1.b1.value = seg[0];
|
|||
|
document.form1.b2.value = seg[1];
|
|||
|
document.form1.b3.value = seg[2];
|
|||
|
document.form1.b4.value = seg[3];
|
|||
|
}
|
|||
|
// quorum resource data
|
|||
|
if (!isEmpty(parent.hidden.v1[93])) {
|
|||
|
document.form1.size.value = parent.hidden.v1[93];
|
|||
|
document.form1.rad[1].checked = true;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
function onNext() {
|
|||
|
p1 = ".";
|
|||
|
ip1 = document.form1.a1.value + p1 + document.form1.a2.value + p1 + document.form1.a3.value + p1 + document.form1.a4.value;
|
|||
|
sub1 = document.form1.b1.value + p1 + document.form1.b2.value + p1 + document.form1.b3.value + p1 + document.form1.b4.value;
|
|||
|
//Save data
|
|||
|
//cluster name
|
|||
|
if (!isEmpty(document.form1.newname.value)) {
|
|||
|
if (isValidName(document.form1.newname.value) == false) {
|
|||
|
alert(errMess3);
|
|||
|
document.form1.newname.focus();
|
|||
|
document.form1.newname.select();
|
|||
|
return;
|
|||
|
} else {
|
|||
|
parent.hidden.v1[87] = document.form1.newname.value;
|
|||
|
}
|
|||
|
} else {
|
|||
|
alert(errMess1);
|
|||
|
document.form1.newname.focus();
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
//cluster domain name
|
|||
|
if (!isEmpty(document.form1.clustdom.value)) {
|
|||
|
parent.hidden.v1[88] = document.form1.clustdom.value;
|
|||
|
} else {
|
|||
|
alert(errMess2);
|
|||
|
document.form1.clustdom.focus();
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
//quorum resource disk pool
|
|||
|
if (isEmpty(document.form1.quorum.value)) { //has to pass these tests - is there something in the quorum ASP # field?
|
|||
|
alert(errMess5);
|
|||
|
document.form1.quorum.select();
|
|||
|
document.form1.quorum.focus();
|
|||
|
return;
|
|||
|
}
|
|||
|
if (!isInteger(document.form1.quorum.value)) { // is it an integer?
|
|||
|
alert(errMess5);
|
|||
|
document.form1.quorum.select();
|
|||
|
document.form1.quorum.focus();
|
|||
|
return;
|
|||
|
}
|
|||
|
if ((document.form1.quorum.value < 1) || (document.form1.quorum.value > 255)) { //is it 1 <= num <= 255 ?
|
|||
|
alert(errMess5);
|
|||
|
document.form1.quorum.select();
|
|||
|
document.form1.quorum.focus();
|
|||
|
return;
|
|||
|
}
|
|||
|
if ((!isEmpty(document.form1.qASPname.value)) && (document.form1.quorum.value != 1)) { //if a disk pool name is specified, is disk pool num equal to 1?
|
|||
|
alert(errMess13);
|
|||
|
return;
|
|||
|
} else {
|
|||
|
parent.hidden.v1[94] = document.form1.qASPname.value; // if not save the quorum disk pool name
|
|||
|
}
|
|||
|
//Save data
|
|||
|
parent.hidden.v1[89] = document.form1.quorum.value; // if we get this far, save the quorum disk pool number
|
|||
|
|
|||
|
//cluster port
|
|||
|
parent.hidden.v1[90] = document.form1.clusterport.options[document.form1.clusterport.selectedIndex].value;
|
|||
|
|
|||
|
//internet address
|
|||
|
if (!isEmpty(document.form1.a1.value) || !isEmpty(document.form1.a2.value) || !isEmpty(document.form1.a3.value) || !isEmpty(document.form1.a4.value)) {
|
|||
|
//Must have valid data in address
|
|||
|
if (isInteger(document.form1.a1.value) && isInteger(document.form1.a2.value) && isInteger(document.form1.a3.value) && isInteger(document.form1.a4.value)) {
|
|||
|
if (!isValidIPAddress(ip1)) {
|
|||
|
alert(errMess);
|
|||
|
document.form1.a1.select();
|
|||
|
document.form1.a1.focus();
|
|||
|
return;
|
|||
|
} else {
|
|||
|
parent.hidden.v1[91] = ip1;
|
|||
|
}
|
|||
|
} else {
|
|||
|
//One of the segments is not a number
|
|||
|
alert(errMess);
|
|||
|
document.form1.a1.select();
|
|||
|
document.form1.a1.focus();
|
|||
|
return;
|
|||
|
}
|
|||
|
} else { //all empty
|
|||
|
alert(errMess9);
|
|||
|
document.form1.a1.focus();
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
//subnet mask
|
|||
|
if (!isEmpty(document.form1.b1.value) || !isEmpty(document.form1.b2.value) || !isEmpty(document.form1.b3.value) || !isEmpty(document.form1.b4.value)) {
|
|||
|
//Must have valid data in address
|
|||
|
if (isInteger(document.form1.b1.value) && isInteger(document.form1.b2.value) && isInteger(document.form1.b3.value) && isInteger(document.form1.b4.value)) {
|
|||
|
if (!isValidIPAddress(sub1)) {
|
|||
|
alert(errMess8);
|
|||
|
document.form1.b1.select();
|
|||
|
document.form1.b1.focus();
|
|||
|
return;
|
|||
|
} else {
|
|||
|
parent.hidden.v1[92] = sub1;
|
|||
|
}
|
|||
|
} else {
|
|||
|
//One of the segments is not a number
|
|||
|
alert(errMess8);
|
|||
|
document.form1.b1.select();
|
|||
|
document.form1.b1.focus();
|
|||
|
return;
|
|||
|
}
|
|||
|
} else { //all empty
|
|||
|
alert(errMess10);
|
|||
|
document.form1.b1.focus();
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
//cluster quorum resource size
|
|||
|
if (document.form1.rad[0].checked == true) {
|
|||
|
parent.hidden.v1[93] = "550"; //store the default value of 550 MB
|
|||
|
} else {
|
|||
|
if ((isEmpty(document.form1.size.value)) || ((parseInt(document.form1.size.value,10) < 550) || (parseInt(document.form1.size.value,10) > 1024000))) { // if the manual radio button is checked and the wrong value has been specified, alert!
|
|||
|
alert(errMess12)
|
|||
|
document.form1.size.select();
|
|||
|
document.form1.size.focus();
|
|||
|
return;
|
|||
|
} else {
|
|||
|
parent.hidden.v1[93] = document.form1.size.value; //store the manually specified value
|
|||
|
}
|
|||
|
}
|
|||
|
//Next page
|
|||
|
window.location = "rzahqadvisor31.htm";
|
|||
|
}
|
|||
|
|
|||
|
function onBack() {
|
|||
|
window.location = "rzahqadvisor29.htm";
|
|||
|
}
|
|||
|
|
|||
|
//END NON-TRANSLATABLE
|
|||
|
|
|||
|
////////// -->
|
|||
|
</script>
|
|||
|
<link rel="stylesheet" type="text/css" href="../rzahg/ic.css">
|
|||
|
</head>
|
|||
|
|
|||
|
<body onLoad="checkFrame()">
|
|||
|
<h2>Windows Server installation advisor</h2>
|
|||
|
<strong>Create new cluster</strong>
|
|||
|
<p>To create a new cluster, specify the following information.</p>
|
|||
|
<form name="form1">
|
|||
|
<blockquote>
|
|||
|
<table>
|
|||
|
<tr>
|
|||
|
<td><label for="newname">Cluster name:</label></td>
|
|||
|
<td><input type="text" size="20" maxlength="10" name="newname" id="newname"></td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td><label for="clustdom">Cluster domain name:</label></td>
|
|||
|
<td><input type="text" name="clustdom" id="clustdom" size="30" maxlength="15"></td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td><label for="quorum">Quorum resource disk pool (1-255):</label></td>
|
|||
|
<td><input type="text" name="quorum" id="quorum" maxlength="3" size="6"></td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td><label for="qASPname">* Quorum resource disk pool name (optional):</label></td>
|
|||
|
<td><input type="text" name="qASPname" id="qASPname" maxlength="10" size="10"></td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td><label for="clusterport">Cluster connection port</label></td>
|
|||
|
<td>
|
|||
|
|
|||
|
<script type="text/javascript" language="Javascript">
|
|||
|
<!-- //////////
|
|||
|
//START NON-TRANSLATABLE
|
|||
|
vep = new Array();
|
|||
|
//END NON-TRANSLATABLE
|
|||
|
|
|||
|
vep[0] = "Virtual Ethernet port 0";
|
|||
|
vep[1] = "Virtual Ethernet port 1";
|
|||
|
vep[2] = "Virtual Ethernet port 2";
|
|||
|
vep[3] = "Virtual Ethernet port 3";
|
|||
|
vep[4] = "Virtual Ethernet port 4";
|
|||
|
vep[5] = "Virtual Ethernet port 5";
|
|||
|
vep[6] = "Virtual Ethernet port 6";
|
|||
|
vep[7] = "Virtual Ethernet port 7";
|
|||
|
vep[8] = "Virtual Ethernet port 8";
|
|||
|
vep[9] = "Virtual Ethernet port 9";
|
|||
|
|
|||
|
//START NON-TRANSLATABLE
|
|||
|
tx1 = "<select name='clusterport' id='clusterport'>";
|
|||
|
tx2 = "<option value='";
|
|||
|
tx3 = "'>";
|
|||
|
tx4 = "<\/option>";
|
|||
|
tx5 = "<\/select>";
|
|||
|
|
|||
|
document.writeln(tx1);
|
|||
|
if (!isEmpty(parent.hidden.v1[75])) {
|
|||
|
document.write(tx2);
|
|||
|
document.write(parseInt(parent.hidden.v1[75],10));
|
|||
|
document.write(tx3);
|
|||
|
document.write(vep[parseInt(parent.hidden.v1[75],10)]);
|
|||
|
document.write(tx4);
|
|||
|
}
|
|||
|
if (!isEmpty(parent.hidden.v1[78])) {
|
|||
|
document.write(tx2);
|
|||
|
document.write(parseInt(parent.hidden.v1[78],10));
|
|||
|
document.write(tx3);
|
|||
|
document.write(vep[parseInt(parent.hidden.v1[78],10)]);
|
|||
|
document.write(tx4);
|
|||
|
}
|
|||
|
if (!isEmpty(parent.hidden.v1[81])) {
|
|||
|
document.write(tx2);
|
|||
|
document.write(parseInt(parent.hidden.v1[81],10));
|
|||
|
document.write(tx3);
|
|||
|
document.write(vep[parseInt(parent.hidden.v1[81],10)]);
|
|||
|
document.write(tx4);
|
|||
|
}
|
|||
|
if (!isEmpty(parent.hidden.v1[84])) {
|
|||
|
document.write(tx2);
|
|||
|
document.write(parseInt(parent.hidden.v1[84],10));
|
|||
|
document.write(tx3);
|
|||
|
document.write(vep[parseInt(parent.hidden.v1[84],10)]);
|
|||
|
document.write(tx4);
|
|||
|
}
|
|||
|
|
|||
|
document.writeln(tx5);
|
|||
|
|
|||
|
//END NON-TRANSLATABLE
|
|||
|
|
|||
|
////////// -->
|
|||
|
</script>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td><label for="clad">Cluster internet address:</label></td>
|
|||
|
<td><input type="text" name="a1" size="3" maxlength="3" id="clad">
|
|||
|
. <input type="text" size="3" maxlength="3" name="a2" id="clad">
|
|||
|
. <input type="text" size="3" maxlength="3" name="a3" id="clad">
|
|||
|
. <input type="text" size="3" maxlength="3" name="a4" id="clad"></td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td><label for="club">Cluster subnet mask:</label></td>
|
|||
|
<td><input type="text" name="b1" size="3" maxlength="3" id="club">
|
|||
|
. <input type="text" size="3" maxlength="3" name="b2" id="club">
|
|||
|
. <input type="text" size="3" maxlength="3" name="b3" id="club">
|
|||
|
. <input type="text" size="3" maxlength="3" name="b4" id="club"></td>
|
|||
|
</tr>
|
|||
|
</table>
|
|||
|
</blockquote>
|
|||
|
<p>Quorum resource size (550 - 1024000 MB):</p>
|
|||
|
<blockquote>
|
|||
|
<table>
|
|||
|
<tr>
|
|||
|
<td><input type="radio" name="rad" value="calc" id="calc" checked><label for="calc">I would like the advisor to recommend a size for me.</label></td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td><input type="radio" name="rad" value="input" id="input"><label for="input">I would like to manually specify the size: </label><input type="text" size="8" maxlength="7" name="size" id="input" onKeyPress="selectRadio(1)"></td>
|
|||
|
</tr>
|
|||
|
</table>
|
|||
|
</blockquote>
|
|||
|
<br><p>* If name is specified, Quorum resource disk pool number must be set to 1.</p><br>
|
|||
|
<center>
|
|||
|
<input type="button" value="<< Back" onClick="onBack()">
|
|||
|
<input type="button" value="Next >>" onClick="onNext()">
|
|||
|
</center>
|
|||
|
</form>
|
|||
|
|
|||
|
</body>
|
|||
|
</html>
|