diff --git a/CLManager/urls.py b/CLManager/urls.py index c17ed5d06..0f2aff59c 100644 --- a/CLManager/urls.py +++ b/CLManager/urls.py @@ -6,8 +6,8 @@ urlpatterns = [ url(r'^listPackages$', views.listPackages, name='listPackagesCL'), url(r'^monitorUsage$', views.monitorUsage, name='monitorUsage'), url(r'^CageFS$', views.CageFS, name='CageFS'), - url(r'^submitCageFSInstall$', views.submitCageFSInstall, name='submitCageFSInstall'), + # url(r'^submitWebsiteListing$', views.getFurtherAccounts, name='submitWebsiteListing'), # url(r'^enableOrDisable$', views.enableOrDisable, name='enableOrDisable'), # url(r'^submitCreatePackage$', views.submitCreatePackage, name='submitCreatePackageCL'), diff --git a/cloudAPI/cloudManager.py b/cloudAPI/cloudManager.py index 0d98b6e7a..d3fa50b94 100755 --- a/cloudAPI/cloudManager.py +++ b/cloudAPI/cloudManager.py @@ -2970,3 +2970,35 @@ class CloudManager: final_dic = {'status': 0, 'fetchStatus': 0, 'error_message': str(msg)} final_json = json.dumps(final_dic) return HttpResponse(final_json) + + def CheckMasterNode(self): + try: + + command = 'systemctl status mysql' + result = ProcessUtilities.outputExecutioner(command) + + if result.find('active (running)') > -1: + final_json = json.dumps({'status': 1}) + else: + final_json = json.dumps({'status': 0, 'error_message': 'MySQL on Main node is not running.'}) + + 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) + + def SyncToMaster(self): + try: + + command = '/usr/local/CyberCP/bin/python /usr/local/CyberCP/plogical/ClusterManager.py --function SyncToMaster --type Master' + ProcessUtilities.executioner(command) + + 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) diff --git a/cloudAPI/views.py b/cloudAPI/views.py index 758977737..fbfb9e185 100755 --- a/cloudAPI/views.py +++ b/cloudAPI/views.py @@ -50,8 +50,12 @@ def router(request): return cm.DetachCluster() elif controller == 'DebugCluster': return cm.DebugCluster() + elif controller == 'CheckMasterNode': + return cm.CheckMasterNode() elif controller == 'UptimeMonitor': return cm.UptimeMonitor() + elif controller == 'SyncToMaster': + return cm.SyncToMaster() elif controller == 'FetchMasterBootStrapStatus': return cm.FetchMasterBootStrapStatus() elif controller == 'FetchChildBootStrapStatus': diff --git a/plogical/ClusterManager.py b/plogical/ClusterManager.py index 683496b9d..0f43ee9da 100644 --- a/plogical/ClusterManager.py +++ b/plogical/ClusterManager.py @@ -357,7 +357,7 @@ password=%s""" % (rootdbpassword, rootdbpassword) self.PostStatus('Data and SSL certificates currently synced.') except BaseException as msg: - self.PostStatus('Failed to create pending vhosts, error %s [404].' % (str(msg))) + self.PostStatus('Failed to sync data, error %s [404].' % (str(msg))) def PingNow(self): try: @@ -423,6 +423,25 @@ password=%s""" % (rootdbpassword, rootdbpassword) except BaseException as msg: logging.writeToFile('%s. [31:404]' % (str(msg))) + def SyncToMaster(self): + try: + + self.PostStatus('Syncing data from home directory to Main server..') + + command = "rsync -avzp -e 'ssh -o StrictHostKeyChecking=no -p %s -i /root/.ssh/cyberpanel' /home root@%s:/" % (self.config['masterServerSSHPort'], self.config['masterServerIP']) + ProcessUtilities.normalExecutioner(command) + + self.PostStatus('Syncing SSL certificates to Main server..') + + command = "rsync -avzp -e 'ssh -o StrictHostKeyChecking=no -p %s -i /root/.ssh/cyberpanel' /etc/letsencrypt root@%s:/etc" % ( + self.config['masterServerSSHPort'], self.config['masterServerIP']) + ProcessUtilities.normalExecutioner(command) + + self.PostStatus('Data back to main.') + + except BaseException as msg: + self.PostStatus('Failed to sync data, error %s [404].' % (str(msg))) + def main(): parser = argparse.ArgumentParser(description='CyberPanel Installer') @@ -453,6 +472,8 @@ def main(): uc.UptimeMonitor() elif args.function == 'Uptime': uc.Uptime() + elif args.function == 'SyncToMaster': + uc.SyncToMaster() if __name__ == "__main__":