\
\
-
\
+
\
\
-
\
+
\
\
\
\
@@ -248,7 +254,7 @@ var vnet_actions = {
call: OpenNebula.Network.addleases,
callback: vnShow,
error: onError,
- notify: true
+ notify: false,
},
"Network.rmleases" : {
@@ -256,9 +262,25 @@ var vnet_actions = {
call: OpenNebula.Network.rmleases,
callback: vnShow,
error: onError,
- notify: true
+ notify: false,
},
+ "Network.hold" : {
+ type: "single",
+ call: OpenNebula.Network.hold,
+ callback: vnShow,
+ error: onError,
+ notify: false,
+ },
+
+ "Network.release" : {
+ type: "single",
+ call: OpenNebula.Network.release,
+ callback: vnShow,
+ error: onError,
+ notify: false,
+ },
+/*
"Network.modifyleases" : {
type: "custom",
call: function(action,obj){
@@ -278,7 +300,7 @@ var vnet_actions = {
type: "custom",
call: popUpRemoveLeaseDialog
},
-
+*/
"Network.chown" : {
type: "multiple",
call: OpenNebula.Network.chown,
@@ -368,7 +390,7 @@ var vnet_buttons = {
tip: "Select the new group:",
condition: mustBeAdmin,
},
-
+/*
"action_list" : {
type: "select",
actions: {
@@ -382,7 +404,7 @@ var vnet_buttons = {
}
}
},
-
+*/
"Network.delete" : {
type: "action",
text: "Delete"
@@ -455,6 +477,9 @@ function updateVNetworkElement(request, vn_json){
id = vn_json.VNET.ID;
element = vNetworkElementArray(vn_json);
updateSingleElement(element,dataTable_vNetworks,'#vnetwork_'+id);
+
+ //we update this too, even if it's not shown.
+ $('#leases_form').replaceWith(printLeases(vn_json.VNET));
}
//Callback to delete a vnet element from the table
@@ -466,6 +491,8 @@ function deleteVNetworkElement(req){
function addVNetworkElement(request,vn_json){
var element = vNetworkElementArray(vn_json);
addElement(element,dataTable_vNetworks);
+ //we update this too, even if it's not shown.
+ $('#leases_form').replaceWith(printLeases(vn_json.VNET));
}
//updates the list of virtual networks
@@ -494,6 +521,10 @@ function updateVNetworkInfo(request,vn){
ID | \
'+vn_info.ID+' | \
\
+
\
+ Name | \
+ '+vn_info.NAME+' | \
+
\
\
Owner | \
'+vn_info.UNAME+' | \
@@ -508,17 +539,15 @@ function updateVNetworkInfo(request,vn){
\
\
Physical device | \
- '+(vn_info.PHYDEV ? vn_info.PHYDEV : "--" )+' | \
+ '+ (typeof(vn_info.PHYDEV) == "object" ? "--": vn_info.PHYDEV) +' | \
\
- \
-
\
- \
- Leases information |
\
- '+
- printLeases(vn_info.LEASES)+
- '
';;
-
+
\
+ VNET ID | \
+ '+ (typeof(vn_info.VLAN_ID) == "object" ? "--": vn_info.VLAN_ID) +' | \
+
\
+ ';
+ info_tab_content += printLeases(vn_info);
var info_tab = {
title: "Virtual Network information",
@@ -541,19 +570,101 @@ function updateVNetworkInfo(request,vn){
}
-function printLeases(leases){
- if (!leases.LEASE) //empty
- {
- return "";
+function printLeases(vn_info){
+ var html ='
';
+
+ return html;
}
//Prepares the vnet creation dialog
@@ -622,6 +733,17 @@ function setupCreateVNetDialog() {
return false;
});
+ $('#custom_pool', dialog).change(function(){
+ if ($(this).is(':checked')){
+ $('#ip_start', $create_vn_dialog).removeAttr('disabled');
+ $('#ip_end', $create_vn_dialog).removeAttr('disabled');
+ }
+ else {
+ $('#ip_start', $create_vn_dialog).attr('disabled','disabled');
+ $('#ip_end', $create_vn_dialog).attr('disabled','disabled');
+ };
+ });
+
$('#add_custom_var_vnet_button', dialog).click(
function(){
@@ -681,7 +803,11 @@ function setupCreateVNetDialog() {
else { //type ranged
var network_addr = $('#net_address',this).val();
- var network_size = $('#net_size',this).val();
+ var network_mask = $('#net_mask',this).val();
+ var custom = $('#custom_pool',this).is(':checked');
+ var ip_start = $('#ip_start',this).val();
+ var ip_end = $('#ip_end',this).val();
+
if (!network_addr.length){
notifyError("Please provide a network address");
return false;
@@ -692,10 +818,17 @@ function setupCreateVNetDialog() {
"vnet" : {
"type" : "RANGED",
"bridge" : bridge,
- "network_size" : network_size,
+ "network_mask" : network_mask,
"network_address" : network_addr,
"name" : name }
};
+
+ if (custom){
+ if (ip_start.length)
+ network_json["vnet"]["ip_start"] = ip_start;
+ if (ip_end.length)
+ network_json["vnet"]["ip_start"] = ip_end;
+ };
};
//Time to add custom attributes
@@ -826,6 +959,62 @@ function popUpVNetTemplateUpdateDialog(){
}
+function setupLeasesOps(){
+ $('button#panel_add_lease_button').live("click",function(){
+ var lease = $(this).prev().val();
+ //var mac = $(this).previous().val();
+ var id = $(this).parents('form').attr('vnid');
+ if (lease.length){
+ var obj = {ip: lease};
+ Sunstone.runAction('Network.addleases',id,obj);
+ }
+ return false;
+ });
+
+ $('button#panel_hold_lease_button').live("click",function(){
+ var lease = $(this).prev().val();
+ //var mac = $(this).previous().val();
+ var id = $(this).parents('form').attr('vnid');
+ if (lease.length){
+ var obj = {ip: lease};
+ Sunstone.runAction('Network.hold',id,obj);
+ }
+ return false;
+ });
+
+ $('form#leases_form a.delete_lease').live("click",function(){
+ var lease = $(this).parents('tr').attr('ip');
+ var id = $(this).parents('form').attr('vnid');
+ var obj = { ip: lease};
+ Sunstone.runAction('Network.rmleases',id,obj);
+ //Set spinner
+ $(this).parents('tr').html('
'+spinner+' | | ');
+ return false;
+ });
+
+ $('a.hold_lease').live("click",function(){
+ var lease = $(this).parents('tr').attr('ip');
+ var id = $(this).parents('form').attr('vnid');
+ var obj = { ip: lease};
+ Sunstone.runAction('Network.hold',id,obj);
+ //Set spinner
+ $(this).parents('tr').html('
'+spinner+' | | ');
+ return false;
+ });
+
+ $('a.release_lease').live("click",function(){
+ var lease = $(this).parents('tr').attr('ip');
+ var id = $(this).parents('form').attr('vnid');
+ var obj = { ip: lease};
+ Sunstone.runAction('Network.release',id,obj);
+ //Set spinner
+ $(this).parents('tr').html('
'+spinner+' | | ');
+ return false;
+ });
+}
+
+
+/*
function setupAddRemoveLeaseDialog() {
dialogs_context.append('
');
$lease_vn_dialog = $('#lease_vn_dialog',dialogs_context)
@@ -893,6 +1082,8 @@ function popUpRemoveLeaseDialog() {
$lease_vn_dialog.dialog("open");
}
+*/
+
function setVNetAutorefresh() {
setInterval(function(){
var checked = $('input.check_item:checked',dataTable_vNetworks);
@@ -946,7 +1137,8 @@ $(document).ready(function(){
setupCreateVNetDialog();
setupVNetTemplateUpdateDialog();
- setupAddRemoveLeaseDialog();
+ //setupAddRemoveLeaseDialog();
+ setupLeasesOps();
setupVNetActionCheckboxes();
setVNetAutorefresh();