mirror of
				https://github.com/gethomepage/homepage.git
				synced 2025-11-04 03:27:02 -05:00 
			
		
		
		
	Better error output for docker integration
This commit is contained in:
		
							parent
							
								
									c74b46712b
								
							
						
					
					
						commit
						c8116fc9e8
					
				@ -1,16 +1,18 @@
 | 
				
			|||||||
import Docker from "dockerode";
 | 
					import Docker from "dockerode";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import getDockerArguments from "utils/config/docker";
 | 
					import getDockerArguments from "utils/config/docker";
 | 
				
			||||||
 | 
					import createLogger from "utils/logger";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const logger = createLogger("dockerStatsService");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default async function handler(req, res) {
 | 
					export default async function handler(req, res) {
 | 
				
			||||||
  const { service } = req.query;
 | 
					  const { service } = req.query;
 | 
				
			||||||
  const [containerName, containerServer] = service;
 | 
					  const [containerName, containerServer] = service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (!containerName && !containerServer) {
 | 
					  if (!containerName && !containerServer) {
 | 
				
			||||||
    res.status(400).send({
 | 
					    return res.status(400).send({
 | 
				
			||||||
      error: "docker query parameters are required",
 | 
					      error: "docker query parameters are required",
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
    return;
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  try {
 | 
					  try {
 | 
				
			||||||
@ -23,10 +25,9 @@ export default async function handler(req, res) {
 | 
				
			|||||||
    // bad docker connections can result in a <Buffer ...> object?
 | 
					    // bad docker connections can result in a <Buffer ...> object?
 | 
				
			||||||
    // in any case, this ensures the result is the expected array
 | 
					    // in any case, this ensures the result is the expected array
 | 
				
			||||||
    if (!Array.isArray(containers)) {
 | 
					    if (!Array.isArray(containers)) {
 | 
				
			||||||
      res.status(500).send({
 | 
					      return res.status(500).send({
 | 
				
			||||||
        error: "query failed",
 | 
					        error: "query failed",
 | 
				
			||||||
      });
 | 
					      });
 | 
				
			||||||
      return;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const containerNames = containers.map((container) => container.Names[0].replace(/^\//, ""));
 | 
					    const containerNames = containers.map((container) => container.Names[0].replace(/^\//, ""));
 | 
				
			||||||
@ -36,10 +37,9 @@ export default async function handler(req, res) {
 | 
				
			|||||||
      const container = docker.getContainer(containerName);
 | 
					      const container = docker.getContainer(containerName);
 | 
				
			||||||
      const stats = await container.stats({ stream: false });
 | 
					      const stats = await container.stats({ stream: false });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      res.status(200).json({
 | 
					      return res.status(200).json({
 | 
				
			||||||
        stats,
 | 
					        stats,
 | 
				
			||||||
      });
 | 
					      });
 | 
				
			||||||
      return;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Try with a service deployed in Docker Swarm, if enabled
 | 
					    // Try with a service deployed in Docker Swarm, if enabled
 | 
				
			||||||
@ -61,19 +61,19 @@ export default async function handler(req, res) {
 | 
				
			|||||||
        const container = docker.getContainer(taskContainerId);
 | 
					        const container = docker.getContainer(taskContainerId);
 | 
				
			||||||
        const stats = await container.stats({ stream: false });
 | 
					        const stats = await container.stats({ stream: false });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        res.status(200).json({
 | 
					        return res.status(200).json({
 | 
				
			||||||
          stats,
 | 
					          stats,
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
        return;
 | 
					 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    res.status(200).send({
 | 
					    return res.status(200).send({
 | 
				
			||||||
      error: "not found",
 | 
					      error: "not found",
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
  } catch {
 | 
					  } catch (e) {
 | 
				
			||||||
    res.status(500).send({
 | 
					    logger.error(e);
 | 
				
			||||||
      error: {message: "Unknown error"},
 | 
					    return res.status(500).send({
 | 
				
			||||||
 | 
					      error: {message: e?.message ?? "Unknown error"},
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,9 @@
 | 
				
			|||||||
import Docker from "dockerode";
 | 
					import Docker from "dockerode";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import getDockerArguments from "utils/config/docker";
 | 
					import getDockerArguments from "utils/config/docker";
 | 
				
			||||||
 | 
					import createLogger from "utils/logger";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const logger = createLogger("dockerStatusService");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default async function handler(req, res) {
 | 
					export default async function handler(req, res) {
 | 
				
			||||||
  const { service } = req.query;
 | 
					  const { service } = req.query;
 | 
				
			||||||
@ -68,9 +71,10 @@ export default async function handler(req, res) {
 | 
				
			|||||||
    return res.status(200).send({
 | 
					    return res.status(200).send({
 | 
				
			||||||
      error: "not found",
 | 
					      error: "not found",
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
  } catch {
 | 
					  } catch (e) {
 | 
				
			||||||
 | 
					    logger.error(e);
 | 
				
			||||||
    return res.status(500).send({
 | 
					    return res.status(500).send({
 | 
				
			||||||
      error: "unknown error",
 | 
					      error: {message: e?.message ?? "Unknown error"},
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user