moto/tests/test_eks/test_eks_constants.py
D. Ferruzzi 61e2204941
Initial EKS Implementaion (#3981)
* Implemented EKS list_clusters

* Implemented EKS create_cluster

* Implemented EKS describe_cluster

* Implemented EKS delete_cluster

* Implemented EKS list_nodegroups

* Implemented EKS create_nodegroup

* Implemented EKS describe_nodegroup

* Implemented EKS delete_nodegroup

* Implemented EKS Server Tests

* EKS - rework tests to use decorator everywhere

Co-authored-by: Bert Blommers <info@bertblommers.nl>
2021-06-20 11:34:31 +01:00

238 lines
6.2 KiB
Python

"""
This file should only contain constants used for the EKS tests.
"""
import re
from enum import Enum
from boto3 import Session
from moto.eks import REGION as DEFAULT_REGION
DEFAULT_ENCODING = "utf-8"
DEFAULT_HTTP_HEADERS = {"Content-type": "application/json"}
FROZEN_TIME = "2013-11-27T01:42:00Z"
PARTITIONS = Session().get_available_partitions()
REGION = Session().region_name or DEFAULT_REGION
SERVICE = "eks"
SUBNET_IDS = ["subnet-12345ab", "subnet-67890cd"]
AMI_TYPE_KEY = "amiType"
AMI_TYPE_VALUE = "AL2_x86_64"
CLIENT_REQUEST_TOKEN_KEY = "clientRequestToken"
CLIENT_REQUEST_TOKEN_VALUE = "test_request_token"
DISK_SIZE_KEY = "diskSize"
DISK_SIZE_VALUE = 30
ENCRYPTION_CONFIG_KEY = "encryptionConfig"
ENCRYPTION_CONFIG_VALUE = [
{"resources": ["secrets"], "provider": {"keyArn": "arn:of:the:key"}}
]
INSTANCE_TYPES_KEY = "instanceTypes"
INSTANCE_TYPES_VALUE = ["t3.medium"]
KUBERNETES_NETWORK_CONFIG_KEY = "kubernetesNetworkConfig"
KUBERNETES_NETWORK_CONFIG_VALUE = {"serviceIpv4Cidr": "172.20.0.0/16"}
LABELS_KEY = "labels"
LABELS_VALUE = {"purpose": "example"}
LAUNCH_TEMPLATE_KEY = "launchTemplate"
LAUNCH_TEMPLATE_VALUE = {"name": "myTemplate", "version": "2", "id": "123456"}
LOGGING_KEY = "logging"
LOGGING_VALUE = {"clusterLogging": [{"types": ["api"], "enabled": True}]}
NODEROLE_ARN_KEY = "nodeRole"
NODEROLE_ARN_VALUE = "arn:aws:iam::123456789012:role/role_name"
REMOTE_ACCESS_KEY = "remoteAccess"
REMOTE_ACCESS_VALUE = {"ec2SshKey": "eksKeypair"}
RESOURCES_VPC_CONFIG_KEY = "resourcesVpcConfig"
RESOURCES_VPC_CONFIG_VALUE = {
"subnetIds": SUBNET_IDS,
"endpointPublicAccess": True,
"endpointPrivateAccess": False,
}
ROLE_ARN_KEY = "roleArn"
ROLE_ARN_VALUE = "arn:aws:iam::123456789012:role/role_name"
SCALING_CONFIG_KEY = "scalingConfig"
SCALING_CONFIG_VALUE = {"minSize": 2, "maxSize": 3, "desiredSize": 2}
STATUS_KEY = "status"
STATUS_VALUE = "ACTIVE"
SUBNETS_KEY = "subnets"
SUBNETS_VALUE = SUBNET_IDS
TAGS_KEY = "tags"
TAGS_VALUE = {"hello": "world"}
VERSION_KEY = "version"
VERSION_VALUE = "1"
AMI_TYPE = (AMI_TYPE_KEY, AMI_TYPE_VALUE)
CLIENT_REQUEST_TOKEN = (CLIENT_REQUEST_TOKEN_KEY, CLIENT_REQUEST_TOKEN_VALUE)
DISK_SIZE = (DISK_SIZE_KEY, DISK_SIZE_VALUE)
ENCRYPTION_CONFIG = (ENCRYPTION_CONFIG_KEY, ENCRYPTION_CONFIG_VALUE)
INSTANCE_TYPES = (INSTANCE_TYPES_KEY, INSTANCE_TYPES_VALUE)
KUBERNETES_NETWORK_CONFIG = (
KUBERNETES_NETWORK_CONFIG_KEY,
KUBERNETES_NETWORK_CONFIG_VALUE,
)
LABELS = (LABELS_KEY, LABELS_VALUE)
LAUNCH_TEMPLATE = (LAUNCH_TEMPLATE_KEY, LAUNCH_TEMPLATE_VALUE)
LOGGING = (LOGGING_KEY, LOGGING_VALUE)
NODEROLE_ARN = (NODEROLE_ARN_KEY, NODEROLE_ARN_VALUE)
REMOTE_ACCESS = (REMOTE_ACCESS_KEY, REMOTE_ACCESS_VALUE)
RESOURCES_VPC_CONFIG = (RESOURCES_VPC_CONFIG_KEY, RESOURCES_VPC_CONFIG_VALUE)
ROLE_ARN = (ROLE_ARN_KEY, ROLE_ARN_VALUE)
SCALING_CONFIG = (SCALING_CONFIG_KEY, SCALING_CONFIG_VALUE)
STATUS = (STATUS_KEY, STATUS_VALUE)
SUBNETS = (SUBNETS_KEY, SUBNETS_VALUE)
TAGS = (TAGS_KEY, TAGS_VALUE)
VERSION = (VERSION_KEY, VERSION_VALUE)
class ResponseAttributes:
CLUSTER = "cluster"
CLUSTERS = "clusters"
MESSAGE = "message"
NEXT_TOKEN = "nextToken"
NODEGROUP = "nodegroup"
NODEGROUPS = "nodegroups"
class ErrorAttributes:
CODE = "Code"
ERROR = "Error"
MESSAGE = "Message"
class ClusterInputs:
REQUIRED = [ROLE_ARN, RESOURCES_VPC_CONFIG]
OPTIONAL = [
CLIENT_REQUEST_TOKEN,
ENCRYPTION_CONFIG,
LOGGING,
KUBERNETES_NETWORK_CONFIG,
TAGS,
VERSION,
]
class NodegroupInputs:
REQUIRED = [NODEROLE_ARN, SUBNETS]
OPTIONAL = [
AMI_TYPE,
DISK_SIZE,
INSTANCE_TYPES,
LABELS,
REMOTE_ACCESS,
SCALING_CONFIG,
TAGS,
]
class PossibleTestResults(Enum):
SUCCESS = "SUCCESS"
FAILURE = "FAILURE"
class AddonAttributes:
ADDON_NAME = "addonName"
class ClusterAttributes:
ARN = "arn"
CLUSTER_NAME = "clusterName"
CREATED_AT = "createdAt"
ENDPOINT = "endpoint"
IDENTITY = "identity"
ISSUER = "issuer"
NAME = "name"
OIDC = "oidc"
class FargateAttributes:
PROFILE_NAME = "fargateProfileName"
class NodegroupAttributes:
ARN = "nodegroupArn"
AUTOSCALING_GROUPS = "autoScalingGroups"
CREATED_AT = "createdAt"
MODIFIED_AT = "modifiedAt"
NAME = "name"
NODEGROUP_NAME = "nodegroupName"
REMOTE_ACCESS_SG = "remoteAccessSecurityGroup"
RESOURCES = "resources"
class BatchCountSize:
SINGLE = 1
SMALL = 10
MEDIUM = 20
LARGE = 200
class PageCount:
SMALL = 3
LARGE = 10
NODEGROUP_UUID_PATTERN = "(?P<nodegroup_uuid>[-0-9a-z]{8}-[-0-9a-z]{4}-[-0-9a-z]{4}-[-0-9a-z]{4}-[-0-9a-z]{12})"
class RegExTemplates:
CLUSTER_ARN = re.compile(
"arn:"
+ "(?P<partition>.+):"
+ "eks:"
+ "(?P<region>[-0-9a-zA-Z]+):"
+ "(?P<account_id>[0-9]{12}):"
+ "cluster/"
+ "(?P<cluster_name>.+)"
)
ISO8601_FORMAT = re.compile(
r"^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(\.[0-9]+)?(Z|[+-](?:2[0-3]|[01][0-9]):[0-5][0-9])?$"
)
NODEGROUP_ARN = re.compile(
"arn:"
+ "(?P<partition>.+):"
+ "eks:"
+ "(?P<region>[-0-9a-zA-Z]+):"
+ "(?P<account_id>[0-9]{12}):"
+ "nodegroup/"
+ "(?P<cluster_name>.+)/"
+ "(?P<nodegroup_name>.+)/"
+ NODEGROUP_UUID_PATTERN
)
NODEGROUP_ASG_NAME_PATTERN = re.compile("eks-" + NODEGROUP_UUID_PATTERN)
NODEGROUP_SECURITY_GROUP_NAME_PATTERN = re.compile("sg-" + "([-0-9a-z]{17})")
class Endpoints:
CREATE_CLUSTER = "/clusters"
CREATE_NODEGROUP = "/clusters/{clusterName}/node-groups"
DESCRIBE_CLUSTER = "/clusters/{clusterName}"
DESCRIBE_NODEGROUP = "/clusters/{clusterName}/node-groups/{nodegroupName}"
DELETE_CLUSTER = "/clusters/{clusterName}"
DELETE_NODEGROUP = "/clusters/{clusterName}/node-groups/{nodegroupName}"
LIST_CLUSTERS = "/clusters?maxResults={maxResults}&nextToken={nextToken}"
LIST_NODEGROUPS = "/clusters/{clusterName}/node-groups?maxResults={maxResults}&nextToken={nextToken}"
class StatusCodes:
OK = 200
class HttpHeaders:
ErrorType = "x-amzn-ErrorType"