Skip to content

Commit 6ab4f12

Browse files
committed
add redis key for feature server and integration test
1 parent db8dd99 commit 6ab4f12

File tree

5 files changed

+675
-165
lines changed

5 files changed

+675
-165
lines changed

lib/cli/feature-server-config.js

Lines changed: 39 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
const runtimeConfigModule = require('./runtime-config');
2-
const runtimeConfig = runtimeConfigModule.getInstance();
32

43
function isValidIP(ip) {
54
if (!ip || typeof ip !== 'string') return false;
@@ -23,90 +22,60 @@ function isValidIP(ip) {
2322
return false;
2423
}
2524

26-
async function getDrainedServers() {
27-
const drained = await runtimeConfig.get('drainedFeatureServers');
28-
29-
if (!drained) return [];
30-
31-
if (typeof drained === 'string') {
32-
return drained.split(',').map((s) => s.trim()).filter((s) => s.length > 0);
33-
}
34-
35-
if (Array.isArray(drained)) return drained;
36-
37-
return [];
38-
}
39-
4025
async function isDrained(serverIP) {
41-
const drained = await getDrainedServers();
42-
return drained.includes(serverIP);
43-
}
44-
45-
async function drainServer(serverIP) {
4626
if (!isValidIP(serverIP)) {
47-
return {
48-
added: false,
49-
array: await getDrainedServers(),
50-
error: `Invalid IP: ${serverIP}`
51-
};
27+
return false;
5228
}
5329

54-
return await runtimeConfig.addToArray('drainedFeatureServers', serverIP);
30+
try {
31+
const runtimeConfig = runtimeConfigModule.getInstance();
32+
return await runtimeConfig.isServerDrained(serverIP);
33+
} catch {
34+
return false;
35+
}
5536
}
5637

57-
async function undrainServer(serverIP) {
58-
if (!isValidIP(serverIP)) {
59-
return {
60-
removed: false,
61-
array: await getDrainedServers(),
62-
error: `Invalid IP: ${serverIP}`
63-
};
38+
async function getDrainedServers() {
39+
try {
40+
const runtimeConfig = runtimeConfigModule.getInstance();
41+
return await runtimeConfig.getDrainedFeatureServers();
42+
} catch {
43+
return [];
6444
}
65-
66-
return await runtimeConfig.removeFromArray('drainedFeatureServers', serverIP);
6745
}
6846

69-
async function setDrainedServers(servers) {
70-
let serverList = [];
71-
72-
if (typeof servers === 'string') {
73-
serverList = servers.split(',').map((s) => s.trim()).filter((s) => s.length > 0);
74-
} else if (Array.isArray(servers)) {
75-
serverList = servers;
76-
} else {
77-
return {
78-
key: 'drainedFeatureServers',
79-
value: await getDrainedServers(),
80-
error: 'Invalid format'
81-
};
47+
async function getActiveServers() {
48+
try {
49+
const runtimeConfig = runtimeConfigModule.getInstance();
50+
return await runtimeConfig.getActiveFeatureServers();
51+
} catch {
52+
return [];
8253
}
54+
}
8355

84-
// Check all IPs are valid
85-
const badIPs = serverList.filter((ip) => !isValidIP(ip));
86-
if (badIPs.length > 0) {
87-
return {
88-
key: 'drainedFeatureServers',
89-
value: await getDrainedServers(),
90-
error: `Invalid IPs: ${badIPs.join(', ')}`
91-
};
56+
async function getAvailableServers() {
57+
try {
58+
const runtimeConfig = runtimeConfigModule.getInstance();
59+
return await runtimeConfig.getAvailableFeatureServers();
60+
} catch {
61+
return [];
9262
}
63+
}
9364

94-
return await runtimeConfig.set('drainedFeatureServers', serverList);
65+
async function getAllServersWithStatus() {
66+
try {
67+
const runtimeConfig = runtimeConfigModule.getInstance();
68+
return await runtimeConfig.getAllFeatureServersWithStatus();
69+
} catch {
70+
return { servers: [], drained: [] };
71+
}
9572
}
9673

9774
module.exports = {
98-
getDrainedServers,
99-
isDrained,
100-
drainServer,
101-
undrainServer,
102-
setDrainedServers,
10375
isValidIP,
104-
runtimeConfig,
105-
106-
// Legacy names for backward compatibility
107-
getDrainedFeatureServers: getDrainedServers,
108-
isFeatureServerDrained: isDrained,
109-
drainFeatureServer: drainServer,
110-
undrainFeatureServer: undrainServer,
111-
setDrainedFeatureServers: setDrainedServers
76+
isDrained,
77+
getDrainedServers,
78+
getActiveServers,
79+
getAvailableServers,
80+
getAllServersWithStatus
11281
};

0 commit comments

Comments
 (0)