def report_local_storage(): # TODO # if customers folder placed outside of BaseDir() # need to add: total = total + customers r = {} r['backups'] = bpio.getDirectorySize(settings.getLocalBackupsDir()) r['backups_str'] = diskspace.MakeStringFromBytes(r['backups']) r['temp'] = bpio.getDirectorySize(settings.getTempDir()) r['temp_str'] = diskspace.MakeStringFromBytes(r['temp']) r['customers'] = bpio.getDirectorySize(settings.getCustomersFilesDir()) r['customers_str'] = diskspace.MakeStringFromBytes(r['customers']) r['total'] = bpio.getDirectorySize(settings.GetBaseDir()) r['total_str'] = diskspace.MakeStringFromBytes(r['total']) dataDriveFreeSpace, dataDriveTotalSpace = diskusage.GetDriveSpace( settings.getCustomersFilesDir()) if dataDriveFreeSpace is None: dataDriveFreeSpace = 0 r['disktotal'] = int(dataDriveTotalSpace) r['disktotal_str'] = diskspace.MakeStringFromBytes(r['disktotal']) r['diskfree'] = int(dataDriveFreeSpace) r['diskfree_str'] = diskspace.MakeStringFromBytes(r['diskfree']) try: r['total_percent'] = misc.percent2string( float(r['total']) / float(r['disktotal']), 5) except: r['total_percent'] = '' try: r['diskfree_percent'] = misc.percent2string( float(r['diskfree']) / float(r['disktotal']), 5) except: r['diskfree_percent'] = '' return r
def report_local_storage(): # TODO # if customers folder placed outside of BaseDir() # need to add: total = total + customers r = {} r['backups'] = bpio.getDirectorySize(settings.getLocalBackupsDir()) r['backups_str'] = diskspace.MakeStringFromBytes(r['backups']) r['temp'] = bpio.getDirectorySize(settings.getTempDir()) r['temp_str'] = diskspace.MakeStringFromBytes(r['temp']) r['customers'] = bpio.getDirectorySize(settings.getCustomersFilesDir()) r['customers_str'] = diskspace.MakeStringFromBytes(r['customers']) r['total'] = bpio.getDirectorySize(settings.GetBaseDir()) r['total_str'] = diskspace.MakeStringFromBytes(r['total']) dataDriveFreeSpace, dataDriveTotalSpace = diskusage.GetDriveSpace(settings.getCustomersFilesDir()) if dataDriveFreeSpace is None: dataDriveFreeSpace = 0 r['disktotal'] = int(dataDriveTotalSpace) r['disktotal_str'] = diskspace.MakeStringFromBytes(r['disktotal']) r['diskfree'] = int(dataDriveFreeSpace) r['diskfree_str'] = diskspace.MakeStringFromBytes(r['diskfree']) try: r['total_percent'] = misc.percent2string(float(r['total']) / float(r['disktotal']), 5) except: r['total_percent'] = '' try: r['diskfree_percent'] = misc.percent2string(float(r['diskfree']) / float(r['disktotal']), 5) except: r['diskfree_percent'] = '' return r
def _list_active_tasks(params): result = [] for tsk in backup_control.ListPendingTasks(): result.append({ 'name': os.path.basename(tsk.localPath), 'path': os.path.dirname(tsk.localPath), 'id': tsk.pathID, 'version': '', 'customer': '', 'mode': 'up', 'progress': '0%', }) for backupID in backup_control.ListRunningBackups(): backup_obj = backup_control.GetRunningBackupObject(backupID) customerGlobalID, remotePath, versionName = packetid.SplitBackupID( backupID) result.append({ 'name': os.path.basename(backup_obj.sourcePath), 'path': os.path.dirname(backup_obj.sourcePath), 'id': remotePath, 'version': versionName, 'customer': customerGlobalID, 'mode': 'up', 'progress': misc.percent2string(backup_obj.progress()), }) # for backupID in restore_monitor.GetWorkingIDs(): # result.append(backupID) return { 'result': result, }
def report_consumed_storage(): result = {} result['suppliers_num'] = contactsdb.num_suppliers() result['needed'] = settings.getNeededBytes() result['needed_str'] = diskspace.MakeStringFromBytes(result['needed']) result['used'] = int(backup_fs.sizebackups() / 2) result['used_str'] = diskspace.MakeStringFromBytes(result['used']) result['available'] = result['needed'] - result['used'] result['available_str'] = diskspace.MakeStringFromBytes( result['available']) result['needed_per_supplier'] = 0 result['used_per_supplier'] = 0 result['available_per_supplier'] = 0 if result['suppliers_num'] > 0: result['needed_per_supplier'] = int( math.ceil(2.0 * result['needed'] / result['suppliers_num'])) result['used_per_supplier'] = int( math.ceil(2.0 * result['used'] / result['suppliers_num'])) result['available_per_supplier'] = result[ 'needed_per_supplier'] - result['used_per_supplier'] result['needed_per_supplier_str'] = diskspace.MakeStringFromBytes( result['needed_per_supplier']) result['used_per_supplier_str'] = diskspace.MakeStringFromBytes( result['used_per_supplier']) result['available_per_supplier_str'] = diskspace.MakeStringFromBytes( result['available_per_supplier']) try: result['used_percent'] = misc.percent2string( float(result['used']) / float(result['needed'])) except: result['used_percent'] = '0%' return result
def _list_active_tasks(params): result = [] for tsk in backup_control.ListPendingTasks(): result.append({ 'name': os.path.basename(tsk.localPath), 'path': os.path.dirname(tsk.localPath), 'id': tsk.pathID, 'version': '', 'mode': 'up', 'progress': '0%'}) for backupID in backup_control.ListRunningBackups(): backup_obj = backup_control.GetRunningBackupObject(backupID) pathID, versionName = packetid.SplitBackupID(backupID) result.append({ 'name': os.path.basename(backup_obj.sourcePath), 'path': os.path.dirname(backup_obj.sourcePath), 'id': pathID, 'version': versionName, 'mode': 'up', 'progress': misc.percent2string(backup_obj.progress()), }) # for backupID in restore_monitor.GetWorkingIDs(): # result.append(backupID) return {'result': result, }
def report_consumed_storage(): result = {} result['suppliers_num'] = contactsdb.num_suppliers() result['needed'] = settings.getNeededBytes() result['needed_str'] = diskspace.MakeStringFromBytes(result['needed']) result['used'] = int(backup_fs.sizebackups() / 2) result['used_str'] = diskspace.MakeStringFromBytes(result['used']) result['available'] = result['needed'] - result['used'] result['available_str'] = diskspace.MakeStringFromBytes(result['available']) result['needed_per_supplier'] = 0 result['used_per_supplier'] = 0 result['available_per_supplier'] = 0 if result['suppliers_num'] > 0: result['needed_per_supplier'] = int(math.ceil(2.0 * result['needed'] / result['suppliers_num'])) result['used_per_supplier'] = int(math.ceil(2.0 * result['used'] / result['suppliers_num'])) result['available_per_supplier'] = result['needed_per_supplier'] - result['used_per_supplier'] result['needed_per_supplier_str'] = diskspace.MakeStringFromBytes(result['needed_per_supplier']) result['used_per_supplier_str'] = diskspace.MakeStringFromBytes(result['used_per_supplier']) result['available_per_supplier_str'] = diskspace.MakeStringFromBytes(result['available_per_supplier']) try: result['used_percent'] = misc.percent2string(float(result['used']) / float(result['needed'])) except: result['used_percent'] = '0%' return result
def report_donated_storage(): space_dict = read_customers_quotas() used_space_dict = read_customers_usage() r = {} r['customers_num'] = contactsdb.num_customers() r['customers'] = [] r['old_customers'] = [] r['errors'] = [] r['consumed'] = 0 r['donated'] = settings.getDonatedBytes() r['donated_str'] = diskspace.MakeStringFromBytes(r['donated']) r['real'] = bpio.getDirectorySize(settings.getCustomersFilesDir()) try: r['free'] = int(space_dict.pop('free')) except: r['free'] = 0 used = 0 for idurl in contactsdb.customers(): consumed_by_customer = 0 used_by_customer = 0 if idurl not in space_dict.keys(): r['errors'].append('space consumed by customer %s is unknown' % idurl) else: try: consumed_by_customer = int(space_dict.pop(idurl)) r['consumed'] += consumed_by_customer except: r['errors'].append( 'incorrect value of consumed space for customer %s' % idurl) if idurl in used_space_dict.keys(): try: used_by_customer = int(used_space_dict.pop(idurl)) used += used_by_customer except: r['errors'].append( 'incorrect value of used space for customer %s' % idurl) if consumed_by_customer < used_by_customer: r['errors'].append( 'customer %s currently using more space than requested' % idurl) c = {} c['idurl'] = idurl c['used'] = used_by_customer c['used_str'] = diskspace.MakeStringFromBytes(c['used']) c['consumed'] = consumed_by_customer c['consumed_str'] = diskspace.MakeStringFromBytes(c['consumed']) c['real'] = bpio.getDirectorySize(settings.getCustomerFilesDir(idurl)) c['real_str'] = diskspace.MakeStringFromBytes(c['real']) r['customers'].append(c) r['used'] = used r['used_str'] = diskspace.MakeStringFromBytes(r['used']) r['consumed_str'] = diskspace.MakeStringFromBytes(r['consumed']) if r['donated'] != r['free'] + r['consumed']: r['errors'].append( 'total consumed %d and known free %d (%d total) bytes not match with donated %d bytes' % (r['consumed'], r['free'], r['consumed'] + r['free'], r['donated'])) if r['used'] > r['donated']: r['errors'].append( 'total space used by customers exceed the donated limit') if len(space_dict) > 0: r['errors'].append('found %d incorrect records of consumed space' % len(space_dict)) if r['real'] != r['used']: r['errors'].append( 'current info needs update, known size is %d bytes but real is %d bytes' % (r['used'], r['real'])) for idurl in used_space_dict.keys(): real = bpio.getDirectorySize(settings.getCustomerFilesDir(idurl)) r['old_customers'].append({ 'idurl': idurl, 'used': used_space_dict['idurl'], 'used_str': diskspace.MakeStringFromBytes(used_space_dict['idurl']), 'real': real, 'real_str': diskspace.MakeStringFromBytes(real), }) try: r['used_percent'] = misc.percent2string( float(r['used']) / float(r['donated']), 5) except: r['used_percent'] = '' try: r['consumed_percent'] = misc.percent2string( float(r['consumed']) / float(r['donated']), 5) except: r['consumed_percent'] = '' return r
def report_donated_storage(): space_dict = read_customers_quotas() used_space_dict = read_customers_usage() r = {} r['customers_num'] = contactsdb.num_customers() r['customers'] = [] r['old_customers'] = [] r['errors'] = [] r['consumed'] = 0 r['donated'] = settings.getDonatedBytes() r['donated_str'] = diskspace.MakeStringFromBytes(r['donated']) r['real'] = bpio.getDirectorySize(settings.getCustomersFilesDir()) try: r['free'] = int(space_dict.pop('free')) except: r['free'] = 0 used = 0 for idurl in contactsdb.customers(): consumed_by_customer = 0 used_by_customer = 0 if idurl not in space_dict.keys(): r['errors'].append('space consumed by customer %s is unknown' % idurl) else: try: consumed_by_customer = int(space_dict.pop(idurl)) r['consumed'] += consumed_by_customer except: r['errors'].append('incorrect value of consumed space for customer %s' % idurl) if idurl in used_space_dict.keys(): try: used_by_customer = int(used_space_dict.pop(idurl)) used += used_by_customer except: r['errors'].append('incorrect value of used space for customer %s' % idurl) if consumed_by_customer < used_by_customer: r['errors'].append('customer %s currently using more space than requested' % idurl) c = {} c['idurl'] = idurl c['used'] = used_by_customer c['used_str'] = diskspace.MakeStringFromBytes(c['used']) c['consumed'] = consumed_by_customer c['consumed_str'] = diskspace.MakeStringFromBytes(c['consumed']) c['real'] = bpio.getDirectorySize(settings.getCustomerFilesDir(idurl)) c['real_str'] = diskspace.MakeStringFromBytes(c['real']) r['customers'].append(c) r['used'] = used r['used_str'] = diskspace.MakeStringFromBytes(r['used']) r['consumed_str'] = diskspace.MakeStringFromBytes(r['consumed']) if r['donated'] != r['free'] + r['consumed']: r['errors'].append('total consumed %d and known free %d (%d total) bytes not match with donated %d bytes' % ( r['consumed'], r['free'], r['consumed'] + r['free'], r['donated'])) if r['used'] > r['donated']: r['errors'].append('total space used by customers exceed the donated limit') if len(space_dict) > 0: r['errors'].append('found %d incorrect records of consumed space' % len(space_dict)) if r['real'] != r['used']: r['errors'].append('current info needs update, known size is %d bytes but real is %d bytes' % ( r['used'], r['real'])) for idurl in used_space_dict.keys(): real = bpio.getDirectorySize(settings.getCustomerFilesDir(idurl)) r['old_customers'].append({ 'idurl': idurl, 'used': used_space_dict['idurl'], 'used_str': diskspace.MakeStringFromBytes(used_space_dict['idurl']), 'real': real, 'real_str': diskspace.MakeStringFromBytes(real), }) try: r['used_percent'] = misc.percent2string(float(r['used']) / float(r['donated']), 5) except: r['used_percent'] = '' try: r['consumed_percent'] = misc.percent2string(float(r['consumed']) / float(r['donated']), 5) except: r['consumed_percent'] = '' return r