コード例 #1
0
class RolePermissionRel(db.Model, ModelMixin):
    __tablename__ = 'account_role_permission_rel'
    __table_args__ = (db.PrimaryKeyConstraint('role_id', 'permission_id'), )

    role_id = db.Column(db.Integer,
                        db.ForeignKey('account_roles.id', ondelete='CASCADE'))
    permission_id = db.Column(
        db.Integer, db.ForeignKey('account_permissions.id',
                                  ondelete='CASCADE'))
コード例 #2
0
class AppFieldRel(db.Model, ModelMixin):
    __tablename__ = 'deploy_app_field_rel'

    id = db.Column(db.Integer, primary_key=True)
    field_id = db.Column(db.Integer, db.ForeignKey('deploy_fields.id'))
    app_id = db.Column(db.Integer, db.ForeignKey('deploy_apps.id'))

    def __eq__(self, other):
        return other.field_id == self.field_id and other.app_id == self.app_id
コード例 #3
0
class ConfigValue(db.Model, ModelMixin):
    __tablename__ = 'configuration_values'

    id = db.Column(db.Integer, primary_key=True)
    env_id = db.Column(db.Integer,
                       db.ForeignKey('configuration_environments.id'))
    key_id = db.Column(
        db.Integer, db.ForeignKey('configuration_keys.id', ondelete='CASCADE'))
    value = db.Column(db.String(255))
コード例 #4
0
class AppMenuRel(db.Model, ModelMixin):
    __tablename__ = 'deploy_app_menu_rel'

    id = db.Column(db.Integer, primary_key=True)
    menu_id = db.Column(db.Integer, db.ForeignKey('deploy_menus.id'))
    app_id = db.Column(db.Integer, db.ForeignKey('deploy_apps.id'))

    def __eq__(self, other):
        return other.menu_id == self.menu_id and other.app_id == self.app_id
コード例 #5
0
class AppHostRel(db.Model, ModelMixin):
    __tablename__ = 'deploy_app_host_rel'

    id = db.Column(db.Integer, primary_key=True)
    env_id = db.Column(db.Integer, db.ForeignKey('configuration_environments.id'))
    app_id = db.Column(db.Integer, db.ForeignKey('deploy_apps.id'))
    host_id = db.Column(db.Integer, db.ForeignKey('assets_hosts.id'))

    def __eq__(self, other):
        return other.env_id == self.env_id and other.app_id == self.app_id and other.host_id == self.host_id
コード例 #6
0
class History(db.Model, ModelMixin):
    __tablename__ = 'deploy_history'

    id = db.Column(db.Integer, primary_key=True)
    app_id = db.Column(db.Integer, db.ForeignKey('deploy_apps.id', ondelete='CASCADE'))
    host_id = db.Column(db.Integer, db.ForeignKey('assets_hosts.id', ondelete='CASCADE'))
    env_id = db.Column(db.Integer, db.ForeignKey('configuration_environments.id', ondelete='CASCADE'))
    api_token = db.Column(db.String(32))
    deploy_message = db.Column(db.String(255))
    deploy_restart = db.Column(db.Boolean)
    deploy_success = db.Column(db.Boolean)
    created = db.Column(db.String(20))
コード例 #7
0
class DeployMenu(db.Model, ModelMixin):
    __tablename__ = 'deploy_menus'

    id = db.Column(db.Integer, primary_key=True)
    # 属于哪个应用的菜单
    app_id = db.Column(db.Integer, db.ForeignKey('deploy_apps.id', ondelete='CASCADE'), nullable=True)
    # 菜单的显示名称
    name = db.Column(db.String(50))
    # 菜单的帮助及描述
    desc = db.Column(db.String(255))
    # 菜单展示的位置(发布: 1 / 更多: 2)
    position = db.Column(db.SmallInteger)
    # 执行结果展示方式 (页面实时输出: 1 / 仅通知成功与否: 2)
    display_type = db.Column(db.SmallInteger)
    # 执行的钩子(自定义命令)
    command = db.Column(db.Text)
    # 是否需要传入参数
    required_args = db.Column(db.Boolean)
    # 在执行前是否需要弹框确认
    required_confirm = db.Column(db.Boolean)

    apps = db.relationship('App', secondary='deploy_app_menu_rel')

    def __repr__(self):
        return '<DeployMenu %r>' % self.name
