ysk-server-core 1.1.17 → 1.1.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hosting/validators/adapters/avax.d.ts +1 -0
- package/dist/hosting/validators/adapters/avax.d.ts.map +1 -1
- package/dist/hosting/validators/adapters/avax.js +22 -8
- package/dist/hosting/validators/adapters/avax.js.map +1 -1
- package/dist/hosting/validators/adapters/eth-clients.d.ts +2 -0
- package/dist/hosting/validators/adapters/eth-clients.d.ts.map +1 -1
- package/dist/hosting/validators/adapters/eth-clients.js +43 -11
- package/dist/hosting/validators/adapters/eth-clients.js.map +1 -1
- package/dist/hosting/validators/adapters/eth.d.ts.map +1 -1
- package/dist/hosting/validators/adapters/eth.js +5 -2
- package/dist/hosting/validators/adapters/eth.js.map +1 -1
- package/dist/hosting/validators/adapters/near.d.ts.map +1 -1
- package/dist/hosting/validators/adapters/near.js +11 -2
- package/dist/hosting/validators/adapters/near.js.map +1 -1
- package/dist/hosting/validators/adapters/p2p-public-ip.d.ts +6 -0
- package/dist/hosting/validators/adapters/p2p-public-ip.d.ts.map +1 -0
- package/dist/hosting/validators/adapters/p2p-public-ip.js +11 -0
- package/dist/hosting/validators/adapters/p2p-public-ip.js.map +1 -0
- package/dist/hosting/validators/adapters/phase2.d.ts +10 -0
- package/dist/hosting/validators/adapters/phase2.d.ts.map +1 -1
- package/dist/hosting/validators/adapters/phase2.js +126 -7
- package/dist/hosting/validators/adapters/phase2.js.map +1 -1
- package/dist/hosting/validators/compose-runner.d.ts +4 -0
- package/dist/hosting/validators/compose-runner.d.ts.map +1 -1
- package/dist/hosting/validators/compose-runner.js +32 -0
- package/dist/hosting/validators/compose-runner.js.map +1 -1
- package/dist/hosting/validators/disk.d.ts +2 -0
- package/dist/hosting/validators/disk.d.ts.map +1 -1
- package/dist/hosting/validators/disk.js +23 -0
- package/dist/hosting/validators/disk.js.map +1 -1
- package/dist/hosting/validators/extras.d.ts +33 -1
- package/dist/hosting/validators/extras.d.ts.map +1 -1
- package/dist/hosting/validators/extras.js +163 -2
- package/dist/hosting/validators/extras.js.map +1 -1
- package/dist/hosting/validators/manager.d.ts +10 -0
- package/dist/hosting/validators/manager.d.ts.map +1 -1
- package/dist/hosting/validators/manager.js +137 -8
- package/dist/hosting/validators/manager.js.map +1 -1
- package/dist/hosting/validators/ports.js +4 -4
- package/dist/hosting/validators/ports.js.map +1 -1
- package/dist/hosting/validators/registry.d.ts +7 -1
- package/dist/hosting/validators/registry.d.ts.map +1 -1
- package/dist/hosting/validators/registry.js +14 -3
- package/dist/hosting/validators/registry.js.map +1 -1
- package/dist/hosting/validators/releases.d.ts +56 -0
- package/dist/hosting/validators/releases.d.ts.map +1 -1
- package/dist/hosting/validators/releases.js +230 -21
- package/dist/hosting/validators/releases.js.map +1 -1
- package/dist/hosting/validators/runtime-status.js +2 -2
- package/dist/hosting/validators/runtime-status.js.map +1 -1
- package/dist/hosting/validators/software-catalog.d.ts +10 -1
- package/dist/hosting/validators/software-catalog.d.ts.map +1 -1
- package/dist/hosting/validators/software-catalog.js +84 -3
- package/dist/hosting/validators/software-catalog.js.map +1 -1
- package/dist/hosting/validators/upgrade.d.ts +18 -0
- package/dist/hosting/validators/upgrade.d.ts.map +1 -1
- package/dist/hosting/validators/upgrade.js +25 -4
- package/dist/hosting/validators/upgrade.js.map +1 -1
- package/package.json +2 -2
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
6
6
|
import { join } from 'node:path';
|
|
7
7
|
import { parseVersionParts, tagIsNewer } from './versions.js';
|
|
8
|
+
import { findValidatorClient } from './registry.js';
|
|
8
9
|
export const CLIENT_RELEASES = {
|
|
9
10
|
reth: {
|
|
10
11
|
github: 'paradigmxyz/reth',
|
|
@@ -55,11 +56,11 @@ export const CLIENT_RELEASES = {
|
|
|
55
56
|
github: 'cosmos/gaia',
|
|
56
57
|
changelog: 'https://github.com/cosmos/gaia/releases',
|
|
57
58
|
},
|
|
58
|
-
sui: {
|
|
59
|
+
'sui-node': {
|
|
59
60
|
github: 'MystenLabs/sui',
|
|
60
61
|
changelog: 'https://github.com/MystenLabs/sui/releases',
|
|
61
62
|
},
|
|
62
|
-
aptos: {
|
|
63
|
+
'aptos-node': {
|
|
63
64
|
github: 'aptos-labs/aptos-core',
|
|
64
65
|
changelog: 'https://github.com/aptos-labs/aptos-core/releases',
|
|
65
66
|
},
|
|
@@ -67,10 +68,19 @@ export const CLIENT_RELEASES = {
|
|
|
67
68
|
github: 'anza-xyz/agave',
|
|
68
69
|
changelog: 'https://github.com/anza-xyz/agave/releases',
|
|
69
70
|
},
|
|
71
|
+
polkadot: {
|
|
72
|
+
github: 'paritytech/polkadot-sdk',
|
|
73
|
+
changelog: 'https://github.com/paritytech/polkadot-sdk/releases',
|
|
74
|
+
},
|
|
70
75
|
};
|
|
76
|
+
const OFFICIAL_CACHE_TTL_MS = 15 * 60_000;
|
|
77
|
+
const OFFICIAL_LIST_CAP = 12;
|
|
71
78
|
function cachePath(dataDir) {
|
|
72
79
|
return join(dataDir, 'validators', 'remote-tags.json');
|
|
73
80
|
}
|
|
81
|
+
function releasesCachePath(dataDir) {
|
|
82
|
+
return join(dataDir, 'validators', 'remote-releases.json');
|
|
83
|
+
}
|
|
74
84
|
export function loadRemoteClientTags(dataDir) {
|
|
75
85
|
const p = cachePath(dataDir);
|
|
76
86
|
if (!existsSync(p))
|
|
@@ -87,6 +97,214 @@ export function saveRemoteClientTags(dataDir, cache) {
|
|
|
87
97
|
mkdirSync(join(dataDir, 'validators'), { recursive: true });
|
|
88
98
|
writeFileSync(cachePath(dataDir), `${JSON.stringify(cache, null, 2)}\n`);
|
|
89
99
|
}
|
|
100
|
+
export function loadRemoteReleases(dataDir) {
|
|
101
|
+
const p = releasesCachePath(dataDir);
|
|
102
|
+
if (!existsSync(p))
|
|
103
|
+
return { at: '', clients: {} };
|
|
104
|
+
try {
|
|
105
|
+
const raw = JSON.parse(readFileSync(p, 'utf8'));
|
|
106
|
+
const clients = raw.clients && typeof raw.clients === 'object' ? raw.clients : {};
|
|
107
|
+
return { at: String(raw.at ?? ''), clients };
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
return { at: '', clients: {} };
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
export function saveRemoteReleases(dataDir, cache) {
|
|
114
|
+
mkdirSync(join(dataDir, 'validators'), { recursive: true });
|
|
115
|
+
writeFileSync(releasesCachePath(dataDir), `${JSON.stringify(cache, null, 2)}\n`);
|
|
116
|
+
}
|
|
117
|
+
export function dockerRegistryHost(image) {
|
|
118
|
+
const first = String(image ?? '').trim().split('/')[0] ?? '';
|
|
119
|
+
if (first.includes('.') || first.includes(':'))
|
|
120
|
+
return first;
|
|
121
|
+
return 'docker.io';
|
|
122
|
+
}
|
|
123
|
+
/** Map an official GitHub tag onto the Docker tag we can pull. Null = do not offer. */
|
|
124
|
+
export function dockerTagFromGit(clientId, gitTag, network) {
|
|
125
|
+
const meta = CLIENT_RELEASES[clientId];
|
|
126
|
+
if (!meta)
|
|
127
|
+
return null;
|
|
128
|
+
const raw = String(gitTag ?? '').trim();
|
|
129
|
+
if (!raw || raw === 'latest' || /nightly/i.test(raw))
|
|
130
|
+
return null;
|
|
131
|
+
if (clientId === 'sui-node') {
|
|
132
|
+
if (/^testnet-v\d/.test(raw)) {
|
|
133
|
+
if (network && network !== 'testnet')
|
|
134
|
+
return null;
|
|
135
|
+
return raw;
|
|
136
|
+
}
|
|
137
|
+
if (/^mainnet-v\d/.test(raw)) {
|
|
138
|
+
if (network && network !== 'mainnet')
|
|
139
|
+
return null;
|
|
140
|
+
return raw;
|
|
141
|
+
}
|
|
142
|
+
const core = normalizeGithubTag(raw);
|
|
143
|
+
if (!core)
|
|
144
|
+
return null;
|
|
145
|
+
const v = core.startsWith('v') ? core : `v${core}`;
|
|
146
|
+
if (network === 'mainnet')
|
|
147
|
+
return `mainnet-${v}`;
|
|
148
|
+
if (network === 'testnet')
|
|
149
|
+
return `testnet-${v}`;
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
if (clientId === 'aptos-node') {
|
|
153
|
+
if (/^aptos-node-v\d/.test(raw))
|
|
154
|
+
return raw;
|
|
155
|
+
const core = normalizeGithubTag(raw);
|
|
156
|
+
if (!core)
|
|
157
|
+
return null;
|
|
158
|
+
const v = core.startsWith('v') ? core : `v${core}`;
|
|
159
|
+
return `aptos-node-${v}`;
|
|
160
|
+
}
|
|
161
|
+
if (clientId === 'polkadot') {
|
|
162
|
+
return normalizeGithubTag(raw);
|
|
163
|
+
}
|
|
164
|
+
return normalizeGithubTag(raw, meta.tagPrefix);
|
|
165
|
+
}
|
|
166
|
+
export function mergeOfficialVersions(input) {
|
|
167
|
+
const byTag = new Map();
|
|
168
|
+
const pin = String(input.pin ?? '').trim();
|
|
169
|
+
if (pin) {
|
|
170
|
+
byTag.set(pin, {
|
|
171
|
+
gitTag: pin,
|
|
172
|
+
dockerTag: pin,
|
|
173
|
+
prerelease: /rc|alpha|beta|preview/i.test(pin),
|
|
174
|
+
htmlUrl: input.pinHtmlUrl ?? '',
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
for (const extra of input.extraTags ?? []) {
|
|
178
|
+
const t = String(extra ?? '').trim();
|
|
179
|
+
if (!t || byTag.has(t))
|
|
180
|
+
continue;
|
|
181
|
+
byTag.set(t, {
|
|
182
|
+
gitTag: t,
|
|
183
|
+
dockerTag: t,
|
|
184
|
+
prerelease: /rc|alpha|beta|preview/i.test(t),
|
|
185
|
+
htmlUrl: '',
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
let fetched = 0;
|
|
189
|
+
for (const item of input.fetched) {
|
|
190
|
+
if (!item.dockerTag || byTag.has(item.dockerTag))
|
|
191
|
+
continue;
|
|
192
|
+
if (fetched >= OFFICIAL_LIST_CAP)
|
|
193
|
+
break;
|
|
194
|
+
byTag.set(item.dockerTag, item);
|
|
195
|
+
fetched += 1;
|
|
196
|
+
}
|
|
197
|
+
return [...byTag.values()];
|
|
198
|
+
}
|
|
199
|
+
export async function fetchGithubReleaseList(repo, fetchFn = fetch) {
|
|
200
|
+
const url = `https://api.github.com/repos/${repo}/releases?per_page=30`;
|
|
201
|
+
const res = await fetchFn(url, {
|
|
202
|
+
headers: {
|
|
203
|
+
Accept: 'application/vnd.github+json',
|
|
204
|
+
'User-Agent': 'ysk-server-validators',
|
|
205
|
+
},
|
|
206
|
+
});
|
|
207
|
+
if (!res.ok)
|
|
208
|
+
return [];
|
|
209
|
+
const body = (await res.json());
|
|
210
|
+
return Array.isArray(body) ? body : [];
|
|
211
|
+
}
|
|
212
|
+
function parseFetchedVersions(clientId, rows, network) {
|
|
213
|
+
const out = [];
|
|
214
|
+
const seen = new Set();
|
|
215
|
+
for (const row of rows) {
|
|
216
|
+
if (row.draft)
|
|
217
|
+
continue;
|
|
218
|
+
const gitTag = String(row.tag_name ?? '').trim();
|
|
219
|
+
const dockerTag = dockerTagFromGit(clientId, gitTag, network);
|
|
220
|
+
if (!dockerTag || seen.has(dockerTag))
|
|
221
|
+
continue;
|
|
222
|
+
seen.add(dockerTag);
|
|
223
|
+
out.push({
|
|
224
|
+
gitTag,
|
|
225
|
+
dockerTag,
|
|
226
|
+
prerelease: row.prerelease === true,
|
|
227
|
+
htmlUrl: String(row.html_url ?? ''),
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
return out;
|
|
231
|
+
}
|
|
232
|
+
export async function refreshOfficialReleases(input) {
|
|
233
|
+
const prev = loadRemoteReleases(input.dataDir);
|
|
234
|
+
const age = prev.at ? Date.now() - Date.parse(prev.at) : Number.POSITIVE_INFINITY;
|
|
235
|
+
const ids = input.clientIds?.length ? input.clientIds : Object.keys(CLIENT_RELEASES);
|
|
236
|
+
if (!input.force && Number.isFinite(age) && age >= 0 && age < OFFICIAL_CACHE_TTL_MS) {
|
|
237
|
+
return prev;
|
|
238
|
+
}
|
|
239
|
+
const fetchFn = input.fetchFn ?? fetch;
|
|
240
|
+
const clients = { ...prev.clients };
|
|
241
|
+
const notesAt = new Date().toISOString();
|
|
242
|
+
for (const id of ids) {
|
|
243
|
+
const meta = CLIENT_RELEASES[id];
|
|
244
|
+
if (!meta)
|
|
245
|
+
continue;
|
|
246
|
+
try {
|
|
247
|
+
const rows = await fetchGithubReleaseList(meta.github, fetchFn);
|
|
248
|
+
const items = parseFetchedVersions(id, rows);
|
|
249
|
+
clients[id] = { at: notesAt, items };
|
|
250
|
+
}
|
|
251
|
+
catch (e) {
|
|
252
|
+
const prevClient = clients[id];
|
|
253
|
+
clients[id] = {
|
|
254
|
+
at: prevClient?.at ?? notesAt,
|
|
255
|
+
items: prevClient?.items ?? [],
|
|
256
|
+
error: e instanceof Error ? e.message : 'fetch failed',
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
const cache = { at: notesAt, clients };
|
|
261
|
+
saveRemoteReleases(input.dataDir, cache);
|
|
262
|
+
const tags = {};
|
|
263
|
+
const tagNotes = [];
|
|
264
|
+
for (const [id, row] of Object.entries(clients)) {
|
|
265
|
+
const newest = row.items[0]?.dockerTag;
|
|
266
|
+
if (newest)
|
|
267
|
+
tags[id] = newest;
|
|
268
|
+
else if (row.error)
|
|
269
|
+
tagNotes.push(`${id}: ${row.error}`);
|
|
270
|
+
}
|
|
271
|
+
saveRemoteClientTags(input.dataDir, { at: notesAt, tags, notes: tagNotes });
|
|
272
|
+
return cache;
|
|
273
|
+
}
|
|
274
|
+
export function listOfficialClientVersions(input) {
|
|
275
|
+
const clientId = String(input.clientId ?? '').trim();
|
|
276
|
+
const cat = findValidatorClient(clientId);
|
|
277
|
+
const meta = CLIENT_RELEASES[clientId];
|
|
278
|
+
const pin = cat?.tag ?? '';
|
|
279
|
+
const image = cat?.image ?? '';
|
|
280
|
+
const cache = loadRemoteReleases(input.dataDir);
|
|
281
|
+
const row = cache.clients[clientId];
|
|
282
|
+
let fetched = row?.items ?? [];
|
|
283
|
+
if (input.network) {
|
|
284
|
+
fetched = fetched.filter((item) => dockerTagFromGit(clientId, item.gitTag, input.network));
|
|
285
|
+
}
|
|
286
|
+
const versions = mergeOfficialVersions({
|
|
287
|
+
pin,
|
|
288
|
+
extraTags: input.extraTags,
|
|
289
|
+
fetched,
|
|
290
|
+
pinHtmlUrl: meta ? `https://github.com/${meta.github}/releases/tag/${pin}` : '',
|
|
291
|
+
});
|
|
292
|
+
return {
|
|
293
|
+
clientId,
|
|
294
|
+
image,
|
|
295
|
+
pin,
|
|
296
|
+
github: meta?.github ?? null,
|
|
297
|
+
changelogUrl: meta?.changelog ?? null,
|
|
298
|
+
registryHost: dockerRegistryHost(image),
|
|
299
|
+
at: row?.at ?? (cache.at || null),
|
|
300
|
+
error: row?.error ?? null,
|
|
301
|
+
versions,
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
export function allowedDockerTagsForClient(input) {
|
|
305
|
+
const listed = listOfficialClientVersions(input);
|
|
306
|
+
return new Set(listed.versions.map((v) => v.dockerTag));
|
|
307
|
+
}
|
|
90
308
|
export function normalizeGithubTag(raw, prefix) {
|
|
91
309
|
const t = String(raw ?? '').trim();
|
|
92
310
|
if (!t)
|
|
@@ -123,25 +341,16 @@ export async function fetchGithubReleaseTag(repo, fetchFn = fetch) {
|
|
|
123
341
|
return String(body.tag_name ?? '').trim() || null;
|
|
124
342
|
}
|
|
125
343
|
export async function refreshRemoteClientTags(input) {
|
|
126
|
-
const
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
notes.push(`${id}: no tag`);
|
|
137
|
-
}
|
|
138
|
-
catch (e) {
|
|
139
|
-
notes.push(`${id}: ${e instanceof Error ? e.message : 'fetch failed'}`);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
const cache = { at: new Date().toISOString(), tags, notes };
|
|
143
|
-
saveRemoteClientTags(input.dataDir, cache);
|
|
144
|
-
return cache;
|
|
344
|
+
const official = await refreshOfficialReleases({
|
|
345
|
+
dataDir: input.dataDir,
|
|
346
|
+
fetchFn: input.fetchFn,
|
|
347
|
+
force: true,
|
|
348
|
+
});
|
|
349
|
+
const tags = loadRemoteClientTags(input.dataDir);
|
|
350
|
+
const notes = Object.entries(official.clients)
|
|
351
|
+
.filter(([, row]) => row.error)
|
|
352
|
+
.map(([id, row]) => `${id}: ${row.error}`);
|
|
353
|
+
return { at: official.at, tags, notes };
|
|
145
354
|
}
|
|
146
355
|
export function changelogForClient(clientId) {
|
|
147
356
|
return CLIENT_RELEASES[clientId]?.changelog;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"releases.js","sourceRoot":"","sources":["../../../src/hosting/validators/releases.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"releases.js","sourceRoot":"","sources":["../../../src/hosting/validators/releases.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const FATAL_CONTAINER_RE = /permission denied|unexpected token|executable file not found|pull access denied|no such file|cannot allocate|fatal|error: command line|address already in use|failed to bind|not found/i;
|
|
1
|
+
const FATAL_CONTAINER_RE = /permission denied|unexpected token|executable file not found|pull access denied|no such file|cannot allocate|fatal|error: command line|address already in use|failed to bind|not found|dns error|no address associated with hostname|temporary failure in name resolution|initgenesis|nil pointer|invalid memory address|invalidssz|checkpoint state|failed to start beacon node|failed to connect to bootstrap|not connected to a minimum of 1 peer|not connected to enough stake/i;
|
|
2
2
|
const OOM_RE = /\bkilled\b|out of memory|\booms?k?ill|cannot allocate memory|exit \(137\)/i;
|
|
3
3
|
const NOFILE_RE = /too many open files|ensure_max_open_files_limit|RLIMIT_NOFILE/i;
|
|
4
4
|
/** First compose-log line that explains why a node is not healthy. */
|
|
@@ -26,7 +26,7 @@ export function isTransientValidatorProbeError(err) {
|
|
|
26
26
|
const s = String(err || '').trim();
|
|
27
27
|
if (!s)
|
|
28
28
|
return false;
|
|
29
|
-
return /rpc unreachable|unhealthy|econnrefused|econnreset|fetch failed|failed to fetch|networkerror|bad rpc|bad status|metrics unreachable|not ready|connection refused|socket hang up|timed? ?out|aborted|eai_again|unexpected end of json|unexpected token.*json|not valid json|unauthorized|forbidden|\b401\b|\b403\b|rpc auth|empty (rpc )?body/i.test(s);
|
|
29
|
+
return /rpc unreachable|unhealthy|econnrefused|econnreset|fetch failed|failed to fetch|networkerror|bad rpc|bad status|metrics unreachable|not ready|connection refused|socket hang up|timed? ?out|aborted|eai_again|unexpected end of json|unexpected token.*json|not valid json|unauthorized|forbidden|\b401\b|\b403\b|rpc auth|empty (rpc )?body|0 peers|not connected to a minimum of 1 peer|failed to connect to bootstrap/i.test(s);
|
|
30
30
|
}
|
|
31
31
|
export function deriveValidatorRuntimeStatus(input) {
|
|
32
32
|
if (input.restarting)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-status.js","sourceRoot":"","sources":["../../../src/hosting/validators/runtime-status.ts"],"names":[],"mappings":"AAMA,MAAM,kBAAkB,GACtB,
|
|
1
|
+
{"version":3,"file":"runtime-status.js","sourceRoot":"","sources":["../../../src/hosting/validators/runtime-status.ts"],"names":[],"mappings":"AAMA,MAAM,kBAAkB,GACtB,qdAAqd,CAAC;AAExd,MAAM,MAAM,GAAG,4EAA4E,CAAC;AAC5F,MAAM,SAAS,GAAG,gEAAgE,CAAC;AAEnF,sEAAsE;AACtE,MAAM,UAAU,0BAA0B,CAAC,KAAe;IACxD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAA8B;IAC/D,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,GAA8B;IAClE,OAAO,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,GAA8B;IAC3E,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,OAAO,0ZAA0Z,CAAC,IAAI,CACpa,CAAC,CACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,KAO5C;IACC,IAAI,KAAK,CAAC,UAAU;QAAE,OAAO,OAAO,CAAC;IACrC,IAAI,KAAK,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IACpC,IAAI,KAAK,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IACpC,IAAI,CAAC,KAAK,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IACrC,IAAI,KAAK,CAAC,YAAY,IAAI,IAAI,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3E,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,OAAO,8BAA8B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;IAChF,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Pinned validator client images — catalog + local presence.
|
|
3
|
-
* Pull is allowlisted to registry pins
|
|
3
|
+
* Pull is allowlisted to registry pins plus cached official tags.
|
|
4
4
|
*/
|
|
5
5
|
import { type ValidatorSoftwareImageDto, type ValidatorSoftwareReportDto } from 'ysk-server-shared';
|
|
6
6
|
import type { HostExecutor } from '../../host/executor.js';
|
|
@@ -13,6 +13,15 @@ export declare function parseValidatorImageRef(raw: string): {
|
|
|
13
13
|
export declare function pinnedValidatorImageRefs(): Set<string>;
|
|
14
14
|
export declare function isPinnedValidatorImage(ref: string): boolean;
|
|
15
15
|
export declare function listPinnedValidatorImages(): ValidatorSoftwareImageDto[];
|
|
16
|
+
/** Pin ∪ cached official Docker tags for the same image repository. */
|
|
17
|
+
export declare function isAllowedValidatorImage(ref: string, dataDir?: string): boolean;
|
|
18
|
+
export declare function isAllowedClientTag(input: {
|
|
19
|
+
clientId: string;
|
|
20
|
+
tag: string;
|
|
21
|
+
dataDir: string;
|
|
22
|
+
extraTags?: string[];
|
|
23
|
+
network?: string;
|
|
24
|
+
}): boolean;
|
|
16
25
|
export declare function collectValidatorSoftware(input: {
|
|
17
26
|
host: HostExecutor;
|
|
18
27
|
dataDir: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"software-catalog.d.ts","sourceRoot":"","sources":["../../../src/hosting/validators/software-catalog.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAEL,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAChC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"software-catalog.d.ts","sourceRoot":"","sources":["../../../src/hosting/validators/software-catalog.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAEL,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAChC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAWlE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQzF;AAED,wBAAgB,wBAAwB,IAAI,GAAG,CAAC,MAAM,CAAC,CAStD;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAI3D;AAgBD,wBAAgB,yBAAyB,IAAI,yBAAyB,EAAE,CAkBvE;AAED,uEAAuE;AACvE,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAa9E;AAWD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAaV;AAED,wBAAsB,wBAAwB,CAAC,KAAK,EAAE;IACpD,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAuEtC;AAED,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,SAAS,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,kDAuBnD"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Pinned validator client images — catalog + local presence.
|
|
3
|
-
* Pull is allowlisted to registry pins
|
|
3
|
+
* Pull is allowlisted to registry pins plus cached official tags.
|
|
4
4
|
*/
|
|
5
5
|
import { tl, } from 'ysk-server-shared';
|
|
6
6
|
import { listDockerImages, probeDockerEngine } from '../docker/manager.js';
|
|
7
7
|
import { dockerPull } from '../docker/manager.js';
|
|
8
|
-
import { listValidatorChains, suiNodeImagePins } from './registry.js';
|
|
8
|
+
import { findValidatorClient, listValidatorChains, suiNodeImagePins } from './registry.js';
|
|
9
|
+
import { allowedDockerTagsForClient, CLIENT_RELEASES, dockerRegistryHost, listOfficialClientVersions, loadRemoteReleases, } from './releases.js';
|
|
9
10
|
import { listValidatorInstances } from './store.js';
|
|
10
11
|
export function validatorImageRef(image, tag) {
|
|
11
12
|
return `${String(image).trim()}:${String(tag).trim()}`;
|
|
@@ -38,6 +39,19 @@ export function isPinnedValidatorImage(ref) {
|
|
|
38
39
|
return false;
|
|
39
40
|
return pinnedValidatorImageRefs().has(validatorImageRef(parsed.image, parsed.tag));
|
|
40
41
|
}
|
|
42
|
+
function emptySource(clientId, image) {
|
|
43
|
+
const meta = CLIENT_RELEASES[clientId];
|
|
44
|
+
return {
|
|
45
|
+
registryHost: dockerRegistryHost(image),
|
|
46
|
+
sourceGithub: meta?.github ?? null,
|
|
47
|
+
changelogUrl: meta?.changelog ?? null,
|
|
48
|
+
officialTag: null,
|
|
49
|
+
officialDockerTag: null,
|
|
50
|
+
officialAt: null,
|
|
51
|
+
officialError: null,
|
|
52
|
+
staleInstances: [],
|
|
53
|
+
};
|
|
54
|
+
}
|
|
41
55
|
export function listPinnedValidatorImages() {
|
|
42
56
|
return listValidatorChains().flatMap((chain) => chain.clients.map((client) => {
|
|
43
57
|
const ref = validatorImageRef(client.image, client.tag);
|
|
@@ -51,9 +65,56 @@ export function listPinnedValidatorImages() {
|
|
|
51
65
|
present: null,
|
|
52
66
|
size: null,
|
|
53
67
|
usedBy: [],
|
|
68
|
+
...emptySource(client.id, client.image),
|
|
54
69
|
};
|
|
55
70
|
}));
|
|
56
71
|
}
|
|
72
|
+
/** Pin ∪ cached official Docker tags for the same image repository. */
|
|
73
|
+
export function isAllowedValidatorImage(ref, dataDir) {
|
|
74
|
+
const parsed = parseValidatorImageRef(ref);
|
|
75
|
+
if (!parsed)
|
|
76
|
+
return false;
|
|
77
|
+
if (parsed.tag === 'latest' || /nightly/i.test(parsed.tag))
|
|
78
|
+
return false;
|
|
79
|
+
if (isPinnedValidatorImage(ref))
|
|
80
|
+
return true;
|
|
81
|
+
if (!dataDir)
|
|
82
|
+
return false;
|
|
83
|
+
const catalog = findValidatorClientByImage(parsed.image);
|
|
84
|
+
if (!catalog)
|
|
85
|
+
return false;
|
|
86
|
+
const allowed = allowedDockerTagsForClient({
|
|
87
|
+
clientId: catalog.clientId,
|
|
88
|
+
dataDir,
|
|
89
|
+
});
|
|
90
|
+
return allowed.has(parsed.tag);
|
|
91
|
+
}
|
|
92
|
+
function findValidatorClientByImage(image) {
|
|
93
|
+
const img = String(image ?? '').trim();
|
|
94
|
+
for (const chain of listValidatorChains()) {
|
|
95
|
+
const c = chain.clients.find((x) => x.image === img);
|
|
96
|
+
if (c)
|
|
97
|
+
return { clientId: c.id };
|
|
98
|
+
}
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
export function isAllowedClientTag(input) {
|
|
102
|
+
const tag = String(input.tag ?? '').trim();
|
|
103
|
+
if (!tag || tag === 'latest' || /nightly/i.test(tag))
|
|
104
|
+
return false;
|
|
105
|
+
const cat = findValidatorClient(input.clientId);
|
|
106
|
+
if (!cat)
|
|
107
|
+
return false;
|
|
108
|
+
if (tag === cat.tag)
|
|
109
|
+
return true;
|
|
110
|
+
const listed = listOfficialClientVersions({
|
|
111
|
+
clientId: input.clientId,
|
|
112
|
+
dataDir: input.dataDir,
|
|
113
|
+
network: input.network,
|
|
114
|
+
extraTags: input.extraTags,
|
|
115
|
+
});
|
|
116
|
+
return listed.versions.some((v) => v.dockerTag === tag);
|
|
117
|
+
}
|
|
57
118
|
export async function collectValidatorSoftware(input) {
|
|
58
119
|
const probe = await probeDockerEngine(input.host);
|
|
59
120
|
const pins = listPinnedValidatorImages();
|
|
@@ -81,13 +142,32 @@ export async function collectValidatorSoftware(input) {
|
|
|
81
142
|
}
|
|
82
143
|
}
|
|
83
144
|
const dockerKnown = probe.installed && probe.daemonActive;
|
|
145
|
+
const official = loadRemoteReleases(input.dataDir);
|
|
84
146
|
const images = pins.map((pin) => {
|
|
85
147
|
const hit = local.get(pin.ref);
|
|
148
|
+
const listed = listOfficialClientVersions({
|
|
149
|
+
clientId: pin.clientId,
|
|
150
|
+
dataDir: input.dataDir,
|
|
151
|
+
});
|
|
152
|
+
const newest = official.clients[pin.clientId]?.items[0];
|
|
153
|
+
const staleInstances = instances
|
|
154
|
+
.flatMap((inst) => Object.values(inst.clients ?? {})
|
|
155
|
+
.filter((c) => c.id === pin.clientId && c.tag !== pin.tag)
|
|
156
|
+
.map((c) => ({ id: inst.id, tag: c.tag })))
|
|
157
|
+
.filter((row, i, all) => all.findIndex((x) => x.id === row.id && x.tag === row.tag) === i);
|
|
86
158
|
return {
|
|
87
159
|
...pin,
|
|
88
160
|
present: dockerKnown ? Boolean(hit) : null,
|
|
89
161
|
size: hit?.size ?? null,
|
|
90
162
|
usedBy: usedBy.get(pin.ref) ?? [],
|
|
163
|
+
registryHost: listed.registryHost,
|
|
164
|
+
sourceGithub: listed.github,
|
|
165
|
+
changelogUrl: listed.changelogUrl,
|
|
166
|
+
officialTag: newest?.gitTag ?? null,
|
|
167
|
+
officialDockerTag: newest?.dockerTag ?? null,
|
|
168
|
+
officialAt: listed.at,
|
|
169
|
+
officialError: listed.error,
|
|
170
|
+
staleInstances,
|
|
91
171
|
};
|
|
92
172
|
});
|
|
93
173
|
return {
|
|
@@ -97,6 +177,7 @@ export async function collectValidatorSoftware(input) {
|
|
|
97
177
|
dockerVersion: probe.version,
|
|
98
178
|
composeVersion: probe.composeVersion,
|
|
99
179
|
images,
|
|
180
|
+
officialAt: official.at || null,
|
|
100
181
|
executeEnabled: input.host.executeEnabled(),
|
|
101
182
|
isRoot: input.host.isRoot(),
|
|
102
183
|
};
|
|
@@ -105,7 +186,7 @@ export async function pullPinnedValidatorImage(input) {
|
|
|
105
186
|
const raw = input.tag
|
|
106
187
|
? validatorImageRef(input.image, input.tag)
|
|
107
188
|
: String(input.image ?? '').trim();
|
|
108
|
-
if (!isPinnedValidatorImage(raw)) {
|
|
189
|
+
if (!isAllowedValidatorImage(raw, input.dataDir) && !isPinnedValidatorImage(raw)) {
|
|
109
190
|
return {
|
|
110
191
|
ok: false,
|
|
111
192
|
blocked: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"software-catalog.js","sourceRoot":"","sources":["../../../src/hosting/validators/software-catalog.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,EAAE,GAGH,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAkB,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"software-catalog.js","sourceRoot":"","sources":["../../../src/hosting/validators/software-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,24 @@ export declare function scanValidatorUpgrades(dataDir: string, remoteTags?: Reco
|
|
|
11
11
|
export declare function saveUpgradeScan(dataDir: string, offers: StoredUpgradeOffer[]): void;
|
|
12
12
|
export declare function loadUpgradeScan(dataDir: string): StoredUpgradeOffer[];
|
|
13
13
|
export declare function shouldAutoApply(policy: ValidatorUpgradePolicy, offer: ValidatorUpgradeOffer, networkKind: 'testnet' | 'mainnet'): boolean;
|
|
14
|
+
export declare function applyValidatorClientTag(input: {
|
|
15
|
+
dataDir: string;
|
|
16
|
+
host: HostExecutor;
|
|
17
|
+
spec: ValidatorInstanceDto;
|
|
18
|
+
clientId: string;
|
|
19
|
+
nextTag: string;
|
|
20
|
+
execute: boolean;
|
|
21
|
+
health?: (spec: ValidatorInstanceDto) => Promise<boolean>;
|
|
22
|
+
healthTimeoutMs?: number;
|
|
23
|
+
sleep?: (ms: number) => Promise<void>;
|
|
24
|
+
onLog?: OpsLogFn;
|
|
25
|
+
signal?: AbortSignal;
|
|
26
|
+
}): Promise<{
|
|
27
|
+
ok: boolean;
|
|
28
|
+
rolledBack: boolean;
|
|
29
|
+
notes: string[];
|
|
30
|
+
spec: ValidatorInstanceDto;
|
|
31
|
+
}>;
|
|
14
32
|
export declare function applyValidatorUpgrade(input: {
|
|
15
33
|
dataDir: string;
|
|
16
34
|
host: HostExecutor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../../src/hosting/validators/upgrade.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAWtF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAQhE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE7E,MAAM,MAAM,kBAAkB,GAAG,qBAAqB,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhF,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,oBAAoB,EAC1B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAClC,qBAAqB,GAAG,IAAI,CAuB9B;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAClC,kBAAkB,EAAE,CAQtB;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAMnF;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,EAAE,CASrE;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,sBAAsB,EAC9B,KAAK,EAAE,qBAAqB,EAC5B,WAAW,EAAE,SAAS,GAAG,SAAS,GACjC,OAAO,CAKT;AAED,wBAAsB,qBAAqB,CAAC,KAAK,EAAE;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,oBAAoB,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,GAAG,OAAO,CAAC;IACV,EAAE,EAAE,OAAO,CAAC;IACZ,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,oBAAoB,CAAC;CAC5B,CAAC,
|
|
1
|
+
{"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../../src/hosting/validators/upgrade.ts"],"names":[],"mappings":"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"}
|
|
@@ -70,10 +70,21 @@ export function shouldAutoApply(policy, offer, networkKind) {
|
|
|
70
70
|
return !offer.breaking;
|
|
71
71
|
return false;
|
|
72
72
|
}
|
|
73
|
-
export async function
|
|
74
|
-
const
|
|
75
|
-
if (!
|
|
76
|
-
return { ok:
|
|
73
|
+
export async function applyValidatorClientTag(input) {
|
|
74
|
+
const have = Object.values(input.spec.clients).find((c) => c.id === input.clientId);
|
|
75
|
+
if (!have) {
|
|
76
|
+
return { ok: false, rolledBack: false, notes: ['client not on instance'], spec: input.spec };
|
|
77
|
+
}
|
|
78
|
+
if (have.tag === input.nextTag) {
|
|
79
|
+
return { ok: true, rolledBack: false, notes: ['already on tag'], spec: input.spec };
|
|
80
|
+
}
|
|
81
|
+
const offer = {
|
|
82
|
+
clientId: input.clientId,
|
|
83
|
+
currentTag: have.tag,
|
|
84
|
+
nextTag: input.nextTag,
|
|
85
|
+
breaking: tagIsBreaking(have.tag, input.nextTag),
|
|
86
|
+
changelogUrl: changelogForClient(input.clientId),
|
|
87
|
+
};
|
|
77
88
|
const prev = input.spec;
|
|
78
89
|
const nextClients = { ...input.spec.clients };
|
|
79
90
|
for (const [k, c] of Object.entries(nextClients)) {
|
|
@@ -215,6 +226,16 @@ async function rollbackUpgrade(input) {
|
|
|
215
226
|
spec: restored,
|
|
216
227
|
};
|
|
217
228
|
}
|
|
229
|
+
export async function applyValidatorUpgrade(input) {
|
|
230
|
+
const offer = detectUpgradeForInstance(input.spec, loadRemoteClientTags(input.dataDir));
|
|
231
|
+
if (!offer)
|
|
232
|
+
return { ok: true, rolledBack: false, notes: ['no upgrade'], spec: input.spec };
|
|
233
|
+
return applyValidatorClientTag({
|
|
234
|
+
...input,
|
|
235
|
+
clientId: offer.clientId,
|
|
236
|
+
nextTag: offer.nextTag,
|
|
237
|
+
});
|
|
238
|
+
}
|
|
218
239
|
export async function runValidatorUpgradeScan(input) {
|
|
219
240
|
try {
|
|
220
241
|
await refreshRemoteClientTags({ dataDir: input.dataDir });
|