Ejemplo n.º 1
0
class Proxy(Base):
    __tablename__ = 'proxy'

    host = db.Column(db.String(255), nullable=False)
    port = db.Column(db.Integer, nullable=False)
    eru_container_id = db.Column(db.String(64), index=True)
    cluster_id = db.Column(db.ForeignKey(Cluster.id), index=True)
    suppress_alert = db.Column(db.Integer, nullable=False, default=1)
    proxy_type = db.Column(db.Integer, nullable=False, default=0)

    __table_args__ = (db.Index('address', 'host', 'port', unique=True), )

    @cached_property
    def containerized(self):
        return self.eru_container_id is not None

    @cached_property
    def container_info(self):
        from flask import g
        if g.container_client is None or not self.containerized:
            return None
        return g.container_client.get_container(self.eru_container_id)

    @cached_property
    def cluster(self):
        return Cluster.query.get(self.cluster_id)

    def proxy_typename(self):
        if self.proxy_type == TYPE_CERBERUS:
            return 'Cerberus'
        elif self.proxy_type == TYPE_CORVUS:
            return 'Corvus'
        else:
            return 'Unknow'
Ejemplo n.º 2
0
class Proxy(Base):
    __tablename__ = 'proxy'

    host = db.Column(db.String(255), nullable=False)
    port = db.Column(db.Integer, nullable=False)
    eru_container_id = db.Column(db.String(64), index=True)
    cluster_id = db.Column(db.ForeignKey(Cluster.id), index=True)
    suppress_alert = db.Column(db.Integer, nullable=False, default=1)

    __table_args__ = (db.Index('address', 'host', 'port', unique=True), )

    @cached_property
    def eru_deployed(self):
        return self.eru_container_id is not None

    @cached_property
    def eru_info(self):
        import eru_utils
        if eru_utils.eru_client is None or not self.eru_deployed:
            return None
        return eru_utils.eru_client.get_container(self.eru_container_id)

    @cached_property
    def cluster(self):
        return Cluster.query.get(self.cluster_id)
Ejemplo n.º 3
0
class RedisNode(Base):
    __tablename__ = 'redis_node'

    host = db.Column(db.String(255), nullable=False)
    port = db.Column(db.Integer, nullable=False)
    eru_container_id = db.Column(db.String(64), index=True)
    assignee_id = db.Column(db.ForeignKey(Cluster.id), index=True)
    suppress_alert = db.Column(db.Integer, nullable=False, default=1)

    __table_args__ = (db.Index('address', 'host', 'port', unique=True), )

    def free(self):
        return self.assignee_id is None

    @cached_property
    def eru_deployed(self):
        return self.eru_container_id is not None

    @cached_property
    def eru_info(self):
        import eru_utils
        if eru_utils.eru_client is None or not self.eru_deployed:
            return None
        try:
            return eru_utils.eru_client.get_container(self.eru_container_id)
        except EruException as e:
            logging.exception(e)
            return {
                'version': '-',
                'host': '-',
                'created': 'CONTAINER NOT ALIVE',
            }
Ejemplo n.º 4
0
class Proxy(Base):
    __tablename__ = 'proxy'

    host = db.Column(db.String(32), nullable=False)
    port = db.Column(db.Integer, nullable=False)
    cluster_id = db.Column(db.ForeignKey(Cluster.id), index=True)
    suppress_alert = db.Column(db.Integer, nullable=False, default=1)

    __table_args__ = (db.Index('address', 'host', 'port', unique=True), )
Ejemplo n.º 5
0
class RedisNode(Base):
    __tablename__ = 'redis_node'

    host = db.Column(db.String(32), nullable=False)
    port = db.Column(db.Integer, nullable=False)
    max_mem = db.Column(db.Integer, nullable=False)
    assignee_id = db.Column(db.ForeignKey(Cluster.id), index=True)

    __table_args__ = (db.Index('address', 'host', 'port', unique=True),)

    def free(self):
        return self.assignee is None
