mirror of
https://github.com/louislam/uptime-kuma.git
synced 2025-06-14 16:42:35 +02:00
remove outdated ingresses and wildcards
This commit is contained in:
parent
926bafce46
commit
5f4ab0e6bc
1 changed files with 49 additions and 5 deletions
|
@ -50,10 +50,9 @@ const findIngresses = async () => {
|
||||||
}, []);
|
}, []);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
const addMissingIngressesToDatabase = async (ingresses) => {
|
const addMissingIngressesToDatabase = async (ingresses, monitorList, ingressTag) => {
|
||||||
let monitorList = await R.find("monitor");
|
|
||||||
|
|
||||||
const domains = ingresses.reduce((domains, ingress) => {
|
let domains = ingresses.reduce((domains, ingress) => {
|
||||||
const namespace = ingress.metadata.namespace;
|
const namespace = ingress.metadata.namespace;
|
||||||
|
|
||||||
// Check TLS hosts and routes
|
// Check TLS hosts and routes
|
||||||
|
@ -89,16 +88,52 @@ const addMissingIngressesToDatabase = async (ingresses) => {
|
||||||
|
|
||||||
return domains;
|
return domains;
|
||||||
}, []);
|
}, []);
|
||||||
|
domains = domains.filter(d => !d.domain.startsWith("*"));
|
||||||
debug("Found " + domains.length + " domains");
|
debug("Found " + domains.length + " domains");
|
||||||
|
|
||||||
|
// Add missing domains
|
||||||
const missingDomains = domains.filter(domain => !monitorList.find(monitor => monitor.url.toLowerCase() === "https://" + domain.domain));
|
const missingDomains = domains.filter(domain => !monitorList.find(monitor => monitor.url.toLowerCase() === "https://" + domain.domain));
|
||||||
debug("Found " + missingDomains.length + " missing monitors");
|
debug("Found " + missingDomains.length + " missing monitors");
|
||||||
|
|
||||||
for (let domain of missingDomains) {
|
for (let domain of missingDomains) {
|
||||||
const monitor = await addMonitor(domain.domain);
|
const monitor = await addMonitor(domain.domain);
|
||||||
await addMonitorToGroup(monitor, "All Ingresses");
|
await addMonitorToGroup(monitor, "All Ingresses");
|
||||||
await addMonitorToGroup(monitor, domain.namespace);
|
await addMonitorToGroup(monitor, domain.namespace);
|
||||||
|
await addMonitorTag(monitor, ingressTag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Remove missing monitors
|
||||||
|
const missingMonitors = monitorList.filter(monitor => !domains.find(d => monitor.url.toLowerCase() === "https://" + d.domain));
|
||||||
|
debug("Found " + missingMonitors.length + " outdated ingresses to be removed");
|
||||||
|
for (let monitor of missingMonitors) {
|
||||||
|
await R.trash(monitor);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const addMonitorTag = async (monitor, tag) => {
|
||||||
|
let monitorTag = await R.findOne("monitor_tag", "tag_id = ? and monitor_id = ?", [tag.id, monitor.id]);
|
||||||
|
if (monitorTag) {
|
||||||
|
return monitorTag;
|
||||||
|
}
|
||||||
|
|
||||||
|
monitorTag = await R.dispense("monitor_tag");
|
||||||
|
monitorTag.tag_id = tag.id;
|
||||||
|
monitorTag.monitor_id = monitor.id;
|
||||||
|
monitorTag.value = "kubernetes";
|
||||||
|
await R.store(monitorTag);
|
||||||
|
|
||||||
|
return monitorTag;
|
||||||
|
};
|
||||||
|
|
||||||
|
const getIngressTag = async () => {
|
||||||
|
let tag = await R.findOne("tag", "name = ?", ["Ingress"]);
|
||||||
|
if (!tag) {
|
||||||
|
tag = await R.dispense("tag");
|
||||||
|
tag.name = "Ingress";
|
||||||
|
tag.color = "#0048ff";
|
||||||
|
await R.store(tag);
|
||||||
|
}
|
||||||
|
|
||||||
|
return tag;
|
||||||
};
|
};
|
||||||
|
|
||||||
const addMonitorToGroup = async (monitor, groupName) => {
|
const addMonitorToGroup = async (monitor, groupName) => {
|
||||||
|
@ -150,6 +185,13 @@ const addMonitor = async (domain) => {
|
||||||
return bean;
|
return bean;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const findIngressList = async (ingressTag) => {
|
||||||
|
const monitorIds = await R.getCol("SELECT monitor_id FROM monitor_tag WHERE tag_id = ?", [ingressTag.id]);
|
||||||
|
let ids = monitorIds.join(",");
|
||||||
|
let monitorList = await R.find("monitor", "id in (" + ids + ")");
|
||||||
|
return monitorList;
|
||||||
|
};
|
||||||
|
|
||||||
const main = async () => {
|
const main = async () => {
|
||||||
Database.init(args);
|
Database.init(args);
|
||||||
await Database.connect();
|
await Database.connect();
|
||||||
|
@ -157,7 +199,9 @@ const main = async () => {
|
||||||
const ingresses = await findIngresses();
|
const ingresses = await findIngresses();
|
||||||
debug("found " + ingresses.length + " ingresses!");
|
debug("found " + ingresses.length + " ingresses!");
|
||||||
|
|
||||||
await addMissingIngressesToDatabase(ingresses);
|
let ingressTag = await getIngressTag();
|
||||||
|
let monitorList = await findIngressList(ingressTag);
|
||||||
|
await addMissingIngressesToDatabase(ingresses, monitorList, ingressTag);
|
||||||
};
|
};
|
||||||
main().then(() => {
|
main().then(() => {
|
||||||
debug("Finished");
|
debug("Finished");
|
||||||
|
|
Loading…
Add table
Reference in a new issue