Ejemplo n.º 1
0
class Host(db.Model):
    __tablename__ = 'host'
    __table_args__ = {'mysql_engine': 'InnoDB', 'mysql_charset': 'utf8'}

    id = db.Column(db.Integer, primary_key=True)
    instance_id = db.Column(db.String(32))
    innerIP = db.Column(db.Integer, db.ForeignKey('ip_pool.id'))
    outerIP = db.Column(db.String(32))
    elasticIP = db.Column(db.String(32))
    hostname = db.Column(db.String(64))
    cpu = db.Column(db.String(32))
    memory = db.Column(db.String(32))
    disk = db.Column(db.String(32))
    os = db.Column(db.String(32))
    device_id = db.Column(db.Integer, db.ForeignKey('device.id'))
    user_dpt_id = db.Column(db.Integer, db.ForeignKey('department.id'))
    user_dpt = db.relationship("Department", foreign_keys=[user_dpt_id])
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    owner_dpt_id = db.Column(db.Integer, db.ForeignKey('department.id'))
    owner_dpt = db.relationship("Department", foreign_keys=[owner_dpt_id])
    ops_id = db.Column(db.Integer, db.ForeignKey('operator.id'))
    host_model = db.Column(db.String(32))
    service_id = db.Column(db.Integer, db.ForeignKey('service.id'))
    cabinet_id = db.Column(db.Integer, db.ForeignKey('cabinet.id'))
    bill_id = db.Column(db.Integer, db.ForeignKey('bill.id'))
    create_date = db.Column(db.String(16))
    payment = db.Column(db.String(32))
    status = db.Column(db.String(16))
    comment = db.Column(db.Text)
Ejemplo n.º 2
0
class Device(db.Model):
    __tablename__ = 'device'
    __table_args__ = {'mysql_engine': 'InnoDB', 'mysql_charset': 'utf8'}

    id = db.Column(db.Integer, primary_key=True)
    type = db.Column(db.String(16))
    sn = db.Column(db.String(32))
    brand_id = db.Column(db.Integer, db.ForeignKey('brand.id'))
    model_id = db.Column(db.Integer, db.ForeignKey('model.id'))
    cpu_num = db.Column(db.String(16))
    memory_num = db.Column(db.String(16))
    disk_num = db.Column(db.String(16))
    cpu_core = db.Column(db.String(16))
    memory_size = db.Column(db.String(16))
    cpu_id = db.Column(db.Integer, db.ForeignKey('cpu.id'))
    memory_id = db.Column(db.Integer, db.ForeignKey('memory.id'))
    disk_id = db.Column(db.Integer, db.ForeignKey('disk.id'))
    nic_id = db.Column(db.Integer, db.ForeignKey('nic.id'))
    socket = db.Column(db.String(32))
    region_detail_id = db.Column(db.Integer, db.ForeignKey('region_detail.id'))
    cabinet_id = db.Column(db.Integer, db.ForeignKey('cabinet.id'))
    supplier_id = db.Column(db.Integer, db.ForeignKey('supplier.id'))
    purchase_date = db.Column(db.String(16))
    status = db.Column(db.String(16))
    host = db.relationship('Host', backref='device', lazy='dynamic')
    create_time = db.Column(db.DateTime, default=datetime.utcnow)
Ejemplo n.º 3
0
class Model(db.Model):
    __tablename__ = 'model'
    __table_args__ = {'mysql_engine': 'InnoDB', 'mysql_charset': 'utf8'}

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(32))
    brand_id = db.Column(db.Integer, db.ForeignKey('brand.id'))
    device = db.relationship('Device', backref='model', lazy='dynamic')
    create_time = db.Column(db.DateTime, default=datetime.utcnow)
Ejemplo n.º 4
0
class Cabinet(db.Model):
    __tablename__ = 'cabinet'
    __table_args__ = {'mysql_engine': 'InnoDB', 'mysql_charset': 'utf8'}

    id = db.Column(db.Integer, primary_key=True)
    region_detail_id = db.Column(db.Integer, db.ForeignKey('region_detail.id'))
    code = db.Column(db.String(32))
    device = db.relationship('Device', backref='cabinet', lazy='dynamic')
    host = db.relationship('Host', backref='cabinet', lazy='dynamic')
    create_time = db.Column(db.DateTime, default=datetime.utcnow)
Ejemplo n.º 5
0
class IPPool(db.Model):
    __tablename__ = 'ip_pool'
    __table_args__ = {'mysql_engine': 'InnoDB', 'mysql_charset': 'utf8'}

    id = db.Column(db.Integer, primary_key=True)
    ip_segment_id = db.Column(db.Integer, db.ForeignKey('ip_segment.id'))
    IP = db.Column(db.String(32))
    status = db.Column(db.String(32))
    comment = db.Column(db.Text)
    host = db.relationship('Host', backref='ip_pool', lazy='dynamic')
    create_time = db.Column(db.DateTime, default=datetime.utcnow)
