Skip to content

gufo.thor.services.base

BaseService definition.

Attributes:

Name Type Description
loader

The service loader.

BaseService

Bases: ABC

Base class for the service declaration.

Attributes:

Name Type Description
name str

Service name

is_noc bool

True, if the service is belongs to NOC

dependencies tuple[BaseService, ...] | None

Optional list of dependencies

compose_image str

docker image name. Override get_compose_image to implement config-depended behavior.

compose_depends_condition ComposeDependsCondition

Condition for all dependend services. Override get_compose_dependens_condition to implement custom behavior.

compose_healthcheck dict[str, Any] | None

Healtcheck section, if any. Override get_compose_healthcheck to implement custom behavior.

compose_command str | None

command section, if any. Override get_compose_command to implement custom behavior.

compose_entrypoint str | None

entrypoint section, if any. Override get_compose_entrypoint to implement custom behavior.

compose_working_dir str | None

working_dir section if any. Override get_compose_working_dir to implement custom behavior.

compose_volumes list[str] | None

volumes section, if any. Override get_compose_volumes to implement custom behavior.

compose_volumes_config dict[str, dict[str, Any]] | None

Global volumes section, if any. Override get_compose_volumes_config to implement custom behavior.

compose_environment dict[str, str] | None

environment section, if any. Override get_compose_environment to implement custom behavior.

compose_labels list[str] | None

labels section, if any. Override get_compose_labels to implement custom behavior.

compose_secrets list[Secret] | None

secrets section, if any. Override get_compose_secrets to implement custom behavior.

compose_secrets_for_dependencies list[Secret] | None

Additional secrets which must be added to dependant services.

compose_configs list[Artefact] | None

configs section, if any. Override get_compose_configs to implement custom behavior.

compose_extra dict[str, Any] | None

Additional parameters to be merged with the compose config. Override get_compose_extra to implement custom behavior.

allow_scale bool

If the service allows running multiple instances.

require_slots bool

If the service requires slots creation.

expose_http_prefix str | None

Optional prefix to be exposed on edge proxy. Override get_exposed_http_prefix to implement custom behavior.

require_http_auth bool

True, if the service protected by http auth proxy.

rewrite_http_prefix str | None

If set, rewrite matched http prefix before passing request to upstream.

service_port int | None

If set, register service to port in service discovery.

as_pooled(pool)

Return instance bound to pool.

get(name) staticmethod

Get service instance by name.

Parameters:

Name Type Description Default
name str

Service name.

required

Returns:

Type Description
BaseService

BaseService instance.

get_compose_command(svc=None)

Get docker-compose.yml command section.

Parameters:

Name Type Description Default
svc ServiceConfig | None

Service's config from services part, if any.

None

Returns:

Type Description
str | None

Command, if not empty

get_compose_config(svc=None)

Generate config for docker-compose target.

The following functions are used to build config:

  • get_compose_image -vto build image section.
  • iter_dependencies - to build depends_on section.
  • get_compose_working_dir - to build working_dir section.
  • get_compose_command - to build command section.
  • get_compose_entrypoint - to build entrypoint section.
  • get_compose_volumes - to build volumes section.
  • get_compose_networks - to build networks section.
  • get_compose_ports - to build ports section.
  • get_compose_environment - to build environments section.
  • get_compose_healthcheck - to build healthcheck section.
  • get_compose_extra to add the extra parameters to the result.
  • get_compose_labels to add the extra labels to the result.
  • `get_compose_secrets to add the extra secrets to the result.
  • `get_compose_configs to add the extra configs to the result.
  • get_compose_logging - to build logging section.

Parameters:

Name Type Description Default
svc ServiceConfig | None

Service's config from services part, if any.

None

Returns:

Type Description
dict[str, Any]

dict of the docker-compose configuration.

get_compose_configs(svc=None)

Get docker-compose.yml configs section.

Parameters:

Name Type Description Default
svc ServiceConfig | None

Service's config from services part, if any.

None

Returns:

Type Description
list[Artefact] | None

List of configs, if not empty.

get_compose_depends_condition(svc=None)

Get condition for all dependend services.

Parameters:

Name Type Description Default
svc ServiceConfig | None

Service's config from services part, if any.

None

Returns:

Type Description
ComposeDependsCondition

Dependency start condition.

get_compose_entrypoint(svc=None)

Get docker-compose.yml entrypoint section.

Parameters:

Name Type Description Default
svc ServiceConfig | None

Service's config from services part, if any.

None

Returns: Entrypoint, if not empty

get_compose_environment(svc=None)

Get docker-compose.yml environment section.

Parameters:

Name Type Description Default
svc ServiceConfig | None

Service's config from services part, if any.

