Skip to content

Commit

Permalink
Improved logging output.
Browse files Browse the repository at this point in the history
  • Loading branch information
jeroenvermeulen committed Nov 15, 2023
1 parent d5074f2 commit 898cfaa
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 19 deletions.
4 changes: 3 additions & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,12 @@ import { BunnyOperator } from "./operator";

const operator = new BunnyOperator(logger);

logger.debug("Starting Bunny CDN Operator...");

operator
.start()
.then(() => {
logger.debug("Operator started");
logger.debug("Bunny CDN Operator started.");
})
.catch(e => logger.error("Failed to start operator", e));

Expand Down
5 changes: 3 additions & 2 deletions src/manageEdgeRule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,11 @@ const getPullZoneId = async (object: EdgeRule, customObjectsAPIClient: CustomObj
const id = await backOff(() => getPullZoneCrStatusId(name, namespace, customObjectsAPIClient), {
retry: (e, attempt) => {
if (e instanceof PullZoneNotReadyError) {
logger.debug("Pull zone not ready, retrying...", { attempt });
logger.debug("Pull Zone not ready, retrying...", { attempt });
return true;
} else {
logger.error("Pull zone was not ready after 5 attempt, giving up...", { attempt });
logger.error("Pull Zone was not ready after 5 attempt, giving up...", { attempt });
logger.debug(e); // extended error
return false;
}
},
Expand Down
7 changes: 4 additions & 3 deletions src/managePullZone.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,10 +71,11 @@ const getOriginConfig = async (
const id = await backOff(() => getStorageZoneCrStatusId(name, namespace, customObjectsAPIClient), {
retry: (e, attempt) => {
if (e instanceof StorageZoneNotReadyError) {
logger.debug("Storage zone not ready, retrying...", { attempt });
logger.debug("Storage Zone not ready, retrying...", { attempt });
return true;
} else {
logger.error("Storage zone was not ready after 5 attempt, giving up...", { attempt });
logger.error("Storage Zone was not ready after 5 attempt, giving up...", { attempt });
logger.debug(e); // extended error
return false;
}
},
Expand Down Expand Up @@ -149,7 +150,7 @@ export const handlePullZoneModification = async (
);
return { ready: true, message: "", id: Id };
} catch (e) {
logger.error("Failed to upsert pull zone:", e);
logger.error("Failed to upsert Pull Zone:", e);
return { ready: false, message: e instanceof Error ? e.message : "Unknown" };
}
};
Expand Down
4 changes: 2 additions & 2 deletions src/manageStorageZone.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ const getStorageZones = async (): Promise<Array<ApiStorageZone>> => {
const res = await axios.get<{ Items: Array<ApiStorageZone> }>("https://api.bunny.net/storagezone?page=1&perPage=1000", {
headers: bunnyAPIHeaders,
});
if (!res.data?.Items) throw new Error("Failed to fetch storage zones");
if (!res.data?.Items) throw new Error("Failed to fetch Storage Zones");
if (res.data.Items.length >= 1000) throw new Error("Too many pages, not implemented !");

return res.data.Items;
Expand All @@ -47,7 +47,7 @@ export const getOrCreateStorageZone = async (name: string, region?: string, repl
const zones = await getStorageZones();
const existingZone = zones.find(zone => zone.Name == name);
if (existingZone) {
logger.debug(`Storage zone ${name} already exists (${existingZone.Id}), skipping...`);
logger.debug(`Storage Zone ${name} already exists (${existingZone.Id}), skipping...`);
return existingZone;
} else {
try {
Expand Down
33 changes: 22 additions & 11 deletions src/operator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ export class BunnyOperator extends Operator {
}
}
} catch (err) {
logger.error(`Failed to process event for resource ${metadata?.name}: ` + (err instanceof Error ? err.message : "error unknown"));
logger.error(`Failed to process event for Edge Rule ${metadata?.name}: ` + (err instanceof Error ? err.message : "error unknown"));
logger.debug(err); // stack trace
}
});

Expand All @@ -54,7 +55,8 @@ export class BunnyOperator extends Operator {
}
}
} catch (err) {
logger.error(`Failed to process event for resource ${metadata?.name}: ` + (err instanceof Error ? err.message : "error unknown"));
logger.error(`Failed to process event for Storage Zone ${metadata?.name}: ` + (err instanceof Error ? err.message : "error unknown"));
logger.debug(err); // stack trace
}
}
);
Expand All @@ -71,93 +73,102 @@ export class BunnyOperator extends Operator {
}
}
} catch (err) {
logger.error(`Failed to process event for resource ${metadata?.name}: ` + (err instanceof Error ? err.message : "error unknown"));
logger.error(`Failed to process event for Pull Zone ${metadata?.name}: ` + (err instanceof Error ? err.message : "error unknown"));
logger.debug(err); // stack trace
}
});
}

