Skip to content

Commit 2449059

Browse files
committed
chore: improve error logging
1 parent 9a6b193 commit 2449059

File tree

7 files changed

+48
-38
lines changed

7 files changed

+48
-38
lines changed

src/commands/relay.ts

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -349,7 +349,7 @@ export class RelayCommand extends BaseCommand {
349349
try {
350350
await tasks.run();
351351
} catch (e) {
352-
throw new SoloError('Error installing relays', e);
352+
throw new SoloError(`Error deploying relay: ${e.message}`, e);
353353
} finally {
354354
await lease.release();
355355
await self.accountManager.close();
@@ -470,16 +470,10 @@ export class RelayCommand extends BaseCommand {
470470
self.logger.info("==== Running 'relay deploy' ===", {argv});
471471
self.logger.info(argv);
472472

473-
await self
474-
.deploy(argv)
475-
.then(r => {
476-
self.logger.info('==== Finished running `relay deploy`====');
477-
478-
if (!r) throw new SoloError('Error deploying relay, expected return value to be true');
479-
})
480-
.catch(err => {
481-
throw new SoloError(`Error deploying relay: ${err.message}`, err);
482-
});
473+
await self.deploy(argv).then(r => {
474+
self.logger.info('==== Finished running `relay deploy`====');
475+
if (!r) throw new SoloError('Error deploying relay, expected return value to be true');
476+
});
483477
},
484478
})
485479
.command({

src/core/config/remote/remote_config_manager.ts

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -179,10 +179,7 @@ export class RemoteConfigManager {
179179

180180
return false;
181181
} catch (e) {
182-
const newError = new SoloError('Failed to load remote config from cluster', e);
183-
// TODO: throw newError instead of showUserError()
184-
this.logger.showUserError(newError);
185-
return false;
182+
throw new SoloError('Failed to load remote config from cluster', e);
186183
}
187184
}
188185

@@ -240,10 +237,7 @@ export class RemoteConfigManager {
240237
}
241238

242239
if (!(await self.load())) {
243-
const newError = new SoloError('Failed to load remote config');
244-
// TODO throw newError instead of showUserError()
245-
self.logger.showUserError(newError);
246-
return;
240+
throw new SoloError('Failed to load remote config');
247241
}
248242
self.logger.info('Remote config loaded');
249243
if (!validate) {
@@ -392,21 +386,14 @@ export class RemoteConfigManager {
392386
.configMaps()
393387
.read(namespace, constants.SOLO_REMOTE_CONFIGMAP_NAME);
394388
if (!configMap) {
395-
// TODO throw newError instead of showUserError()
396-
const newError = new SoloError(
397-
`Remote config ConfigMap not found for namespace: ${namespace}, context: ${context}`,
398-
);
399-
this.logger.showUserError(newError);
389+
throw new SoloError(`Remote config ConfigMap not found for namespace: ${namespace}, context: ${context}`);
400390
}
401391
return configMap;
402392
} catch (e) {
403-
// TODO throw newError instead of showUserError()
404-
const newError = new SoloError(
393+
throw new SoloError(
405394
`Failed to read remote config from cluster for namespace: ${namespace}, context: ${context}`,
406395
e,
407396
);
408-
this.logger.showUserError(newError);
409-
return null;
410397
}
411398
}
412399

src/core/kube/k8_client/resources/config_map/k8_client_config_maps.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,9 @@ export class K8ClientConfigMaps implements ConfigMaps {
5353
}
5454

5555
public async read(namespace: NamespaceName, name: string): Promise<V1ConfigMap> {
56-
const {response, body} = await this.kubeClient.readNamespacedConfigMap(name, namespace.name).catch(e => e);
56+
const {response, body} = await this.kubeClient.readNamespacedConfigMap(name, namespace.name).catch(e => {
57+
throw new SoloError(`Error reading namespaced ConfigMap: ${e.message}`, e);
58+
});
5759
KubeApiResponse.check(response, ResourceOperation.READ, ResourceType.CONFIG_MAP, namespace, name);
5860
return body as V1ConfigMap;
5961
}

src/core/kube/k8_client/resources/lease/k8_client_leases.ts

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,17 +46,19 @@ export class K8ClientLeases implements Leases {
4646
spec.acquireTime = new V1MicroTime();
4747
lease.spec = spec;
4848

49-
const {response, body} = await this.coordinationApiClient
50-
.createNamespacedLease(namespace.name, lease)
51-
.catch(e => e);
49+
const {response, body} = await this.coordinationApiClient.createNamespacedLease(namespace.name, lease).catch(e => {
50+
throw new SoloError(`Error creating namespaced lease: ${e.message}`, e);
51+
});
5252

5353
this.handleKubernetesClientError(response, body, 'Failed to create namespaced lease');
5454

5555
return body as V1Lease;
5656
}
5757

5858
public async delete(namespace: NamespaceName, name: string): Promise<V1Status> {
59-
const {response, body} = await this.coordinationApiClient.deleteNamespacedLease(name, namespace.name).catch(e => e);
59+
const {response, body} = await this.coordinationApiClient.deleteNamespacedLease(name, namespace.name).catch(e => {
60+
throw new SoloError(`Error deleting namespaced lease: ${e.message}`, e);
61+
});
6062

6163
this.handleKubernetesClientError(response, body, 'Failed to delete namespaced lease');
6264

@@ -66,7 +68,9 @@ export class K8ClientLeases implements Leases {
6668
public async read(namespace: NamespaceName, leaseName: string, timesCalled?: number): Promise<any> {
6769
const {response, body} = await this.coordinationApiClient
6870
.readNamespacedLease(leaseName, namespace.name)
69-
.catch(e => e);
71+
.catch(e => {
72+
throw new SoloError(`Error reading namespaced lease: ${e.message}`, e);
73+
});
7074

7175
if (response?.statusCode === StatusCodes.INTERNAL_SERVER_ERROR && timesCalled < 4) {
7276
// could be k8s control plane has no resources available
@@ -87,7 +91,9 @@ export class K8ClientLeases implements Leases {
8791

8892
const {response, body} = await this.coordinationApiClient
8993
.replaceNamespacedLease(leaseName, namespace.name, lease)
90-
.catch(e => e);
94+
.catch(e => {
95+
throw new SoloError(`Error replacing namespaced lease: ${e.message}`, e);
96+
});
9197

9298
this.handleKubernetesClientError(response, body, 'Failed to renew namespaced lease');
9399

@@ -101,7 +107,9 @@ export class K8ClientLeases implements Leases {
101107

102108
const {response, body} = await this.coordinationApiClient
103109
.replaceNamespacedLease(lease.metadata.name, lease.metadata.namespace, lease)
104-
.catch(e => e);
110+
.catch(e => {
111+
throw new SoloError(`Error replacing namespaced lease: ${e.message}`, e);
112+
});
105113

106114
this.handleKubernetesClientError(response, body, 'Failed to transfer namespaced lease');
107115

src/core/kube/k8_client/resources/secret/k8_client_secrets.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {ResourceType} from '../../../resources/resource_type.js';
1515
import {ResourceOperation} from '../../../resources/resource_operation.js';
1616
import {Duration} from '../../../../time/duration.js';
1717
import {type SecretType} from '../../../resources/secret/secret_type.js';
18+
import {SoloError} from '../../../../errors.js';
1819

1920
export class K8ClientSecrets implements Secrets {
2021
public constructor(private readonly kubeClient: CoreV1Api) {}
@@ -64,7 +65,9 @@ export class K8ClientSecrets implements Secrets {
6465
type: string;
6566
labels: Record<string, string>;
6667
}> {
67-
const {response, body} = await this.kubeClient.readNamespacedSecret(name, namespace.name).catch(e => e);
68+
const {response, body} = await this.kubeClient.readNamespacedSecret(name, namespace.name).catch(e => {
69+
throw new SoloError(`Error reading namespaced secret: ${e.message}`, e);
70+
});
6871
KubeApiResponse.check(response, ResourceOperation.READ, ResourceType.SECRET, namespace, name);
6972
return {
7073
name: body.metadata!.name as string,

src/core/middlewares.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,22 @@ export class Middlewares {
2727
this.logger = opts.logger;
2828
}
2929

30+
public setLoggerDevFlag() {
31+
const logger = this.logger;
32+
33+
/**
34+
* @param argv - listr Argv
35+
*/
36+
return (argv: any): AnyObject => {
37+
if (argv.dev) {
38+
logger.debug('Setting logger dev flag');
39+
logger.setDevMode(argv.dev);
40+
}
41+
42+
return argv;
43+
};
44+
}
45+
3046
/**
3147
* Processes the Argv and display the command header
3248
*

src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ export async function main(argv: string[], context?: {logger: SoloLogger}) {
118118

119119
.middleware(
120120
// @ts-expect-error - TS2322: To assign middlewares
121-
[middlewares.processArgumentsAndDisplayHeader(), middlewares.loadRemoteConfig()],
121+
[middlewares.setLoggerDevFlag(), middlewares.processArgumentsAndDisplayHeader(), middlewares.loadRemoteConfig()],
122122
false, // applyBeforeValidate is false as otherwise middleware is called twice
123123
);
124124

0 commit comments

Comments
 (0)