added yaml file variable for swarm mode checks

pull/660/head
Vinay Dawani 1 year ago
parent f51e755216
commit fb883c7b27

@ -14,7 +14,8 @@ export default async function handler(req, res) {
}
try {
const docker = new Docker(getDockerArguments(containerServer));
const dockerArgs = getDockerArguments(containerServer)
const docker = new Docker(dockerArgs.conn);
const containers = await docker.listContainers({
all: true,
});
@ -41,27 +42,30 @@ export default async function handler(req, res) {
return;
}
// Try with a service deployed in Docker Swarm
const tasks = await docker.listTasks({
filters: {
service: [containerName],
// A service can have several offline containers, so we only look for an active one.
'desired-state': ['running']
}
}).catch(() => []);
// Try with a service deployed in Docker Swarm, if enabled
if (dockerArgs.swarm) {
const tasks = await docker.listTasks({
filters: {
service: [containerName],
// A service can have several offline containers, so we only look for an active one.
"desired-state": ["running"],
},
})
.catch(() => []);
// For now we are only interested in the first one (in case replicas > 1).
// TODO: Show the result for all replicas/containers?
const taskContainerId = tasks.at(0)?.Status?.ContainerStatus?.ContainerID
// For now we are only interested in the first one (in case replicas > 1).
// TODO: Show the result for all replicas/containers?
const taskContainerId = tasks.at(0)?.Status?.ContainerStatus?.ContainerID;
if (taskContainerId) {
const container = docker.getContainer(taskContainerId);
const stats = await container.stats({ stream: false });
if (taskContainerId) {
const container = docker.getContainer(taskContainerId);
const stats = await container.stats({ stream: false });
res.status(200).json({
stats,
});
return;
res.status(200).json({
stats,
});
return;
}
}
res.status(200).send({

@ -13,7 +13,8 @@ export default async function handler(req, res) {
}
try {
const docker = new Docker(getDockerArguments(containerServer));
const dockerArgs = getDockerArguments(containerServer);
const docker = new Docker(dockerArgs.conn);
const containers = await docker.listContainers({
all: true,
});
@ -35,30 +36,33 @@ export default async function handler(req, res) {
return res.status(200).json({
status: info.State.Status,
health: info.State.Health?.Status
health: info.State.Health?.Status,
});
}
const tasks = await docker.listTasks({
filters: {
service: [containerName],
// A service can have several offline containers, we only look for an active one.
'desired-state': ['running']
}
}).catch(() => []);
if (dockerArgs.swarm) {
const tasks = await docker.listTasks({
filters: {
service: [containerName],
// A service can have several offline containers, we only look for an active one.
"desired-state": ["running"],
},
})
.catch(() => []);
// For now we are only interested in the first one (in case replicas > 1).
// TODO: Show the result for all replicas/containers?
const taskContainerId = tasks.at(0)?.Status?.ContainerStatus?.ContainerID
// For now we are only interested in the first one (in case replicas > 1).
// TODO: Show the result for all replicas/containers?
const taskContainerId = tasks.at(0)?.Status?.ContainerStatus?.ContainerID;
if (taskContainerId) {
const container = docker.getContainer(taskContainerId);
const info = await container.inspect();
if (taskContainerId) {
const container = docker.getContainer(taskContainerId);
const info = await container.inspect();
return res.status(200).json({
status: info.State.Status,
health: info.State.Health?.Status
});
return res.status(200).json({
status: info.State.Status,
health: info.State.Health?.Status,
});
}
}
return res.status(200).send({

@ -22,11 +22,11 @@ export default function getDockerArguments(server) {
if (servers[server]) {
if (servers[server].socket) {
return { socketPath: servers[server].socket };
return { conn: { socketPath: servers[server].socket }, swarm: servers[server].swarm };
}
if (servers[server].host) {
return { host: servers[server].host, port: servers[server].port || null };
return { conn: { host: servers[server].host, port: servers[server].port || null }, swarm: servers[server].swarm };
}
return servers[server];

@ -44,7 +44,7 @@ export async function servicesFromDocker() {
const serviceServers = await Promise.all(
Object.keys(servers).map(async (serverName) => {
const docker = new Docker(getDockerArguments(serverName));
const docker = new Docker(getDockerArguments(serverName).conn);
const containers = await docker.listContainers({
all: true,
});
@ -167,4 +167,4 @@ export default async function getServiceWidget(group, service) {
}
return false;
}
}

Loading…
Cancel
Save