Exemplo n.º 1
0
 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='')
Exemplo n.º 2
0
 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
     })