mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-11-07 22:06:05 +01:00
fix: disk/bw usage to calculate every 12 hour
This commit is contained in:
@@ -123,6 +123,7 @@ class CloudManager:
|
||||
|
||||
def fetchWebsiteData(self):
|
||||
try:
|
||||
|
||||
currentACL = ACLManager.loadedACL(self.admin.pk)
|
||||
website = Websites.objects.get(domain=self.data['domainName'])
|
||||
admin = Administrator.objects.get(pk=self.admin.pk)
|
||||
@@ -140,40 +141,23 @@ class CloudManager:
|
||||
Data['dbUsed'] = website.databases_set.all().count()
|
||||
Data['dbAllowed'] = website.package.dataBases
|
||||
|
||||
diskUsageDetails = virtualHostUtilities.getDiskUsage("/home/" + self.data['domainName'],
|
||||
website.package.diskSpace)
|
||||
|
||||
## bw usage calculation
|
||||
|
||||
try:
|
||||
execPath = "/usr/local/CyberCP/bin/python " + virtualHostUtilities.cyberPanel + "/plogical/virtualHostUtilities.py"
|
||||
execPath = execPath + " findDomainBW --virtualHostName " + self.data[
|
||||
'domainName'] + " --bandwidth " + str(
|
||||
website.package.bandwidth)
|
||||
|
||||
output = ProcessUtilities.outputExecutioner(execPath)
|
||||
bwData = output.split(",")
|
||||
except BaseException:
|
||||
bwData = [0, 0]
|
||||
DiskUsage, DiskUsagePercentage, bwInMB, bwUsage = virtualHostUtilities.FindStats(website)
|
||||
|
||||
## bw usage calculations
|
||||
|
||||
Data['bwAllowed'] = website.package.bandwidth
|
||||
Data['bwUsed'] = bwData[0]
|
||||
Data['bwUsage'] = bwData[1]
|
||||
Data['bwInMBTotal'] = website.package.bandwidth
|
||||
Data['bwInMB'] = bwInMB
|
||||
Data['bwUsage'] = bwUsage
|
||||
|
||||
if diskUsageDetails != None:
|
||||
if diskUsageDetails[1] > 100:
|
||||
diskUsageDetails[1] = 100
|
||||
if DiskUsagePercentage > 100:
|
||||
DiskUsagePercentage = 100
|
||||
|
||||
Data['diskUsage'] = diskUsageDetails[1]
|
||||
Data['diskUsed'] = diskUsageDetails[0]
|
||||
Data['diskAllowed'] = website.package.diskSpace
|
||||
else:
|
||||
Data['diskUsed'] = 0
|
||||
Data['diskUsage'] = 0
|
||||
Data['diskUsage'] = DiskUsagePercentage
|
||||
Data['diskInMB'] = DiskUsage
|
||||
Data['diskInMBTotal'] = website.package.diskSpace
|
||||
|
||||
##
|
||||
|
||||
Data['status'] = 1
|
||||
final_json = json.dumps(Data)
|
||||
return HttpResponse(final_json)
|
||||
|
||||
@@ -731,6 +731,27 @@ Automatic backup failed for %s on %s.
|
||||
except BaseException as msg:
|
||||
logging.writeToFile(str(msg) + ' [S3Backups.runAWSBackups]')
|
||||
|
||||
@staticmethod
|
||||
def CalculateAndUpdateDiskUsage():
|
||||
for website in Websites.objects.all():
|
||||
try:
|
||||
try:
|
||||
config = json.loads(website.config)
|
||||
except:
|
||||
config = {}
|
||||
|
||||
config['DiskUsage'], config['DiskUsagePercentage'] = virtualHostUtilities.getDiskUsage("/home/" + website.domain, website.package.diskSpace)
|
||||
|
||||
## Calculate bw usage
|
||||
|
||||
from plogical.vhost import vhost
|
||||
config['bwInMB'], config['bwUsage'] = vhost.findDomainBW(website.domain, int(website.package.bandwidth))
|
||||
|
||||
website.config = json.dumps(config)
|
||||
website.save()
|
||||
|
||||
except BaseException as msg:
|
||||
logging.writeToFile('%s. [CalculateAndUpdateDiskUsage:753]' % (str(msg)))
|
||||
|
||||
|
||||
def main():
|
||||
@@ -744,6 +765,7 @@ def main():
|
||||
IncScheduler.forceRunAWSBackup(args.planName)
|
||||
return 0
|
||||
|
||||
IncScheduler.CalculateAndUpdateDiskUsage()
|
||||
IncScheduler.startBackup(args.function)
|
||||
IncScheduler.runGoogleDriveBackups(args.function)
|
||||
IncScheduler.git(args.function)
|
||||
|
||||
@@ -721,11 +721,13 @@ class vhost:
|
||||
|
||||
if not os.path.exists("/home/" + domainName + "/logs"):
|
||||
print("0,0")
|
||||
return 0,0
|
||||
|
||||
bwmeta = "/home/" + domainName + "/logs/bwmeta"
|
||||
|
||||
if not os.path.exists(path):
|
||||
print("0,0")
|
||||
return 0, 0
|
||||
|
||||
if os.path.exists(bwmeta):
|
||||
try:
|
||||
@@ -741,19 +743,24 @@ class vhost:
|
||||
percentage = float(percentage) * float(inMB)
|
||||
except:
|
||||
print("0,0")
|
||||
return 0, 0
|
||||
|
||||
if percentage > 100.0:
|
||||
percentage = 100
|
||||
|
||||
print(str(inMB) + "," + str(percentage))
|
||||
return str(inMB), str(percentage)
|
||||
else:
|
||||
print("0,0")
|
||||
return 0, 0
|
||||
except OSError as msg:
|
||||
logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [findDomainBW]")
|
||||
print("0,0")
|
||||
return 0, 0
|
||||
except ValueError as msg:
|
||||
logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [findDomainBW]")
|
||||
print("0,0")
|
||||
return 0, 0
|
||||
|
||||
@staticmethod
|
||||
def permissionControl(path):
|
||||
|
||||
@@ -1308,8 +1308,7 @@ class virtualHostUtilities:
|
||||
def getDiskUsage(path, totalAllowed):
|
||||
try:
|
||||
|
||||
totalUsageInMB = ProcessUtilities.outputExecutioner(["sudo", "du", "-hs", path, "--block-size=1M"]).split()[
|
||||
0]
|
||||
totalUsageInMB = subprocess.check_output('du -hs %s --block-size=1M' % (path), shell=True).decode("utf-8").split()[0]
|
||||
|
||||
percentage = float(100) / float(totalAllowed)
|
||||
|
||||
@@ -1347,6 +1346,24 @@ class virtualHostUtilities:
|
||||
except BaseException as msg:
|
||||
logging.CyberCPLogFileWriter.writeToFile(str(msg))
|
||||
|
||||
@staticmethod
|
||||
def FindStats(website):
|
||||
|
||||
import json
|
||||
try:
|
||||
config = json.loads(website.config)
|
||||
DiskUsage = config['DiskUsage']
|
||||
DiskUsagePercentage = config['DiskUsagePercentage']
|
||||
bwInMB = config['bwInMB']
|
||||
bwUsage = config['bwUsage']
|
||||
except:
|
||||
DiskUsage = 0
|
||||
DiskUsagePercentage = 0
|
||||
bwInMB = 0
|
||||
bwUsage = 0
|
||||
|
||||
return DiskUsage, DiskUsagePercentage, bwInMB, bwUsage
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description='CyberPanel Installer')
|
||||
|
||||
@@ -1035,11 +1035,12 @@ def fetchTableUsers(request):
|
||||
|
||||
for items in users:
|
||||
|
||||
diskUsage = 0
|
||||
diskUsageCurrent = 0
|
||||
|
||||
for webs in items.websites_set.all():
|
||||
#diskUsage = virtualHostUtilities.getDiskUsage("/home/" + webs.domain, webs.package.diskSpace)[0] + diskUsage
|
||||
diskUsage = 1
|
||||
DiskUsage, DiskUsagePercentage, bwInMB, bwUsage = virtualHostUtilities.FindStats(webs)
|
||||
diskUsageCurrent = DiskUsage + diskUsageCurrent
|
||||
|
||||
|
||||
owner = Administrator.objects.get(pk=items.owner)
|
||||
|
||||
@@ -1047,7 +1048,7 @@ def fetchTableUsers(request):
|
||||
'name': items.userName,
|
||||
'owner': owner.userName,
|
||||
'acl': items.acl.name,
|
||||
'diskUsage': '%sMB' % str(diskUsage),
|
||||
'diskUsage': '%sMB' % str(diskUsageCurrent),
|
||||
'websites': items.initWebsitesLimit,
|
||||
'state': items.state
|
||||
}
|
||||
|
||||
@@ -452,9 +452,9 @@ class WebsiteManager:
|
||||
else:
|
||||
state = "Active"
|
||||
|
||||
#diskUsed = "%sMB" % str(virtualHostUtilities.getDiskUsage("/home/" + items.domain, items.package.diskSpace)[0])
|
||||
DiskUsage, DiskUsagePercentage, bwInMB, bwUsage = virtualHostUtilities.FindStats(items)
|
||||
diskUsed = "%sMB" % str(DiskUsage)
|
||||
|
||||
diskUsed = '1MB' ## to be fixed later
|
||||
|
||||
dic = {'domain': items.domain, 'adminEmail': items.adminEmail, 'ipAddress': ipAddress,
|
||||
'admin': items.admin.userName, 'package': items.package.packageName, 'state': state, 'diskUsed': diskUsed}
|
||||
@@ -830,37 +830,19 @@ class WebsiteManager:
|
||||
|
||||
Data['domain'] = self.domain
|
||||
|
||||
diskUsageDetails = virtualHostUtilities.getDiskUsage("/home/" + self.domain, website.package.diskSpace)
|
||||
|
||||
## bw usage calculation
|
||||
|
||||
try:
|
||||
execPath = "/usr/local/CyberCP/bin/python " + virtualHostUtilities.cyberPanel + "/plogical/virtualHostUtilities.py"
|
||||
execPath = execPath + " findDomainBW --virtualHostName " + self.domain + " --bandwidth " + str(
|
||||
website.package.bandwidth)
|
||||
|
||||
output = ProcessUtilities.outputExecutioner(execPath)
|
||||
bwData = output.split(",")
|
||||
except BaseException as msg:
|
||||
logging.CyberCPLogFileWriter.writeToFile(str(msg))
|
||||
bwData = [0, 0]
|
||||
DiskUsage, DiskUsagePercentage, bwInMB, bwUsage = virtualHostUtilities.FindStats(website)
|
||||
|
||||
## bw usage calculations
|
||||
|
||||
Data['bwInMBTotal'] = website.package.bandwidth
|
||||
Data['bwInMB'] = bwData[0]
|
||||
Data['bwUsage'] = bwData[1]
|
||||
Data['bwInMB'] = bwInMB
|
||||
Data['bwUsage'] = bwUsage
|
||||
|
||||
if diskUsageDetails != None:
|
||||
if diskUsageDetails[1] > 100:
|
||||
diskUsageDetails[1] = 100
|
||||
if DiskUsagePercentage > 100:
|
||||
DiskUsagePercentage = 100
|
||||
|
||||
Data['diskUsage'] = diskUsageDetails[1]
|
||||
Data['diskInMB'] = diskUsageDetails[0]
|
||||
Data['diskInMBTotal'] = website.package.diskSpace
|
||||
else:
|
||||
Data['diskUsage'] = 0
|
||||
Data['diskInMB'] = 0
|
||||
Data['diskUsage'] = DiskUsagePercentage
|
||||
Data['diskInMB'] = DiskUsage
|
||||
Data['diskInMBTotal'] = website.package.diskSpace
|
||||
|
||||
Data['phps'] = PHPManager.findPHPVersions()
|
||||
@@ -932,37 +914,19 @@ class WebsiteManager:
|
||||
Data['domain'] = self.domain
|
||||
Data['childDomain'] = self.childDomain
|
||||
|
||||
diskUsageDetails = virtualHostUtilities.getDiskUsage("/home/" + self.domain, website.package.diskSpace)
|
||||
|
||||
## bw usage calculation
|
||||
|
||||
try:
|
||||
execPath = "/usr/local/CyberCP/bin/python " + virtualHostUtilities.cyberPanel + "/plogical/virtualHostUtilities.py"
|
||||
execPath = execPath + " findDomainBW --virtualHostName " + self.domain + " --bandwidth " + str(
|
||||
website.package.bandwidth)
|
||||
|
||||
output = ProcessUtilities.outputExecutioner(execPath)
|
||||
bwData = output.split(",")
|
||||
except BaseException as msg:
|
||||
logging.CyberCPLogFileWriter.writeToFile(str(msg))
|
||||
bwData = [0, 0]
|
||||
DiskUsage, DiskUsagePercentage, bwInMB, bwUsage = virtualHostUtilities.FindStats(website)
|
||||
|
||||
## bw usage calculations
|
||||
|
||||
Data['bwInMBTotal'] = website.package.bandwidth
|
||||
Data['bwInMB'] = bwData[0]
|
||||
Data['bwUsage'] = bwData[1]
|
||||
Data['bwInMB'] = bwInMB
|
||||
Data['bwUsage'] = bwUsage
|
||||
|
||||
if diskUsageDetails != None:
|
||||
if diskUsageDetails[1] > 100:
|
||||
diskUsageDetails[1] = 100
|
||||
if DiskUsagePercentage > 100:
|
||||
DiskUsagePercentage = 100
|
||||
|
||||
Data['diskUsage'] = diskUsageDetails[1]
|
||||
Data['diskInMB'] = diskUsageDetails[0]
|
||||
Data['diskInMBTotal'] = website.package.diskSpace
|
||||
else:
|
||||
Data['diskUsage'] = 0
|
||||
Data['diskInMB'] = 0
|
||||
Data['diskUsage'] = DiskUsagePercentage
|
||||
Data['diskInMB'] = DiskUsage
|
||||
Data['diskInMBTotal'] = website.package.diskSpace
|
||||
|
||||
Data['phps'] = PHPManager.findPHPVersions()
|
||||
@@ -2393,8 +2357,9 @@ StrictHostKeyChecking no
|
||||
else:
|
||||
state = "Active"
|
||||
|
||||
diskUsed = "%sMB" % str(
|
||||
virtualHostUtilities.getDiskUsage("/home/" + items.domain, items.package.diskSpace)[0])
|
||||
DiskUsage, DiskUsagePercentage, bwInMB, bwUsage = virtualHostUtilities.FindStats(items)
|
||||
|
||||
diskUsed = "%sMB" % str(DiskUsage)
|
||||
dic = {'domain': items.domain, 'adminEmail': items.adminEmail, 'ipAddress': ipAddress,
|
||||
'admin': items.admin.userName, 'package': items.package.packageName, 'state': state, 'diskUsed': diskUsed}
|
||||
|
||||
@@ -2431,7 +2396,9 @@ StrictHostKeyChecking no
|
||||
else:
|
||||
state = "Active"
|
||||
|
||||
diskUsed = "%sMB" % str(virtualHostUtilities.getDiskUsage("/home/" + items.domain, items.package.diskSpace)[0])
|
||||
DiskUsage, DiskUsagePercentage, bwInMB, bwUsage = virtualHostUtilities.FindStats(items)
|
||||
|
||||
diskUsed = "%sMB" % str(DiskUsage)
|
||||
|
||||
dic = {'domain': items.domain, 'adminEmail': items.adminEmail, 'ipAddress': ipAddress,
|
||||
'admin': items.admin.userName, 'package': items.package.packageName, 'state': state, 'diskUsed': diskUsed}
|
||||
|
||||
Reference in New Issue
Block a user