wadebug/wa_actions/implementations/check_db_settings_exist.py (35 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 collections import defaultdict
from wadebug import results
from wadebug.wa_actions import docker_utils
from wadebug.wa_actions.base import WAAction
DB_SETTINGS_CONTAINER = [
"WA_DB_ENGINE",
"WA_DB_HOSTNAME",
"WA_DB_PORT",
"WA_DB_USERNAME",
"WA_DB_PASSWORD",
]
class CheckDbSettingsExist(WAAction):
user_facing_name = "check_db_settings_exist"
short_description = "Test if required db settings are passed"
@classmethod
def _run(cls, config, *args, **kwargs):
errors = defaultdict(list)
containers = docker_utils.get_all_running_wa_containers_except_db()
for container in containers:
for item in DB_SETTINGS_CONTAINER:
value = docker_utils.get_value_by_inspecting_container_environment(
container, item
)
if not value:
errors[container.name].append(item)
if errors:
err_str = "For container {}, missing the required database settings : {}"
return results.Problem(
cls,
"Some required db settings are not passed",
"\n".join([err_str.format(key, value) for key, _ in errors.items()]),
"Please make sure to pass required db configuration",
)
return results.OK(cls)