Source code for fastiot.cli.model.service

""" data models for FastIoT and infrastructure services """
import os
import datetime

from typing import List

from pydantic import BaseModel

from fastiot.cli.constants import MANIFEST_FILENAME
from fastiot.cli.model import ServiceManifest
from fastiot.cli.version import get_version

[docs]class Service(BaseModel): """ The model class for a service """ name: str build_date: str = datetime.datetime.now(datetime.timezone.utc).isoformat() version: str = get_version() package: str cache: str = "" """ The name to use as the cache on the set docker cache registry. The tag will be appended automatically (in case not empty), please do not specify it. Example: mypackage-cache """ extra_caches: List[str] = [] """ A list of extra caches used to speed up building which will all be read-only. It is intended if you want to read from other caches or different tags. Each extra cache must match a cache name extended by ':' followed by the tag for the cache. It is useful to always include the cache name followed by tag latest to always use latest cache for feature branches. Examples: mypackage-cache:latest, mypackage-cache:my-feature """ maintainer: str = "" """ Used for docker labels """ git_revision: str = "" """ Used for docker labels """
[docs] def read_manifest(self, check_service_name: str = "") -> ServiceManifest: """ Reads out the service manifest, if not run before using the yaml-file otherwise just ``self.manifest``""" from fastiot.cli.model.project import ProjectContext # pylint: disable=import-outside-toplevel default_context = ProjectContext.default manifest_path = os.path.join(default_context.project_root_dir, 'src', self.package, self.name, MANIFEST_FILENAME) return ServiceManifest.from_yaml_file(manifest_path, check_service_name=check_service_name)