mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-10-26 08:42:29 +01:00 
			
		
		
		
	bug 6940: IP Address page - implement Enable Static NAT action.
This commit is contained in:
		
							parent
							
								
									4c7bb302bc
								
							
						
					
					
						commit
						e6f0ab4dba
					
				| @ -643,4 +643,23 @@ | |||||||
| 	</div> | 	</div> | ||||||
| </div> | </div> | ||||||
| <!-- Create User for VPN (end) --> | <!-- 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) --> | <!--  dialogs (end) --> | ||||||
|  | |||||||
| @ -31,6 +31,7 @@ function afterLoadIpJSP() { | |||||||
| 	initDialog("dialog_disable_vpn"); | 	initDialog("dialog_disable_vpn"); | ||||||
| 	initDialog("dialog_add_vpnuser"); | 	initDialog("dialog_add_vpnuser"); | ||||||
| 	initDialog("dialog_confirmation_remove_vpnuser"); | 	initDialog("dialog_confirmation_remove_vpnuser"); | ||||||
|  | 	initDialog("dialog_enable_static_NAT"); | ||||||
|      |      | ||||||
|     //*** Acquire New IP (begin) ***
 |     //*** Acquire New IP (begin) ***
 | ||||||
| 	$.ajax({ | 	$.ajax({ | ||||||
| @ -93,7 +94,8 @@ function afterLoadIpJSP() { | |||||||
| 		isValid &= validateDropDownBox("Instance", $createPortForwardingRow.find("#vm"), $createPortForwardingRow.find("#vm_errormsg"));				 | 		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("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);				 | 		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(); | 	    var $template = $("#port_forwarding_template").clone(); | ||||||
| 	    $("#tab_content_port_forwarding #grid_content").append($template.show());		 | 	    $("#tab_content_port_forwarding #grid_content").append($template.show());		 | ||||||
| @ -733,9 +735,16 @@ function ipJsonToDetailsTab() { | |||||||
|     $actionMenu.find("#action_list").empty(); |     $actionMenu.find("#action_list").empty(); | ||||||
|     var noAvailableActions = true; |     var noAvailableActions = true; | ||||||
|          |          | ||||||
|     if(isIpManageable(ipObj.domainid, ipObj.account) == true && ipObj.issourcenat != true) {      |     if(ipObj.isstaticnat == true) { | ||||||
|         buildActionLinkForTab("Release IP", ipActionMap, $actionMenu, $midmenuItem1, $thisTab);		 |      | ||||||
|  |     } | ||||||
|  |     else { //ipObj.isstaticnat == false  
 | ||||||
|  |         buildActionLinkForTab("Enable Static NAT", ipActionMap, $actionMenu, $midmenuItem1, $thisTab);	         | ||||||
|         noAvailableActions = false; |         noAvailableActions = false; | ||||||
|  |          | ||||||
|  |         if(isIpManageable(ipObj.domainid, ipObj.account) == true && ipObj.issourcenat != true) {      | ||||||
|  |             buildActionLinkForTab("Release IP", ipActionMap, $actionMenu, $midmenuItem1, $thisTab);		             | ||||||
|  |         } | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     // no available actions 
 |     // no available actions 
 | ||||||
| @ -743,6 +752,12 @@ function ipJsonToDetailsTab() { | |||||||
| 	    $actionMenu.find("#action_list").append($("#no_available_actions").clone().show()); | 	    $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_spinning_wheel").hide();     | ||||||
|     $thisTab.find("#tab_container").show();     |     $thisTab.find("#tab_container").show();     | ||||||
| } | } | ||||||
| @ -765,17 +780,6 @@ function ipClearDetailsTab() { | |||||||
|     $actionMenu.find("#action_list").append($("#no_available_actions").clone().show());		  |     $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) {   | function setNetworkTypeField(value, $field) {   | ||||||
|     if(value == true) |     if(value == true) | ||||||
|         $field.text("Public"); |         $field.text("Public"); | ||||||
| @ -797,6 +801,19 @@ var ipActionMap = { | |||||||
|             clearRightPanel(); |             clearRightPanel(); | ||||||
|             ipClearRightPanel(); |             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"); | 	}).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) ******************************************************************************************************************
 | //***** Details tab (end) ******************************************************************************************************************
 | ||||||
| 
 | 
 | ||||||
| //***** Port Forwarding tab (begin) ********************************************************************************************************
 | //***** Port Forwarding tab (begin) ********************************************************************************************************
 | ||||||
| @ -848,7 +891,7 @@ function portForwardingJsonToTemplate(jsonObj, $template) { | |||||||
|     var IpAccount = fromdb(ipObj.account);     |     var IpAccount = fromdb(ipObj.account);     | ||||||
|      |      | ||||||
|     var $vmSelect = $template.find("#row_container_edit #vm").empty();			     |     var $vmSelect = $template.find("#row_container_edit #vm").empty();			     | ||||||
|     ipPortFowardingPopulateVMDropdown($vmSelect, IpDomainid, IpAccount); |     ipPopulateVMDropdown($vmSelect, IpDomainid, IpAccount); | ||||||
|     $vmSelect.val(virtualMachineId);     |     $vmSelect.val(virtualMachineId);     | ||||||
|    	   	    	    |    	   	    	    | ||||||
|     var $rowContainer = $template.find("#row_container");       |     var $rowContainer = $template.find("#row_container");       | ||||||
| @ -958,15 +1001,15 @@ function refreshCreatePortForwardingRow() { | |||||||
|     $createPortForwardingRow.find("#protocol").val("TCP");  		     |     $createPortForwardingRow.find("#protocol").val("TCP");  		     | ||||||
|         |         | ||||||
|     var $detailsTab = $("#right_panel_content #tab_content_details");    |     var $detailsTab = $("#right_panel_content #tab_content_details");    | ||||||
|     var jsonObj = $detailsTab.data("jsonObj");     |     var ipObj = $detailsTab.data("jsonObj");     | ||||||
|     var IpDomainid = jsonObj.domainid; |     var IpDomainid = ipObj.domainid; | ||||||
|     var IpAccount = jsonObj.account; |     var IpAccount = ipObj.account; | ||||||
| 
 | 
 | ||||||
|     var $vmSelect = $createPortForwardingRow.find("#vm").empty();		 |     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({ |     $.ajax({ | ||||||
| 	    data: createURL("command=listVirtualMachines&domainid="+IpDomainid+"&account="+IpAccount+"&state=Running"), | 	    data: createURL("command=listVirtualMachines&domainid="+IpDomainid+"&account="+IpAccount+"&state=Running"), | ||||||
| 	    dataType: "json", | 	    dataType: "json", | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user