private async onEdgeRuleModified(e: ResourceEvent): Promise<void> {
const object = e.object as EdgeRule;
const metadata = object.metadata;
logger.debug(`Processing change to Edge Rule ${object.metadata.name}...`);

if (!object.status || object.status.observedGeneration !== metadata.generation) {
// handle resource modification here
const { ready, message, id, pullZoneId } = await handleEdgeRuleModification(object, this.customObjectsAPIClient);
await this.setResourceStatus(e.meta, { observedGeneration: metadata.generation, ready, message, id, pullZoneId });
logger.debug(`Edge rule ${object.metadata.name} created/updated`);
logger.debug(`Edge Rule ${object.metadata.name} created/updated.`);
}
}

private async onEdgeRuleDeleted(e: ResourceEvent): Promise<void> {
const object = e.object as EdgeRule;
logger.debug(`Processing delete of Edge Rule ${object.metadata.name}...`);

if (object?.status?.ready) {
// do delete
if (!object.status.id || !object.status.pullZoneId) {
// this shouldn't happen
throw new Error("Failed to find edge rule ID from resource state");
throw new Error("Failed to find Edge Rule ID from resource state");
}
if (object.spec.deletionPolicy === "delete") {
await deleteEdgeRule(object.status.id, object.status.pullZoneId);
}
} else {
// ignore
}

logger.debug(`Edge rule ${object.metadata.name} deleted`);
logger.debug(`Edge Rule ${object.metadata.name} deleted.`);
}

private async onStorageZoneModified(e: ResourceEvent): Promise<void> {
const object = e.object as StorageZone;
const metadata = object.metadata;
logger.debug(`Processing change to Storage Zone ${object.metadata.name}...`);

if (!object.status || object.status.observedGeneration !== metadata.generation) {
// handle resource modification here
const { ready, message, id } = await handleStorageZoneModification(object, this.k8sApi);

await this.setResourceStatus(e.meta, { observedGeneration: metadata.generation, ready, message, id });
logger.debug(`Storage Zone ${object.metadata.name} created/updated.`);
}
}

private async onStorageZoneDeleted(e: ResourceEvent): Promise<void> {
const object = e.object as StorageZone;
logger.debug(`Processing delete of Storage Zone ${object.metadata.name}...`);

if (object?.status?.ready) {
// do delete
if (!object.status.id) {
// this shouldn't happen
throw new Error("Failed to find storage zone ID from resource state");
throw new Error("Failed to find Storage Zone ID from resource state");
}
if (object.spec.deletionPolicy === "delete") await deleteStorageZone(object.status.id);
} else {
// ignore
}
logger.debug("Storage zone deleted");
logger.debug("Storage Zone deleted.");
}

private async onPullZoneModified(e: ResourceEvent): Promise<void> {
const object = e.object as PullZone;
const metadata = object.metadata;
logger.debug(`Processing change to Pull Zone ${object.metadata.name}...`);

if (!object.status || object.status.observedGeneration !== metadata.generation) {
// handle resource modification here
const { ready, message, id } = await handlePullZoneModification(object, this.customObjectsAPIClient, this.k8sApi);
await this.setResourceStatus(e.meta, { observedGeneration: metadata.generation, ready, message, id });
logger.debug(`Pull Zone ${object.metadata.name} created/updated.`);
}
}

private async onPullZoneDeleted(e: ResourceEvent): Promise<void> {
const object = e.object as PullZone;
logger.debug(`Processing delete of Pull Zone ${object.metadata.name}...`);

if (object?.status?.ready) {
// do delete
if (!object.status.id) {
// this shouldn't happen
throw new Error("Failed to find pull zone ID from resource state");
throw new Error("Failed to find Pull Zone ID from resource state");
}
if (object.spec.deletionPolicy === "delete") await deletePullZone(object.status.id);
} else {
// ignore
}
logger.debug("pull zone deleted");
logger.debug("Pull Zone deleted.");
}
}

0 comments on commit 898cfaa

Please sign in to comment.