Coverage for archdocs/features/kubernetes/const.py: 100%
57 statements
« prev ^ index » next coverage.py v7.15.3, created at 2026-08-03 00:00 +0000
« prev ^ index » next coverage.py v7.15.3, created at 2026-08-03 00:00 +0000
1import dataclasses
2import typing
5CONFIG_MAP_KIND: typing.Final = "ConfigMap"
6SECRET_KIND: typing.Final = "Secret" # noqa: S105 — a manifest kind, not a credential
7INGRESS_KIND: typing.Final = "Ingress"
8AUTOSCALER_KIND: typing.Final = "HorizontalPodAutoscaler"
9VOLUME_CLAIM_KIND: typing.Final = "PersistentVolumeClaim"
10DEFAULT_WORKLOAD_KIND: typing.Final = "Deployment"
11WORKLOAD_KINDS: typing.Final = frozenset((DEFAULT_WORKLOAD_KIND, "StatefulSet", "DaemonSet", "CronJob", "Job"))
12EXPOSED_SERVICE_TYPES: typing.Final = frozenset(("LoadBalancer", "NodePort"))
13ENVIRONMENT_ATTACHMENT: typing.Final = "env"
14VOLUME_ATTACHMENT: typing.Final = "volume"
15GPU_RESOURCE_KEYS: typing.Final = ("nvidia.com/gpu", "amd.com/gpu", "gpu")
16REPOSITORY_MARKER_NAME: typing.Final = ".git"
17PARENT_SEARCH_DEPTH: typing.Final = 2
18TEMPLATES_DIR_NAME: typing.Final = "templates"
19VALUES_FILE_STEM: typing.Final = "values"
20MANIFEST_FILE_SUFFIXES: typing.Final = (".yaml", ".yml")
23@typing.final
24@dataclasses.dataclass(slots=True, kw_only=True, frozen=True)
25class ResourceAmounts:
26 requested_amount: str = ""
27 limited_amount: str = ""
30@typing.final
31@dataclasses.dataclass(slots=True, kw_only=True, frozen=True)
32class ConfigurationSource:
33 source_kind: str
34 source_name: str
35 attachment_kind: str
38@typing.final
39@dataclasses.dataclass(slots=True, kw_only=True, frozen=True)
40class TrafficFeatures:
41 ingress_enabled: bool = False
42 ingress_hosts: tuple[str, ...] = ()
43 ingress_tls_enabled: bool = False
44 service_type: str = ""
45 service_port: int = 0
48@typing.final
49@dataclasses.dataclass(slots=True, kw_only=True, frozen=True)
50class ScalingFeatures:
51 workload_kind: str = ""
52 replica_count: int = 0
53 min_replicas: int = 0
54 max_replicas: int = 0
55 target_cpu_utilization: int = 0
58@typing.final
59@dataclasses.dataclass(slots=True, kw_only=True, frozen=True)
60class ResourceFeatures:
61 cpu_amounts: ResourceAmounts = ResourceAmounts()
62 memory_amounts: ResourceAmounts = ResourceAmounts()
63 gpu_amounts: ResourceAmounts = ResourceAmounts()
64 persistence_enabled: bool = False
65 persistence_size: str = ""
68@typing.final
69@dataclasses.dataclass(slots=True, kw_only=True, frozen=True)
70class KubernetesFeatures:
71 traffic_features: TrafficFeatures = TrafficFeatures()
72 scaling_features: ScalingFeatures = ScalingFeatures()
73 resource_features: ResourceFeatures = ResourceFeatures()
74 configuration_sources: tuple[ConfigurationSource, ...] = ()