Ejemplo n.º 6
0
class Service(db.Model):
    __tablename__ = 'service'
    __table_args__ = {'mysql_engine': 'InnoDB', 'mysql_charset': 'utf8'}

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(32), unique=True)
    dpt_id = db.Column(db.Integer, db.ForeignKey('department.id'))
    tree_id = db.Column(db.String(64))
    tree_parent = db.Column(db.String(64))
    host = db.relationship('Host', backref='service', lazy='dynamic')
    create_time = db.Column(db.DateTime, default=datetime.utcnow)
Ejemplo n.º 7
0
class User(UserMixin, db.Model):
    __tablename__ = 'users'
    __table_args__ = {'mysql_engine': 'InnoDB', 'mysql_charset': 'utf8'}

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(32), unique=True)
    fullname = db.Column(db.String(32))
    password_hash = db.Column(db.String(256))
    email = db.Column(db.String(64))
    status = db.Column(db.Boolean, default=True)
    token = db.Column(db.String(128))
    role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))
    host = db.relationship('Host', backref='users', lazy='dynamic')
    create_time = db.Column(db.DateTime, default=datetime.utcnow)

    @property
    def password(self):
        raise AttributeError('password is not a readable attribute')

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

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

    def generate_auth_token(self, expiration):
        s = Serializer(current_app.config['SECRET_KEY'], expires_in=expiration)
        return s.dumps({
            'id': self.id,
            'username': self.name,
            'role': self.role.name
        })

    @staticmethod
    def verify_auth_token(token):
        s = Serializer(current_app.config['SECRET_KEY'])
        try:
            data = s.loads(token)
        except Exception as e:
            current_app.logger.error(e)
            return None
        return User.query.get(data['id'])

    @staticmethod
    def get_auth_token_data(token):
        s = Serializer(current_app.config['SECRET_KEY'])
        try:
            data = s.loads(token)
        except Exception as e:
            current_app.logger.error(e)
            return None
        return data
Ejemplo n.º 8
0
class Region(db.Model):
    __tablename__ = 'region_detail'
    __table_args__ = {'mysql_engine': 'InnoDB', 'mysql_charset': 'utf8'}
    id = db.Column(db.Integer, primary_key=True)
    supplier_id = db.Column(db.Integer, db.ForeignKey('supplier.id'))
    supplier_name = db.Column(db.String(32))
    region = db.Column(db.String(32))
    detail = db.Column(db.String(64))
    code = db.Column(db.String(32))
    comment = db.Column(db.Text)
    ip_segment = db.relationship('IPSegment',
                                 backref='region_detail',
                                 lazy='dynamic')
    cabinet = db.relationship('Cabinet',
                              backref='region_detail',
                              lazy='dynamic')
    device = db.relationship('Device', backref='region_detail', lazy='dynamic')
    create_time = db.Column(db.DateTime, default=datetime.utcnow)
Ejemplo n.º 9
0
class IPSegment(db.Model):
    __tablename__ = 'ip_segment'
    __table_args__ = {'mysql_engine': 'InnoDB', 'mysql_charset': 'utf8'}

    id = db.Column(db.Integer, primary_key=True)
    ip_segment = db.Column(db.String(32))
    region_detail_id = db.Column(db.Integer, db.ForeignKey('region_detail.id'))
    status = db.Column(db.String(32))
    comment = db.Column(db.Text)
    ip_pool = db.relationship('IPPool', backref='ip_segment', lazy='dynamic')
    create_time = db.Column(db.DateTime, default=datetime.utcnow)

    def count_available_ips(self):
        return IPPool.query.filter(IPPool.ip_segment_id == self.id).filter(
            IPPool.status == u'可用').count()

    def count_unavailable_ips(self):
        return IPPool.query.filter(IPPool.ip_segment_id == self.id).filter(
            IPPool.status == u'不可用').count()
Ejemplo n.º 10
0
    @staticmethod
    def get_auth_token_data(token):
        s = Serializer(current_app.config['SECRET_KEY'])
        try:
            data = s.loads(token)
        except Exception as e:
            current_app.logger.error(e)
            return None
        return data


role_permission = db.Table(
    'role_permission',
    db.Column('role_id',
              db.Integer,
              db.ForeignKey('roles.id'),
              primary_key=True),
    db.Column('permission_id',
              db.Integer,
              db.ForeignKey('permissions.id'),
              primary_key=True),
)

dpt_user = db.Table(
    'dpt_user',
    db.Column('dpt_id',
              db.Integer,
              db.ForeignKey('department.id'),
              primary_key=True),
    db.Column('user_id',
              db.Integer,