mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-11-07 22:06:05 +01:00
ha cluster
This commit is contained in:
@@ -2673,3 +2673,19 @@ class CloudManager:
|
|||||||
final_dic = {'status': 0, 'fetchStatus': 0, 'error_message': str(msg)}
|
final_dic = {'status': 0, 'fetchStatus': 0, 'error_message': str(msg)}
|
||||||
final_json = json.dumps(final_dic)
|
final_json = json.dumps(final_dic)
|
||||||
return HttpResponse(final_json)
|
return HttpResponse(final_json)
|
||||||
|
|
||||||
|
def DetachCluster(self):
|
||||||
|
try:
|
||||||
|
|
||||||
|
type = self.data['type']
|
||||||
|
|
||||||
|
execPath = "/usr/local/CyberCP/bin/python /usr/local/CyberCP/plogical/ClusterManager.py --function %s --type %s" % ('DetachCluster', type)
|
||||||
|
ProcessUtilities.popenExecutioner(execPath)
|
||||||
|
|
||||||
|
final_json = json.dumps({'status': 1})
|
||||||
|
return HttpResponse(final_json)
|
||||||
|
|
||||||
|
except BaseException as msg:
|
||||||
|
final_dic = {'status': 0, 'fetchStatus': 0, 'error_message': str(msg)}
|
||||||
|
final_json = json.dumps(final_dic)
|
||||||
|
return HttpResponse(final_json)
|
||||||
|
|||||||
@@ -37,6 +37,8 @@ def router(request):
|
|||||||
return cm.verifyLogin(request)[1]
|
return cm.verifyLogin(request)[1]
|
||||||
elif controller == 'RunServerLevelEmailChecks':
|
elif controller == 'RunServerLevelEmailChecks':
|
||||||
return cm.RunServerLevelEmailChecks()
|
return cm.RunServerLevelEmailChecks()
|
||||||
|
elif controller == 'DetachCluster':
|
||||||
|
return cm.DetachCluster()
|
||||||
elif controller == 'ReadReport':
|
elif controller == 'ReadReport':
|
||||||
return cm.ReadReport()
|
return cm.ReadReport()
|
||||||
elif controller == 'ResetEmailConfigurations':
|
elif controller == 'ResetEmailConfigurations':
|
||||||
|
|||||||
79
plogical/ClusterManager.py
Normal file
79
plogical/ClusterManager.py
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
import json
|
||||||
|
import os.path
|
||||||
|
import sys
|
||||||
|
import argparse
|
||||||
|
import requests
|
||||||
|
from plogical.processUtilities import ProcessUtilities
|
||||||
|
|
||||||
|
sys.path.append('/usr/local/CyberCP')
|
||||||
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CyberCP.settings")
|
||||||
|
|
||||||
|
class ClusterManager:
|
||||||
|
|
||||||
|
LogURL = "http://cloud.cyberpanel.net:8000/HighAvailability/RecvData"
|
||||||
|
ClusterFile = '/home/cyberpanel/cluster'
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
##
|
||||||
|
ipFile = "/etc/cyberpanel/machineIP"
|
||||||
|
f = open(ipFile)
|
||||||
|
ipData = f.read()
|
||||||
|
self.ipAddress = ipData.split('\n', 1)[0]
|
||||||
|
##
|
||||||
|
self.config = json.loads(open(ClusterManager.ClusterFile, 'r').read())
|
||||||
|
|
||||||
|
|
||||||
|
def PostStatus(self):
|
||||||
|
finalData = json.dumps(self.config)
|
||||||
|
resp = requests.post(ClusterManager.LogURL, data=finalData, verify=False)
|
||||||
|
print (resp.text)
|
||||||
|
|
||||||
|
def FetchMySQLConfigFile(self):
|
||||||
|
|
||||||
|
if ProcessUtilities.decideDistro() == ProcessUtilities.centos:
|
||||||
|
return '/etc/mysql/conf.d/cluster.cnf'
|
||||||
|
else:
|
||||||
|
return '/etc/mysql/conf.d/cluster.cnf'
|
||||||
|
|
||||||
|
def DetechFromCluster(self, type):
|
||||||
|
try:
|
||||||
|
command = 'rm -rf %s' % (self.FetchMySQLConfigFile())
|
||||||
|
ProcessUtilities.normalExecutioner(command)
|
||||||
|
|
||||||
|
command = 'systemctl stop mysql'
|
||||||
|
ProcessUtilities.normalExecutioner(command)
|
||||||
|
|
||||||
|
command = 'systemctl restart mysql'
|
||||||
|
ProcessUtilities.executioner(command)
|
||||||
|
|
||||||
|
if type == 'Child':
|
||||||
|
self.config['failoverServerMessage'] = 'Successfully detached. [200]'
|
||||||
|
self.PostStatus()
|
||||||
|
else:
|
||||||
|
self.config['masterServerMessage'] = 'Successfully detached. [200]'
|
||||||
|
self.PostStatus()
|
||||||
|
|
||||||
|
except BaseException as msg:
|
||||||
|
if type == 'Child':
|
||||||
|
self.config['failoverServerMessage'] = 'Failed to detach, error %s [404].' % (str(msg))
|
||||||
|
self.PostStatus()
|
||||||
|
else:
|
||||||
|
self.config['masterServerMessage'] = 'Failed to detach, error %s [404].' % (str(msg))
|
||||||
|
self.PostStatus()
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(description='CyberPanel Installer')
|
||||||
|
parser.add_argument('--function', help='Function to run.')
|
||||||
|
parser.add_argument('--type', help='Type of detach.')
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
uc = ClusterManager()
|
||||||
|
|
||||||
|
if args.function == 'DetachCluster':
|
||||||
|
uc.DetechFromCluster()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
@@ -488,22 +488,26 @@ Automatic backup failed for %s on %s.
|
|||||||
if jobConfig[IncScheduler.frequency] == type:
|
if jobConfig[IncScheduler.frequency] == type:
|
||||||
|
|
||||||
### Check if an old job prematurely killed, then start from there.
|
### Check if an old job prematurely killed, then start from there.
|
||||||
try:
|
# try:
|
||||||
oldJobContinue = 1
|
# oldJobContinue = 1
|
||||||
pid = jobConfig['pid']
|
# pid = jobConfig['pid']
|
||||||
stuckDomain = jobConfig['website']
|
# stuckDomain = jobConfig['website']
|
||||||
finalPath = jobConfig['finalPath']
|
# finalPath = jobConfig['finalPath']
|
||||||
jobConfig['pid'] = str(os.getpid())
|
# jobConfig['pid'] = str(os.getpid())
|
||||||
|
#
|
||||||
|
# command = 'ps aux'
|
||||||
|
# result = ProcessUtilities.outputExecutioner(command)
|
||||||
|
#
|
||||||
|
# if result.find(pid) > -1 and result.find('IncScheduler.py') > -1:
|
||||||
|
# quit(1)
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# except:
|
||||||
|
# ### Save some important info in backup config
|
||||||
|
# oldJobContinue = 0
|
||||||
|
# jobConfig['pid'] = str(os.getpid())
|
||||||
|
# jobConfig['finalPath'] = finalPath
|
||||||
|
|
||||||
command = 'ps aux'
|
|
||||||
result = ProcessUtilities.outputExecutioner(command)
|
|
||||||
|
|
||||||
if result.find(pid) > -1 and result.find('IncScheduler.py') > -1:
|
|
||||||
quit(1)
|
|
||||||
|
|
||||||
|
|
||||||
except:
|
|
||||||
### Save some important info in backup config
|
|
||||||
oldJobContinue = 0
|
oldJobContinue = 0
|
||||||
jobConfig['pid'] = str(os.getpid())
|
jobConfig['pid'] = str(os.getpid())
|
||||||
jobConfig['finalPath'] = finalPath
|
jobConfig['finalPath'] = finalPath
|
||||||
|
|||||||
Reference in New Issue
Block a user