fix: disk/bw usage to calculate every 12 hour

This commit is contained in:
Usman Nasir
2021-01-18 14:01:26 +05:00
parent 116d3e5f9d
commit dd1c8b2351
6 changed files with 89 additions and 91 deletions

View File

@@ -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)

View File

@@ -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)

View File

@@ -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):

View File

@@ -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')

View File

@@ -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
}

View File

@@ -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}