def validate_config()

in source/eksfedctl/create_action.py [0:0]


def validate_config(config):
    metadata = config.yaml["metadata"]

    if not re.match("^[-A-Za-z0-9]{1,63}$", metadata["name"]):
        raise Exception(
            "Name must be at least 1 character in length letters and numbers"
        )

    if len(metadata["regions"]) != 2:
        raise ArgumentError("Please specify exactly 2 regions")

    ec2 = boto3.client("ec2", region_name=config.bastion.region)
    ec2_regions = ec2.describe_regions()["Regions"]
    region_names = [val["RegionName"] for val in ec2_regions]

    for region in metadata["regions"]:
        # Checking region validity first for faster response
        if not region in region_names:
            raise Exception(f"Region \"{region}\" is not valid")

        try:
            eks = boto3.client("eks", region_name=region)
            eks.list_clusters()
        except Exception as ex:
            raise Exception(f"Can't access EKS service in \"{region}\"")