1010from aws_library .ec2 import AWSTagKey , AWSTagValue , EC2InstanceType , EC2Tags , Resources
1111from aws_library .ec2 ._models import EC2InstanceData
1212from common_library .json_serialization import json_dumps
13+ from pydantic import TypeAdapter
1314
1415from .._meta import VERSION
1516from ..core .errors import (
2223_logger = logging .getLogger (__name__ )
2324
2425_EC2_INTERNAL_DNS_RE : Final [re .Pattern ] = re .compile (r"^(?P<host_name>ip-[^.]+)\..+$" )
26+ _SIMCORE_AUTOSCALING_VERSION_TAG_KEY : Final [AWSTagKey ] = TypeAdapter (
27+ AWSTagKey
28+ ).validate_python ("io.simcore.autoscaling.version" )
29+ _SIMCORE_AUTOSCALING_NODE_LABELS_TAG_KEY : Final [AWSTagKey ] = TypeAdapter (
30+ AWSTagKey
31+ ).validate_python ("io.simcore.autoscaling.monitored_nodes_labels" )
32+ _SIMCORE_AUTOSCALING_SERVICE_LABELS_TAG_KEY : Final [AWSTagKey ] = TypeAdapter (
33+ AWSTagKey
34+ ).validate_python ("io.simcore.autoscaling.monitored_services_labels" )
35+ _SIMCORE_AUTOSCALING_DASK_SCHEDULER_URL_TAG_KEY : Final [AWSTagKey ] = TypeAdapter (
36+ AWSTagKey
37+ ).validate_python ("io.simcore.autoscaling.dask-scheduler_url" )
38+ _EC2_NAME_TAG_KEY : Final [AWSTagKey ] = TypeAdapter (AWSTagKey ).validate_python ("Name" )
2539
2640
2741def get_ec2_tags_dynamic (app_settings : ApplicationSettings ) -> EC2Tags :
2842 assert app_settings .AUTOSCALING_NODES_MONITORING # nosec
2943 assert app_settings .AUTOSCALING_EC2_INSTANCES # nosec
3044 return {
31- AWSTagKey ("io.simcore.autoscaling.version" ): AWSTagValue (f"{ VERSION } " ),
32- AWSTagKey ("io.simcore.autoscaling.monitored_nodes_labels" ): AWSTagValue (
45+ _SIMCORE_AUTOSCALING_VERSION_TAG_KEY : TypeAdapter (AWSTagValue ).validate_python (
46+ f"{ VERSION } "
47+ ),
48+ _SIMCORE_AUTOSCALING_NODE_LABELS_TAG_KEY : TypeAdapter (
49+ AWSTagValue
50+ ).validate_python (
3351 json_dumps (
3452 app_settings .AUTOSCALING_NODES_MONITORING .NODES_MONITORING_NODE_LABELS
3553 )
3654 ),
37- AWSTagKey ("io.simcore.autoscaling.monitored_services_labels" ): AWSTagValue (
55+ _SIMCORE_AUTOSCALING_SERVICE_LABELS_TAG_KEY : TypeAdapter (
56+ AWSTagValue
57+ ).validate_python (
3858 json_dumps (
3959 app_settings .AUTOSCALING_NODES_MONITORING .NODES_MONITORING_SERVICE_LABELS
4060 )
4161 ),
4262 # NOTE: this one gets special treatment in AWS GUI and is applied to the name of the instance
43- AWSTagKey ( "Name" ): AWSTagValue (
63+ _EC2_NAME_TAG_KEY : TypeAdapter ( AWSTagValue ). validate_python (
4464 f"{ app_settings .AUTOSCALING_EC2_INSTANCES .EC2_INSTANCES_NAME_PREFIX } -{ app_settings .AUTOSCALING_EC2_INSTANCES .EC2_INSTANCES_KEY_NAME } "
4565 ),
4666 } | app_settings .AUTOSCALING_EC2_INSTANCES .EC2_INSTANCES_CUSTOM_TAGS
@@ -50,12 +70,14 @@ def get_ec2_tags_computational(app_settings: ApplicationSettings) -> EC2Tags:
5070 assert app_settings .AUTOSCALING_DASK # nosec
5171 assert app_settings .AUTOSCALING_EC2_INSTANCES # nosec
5272 return {
53- AWSTagKey ("io.simcore.autoscaling.version" ): AWSTagValue (f"{ VERSION } " ),
54- AWSTagKey ("io.simcore.autoscaling.dask-scheduler_url" ): AWSTagValue (
55- f"{ app_settings .AUTOSCALING_DASK .DASK_MONITORING_URL } "
73+ _SIMCORE_AUTOSCALING_VERSION_TAG_KEY : TypeAdapter (AWSTagValue ).validate_python (
74+ f"{ VERSION } "
5675 ),
76+ _SIMCORE_AUTOSCALING_DASK_SCHEDULER_URL_TAG_KEY : TypeAdapter (
77+ AWSTagValue
78+ ).validate_python (f"{ app_settings .AUTOSCALING_DASK .DASK_MONITORING_URL } " ),
5779 # NOTE: this one gets special treatment in AWS GUI and is applied to the name of the instance
58- AWSTagKey ( "Name" ): AWSTagValue (
80+ _EC2_NAME_TAG_KEY : TypeAdapter ( AWSTagValue ). validate_python (
5981 f"{ app_settings .AUTOSCALING_EC2_INSTANCES .EC2_INSTANCES_NAME_PREFIX } -{ app_settings .AUTOSCALING_EC2_INSTANCES .EC2_INSTANCES_KEY_NAME } "
6082 ),
6183 } | app_settings .AUTOSCALING_EC2_INSTANCES .EC2_INSTANCES_CUSTOM_TAGS
0 commit comments