X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fsrc%2Fbrag%2Fserver%2Fceph_brag%2Fmodel%2Fdb.py;fp=src%2Fceph%2Fsrc%2Fbrag%2Fserver%2Fceph_brag%2Fmodel%2Fdb.py;h=0000000000000000000000000000000000000000;hb=7da45d65be36d36b880cc55c5036e96c24b53f00;hp=9fc7df9443abc1488effce357758d741c46826cb;hpb=691462d09d0987b47e112d6ee8740375df3c51b2;p=stor4nfv.git diff --git a/src/ceph/src/brag/server/ceph_brag/model/db.py b/src/ceph/src/brag/server/ceph_brag/model/db.py deleted file mode 100644 index 9fc7df9..0000000 --- a/src/ceph/src/brag/server/ceph_brag/model/db.py +++ /dev/null @@ -1,284 +0,0 @@ -import json -from datetime import datetime -from sqlalchemy.orm import sessionmaker, scoped_session -from sqlalchemy import Column, Integer, String, \ - DateTime, ForeignKey, BigInteger -from sqlalchemy import PrimaryKeyConstraint -from sqlalchemy.ext.declarative import declarative_base -from sqlalchemy.ext.declarative import declared_attr - -Base = declarative_base() -Session = scoped_session(sessionmaker()) - -class cluster_info(Base): - __tablename__ = 'cluster_info' - - index = Column(Integer, primary_key=True) - uuid = Column(String(36), unique=True) - organization = Column(String(64)) - contact_email = Column(String(32)) - cluster_name = Column(String(32)) - cluster_creation_date = Column(DateTime) - description = Column(String(32)) - num_versions = Column(Integer) - -class version_info(Base): - __tablename__ = 'version_info' - - index = Column(Integer, primary_key=True) - cluster_id = Column(ForeignKey('cluster_info.index')) - version_number = Column(Integer) - version_date = Column(DateTime) - -class components_info(Base): - __tablename__ = 'components_info' - - index = Column(Integer, primary_key=True) - vid = Column(ForeignKey('version_info.index')) - num_data_bytes = Column(BigInteger) - num_bytes_total = Column(BigInteger) - num_osds = Column(Integer) - num_objects = Column(Integer) - num_pgs = Column(Integer) - num_pools = Column(Integer) - num_mdss = Column(Integer) - num_mons = Column(Integer) - -class crush_types(Base): - __tablename__ = 'crush_types' - - index = Column(Integer, primary_key=True) - vid = Column(ForeignKey('version_info.index')) - crush_type = Column(String(16)) - crush_count = Column(Integer) - -class pools_info(Base): - __tablename__ = 'pools_info' - - index = Column(Integer, primary_key=True) - vid = Column(ForeignKey('version_info.index')) - pool_id = Column(Integer) - pool_type = Column(Integer) - pool_rep_size = Column(Integer) - -class os_info(Base): - __tablename__ = 'os_info' - - index = Column(Integer, primary_key=True) - vid = Column(ForeignKey('version_info.index')) - os = Column(String(16)) - count = Column(Integer) - -class kernel_versions(Base): - __tablename__ = 'kernel_versions' - - index = Column(Integer, primary_key=True) - vid = Column(ForeignKey('version_info.index')) - version = Column(String(16)) - count = Column(Integer) - -class kernel_types(Base): - __tablename__ = 'kernel_types' - - index = Column(Integer, primary_key=True) - vid = Column(ForeignKey('version_info.index')) - type = Column(String(64)) - count = Column(Integer) - -class distros(Base): - __tablename__ = 'distros' - - index = Column(Integer, primary_key=True) - vid = Column(ForeignKey('version_info.index')) - distro = Column(String(64)) - count = Column(Integer) - -class cpus(Base): - __tablename__ = 'cpus' - - index = Column(Integer, primary_key=True) - vid = Column(ForeignKey('version_info.index')) - cpu = Column(String(16)) - count = Column(Integer) - -class cpu_archs(Base): - __tablename__ = 'cpu_archs' - - index = Column(Integer, primary_key=True) - vid = Column(ForeignKey('version_info.index')) - arch = Column(String(16)) - count = Column(Integer) - -class ceph_versions(Base): - __tablename__ = 'ceph_versions' - - index = Column(Integer, primary_key=True) - vid = Column(ForeignKey('version_info.index')) - version = Column(String(16)) - count = Column(Integer) - -class sysinfo(object): - def __init__(self, vindex): - self.os = Session.query(os_info).filter_by(vid=vindex).all() - self.kern_vers = Session.query(kernel_versions).filter_by(vid=vindex).all() - self.kern_types = Session.query(kernel_types).filter_by(vid=vindex).all() - self.distros = Session.query(distros).filter_by(vid=vindex).all() - self.cpus = Session.query(cpus).filter_by(vid=vindex).all() - self.cpu_archs = Session.query(cpu_archs).filter_by(vid=vindex).all() - self.ceph_vers = Session.query(ceph_versions).filter_by(vid=vindex).all() - -class brag(object): - def __init__(self, uuid, version_number): - self.ci = Session.query(cluster_info).filter_by(uuid=uuid).first() - if self.ci is not None: - self.vi = Session.query(version_info).filter_by(cluster_id=self.ci.index, version_number=version_number).first() - - if self.ci is not None and self.vi is not None: - self.comps = Session.query(components_info).filter_by(vid=self.vi.index).first() - self.crush = Session.query(crush_types).filter_by(vid=self.vi.index).all() - self.pools = Session.query(pools_info).filter_by(vid=self.vi.index).all() - self.sysinfo = sysinfo(self.vi.index) - -def put_new_version(data): - info = json.loads(data) - def add_cluster_info(): - ci = Session.query(cluster_info).filter_by(uuid=info['uuid']).first() - if ci is None: - dt = datetime.strptime(info['cluster_creation_date'], "%Y-%m-%d %H:%M:%S.%f") - ci = cluster_info(uuid=info['uuid'], - organization=info['ownership']['organization'], - contact_email=info['ownership']['email'], - cluster_name=info['ownership']['name'], - description=info['ownership']['description'], - cluster_creation_date=dt, - num_versions=1) - Session.add(ci) - Session.commit() - else: - ci.num_versions += 1 - - return ci - - def add_version_info(ci): - vi = version_info(cluster_id=ci.index, - version_number=ci.num_versions, - version_date=datetime.now()) - Session.add(vi) - return vi - - def add_components_info(vi): - comps_count= info['components_count'] - comps_info = components_info(vid=vi.index, - num_data_bytes=comps_count['num_data_bytes'], - num_bytes_total=comps_count['num_bytes_total'], - num_osds=comps_count['num_osds'], - num_objects=comps_count['num_objects'], - num_pgs=comps_count['num_pgs'], - num_pools=comps_count['num_pools'], - num_mdss=comps_count['num_mdss'], - num_mons=comps_count['num_mons']) - Session.add(comps_info) - - def add_crush_types(vi): - for c in info['crush_types']: - Session.add(crush_types(vid=vi.index, - crush_type=c['type'], - crush_count=c['count'])) - - def add_pools_info(vi): - pools = info['pool_metadata'] - for p in pools: - Session.add(pools_info(vid=vi.index, - pool_id=p['id'], - pool_type=p['type'], - pool_rep_size=p['size'])) - - def add_sys_info(vi): - si = info['sysinfo'] - while si: - k,v = si.popitem() - if k == 'os_info': - for o in v: - Session.add(os_info(vid=vi.index, - os=o['os'], - count=o['count'])) - elif k == 'kernel_versions': - for k in v: - Session.add(kernel_versions(vid=vi.index, - version=k['version'], - count=k['count'])) - elif k == 'kernel_types': - for k in v: - Session.add(kernel_types(vid=vi.index, - type=k['type'], - count=k['count'])) - elif k == 'distros': - for d in v: - Session.add(distros(vid=vi.index, - distro=d['distro'], - count=d['count'])) - elif k == 'cpus': - for c in v: - Session.add(cpus(vid=vi.index, - cpu=c['cpu'], - count=c['count'])) - elif k == 'cpu_archs': - for c in v: - Session.add(cpu_archs(vid=vi.index, - arch=c['arch'], - count=c['count'])) - elif k == 'ceph_versions': - for c in v: - Session.add(ceph_versions(vid=vi.index, - version=c['version'], - count=c['count'])) - - ci = add_cluster_info() - add_version_info(ci) - vi = Session.query(version_info).filter_by(cluster_id=ci.index, - version_number=ci.num_versions).first() - add_components_info(vi) - add_crush_types(vi) - add_pools_info(vi) - add_sys_info(vi) - -def delete_uuid(uuid): - ci = Session.query(cluster_info).filter_by(uuid=uuid).first() - if ci is None: - return {'status':400, 'msg':'No information for this UUID'} - - for v in Session.query(version_info).filter_by(cluster_id=ci.index).all(): - Session.query(components_info).filter_by(vid=v.index).delete() - Session.query(crush_types).filter_by(vid=v.index).delete() - Session.query(pools_info).filter_by(vid=v.index).delete() - Session.query(os_info).filter_by(vid=v.index).delete() - Session.query(kernel_versions).filter_by(vid=v.index).delete() - Session.query(kernel_types).filter_by(vid=v.index).delete() - Session.query(distros).filter_by(vid=v.index).delete() - Session.query(cpus).filter_by(vid=v.index).delete() - Session.query(cpu_archs).filter_by(vid=v.index).delete() - Session.query(ceph_versions).filter_by(vid=v.index).delete() - - Session.flush() - Session.delete(v) - Session.flush() - - Session.delete(ci) - return None - -def get_uuids(): - return Session.query(cluster_info).all() - -def get_versions(uuid): - ci = Session.query(cluster_info).filter_by(uuid=uuid).first() - if ci is None: - return None - - return Session.query(version_info).filter_by(cluster_id=ci.index).all() - -def get_brag(uuid, version_id): - b = brag(uuid, version_id) - if b.ci is None or b.vi is None: - return None - - return b