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

1import dataclasses 

2import typing 

3 

4 

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") 

21 

22 

23@typing.final 

24@dataclasses.dataclass(slots=True, kw_only=True, frozen=True) 

25class ResourceAmounts: 

26 requested_amount: str = "" 

27 limited_amount: str = "" 

28 

29 

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 

36 

37 

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 

46 

47 

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 

56 

57 

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 = "" 

66 

67 

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, ...] = ()