bug 6940: IP Address page - implement Enable Static NAT action.

This commit is contained in:
Jessica Wang 2010-11-17 17:48:59 -08:00
parent 4c7bb302bc
commit e6f0ab4dba
2 changed files with 85 additions and 23 deletions

View File

@ -643,4 +643,23 @@
</div>
</div>
<!-- Create User for VPN (end) -->
<!-- Enable Static NAT Dialog (begin) -->
<div id="dialog_enable_static_NAT" title="Enable Static NAT" style="display: none">
<div class="dialog_formcontent">
<form action="#" method="post" id="form3">
<ol>
<li>
<label for="vm_dropdown">
Instance:</label>
<select class="select" name="vm_dropdown" id="vm_dropdown">
</select>
<div id="vm_dropdown_errormsg" class="dialog_formcontent_errormsg" style="display: none;">
</li>
</ol>
</form>
</div>
</div>
<!-- Enable Static NAT Dialog (end) -->
<!-- dialogs (end) -->

View File

@ -31,6 +31,7 @@ function afterLoadIpJSP() {
initDialog("dialog_disable_vpn");
initDialog("dialog_add_vpnuser");
initDialog("dialog_confirmation_remove_vpnuser");
initDialog("dialog_enable_static_NAT");
//*** Acquire New IP (begin) ***
$.ajax({
@ -93,7 +94,8 @@ function afterLoadIpJSP() {
isValid &= validateDropDownBox("Instance", $createPortForwardingRow.find("#vm"), $createPortForwardingRow.find("#vm_errormsg"));
isValid &= validateNumber("Public Port", $createPortForwardingRow.find("#public_port"), $createPortForwardingRow.find("#public_port_errormsg"), 1, 65535);
isValid &= validateNumber("Private Port", $createPortForwardingRow.find("#private_port"), $createPortForwardingRow.find("#private_port_errormsg"), 1, 65535);
if (!isValid) return;
if (!isValid)
return;
var $template = $("#port_forwarding_template").clone();
$("#tab_content_port_forwarding #grid_content").append($template.show());
@ -732,16 +734,29 @@ function ipJsonToDetailsTab() {
var $actionMenu = $("#right_panel_content #tab_content_details #action_link #action_menu");
$actionMenu.find("#action_list").empty();
var noAvailableActions = true;
if(isIpManageable(ipObj.domainid, ipObj.account) == true && ipObj.issourcenat != true) {
buildActionLinkForTab("Release IP", ipActionMap, $actionMenu, $midmenuItem1, $thisTab);
noAvailableActions = false;
}
if(ipObj.isstaticnat == true) {
}
else { //ipObj.isstaticnat == false
buildActionLinkForTab("Enable Static NAT", ipActionMap, $actionMenu, $midmenuItem1, $thisTab);
noAvailableActions = false;
if(isIpManageable(ipObj.domainid, ipObj.account) == true && ipObj.issourcenat != true) {
buildActionLinkForTab("Release IP", ipActionMap, $actionMenu, $midmenuItem1, $thisTab);
}
}
// no available actions
if(noAvailableActions == true) {
$actionMenu.find("#action_list").append($("#no_available_actions").clone().show());
}
//populate dropdown
var IpDomainid = ipObj.domainid;
var IpAccount = ipObj.account;
var $vmSelect = $("#dialog_enable_static_NAT").find("#vm_dropdown").empty();
ipPopulateVMDropdown($vmSelect, IpDomainid, IpAccount);
$thisTab.find("#tab_spinning_wheel").hide();
$thisTab.find("#tab_container").show();
@ -765,17 +780,6 @@ function ipClearDetailsTab() {
$actionMenu.find("#action_list").append($("#no_available_actions").clone().show());
}
/*
function setSourceNatField(value, $field) {
if(value == true)
$field.text("Yes");
else if(value == false)
$field.text("No");
else
$field.text("");
}
*/
function setNetworkTypeField(value, $field) {
if(value == true)
$field.text("Public");
@ -797,6 +801,19 @@ var ipActionMap = {
clearRightPanel();
ipClearRightPanel();
}
},
"Enable Static NAT": {
isAsyncJob: true,
asyncJobResponse: "createipforwardingruleresponse",
dialogBeforeActionFn: doEnableStaticNAT,
inProcessText: "Enabling Static NAT....",
afterActionSeccessFn: function(json, $midmenuItem1, id){
//var item = json.queryasyncjobresultresponse.jobresult.portforwardingrule;
var $midmenuItem1 = $("#right_panel_content").data("$midmenuItem1");
var ipObj = $midmenuItem1.data("jsonObj");
ipObj.isstaticnat = true;
setBooleanReadField(ipObj.isstaticnat, $("#right_panel_content #tab_content_details").find("#static_nat"));
}
}
}
@ -817,6 +834,32 @@ function doReleaseIp($actionLink, $detailsTab, $midmenuItem1) {
}
}).dialog("open");
}
function doEnableStaticNAT($actionLink, $detailsTab, $midmenuItem1) {
var $detailsTab = $("#right_panel_content #tab_content_details");
var jsonObj = $detailsTab.data("jsonObj");
var ipaddress = jsonObj.ipaddress;
$("#dialog_enable_static_NAT")
.dialog('option', 'buttons', {
"Confirm": function() {
var $thisDialog = $(this);
//validate
var vmId = $thisDialog.find("#vm_dropdown").val();
if(vmId == null || vmId.length == 0)
return;
$thisDialog.dialog("close");
var apiCommand = "command=createIpForwardingRule&ipaddress="+ipaddress+"&virtualmachineid="+vmId;
doActionToTab(ipaddress, $actionLink, apiCommand, $midmenuItem1, $detailsTab);
},
"Cancel": function() {
$(this).dialog("close");
}
}).dialog("open");
}
//***** Details tab (end) ******************************************************************************************************************
//***** Port Forwarding tab (begin) ********************************************************************************************************
@ -848,7 +891,7 @@ function portForwardingJsonToTemplate(jsonObj, $template) {
var IpAccount = fromdb(ipObj.account);
var $vmSelect = $template.find("#row_container_edit #vm").empty();
ipPortFowardingPopulateVMDropdown($vmSelect, IpDomainid, IpAccount);
ipPopulateVMDropdown($vmSelect, IpDomainid, IpAccount);
$vmSelect.val(virtualMachineId);
var $rowContainer = $template.find("#row_container");
@ -958,15 +1001,15 @@ function refreshCreatePortForwardingRow() {
$createPortForwardingRow.find("#protocol").val("TCP");
var $detailsTab = $("#right_panel_content #tab_content_details");
var jsonObj = $detailsTab.data("jsonObj");
var IpDomainid = jsonObj.domainid;
var IpAccount = jsonObj.account;
var ipObj = $detailsTab.data("jsonObj");
var IpDomainid = ipObj.domainid;
var IpAccount = ipObj.account;
var $vmSelect = $createPortForwardingRow.find("#vm").empty();
ipPortFowardingPopulateVMDropdown($vmSelect, IpDomainid, IpAccount);
ipPopulateVMDropdown($vmSelect, IpDomainid, IpAccount);
}
function ipPortFowardingPopulateVMDropdown($vmSelect, IpDomainid, IpAccount) {
function ipPopulateVMDropdown($vmSelect, IpDomainid, IpAccount) {
$.ajax({
data: createURL("command=listVirtualMachines&domainid="+IpDomainid+"&account="+IpAccount+"&state=Running"),
dataType: "json",