bug 7713: Add Zone Wizard - add one more step (step 4: Add an IP range to public network in zone) for advanced zone.

This commit is contained in:
Jessica Wang 2011-01-05 17:21:10 -08:00
parent 8a263f34ba
commit e4674ac127
2 changed files with 225 additions and 84 deletions

View File

@ -394,7 +394,9 @@
<div class="vmpop_prevbutton" id="back_to_step_2" style="display: block;">
Back
</div>
<div class="vmpop_nextbutton" id="submit_button">
<div class="vmpop_nextbutton" id="go_to_step_4" style="display: none;">
Go to Step 4</div>
<div class="vmpop_nextbutton" id="submit_in_step3" style="display: block;">
Submit
</div>
</div>
@ -405,7 +407,7 @@
</div>
<!-- step 3 (end) -->
<!-- step 4 (begin) -->
<!-- step 4 (begin) -->
<div id="step4" style="display: none;">
<div class="zonepopup_container_top">
<div class="vmpopup_steps" style="background: url(images/step1_bg_unselected.png) no-repeat top left">
@ -425,81 +427,99 @@
<div class="zonepopup_maincontentarea">
<div class="zonepopup_titlebox">
<h2>
Step 3: <strong>Add a Pod</strong></h2>
<p>
Please enter the following info to add a new pod
Step 4: <strong>Add an IP range to public network in zone</strong></h2>
<p>
</p>
</div>
<div class="zonepopup_contentpanel">
<div class="zonepoup_formcontent">
<form action="#" method="post" id="form_acquire">
<ol>
<li>
<label for="user_name" style="width: 115px;">
Name:</label>
<input class="text" type="text" name="add_pod_name" id="add_pod_name" />
<div id="add_pod_name_errormsg" class="dialog_formcontent_errormsg" style="display: none; margin-left:0;">
<li id="add_publicip_vlan_container">
<label for="add_publicip_vlan_tagged">
VLAN:</label>
<select class="select" name="add_publicip_vlan_tagged" id="add_publicip_vlan_tagged">
<option value="untagged">untagged</option>
<option value="tagged">tagged</option>
</select>
</li>
<li style="display: none" id="add_publicip_vlan_vlan_container">
<label for="user_name">
VLAN ID:</label>
<input class="text" type="text" name="add_publicip_vlan_vlan" id="add_publicip_vlan_vlan" />
<div id="add_publicip_vlan_vlan_errormsg" class="dialog_formcontent_errormsg" style="display: none;">
</div>
</li>
<li id="add_publicip_vlan_scope_container">
<label for="add_publicip_vlan_scope">
Scope:</label>
<select class="select" name="add_publicip_vlan_scope" id="add_publicip_vlan_scope">
<!--
<option value="zone-wide">zone-wide</option>
<option value="account-specific">account-specific</option>
-->
</select>
</li>
<li style="display: none" id="add_publicip_vlan_pod_container">
<label for="user_name">
Pod:</label>
<select class="select" name="add_publicip_vlan_pod" id="add_publicip_vlan_pod">
</select>
</li>
<li style="display: none" id="add_publicip_vlan_domain_container">
<label for="user_name">
Domain:</label>
<select class="select" name="add_publicip_vlan_domain" id="add_publicip_vlan_domain">
</select>
</li>
<li style="display: none" id="add_publicip_vlan_account_container">
<label for="user_name">
Account:</label>
<input class="text" type="text" name="add_publicip_vlan_account" id="add_publicip_vlan_account" />
<div id="add_publicip_vlan_account_errormsg" class="dialog_formcontent_errormsg"
style="display: none;">
</div>
</li>
<li>
<label for="add_pod_gateway" style="width: 115px;">
<label for="user_name">
Gateway:</label>
<input class="text" type="text" id="add_pod_gateway" />
<div id="add_pod_gateway_errormsg" class="dialog_formcontent_errormsg" style="display: none; margin-left:0;">
<input class="text" type="text" name="add_publicip_vlan_gateway" id="add_publicip_vlan_gateway" />
<div id="add_publicip_vlan_gateway_errormsg" class="dialog_formcontent_errormsg"
style="display: none;">
</div>
</li>
<li>
<label for="user_name" style="width: 115px;">
<label for="user_name">
Netmask:</label>
<input class="text" type="text" name="add_pod_netmask" id="add_pod_netmask" />
<div id="add_pod_netmask_errormsg" class="dialog_formcontent_errormsg" style="display: none; margin-left:0;">
<input class="text" type="text" name="add_publicip_vlan_netmask" id="add_publicip_vlan_netmask" />
<div id="add_publicip_vlan_netmask_errormsg" class="dialog_formcontent_errormsg"
style="display: none;">
</div>
</li>
<li>
<label for="user_name" style="width: 115px;">
Reserved System IP:</label>
<input class="text" style="width: 92px" type="text" name="add_pod_startip" id="add_pod_startip" /><span>-</span>
<input class="text" style="width: 92px" type="text" name="add_pod_endip" id="add_pod_endip" />
<div id="add_pod_startip_errormsg" class="dialog_formcontent_errormsg" style="display: none; margin-left:133px;">
<label for="user_name">
IP Range:</label>
<input class="text" style="width: 67px" type="text" name="add_publicip_vlan_startip"
id="add_publicip_vlan_startip" /><span>-</span>
<input class="text" style="width: 67px" type="text" name="add_publicip_vlan_endip"
id="add_publicip_vlan_endip" />
<div id="add_publicip_vlan_startip_errormsg" class="dialog_formcontent_errormsg"
style="display: none;">
</div>
<div id="add_pod_endip_errormsg" class="dialog_formcontent_errormsg" style="display: none; ">
<div id="add_publicip_vlan_endip_errormsg" class="dialog_formcontent_errormsg" style="display: none;">
</div>
</li>
<li id="guestip_container">
<label style="width: 115px;">
Guest IP Range:</label>
<input class="text" style="width: 92px" type="text" id="startguestip" /><span>-</span>
<input class="text" style="width: 92px" type="text" id="endguestip" />
<div id="startguestip_errormsg" class="dialog_formcontent_errormsg" style="display: none; margin-left:133px;">
</div>
<div id="endguestip_errormsg" class="dialog_formcontent_errormsg" style="display: none;">
</div>
</li>
<li id="guestnetmask_container">
<label style="width: 115px;">
Guest Netmask:</label>
<input class="text" type="text" id="guestnetmask" />
<div id="guestnetmask_errormsg" class="dialog_formcontent_errormsg" style="display: none; margin-left:0;">
</div>
</li>
<li id="guestgateway_container">
<label style="width: 115px;">
Guest Gateway:</label>
<input class="text" type="text" id="guestgateway" />
<div id="guestgateway_errormsg" class="dialog_formcontent_errormsg" style="display: none; margin-left:0;">
</div>
</li>
</li>
</ol>
</form>
</div>
</div>
<div class="zonepopup_navigationpanel">
<div class="vmpop_prevbutton" id="back_to_step_2" style="display: block;">
<div class="vmpop_prevbutton" id="back_to_step_3" style="display: block;">
Back
</div>
<div class="vmpop_nextbutton" id="submit_button">
</div>
<div class="vmpop_nextbutton" id="submit_in_step4" style="display: block;">
Submit
</div>
</div>
</div>
</div>
</div>
@ -555,13 +575,13 @@
</div>
</div>
<div class="zonepopup_reviewbox odd" id="add_guestiprange_message_container" style="display:none">
<div class="zonepopup_reviewbox odd" id="add_iprange_message_container">
<div class="zonepopup_reviewtextbox">
<div id="add_guestiprange_tick_cross"> <!-- class "zonepopup_reviewtick" or class "zonepopup_reviewcross" -->
<div id="add_iprange_tick_cross"> <!-- class "zonepopup_reviewtick" or class "zonepopup_reviewcross" -->
</div>
<div class="zonepopup_review_label">
Guest IP Range:</div>
<span id="add_guestiprange_message"> <!-- add class "error" if in error -->
IP Range:</div>
<span id="add_iprange_message"> <!-- add class "error" if in error -->
</span>
</div>
</div>

