File size: 3,387 Bytes
105b369
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
from typing import Optional, Any, Dict

from phi.aws.resource.base import AwsResource
from phi.utils.log import logger


class EcsVolume(AwsResource):
    """
    Reference:
    - https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ecs.html
    """

    resource_type: Optional[str] = "EcsVolume"
    service_name: str = "ecs"

    name: str
    host: Optional[Dict[str, Any]] = None
    docker_volume_configuration: Optional[Dict[str, Any]] = None
    efs_volume_configuration: Optional[Dict[str, Any]] = None
    fsx_windows_file_server_volume_configuration: Optional[Dict[str, Any]] = None

    def get_volume_definition(self) -> Dict[str, Any]:
        volume_definition: Dict[str, Any] = {}

        if self.name is not None:
            volume_definition["name"] = self.name
        if self.host is not None:
            volume_definition["host"] = self.host
        if self.docker_volume_configuration is not None:
            volume_definition["dockerVolumeConfiguration"] = self.docker_volume_configuration
        if self.efs_volume_configuration is not None:
            volume_definition["efsVolumeConfiguration"] = self.efs_volume_configuration
        if self.fsx_windows_file_server_volume_configuration is not None:
            volume_definition["fsxWindowsFileServerVolumeConfiguration"] = (
                self.fsx_windows_file_server_volume_configuration
            )

        return volume_definition

    def volume_definition_up_to_date(self, volume_definition: Dict[str, Any]) -> bool:
        if self.name is not None:
            if volume_definition.get("name") != self.name:
                logger.debug("{} != {}".format(self.name, volume_definition.get("name")))
                return False
        if self.host is not None:
            if volume_definition.get("host") != self.host:
                logger.debug("{} != {}".format(self.host, volume_definition.get("host")))
                return False
        if self.docker_volume_configuration is not None:
            if volume_definition.get("dockerVolumeConfiguration") != self.docker_volume_configuration:
                logger.debug(
                    "{} != {}".format(
                        self.docker_volume_configuration,
                        volume_definition.get("dockerVolumeConfiguration"),
                    )
                )
                return False
        if self.efs_volume_configuration is not None:
            if volume_definition.get("efsVolumeConfiguration") != self.efs_volume_configuration:
                logger.debug(
                    "{} != {}".format(
                        self.efs_volume_configuration,
                        volume_definition.get("efsVolumeConfiguration"),
                    )
                )
                return False
        if self.fsx_windows_file_server_volume_configuration is not None:
            if (
                volume_definition.get("fsxWindowsFileServerVolumeConfiguration")
                != self.fsx_windows_file_server_volume_configuration
            ):
                logger.debug(
                    "{} != {}".format(
                        self.fsx_windows_file_server_volume_configuration,
                        volume_definition.get("fsxWindowsFileServerVolumeConfiguration"),
                    )
                )
                return False

        return True