Skip to content

Commit c8daf08

Browse files
committed
update logic
1 parent 2b84d85 commit c8daf08

File tree

1 file changed

+21
-22
lines changed

1 file changed

+21
-22
lines changed

svc/cycler.ts

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { shuffle } from "../util/utility";
55
const projectId = config.GOOGLE_CLOUD_PROJECT_ID;
66
const lifetime = 600;
77
const template = 'retriever-20250324';
8+
const count = 3;
89

910
async function getToken() {
1011
const tokenResponse = await axios.get("http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token", {headers: {"Metadata-Flavor": "Google"}});
@@ -13,30 +14,28 @@ async function getToken() {
1314
}
1415

1516
async function cycle() {
17+
const zonesResponse = await axios.get(`https://compute.googleapis.com/compute/v1/projects/${projectId}/zones`, { headers: { "Authorization": "Bearer " + await getToken() }});
18+
const zones = zonesResponse.data.items.map((zone: any) => zone.name);
19+
console.log(zones, zones.length);
1620
while (true) {
17-
const zonesResponse = await axios.get(`https://compute.googleapis.com/compute/v1/projects/${projectId}/zones`, { headers: { "Authorization": "Bearer " + await getToken() }});
18-
const zones = zonesResponse.data.items.map((zone: any) => zone.name);
19-
console.log(zones, zones.length);
2021
shuffle(zones);
21-
for (let i = 0; i < 3; i++) {
22-
const zone = zones[i % zones.length];
23-
const config = {
24-
"name": "retriever-" + process.hrtime.bigint(),
25-
"scheduling": {
26-
"automaticRestart": false,
27-
"instanceTerminationAction": "DELETE",
28-
"maxRunDuration": {
29-
"seconds": lifetime.toString(),
30-
},
31-
"onHostMaintenance": "TERMINATE",
32-
"provisioningModel": "SPOT"
33-
},
34-
"zone": `projects/${projectId}/zones/` + zone,
35-
};
36-
const resp = await axios.post(`https://compute.googleapis.com/compute/v1/projects/${projectId}/zones/${zone}/instances?sourceInstanceTemplate=global/instanceTemplates/${template}`, config, { headers: { "Authorization": "Bearer " + await getToken() } });
37-
console.log(resp.data);
38-
}
39-
await new Promise(resolve => setTimeout(resolve, (lifetime - 45) * 1000));
22+
const zone = zones[0];
23+
const config = {
24+
"name": "retriever-" + process.hrtime.bigint(),
25+
"scheduling": {
26+
"automaticRestart": false,
27+
"instanceTerminationAction": "DELETE",
28+
"maxRunDuration": {
29+
"seconds": lifetime.toString(),
30+
},
31+
"onHostMaintenance": "TERMINATE",
32+
"provisioningModel": "SPOT"
33+
},
34+
"zone": `projects/${projectId}/zones/` + zone,
35+
};
36+
const resp = await axios.post(`https://compute.googleapis.com/compute/v1/projects/${projectId}/zones/${zone}/instances?sourceInstanceTemplate=global/instanceTemplates/${template}`, config, { headers: { "Authorization": "Bearer " + await getToken() } });
37+
console.log(resp.data);
38+
await new Promise(resolve => setTimeout(resolve, lifetime * 1000 / count));
4039
}
4140
}
4241

0 commit comments

Comments
 (0)