コード例 #8
0
class AppConfigRel(db.Model, ModelMixin):
    __tablename__ = 'configuration_app_rel'

    id = db.Column(db.Integer, primary_key=True)
    s_id = db.Column(db.Integer, db.ForeignKey('deploy_apps.id'))
    d_id = db.Column(db.Integer)
    d_type = db.Column(db.String(50))
コード例 #9
0
class JobHistory(db.Model, ModelMixin):
    __tablename__ = 'schedule_jobs_history'

    id = db.Column(db.Integer, primary_key=True)
    job_id = db.Column(db.Integer,
                       db.ForeignKey('schedule_jobs.id', ondelete='CASCADE'))
    target = db.Column(db.String(50))
    exit_code = db.Column(db.Integer)
    stdout = db.Column(db.Text)
    stderr = db.Column(db.Text)
    time_cost = db.Column(db.Float)
    created = db.Column(db.String(20))
    create_time = db.Column(db.DateTime,
                            server_default=func.now(),
                            comment='创建时间')
    # onupdate设置自动更改
    update_time = db.Column(
        db.DateTime,
        server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'),
        comment='修改时间')

    @classmethod
    def write(cls, job_id, start_time, target, exit_code, stdout, stderr):
        cls(job_id=job_id,
            target=target,
            exit_code=exit_code,
            stdout=stdout[:1024],
            stderr=stderr[:1024],
            time_cost=round((datetime.now() - start_time).total_seconds(), 3),
            created=human_time(start_time)).save()

    def __repr__(self):
        return '<schedule.JonHistory id=%r job_id=%r>' % (self.id, self.job_id)
コード例 #10
0
ファイル: models.py プロジェクト: hy070111/prod
class JobHistory(db.Model, ModelMixin):
    __tablename__ = 'schedule_jobs_history'

    id = db.Column(db.Integer, primary_key=True)
    job_id = db.Column(db.Integer, db.ForeignKey('schedule_jobs.id', ondelete='CASCADE'))
    target = db.Column(db.String(50))
    exit_code = db.Column(db.Integer)
    stdout = db.Column(db.Text)
    stderr = db.Column(db.Text)
    time_cost = db.Column(db.Float)
    created = db.Column(db.String(20))

    @classmethod
    def write(cls, job_id, start_time, target, exit_code, stdout, stderr):
        cls(
            job_id=job_id,
            target=target,
            exit_code=exit_code,
            stdout=stdout[:1024],
            stderr=stderr[:1024],
            time_cost=round((datetime.now() - start_time).total_seconds(), 3),
            created=human_time(start_time)
        ).save()

    def __repr__(self):
        return '<schedule.JonHistory id=%r job_id=%r>' % (self.id, self.job_id)

    class Meta:
        ordering = ('-id',)
コード例 #11
0
class App(db.Model, ModelMixin):
    __tablename__ = 'deploy_apps'

    id = db.Column(db.Integer, primary_key=True)
    identify = db.Column(db.String(50))
    name = db.Column(db.String(50))
    desc = db.Column(db.String(255))
    group = db.Column(db.String(50))

    image_id = db.Column(db.Integer, db.ForeignKey('deploy_images.id'))
    notify_way_id = db.Column(db.Integer, db.ForeignKey('notify_way.id'))

    image = db.relationship(Image)
    notify_way = db.relationship(NotifyWay)
    menus = db.relationship('DeployMenu', secondary='deploy_app_menu_rel')
    fields = db.relationship('DeployField', secondary='deploy_app_field_rel')

    def __repr__(self):
        return '<App %r>' % self.name
コード例 #12
0
class ImageConfig(db.Model, ModelMixin):
    __tablename__ = 'deploy_image_configs'

    id = db.Column(db.Integer, primary_key=True)
    img_id = db.Column(db.ForeignKey('deploy_images.id', ondelete='CASCADE'))
    name = db.Column(db.String(50))
    desc = db.Column(db.String(255))
    value = db.Column(db.String(255))

    def __repr__(self):
        return '<ImageConfig name=%r, value=%r>' % (self.name, self.value)
コード例 #13
0
class UserPriv(db.Model, ModelMixin):
    __tablename__ = 'user_privileges'

    id = db.Column(db.Integer, primary_key=True)
    account_id = db.Column(db.Integer, db.ForeignKey('user_accounts.id'))
    db_database = db.Column(db.String(128))
    db_priv = db.Column(db.String(128))

    __table_args__ = (db.UniqueConstraint(
        'account_id', 'db_database', name='uniq_account_id_db_database'), )

    def __repr__(self):
        return '<UserInfo %r>' % self.name
