Skip to content

Commit ab1f168

Browse files
committed
ref(scheduler): move docker port discovery to a function for cleanliness
1 parent 80cfc5b commit ab1f168

1 file changed

Lines changed: 17 additions & 11 deletions

File tree

rootfs/scheduler/__init__.py

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -528,6 +528,21 @@ def resolve_state(self, pod):
528528

529529
return states[pod['status']['phase']]
530530

531+
def _get_port(self, image):
532+
try:
533+
image = self.registry + '/' + image
534+
repo = image.split(":")
535+
# image already includes the tag, so we split it out here
536+
docker_cli = Client(version="auto")
537+
docker_cli.pull(repo[0]+":"+repo[1], tag=repo[2], insecure_registry=True)
538+
image_info = docker_cli.inspect_image(image)
539+
port = int(list(image_info['Config']['ExposedPorts'].keys())[0].split("/")[0])
540+
except Exception:
541+
logger.debug("Failed to find port for Docker image {}, defaulting to 5000".format(image)) # noqa
542+
port = 5000
543+
544+
return port
545+
531546
def _api(self, tmpl, *args):
532547
"""Return a fully-qualified Kubernetes API URL from a string template with args."""
533548
url = "/api/{}".format(self.apiversion) + tmpl.format(*args)
@@ -1007,23 +1022,14 @@ def _get_service(self, name, namespace):
10071022
return response
10081023

10091024
def _create_service(self, name, app_name, app_type, data={}, **kwargs):
1010-
docker_cli = Client(version="auto")
1011-
image = kwargs.get('image')
1012-
try:
1013-
image = self.registry + '/' + image
1014-
repo = image.split(":")
1015-
# image already includes the tag, so we split it out here
1016-
docker_cli.pull(repo[0]+":"+repo[1], tag=repo[2], insecure_registry=True)
1017-
image_info = docker_cli.inspect_image(image)
1018-
port = int(list(image_info['Config']['ExposedPorts'].keys())[0].split("/")[0])
1019-
except:
1020-
port = 5000
1025+
port = self._get_port(kwargs.get('image'))
10211026
l = {
10221027
"version": self.apiversion,
10231028
"port": port,
10241029
"type": app_type,
10251030
"name": app_name,
10261031
}
1032+
10271033
# Merge external data on to the prefined template
10281034
template = json.loads(string.Template(SERVICE_TEMPLATE).substitute(l))
10291035
data = dict_merge(template, data)

0 commit comments

Comments
 (0)