From 5d55e7f28cd261efb411b9e091f1417c756caf2b Mon Sep 17 00:00:00 2001 From: Kyle Squizzato Date: Wed, 4 Mar 2026 14:49:27 -0600 Subject: [PATCH] fix(clusters): Add last_scheduling_status to errors Signed-off-by: Kyle Squizzato --- package-lock.json | 33 ++++++++++++++++++++++++++------- src/clusters.ts | 8 +++++--- 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1f39134..dfbe358 100644 --- a/package-lock.json +++ b/package-lock.json @@ -69,7 +69,6 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", - "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -578,6 +577,7 @@ "os": [ "aix" ], + "peer": true, "engines": { "node": ">=18" } @@ -594,6 +594,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=18" } @@ -610,6 +611,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=18" } @@ -626,6 +628,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=18" } @@ -642,6 +645,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=18" } @@ -658,6 +662,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=18" } @@ -674,6 +679,7 @@ "os": [ "freebsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -690,6 +696,7 @@ "os": [ "freebsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -706,6 +713,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -722,6 +730,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -738,6 +747,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -754,6 +764,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -770,6 +781,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -786,6 +798,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -802,6 +815,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -818,6 +832,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -834,6 +849,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -850,6 +866,7 @@ "os": [ "netbsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -866,6 +883,7 @@ "os": [ "netbsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -882,6 +900,7 @@ "os": [ "openbsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -898,6 +917,7 @@ "os": [ "openbsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -914,6 +934,7 @@ "os": [ "openharmony" ], + "peer": true, "engines": { "node": ">=18" } @@ -930,6 +951,7 @@ "os": [ "sunos" ], + "peer": true, "engines": { "node": ">=18" } @@ -946,6 +968,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=18" } @@ -962,6 +985,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=18" } @@ -978,6 +1002,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=18" } @@ -2720,7 +2745,6 @@ "version": "20.19.25", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz", "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==", - "peer": true, "dependencies": { "undici-types": "~6.21.0" } @@ -3137,7 +3161,6 @@ "url": "https://github.com/sponsors/ai" } ], - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.8.25", "caniuse-lite": "^1.0.30001754", @@ -3631,7 +3654,6 @@ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", "license": "MIT", - "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/kossnocorp" @@ -7078,7 +7100,6 @@ "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.10.1.tgz", "integrity": "sha512-BL/Xd/T9baO6NFzoMpiMD7YUZ62R6viR5tp/MULVEnbYJXZA//kRNW7J0j1w/wXArgL0sCxhDfK5dczSKn3+cg==", "dev": true, - "peer": true, "engines": { "node": ">= 10.x" } @@ -8872,7 +8893,6 @@ "version": "10.9.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "peer": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -9222,7 +9242,6 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "dev": true, - "peer": true, "engines": { "node": ">=10.0.0" }, diff --git a/src/clusters.ts b/src/clusters.ts index 0e572a8..b990d2f 100644 --- a/src/clusters.ts +++ b/src/clusters.ts @@ -4,6 +4,7 @@ export class Cluster { name: string; id: string; status: string; + last_scheduling_status?: string; } export class ClusterVersion { @@ -177,9 +178,9 @@ export async function pollForStatus(vendorPortalApi: VendorPortalApi, clusterId: return clusterDetails; } - // Once state is "error", it will never change. So we can shortcut polling. if (clusterDetails.status === "error") { - throw new Error(`Cluster has entered error state.`); + const schedulingStatus = clusterDetails.last_scheduling_status ? `, last scheduling status: ${clusterDetails.last_scheduling_status}` : ""; + throw new Error(`Cluster has entered error state${schedulingStatus}`); } console.debug(`Cluster status is ${clusterDetails.status}, sleeping for ${sleeptimeMs / 1000} seconds`); @@ -219,7 +220,8 @@ async function getClusterDetails(vendorPortalApi: VendorPortalApi, clusterId: st return { name: body.cluster.name, id: body.cluster.id, - status: body.cluster.status + status: body.cluster.status, + last_scheduling_status: body.cluster.last_scheduling_status }; }