* 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>
		
			
				
	
	
		
			238 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			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"
 |