Add starting addon state when we wait for healthcheck

This commit is contained in:
Johannes Zellner
2018-11-22 21:54:31 +01:00
parent f54ab11f18
commit e2debe3c39

View File

@@ -26,8 +26,9 @@ exports = module.exports = {
_setupOauth: setupOauth,
_teardownOauth: teardownOauth,
ADDON_STATUS_STARTING: 'starting', // container up, waiting for healthcheck
ADDON_STATUS_ACTIVE: 'active',
ADDON_STATUS_INACTIVE: 'inactive'
ADDON_STATUS_STOPPED: 'stopped'
};
var accesscontrol = require('./accesscontrol.js'),
@@ -271,14 +272,14 @@ function statusContainerAddon(addonName, addonTokenName, callback) {
assert.strictEqual(typeof callback, 'function');
getAddonDetails(addonName, addonTokenName, function (error, result) {
if (error && error.reason === AddonsError.NOT_ACTIVE) return callback(null, { status: exports.ADDON_STATUS_INACTIVE });
if (error && error.reason === AddonsError.NOT_ACTIVE) return callback(null, { status: exports.ADDON_STATUS_STOPPED });
if (error) return callback(error);
request.get(`https://${result.ip}:3000/healthcheck?access_token=${result.token}`, { json: true, rejectUnauthorized: false }, function (error, response) {
if (error) return callback(null, { status: exports.ADDON_STATUS_INACTIVE, error: `Error waiting for ${addonName}: ${error.message}` });
if (response.statusCode !== 200 || !response.body.status) return callback(null, { status: exports.ADDON_STATUS_INACTIVE, error: `Error waiting for ${addonName}. Status code: ${response.statusCode} message: ${response.body.message}` });
if (error) return callback(null, { status: exports.ADDON_STATUS_STARTING, error: `Error waiting for ${addonName}: ${error.message}` });
if (response.statusCode !== 200 || !response.body.status) return callback(null, { status: exports.ADDON_STATUS_STARTING, error: `Error waiting for ${addonName}. Status code: ${response.statusCode} message: ${response.body.message}` });
callback(null, { status: result.state.Running ? exports.ADDON_STATUS_ACTIVE : exports.ADDON_STATUS_INACTIVE });
callback(null, { status: result.state.Running ? exports.ADDON_STATUS_ACTIVE : exports.ADDON_STATUS_STOPPED });
});
});
}
@@ -402,7 +403,7 @@ function getLogs(addonName, options, callback) {
return JSON.stringify({
realtimeTimestamp: timestamp * 1000,
message: message,
source: addon
source: addonName
}) + '\n';
});
@@ -826,10 +827,10 @@ function statusEmail(callback) {
assert.strictEqual(typeof callback, 'function');
docker.inspect('mail', function (error, result) {
if (error && error.reason === DockerError.NOT_FOUND) return callback(null, { status: exports.ADDON_STATUS_INACTIVE });
if (error && error.reason === DockerError.NOT_FOUND) return callback(null, { status: exports.ADDON_STATUS_STOPPED });
if (error) return callback(new AddonsError(AddonsError.INTERNAL_ERROR, error));
callback(null, { status: result.State.Running ? exports.ADDON_STATUS_ACTIVE : exports.ADDON_STATUS_INACTIVE });
callback(null, { status: result.State.Running ? exports.ADDON_STATUS_ACTIVE : exports.ADDON_STATUS_STOPPED });
});
}
@@ -1675,6 +1676,6 @@ function statusDocker(callback) {
assert.strictEqual(typeof callback, 'function');
docker.ping(function (error) {
callback(null, { status: error ? exports.ADDON_STATUS_INACTIVE: exports.ADDON_STATUS_ACTIVE });
callback(null, { status: error ? exports.ADDON_STATUS_STOPPED: exports.ADDON_STATUS_ACTIVE });
});
}