Ejemplo n.º 6
0
class NodeEvent(Base):
    __tablename__ = 'node_event'

    host = db.Column(db.String(32), nullable=False)
    port = db.Column(db.Integer, nullable=False)

    event_domain = db.Column(db.String(32), index=True)
    event_type = db.Column(db.Integer, nullable=False)

    creation = db.Column(db.DateTime,
                         default=datetime.now,
                         nullable=False,
                         index=True)
    args_json = db.Column(DB_TEXT_TYPE, nullable=False)
    user_id = db.Column(db.Integer, index=True)

    __table_args__ = (db.Index('address', 'host', 'port'), )

    @cached_property
    def args(self):
        return json.loads(self.args_json)
Ejemplo n.º 7
0
class BookChapterContent(db.Model):
    ''' 书籍章节内容信息 '''
    __table_args__ = {'mysql_engine': 'InnoDB', 'mysql_charset': 'utf8'}

    id = db.Column(db.Integer(), primary_key=True)  # ID
    book_id = db.Column(db.Integer)  # 书籍ID
    volume_id = db.Column(db.Integer)  # 卷ID
    chapter_id = db.Column(db.Integer)  # 章节ID
    content = db.Column(MEDIUMTEXT)  # 章节内容
    created = db.Column(db.DateTime, server_default=func.now())  # 创建时间

    db.Index('ix_book_id_chapter_id', book_id, chapter_id)

    def __init__(self, data):
        self.book_id = int(data['book_id'])
        self.volume_id = int(data['volume_id'])
        self.chapter_id = int(data['chapter_id'])
        self.content = data['content'].replace(u' ', '').replace(' ', '')

    def update(self, data):
        self.content = data['content'].replace(u' ', '').replace(' ', '')
Ejemplo n.º 8
0
class BookShelf(db.Model):
    ''' 书架 '''
    __table_args__ = {'mysql_engine': 'InnoDB', 'mysql_charset': 'utf8'}

    id = db.Column(db.Integer(), primary_key=True)
    book_id = db.Column(db.Integer(), index=True)  # 书籍ID
    name = db.Column(
        db.String(100))  # 书架名称('myself', 'hot', 'new', 'recommend', 'finish')
    user_id = db.Column(db.Integer())  # 用户id, 用于myself 自己的书架
    ranking = db.Column(db.Integer(), default=0)  # 用于排序
    rate = db.Column(db.Integer(), default=0)  # 阅读进度(百分率分子)
    showed = db.Column(db.Boolean(), default=True)  # 是否显示
    sex = db.Column(db.Integer(), server_default='0')  # 热门和新书需要区分男女频(1:男;2: 女)
    created = db.Column(db.DateTime, server_default=func.now())  # 创建时间
    updated = db.Column(db.DateTime, server_default=func.now())  # 更新时间

    db.Index('ix_book_id_name_user_id', book_id, name, user_id, unique=True)

    def __init__(self, book_id, name, user_id, ranking, rate, showed, sex):
        self.book_id = book_id
        self.name = name
        self.user_id = user_id
        self.ranking = ranking
        self.rate = rate
        self.showed = showed
        self.sex = sex

    def to_admin_dict(self):
        book = Book.query.filter_by(book_id=self.book_id).first()
        return dict(id=self.id,
                    book_id=self.book_id,
                    book=book.to_admin_dict() if book else {},
                    name=self.name,
                    user_id=self.name,
                    ranking=self.ranking,
                    rate=self.rate,
                    showed=int(self.showed) if self.showed else 0,
                    sex=self.sex,
                    created=self.created.strftime('%Y-%m-%d %H:%M:%S'))
Ejemplo n.º 9
0
class RedisNode(Base):
    __tablename__ = 'redis_node'

    host = db.Column(db.String(255), nullable=False)
    port = db.Column(db.Integer, nullable=False)
    eru_container_id = db.Column(db.String(64), index=True)
    assignee_id = db.Column(db.ForeignKey(Cluster.id), index=True)
    suppress_alert = db.Column(db.Integer, nullable=False, default=1)

    __table_args__ = (db.Index('address', 'host', 'port', unique=True),)

    def free(self):
        return self.assignee_id is None

    @cached_property
    def containerized(self):
        return self.eru_container_id is not None

    @cached_property
    def container_info(self):
        from flask import g
        if g.container_client is None or not self.containerized:
            return None
        return g.container_client.get_container(self.eru_container_id)