release(v2.0.1): fix openbao container discovery, agent version API collection, console logs, cache invalidation, site status API 500, secrets filtering, and auto-group spawning

This commit is contained in:
2026-08-09 14:46:33 -04:00
parent bb744adb5e
commit 98ed99a7e9
14 changed files with 60 additions and 118 deletions
+21 -4
View File
@@ -236,7 +236,12 @@ router.get('/resources', async (req, res, next) => {
.catch(err => console.error(`provisionResourceGroups(${r.slug}) failed:`, err.message));
}));
res.json({ results: projectResources(resources, { fullMetadata: true }) });
const projected = projectResources(resources, { fullMetadata: true }).map(r => {
r.hasSecret = !!(r.metadata?.hasSecret || (r.metadata?.secretKeys && r.metadata.secretKeys.length > 0));
r.secretKeys = r.metadata?.secretKeys || [];
return r;
});
res.json({ results: projected });
} catch (err) { next(err); }
});
@@ -342,6 +347,9 @@ router.put('/resources/:id', async (req, res, next) => {
req.body.updated_by = req.user.uid;
req.body.updated_on = Date.now();
if (req.body.metadata && typeof req.body.metadata === 'object') {
req.body.metadata = { ...(r.metadata || {}), ...req.body.metadata };
}
const updated = await r.update(req.body);
@@ -728,7 +736,16 @@ router.post('/resources/:id/secrets', async (req, res, next) => {
if (!r.ok) {
return res.status(500).json({ status: 'error', message: 'failed to save secrets to OpenBao' });
}
res.json({ status: 'ok', keys: Object.keys(currentMap) });
const keys = Object.keys(currentMap);
const updatedMeta = {
...(resource.metadata || {}),
hasSecret: keys.length > 0,
secretKeys: keys
};
await resource.update({ metadata: updatedMeta }).catch(() => {});
res.json({ status: 'ok', keys });
} catch (err) { next(err); }
});
@@ -867,8 +884,8 @@ let localSiteConfig = {
router.get('/site-status', async (req, res, next) => {
try {
const sites = await Resource.findAll({ where: { kind: 'site' } });
const gateResources = await Resource.findAll({ where: { subType: 'wireguard' } });
const sites = await Resource.list({ where: { kind: 'site' } });
const gateResources = await Resource.list({ where: { subType: 'wireguard' } });
res.json({
status: 'ok',