11from collections .abc import Iterable
22from operator import itemgetter
33
4- from aws_library .ec2 import AWSTagKey , AWSTagValue , EC2Tags
4+ from aws_library .ec2 import AWS_TAG_VALUE_MAX_LENGTH , AWSTagKey , AWSTagValue , EC2Tags
55from fastapi import FastAPI
66from models_library .docker import DockerGenericTag
77from models_library .utils .json_serialization import json_dumps
8- from pydantic import parse_obj_as , parse_raw_as
8+ from pydantic import TypeAdapter
99
1010from ..constants import (
1111 ACTIVATED_BUFFER_MACHINE_EC2_TAGS ,
@@ -29,8 +29,10 @@ def get_deactivated_buffer_ec2_tags(
2929 base_ec2_tags = (
3030 auto_scaling_mode .get_ec2_tags (app ) | DEACTIVATED_BUFFER_MACHINE_EC2_TAGS
3131 )
32- base_ec2_tags [AWSTagKey ("Name" )] = AWSTagValue (
33- f"{ base_ec2_tags [AWSTagKey ('Name' )]} -buffer"
32+ base_ec2_tags [TypeAdapter (AWSTagKey ).validate_python ("Name" )] = TypeAdapter (
33+ AWSTagValue
34+ ).validate_python (
35+ f"{ base_ec2_tags [TypeAdapter (AWSTagKey ).validate_python ('Name' )]} -buffer"
3436 )
3537 return base_ec2_tags
3638
@@ -43,28 +45,36 @@ def dump_pre_pulled_images_as_tags(images: Iterable[DockerGenericTag]) -> EC2Tag
4345 # AWS Tag Values are limited to 256 characaters so we chunk the images
4446 # into smaller chunks
4547 jsonized_images = json_dumps (images )
46- assert AWSTagValue . max_length # nosec
47- if len (jsonized_images ) > AWSTagValue . max_length :
48+ assert AWS_TAG_VALUE_MAX_LENGTH # nosec
49+ if len (jsonized_images ) > AWS_TAG_VALUE_MAX_LENGTH :
4850 # let's chunk the string
49- chunk_size = AWSTagValue . max_length
51+ chunk_size = AWS_TAG_VALUE_MAX_LENGTH
5052 chunks = [
5153 jsonized_images [i : i + chunk_size ]
5254 for i in range (0 , len (jsonized_images ), chunk_size )
5355 ]
5456 return {
55- AWSTagKey (f"{ PRE_PULLED_IMAGES_EC2_TAG_KEY } _({ i } )" ): AWSTagValue (c )
57+ TypeAdapter (AWSTagKey )
58+ .validate_python (f"{ PRE_PULLED_IMAGES_EC2_TAG_KEY } _({ i } )" ): TypeAdapter (
59+ AWSTagValue
60+ )
61+ .validate_python (c )
5662 for i , c in enumerate (chunks )
5763 }
5864 return {
59- PRE_PULLED_IMAGES_EC2_TAG_KEY : parse_obj_as (AWSTagValue , json_dumps (images ))
65+ PRE_PULLED_IMAGES_EC2_TAG_KEY : TypeAdapter (AWSTagValue ).validate_python (
66+ json_dumps (images )
67+ )
6068 }
6169
6270
6371def load_pre_pulled_images_from_tags (tags : EC2Tags ) -> list [DockerGenericTag ]:
6472 # AWS Tag values are limited to 256 characters so we chunk the images
6573 if PRE_PULLED_IMAGES_EC2_TAG_KEY in tags :
6674 # read directly
67- return parse_raw_as (list [DockerGenericTag ], tags [PRE_PULLED_IMAGES_EC2_TAG_KEY ])
75+ return TypeAdapter (list [DockerGenericTag ]).validate_json (
76+ tags [PRE_PULLED_IMAGES_EC2_TAG_KEY ]
77+ )
6878
6979 assembled_json = "" .join (
7080 map (
@@ -80,5 +90,5 @@ def load_pre_pulled_images_from_tags(tags: EC2Tags) -> list[DockerGenericTag]:
8090 )
8191 )
8292 if assembled_json :
83- return parse_raw_as (list [DockerGenericTag ], assembled_json )
93+ return TypeAdapter (list [DockerGenericTag ]). validate_json ( assembled_json )
8494 return []
0 commit comments