Skip to content

Commit

Permalink
Promisify docker
Browse files Browse the repository at this point in the history
  • Loading branch information
ishitatsuyuki committed Apr 17, 2018
1 parent e7ffdd3 commit c2a1bcf
Show file tree
Hide file tree
Showing 3 changed files with 222 additions and 364 deletions.
92 changes: 43 additions & 49 deletions api/hosts-api.js
Original file line number Diff line number Diff line change
Expand Up @@ -292,7 +292,7 @@ hostAPI.get('/images', {
title: 'List host images',
description: 'List the Docker images available on this host.',

handler: (request, response) => {
handler: async (request, response) => {
const { user } = request;
if (!users.isAdmin(user)) {
response.statusCode = 404; // Not Found
Expand All @@ -307,15 +307,15 @@ hostAPI.get('/images', {
return;
}

docker.listImages({ host: hostname }, (error, images) => {
if (error) {
log('[fail] host images', error);
response.statusCode = 503; // Service Unavailable
response.json({ error: 'Host unreachable' }, null, 2);
return;
}
try {
const images = await docker.listImages({ host: hostname });

response.json(images, null, 2);
});
} catch (error) {
log('[fail] host images', error);
response.statusCode = 503; // Service Unavailable
response.json({ error: 'Host unreachable' }, null, 2);
}
},

examples: [],
Expand All @@ -324,7 +324,7 @@ hostAPI.get('/images', {
hostAPI.get('/version', {
title: 'Show host version',

handler: (request, response) => {
handler: async (request, response) => {
const { user } = request;
if (!users.isAdmin(user)) {
response.statusCode = 404; // Not Found
Expand All @@ -339,15 +339,14 @@ hostAPI.get('/version', {
return;
}

docker.version({ host: hostname }, (error, version) => {
if (error) {
log('[fail] host version', error);
response.statusCode = 503; // Service Unavailable
response.json({ error: 'Host unreachable' }, null, 2);
return;
}
try {
const version = await docker.version({ host: hostname });
response.json({ docker: version }, null, 2);
});
} catch (error) {
log('[fail] host version', error);
response.statusCode = 503; // Service Unavailable
response.json({ error: 'Host unreachable' }, null, 2);
}
},

examples: [{
Expand Down Expand Up @@ -375,7 +374,7 @@ containersAPI.get({
title: 'List containers',
description: 'List all Docker containers on this host.',

handler: (request, response) => {
handler: async (request, response) => {
const { user } = request;
if (!users.isAdmin(user)) {
response.statusCode = 404; // Not Found
Expand All @@ -390,15 +389,14 @@ containersAPI.get({
return;
}

docker.listContainers({ host: hostname }, (error, containers) => {
if (error) {
log('[fail] host containers', error);
response.statusCode = 503; // Service Unavailable
response.json({ error: 'Host unreachable' }, null, 2);
return;
}
try {
const containers = await docker.listContainers({ host: hostname });
response.json(containers, null, 2);
});
} catch (error) {
log('[fail] host containers', error);
response.statusCode = 503; // Service Unavailable
response.json({ error: 'Host unreachable' }, null, 2);
}
},

examples: [],
Expand All @@ -407,7 +405,7 @@ containersAPI.get({
containersAPI.put({
title: 'Create a container',

handler (request, response) {
async handler (request, response) {
const { user } = request;
if (!user) {
response.statusCode = 403; // Forbidden
Expand All @@ -422,17 +420,15 @@ containersAPI.put({
return;
}

machines.spawn(user, projectId, (error, machine) => {
if (error) {
log('[fail] could not spawn machine', error);
response.statusCode = 500; // Internal Server Error
response.json({ error: 'Could not create new container' }, null, 2);
return;
}

try {
const machine = await machines.spawn(user, projectId);
response.statusCode = 201; // Created
response.json({ container: machine.docker.container }, null, 2);
});
} catch (error) {
log('[fail] could not spawn machine', error);
response.statusCode = 500; // Internal Server Error
response.json({ error: 'Could not create new container' }, null, 2);
}
},

examples: []
Expand Down Expand Up @@ -581,10 +577,10 @@ containerAPI.delete({
containerAPI.get('/changes', {
title: 'List changed files in a container',
description:
'List all files that were modified (Kind: 0), added (1) or deleted (2) ' +
'in a given Docker container.',
'List all files that were modified (Kind: 0), added (1) or deleted (2) ' +
'in a given Docker container.',

handler: (request, response) => {
handler: async (request, response) => {
const { user } = request;
if (!user) {
response.statusCode = 403; // Forbidden
Expand All @@ -609,16 +605,14 @@ containerAPI.get('/changes', {
}

const parameters = { host: hostname, container };
docker.listChangedFilesInContainer(parameters, (error, changedFiles) => {
if (error) {
log('[fail] container changes', error);
response.statusCode = 503; // Service Unavailable
response.json({ error: 'Host unreachable' }, null, 2);
return;
}

try {
const changedFiles = await docker.listChangedFilesInContainer(parameters);
response.json(changedFiles, null, 2);
});
} catch (error) {
log('[fail] container changes', error);
response.statusCode = 503; // Service Unavailable
response.json({ error: 'Host unreachable' }, null, 2);
}
},

examples: [{
Expand Down
Loading

0 comments on commit c2a1bcf

Please sign in to comment.