Skip to content

Commit 1ebdfa8

Browse files
author
Keerthan Mala
committed
Use retry decorator to retry on exception
1 parent fdc72ca commit 1ebdfa8

2 files changed

Lines changed: 13 additions & 17 deletions

File tree

rootfs/requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,4 @@ PyYAML==3.11
1616
requests==2.10.0
1717
requests-toolbelt==0.6.0
1818
simpleflock==0.0.3
19+
retrying==1.3.3

rootfs/scheduler/__init__.py

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import requests
1414
from requests_toolbelt import user_agent
1515
from .utils import dict_merge
16+
from retrying import retry
1617

1718
from deis import __version__ as deis_version
1819

@@ -700,25 +701,19 @@ def resolve_state(self, pod):
700701

701702
return states.get(pod_state, pod_state)
702703

704+
@retry(stop_max_attempt_number=3, wait_fixed=1000)
703705
def _get_port(self, image):
704706
# try thrice to find the port before raising exception as docker-py is flaky
705-
for i in range(3):
706-
try:
707-
imagepath = self.registry + '/' + image
708-
repo = imagepath.split(":")
709-
# image already includes the tag, so we split it out here
710-
docker_cli = Client(version="auto")
711-
docker_cli.pull(repo[0]+":"+repo[1], tag=repo[2], insecure_registry=True)
712-
image_info = docker_cli.inspect_image(imagepath)
713-
if 'ExposedPorts' not in image_info['Config']:
714-
return None
715-
port = int(list(image_info['Config']['ExposedPorts'].keys())[0].split("/")[0])
716-
return port
717-
except Exception:
718-
if i == 2:
719-
raise
720-
else:
721-
continue
707+
imagepath = self.registry + '/' + image
708+
repo = imagepath.split(":")
709+
# image already includes the tag, so we split it out here
710+
docker_cli = Client(version="auto")
711+
docker_cli.pull(repo[0]+":"+repo[1], tag=repo[2], insecure_registry=True)
712+
image_info = docker_cli.inspect_image(imagepath)
713+
if 'ExposedPorts' not in image_info['Config']:
714+
return None
715+
port = int(list(image_info['Config']['ExposedPorts'].keys())[0].split("/")[0])
716+
return port
722717

723718
def _api(self, tmpl, *args):
724719
"""Return a fully-qualified Kubernetes API URL from a string template with args."""

0 commit comments

Comments
 (0)