Skip to content

Commit 0a1c765

Browse files
committed
fix(kubernetes): allow optional checks for ConfigMap and Secret access
- Updated the `createKubernetesClient` function to allow optional checks for ConfigMap and Secret access by introducing `checkConfigMapAccess` and `checkSecretAccess` options. - Adjusted the `compile-genesis` and `download-abi` commands to utilize the new client options for improved flexibility in Kubernetes interactions.
1 parent bfb9ace commit 0a1c765

File tree

3 files changed

+39
-12
lines changed

3 files changed

+39
-12
lines changed

src/cli/commands/compile-genesis/compile-genesis.command.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,9 @@ const compileGenesis = async ({
194194
genesisConfigMapName,
195195
outputPath,
196196
}: CompileGenesisOptions): Promise<void> => {
197-
const context = await createKubernetesClient();
197+
const context = await createKubernetesClient({
198+
checkSecretAccess: false,
199+
});
198200
const { namespace } = context;
199201

200202
const genesisConfig = await waitForGenesisConfig(

src/cli/commands/download-abi/download-abi.command.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,10 @@ const fetchAbiConfigMaps = async (
149149
};
150150

151151
const defaultDependencies: DownloadAbiDependencies = {
152-
createContext: createKubernetesClient,
152+
createContext: () =>
153+
createKubernetesClient({
154+
checkSecretAccess: false,
155+
}),
153156
};
154157

155158
const downloadAbi = async (

src/cli/integrations/kubernetes/kubernetes.client.ts

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@ type KubernetesClient = {
1818
namespace: string;
1919
};
2020

21+
type KubernetesClientOptions = {
22+
checkConfigMapAccess?: boolean;
23+
checkSecretAccess?: boolean;
24+
};
25+
2126
type ConfigMapEntrySpec = {
2227
key: string;
2328
name: string;
@@ -127,7 +132,10 @@ const getStatusCode = (error: unknown): number | undefined => {
127132
return;
128133
};
129134

130-
const createKubernetesClient = async (): Promise<KubernetesClient> => {
135+
const createKubernetesClient = async (
136+
options: KubernetesClientOptions = {}
137+
): Promise<KubernetesClient> => {
138+
const { checkConfigMapAccess = true, checkSecretAccess = true } = options;
131139
Bun.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
132140
const kubeConfig = new KubeConfig();
133141
try {
@@ -153,16 +161,25 @@ const createKubernetesClient = async (): Promise<KubernetesClient> => {
153161
}
154162

155163
const client = kubeConfig.makeApiClient(CoreV1Api);
156-
try {
157-
await Promise.all([
158-
client.listNamespacedConfigMap({ namespace, limit: 1 }),
159-
client.listNamespacedSecret({ namespace, limit: 1 }),
160-
]);
161-
} catch (error) {
162-
throw new Error(
163-
`Kubernetes permissions check failed: ${extractKubernetesError(error)}`
164+
const readinessChecks: Promise<unknown>[] = [];
165+
if (checkConfigMapAccess) {
166+
readinessChecks.push(
167+
client.listNamespacedConfigMap({ namespace, limit: 1 })
164168
);
165169
}
170+
if (checkSecretAccess) {
171+
readinessChecks.push(client.listNamespacedSecret({ namespace, limit: 1 }));
172+
}
173+
174+
if (readinessChecks.length > 0) {
175+
try {
176+
await Promise.all(readinessChecks);
177+
} catch (error) {
178+
throw new Error(
179+
`Kubernetes permissions check failed: ${extractKubernetesError(error)}`
180+
);
181+
}
182+
}
166183

167184
return { client, namespace };
168185
};
@@ -287,7 +304,12 @@ const readConfigMap = async (
287304
}
288305
};
289306

290-
export type { ConfigMapEntrySpec, KubernetesClient, SecretEntrySpec };
307+
export type {
308+
ConfigMapEntrySpec,
309+
KubernetesClient,
310+
KubernetesClientOptions,
311+
SecretEntrySpec,
312+
};
291313
export {
292314
createConfigMap,
293315
createKubernetesClient,

0 commit comments

Comments
 (0)