mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-21 14:50:08 +03:00
Merge branch 'master' into feature-924
This commit is contained in:
commit
e87b785212
@ -132,12 +132,19 @@ div#login input#login_btn:hover {
|
||||
}
|
||||
|
||||
.error_message {
|
||||
width: 400px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
display: none;
|
||||
position: relative;
|
||||
top: 80px;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
color:red;
|
||||
font-size:1.6em;
|
||||
font-size:1.0em;
|
||||
}
|
||||
|
||||
#login_spinner {
|
||||
left: 44px;
|
||||
position: relative;
|
||||
top: 2px;
|
||||
}
|
||||
|
||||
#label_remember {
|
||||
|
@ -24,14 +24,20 @@ function auth_error(req, error){
|
||||
|
||||
switch (status){
|
||||
case 401:
|
||||
$("#one_error").hide();
|
||||
$("#auth_error").fadeIn("slow");
|
||||
$("#error_box").text("Invalid username or password");
|
||||
break;
|
||||
case 500:
|
||||
$("#auth_error").hide();
|
||||
$("#one_error").fadeIn("slow");
|
||||
$("#error_box").text("OpenNebula is not running or there was a server exception. Please check the server logs.");
|
||||
break;
|
||||
case 0:
|
||||
$("#error_box").text("No answer from server. Is it running?");
|
||||
break;
|
||||
default:
|
||||
$("#error_box").text("Unexpected error. Status "+status+". Check the server logs.");
|
||||
|
||||
};
|
||||
$("#error_box").fadeIn("slow");
|
||||
$("#login_spinner").hide();
|
||||
}
|
||||
|
||||
function authenticate(){
|
||||
@ -40,6 +46,9 @@ function authenticate(){
|
||||
password = Crypto.SHA1(password);
|
||||
var remember = $("#check_remember").is(":checked");
|
||||
|
||||
$("#error_box").fadeOut("slow");
|
||||
$("#login_spinner").show();
|
||||
|
||||
var obj = { data: {username: username,
|
||||
password: password},
|
||||
remember: remember,
|
||||
@ -70,4 +79,5 @@ $(document).ready(function(){
|
||||
};
|
||||
|
||||
$("input#username.box").focus();
|
||||
$("#login_spinner").hide();
|
||||
});
|
||||
|
@ -189,7 +189,7 @@ var OCCI = {
|
||||
$.ajax({
|
||||
url: resource.toLowerCase(),
|
||||
type: "GET",
|
||||
data: {timeout: timeout},
|
||||
data: {timeout: timeout, verbose: true},
|
||||
dataType: "xml ONEjson",
|
||||
success: function(response){
|
||||
var res = {};
|
||||
|
@ -153,13 +153,6 @@ var vm_actions = {
|
||||
error: onError
|
||||
},
|
||||
|
||||
"VM.showstate" : {
|
||||
type: "single",
|
||||
call: OCCI.VM.show,
|
||||
callback: updateVMStateCB,
|
||||
error: onError
|
||||
},
|
||||
|
||||
"VM.refresh" : {
|
||||
type: "custom",
|
||||
call : function (){
|
||||
@ -178,7 +171,7 @@ var vm_actions = {
|
||||
"VM.suspend" : {
|
||||
type: "multiple",
|
||||
call: OCCI.VM.suspend,
|
||||
callback: updateVMStateCB,
|
||||
callback: updateVMachineElement,
|
||||
elements: vmElements,
|
||||
error: onError,
|
||||
notify: true
|
||||
@ -187,7 +180,7 @@ var vm_actions = {
|
||||
"VM.resume" : {
|
||||
type: "multiple",
|
||||
call: OCCI.VM.resume,
|
||||
callback: updateVMStateCB,
|
||||
callback: updateVMachineElement,
|
||||
elements: vmElements,
|
||||
error: onError,
|
||||
notify: true
|
||||
@ -196,7 +189,7 @@ var vm_actions = {
|
||||
"VM.stop" : {
|
||||
type: "multiple",
|
||||
call: OCCI.VM.stop,
|
||||
callback: updateVMStateCB,
|
||||
callback: updateVMachineElement,
|
||||
elements: vmElements,
|
||||
error: onError,
|
||||
notify: true
|
||||
@ -214,7 +207,7 @@ var vm_actions = {
|
||||
"VM.shutdown" : {
|
||||
type: "multiple",
|
||||
call: OCCI.VM.shutdown,
|
||||
callback: updateVMStateCB,
|
||||
callback: updateVMachineElement,
|
||||
elements: vmElements,
|
||||
error: onError,
|
||||
notify: true
|
||||
@ -223,7 +216,7 @@ var vm_actions = {
|
||||
"VM.cancel" : {
|
||||
type: "multiple",
|
||||
call: OCCI.VM.cancel,
|
||||
callback: updateVMStateCB,
|
||||
callback: updateVMachineElement,
|
||||
elements: vmElements,
|
||||
error: onError,
|
||||
notify: true
|
||||
@ -240,7 +233,7 @@ var vm_actions = {
|
||||
"VM.saveas" : {
|
||||
type: "single",
|
||||
call: OCCI.VM.saveas,
|
||||
callback: updateVMStateCB,
|
||||
callback: updateVMachineElement,
|
||||
error:onError
|
||||
},
|
||||
|
||||
@ -259,7 +252,7 @@ var vm_actions = {
|
||||
};
|
||||
var options = "";
|
||||
for (var i = 0; i<response.length; i++){
|
||||
var type = response[i].INSTANCE_TYPE.NAME;
|
||||
var type = response[i].INSTANCE_TYPE.name;
|
||||
options += '<option value="'+type+'">'+type+'</option>';
|
||||
};
|
||||
$('#dialog select#instance_type').html(options);
|
||||
@ -423,7 +416,7 @@ function vMachineElementArray(vm_json){
|
||||
return [
|
||||
'<input class="check_item" type="checkbox" id="vm_'+id+'" name="selected_items" value="'+id+'"/>',
|
||||
id,
|
||||
name
|
||||
VMStateBulletStr(vm_json) + name
|
||||
];
|
||||
}
|
||||
|
||||
@ -473,16 +466,15 @@ function updateVMachinesView(request, vmachine_list){
|
||||
$.each(vmachine_list,function(){
|
||||
el_array = vMachineElementArray(this);
|
||||
vmachine_list_array.push(el_array);
|
||||
Sunstone.runAction("VM.showstate",el_array[1]);
|
||||
});
|
||||
|
||||
updateView(vmachine_list_array,dataTable_vMachines);
|
||||
updateDashboard("vms",vmachine_list);
|
||||
};
|
||||
|
||||
function updateVMStateCB(request,vm){
|
||||
function VMStateBulletStr(vm){
|
||||
var vm_state = vm.COMPUTE.STATE;
|
||||
var state_html = vm_state;
|
||||
var state_html = "";
|
||||
switch (vm_state) {
|
||||
case "INIT":
|
||||
case "PENDING":
|
||||
@ -499,13 +491,8 @@ function updateVMStateCB(request,vm){
|
||||
state_html = '<img style="display:inline-block;margin-right:5px;" src="images/red_bullet.png" alt="'+vm_state+'" title="'+vm_state+'"/>';
|
||||
break;
|
||||
};
|
||||
|
||||
var tag = 'input#vm_'+vm.COMPUTE.ID;
|
||||
var array = vMachineElementArray(vm);
|
||||
array[2] = state_html + array[2];
|
||||
updateSingleElement(array,dataTable_vMachines,tag);
|
||||
};
|
||||
|
||||
return state_html;
|
||||
}
|
||||
|
||||
// Refreshes the information panel for a VM
|
||||
function updateVMInfo(request,vm){
|
||||
|
@ -3,7 +3,7 @@
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>OpenNebula Self-Service Login</title>
|
||||
<link rel="stylesheet" type="text/css" href="css/login.css" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="vendor/jQueryUI/jquery-ui-1.8.16.custom.css" />
|
||||
<!-- Vendor Libraries -->
|
||||
<script type="text/javascript" src="vendor/jQuery/jquery-1.7.1.min.js"></script>
|
||||
<script type="text/javascript" src="vendor/crypto-js/2.3.0-crypto-sha1.js"></script>
|
||||
@ -28,11 +28,7 @@
|
||||
<div id="logo_selfservice">
|
||||
</div>
|
||||
|
||||
<div id="auth_error" class="error_message">
|
||||
Invalid username or password
|
||||
</div>
|
||||
<div id="one_error" class="error_message">
|
||||
OpenNebula is not running
|
||||
<div id="error_box" class="error_message ui-state-error ui-corner-all">
|
||||
</div>
|
||||
|
||||
<form id="login_form">
|
||||
@ -46,7 +42,7 @@
|
||||
<input type="checkbox" id="check_remember" />
|
||||
<label id="label_remember" for="check_remember">Remember me</label>
|
||||
<input type="submit" id="login_btn" value="" />
|
||||
|
||||
<img src="images/ajax-loader.gif" alt="retrieving" id="login_spinner" />
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
@ -106,7 +106,7 @@ conf = YAML::load(File.read(CONF_FILE))
|
||||
rc, data = do_action("virsh -c #{@uri} --readonly nodeinfo")
|
||||
|
||||
if rc == false
|
||||
exit info
|
||||
exit data
|
||||
end
|
||||
|
||||
data.split(/\n/).each{|line|
|
||||
|
@ -23,6 +23,7 @@
|
||||
######################
|
||||
|
||||
:databasetype: sqlite
|
||||
#:databaseserver: dbuser:dbpassword@localhost
|
||||
#:htaccess: /var/www/.htaccess
|
||||
:dbdebug: no
|
||||
|
||||
|
@ -28,12 +28,20 @@ module OZones
|
||||
zone.vdcs.all.each{|vdc|
|
||||
htaccess << "RewriteRule ^#{vdc.NAME} " +
|
||||
"#{zone.ENDPOINT} [P]\n"
|
||||
|
||||
if zone.SUNSENDPOINT != nil
|
||||
htaccess << "RewriteRule ^sunstone_#{vdc.NAME}/(.+) " +
|
||||
"#{zone.SUNSENDPOINT}/$1 [P]\n"
|
||||
htaccess << "RewriteRule ^sunstone_#{vdc.NAME} " +
|
||||
"#{zone.SUNSENDPOINT}/ [P]\n"
|
||||
end
|
||||
|
||||
if zone.SELFENDPOINT != nil
|
||||
htaccess << "RewriteRule ^self_#{vdc.NAME}/(.+) " +
|
||||
"#{zone.SELFENDPOINT}/$1 [P]\n"
|
||||
htaccess << "RewriteRule ^self_#{vdc.NAME} " +
|
||||
"#{zone.SELFENDPOINT}/ [P]\n"
|
||||
end
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -30,6 +30,7 @@ module OZones
|
||||
property :ONEPASS, String, :required => true
|
||||
property :ENDPOINT, String, :required => true
|
||||
property :SUNSENDPOINT, String
|
||||
property :SELFENDPOINT, String
|
||||
|
||||
has n, :vdcs
|
||||
|
||||
|
@ -57,7 +57,20 @@ config=YAML::load(config_data)
|
||||
|
||||
db_type = config[:databasetype]
|
||||
|
||||
db_url = db_type + "://" + VAR_LOCATION + "/ozones.db"
|
||||
case db_type
|
||||
when "sqlite" then
|
||||
db_url = db_type + "://" + VAR_LOCATION + "/ozones.db"
|
||||
when "mysql","postgres" then
|
||||
if config[:databaseserver].nil?
|
||||
warn "DB server needed for this type of DB backend"
|
||||
exit -1
|
||||
end
|
||||
|
||||
db_url = db_type + "://" + config[:databaseserver] + "/ozones"
|
||||
else
|
||||
warn "DB type #{db_type} not recognized"
|
||||
exit -1
|
||||
end
|
||||
|
||||
##############################################################################
|
||||
# DB bootstrapping
|
||||
|
@ -133,12 +133,19 @@ div#login input#login_btn:hover {
|
||||
}
|
||||
|
||||
.error_message {
|
||||
width: 400px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
display: none;
|
||||
position: relative;
|
||||
top: 80px;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
color:red;
|
||||
font-size:1.6em;
|
||||
font-size:1.0em;
|
||||
}
|
||||
|
||||
#login_spinner {
|
||||
left: 44px;
|
||||
position: relative;
|
||||
top: 2px;
|
||||
}
|
||||
|
||||
#label_remember {
|
||||
|
@ -23,15 +23,21 @@ function auth_error(req, error){
|
||||
var status = error.error.http_status;
|
||||
|
||||
switch (status){
|
||||
case 401:
|
||||
$("#one_error").hide();
|
||||
$("#auth_error").fadeIn("slow");
|
||||
break;
|
||||
case 500:
|
||||
$("#auth_error").hide();
|
||||
$("#one_error").fadeIn("slow");
|
||||
break;
|
||||
}
|
||||
case 401:
|
||||
$("#error_box").text("Invalid username or password");
|
||||
break;
|
||||
case 500:
|
||||
$("#error_box").text("OpenNebula is not running or there was a server exception. Please check the server logs.");
|
||||
break;
|
||||
case 0:
|
||||
$("#error_box").text("No answer from server. Is it running?");
|
||||
break;
|
||||
default:
|
||||
$("#error_box").text("Unexpected error. Status "+status+". Check the server logs.");
|
||||
|
||||
};
|
||||
$("#error_box").fadeIn("slow");
|
||||
$("#login_spinner").hide();
|
||||
}
|
||||
|
||||
function authenticate(){
|
||||
@ -39,6 +45,9 @@ function authenticate(){
|
||||
var password = $("#password").val();
|
||||
var remember = $("#check_remember").is(":checked");
|
||||
|
||||
$("#error_box").fadeOut("slow");
|
||||
$("#login_spinner").show();
|
||||
|
||||
oZones.Auth.login({ data: {username: username
|
||||
, password: password}
|
||||
, remember: remember
|
||||
@ -61,4 +70,5 @@ $(document).ready(function(){
|
||||
};
|
||||
|
||||
$("input#username.box").focus();
|
||||
$("#login_spinner").hide();
|
||||
});
|
||||
|
@ -516,6 +516,10 @@ function setupCreateVDCDialog(){
|
||||
|
||||
function openCreateVDCDialog(){
|
||||
var dialog = $('div#create_vdc_dialog')
|
||||
if (!zones_select){
|
||||
notifyError(tr("No zones defined: You need to create at least 1 zone before creating an VDC"));
|
||||
return false;
|
||||
};
|
||||
$('select#zoneid',dialog).html(zones_select);
|
||||
$('select#zoneid',dialog).trigger("change");
|
||||
$('#vdc_available_hosts_list',dialog).empty();
|
||||
|
@ -3,7 +3,7 @@
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>OpenNebula oZones Login</title>
|
||||
<link rel="stylesheet" type="text/css" href="css/login.css" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="vendor/jQueryUI/jquery-ui-1.8.16.custom.css" />
|
||||
<!-- Vendor Libraries -->
|
||||
<script type="text/javascript" src="vendor/jQuery/jquery-1.7.1.min.js"></script>
|
||||
<!-- End Vendor Libraries -->
|
||||
@ -24,11 +24,7 @@
|
||||
<div id="logo_sunstone">
|
||||
</div>
|
||||
|
||||
<div id="auth_error" class="error_message">
|
||||
Invalid username or password
|
||||
</div>
|
||||
<div id="one_error" class="error_message">
|
||||
OpenNebula is not running
|
||||
<div id="error_box" class="error_message ui-state-error ui-corner-all">
|
||||
</div>
|
||||
|
||||
<form id="login_form">
|
||||
@ -42,6 +38,7 @@
|
||||
<input type="checkbox" id="check_remember">
|
||||
<label id="label_remember" for="check_remember">Remember me</label>
|
||||
<input type="submit" id="login_btn" value="" />
|
||||
<img src="images/ajax-loader.gif" alt="retrieving" id="login_spinner" />
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
@ -134,10 +134,17 @@ div#login input#login_btn:hover {
|
||||
.error_message {
|
||||
display: none;
|
||||
position: relative;
|
||||
width:400px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
top: 80px;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
color:red;
|
||||
font-size:1.6em;
|
||||
font-size:1.0em;
|
||||
}
|
||||
|
||||
#login_spinner {
|
||||
left: 44px;
|
||||
position: relative;
|
||||
top: 2px;
|
||||
}
|
||||
|
||||
#label_remember {
|
||||
|
@ -24,14 +24,19 @@ function auth_error(req, error){
|
||||
|
||||
switch (status){
|
||||
case 401:
|
||||
$("#one_error").hide();
|
||||
$("#auth_error").fadeIn("slow");
|
||||
$("#error_box").text("Invalid username or password");
|
||||
break;
|
||||
case 500:
|
||||
$("#auth_error").hide();
|
||||
$("#one_error").fadeIn("slow");
|
||||
$("#error_box").text("OpenNebula is not running or there was a server exception. Please check the server logs.");
|
||||
break;
|
||||
case 0:
|
||||
$("#error_box").text("No answer from server. Is it running?");
|
||||
break;
|
||||
default:
|
||||
$("#error_box").text("Unexpected error. Status "+status+". Check the server logs.");
|
||||
};
|
||||
$("#error_box").fadeIn("slow");
|
||||
$("#login_spinner").hide();
|
||||
}
|
||||
|
||||
function authenticate(){
|
||||
@ -39,6 +44,9 @@ function authenticate(){
|
||||
var password = $("#password").val();
|
||||
var remember = $("#check_remember").is(":checked");
|
||||
|
||||
$("#error_box").fadeOut("slow");
|
||||
$("#login_spinner").show();
|
||||
|
||||
OpenNebula.Auth.login({ data: {username: username
|
||||
, password: password}
|
||||
, remember: remember
|
||||
@ -61,4 +69,5 @@ $(document).ready(function(){
|
||||
};
|
||||
|
||||
$("input#username.box").focus();
|
||||
$("#login_spinner").hide();
|
||||
});
|
||||
|
@ -131,9 +131,11 @@ var user_actions = {
|
||||
"User.passwd" : {
|
||||
type: "multiple",
|
||||
call: OpenNebula.User.passwd,
|
||||
//nocallback
|
||||
callback: function(req,res){
|
||||
notifyMessage(tr("Change password successful"));
|
||||
},
|
||||
elements: userElements,
|
||||
error: onError
|
||||
error: onError,
|
||||
},
|
||||
"User.chgrp" : {
|
||||
type: "multiple",
|
||||
@ -492,6 +494,7 @@ function popUpCreateUserDialog(){
|
||||
|
||||
|
||||
function popUpUpdatePasswordDialog(){
|
||||
$('#new_password',$update_pw_dialog).val("");
|
||||
$update_pw_dialog.dialog('open');
|
||||
}
|
||||
|
||||
|
@ -3,6 +3,7 @@
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>OpenNebula Sunstone Login</title>
|
||||
<link rel="stylesheet" type="text/css" href="css/login.css" />
|
||||
<link rel="stylesheet" type="text/css" href="vendor/jQueryUI/jquery-ui-1.8.16.custom.css" />
|
||||
|
||||
<!-- Vendor Libraries -->
|
||||
<script type="text/javascript" src="vendor/jQuery/jquery-1.7.1.min.js"></script>
|
||||
@ -25,11 +26,7 @@
|
||||
<div id="logo_sunstone">
|
||||
</div>
|
||||
|
||||
<div id="auth_error" class="error_message">
|
||||
Invalid username or password
|
||||
</div>
|
||||
<div id="one_error" class="error_message">
|
||||
OpenNebula is not running
|
||||
<div id="error_box" class="error_message ui-state-error ui-corner-all">
|
||||
</div>
|
||||
|
||||
<form id="login_form">
|
||||
@ -43,6 +40,7 @@
|
||||
<input type="checkbox" id="check_remember" />
|
||||
<label id="label_remember" for="check_remember">Remember me</label>
|
||||
<input type="submit" id="login_btn" value="" />
|
||||
<img src="images/ajax-loader.gif" alt="retrieving" id="login_spinner" />
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
Loading…
x
Reference in New Issue
Block a user