def post(self): ''' 添加主机 ''' id = request.values.get('id', None) zone = request.values.get('zone', None) name = request.values.get('name', None) username = request.values.get('username', None) password = request.values.pop('password', None) hostname = request.values.get('hostname', None) port = request.values.get('port', None) if valid_ssh(hostname, port, username, password) is False: return self.jsonify('auth fail') if id: host = Host.get_by(id=id, to_dict=False, first=True) host.update(**request.values) elif Host.query.filter(db.exists().where( and_(Host.name == name, Host.deleted_by.is_(None)))).scalar(): return self.jsonify(error='已存在的主机名称【%s】' % name) else: request.values['created_by'] = g.user.id host = Host.create(**request.values) if g.user.role: g.user.role.add_host_perm(host.id) return self.jsonify(error='')
def get(self): ''' 获取所有的zones和主机 ''' host_id = request.values.get('id') if host_id: if not g.user.has_host_perm(host_id): return self.jsonify(error='无权访问该主机') return self.jsonify( Host.get_by(id=host_id, to_dict=True, first=True)) hosts = Host.query.filter(Host.deleted_at.is_(None)).all() zones = [i.zone for i in hosts if i.zone] perms = [x.id for x in hosts] if g.user.is_supper else g.user.host_perms return self.jsonify({ 'zones': list(set(zones)), 'hosts': [x.to_dict() for x in hosts], 'perms': perms })