View File

@ -974,8 +974,12 @@ function resourceCountTotal() {
function refreshAddZoneWizard() {
var $addZoneWizard = $("#add_zone_wizard");
$addZoneWizard.find("#step2, #step3, #after_submit_screen").hide();
$addZoneWizard.find("#step2, #step3, #step4, #after_submit_screen").hide();
$addZoneWizard.find("#step1").show();
$addZoneWizard.find("#step4").find("#add_publicip_vlan_tagged").change();
$addZoneWizard.find("#step4").find("#add_publicip_vlan_scope").change(); // default value of "#add_publicip_vlan_scope" is "zone-wide". Calling change() will hide "#add_publicip_vlan_domain_container", "#add_publicip_vlan_account_container".
$addZoneWizard.find("#basic_mode").click();
}
@ -1001,6 +1005,36 @@ function initAddZoneWizard() {
}
return false;
});
//....
$addZoneWizard.find("#step4").find("#add_publicip_vlan_tagged").unbind("change").bind("change", function(event) {
if ($(this).val() == "tagged") {
$addZoneWizard.find("#step4").find("#add_publicip_vlan_vlan_container").show();
$addZoneWizard.find("#step4").find("#add_publicip_vlan_pod_container").hide();
$addZoneWizard.find("#step4").find("#add_publicip_vlan_scope").empty().append('<option value="zone-wide">zone-wide</option>').append('<option value="account-specific">account-specific</option>');
}
else if($(this).val() == "untagged") {
$addZoneWizard.find("#step4").find("#add_publicip_vlan_vlan_container").hide();
$addZoneWizard.find("#step4").find("#add_publicip_vlan_pod_container").hide();
$addZoneWizard.find("#step4").find("#add_publicip_vlan_scope").empty().append('<option value="zone-wide">zone-wide</option>');
}
return false;
});
$addZoneWizard.find("#step4").find("#add_publicip_vlan_scope").change(function(event) {
if($(this).val() == "zone-wide") {
$addZoneWizard.find("#step4").find("#add_publicip_vlan_domain_container").hide();
$addZoneWizard.find("#step4").find("#add_publicip_vlan_account_container").hide();
}
else if($(this).val() == "account-specific") {
$addZoneWizard.find("#step4").find("#add_publicip_vlan_domain_container").show();
$addZoneWizard.find("#step4").find("#add_publicip_vlan_account_container").show();
}
return false;
});
//....
var domainDropdown = $addZoneWizard.find("#domain_dropdown").empty();
$.ajax({
@ -1029,14 +1063,20 @@ function initAddZoneWizard() {
case "Basic": //create VLAN in pod-level
//hide Zone VLAN Range in Add Zone(step 2), show Guest IP Range in Add Pod(step3)
$thisWizard.find("#step2").find("#add_zone_vlan_container, #add_zone_guestcidraddress_container").hide();
$thisWizard.find("#step3").find("#guestip_container, #guestnetmask_container, #guestgateway_container").show();
$thisWizard.find("#step3").find("#guestip_container, #guestnetmask_container, #guestgateway_container, #submit_in_step3").show();
$thisWizard.find("#step3").find("#go_to_step_4").hide();
return true;
break;
case "Advanced": //create VLAN in zone-level
//show Zone VLAN Range in Add Zone(step 2), hide Guest IP Range in Add Pod(step3)
$thisWizard.find("#step2").find("#add_zone_vlan_container, #add_zone_guestcidraddress_container").show();
$thisWizard.find("#step3").find("#guestip_container, #guestnetmask_container, #guestgateway_container").hide();
$thisWizard.find("#step3").find("#guestip_container, #guestnetmask_container, #guestgateway_container, #submit_in_step3").hide();
$thisWizard.find("#step3").find("#go_to_step_4").show();
// default value of "#add_publicip_vlan_scope" is "zone-wide". Calling change() will hide "#add_publicip_vlan_domain_container", "#add_publicip_vlan_account_container".
$addZoneWizard.find("#step4").find("#add_publicip_vlan_scope").change();
return true;
break;
@ -1051,7 +1091,23 @@ function initAddZoneWizard() {
return;
$thisWizard.find("#step2").hide();
$thisWizard.find("#step3").show();
break;
break;
case "go_to_step_4": //step 3 => step 4
var isValid = addZoneWizardValidatePod($thisWizard);
if($thisWizard.find("#step3").find("#guestip_container").css("display") != "none")
isValid &= addZoneWizardValidateGuestIPRange($thisWizard);
if (!isValid)
return;
$thisWizard.find("#step3").hide();
$thisWizard.find("#step4").show();
break;
case "back_to_step_3": //step 4 => step 3
$thisWizard.find("#step4").hide();
$thisWizard.find("#step3").show();
break;
case "back_to_step_2": //step 3 => step 2
$thisWizard.find("#step3").hide();
@ -1063,7 +1119,7 @@ function initAddZoneWizard() {
$thisWizard.find("#step1").show();
break;
case "submit_button": //step 3 => make API call
case "submit_in_step3": //step 3 => make API call
var isValid = addZoneWizardValidatePod($thisWizard);
if($thisWizard.find("#step3").find("#guestip_container").css("display") != "none")
isValid &= addZoneWizardValidateGuestIPRange($thisWizard);
@ -1073,7 +1129,17 @@ function initAddZoneWizard() {
$thisWizard.find("#step3").hide();
$thisWizard.find("#after_submit_screen").show();
addZoneWizardSubmit($thisWizard);
break;
break;
case "submit_in_step4": //step 4 => make API call
var isValid = addZoneWizardValidatePublicIPRange($thisWizard);
if (!isValid)
return;
$thisWizard.find("#step4").hide();
$thisWizard.find("#after_submit_screen").show();
addZoneWizardSubmit($thisWizard);
break;
}
return false;
});
@ -1117,6 +1183,24 @@ function addZoneWizardValidateGuestIPRange($thisWizard) {
return isValid;
}
function addZoneWizardValidatePublicIPRange($thisWizard) {
var isValid = true;
var isTagged = $thisWizard.find("#step4").find("#add_publicip_vlan_tagged").val() == "tagged";
isValid &= validateString("Account", $thisWizard.find("#step4").find("#add_publicip_vlan_account"), $thisWizard.find("#step4").find("#add_publicip_vlan_account_errormsg"), true); //optional
if (isTagged) {
isValid &= validateNumber("VLAN", $thisWizard.find("#step4").find("#add_publicip_vlan_vlan"), $thisWizard.find("#step4").find("#add_publicip_vlan_vlan_errormsg"), 2, 4095);
}
isValid &= validateIp("Gateway", $thisWizard.find("#step4").find("#add_publicip_vlan_gateway"), $thisWizard.find("#step4").find("#add_publicip_vlan_gateway_errormsg"), false); //required
isValid &= validateIp("Netmask", $thisWizard.find("#step4").find("#add_publicip_vlan_netmask"), $thisWizard.find("#step4").find("#add_publicip_vlan_netmask_errormsg"), false); //required
isValid &= validateIp("Start IP Range", $thisWizard.find("#step4").find("#add_publicip_vlan_startip"), $thisWizard.find("#step4").find("#add_publicip_vlan_startip_errormsg"), false); //required
isValid &= validateIp("End IP Range", $thisWizard.find("#step4").find("#add_publicip_vlan_endip"), $thisWizard.find("#step4").find("#add_publicip_vlan_endip_errormsg"), true); //optional
return isValid;
}
function addZoneWizardSubmit($thisWizard) {
$thisWizard.find("#spinning_wheel").show();
@ -1198,7 +1282,8 @@ function addZoneWizardSubmit($thisWizard) {
}
});
if(zoneId != null) {
if(zoneId != null) {
// create pod (begin)
var name = trim($thisWizard.find("#add_pod_name").val());
var netmask = trim($thisWizard.find("#add_pod_netmask").val());
var startip = trim($thisWizard.find("#add_pod_startip").val());
@ -1233,18 +1318,7 @@ function addZoneWizardSubmit($thisWizard) {
var podTotal = parseInt($("#pod_total").text());
podTotal++;
$("#pod_total").text(podTotal.toString());
forceLogout = false; // We don't force a logout if pod(s) exit.
if (forceLogout) {
$("#dialog_confirmation")
.html("<p>You have successfully added your first Zone and Pod. After clicking 'OK', this UI will automatically refresh to give you access to the rest of cloud features.</p>")
.dialog('option', 'buttons', {
"OK": function() {
window.location.reload();
}
}).dialog("open");
}
$("#pod_total").text(podTotal.toString());
},
error: function(XMLHttpResponse) {
handleError(XMLHttpResponse, function() {
@ -1253,11 +1327,61 @@ function addZoneWizardSubmit($thisWizard) {
});
}
});
// create pod (end)
// add IP range to public network in zone (begin)
if($("input[name=basic_advanced]:checked").val() == "Advanced") {
var isDirect = false;
var isTagged = $thisWizard.find("#step4").find("#add_publicip_vlan_tagged").val() == "tagged";
var vlan = trim($thisWizard.find("#step4").find("#add_publicip_vlan_vlan").val());
if (isTagged) {
vlan = "&vlan="+vlan;
} else {
vlan = "&vlan=untagged";
}
var scopeParams = "";
if($thisWizard.find("#step4").find("#add_publicip_vlan_scope").val() == "account-specific") {
scopeParams = "&domainId="+trim($thisWizard.find("#step4").find("#add_publicip_vlan_domain").val())+"&account="+trim($thisWizard.find("#step4").find("#add_publicip_vlan_account").val());
} else if (isDirect) {
scopeParams = "&isshared=true";
}
var array1 = [];
var gateway = $thisWizard.find("#step4").find("#add_publicip_vlan_gateway").val();
array1.push("&gateway="+todb(gateway));
var netmask = $thisWizard.find("#step4").find("#add_publicip_vlan_netmask").val();
array1.push("&netmask="+todb(netmask));
var startip = $thisWizard.find("#step4").find("#add_publicip_vlan_startip").val();
array1.push("&startip="+todb(startip));
var endip = $thisWizard.find("#step4").find("#add_publicip_vlan_endip").val(); //optional field (might be empty)
if(endip != null && endip.length > 0)
array1.push("&endip="+todb(endip));
$.ajax({
data: createURL("command=createVlanIpRange&forVirtualNetwork=true&zoneId="+zoneId+vlan+scopeParams+array1.join("")),
dataType: "json",
success: function(json) {
$thisWizard.find("#after_submit_screen").find("#add_iprange_tick_cross").removeClass().addClass("zonepopup_reviewtick");
$thisWizard.find("#after_submit_screen").find("#add_iprange_message").removeClass().text("Public IP range was created successfully");
var item = json.createvlaniprangeresponse.vlan;
vlanId = item.id;
},
error: function(XMLHttpResponse) {
handleError(XMLHttpResponse, function() {
handleErrorInDialog(XMLHttpResponse, $thisWizard.find("#step4"));
});
}
});
}
// add IP range to public network in zone (end)
}
if(podId != null && $thisWizard.find("#step3").find("#guestip_container").css("display") != "none") {
$thisWizard.find("#after_submit_screen").find("#add_guestiprange_message_container").show();
var netmask = $thisWizard.find("#step3").find("#guestnetmask").val();
var startip = $thisWizard.find("#step3").find("#startguestip").val();
var endip = $thisWizard.find("#step3").find("#endguestip").val();
@ -1279,23 +1403,20 @@ function addZoneWizardSubmit($thisWizard) {
dataType: "json",
async: false,
success: function(json) {
$thisWizard.find("#after_submit_screen").find("#add_guestiprange_tick_cross").removeClass().addClass("zonepopup_reviewtick");
$thisWizard.find("#after_submit_screen").find("#add_guestiprange_message").removeClass().text("Guest IP range was created successfully");
$thisWizard.find("#after_submit_screen").find("#add_iprange_tick_cross").removeClass().addClass("zonepopup_reviewtick");
$thisWizard.find("#after_submit_screen").find("#add_iprange_message").removeClass().text("Guest IP range was created successfully");
var item = json.createvlaniprangeresponse.vlan;
vlanId = item.id;
},
error: function(XMLHttpResponse) {
handleError(XMLHttpResponse, function() {
$thisWizard.find("#after_submit_screen").find("#add_guestiprange_tick_cross").removeClass().addClass("zonepopup_reviewcross");
$thisWizard.find("#after_submit_screen").find("#add_guestiprange_message").removeClass().addClass("error").text(("Failed to create Guest IP range: " + parseXMLHttpResponse(XMLHttpResponse)));
$thisWizard.find("#after_submit_screen").find("#add_iprange_tick_cross").removeClass().addClass("zonepopup_reviewcross");
$thisWizard.find("#after_submit_screen").find("#add_iprange_message").removeClass().addClass("error").text(("Failed to create Guest IP range: " + parseXMLHttpResponse(XMLHttpResponse)));
});
}
});
}
else {
$thisWizard.find("#after_submit_screen").find("#add_guestiprange_message_container").hide();
}
}
$thisWizard.find("#spinning_wheel").hide();
}