55 lines
1.9 KiB
JavaScript
55 lines
1.9 KiB
JavaScript
|
|
'use strict';
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Circuit Breaker 管理端点补丁
|
||
|
|
* 追加到 routes/admin.js 末尾 (在 module.exports 函数内)
|
||
|
|
*
|
||
|
|
* 用法: 部署时将此内容追加到 admin.js 的 registerAdminRoutes 函数体内
|
||
|
|
*/
|
||
|
|
|
||
|
|
// ─── 熔断器状态查看 (admin) ───
|
||
|
|
// routes['GET:/v1/admin/circuit-breaker'] = async (req, res) => {
|
||
|
|
// requireAdmin(req);
|
||
|
|
// const cbStatus = deps.circuitBreaker.getStatus();
|
||
|
|
// const cbLog = deps.circuitBreaker.getTransitionLog(20);
|
||
|
|
// json(res, 200, { ok: true, breakers: cbStatus, recentTransitions: cbLog });
|
||
|
|
// };
|
||
|
|
|
||
|
|
// ─── 熔断器重置 (admin) ───
|
||
|
|
// routes['POST:/v1/admin/circuit-breaker/reset'] = async (req, res) => {
|
||
|
|
// requireAdmin(req);
|
||
|
|
// const body = await parseJsonBody(req);
|
||
|
|
// if (body.provider) {
|
||
|
|
// deps.circuitBreaker.reset(body.provider);
|
||
|
|
// json(res, 200, { ok: true, reset: body.provider });
|
||
|
|
// } else {
|
||
|
|
// deps.circuitBreaker.resetAll();
|
||
|
|
// json(res, 200, { ok: true, reset: 'all' });
|
||
|
|
// }
|
||
|
|
// };
|
||
|
|
|
||
|
|
module.exports = function patchAdminRoutes(routes, deps) {
|
||
|
|
const { json, parseJsonBody, requireAdmin } = deps;
|
||
|
|
|
||
|
|
routes['GET:/v1/admin/circuit-breaker'] = async (req, res) => {
|
||
|
|
requireAdmin(req);
|
||
|
|
const cbStatus = deps.circuitBreaker.getStatus();
|
||
|
|
const cbLog = deps.circuitBreaker.getTransitionLog ? deps.circuitBreaker.getTransitionLog(20) : [];
|
||
|
|
json(res, 200, { ok: true, breakers: cbStatus, recentTransitions: cbLog });
|
||
|
|
};
|
||
|
|
|
||
|
|
routes['POST:/v1/admin/circuit-breaker/reset'] = async (req, res) => {
|
||
|
|
requireAdmin(req);
|
||
|
|
const body = await parseJsonBody(req);
|
||
|
|
if (body.provider) {
|
||
|
|
deps.circuitBreaker.reset(body.provider);
|
||
|
|
json(res, 200, { ok: true, reset: body.provider });
|
||
|
|
} else if (deps.circuitBreaker.resetAll) {
|
||
|
|
deps.circuitBreaker.resetAll();
|
||
|
|
json(res, 200, { ok: true, reset: 'all' });
|
||
|
|
} else {
|
||
|
|
json(res, 400, { error: '请指定 provider' });
|
||
|
|
}
|
||
|
|
};
|
||
|
|
};
|