撤销沙箱的全部令牌或单个令牌
不带请求体(或为 {})时:本调用之前为该沙箱签发的所有令牌(POST /v1/sandboxes/{id}/tokens 签发的、预览的 Cookie 或链接中的、SSH 会话持有的)从现在起都会被拒绝 (401 invalid_token);之后签发的令牌照常有效。每个令牌都带有签发时沙箱令牌的代数,本调用把代数加一;调用返回之前,新代数已写入沙箱的记录,守护进程重启、休眠或迁到另一个节点后依然保留。
带 token(令牌本身,必须是该沙箱的令牌)或 token_id(它的 id,即 POST /v1/sandboxes/{id}/tokens 返回的)时:从现在起只有这个令牌会被拒绝,该沙箱的其他令牌照常有效;代数不变。签发的令牌不会被保存:节点会保留这样撤销的每个令牌的 id,直到令牌过期(expires_at;只按 id 指定时,保留令牌可能存活的最长时间,即 30 天);调用返回之前它已写入沙箱的记录,重启、休眠和迁移后也依然保留。一个沙箱最多保留 1,000 个这样尚未过期的撤销记录:再多一个会被拒绝,返回 409 too_many_revoked_tokens,此时可以改为撤销全部令牌。
沙箱令牌不能调用此接口。不会唤醒任何东西。沙箱正在迁往另一个节点时,调用会被拒绝,返回 503 unavailable(再调用一次即可:届时会到达新节点);如果节点的租约不覆盖键控或有状态的沙箱,节点会拒绝调用,返回 503 fenced。
所需权限范围:write。
https://api.glac.ai/v1/sandboxes/{id}/tokens/revoke授权
路径参数
请求头参数
请求体JSON可选
Returns
200
撤销结果:撤销全部令牌时,给出今后签发令牌所用的代数;撤销单个令牌时,给出它的 id 以及撤销记录保留到何时。
400
请求不符合本调用的要求。invalid_json:请求体不是 JSON 对象;unknown_field:请求体中有本调用不接受的字段;unknown_parameter:查询中有本调用不接受的参数;invalid_field:token 不是该沙箱的令牌,token_id 不是令牌的 id,或者两者都给出了;invalid_idempotency_key:Idempotency-Key 为空或超过 255 个字符。
401
missing_api_key, invalid_api_key, expired_api_key, invalid_token.
403
凭据无权执行此操作。needs_api_key:沙箱令牌不能执行此操作。
404
请求中指定的对象不存在。sandbox_not_found:沙箱不存在。
409
某个对象的状态不允许此操作。moved:本节点已把沙箱交给另一个节点,现在由那个节点持有并在那里撤销令牌(to、epoch);too_many_revoked_tokens:沙箱逐个撤销的令牌已达上限(1,000 个尚未过期的):请改为撤销全部令牌;idempotency_key_reused:该键已与另一个请求体一起使用过;idempotency_in_progress:使用该键的第一个请求仍在执行。
default
其他任何失败,格式相同。internal (500):节点出错;错误信息不会多说,节点日志中以请求的 id 记录了原因。unavailable(503,可重试):no_capacity,节点的网络槽位都已占用;memory_full,调用需要启动的虚拟机(创建、唤醒、从磁盘启动、恢复、回滚、构建)在宿主机内存中放不下(还要算上已承诺给其上运行的虚拟机的内存),也没有暂停或空闲的虚拟机可以让其休眠来腾出空间(节点的 memory);drive_full,调用需要构建模板,而节点的数据盘没有空间(节点的 drive);unavailable,节点正在关闭、沙箱 10 分钟后仍处于 starting、沙箱没有响应,或者沙箱正在迁到本节点(带 Retry-After: 1);fenced,节点的租约隔离了该沙箱 (Node.lease)。moved (409):沙箱已迁到另一个节点,由 to 指明。