from dataclasses import dataclass, field from typing import Any, Dict, List, Literal, Optional from moto.appmesh.dataclasses.shared import Metadata, Status from moto.appmesh.dataclasses.virtual_node import VirtualNode from moto.appmesh.dataclasses.virtual_router import VirtualRouter @dataclass class MeshSpec: egress_filter: Dict[Literal["type"], Optional[str]] service_discovery: Dict[Literal["ip_preference"], Optional[str]] @dataclass class Mesh: mesh_name: str metadata: Metadata spec: MeshSpec status: Status virtual_nodes: Dict[str, VirtualNode] = field(default_factory=dict) virtual_routers: Dict[str, VirtualRouter] = field(default_factory=dict) tags: List[Dict[str, str]] = field(default_factory=list) def to_dict(self) -> Dict[str, Any]: # type ignore[misc] return { "meshName": self.mesh_name, "metadata": { "arn": self.metadata.arn, "createdAt": self.metadata.created_at.strftime("%d/%m/%Y, %H:%M:%S"), "lastUpdatedAt": self.metadata.last_updated_at.strftime( "%d/%m/%Y, %H:%M:%S" ), "meshOwner": self.metadata.mesh_owner, "resourceOwner": self.metadata.resource_owner, "uid": self.metadata.uid, "version": self.metadata.version, }, "spec": { "egressFilter": self.spec.egress_filter, "serviceDiscovery": { "ipPreference": self.spec.service_discovery.get("ip_preference") }, }, "status": self.status, }
Memory