wadebug/wa_actions/implementations/check_webapp_port.py (36 lines of code) (raw):

# Copyright (c) Facebook, Inc. and its affiliates. # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. from __future__ import absolute_import, division, print_function, unicode_literals from wadebug import results from wadebug.wa_actions import docker_utils from wadebug.wa_actions.base import WAAction WEBAPP_PRIVATE_PORT = 443 WEBAPP_PRIVATE_PORT_PROTOCOL = "tcp" class CheckWebappPortAction(WAAction): user_facing_name = "check_webapp_port" short_description = "Check if webapp maps container port {} to host".format( WEBAPP_PRIVATE_PORT ) @classmethod def _run(cls, config, *args, **kwargs): running_waweb_containers = docker_utils.get_running_waweb_containers() short_error_message = "Check webapp port failed" if not running_waweb_containers: return results.Problem( cls, short_error_message, "There is no waweb container running", "Please check results from other actions to diagnose", ) waweb_container = running_waweb_containers[0] port_bindings = docker_utils.get_container_port_bindings(waweb_container) for key in port_bindings: if key == "{}/{}".format(WEBAPP_PRIVATE_PORT, WEBAPP_PRIVATE_PORT_PROTOCOL): return results.OK(cls) return results.Problem( cls, short_error_message, "Port {} inside the webapp container needs to be mapped to host".format( WEBAPP_PRIVATE_PORT ), "Please start the waweb container with port binding: " '\nports:\n\t- [Public Port]:{}"'.format(WEBAPP_PRIVATE_PORT), )