First files to the project
This commit is contained in:
commit
cda8eb1232
26 changed files with 2657 additions and 0 deletions
42
templates/admin/add_server.phtml
Normal file
42
templates/admin/add_server.phtml
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
<%inherit file="dashboard.phtml"/>
|
||||
<%block name="content">
|
||||
<div id="principal_container">
|
||||
<p><a href="${url_for('.pastafari2_dashboard')}">Servers</a> >> ${lang('pastafari2', 'add_server', 'Add server')}</p>
|
||||
<h2>${lang('pastafari2', 'add_server', 'Add server')}</h2>
|
||||
<div class="form">
|
||||
<form method="post" name="add_server" id="add_server_form">
|
||||
<p>Please fill the form for add the new server to the system.</p>
|
||||
<p><label>${lang('pastafari2', 'server_host', 'Server host')}* <span class="pastafari2_error error" id="server_host_error"></span></label> <input type="text" name="server_host" value=""></p>
|
||||
<p><label>${lang('pastafari2', 'server_group', 'Server group')} <span class="pastafari2_error error" id="group_id_error"></span></label> ${group_form.form()|n}</p>
|
||||
<p><label>${lang('pastafari2', 'server_username', 'Server username')} <span class="pastafari2_error error" id="server_username_error"></span></label> <input type="text" name="server_username" value=""></p>
|
||||
<p><label>${lang('pastafari2', 'server_password', 'Server password.')} <span class="pastafari2_error error" id="server_password_error"></span></label> <input type="password" name="server_password" value=""></p>
|
||||
<p><label>${lang('pastafari2', 'repeat_server_password', 'Repeat server password')} <span class="pastafari2_error error" id="repeat_server_password_error"></span></label> <input type="password" name="repeat_server_password" value=""></p>
|
||||
<p><input type="submit" value="${lang('pastafari2', 'send', 'Send')}"/></p>
|
||||
</form>
|
||||
</div>
|
||||
<p><a href="${url_for('.pastafari2_dashboard')}">Servers</a> >> ${lang('pastafari2', 'add_server', 'Add server')}</p>
|
||||
<script type="text/javascript" src="${make_media_url('js/jsutils/posting2.js', 'monit')}"></script>
|
||||
<script>
|
||||
var options={url: "${url_for('.pastafari2_add_server_task')}", loading: '#layer_loading', success: function (data) {
|
||||
|
||||
task_id=data.task_id;
|
||||
|
||||
if(task_id>0) {
|
||||
|
||||
location.href="${url_for('.pastafari2_progress')}?task_id="+task_id;
|
||||
|
||||
}
|
||||
|
||||
|
||||
}, error_data: function (data) {
|
||||
|
||||
console.log(JSON.stringify(data));
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
jQuery('#add_server_form').sendPost(options);
|
||||
|
||||
</script>
|
||||
</div>
|
||||
</%block>
|
||||
135
templates/admin/dash_pastafari.phtml
Normal file
135
templates/admin/dash_pastafari.phtml
Normal file
|
|
@ -0,0 +1,135 @@
|
|||
<%inherit file="dashboard.phtml"/>
|
||||
<%block name="content">
|
||||
<div id="principal_container">
|
||||
<p><a href="${url_for('.pastafari2_add_server')}">${lang('pastafari2', 'add_server', 'Add server')}</a>
|
||||
<p>${lang('monit', 'choose_group', 'Choose group')}:
|
||||
<select name="group_id" id="group_id">
|
||||
|
||||
</select>
|
||||
</p>
|
||||
<input type="button" name="select_all" class="select_all" value="${lang('pastafari2', 'select_all_servers', 'Select all servers')}" />
|
||||
<input type="button" name="deselect_all" class="deselect_all" value="${lang('pastafari2', 'deselect_all_servers', 'Deselect all servers')}" />
|
||||
<input type="button" name="update_selected_servers" class="update_selected_servers button_blue" value="${lang('pastafari2', 'update_selected_servers', 'Update selected servers')}" />
|
||||
<div id="table_servers">
|
||||
</div>
|
||||
<input type="button" name="select_all" class="select_all" value="${lang('pastafari2', 'select_all_servers', 'Select all servers')}" />
|
||||
<input type="button" name="deselect_all" class="deselect_all" value="${lang('pastafari2', 'deselect_all_servers', 'Deselect all servers')}" />
|
||||
<input type="button" name="update_selected_servers" class="update_selected_servers button_blue" value="${lang('pastafari2', 'update_selected_servers', 'Update selected servers')}" />
|
||||
</div>
|
||||
</%block>
|
||||
<%block name="jscript_block">
|
||||
<script language="Javascript" src="${make_media_url('js/jsutils/posting2.js', 'monit')}"></script>
|
||||
<script language="Javascript" src="${make_media_url('js/jsutils/ajax_list.js', 'monit')}"></script>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
|
||||
options={'url': "${url_for('.get_servers_task')}", extra_data: {'group_code': $('#group_servers').val()}};
|
||||
|
||||
alist=$('#table_servers').ajaxList('table_list', options);
|
||||
|
||||
function update_groups() {
|
||||
|
||||
$.ajax({
|
||||
url: "${url_for('.get_groups_task')}",
|
||||
data: {},
|
||||
success: function (data) {
|
||||
|
||||
$('#group_id').html('<option value="">All groups</option>');
|
||||
|
||||
for(i in data) {
|
||||
|
||||
$('#group_id').append('<option value="'+data[i]['id']+'">'+data[i]['group']+'</option>');
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
dataType: 'json'
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
update_groups();
|
||||
|
||||
$('#group_id').click(function () {
|
||||
|
||||
options={'url': "${url_for('.get_servers_task')}", extra_data: {'group_id': $('#group_id').val()}};
|
||||
|
||||
alist.updateAjax('table_list', options, 0);
|
||||
|
||||
});
|
||||
|
||||
$('.select_all').click( function () {
|
||||
|
||||
|
||||
$('.server_id').prop('checked', true);
|
||||
|
||||
});
|
||||
|
||||
$('.deselect_all').click( function () {
|
||||
|
||||
|
||||
$('.server_id').prop('checked', false);
|
||||
|
||||
});
|
||||
|
||||
|
||||
$('.update_selected_servers').click( function () {
|
||||
|
||||
if($('.server_id:checked').length==0) {
|
||||
|
||||
alert("${lang('pastafari2', 'no_servers_selected', 'No servers selected')}");
|
||||
return false;
|
||||
|
||||
}
|
||||
else {
|
||||
|
||||
$('#layer_loading').show();
|
||||
|
||||
server_ids=[];
|
||||
|
||||
$('.server_id').each( function () {
|
||||
|
||||
server_ids.push($(this).val());
|
||||
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
|
||||
url:"${url_for('.pastafari2_update_task')}",
|
||||
data: {'ids': JSON.stringify(server_ids)},
|
||||
success: function (data) {
|
||||
|
||||
if(!data.error) {
|
||||
|
||||
//Redirect to multiprogress
|
||||
location.href="${url_for('.pastafari2_multiprogress')}?task_id="+data.task_id;
|
||||
|
||||
}
|
||||
else {
|
||||
|
||||
alert(data.txt_error);
|
||||
|
||||
}
|
||||
|
||||
$('#layer_loading').hide();
|
||||
|
||||
},
|
||||
error: function (data) {
|
||||
|
||||
$('#layer_loading').hide();
|
||||
alert('Error: '+data.status+' '+data.statusText);
|
||||
|
||||
},
|
||||
type: 'POST',
|
||||
dataType: 'json',
|
||||
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
</%block>
|
||||
104
templates/admin/multiprogress.phtml
Normal file
104
templates/admin/multiprogress.phtml
Normal file
|
|
@ -0,0 +1,104 @@
|
|||
<%inherit file="dashboard.phtml"/>
|
||||
<%block name="content">
|
||||
<h2>${name_task}</h2>
|
||||
<p>${description_task}</p>
|
||||
<hr />
|
||||
<p>${lang('pastafari2', 'num_servers', 'Number of servers')}: <span id="num_servers">${num_servers}</span></p>
|
||||
<p>${lang('pastafari2', 'completed_tasks', 'Completed tasks')}: <span id="num_completed">0</span></p>
|
||||
<p id="detecting_servers" style="display:none;">${lang('pastafari2', 'loading_servers', 'Loading servers...')} <i class="fa fa-cog fa-spin fa-fw"></i></p>
|
||||
<table class="table_servers" style="width:100%;">
|
||||
<tr class="row_server" id="father_server" style="display:none;">
|
||||
<td class="hostname">Hostname</td>
|
||||
<td class="progress"><span class="progress_text">In progress</span> <i class="fa fa-cog fa-spin fa-fw"></i></td>
|
||||
<td><a href="#" class="server_log">${lang('pastafari2', 'server_log', 'Server log')}</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div id="finished" style="display:none;">
|
||||
<p><strong>All tasks were finished.</strong></p>
|
||||
</div>
|
||||
</%block>
|
||||
<%block name="jscript_block">
|
||||
<script>
|
||||
|
||||
ids=[];
|
||||
|
||||
//Get all tasks, next process 50 next progress.
|
||||
$.ajax({
|
||||
url: "${url_for('.pastafari2_get_servers_task')}",
|
||||
data: {task_id: ${task_id}},
|
||||
success: function (data) {
|
||||
|
||||
for(i in data) {
|
||||
|
||||
//console.log(data[i]);
|
||||
new_row=$(father_server).clone().appendTo('.table_servers');
|
||||
new_row.prop('id', 'task_'+data[i].id);
|
||||
//console.log(data[i]);
|
||||
new_row.children('.hostname').html(data[i].hostname);
|
||||
|
||||
new_row.find('.server_log').attr('href', "${url_for('.pastafari2_progress')}?task_id="+data[i].id);
|
||||
|
||||
new_row.show();
|
||||
|
||||
ids.push(data[i].id);
|
||||
//console.log($('#father_server').attr('id'));
|
||||
|
||||
}
|
||||
|
||||
get_log();
|
||||
|
||||
setInterval(get_log, 1000);
|
||||
|
||||
},
|
||||
dataType: 'json'
|
||||
});
|
||||
|
||||
function get_log() {
|
||||
|
||||
$.ajax({
|
||||
url: "${url_for('.pastafari2_get_multiprogress')}",
|
||||
data: {ids: JSON.stringify(ids)},
|
||||
success: function (data) {
|
||||
|
||||
/*$('.row_server').each(function () {
|
||||
|
||||
console.log($(this).attr('id'));
|
||||
|
||||
});*/
|
||||
|
||||
for(i in data) {
|
||||
|
||||
//console.log(data[i]);
|
||||
|
||||
//If is no_progress then show message.
|
||||
|
||||
if(!data[i].no_progress) {
|
||||
//console.log('#server_'+data[i].server);
|
||||
$('#task_'+data[i].task_id).find('.progress_text').html(data[i].message);
|
||||
|
||||
if(data[i].status==1) {
|
||||
|
||||
if(data[i].error==0) {
|
||||
|
||||
$('#task_'+data[i].task_id).find('i').removeClass('fa-cog fa-spin fa-fw').addClass('fa-check');
|
||||
|
||||
}
|
||||
else {
|
||||
|
||||
$('#task_'+data[i].task_id).find('i').removeClass('fa-cog fa-spin fa-fw').addClass('fa-times');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
dataType: 'json'
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
</script>
|
||||
</%block>
|
||||
224
templates/admin/progress.phtml
Normal file
224
templates/admin/progress.phtml
Normal file
|
|
@ -0,0 +1,224 @@
|
|||
<%inherit file="dashboard.phtml"/>
|
||||
<%block name="extra_css">
|
||||
<link href="${make_media_url('css/jquery-ui.min.css', 'pastafari2')}" rel="stylesheet">
|
||||
<link href="${make_media_url('css/jquery-ui-theme.min.css', 'pastafari2')}" rel="stylesheet">
|
||||
<style>
|
||||
.ui-progressbar {
|
||||
position: relative;
|
||||
}
|
||||
.progress-label {
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 4px;
|
||||
font-weight: bold;
|
||||
color: #fff;
|
||||
text-shadow: 1px 1px 0 #000;
|
||||
}
|
||||
</style>
|
||||
</%block>
|
||||
<%block name="content">
|
||||
<h2>${lang('pastafari2', 'task progress', 'Task progress')} - ${name_task}</h2>
|
||||
<p>${description_task}</p>
|
||||
<hr />
|
||||
<i class="fa fa-cog fa-spin fa-5x fa-fw margin-bottom" id="gear"></i>
|
||||
<div id="progressbar"><div class="progress-label">${lang('pastafari2', 'processing_task', 'Processing task...')}</div></div>
|
||||
<div id="no_progress" style="border: solid #cbcbcb 1px;height:150px;overflow:scroll;padding:2px;"></div>
|
||||
</%block>
|
||||
<%block name="jscript_block">
|
||||
<script language="Javascript" src="${make_media_url('js/jquery-ui.min.js', 'pastafari2')}"></script>
|
||||
<script>
|
||||
|
||||
position=${position};
|
||||
yes_progress=1;
|
||||
yes_position=0;
|
||||
last_status=0;
|
||||
|
||||
text_complete="Complete!";
|
||||
|
||||
var progressbar = $( "#progressbar" ),
|
||||
progressLabel = $( ".progress-label" );
|
||||
|
||||
progressbar.progressbar({
|
||||
value: false,
|
||||
change: function() {
|
||||
|
||||
if(progressbar.progressbar( "value" )>0)
|
||||
{
|
||||
|
||||
progressLabel.text( progressbar.progressbar( "value" ) + "%" );
|
||||
console.log('Progress '+progressbar.progressbar( "value" ) + "%");
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
progressbar.progressbar( "value", false);
|
||||
progressLabel.text( "Processing task..." );
|
||||
console.log('Processing task...');
|
||||
|
||||
}
|
||||
},
|
||||
complete: function() {
|
||||
progressLabel.text( text_complete );
|
||||
}
|
||||
});
|
||||
|
||||
objDiv = document.getElementById("no_progress");
|
||||
|
||||
function update_messages_queue(message)
|
||||
{
|
||||
|
||||
//timeout=setTimeout(function () {
|
||||
|
||||
progressbar.progressbar( "value", false );
|
||||
|
||||
$('#no_progress').append(message);
|
||||
objDiv.scrollTop = objDiv.scrollHeight;
|
||||
|
||||
//}, 600);
|
||||
|
||||
//return timeout;
|
||||
|
||||
}
|
||||
|
||||
function update_progress_messages_queue(message, progress)
|
||||
{
|
||||
|
||||
console.log('Getting progress...');
|
||||
|
||||
//timeout=setTimeout(function () {
|
||||
|
||||
progress=parseInt(progress);
|
||||
|
||||
progressbar.progressbar( "value", progress );
|
||||
|
||||
$('#no_progress').append(message+'<br />');
|
||||
|
||||
objDiv.scrollTop = objDiv.scrollHeight;
|
||||
|
||||
//}, 600);
|
||||
|
||||
//return timeout;
|
||||
|
||||
}
|
||||
|
||||
function finish_progress_error(progress)
|
||||
{
|
||||
|
||||
progressbar.progressbar( "value", progress );
|
||||
progressLabel.text( "ERROR, please see the log" );
|
||||
|
||||
}
|
||||
|
||||
|
||||
function update_progress()
|
||||
{
|
||||
|
||||
//pastafari/showprogress/tasks
|
||||
|
||||
$.ajax({
|
||||
url: "${url_for('.pastafari2_getprogress')}?task_id=${task_id}&server=${server}&position="+position,
|
||||
method: "POST",
|
||||
dataType: "json",
|
||||
data: {}
|
||||
}).done(function(data) {
|
||||
|
||||
if(!data.hasOwnProperty("wait"))
|
||||
{
|
||||
|
||||
x=data.length;
|
||||
|
||||
for(k=0;k<x;k++)
|
||||
{
|
||||
|
||||
if(data[k].no_progress==1)
|
||||
{
|
||||
//yes_progress=0;
|
||||
//$('#no_progress').append(data[k].message+'<br />');
|
||||
update_messages_queue(data[k].message+'<br />');
|
||||
|
||||
//Scroll
|
||||
|
||||
}
|
||||
else
|
||||
if(data[k].no_progress==0)
|
||||
{
|
||||
|
||||
update_progress_messages_queue(data[k].message, data[k].progress);
|
||||
|
||||
}
|
||||
|
||||
if(data[k].status!=1)
|
||||
{
|
||||
position+=1;
|
||||
last_status=0;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
position+=1;
|
||||
last_status=1;
|
||||
|
||||
if(data[k].error==1)
|
||||
{
|
||||
text_complete='ERROR, please view the log';
|
||||
finish_progress_error(data[k].progress);
|
||||
console.log('ERROR, please view the log');
|
||||
console.log('Error, finishing progress...');
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
//progressLabel.text( "Complete!" );
|
||||
|
||||
}
|
||||
|
||||
//clearTimeout(update_interval);
|
||||
|
||||
$('#gear').removeClass('fa-spin');
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
if(last_status==0)
|
||||
{
|
||||
|
||||
update_interval = setTimeout(update_progress, 1000);
|
||||
console.log('Updating progress...');
|
||||
|
||||
}
|
||||
else {
|
||||
|
||||
console.log('Finishing progress...');
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
console.log('Updating waiting progress...');
|
||||
update_interval = setTimeout(update_progress, 1000);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}).fail(function (data) {
|
||||
|
||||
alert('Error: '+data.status+' '+data.statusText);
|
||||
/*clearInterval(update_interval);*/
|
||||
text_complete='ERROR, please view the log';
|
||||
finish_progress_error(100);
|
||||
$('#gear').removeClass('fa-spin');
|
||||
});
|
||||
}
|
||||
|
||||
update_progress();
|
||||
|
||||
</script>
|
||||
</%block>
|
||||
49
templates/admin/settings.phtml
Normal file
49
templates/admin/settings.phtml
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
<%inherit file="dashboard.phtml"/>
|
||||
<%block name="content">
|
||||
<div id="principal_container">
|
||||
<form method="post" name="generate_key" id="generate_key">
|
||||
<h2>${lang('pastafari2', 'global_ssh_keys', 'Global ssh keys')}</h2>
|
||||
<div class="form">
|
||||
${txt_error|n}
|
||||
${txt_generate_key|n}
|
||||
</div>
|
||||
% if not regenerate:
|
||||
<p><input type="submit" value="${txt_generate_key_button}" /></p>
|
||||
|
||||
% endif
|
||||
</form>
|
||||
</div>
|
||||
</%block>
|
||||
<%block name="jscript_block">
|
||||
<script language="Javascript" src="${make_media_url('js/jsutils/ajax_list.js', 'monit')}"></script>
|
||||
<script language="Javascript" src="${make_media_url('js/jsutils/posting2.js', 'monit')}"></script>
|
||||
<script>
|
||||
|
||||
% if not regenerate:
|
||||
|
||||
var options={url: "${url_for('admin_app.pastafari2_edit_global_ssh_keys')}", loading: '#layer_loading', pre_callback: function (data) {
|
||||
|
||||
//alert('This action overwrite all ssh keys');
|
||||
|
||||
}, success: function (data) {
|
||||
|
||||
/*$('#added_alert_success').show();
|
||||
|
||||
|
||||
setTimeout(function () {
|
||||
|
||||
$('#added_alert_success').fadeOut();
|
||||
|
||||
}, 3000);*/
|
||||
|
||||
location.href="${url_for('admin_app.pastafari2_settings')}";
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
$('#generate_key').sendPost(options);
|
||||
|
||||
% endif
|
||||
|
||||
</script>
|
||||
</%block>
|
||||
Loading…
Add table
Add a link
Reference in a new issue