mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-16 22:50:10 +03:00
Feature #785: Add lease/remove lease support in Sunstone vnets.
This commit is contained in:
parent
7512bf4f38
commit
8d9c333ca1
@ -42,6 +42,8 @@ module OpenNebulaJSON
|
||||
end
|
||||
|
||||
rc = case action_hash['perform']
|
||||
when "addleases" then self.addleases(action_hash['params'])
|
||||
when "rmleases" then self.rmleases(action_hash['params'])
|
||||
when "publish" then self.publish
|
||||
when "unpublish" then self.unpublish
|
||||
when "chown" then self.chown(action_hash['params'])
|
||||
@ -52,6 +54,14 @@ module OpenNebulaJSON
|
||||
end
|
||||
end
|
||||
|
||||
def addleases(params=Hash.new)
|
||||
super(params['ip'],params['mac'])
|
||||
end
|
||||
|
||||
def rmleases(params=Hash.new)
|
||||
super(params['ip'])
|
||||
end
|
||||
|
||||
def chown(params=Hash.new)
|
||||
super(params['owner_id'].to_i,params['group_id'].to_i)
|
||||
end
|
||||
|
@ -834,6 +834,70 @@ var OpenNebula = {
|
||||
});
|
||||
},
|
||||
|
||||
"addleases" : function(params){
|
||||
var callback = params.success;
|
||||
var callback_error = params.error;
|
||||
var id = params.data.id;
|
||||
var obj = params.data.extra_param;
|
||||
|
||||
var method = "addleases";
|
||||
var action = OpenNebula.Helper.action(method,obj);
|
||||
var resource = OpenNebula.Network.resource;
|
||||
var request = OpenNebula.Helper.request(resource,method, [id,obj]);
|
||||
|
||||
$.ajax({
|
||||
url: "vnet/" + id + "/action",
|
||||
type: "POST",
|
||||
data: JSON.stringify(action),
|
||||
success: function()
|
||||
{
|
||||
if (callback)
|
||||
{
|
||||
callback(request);
|
||||
}
|
||||
},
|
||||
error: function(response)
|
||||
{
|
||||
if(callback_error)
|
||||
{
|
||||
callback_error(request, OpenNebula.Error(response));
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
"rmleases" : function(params){
|
||||
var callback = params.success;
|
||||
var callback_error = params.error;
|
||||
var id = params.data.id;
|
||||
var obj = params.data.extra_param;
|
||||
|
||||
var method = "rmleases";
|
||||
var action = OpenNebula.Helper.action(method,obj);
|
||||
var resource = OpenNebula.Network.resource;
|
||||
var request = OpenNebula.Helper.request(resource,method, [id,obj]);
|
||||
|
||||
$.ajax({
|
||||
url: "vnet/" + id + "/action",
|
||||
type: "POST",
|
||||
data: JSON.stringify(action),
|
||||
success: function()
|
||||
{
|
||||
if (callback)
|
||||
{
|
||||
callback(request);
|
||||
}
|
||||
},
|
||||
error: function(response)
|
||||
{
|
||||
if(callback_error)
|
||||
{
|
||||
callback_error(request, OpenNebula.Error(response));
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
"chown" : function(params){
|
||||
OpenNebula.Helper.chown(params,OpenNebula.Network.resource,"vnet");
|
||||
},
|
||||
|
@ -124,6 +124,7 @@ var create_vn_tmpl =
|
||||
var vnetworks_select="";
|
||||
var dataTable_vNetworks;
|
||||
var $create_vn_dialog;
|
||||
var $lease_vn_dialog;
|
||||
|
||||
//Setup actions
|
||||
|
||||
@ -205,6 +206,42 @@ var vnet_actions = {
|
||||
notify: true
|
||||
},
|
||||
|
||||
"Network.addleases" : {
|
||||
type: "single",
|
||||
call: OpenNebula.Network.addleases,
|
||||
callback: vnShow,
|
||||
error: onError,
|
||||
notify: true
|
||||
},
|
||||
|
||||
"Network.rmleases" : {
|
||||
type: "single",
|
||||
call: OpenNebula.Network.rmleases,
|
||||
callback: vnShow,
|
||||
error: onError,
|
||||
notify: true
|
||||
},
|
||||
|
||||
"Network.modifyleases" : {
|
||||
type: "custom",
|
||||
call: function(action,obj){
|
||||
nodes = getSelectedNodes(dataTable_vNetworks);
|
||||
$.each(nodes,function(){
|
||||
Sunstone.runAction(action,this,obj);
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
"Network.addleases_dialog" : {
|
||||
type: "custom",
|
||||
call: popUpAddLeaseDialog
|
||||
},
|
||||
|
||||
"Network.rmleases_dialog" : {
|
||||
type: "custom",
|
||||
call: popUpRemoveLeaseDialog
|
||||
},
|
||||
|
||||
"Network.chown" : {
|
||||
type: "multiple",
|
||||
call: OpenNebula.Network.chown,
|
||||
@ -263,6 +300,20 @@ var vnet_buttons = {
|
||||
condition: mustBeAdmin,
|
||||
},
|
||||
|
||||
"action_list" : {
|
||||
type: "select",
|
||||
actions: {
|
||||
"Network.addleases_dialog" : {
|
||||
type: "action",
|
||||
text: "Add lease"
|
||||
},
|
||||
"Network.rmleases_dialog" : {
|
||||
type: "action",
|
||||
text: "Remove lease"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"Network.delete" : {
|
||||
type: "action",
|
||||
text: "Delete"
|
||||
@ -585,6 +636,73 @@ function popUpCreateVnetDialog() {
|
||||
$create_vn_dialog.dialog('open');
|
||||
}
|
||||
|
||||
function setupAddRemoveLeaseDialog() {
|
||||
dialogs_context.append('<div title="Lease management" id="lease_vn_dialog"></div>');
|
||||
$lease_vn_dialog = $('#lease_vn_dialog',dialogs_context)
|
||||
|
||||
var dialog = $lease_vn_dialog;
|
||||
|
||||
dialog.html(
|
||||
'<form id="lease_vn_form" action="javascript:alert(\'js error!\');">\
|
||||
<fieldset>\
|
||||
<div>Please specify:</div>\
|
||||
<label for="add_lease_ip">Lease IP:</label>\
|
||||
<input type="text" name="add_lease_ip" id="add_lease_ip" /><br />\
|
||||
<label id="add_lease_mac_label" for="add_lease_mac">Lease MAC:</label>\
|
||||
<input type="text" name="add_lease_mac" id="add_lease_mac" />\
|
||||
</select>\
|
||||
</fieldset>\
|
||||
<fieldset>\
|
||||
<div class="form_buttons">\
|
||||
<button id="lease_vn_proceed" class="" value="">OK</button>\
|
||||
<button class="confirm_cancel" value="">Cancel</button>\
|
||||
</div>\
|
||||
</fieldset>\
|
||||
</form>'
|
||||
);
|
||||
|
||||
//Prepare the jquery-ui dialog. Set style options here.
|
||||
dialog.dialog({
|
||||
autoOpen: false,
|
||||
modal: true,
|
||||
width: 410,
|
||||
height: 220
|
||||
});
|
||||
|
||||
$('button',dialog).button();
|
||||
|
||||
$('#lease_vn_form',dialog).submit(function(){
|
||||
var ip = $('#add_lease_ip',this).val();
|
||||
var mac = $('#add_lease_mac',this).val();
|
||||
|
||||
var obj = {ip: ip, mac: mac};
|
||||
|
||||
if (!mac.length) { delete obj.mac; };
|
||||
|
||||
Sunstone.runAction("Network.modifyleases",
|
||||
$('#lease_vn_proceed',this).val(),
|
||||
obj);
|
||||
$lease_vn_dialog.dialog('close');
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
function popUpAddLeaseDialog() {
|
||||
$lease_vn_dialog.dialog("option","title","Add lease");
|
||||
$('#add_lease_mac',$lease_vn_dialog).show();
|
||||
$('#add_lease_mac_label',$lease_vn_dialog).show();
|
||||
$('#lease_vn_proceed',$lease_vn_dialog).val("Network.addleases");
|
||||
$lease_vn_dialog.dialog("open");
|
||||
}
|
||||
|
||||
function popUpRemoveLeaseDialog() {
|
||||
$lease_vn_dialog.dialog("option","title","Remove lease");
|
||||
$('#add_lease_mac',$lease_vn_dialog).hide();
|
||||
$('#add_lease_mac_label',$lease_vn_dialog).hide();
|
||||
$('#lease_vn_proceed',$lease_vn_dialog).val("Network.rmleases");
|
||||
$lease_vn_dialog.dialog("open");
|
||||
}
|
||||
|
||||
function setVNetAutorefresh() {
|
||||
setInterval(function(){
|
||||
var checked = $('input:checked',dataTable_vNetworks.fnGetNodes());
|
||||
@ -620,6 +738,7 @@ $(document).ready(function(){
|
||||
Sunstone.runAction("Network.list");
|
||||
|
||||
setupCreateVNetDialog();
|
||||
setupAddRemoveLeaseDialog();
|
||||
setVNetAutorefresh();
|
||||
|
||||
initCheckAllBoxes(dataTable_vNetworks);
|
||||
|
@ -184,7 +184,7 @@ function notifySubmit(action, args, extra_param){
|
||||
} else {
|
||||
msg += action_text + ": " + args;
|
||||
};
|
||||
if (extra_param) {
|
||||
if (extra_param && extra_param.constructor != Object) {
|
||||
msg += " >> " + extra_param;
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user