From 17c652f88335ff1cdd836120e791a7ecbc7150d8 Mon Sep 17 00:00:00 2001 From: root <root@benefits.onepeloton.com> Date: Fri, 8 Mar 2024 15:43:42 -0500 Subject: [PATCH] Adding eks__enum error handling to fix issue #410 --- main.py | 102 -------------------------------------------------------- 1 file changed, 102 deletions(-) delete mode 100644 main.py diff --git a/main.py b/main.py deleted file mode 100644 index 6910cbda..00000000 --- a/main.py +++ /dev/null @@ -1,102 +0,0 @@ -#!/usr/bin/env python3 -import argparse -from botocore.exceptions import ClientError - -module_info = { - 'name': 'eks_enum', - 'author': 'David Fentz', - 'category': 'ENUM', - 'one_liner': 'This module enumerates over EKS resources.', - 'description': 'This module enumerates over EKS resources.', - 'services': ['EKS'], - 'prerequisite_modules': [], - 'external_dependencies': [], - 'arguments_to_autocomplete': [ - '--regions', - '--no_addons', - '--no_identity_provider_configs', - '--no_fargate_profiles', - ], -} - - -parser = argparse.ArgumentParser(add_help=False, description=module_info['description']) -parser.add_argument('--regions', required=False, default=None, help='One or more (comma separated) AWS regions in the format "us-east-1". Defaults to all session regions.') -parser.add_argument('--no_addons', required=False, action='store_true', default=False, help='Exclude EKS addons') -parser.add_argument('--no_identity_provider_configs', required=False, action='store_true', default=False, help='Exclude EKS identity provider configs') -parser.add_argument('--no_fargate_profiles', required=False, action='store_true', default=False, help='Exclude EKS fargate profiles') - -def main(args, pacu_main): - args = parser.parse_args(args) - print = pacu_main.print - session = pacu_main.get_active_session() - get_regions = pacu_main.get_regions - data = {} - cluster_count = 0 - - if args.regions is None: - regions = get_regions('eks') - if regions is None or regions == [] or regions == '' or regions == {}: - print('This module is not supported in any regions specified in the current sessions region set. Exiting...') - return - else: - regions = args.regions.split(',') - - for region in regions: - try: - eks_client = pacu_main.get_boto3_client('eks', region) - cluster_paginator = eks_client.get_paginator("list_clusters") - cluster_page_iterator = cluster_paginator.paginate(PaginationConfig={'PageSize': 50}) - data[region] = { # use this to count clusters - "clusters": {} - } - except Exception as e: - print(f"Error: Could not enumerate region {region}") - print(f"Error: {e}") - continue - for page in cluster_page_iterator: - clusters = page["clusters"] - for cluster in clusters: - nodegroups = [] - addons = [] - fargate_profiles = [] - ip_configs = [] - - nodegroup_paginator = eks_client.get_paginator("list_nodegroups") - nodegroup_page_iterator = nodegroup_paginator.paginate(clusterName=cluster, PaginationConfig={'PageSize': 50}) - addon_paginator = eks_client.get_paginator("list_addons") - addon_page_iterator = addon_paginator.paginate(clusterName=cluster, PaginationConfig={'PageSize': 50}) - fargate_paginator = eks_client.get_paginator("list_fargate_profiles") - fargate_page_iterator = fargate_paginator.paginate(clusterName=cluster, PaginationConfig={'PageSize': 50}) - ip_config_paginator = eks_client.get_paginator("list_identity_provider_configs") - ip_config_page_iterator = ip_config_paginator.paginate(clusterName=cluster, maxResults=1, PaginationConfig={'PageSize': 1}) - - for page in nodegroup_page_iterator: - nodegroups.append(page["nodegroups"]) - for page in addon_page_iterator: - addons.append(page["addons"]) - for page in fargate_page_iterator: - fargate_profiles.append(page["fargateProfileNames"]) - for page in ip_config_page_iterator: - ip_configs.append(page["identityProviderConfigs"]) - - data[region]['clusters'][cluster] = { - "cluster_description": eks_client.describe_cluster(name=cluster)["cluster"], - "nodegroups": nodegroups - } - if not args.no_addons: - data[region]['clusters'][cluster]["addons"] = addons - if not args.no_fargate_profiles: - data[region]['clusters'][cluster]["fargate_profiles"] = fargate_profiles - # if not args.no_identity_provider_configs: - # data[region]['clusters'][cluster]["identity_provider_configs"] = ip_configs - - region_clusters = [cluster for cluster in data[region]["clusters"]] - print(f"clusters in {region}: {region_clusters}") - cluster_count += len(data[region]["clusters"]) - session.update(pacu_main.database, EKS=data) - return cluster_count - - -def summary(cluster_count, pacu_main): - return f"Found {cluster_count} clusters in total.\nTo see EKS data, run \"data EKS\","