コード例 #14
0
class UserInfo(db.Model, ModelMixin):
    __tablename__ = 'user_accounts'

    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('user_hosts.id'))
    db_user = db.Column(db.String(128))
    db_password = db.Column(db.String(128))
    desc = db.Column(db.String(255))

    __table_args__ = (db.Index('idx_user_id', 'user_id'), )

    def __repr__(self):
        return '<UserInfo %r>' % self.name
コード例 #15
0
ファイル: models.py プロジェクト: kxiansen/Operation_platform
class HostExtend(db.Model, ModelMixin):
    __tablename__ = 'assets_hosts_extend'

    id = db.Column(db.Integer, primary_key=True)
    host_id = db.Column(db.Integer, db.ForeignKey('assets_hosts.id'))
    operate_system = db.Column(db.String(64))
    memory = db.Column(db.SmallInteger)
    cpu = db.Column(db.SmallInteger)
    disk = db.Column(db.SmallInteger)
    outer_ip = db.Column(db.String(128))
    inner_ip = db.Column(db.String(128))

    hosts = db.relationship(Host, backref=db.backref('host'))
コード例 #16
0
class ImageTag(db.Model, ModelMixin):
    __tablename__ = 'deploy_image_tags'

    id = db.Column(db.Integer, primary_key=True)
    image_id = db.Column(db.Integer, db.ForeignKey('deploy_images.id'))
    name = db.Column(db.String(50))
    # sha256加密字符串,例如(sha256:a6647f8a2744cb8bfeff0a1b8623c8070dd92b0e6708ffa04ceb5349eaf492d6)
    digest = db.Column(db.String(64 + 7))
    created = db.Column(db.String(20))

    image = db.relationship(Image, backref=db.backref('tags'))

    def __repr__(self):
        return '<ImageTag %r>' % self.name
コード例 #17
0
class User(db.Model, ModelMixin):
    __tablename__ = 'account_users'

    id = db.Column(db.Integer, primary_key=True)
    role_id = db.Column(db.Integer, db.ForeignKey('account_roles.id'))
    username = db.Column(db.String(50), unique=True, nullable=False)
    nickname = db.Column(db.String(50))
    password_hash = db.Column(db.String(100), nullable=False)
    email = db.Column(db.String(120))
    mobile = db.Column(db.String(30))
    is_supper = db.Column(db.Boolean, default=False)
    type = db.Column(db.String(20), default='系统用户')
    is_active = db.Column(db.Boolean, default=True)
    access_token = db.Column(db.String(32))
    token_expired = db.Column(db.Integer)

    role = db.relationship('Role')

    @property
    def password(self):
        raise AttributeError('password only can write')

    @password.setter
    def password(self, plain):
        self.password_hash = generate_password_hash(plain)

    @property
    def permissions(self):
        if self.is_supper:
            return set()
        return Role.get_permissions(self.role_id)

    def verify_password(self, password):
        return check_password_hash(self.password_hash, password)

    def check_deploy_permission(self, env_id, app_id):
        if self.is_supper:
            return True
        env_ids = self.role.env_ids.split(',') if self.role.env_ids else []
        app_ids = self.role.app_ids.split(',') if self.role.app_ids else []
        return str(env_id) in env_ids and str(app_id) in app_ids

    def __repr__(self):
        return '<User %r>' % self.username

    class Meta:
        ordering = ('-id', )
コード例 #18
0
ファイル: models.py プロジェクト: lucasaytt/arena_platform
class HostExtend(db.Model, ModelMixin):
    __tablename__ = 'assets_hosts_extend'

    id = db.Column(db.Integer, primary_key=True)
    host_id = db.Column(db.Integer, db.ForeignKey('assets_hosts.id'))
    operate_system = db.Column(db.String(64))
    memory = db.Column(db.SmallInteger)
    cpu_core = db.Column(db.SmallInteger)
    avaliable_mem = db.Column(db.SmallInteger)
    avaliable_core = db.Column(db.SmallInteger)
    hosts = db.relationship(Host, backref=db.backref('host'))
    create_time = db.Column(db.DateTime,
                            server_default=func.now(),
                            comment='创建时间')
    # onupdate设置自动更改
    update_time = db.Column(
        db.DateTime,
        server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'),
        comment='修改时间')