from .base import DictType class Healthcheck(DictType): """ Defines a healthcheck configuration for a container or service. Args: test (:py:class:`list` or str): Test to perform to determine container health. Possible values: - Empty list: Inherit healthcheck from parent image - ``["NONE"]``: Disable healthcheck - ``["CMD", args...]``: exec arguments directly. - ``["CMD-SHELL", command]``: Run command in the system's default shell. If a string is provided, it will be used as a ``CMD-SHELL`` command. interval (int): The time to wait between checks in nanoseconds. It should be 0 or at least 1000000 (1 ms). timeout (int): The time to wait before considering the check to have hung. It should be 0 or at least 1000000 (1 ms). retries (int): The number of consecutive failures needed to consider a container as unhealthy. start_period (int): Start period for the container to initialize before starting health-retries countdown in nanoseconds. It should be 0 or at least 1000000 (1 ms). """ def __init__(self, **kwargs): test = kwargs.get('test', kwargs.get('Test')) if isinstance(test, str): test = ["CMD-SHELL", test] interval = kwargs.get('interval', kwargs.get('Interval')) timeout = kwargs.get('timeout', kwargs.get('Timeout')) retries = kwargs.get('retries', kwargs.get('Retries')) start_period = kwargs.get('start_period', kwargs.get('StartPeriod')) super().__init__({ 'Test': test, 'Interval': interval, 'Timeout': timeout, 'Retries': retries, 'StartPeriod': start_period }) @property def test(self): return self['Test'] @test.setter def test(self, value): if isinstance(value, str): value = ["CMD-SHELL", value] self['Test'] = value @property def interval(self): return self['Interval'] @interval.setter def interval(self, value): self['Interval'] = value @property def timeout(self): return self['Timeout'] @timeout.setter def timeout(self, value): self['Timeout'] = value @property def retries(self): return self['Retries'] @retries.setter def retries(self, value): self['Retries'] = value @property def start_period(self): return self['StartPeriod'] @start_period.setter def start_period(self, value): self['StartPeriod'] = value