mirror of https://github.com/apache/cloudstack.git
cloudStack - Elastic Load Balancer feature - if listCapabilities returns supportELB as true, hide Acquire IP button and show Add Load Balancer and IP button on IP Address page. Clicking Add Load Balancer and IP button will pop up a dialog containing zone dropdown (populated with basic zones), name, public port, private port, algorithm dropdown.
This commit is contained in:
parent
2abb982469
commit
b999980ce8
|
|
@ -486,6 +486,15 @@ dictionary = {
|
|||
<fmt:message key="label.acquire.new.ip"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="actionpanel_button_wrapper" id="add_load_balancer_and_ip_button" style="display:none;">
|
||||
<div class="actionpanel_button">
|
||||
<div class="actionpanel_button_icons">
|
||||
<img src="images/addvm_actionicon.png" /></div>
|
||||
<div class="actionpanel_button_links">
|
||||
<fmt:message key="label.add.load.balancer.and.ip"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- top buttons (end) -->
|
||||
|
|
@ -772,6 +781,45 @@ dictionary = {
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div id="dialog_add_load_balancer_and_ip" title='<fmt:message key="label.add.load.balancer.and.ip"/>' style="display: none">
|
||||
<div class="dialog_formcontent">
|
||||
<form action="#" method="post" id="form1">
|
||||
<ol>
|
||||
<li>
|
||||
<label>
|
||||
<fmt:message key="label.zone"/>:</label>
|
||||
<select class="select" name="acquire_zone" id="acquire_zone">
|
||||
<option value="default"><fmt:message key="label.waiting"/>....</option>
|
||||
</select>
|
||||
</li>
|
||||
<li>
|
||||
<label><fmt:message key="label.name"/>:</label>
|
||||
<input class="text" type="text" id="name"/>
|
||||
<div id="name_errormsg" class="dialog_formcontent_errormsg" style="display:none;"></div>
|
||||
</li>
|
||||
<li>
|
||||
<label><fmt:message key="label.public.port"/>:</label>
|
||||
<input class="text" type="text" id="public_port"/>
|
||||
<div id="public_port_errormsg" class="dialog_formcontent_errormsg" style="display:none;"></div>
|
||||
</li>
|
||||
<li>
|
||||
<label><fmt:message key="label.private.port"/>:</label>
|
||||
<input class="text" type="text" id="private_port"/>
|
||||
<div id="private_port_errormsg" class="dialog_formcontent_errormsg" style="display:none;"></div>
|
||||
</li>
|
||||
<li>
|
||||
<label><fmt:message key="label.algorithm"/>:</label>
|
||||
<select class="select" id="algorithm_select">
|
||||
<option value='roundrobin'>roundrobin</option>
|
||||
<option value='leastconn'>leastconn</option>
|
||||
<option value='source'>source</option>
|
||||
</select>
|
||||
</li>
|
||||
</ol>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Create User for VPN (begin) -->
|
||||
<div id="dialog_add_vpnuser" title="Add VPN User" style="display:none">
|
||||
<p>
|
||||
|
|
|
|||
|
|
@ -693,7 +693,9 @@ $(document).ready(function() {
|
|||
data: createURL("command=listCapabilities"),
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function(json) {
|
||||
success: function(json) {
|
||||
g_supportELB = json.listcapabilitiesresponse.capability.supportELB;
|
||||
|
||||
if (json.listcapabilitiesresponse.capability.userpublictemplateenabled != null) {
|
||||
g_userPublicTemplateEnabled = ""+json.listcapabilitiesresponse.capability.userpublictemplateenabled;
|
||||
$.cookie('userpublictemplateenabled', g_userPublicTemplateEnabled, { expires: 1});
|
||||
|
|
|
|||
|
|
@ -73,327 +73,434 @@ function afterLoadIpJSP() {
|
|||
switchBetweenDifferentTabs(tabArray, tabContentArray, afterSwitchFnArray);
|
||||
//***** switch between different tabs (end) **********************************************************************
|
||||
|
||||
//dialogs
|
||||
initDialog("dialog_acquire_public_ip", 325);
|
||||
initDialog("dialog_enable_vpn");
|
||||
initDialog("dialog_disable_vpn");
|
||||
initDialog("dialog_add_vpnuser");
|
||||
initDialog("dialog_confirmation_remove_vpnuser");
|
||||
initDialog("dialog_enable_static_NAT");
|
||||
|
||||
//*** Acquire New IP (begin) ***
|
||||
$.ajax({
|
||||
data: createURL("command=listZones&available=true"),
|
||||
dataType: "json",
|
||||
success: function(json) {
|
||||
var zones = json.listzonesresponse.zone;
|
||||
var zoneSelect = $("#dialog_acquire_public_ip #acquire_zone").empty();
|
||||
if (zones != null && zones.length > 0) {
|
||||
for (var i = 0; i < zones.length; i++) {
|
||||
zoneSelect.append("<option value='" + zones[i].id + "'>" + fromdb(zones[i].name) + "</option>");
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$("#acquire_new_ip_button").unbind("click").bind("click", function(event) {
|
||||
var submenuContent = $("#submenu_content_network");
|
||||
$("#dialog_acquire_public_ip").dialog('option', 'buttons', {
|
||||
"Acquire": function() {
|
||||
var thisDialog = $(this);
|
||||
thisDialog.dialog("close");
|
||||
|
||||
var zoneid = thisDialog.find("#acquire_zone").val();
|
||||
|
||||
var $midmenuItem1 = beforeAddingMidMenuItem() ;
|
||||
|
||||
$.ajax({
|
||||
data: createURL("command=associateIpAddress&zoneid="+zoneid),
|
||||
dataType: "json",
|
||||
success: function(json) {
|
||||
var jobId = json.associateipaddressresponse.jobid;
|
||||
var timerKey = "associateIpJob_"+jobId;
|
||||
|
||||
$("body").everyTime(2000, timerKey, function() {
|
||||
$.ajax({
|
||||
data: createURL("command=queryAsyncJobResult&jobId="+jobId),
|
||||
dataType: "json",
|
||||
success: function(json) {
|
||||
var result = json.queryasyncjobresultresponse;
|
||||
if (result.jobstatus == 0) {
|
||||
return; //Job has not completed
|
||||
} else {
|
||||
$("body").stopTime(timerKey);
|
||||
if (result.jobstatus == 1) {
|
||||
// Succeeded
|
||||
ipToMidmenu(result.jobresult.ipaddress, $midmenuItem1);
|
||||
bindClickToMidMenu($midmenuItem1, ipToRightPanel, ipGetMidmenuId);
|
||||
afterAddingMidMenuItem($midmenuItem1, true);
|
||||
} else if (result.jobstatus == 2) {
|
||||
afterAddingMidMenuItem($midmenuItem1, false, fromdb(result.jobresult.errortext));
|
||||
}
|
||||
}
|
||||
},
|
||||
error: function(XMLHttpResponse) {
|
||||
$("body").stopTime(timerKey);
|
||||
handleError(XMLHttpResponse, function() {
|
||||
afterAddingMidMenuItem($midmenuItem1, false, parseXMLHttpResponse(XMLHttpResponse));
|
||||
});
|
||||
}
|
||||
});
|
||||
}, 0);
|
||||
},
|
||||
error: function(XMLHttpResponse) {
|
||||
handleError(XMLHttpResponse, function() {
|
||||
afterAddingMidMenuItem($midmenuItem1, false, parseXMLHttpResponse(XMLHttpResponse));
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
"Cancel": function() {
|
||||
$(this).dialog("close");
|
||||
}
|
||||
}).dialog("open");
|
||||
return false;
|
||||
});
|
||||
//*** Acquire New IP (end) ***
|
||||
|
||||
//*** Port Range tab (begin) ***
|
||||
var $createPortRangeRow = $("#tab_content_port_range").find("#create_port_range_row");
|
||||
|
||||
$createPortRangeRow.find("#add_link").bind("click", function(event){
|
||||
var isValid = true;
|
||||
isValid &= validateInteger("Start Port", $createPortRangeRow.find("#start_port"), $createPortRangeRow.find("#start_port_errormsg"), 1, 65535);
|
||||
isValid &= validateInteger("End Port", $createPortRangeRow.find("#end_port"), $createPortRangeRow.find("#end_port_errormsg"), 1, 65535);
|
||||
if (!isValid)
|
||||
return;
|
||||
|
||||
var $template = $("#port_range_template").clone();
|
||||
$("#tab_content_port_range #grid_content").append($template.show());
|
||||
|
||||
var $spinningWheel = $template.find("#row_container").find("#spinning_wheel");
|
||||
$spinningWheel.find("#description").text(g_dictionary["label.adding.processing"]);
|
||||
$spinningWheel.show();
|
||||
|
||||
var $midmenuItem1 = $("#right_panel_content").data("$midmenuItem1");
|
||||
var ipObj = $midmenuItem1.data("jsonObj");
|
||||
|
||||
var startPort = $createPortRangeRow.find("#start_port").val();
|
||||
var endPort = $createPortRangeRow.find("#end_port").val();
|
||||
var protocol = $createPortRangeRow.find("#protocol").val();
|
||||
|
||||
var array1 = [];
|
||||
array1.push("&ipaddressid="+ipObj.id);
|
||||
array1.push("&startPort="+startPort);
|
||||
array1.push("&endPort="+endPort);
|
||||
array1.push("&protocol="+protocol);
|
||||
|
||||
$.ajax({
|
||||
data: createURL("command=createIpForwardingRule"+array1.join("")),
|
||||
dataType: "json",
|
||||
success: function(json) {
|
||||
var jobId = json.createipforwardingruleresponse.jobid;
|
||||
var timerKey = "asyncJob_" + jobId;
|
||||
$("body").everyTime(
|
||||
10000,
|
||||
timerKey,
|
||||
function() {
|
||||
$.ajax({
|
||||
data: createURL("command=queryAsyncJobResult&jobId="+jobId),
|
||||
dataType: "json",
|
||||
success: function(json) {
|
||||
var result = json.queryasyncjobresultresponse;
|
||||
if (result.jobstatus == 0) {
|
||||
return; //Job has not completed
|
||||
} else {
|
||||
$("body").stopTime(timerKey);
|
||||
$spinningWheel.hide();
|
||||
if (result.jobstatus == 1) { // Succeeded
|
||||
var item = json.queryasyncjobresultresponse.jobresult.ipforwardingrule;
|
||||
portRangeJsonToTemplate(item, $template);
|
||||
$spinningWheel.hide();
|
||||
refreshCreatePortRangeRow();
|
||||
} else if (result.jobstatus == 2) { // Failed
|
||||
$template.slideUp("slow", function() {
|
||||
$(this).remove();
|
||||
});
|
||||
//var errorMsg = g_dictionary["label.failed"] + " - " + g_dictionary["label.error.code"] + " " + fromdb(result.jobresult.errorcode);
|
||||
var errorMsg = g_dictionary["label.failed"] + " - " + fromdb(result.jobresult.errortext);
|
||||
$("#dialog_error").text(errorMsg).dialog("open");
|
||||
}
|
||||
}
|
||||
},
|
||||
error: function(XMLHttpResponse) {
|
||||
$("body").stopTime(timerKey);
|
||||
handleError(XMLHttpResponse, function() {
|
||||
$template.slideUp("slow", function() {
|
||||
$(this).remove();
|
||||
});
|
||||
var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
|
||||
$("#dialog_error").text(fromdb(errorMsg)).dialog("open");
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
0
|
||||
);
|
||||
},
|
||||
error: function(XMLHttpResponse) {
|
||||
handleError(XMLHttpResponse, function() {
|
||||
$template.slideUp("slow", function() {
|
||||
$(this).remove();
|
||||
});
|
||||
var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
|
||||
$("#dialog_error").text(fromdb(errorMsg)).dialog("open");
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
return false;
|
||||
});
|
||||
//*** Port Range tab (end) ***
|
||||
|
||||
//*** Port Forwarding tab (begin) ***
|
||||
var $createPortForwardingRow = $("#tab_content_port_forwarding").find("#create_port_forwarding_row");
|
||||
|
||||
// If public end port gets filled, disable private ports and copy public ports over to private ports
|
||||
/*
|
||||
$createPortForwardingRow.find("#public_end_port").bind("keyup", function(event) {
|
||||
if($(this).val() != null && $(this).val().length > 0) {
|
||||
$createPortForwardingRow.find("#private_port").attr("readonly", true);
|
||||
$createPortForwardingRow.find("#private_end_port").attr("readonly", true);
|
||||
|
||||
$createPortForwardingRow.find("#private_port").val($createPortForwardingRow.find("#public_port").val());
|
||||
$createPortForwardingRow.find("#private_end_port").val($(this).val());
|
||||
}
|
||||
else {
|
||||
$createPortForwardingRow.find("#private_port").removeAttr("readonly");
|
||||
$createPortForwardingRow.find("#private_end_port").removeAttr("readonly");
|
||||
}
|
||||
return true;
|
||||
});
|
||||
$createPortForwardingRow.find("#public_port").bind("keyup", function(event) {
|
||||
if($createPortForwardingRow.find("#private_port").attr("readonly") == true)
|
||||
$createPortForwardingRow.find("#private_port").val($(this).val());
|
||||
return true;
|
||||
});
|
||||
*/
|
||||
|
||||
$createPortForwardingRow.find("#add_link").bind("click", function(event){
|
||||
var isValid = true;
|
||||
|
||||
isValid &= validateCIDRList("CIDR", $createPortForwardingRow.find("#cidr"), $createPortForwardingRow.find("#cidr_errormsg"), true); //optional
|
||||
|
||||
isValid &= validateInteger("Public Port", $createPortForwardingRow.find("#public_port"), $createPortForwardingRow.find("#public_port_errormsg"), 1, 65535, false); //required
|
||||
//isValid &= validateInteger("Public End Port", $createPortForwardingRow.find("#public_end_port"), $createPortForwardingRow.find("#public_end_port_errormsg"), 1, 65535, true); //optional
|
||||
|
||||
isValid &= validateInteger("Private Port", $createPortForwardingRow.find("#private_port"), $createPortForwardingRow.find("#private_port_errormsg"), 1, 65535, false); //required
|
||||
//isValid &= validateInteger("Private End Port", $createPortForwardingRow.find("#private_end_port"), $createPortForwardingRow.find("#private_end_port_errormsg"), 1, 65535, true); //optional
|
||||
if(g_supportELB == true) {
|
||||
$("#tab_details,#tab_port_range,#tab_port_forwarding,#tab_load_balancer,#tab_vpn").hide();
|
||||
$("#tab_content_details").hide();
|
||||
$("#acquire_new_ip_button").hide();
|
||||
$("#add_load_balancer_and_ip_button").show();
|
||||
|
||||
isValid &= validateDropDownBox("Instance", $createPortForwardingRow.find("#vm"), $createPortForwardingRow.find("#vm_errormsg"));
|
||||
if (!isValid)
|
||||
return;
|
||||
|
||||
var $template = $("#port_forwarding_template").clone();
|
||||
$("#tab_content_port_forwarding #grid_content").append($template.show());
|
||||
|
||||
var $spinningWheel = $template.find("#row_container").find("#spinning_wheel");
|
||||
$spinningWheel.find("#description").text(g_dictionary["label.adding.processing"]);
|
||||
$spinningWheel.show();
|
||||
|
||||
var $midmenuItem1 = $("#right_panel_content").data("$midmenuItem1");
|
||||
var ipObj = $midmenuItem1.data("jsonObj");
|
||||
|
||||
var array1 = [];
|
||||
array1.push("&ipaddressid="+ipObj.id);
|
||||
|
||||
var cidr = $createPortForwardingRow.find("#cidr").val();
|
||||
if(cidr != null && cidr.length > 0)
|
||||
array1.push("&cidrlist="+cidr);
|
||||
|
||||
var publicPort = $createPortForwardingRow.find("#public_port").val();
|
||||
array1.push("&publicport="+publicPort);
|
||||
var publicEndPort = $createPortForwardingRow.find("#public_end_port").val();
|
||||
if(publicEndPort != null && publicEndPort.length > 0)
|
||||
array1.push("&publicendport="+publicEndPort);
|
||||
|
||||
var privatePort = $createPortForwardingRow.find("#private_port").val();
|
||||
array1.push("&privateport="+privatePort);
|
||||
var privateEndPort = $createPortForwardingRow.find("#private_end_port").val();
|
||||
if(privateEndPort != null && privateEndPort.length > 0)
|
||||
array1.push("&privateendport="+privateEndPort);
|
||||
|
||||
var protocol = $createPortForwardingRow.find("#protocol").val();
|
||||
array1.push("&protocol="+protocol);
|
||||
|
||||
var virtualMachineId = $createPortForwardingRow.find("#vm").val();
|
||||
array1.push("&virtualmachineid=" + virtualMachineId);
|
||||
|
||||
$.ajax({
|
||||
data: createURL("command=createPortForwardingRule"+array1.join("")),
|
||||
dataType: "json",
|
||||
success: function(json) {
|
||||
var jobId = json.createportforwardingruleresponse.jobid;
|
||||
var timerKey = "asyncJob_" + jobId;
|
||||
$("body").everyTime(
|
||||
10000,
|
||||
timerKey,
|
||||
function() {
|
||||
$.ajax({
|
||||
data: createURL("command=queryAsyncJobResult&jobId="+jobId),
|
||||
dataType: "json",
|
||||
success: function(json) {
|
||||
var result = json.queryasyncjobresultresponse;
|
||||
if (result.jobstatus == 0) {
|
||||
return; //Job has not completed
|
||||
} else {
|
||||
$("body").stopTime(timerKey);
|
||||
$spinningWheel.hide();
|
||||
if (result.jobstatus == 1) { // Succeeded
|
||||
var item = json.queryasyncjobresultresponse.jobresult.portforwardingrule;
|
||||
portForwardingJsonToTemplate(item,$template);
|
||||
$spinningWheel.hide();
|
||||
refreshCreatePortForwardingRow();
|
||||
} else if (result.jobstatus == 2) { // Failed
|
||||
$template.slideUp("slow", function() {
|
||||
$(this).remove();
|
||||
});
|
||||
//var errorMsg = g_dictionary["label.failed"] + " - " + g_dictionary["label.error.code"] + " " + fromdb(result.jobresult.errorcode);
|
||||
var errorMsg = g_dictionary["label.failed"] + " - " + fromdb(result.jobresult.errortext);
|
||||
$("#dialog_error").text(errorMsg).dialog("open");
|
||||
}
|
||||
initDialog("dialog_add_load_balancer_and_ip");
|
||||
|
||||
$.ajax({
|
||||
data: createURL("command=listZones&available=true"),
|
||||
dataType: "json",
|
||||
success: function(json) {
|
||||
var zones = json.listzonesresponse.zone;
|
||||
var zoneSelect = $("#dialog_add_load_balancer_and_ip #acquire_zone").empty();
|
||||
if (zones != null && zones.length > 0) {
|
||||
for (var i = 0; i < zones.length; i++) {
|
||||
if(zones[i].networktype == "Basic")
|
||||
zoneSelect.append("<option value='" + zones[i].id + "'>" + fromdb(zones[i].name) + "</option>");
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$("#add_load_balancer_and_ip_button").unbind("click").bind("click", function(event) {
|
||||
$("#dialog_add_load_balancer_and_ip").dialog('option', 'buttons', {
|
||||
"Acquire": function() {
|
||||
var $thisDialog = $(this);
|
||||
|
||||
var isValid = true;
|
||||
isValid &= validateString("Name", $thisDialog.find("#name"), $thisDialog.find("#name_errormsg"));
|
||||
isValid &= validateInteger("Public Port", $thisDialog.find("#public_port"), $thisDialog.find("#public_port_errormsg"), 1, 65535);
|
||||
isValid &= validateInteger("Private Port", $thisDialog.find("#private_port"), $thisDialog.find("#private_port_errormsg"), 1, 65535);
|
||||
if (!isValid)
|
||||
return;
|
||||
|
||||
$thisDialog.dialog("close");
|
||||
|
||||
var array1 = [];
|
||||
|
||||
var zoneId = $thisDialog.find("#acquire_zone").val();
|
||||
array1.push("&zoneid="+zoneId);
|
||||
|
||||
var name = $thisDialog.find("#name").val();
|
||||
array1.push("&name="+todb(name));
|
||||
|
||||
var publicPort = $thisDialog.find("#public_port").val();
|
||||
array1.push("&publicport="+publicPort);
|
||||
|
||||
var privatePort = $thisDialog.find("#private_port").val();
|
||||
array1.push("&privateport="+privatePort);
|
||||
|
||||
var algorithm = $thisDialog.find("#algorithm_select").val();
|
||||
array1.push("&algorithm="+algorithm);
|
||||
|
||||
var $midmenuItem1 = beforeAddingMidMenuItem() ;
|
||||
$.ajax({
|
||||
data: createURL("command=createLoadBalancerRule"+array1.join("")),
|
||||
dataType: "json",
|
||||
success: function(json) {
|
||||
var jobId = json.createloadbalancerruleresponse.jobid;
|
||||
var timerKey = "addLbAndIpJob_"+jobId;
|
||||
|
||||
$("body").everyTime(2000, timerKey, function() {
|
||||
$.ajax({
|
||||
data: createURL("command=queryAsyncJobResult&jobId="+jobId),
|
||||
dataType: "json",
|
||||
success: function(json) {
|
||||
var result = json.queryasyncjobresultresponse;
|
||||
if (result.jobstatus == 0) {
|
||||
return; //Job has not completed
|
||||
} else {
|
||||
$("body").stopTime(timerKey);
|
||||
if (result.jobstatus == 1) {
|
||||
// Succeeded
|
||||
ipToMidmenu(result.jobresult.ipaddress, $midmenuItem1);
|
||||
bindClickToMidMenu($midmenuItem1, ipToRightPanel, ipGetMidmenuId);
|
||||
afterAddingMidMenuItem($midmenuItem1, true);
|
||||
} else if (result.jobstatus == 2) {
|
||||
afterAddingMidMenuItem($midmenuItem1, false, fromdb(result.jobresult.errortext));
|
||||
}
|
||||
}
|
||||
},
|
||||
error: function(XMLHttpResponse) {
|
||||
$("body").stopTime(timerKey);
|
||||
handleError(XMLHttpResponse, function() {
|
||||
debugger;
|
||||
afterAddingMidMenuItem($midmenuItem1, false, parseXMLHttpResponse(XMLHttpResponse));
|
||||
});
|
||||
}
|
||||
});
|
||||
}, 0);
|
||||
},
|
||||
error: function(XMLHttpResponse) {
|
||||
handleError(XMLHttpResponse, function() {
|
||||
afterAddingMidMenuItem($midmenuItem1, false, parseXMLHttpResponse(XMLHttpResponse));
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
"Cancel": function() {
|
||||
$(this).dialog("close");
|
||||
}
|
||||
}).dialog("open");
|
||||
return false;
|
||||
});
|
||||
}
|
||||
else {
|
||||
//dialogs
|
||||
initDialog("dialog_acquire_public_ip", 325);
|
||||
initDialog("dialog_enable_vpn");
|
||||
initDialog("dialog_disable_vpn");
|
||||
initDialog("dialog_add_vpnuser");
|
||||
initDialog("dialog_confirmation_remove_vpnuser");
|
||||
initDialog("dialog_enable_static_NAT");
|
||||
|
||||
//*** Acquire New IP (begin) ***
|
||||
$.ajax({
|
||||
data: createURL("command=listZones&available=true"),
|
||||
dataType: "json",
|
||||
success: function(json) {
|
||||
var zones = json.listzonesresponse.zone;
|
||||
var zoneSelect = $("#dialog_acquire_public_ip #acquire_zone").empty();
|
||||
if (zones != null && zones.length > 0) {
|
||||
for (var i = 0; i < zones.length; i++) {
|
||||
zoneSelect.append("<option value='" + zones[i].id + "'>" + fromdb(zones[i].name) + "</option>");
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$("#acquire_new_ip_button").unbind("click").bind("click", function(event) {
|
||||
$("#dialog_acquire_public_ip").dialog('option', 'buttons', {
|
||||
"Acquire": function() {
|
||||
var thisDialog = $(this);
|
||||
thisDialog.dialog("close");
|
||||
|
||||
var zoneid = thisDialog.find("#acquire_zone").val();
|
||||
|
||||
var $midmenuItem1 = beforeAddingMidMenuItem() ;
|
||||
|
||||
$.ajax({
|
||||
data: createURL("command=associateIpAddress&zoneid="+zoneid),
|
||||
dataType: "json",
|
||||
success: function(json) {
|
||||
var jobId = json.associateipaddressresponse.jobid;
|
||||
var timerKey = "associateIpJob_"+jobId;
|
||||
|
||||
$("body").everyTime(2000, timerKey, function() {
|
||||
$.ajax({
|
||||
data: createURL("command=queryAsyncJobResult&jobId="+jobId),
|
||||
dataType: "json",
|
||||
success: function(json) {
|
||||
var result = json.queryasyncjobresultresponse;
|
||||
if (result.jobstatus == 0) {
|
||||
return; //Job has not completed
|
||||
} else {
|
||||
$("body").stopTime(timerKey);
|
||||
if (result.jobstatus == 1) {
|
||||
// Succeeded
|
||||
ipToMidmenu(result.jobresult.ipaddress, $midmenuItem1);
|
||||
bindClickToMidMenu($midmenuItem1, ipToRightPanel, ipGetMidmenuId);
|
||||
afterAddingMidMenuItem($midmenuItem1, true);
|
||||
} else if (result.jobstatus == 2) {
|
||||
afterAddingMidMenuItem($midmenuItem1, false, fromdb(result.jobresult.errortext));
|
||||
}
|
||||
}
|
||||
},
|
||||
error: function(XMLHttpResponse) {
|
||||
$("body").stopTime(timerKey);
|
||||
handleError(XMLHttpResponse, function() {
|
||||
afterAddingMidMenuItem($midmenuItem1, false, parseXMLHttpResponse(XMLHttpResponse));
|
||||
});
|
||||
}
|
||||
});
|
||||
}, 0);
|
||||
},
|
||||
error: function(XMLHttpResponse) {
|
||||
handleError(XMLHttpResponse, function() {
|
||||
afterAddingMidMenuItem($midmenuItem1, false, parseXMLHttpResponse(XMLHttpResponse));
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
"Cancel": function() {
|
||||
$(this).dialog("close");
|
||||
}
|
||||
}).dialog("open");
|
||||
return false;
|
||||
});
|
||||
//*** Acquire New IP (end) ***
|
||||
|
||||
//*** Port Range tab (begin) ***
|
||||
var $createPortRangeRow = $("#tab_content_port_range").find("#create_port_range_row");
|
||||
|
||||
$createPortRangeRow.find("#add_link").bind("click", function(event){
|
||||
var isValid = true;
|
||||
isValid &= validateInteger("Start Port", $createPortRangeRow.find("#start_port"), $createPortRangeRow.find("#start_port_errormsg"), 1, 65535);
|
||||
isValid &= validateInteger("End Port", $createPortRangeRow.find("#end_port"), $createPortRangeRow.find("#end_port_errormsg"), 1, 65535);
|
||||
if (!isValid)
|
||||
return;
|
||||
|
||||
var $template = $("#port_range_template").clone();
|
||||
$("#tab_content_port_range #grid_content").append($template.show());
|
||||
|
||||
var $spinningWheel = $template.find("#row_container").find("#spinning_wheel");
|
||||
$spinningWheel.find("#description").text(g_dictionary["label.adding.processing"]);
|
||||
$spinningWheel.show();
|
||||
|
||||
var $midmenuItem1 = $("#right_panel_content").data("$midmenuItem1");
|
||||
var ipObj = $midmenuItem1.data("jsonObj");
|
||||
|
||||
var startPort = $createPortRangeRow.find("#start_port").val();
|
||||
var endPort = $createPortRangeRow.find("#end_port").val();
|
||||
var protocol = $createPortRangeRow.find("#protocol").val();
|
||||
|
||||
var array1 = [];
|
||||
array1.push("&ipaddressid="+ipObj.id);
|
||||
array1.push("&startPort="+startPort);
|
||||
array1.push("&endPort="+endPort);
|
||||
array1.push("&protocol="+protocol);
|
||||
|
||||
$.ajax({
|
||||
data: createURL("command=createIpForwardingRule"+array1.join("")),
|
||||
dataType: "json",
|
||||
success: function(json) {
|
||||
var jobId = json.createipforwardingruleresponse.jobid;
|
||||
var timerKey = "asyncJob_" + jobId;
|
||||
$("body").everyTime(
|
||||
10000,
|
||||
timerKey,
|
||||
function() {
|
||||
$.ajax({
|
||||
data: createURL("command=queryAsyncJobResult&jobId="+jobId),
|
||||
dataType: "json",
|
||||
success: function(json) {
|
||||
var result = json.queryasyncjobresultresponse;
|
||||
if (result.jobstatus == 0) {
|
||||
return; //Job has not completed
|
||||
} else {
|
||||
$("body").stopTime(timerKey);
|
||||
$spinningWheel.hide();
|
||||
if (result.jobstatus == 1) { // Succeeded
|
||||
var item = json.queryasyncjobresultresponse.jobresult.ipforwardingrule;
|
||||
portRangeJsonToTemplate(item, $template);
|
||||
$spinningWheel.hide();
|
||||
refreshCreatePortRangeRow();
|
||||
} else if (result.jobstatus == 2) { // Failed
|
||||
$template.slideUp("slow", function() {
|
||||
$(this).remove();
|
||||
});
|
||||
//var errorMsg = g_dictionary["label.failed"] + " - " + g_dictionary["label.error.code"] + " " + fromdb(result.jobresult.errorcode);
|
||||
var errorMsg = g_dictionary["label.failed"] + " - " + fromdb(result.jobresult.errortext);
|
||||
$("#dialog_error").text(errorMsg).dialog("open");
|
||||
}
|
||||
}
|
||||
},
|
||||
error: function(XMLHttpResponse) {
|
||||
$("body").stopTime(timerKey);
|
||||
handleError(XMLHttpResponse, function() {
|
||||
$template.slideUp("slow", function() {
|
||||
$(this).remove();
|
||||
});
|
||||
var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
|
||||
$("#dialog_error").text(fromdb(errorMsg)).dialog("open");
|
||||
});
|
||||
}
|
||||
},
|
||||
error: function(XMLHttpResponse) {
|
||||
$("body").stopTime(timerKey);
|
||||
handleError(XMLHttpResponse, function() {
|
||||
$template.slideUp("slow", function() {
|
||||
$(this).remove();
|
||||
});
|
||||
var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
|
||||
$("#dialog_error").text(fromdb(errorMsg)).dialog("open");
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
0
|
||||
);
|
||||
},
|
||||
error: function(XMLHttpResponse) {
|
||||
handleError(XMLHttpResponse, function() {
|
||||
$template.slideUp("slow", function() {
|
||||
$(this).remove();
|
||||
});
|
||||
var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
|
||||
$("#dialog_error").text(fromdb(errorMsg)).dialog("open");
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
return false;
|
||||
});
|
||||
//*** Port Forwarding tab (end) ***
|
||||
|
||||
});
|
||||
},
|
||||
0
|
||||
);
|
||||
},
|
||||
error: function(XMLHttpResponse) {
|
||||
handleError(XMLHttpResponse, function() {
|
||||
$template.slideUp("slow", function() {
|
||||
$(this).remove();
|
||||
});
|
||||
var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
|
||||
$("#dialog_error").text(fromdb(errorMsg)).dialog("open");
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
return false;
|
||||
});
|
||||
//*** Port Range tab (end) ***
|
||||
|
||||
//*** Port Forwarding tab (begin) ***
|
||||
var $createPortForwardingRow = $("#tab_content_port_forwarding").find("#create_port_forwarding_row");
|
||||
|
||||
// If public end port gets filled, disable private ports and copy public ports over to private ports
|
||||
/*
|
||||
$createPortForwardingRow.find("#public_end_port").bind("keyup", function(event) {
|
||||
if($(this).val() != null && $(this).val().length > 0) {
|
||||
$createPortForwardingRow.find("#private_port").attr("readonly", true);
|
||||
$createPortForwardingRow.find("#private_end_port").attr("readonly", true);
|
||||
|
||||
$createPortForwardingRow.find("#private_port").val($createPortForwardingRow.find("#public_port").val());
|
||||
$createPortForwardingRow.find("#private_end_port").val($(this).val());
|
||||
}
|
||||
else {
|
||||
$createPortForwardingRow.find("#private_port").removeAttr("readonly");
|
||||
$createPortForwardingRow.find("#private_end_port").removeAttr("readonly");
|
||||
}
|
||||
return true;
|
||||
});
|
||||
$createPortForwardingRow.find("#public_port").bind("keyup", function(event) {
|
||||
if($createPortForwardingRow.find("#private_port").attr("readonly") == true)
|
||||
$createPortForwardingRow.find("#private_port").val($(this).val());
|
||||
return true;
|
||||
});
|
||||
*/
|
||||
|
||||
$createPortForwardingRow.find("#add_link").bind("click", function(event){
|
||||
var isValid = true;
|
||||
|
||||
isValid &= validateCIDRList("CIDR", $createPortForwardingRow.find("#cidr"), $createPortForwardingRow.find("#cidr_errormsg"), true); //optional
|
||||
|
||||
isValid &= validateInteger("Public Port", $createPortForwardingRow.find("#public_port"), $createPortForwardingRow.find("#public_port_errormsg"), 1, 65535, false); //required
|
||||
//isValid &= validateInteger("Public End Port", $createPortForwardingRow.find("#public_end_port"), $createPortForwardingRow.find("#public_end_port_errormsg"), 1, 65535, true); //optional
|
||||
|
||||
isValid &= validateInteger("Private Port", $createPortForwardingRow.find("#private_port"), $createPortForwardingRow.find("#private_port_errormsg"), 1, 65535, false); //required
|
||||
//isValid &= validateInteger("Private End Port", $createPortForwardingRow.find("#private_end_port"), $createPortForwardingRow.find("#private_end_port_errormsg"), 1, 65535, true); //optional
|
||||
|
||||
isValid &= validateDropDownBox("Instance", $createPortForwardingRow.find("#vm"), $createPortForwardingRow.find("#vm_errormsg"));
|
||||
if (!isValid)
|
||||
return;
|
||||
|
||||
var $template = $("#port_forwarding_template").clone();
|
||||
$("#tab_content_port_forwarding #grid_content").append($template.show());
|
||||
|
||||
var $spinningWheel = $template.find("#row_container").find("#spinning_wheel");
|
||||
$spinningWheel.find("#description").text(g_dictionary["label.adding.processing"]);
|
||||
$spinningWheel.show();
|
||||
|
||||
var $midmenuItem1 = $("#right_panel_content").data("$midmenuItem1");
|
||||
var ipObj = $midmenuItem1.data("jsonObj");
|
||||
|
||||
var array1 = [];
|
||||
array1.push("&ipaddressid="+ipObj.id);
|
||||
|
||||
var cidr = $createPortForwardingRow.find("#cidr").val();
|
||||
if(cidr != null && cidr.length > 0)
|
||||
array1.push("&cidrlist="+cidr);
|
||||
|
||||
var publicPort = $createPortForwardingRow.find("#public_port").val();
|
||||
array1.push("&publicport="+publicPort);
|
||||
var publicEndPort = $createPortForwardingRow.find("#public_end_port").val();
|
||||
if(publicEndPort != null && publicEndPort.length > 0)
|
||||
array1.push("&publicendport="+publicEndPort);
|
||||
|
||||
var privatePort = $createPortForwardingRow.find("#private_port").val();
|
||||
array1.push("&privateport="+privatePort);
|
||||
var privateEndPort = $createPortForwardingRow.find("#private_end_port").val();
|
||||
if(privateEndPort != null && privateEndPort.length > 0)
|
||||
array1.push("&privateendport="+privateEndPort);
|
||||
|
||||
var protocol = $createPortForwardingRow.find("#protocol").val();
|
||||
array1.push("&protocol="+protocol);
|
||||
|
||||
var virtualMachineId = $createPortForwardingRow.find("#vm").val();
|
||||
array1.push("&virtualmachineid=" + virtualMachineId);
|
||||
|
||||
$.ajax({
|
||||
data: createURL("command=createPortForwardingRule"+array1.join("")),
|
||||
dataType: "json",
|
||||
success: function(json) {
|
||||
var jobId = json.createportforwardingruleresponse.jobid;
|
||||
var timerKey = "asyncJob_" + jobId;
|
||||
$("body").everyTime(
|
||||
10000,
|
||||
timerKey,
|
||||
function() {
|
||||
$.ajax({
|
||||
data: createURL("command=queryAsyncJobResult&jobId="+jobId),
|
||||
dataType: "json",
|
||||
success: function(json) {
|
||||
var result = json.queryasyncjobresultresponse;
|
||||
if (result.jobstatus == 0) {
|
||||
return; //Job has not completed
|
||||
} else {
|
||||
$("body").stopTime(timerKey);
|
||||
$spinningWheel.hide();
|
||||
if (result.jobstatus == 1) { // Succeeded
|
||||
var item = json.queryasyncjobresultresponse.jobresult.portforwardingrule;
|
||||
portForwardingJsonToTemplate(item,$template);
|
||||
$spinningWheel.hide();
|
||||
refreshCreatePortForwardingRow();
|
||||
} else if (result.jobstatus == 2) { // Failed
|
||||
$template.slideUp("slow", function() {
|
||||
$(this).remove();
|
||||
});
|
||||
//var errorMsg = g_dictionary["label.failed"] + " - " + g_dictionary["label.error.code"] + " " + fromdb(result.jobresult.errorcode);
|
||||
var errorMsg = g_dictionary["label.failed"] + " - " + fromdb(result.jobresult.errortext);
|
||||
$("#dialog_error").text(errorMsg).dialog("open");
|
||||
}
|
||||
}
|
||||
},
|
||||
error: function(XMLHttpResponse) {
|
||||
$("body").stopTime(timerKey);
|
||||
handleError(XMLHttpResponse, function() {
|
||||
$template.slideUp("slow", function() {
|
||||
$(this).remove();
|
||||
});
|
||||
var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
|
||||
$("#dialog_error").text(fromdb(errorMsg)).dialog("open");
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
0
|
||||
);
|
||||
},
|
||||
error: function(XMLHttpResponse) {
|
||||
handleError(XMLHttpResponse, function() {
|
||||
$template.slideUp("slow", function() {
|
||||
$(this).remove();
|
||||
});
|
||||
var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
|
||||
$("#dialog_error").text(fromdb(errorMsg)).dialog("open");
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
return false;
|
||||
});
|
||||
//*** Port Forwarding tab (end) ***
|
||||
}
|
||||
|
||||
//*** Load Balancer tab (begin) ***
|
||||
var createLoadBalancerRow = $("#tab_content_load_balancer #create_load_balancer_row");
|
||||
|
||||
|
|
|
|||
|
|
@ -1514,9 +1514,11 @@ var g_timezone = null;
|
|||
var g_directAttachSecurityGroupsEnabled = "false";
|
||||
function getDirectAttachSecurityGroupsEnabled() { return g_directAttachSecurityGroupsEnabled; }
|
||||
|
||||
var g_userPublicTemplateEnabled = "true"
|
||||
var g_userPublicTemplateEnabled = "true";
|
||||
function getUserPublicTemplateEnabled() { return g_userPublicTemplateEnabled; }
|
||||
|
||||
var g_supportELB = null;
|
||||
|
||||
//keyboard keycode
|
||||
var keycode_Enter = 13;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue