Fix with docker
This commit is contained in:
parent
c0a068c284
commit
ad18ea29d6
@ -10,6 +10,7 @@ import {
|
|||||||
servicesFromDocker,
|
servicesFromDocker,
|
||||||
cleanServiceGroups,
|
cleanServiceGroups,
|
||||||
servicesFromKubernetes,
|
servicesFromKubernetes,
|
||||||
|
findGroupByName,
|
||||||
} from "utils/config/service-helpers";
|
} from "utils/config/service-helpers";
|
||||||
import { cleanWidgetGroups, widgetsFromConfig } from "utils/config/widget-helpers";
|
import { cleanWidgetGroups, widgetsFromConfig } from "utils/config/widget-helpers";
|
||||||
|
|
||||||
@ -84,6 +85,16 @@ export async function widgetsResponse() {
|
|||||||
return configuredWidgets;
|
return configuredWidgets;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function mergeSubgroups(configuredGroups, mergedGroup) {
|
||||||
|
configuredGroups.forEach((group) => {
|
||||||
|
if (group.name === mergedGroup.name) {
|
||||||
|
group.services = mergedGroup.services;
|
||||||
|
} else if (group.groups) {
|
||||||
|
mergeSubgroups(group.groups, mergedGroup);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
export async function servicesResponse() {
|
export async function servicesResponse() {
|
||||||
let discoveredDockerServices;
|
let discoveredDockerServices;
|
||||||
let discoveredKubernetesServices;
|
let discoveredKubernetesServices;
|
||||||
@ -140,26 +151,29 @@ export async function servicesResponse() {
|
|||||||
const definedLayouts = initialSettings.layout ? Object.keys(initialSettings.layout) : null;
|
const definedLayouts = initialSettings.layout ? Object.keys(initialSettings.layout) : null;
|
||||||
|
|
||||||
mergedGroupsNames.forEach((groupName) => {
|
mergedGroupsNames.forEach((groupName) => {
|
||||||
const discoveredDockerGroup = discoveredDockerServices.find((group) => group.name === groupName) || {
|
const discoveredDockerGroup = findGroupByName(discoveredDockerServices, groupName) || {
|
||||||
services: [],
|
services: [],
|
||||||
};
|
};
|
||||||
const discoveredKubernetesGroup = discoveredKubernetesServices.find((group) => group.name === groupName) || {
|
const discoveredKubernetesGroup = findGroupByName(discoveredKubernetesServices, groupName) || {
|
||||||
services: [],
|
services: [],
|
||||||
};
|
};
|
||||||
const configuredGroup = configuredServices.find((group) => group.name === groupName) || { services: [] };
|
const configuredGroup = findGroupByName(configuredServices, groupName) || { services: [] };
|
||||||
|
|
||||||
const mergedGroup = {
|
const mergedGroup = {
|
||||||
name: groupName,
|
name: groupName,
|
||||||
services: [...discoveredDockerGroup.services, ...discoveredKubernetesGroup.services, ...configuredGroup.services]
|
services: [...discoveredDockerGroup.services, ...discoveredKubernetesGroup.services, ...configuredGroup.services]
|
||||||
.filter((service) => service)
|
.filter((service) => service)
|
||||||
.sort(compareServices),
|
.sort(compareServices),
|
||||||
groups: [...configuredGroup.groups], // TODO: do this properly
|
groups: [...configuredGroup.groups],
|
||||||
};
|
};
|
||||||
|
|
||||||
if (definedLayouts) {
|
if (definedLayouts) {
|
||||||
const layoutIndex = definedLayouts.findIndex((layout) => layout === mergedGroup.name);
|
const layoutIndex = definedLayouts.findIndex((layout) => layout === mergedGroup.name);
|
||||||
if (layoutIndex > -1) sortedGroups[layoutIndex] = mergedGroup;
|
if (layoutIndex > -1) sortedGroups[layoutIndex] = mergedGroup;
|
||||||
else unsortedGroups.push(mergedGroup);
|
else if (configuredGroup.name) {
|
||||||
|
// this is a nested group, so find the parent group and merge the services
|
||||||
|
mergeSubgroups(configuredServices, mergedGroup);
|
||||||
|
} else unsortedGroups.push(mergedGroup);
|
||||||
} else {
|
} else {
|
||||||
unsortedGroups.push(mergedGroup);
|
unsortedGroups.push(mergedGroup);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -675,12 +675,12 @@ export function cleanServiceGroups(groups) {
|
|||||||
});
|
});
|
||||||
return cleanedService;
|
return cleanedService;
|
||||||
}),
|
}),
|
||||||
type: serviceGroup.type,
|
type: serviceGroup.type || "group",
|
||||||
groups: cleanServiceGroups(serviceGroup.groups),
|
groups: serviceGroup.groups ? cleanServiceGroups(serviceGroup.groups) : [],
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
function findGroupByName(groups, name) {
|
export function findGroupByName(groups, name) {
|
||||||
for (const group of groups) {
|
for (const group of groups) {
|
||||||
if (group.name === name) {
|
if (group.name === name) {
|
||||||
return group;
|
return group;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user