From 731cc04dd20df28096afac0a333f5d7a6ba8c8fa Mon Sep 17 00:00:00 2001 From: Bo Yang Date: Fri, 9 Sep 2022 15:47:26 -0700 Subject: [PATCH] Use docker cli instead of Docker Hub v1 API Docker Hub v1 API has been removed. See https://www.docker.com/blog/docker-hub-v1-api-deprecation/ Test Plan: ``` $ python3 test.py Test.test_should_run . ---------------------------------------------------------------------- Ran 1 test in 10.634s OK ``` --- aws/hhvm1/lambdas/activities.py | 22 ++++++++++------------ aws/hhvm1/lambdas/test.py | 2 +- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/aws/hhvm1/lambdas/activities.py b/aws/hhvm1/lambdas/activities.py index 3d87279..0991b83 100644 --- a/aws/hhvm1/lambdas/activities.py +++ b/aws/hhvm1/lambdas/activities.py @@ -9,7 +9,7 @@ from urllib import request import common - +import subprocess class Activity: # Subclasses must override these. @@ -228,20 +228,18 @@ class PublishDockerImages(Activity): def task_env(self): return {'DOCKER_ONLY': '1'} - def docker_tags(self, repo): - return { - tag['name'] for tag in json.loads( - request - .urlopen(f'https://index.docker.io/v1/repositories/hhvm/{repo}/tags') - .read() - .decode('ascii') - ) - } + def is_docker_tag_absent(self, repo): + docker_subprocess = subprocess.run(('docker', 'manifest', 'inspect', f'hhvm/hhvm:{self.version()}'), capture_output=True) + if docker_subprocess.returncode == 1 and docker_subprocess.stderr.startswith(b'no such manifest'): + return True + else: + docker_subprocess.check_returncode() + return False def should_run(self): return ( - self.version() not in self.docker_tags('hhvm') or - self.version() not in self.docker_tags('hhvm-proxygen') + self.is_docker_tag_absent('hhvm') or + self.is_docker_tag_absent('hhvm-proxygen') ) diff --git a/aws/hhvm1/lambdas/test.py b/aws/hhvm1/lambdas/test.py index c52e328..e9d7272 100755 --- a/aws/hhvm1/lambdas/test.py +++ b/aws/hhvm1/lambdas/test.py @@ -286,7 +286,7 @@ def test_ec2_params(self): ) def test_should_run(self): - past = (date.today() - timedelta(days=2)).strftime('%Y.%m.%d') + past = (date.today() - timedelta(days=42)).strftime('%Y.%m.%d') future = (date.today() + timedelta(days=2)).strftime('%Y.%m.%d') self.assertEqual(