None

Returns:

Type Description
dict[str, str] | None

Dict of environment, if not empty

get_compose_extra(svc=None)

Get dict to be merged with compose config/.

Parameters:

Name Type Description Default
svc ServiceConfig | None

Service's config from services part, if any.

None

Returns:

Type Description
dict[str, Any] | None

Dict of extra settings.

get_compose_healthcheck(svc=None)

Get docker-compose.yml healthcheck section.

Parameters:

Name Type Description Default
svc ServiceConfig | None

Service's config from services part, if any.

None

Returns:

Type Description
dict[str, Any] | None

Dict of healthcheck, if not empty

get_compose_image(svc=None)

Get docker-compose.yml image section.

Parameters:

Name Type Description Default
svc ServiceConfig | None

Service's config from services part, if any.

None

Returns:

Type Description
str

Image name.

get_compose_labels(svc=None)

Get docker-compose.yml labels section.

Parameters:

Name Type Description Default
svc ServiceConfig | None

Service's config from services part, if any.

None

Returns:

Type Description
list[str] | None

List of labels, if not empty.

get_compose_logging(svc=None)

Get docker-compose.yml logging section.

Parameters:

Name Type Description Default
svc ServiceConfig | None

Service's config from services part, if any.

None

Returns:

Type Description
dict[str, Any] | None

Dict of logging, if not empty

get_compose_name()

Get service name for docker-compose.

get_compose_networks(svc=None)

Get docker-compose.yml networks section.

Parameters:

Name Type Description Default
svc ServiceConfig | None

Service's config from services part, if any.

None

Returns:

Type Description
dict[str, Any]

Networks dict, if not empty

get_compose_ports(svc=None)

Get docker-compose.yml ports section.

Parameters:

Name Type Description Default
svc ServiceConfig | None

Service's config from services part, if any.

None

Returns: List of ports config, if not empty

get_compose_secrets(svc=None)

Get docker-compose.yml secrets section.

Parameters:

Name Type Description Default
svc ServiceConfig | None

Service's config from services part, if any.

None

Returns:

Type Description
list[Secret] | None

List of secrets, if not empty.

get_compose_volumes(svc=None)

Get docker-compose.yml volumes section.

Parameters:

Name Type Description Default
svc ServiceConfig | None

Service's config from services part, if any.

None

Returns:

Type Description
list[str] | None

List of volumes config, if not empty.

get_compose_volumes_config(svc=None)

Get docker-compose.yml global volumes section.

Parameters:

Name Type Description Default
svc ServiceConfig | None

Service's config from services part, if any.

None

Returns:

Type Description
dict[str, dict[str, Any]] | None

Dict of name -> volumes config

get_compose_working_dir(svc=None)

Get docker-compose.yml working_dir section.

Parameters:

Name Type Description Default
svc ServiceConfig | None

Service's config from services part, if any.

None

Returns:

Type Description
str | None

Working dir, if not empty

get_deps_dot() staticmethod

Build dependencies graph in dot format.

Returns:

Type Description
str

Dependencies graph.

iter_dependencies()

Iterator yielding the name of dependencies.

Returns:

Type Description
Iterable[BaseService]

An iterable of strings which represent the names dependencies.

iter_routes(svc=None)

Iterate over the service's HTTP routes.

Parameters:

Name Type Description Default
svc ServiceConfig | None

Service's config from services part, if any.

None

prepare_compose_config(svc=None, *, services)

Prepare service configs.

Parameters:

Name Type Description Default
svc ServiceConfig | None

Service's config from services part, if any.

None
services list[BaseService]

List of all services.

required

render(tpl, **kwargs) classmethod

Apply a context to the template and write to file.

Parameters:

Name Type Description Default
tpl str

Template name (relative to gufo.thor.templates)

required
kwargs str | int | None | list[Any]

Template context

{}

Returns:

Type Description
str

Rendered template

resolve(services) staticmethod

Resolve services to all dependencies.

Parameters:

Name Type Description Default
services Iterable[str]

Iterable of basic services.

required

Returns:

Type Description
list[BaseService]

Iterable of all basic services and their dependencies.

ComposeDependsCondition

Bases: Enum

depends_on condition.

Attributes:

Name Type Description
STARTED

Run dependends after the service is started.

HEALTHY

Run dependends after the service is started and entered the healhy state.

COMPLETED_SUCCESSFULLY

Run dependends after the service is started and terminated successfully.

Role

Bases: Enum

Process' role in NOC.

Attributes:

Name Type Description
OTHER

Unspecified role.

APP

NOC application.

DB

NOC database.

ASSET

NOC assets.

UTILS

Various utilities.

default() classmethod

Get default value.