From 4245f1070ad4ce03bf140b7beb9dc127a6ce9bf3 Mon Sep 17 00:00:00 2001
From: shamoon <4887959+shamoon@users.noreply.github.com>
Date: Wed, 7 Jun 2023 14:06:23 -0700
Subject: [PATCH] fix docker service discovery, code styling

---
 src/utils/config/service-helpers.js | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/src/utils/config/service-helpers.js b/src/utils/config/service-helpers.js
index 00c236eb..95d4790b 100644
--- a/src/utils/config/service-helpers.js
+++ b/src/utils/config/service-helpers.js
@@ -62,13 +62,10 @@ export async function servicesFromDocker() {
 
   const serviceServers = await Promise.all(
     Object.keys(servers).map(async (serverName) => {
-      const isSwarm = servers[serverName].swarm ?? false;
-
       try {
-        const listProperties = { all: true };
-        const labelProperty = (isSwarm) ? 'Spec.Labels' : 'Labels';
-        const nameProperty = (isSwarm) ? 'Spec.Name' : 'Name[0]';
+        const isSwarm = !!servers[serverName].swarm;
         const docker = new Docker(getDockerArguments(serverName).conn);
+        const listProperties = { all: true };
         const containers = await ((isSwarm) ? docker.listServices(listProperties) : docker.listContainers(listProperties));
 
         // bad docker connections can result in a <Buffer ...> object?
@@ -79,18 +76,19 @@ export async function servicesFromDocker() {
 
         const discovered = containers.map((container) => {
           let constructedService = null;
-          const labels = shvl.get(container, labelProperty);
+          const containerLabels = isSwarm ? shvl.get(container, 'Spec.Labels') : container.Labels;
+          const containerName = isSwarm ? shvl.get(container, 'Spec.Name') : container.Names[0];
 
-          Object.keys(labels).forEach((label) => {
+          Object.keys(containerLabels).forEach((label) => {
             if (label.startsWith("homepage.")) {
               if (!constructedService) {
                 constructedService = {
-                  container: shvl.get(container, nameProperty).replace(/^\//, ""),
+                  container: containerName.replace(/^\//, ""),
                   server: serverName,
                   type: 'service'
                 };
               }
-              shvl.set(constructedService, label.replace("homepage.", ""), substituteEnvironmentVars(labels[label]));
+              shvl.set(constructedService, label.replace("homepage.", ""), substituteEnvironmentVars(containerLabels[label]));
             }
           });