mirror of
https://github.com/karl0ss/homepage.git
synced 2025-05-01 21:13:39 +01:00
Widgets in discovered services now work correctly
This commit is contained in:
parent
9a072cddde
commit
4d6ce1f7e2
@ -114,18 +114,17 @@ export async function servicesFromDocker() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function getUrlFromIngress(ingress) {
|
function getUrlFromIngress(ingress) {
|
||||||
let url = ingress.metadata.annotations['homepage/url'];
|
const urlHost = ingress.spec.rules[0].host;
|
||||||
if(!url) {
|
const urlPath = ingress.spec.rules[0].http.paths[0].path;
|
||||||
const urlHost = ingress.spec.rules[0].host;
|
const urlSchema = ingress.spec.tls ? 'https' : 'http';
|
||||||
const urlPath = ingress.spec.rules[0].http.paths[0].path;
|
return `${urlSchema}://${urlHost}${urlPath}`;
|
||||||
const urlSchema = ingress.spec.tls ? 'https' : 'http';
|
|
||||||
|
|
||||||
url = `${urlSchema}://${urlHost}${urlPath}`;
|
|
||||||
}
|
|
||||||
return url;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function servicesFromKubernetes() {
|
export async function servicesFromKubernetes() {
|
||||||
|
const ANNOTATION_BASE = 'gethomepage.dev';
|
||||||
|
const ANNOTATION_WIDGET_BASE = `${ANNOTATION_BASE}/widget.`;
|
||||||
|
const ANNOTATION_POD_SELECTOR = `${ANNOTATION_BASE}/pod-selector`;
|
||||||
|
|
||||||
checkAndCopyConfig("kubernetes.yaml");
|
checkAndCopyConfig("kubernetes.yaml");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -145,23 +144,23 @@ export async function servicesFromKubernetes() {
|
|||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
const services = ingressList.items
|
const services = ingressList.items
|
||||||
.filter((ingress) => ingress.metadata.annotations && ingress.metadata.annotations['gethomepage.dev/enabled'] === 'true')
|
.filter((ingress) => ingress.metadata.annotations && ingress.metadata.annotations[`${ANNOTATION_BASE}/enabled`] === 'true')
|
||||||
.map((ingress) => {
|
.map((ingress) => {
|
||||||
const constructedService = {
|
const constructedService = {
|
||||||
app: ingress.metadata.name,
|
app: ingress.metadata.name,
|
||||||
namespace: ingress.metadata.namespace,
|
namespace: ingress.metadata.namespace,
|
||||||
href: ingress.metadata.annotations['gethomepage.dev/href'] || getUrlFromIngress(ingress),
|
href: ingress.metadata.annotations[`${ANNOTATION_BASE}/href`] || getUrlFromIngress(ingress),
|
||||||
name: ingress.metadata.annotations['gethomepage.dev/name'] || ingress.metadata.name,
|
name: ingress.metadata.annotations[`${ANNOTATION_BASE}/name`] || ingress.metadata.name,
|
||||||
group: ingress.metadata.annotations['gethomepage.dev/group'] || "Kubernetes",
|
group: ingress.metadata.annotations[`${ANNOTATION_BASE}/group`] || "Kubernetes",
|
||||||
icon: ingress.metadata.annotations['gethomepage.dev/icon'] || '',
|
icon: ingress.metadata.annotations[`${ANNOTATION_BASE}/icon`] || '',
|
||||||
description: ingress.metadata.annotations['gethomepage.dev/description'] || '',
|
description: ingress.metadata.annotations[`${ANNOTATION_BASE}/description`] || '',
|
||||||
};
|
};
|
||||||
if (ingress.metadata.annotations['gethomepage.dev/pod-selector']) {
|
if (ingress.metadata.annotations[ANNOTATION_POD_SELECTOR]) {
|
||||||
constructedService.podSelector = ingress.metadata.annotations['gethomepage.dev/pod-selector'];
|
constructedService.podSelector = ingress.metadata.annotations[ANNOTATION_POD_SELECTOR];
|
||||||
}
|
}
|
||||||
Object.keys(ingress.metadata.annotations).forEach((annotation) => {
|
Object.keys(ingress.metadata.annotations).forEach((annotation) => {
|
||||||
if (annotation.startsWith("gethomepage.dev/widget/")) {
|
if (annotation.startsWith(ANNOTATION_WIDGET_BASE)) {
|
||||||
shvl.set(constructedService, annotation.replace("homepage/widget/", ""), ingress.metadata.annotations[annotation]);
|
shvl.set(constructedService, annotation.replace(`${ANNOTATION_BASE}/`, ""), ingress.metadata.annotations[annotation]);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user