mirror of https://github.com/Aidaho12/haproxy-wi
parent
79f0a0a8bc
commit
45e9510e02
|
@ -1032,11 +1032,26 @@ if form.getvalue('masteradd'):
|
|||
|
||||
funct.show_installation_output(error, output, 'master VRRP address')
|
||||
|
||||
if form.getvalue('masteradd_slave'):
|
||||
master = form.getvalue('masteradd_slave')
|
||||
slave = form.getvalue('slaveadd')
|
||||
ETH = form.getvalue('interfaceadd')
|
||||
IP = form.getvalue('vrrpipadd')
|
||||
kp = form.getvalue('kp')
|
||||
script = "install_keepalived.sh"
|
||||
proxy = sql.get_setting('proxy')
|
||||
ssh_enable, ssh_user_name, ssh_user_password, ssh_key_name = funct.return_ssh_keys_path(slave)
|
||||
|
||||
if ssh_enable == 0:
|
||||
ssh_key_name = ''
|
||||
|
||||
if proxy is not None and proxy != '' and proxy != 'None':
|
||||
proxy_serv = proxy
|
||||
else:
|
||||
proxy_serv = ''
|
||||
|
||||
os.system("cp scripts/%s ." % script)
|
||||
|
||||
servers = sql.select_servers(server=slave)
|
||||
for server in servers:
|
||||
ssh_port = str(server[10])
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
vrrp_instance VI_{{IP}} {
|
||||
state {{MASTER}}
|
||||
interface {{ETH}}
|
||||
virtual_router_id 101
|
||||
virtual_router_id {{ range(101, 1000) | random }}
|
||||
priority 103
|
||||
|
||||
track_script {
|
||||
|
|
|
@ -111,4 +111,17 @@
|
|||
<div id="creating-progress" style="width: 0%;"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="address_creating" style="display: none;">
|
||||
<ul style="padding: 20px 20px 0px 20px;font-size: 15px;">
|
||||
<li id="creating-master-add" class="server-creating proccessing">Creating a new address on Master Keepalived...</li>
|
||||
<li id="creating-slave-add" class="server-creating proccessing">Creating a new address on Slave Keepalived...</li>
|
||||
</ul>
|
||||
<div id="wait-mess-add"></div>
|
||||
<div id="created-mess-add" class="alert alert-success" style="display:none;"></div>
|
||||
<div id="creating-error-add" class="alert alert-danger" style="display:none;"></div>
|
||||
<div id="creating-warning-add" class="alert alert-warning" style="display:none;"></div>
|
||||
<div class="progress-bar-striped">
|
||||
<div id="creating-progress-add" style="width: 0%;"></div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
173
inc/ha.js
173
inc/ha.js
|
@ -3,6 +3,33 @@ $( function() {
|
|||
width: 180
|
||||
});
|
||||
var ipformat = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
|
||||
|
||||
var server_creating = $( "#server_creating" ).dialog({
|
||||
autoOpen: false,
|
||||
width: 574,
|
||||
modal: true,
|
||||
title: "Creating a new HA cluster",
|
||||
buttons: {
|
||||
Close: function() {
|
||||
$( this ).dialog( "close" );
|
||||
cleanProvisioningProccess('#server_creating ul li', '#created-mess', '#creating-error', '#creating-warning', '#creating-progress', '#creating-master', '#creating-slave', '#haproxy_installing_div', '#nginx_installing_div');
|
||||
$('#wait_mess').show();
|
||||
}
|
||||
}
|
||||
});
|
||||
var address_add = $( "#address_creating" ).dialog({
|
||||
autoOpen: false,
|
||||
width: 574,
|
||||
modal: true,
|
||||
title: "Adding a new VRRP address",
|
||||
buttons: {
|
||||
Close: function() {
|
||||
$( this ).dialog( "close" );
|
||||
cleanProvisioningProccess('#address_creating ul li', '#created-mess-add', '#creating-error', '#creating-warning-add', '#creating-progress-add', '#creating-master-add', '#creating-slave-add', '', '');
|
||||
$('#wait_mess-add').show();
|
||||
}
|
||||
}
|
||||
});
|
||||
$('#add-vrrp').click(function() {
|
||||
var kp = 0;
|
||||
if ($('#kp').is(':checked')) {
|
||||
|
@ -17,47 +44,14 @@ $( function() {
|
|||
} else if(! $("#vrrp-ip-add").val().match(ipformat)) {
|
||||
toastr.warning('Please enter IP in "VRRP IP" field')
|
||||
} else {
|
||||
$("#ajax").html(wait_mess);
|
||||
$.ajax( {
|
||||
url: "options.py",
|
||||
data: {
|
||||
masteradd: $('#master-add').val(),
|
||||
slaveadd: $('#slave-add').val(),
|
||||
interfaceadd: $("#interface-add").val(),
|
||||
vrrpipadd: $('#vrrp-ip-add').val(),
|
||||
kp: kp,
|
||||
token: $('#token').val()
|
||||
},
|
||||
type: "POST",
|
||||
success: function( data ) {
|
||||
data = data.replace(/\s+/g,' ');
|
||||
if (data.indexOf('error:') != '-1') {
|
||||
toastr.clear();
|
||||
toastr.error(data);
|
||||
} else if (data.indexOf('success') != '-1'){
|
||||
toastr.clear();
|
||||
toastr.success(data);
|
||||
} else {
|
||||
toastr.clear();
|
||||
toastr.info(data);
|
||||
}
|
||||
}
|
||||
} );
|
||||
$("#wait-mess-add").html(wait_mess);
|
||||
address_add.dialog('open');
|
||||
add_master_addr(kp);
|
||||
$.getScript("/inc/fontawesome.min.js");
|
||||
add_slave_addr(kp);
|
||||
|
||||
}
|
||||
});
|
||||
var server_creating = $( "#server_creating" ).dialog({
|
||||
autoOpen: false,
|
||||
width: 574,
|
||||
modal: true,
|
||||
title: "Creating a new HA cluster",
|
||||
buttons: {
|
||||
Close: function() {
|
||||
$( this ).dialog( "close" );
|
||||
cleanProvisioningProccess('#server_creating ul li', '#created-mess');
|
||||
$('#wait_mess').show();
|
||||
}
|
||||
}
|
||||
});
|
||||
$('#create').click(function() {
|
||||
var hap = 0;
|
||||
var nginx = 0;
|
||||
|
@ -83,6 +77,7 @@ $( function() {
|
|||
$("#wait-mess").html(wait_mess);
|
||||
server_creating.dialog('open');
|
||||
create_master_keepalived(hap, nginx, syn_flood);
|
||||
$.getScript("/inc/fontawesome.min.js");
|
||||
create_slave_keepalived(hap, nginx, syn_flood);
|
||||
if (hap == '1') {
|
||||
$('#haproxy_installing_div').show();
|
||||
|
@ -93,6 +88,54 @@ $( function() {
|
|||
}
|
||||
});
|
||||
});
|
||||
function add_master_addr(kp) {
|
||||
$.ajax( {
|
||||
url: "options.py",
|
||||
data: {
|
||||
masteradd: $('#master-add').val(),
|
||||
slaveadd: $('#slave-add').val(),
|
||||
interfaceadd: $("#interface-add").val(),
|
||||
vrrpipadd: $('#vrrp-ip-add').val(),
|
||||
kp: kp,
|
||||
token: $('#token').val()
|
||||
},
|
||||
type: "POST",
|
||||
success: function( data ) {
|
||||
data = data.replace(/\s+/g,' ');
|
||||
if (data.indexOf('error:') != '-1') {
|
||||
showProvisioningError(data, '#creating-master-add', '#wait-mess-add', '#creating-error-add');
|
||||
} else if (data == '' ){
|
||||
showProvisioningWarning('#creating-master-add', 'master Keepalived', '#creating-warning-add', '#wait_mess-add');
|
||||
} else if (data.indexOf('success') != '-1' ){
|
||||
showProvisioningProccess('<p>'+data+'</p>', '#creating-master-add', '50', '#creating-progress-add', '#created-mess-add', '#wait-mess-add');
|
||||
}
|
||||
}
|
||||
} );
|
||||
}
|
||||
function add_slave_addr(kp) {
|
||||
$.ajax( {
|
||||
url: "options.py",
|
||||
data: {
|
||||
masteradd_slave: $('#master-add').val(),
|
||||
slaveadd: $('#slave-add').val(),
|
||||
interfaceadd: $("#interface-add").val(),
|
||||
vrrpipadd: $('#vrrp-ip-add').val(),
|
||||
kp: kp,
|
||||
token: $('#token').val()
|
||||
},
|
||||
type: "POST",
|
||||
success: function( data ) {
|
||||
data = data.replace(/\s+/g,' ');
|
||||
if (data.indexOf('error:') != '-1') {
|
||||
showProvisioningError(data, '#creating-slave-add', '#wait-mess-add', '#creating-error-add');
|
||||
} else if (data == '' ){
|
||||
showProvisioningWarning('#creating-slave-add', 'master Keepalived', '#creating-warning-add', '#wait_mess-add');
|
||||
} else if (data.indexOf('success') != '-1' ){
|
||||
showProvisioningProccess('<p>'+data+'</p>', '#creating-slave-add', '100', '#creating-progress-add', '#created-mess-add', '#wait-mess-add');
|
||||
}
|
||||
}
|
||||
} );
|
||||
}
|
||||
function create_master_keepalived(hap, nginx, syn_flood) {
|
||||
if (hap == '0' && nginx == '0') {
|
||||
var progress_value = '50';
|
||||
|
@ -119,9 +162,9 @@ function create_master_keepalived(hap, nginx, syn_flood) {
|
|||
if (data.indexOf('error:') != '-1' || data.indexOf('FAILED') != '-1') {
|
||||
showProvisioningError(data, '#creating-master', '#wait-mess', '#creating-error');
|
||||
} else if (data == '' ){
|
||||
showProvisioningWarning(step_id, 'master Keepalived');
|
||||
showProvisioningWarning(step_id, 'master Keepalived', '#creating-warning', '#wait_mess');
|
||||
} else if (data.indexOf('success') != '-1' ){
|
||||
showProvisioningProccess('<p>'+data+'</p>', '#creating-master', progress_value, '#creating-progress');
|
||||
showProvisioningProccess('<p>'+data+'</p>', '#creating-master', progress_value, '#creating-progress', '#created-mess', '#wait-mess');
|
||||
if (hap === '1') {
|
||||
create_keep_alived_hap(nginx, 'master');
|
||||
}
|
||||
|
@ -161,9 +204,9 @@ function create_slave_keepalived(hap, nginx, syn_flood) {
|
|||
if (data.indexOf('error:') != '-1' || data.indexOf('FAILED') != '-1') {
|
||||
showProvisioningError(data, '#creating-slave', '#wait-mess', '#creating-error');
|
||||
} else if (data == '' ){
|
||||
showProvisioningWarning(step_id, 'slave Keepalived');
|
||||
showProvisioningWarning(step_id, 'slave Keepalived', '#creating-warning', '#wait_mess');
|
||||
} else if (data.indexOf('success') != '-1' ){
|
||||
showProvisioningProccess('<p>'+data+'</p>', '#creating-slave', progress_value, '#creating-progress');
|
||||
showProvisioningProccess('<p>'+data+'</p>', '#creating-slave', progress_value, '#creating-progress', '#created-mess', '#wait-mess');
|
||||
} else {
|
||||
toastr.clear();
|
||||
toastr.info(data);
|
||||
|
@ -205,9 +248,9 @@ function create_keep_alived_hap(nginx, server) {
|
|||
if (data.indexOf('error:') != '-1' || data.indexOf('FAILED') != '-1') {
|
||||
showProvisioningError(data, step_id, '#wait-mess', '#creating-error');
|
||||
} else if (data == '' ){
|
||||
showProvisioningWarning(step_id, install_step);
|
||||
showProvisioningWarning(step_id, install_step, '#creating-warning', '#wait_mess');
|
||||
} else if (data.indexOf('success') != '-1' ){
|
||||
showProvisioningProccess('<br>'+data, step_id, progress_value, '#creating-progress');
|
||||
showProvisioningProccess('<br>'+data, step_id, progress_value, '#creating-progress', '#created-mess', '#wait-mess');
|
||||
} else {
|
||||
toastr.clear();
|
||||
toastr.info(data);
|
||||
|
@ -241,9 +284,9 @@ function create_keep_alived_nginx(server) {
|
|||
if (data.indexOf('error:') != '-1' || data.indexOf('FAILED') != '-1') {
|
||||
showProvisioningError(data, step_id, '#wait-mess', '#creating-error');
|
||||
} else if (data == '' ){
|
||||
showProvisioningWarning(step_id, install_step);
|
||||
showProvisioningWarning(step_id, install_step, '#creating-warning', '#wait_mess');
|
||||
} else if (data.indexOf('success') != '-1' ){
|
||||
showProvisioningProccess('<br>'+data, step_id, '100', '#creating-progress');
|
||||
showProvisioningProccess('<br>'+data, step_id, '100', '#creating-progress', '#created-mess', '#wait-mess');
|
||||
} else {
|
||||
toastr.clear();
|
||||
toastr.info(data);
|
||||
|
@ -259,41 +302,41 @@ function showProvisioningError(data, step_id, wait_mess, error_id) {
|
|||
$(step_id).addClass('processing_error');
|
||||
$.getScript("/inc/fontawesome.min.js");
|
||||
}
|
||||
function showProvisioningWarning(step_id, install_step) {
|
||||
$('#creating-warning').append('<p>Something went wrong with installation on ' + install_step + ', check logs</p>');
|
||||
$('#creating-warning').show();
|
||||
function showProvisioningWarning(step_id, install_step, warning_id, wait_id) {
|
||||
$(warning_id).append('<p>Something went wrong with installation on ' + install_step + ', check logs</p>');
|
||||
$(warning_id).show();
|
||||
$(step_id).removeClass('proccessing');
|
||||
$(step_id).addClass('processing_warning');
|
||||
$('#wait_mess').hide();
|
||||
$(wait_id).hide();
|
||||
$.getScript("/inc/fontawesome.min.js");
|
||||
}
|
||||
function cleanProvisioningProccess(div_id, success_div) {
|
||||
function cleanProvisioningProccess(div_id, success_div, error_id, warning_id, progres_id, keepalived_m_div, keepalived_s_div, haproxy_div, nginx_div) {
|
||||
$(success_div).empty();
|
||||
$(success_div).hide();
|
||||
$('#creating-error').empty();
|
||||
$('#creating-error').hide();
|
||||
$('#creating-warning').empty();
|
||||
$('#creating-warning').hide();
|
||||
$('#creating-progress').css('width', '0%');
|
||||
$('#haproxy_installing_div').hide();
|
||||
$('#nginx_installing_div').hide();
|
||||
$(error_id).empty();
|
||||
$(error_id).hide();
|
||||
$(warning_id).empty();
|
||||
$(warning_id).hide();
|
||||
$(progres_id).css('width', '0%');
|
||||
$(haproxy_div).hide();
|
||||
$(nginx_div).hide();
|
||||
$(div_id).each(function () {
|
||||
$(this).removeClass('proccessing_done');
|
||||
$(this).removeClass('processing_error');
|
||||
$(this).removeClass('processing_warning');
|
||||
$(this).removeClass('proccessing');
|
||||
});
|
||||
$('#creating-master').addClass('proccessing');
|
||||
$('#creating-slave').addClass('proccessing');
|
||||
$(keepalived_m_div).addClass('proccessing');
|
||||
$(keepalived_s_div).addClass('proccessing');
|
||||
$.getScript("/inc/fontawesome.min.js");
|
||||
}
|
||||
function showProvisioningProccess(data, step_id, progress_value, progress_id) {
|
||||
function showProvisioningProccess(data, step_id, progress_value, progress_id, created_id, waid_id) {
|
||||
$(step_id).addClass('proccessing_done');
|
||||
$(step_id).removeClass('proccessing');
|
||||
$('#created-mess').show();
|
||||
$('#created-mess').append(data);
|
||||
$(created_id).show();
|
||||
$(created_id).append(data);
|
||||
$(progress_id).css('width', progress_value+'%');
|
||||
if (progress_value === '100')
|
||||
$("#wait-mess").hide();
|
||||
$(waid_id).hide();
|
||||
$.getScript("/inc/fontawesome.min.js");
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue