Skip to content
Snippets Groups Projects
Commit cc4df96f authored by Rhys Arkins's avatar Rhys Arkins
Browse files

fix: return early if docker token acquisition fails

parent a302b11a
No related branches found
No related tags found
No related merge requests found
...@@ -38,13 +38,21 @@ async function getAuthHeaders(registry, repository) { ...@@ -38,13 +38,21 @@ async function getAuthHeaders(registry, repository) {
Authorization: `Bearer ${token}`, Authorization: `Bearer ${token}`,
Accept: 'application/vnd.docker.distribution.manifest.v2+json', Accept: 'application/vnd.docker.distribution.manifest.v2+json',
}; };
} catch (err) { } catch (err) /* istanbul ignore next */ {
// istanbul ignore if if (err.statusCode === 401) {
logger.info({ registry, repository }, 'Unauthorized docker lookup');
logger.debug({
err,
message: err.message,
body: err.response ? err.response.body : undefined,
});
return null;
}
if (err.statusCode >= 500 && err.statusCode < 600) { if (err.statusCode >= 500 && err.statusCode < 600) {
logger.warn({ err }, 'docker registry failure: internal error'); logger.warn({ err }, 'docker registry failure: internal error');
throw new Error('registry-failure'); throw new Error('registry-failure');
} }
logger.info('Error obtaining docker token'); logger.warn('Error obtaining docker token');
return null; return null;
} }
} }
...@@ -56,6 +64,10 @@ async function getDigest(registry, name, tag = 'latest') { ...@@ -56,6 +64,10 @@ async function getDigest(registry, name, tag = 'latest') {
try { try {
const url = `${massagedRegistry}/v2/${repository}/manifests/${tag}`; const url = `${massagedRegistry}/v2/${repository}/manifests/${tag}`;
const headers = await getAuthHeaders(massagedRegistry, repository); const headers = await getAuthHeaders(massagedRegistry, repository);
if (!headers) {
logger.info('No docker auth found - returning');
return null;
}
headers.accept = 'application/vnd.docker.distribution.manifest.v2+json'; headers.accept = 'application/vnd.docker.distribution.manifest.v2+json';
const digest = (await got(url, { json: true, headers, timeout: 10000 })) const digest = (await got(url, { json: true, headers, timeout: 10000 }))
.headers['docker-content-digest']; .headers['docker-content-digest'];
...@@ -63,10 +75,12 @@ async function getDigest(registry, name, tag = 'latest') { ...@@ -63,10 +75,12 @@ async function getDigest(registry, name, tag = 'latest') {
return digest; return digest;
} catch (err) /* istanbul ignore next */ { } catch (err) /* istanbul ignore next */ {
if (err.statusCode === 401) { if (err.statusCode === 401) {
logger.info( logger.info({ registry, repository }, 'Unauthorized docker lookup');
{ err, body: err.response ? err.response.body : undefined, name, tag }, logger.debug({
'Lookup is unauthorized (private image)' err,
); message: err.message,
body: err.response ? err.response.body : undefined,
});
return null; return null;
} }
if (err.statusCode === 404) { if (err.statusCode === 404) {
...@@ -106,6 +120,9 @@ async function getTags(registry, name) { ...@@ -106,6 +120,9 @@ async function getTags(registry, name) {
try { try {
let url = `${massagedRegistry}/v2/${repository}/tags/list?n=10000`; let url = `${massagedRegistry}/v2/${repository}/tags/list?n=10000`;
const headers = await getAuthHeaders(massagedRegistry, repository); const headers = await getAuthHeaders(massagedRegistry, repository);
if (!headers) {
return null;
}
let tags = []; let tags = [];
let page = 1; let page = 1;
do { do {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment