return mo.group(2)
+def bytes_pretty_to_raw(byte_count, byte_scale):
+ if byte_scale == 'kB':
+ return byte_count >> 10
+ if byte_scale == 'MB':
+ return byte_count >> 20
+ if byte_scale == 'GB':
+ return byte_count >> 30
+ if byte_scale == 'TB':
+ return byte_count >> 40
+ if byte_scale == 'PB':
+ return byte_count >> 50
+ if byte_scale == 'EB':
+ return byte_count >> 60
+
+ return byte_count
+
def get_nums():
(rc, o, e) = run_command(['ceph', '-s'])
if rc is not 0:
else:
num_pgs = int(mo.group(1))
num_pools = int(mo.group(2))
- byte_count = mo.group(3)
+ byte_count = int(mo.group(3))
byte_scale = mo.group(4)
num_objs = int(mo.group(5))
nums = {'num_mons':num_mons,
'num_mdss':num_mdss,
'num_pgs':num_pgs,
'num_pools':num_pools,
- 'num_bytes': byte_count + " " + byte_scale,
+ 'num_bytes': bytes_pretty_to_raw(byte_count, byte_scale),
'num_objects':num_objs}
return nums
import json
from datetime import datetime
-import re
from sqlalchemy.orm import sessionmaker, scoped_session
from sqlalchemy import Column, Integer, String, \
DateTime, ForeignKey, BigInteger
self.pools = Session.query(pools_info).filter_by(vid=self.vi.index).all()
self.sysinfo = sysinfo(self.vi.index)
-def bytes_pretty_to_raw(pretty):
- mo = re.search("(\d+)\ (\S+)", pretty)
- if not mo:
- raise ValueError()
-
- byte_count = int(mo.group(1))
- byte_scale = mo.group(2)
- if byte_scale == 'kB':
- return byte_count >> 10
- if byte_scale == 'MB':
- return byte_count >> 20
- if byte_scale == 'GB':
- return byte_count >> 30
- if byte_scale == 'TB':
- return byte_count >> 40
- if byte_scale == 'PB':
- return byte_count >> 50
- if byte_scale == 'EB':
- return byte_count >> 60
-
- return byte_count
-
-def bytes_raw_to_pretty(num_bytes):
- shift_limit = 100
-
- if num_bytes > shift_limit << 60:
- return str(num_bytes >> 60) + " EB"
- if num_bytes > shift_limit << 50:
- return str(num_bytes >> 50) + " PB"
- if num_bytes > shift_limit << 40:
- return str(num_bytes >> 40) + " TB"
- if num_bytes > shift_limit << 30:
- return str(num_bytes >> 30) + " GB"
- if num_bytes > shift_limit << 20:
- return str(num_bytes >> 20) + " MB"
- if num_bytes > shift_limit << 10:
- return str(num_bytes >> 10) + " kB"
-
- return str(num_bytes) + " bytes"
-
def put_new_version(data):
info = json.loads(data)
def add_cluster_info():
def add_components_info(vi):
comps_count= info['components_count']
- nbytes = comps_count['num_bytes']
comps_info = components_info(vid=vi.index,
- num_bytes=bytes_pretty_to_raw(nbytes),
+ num_bytes=comps_count['num_bytes'],
num_osds=comps_count['num_osds'],
num_objects=comps_count['num_objects'],
num_pgs=comps_count['num_pgs'],