Skip to content

Commit 19b1cb6

Browse files
authored
Feature change nodegroup inventory (#259)
1 parent 7bfde7f commit 19b1cb6

File tree

2 files changed

+27
-2
lines changed

2 files changed

+27
-2
lines changed

data-collection/deploy/deploy-in-linked-account.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,8 @@ Resources:
238238
- "elasticache:DescribeCacheClusters"
239239
- "eks:ListClusters"
240240
- "eks:DescribeCluster"
241+
- "eks:ListNodegroups"
242+
- "eks:DescribeNodegroup"
241243
- "lambda:ListFunctions"
242244
Resource: "*" ## Policy is used for scanning of a wide range of resources
243245
Roles:
@@ -341,4 +343,4 @@ Resources:
341343
cfn_nag:
342344
rules_to_suppress:
343345
- id: W12
344-
reason: "Policy is used for scanning of a wide range of resources"
346+
reason: "Policy is used for scanning of a wide range of resources"

data-collection/deploy/module-inventory.yaml

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1142,15 +1142,38 @@ Resources:
11421142
)
11431143
.search("clusters")
11441144
):
1145+
# Get cluster details
11451146
cluster = client.describe_cluster(name=cluster_name)
1146-
yield {
1147+
cluster_data = {
11471148
"Arn": cluster["cluster"]["arn"],
11481149
"Name": cluster["cluster"]["name"],
11491150
"CreatedAt": datetime.strftime(
11501151
cluster["cluster"]["createdAt"].astimezone(tz=timezone.utc), "%Y-%m-%dT%H:%M:%SZ"
11511152
),
11521153
"Version": cluster["cluster"]["version"],
11531154
}
1155+
# Get node groups for the cluster
1156+
try:
1157+
node_groups = client.list_nodegroups(clusterName=cluster_name).get("nodegroups", [])
1158+
cluster_data["NodeGroups"] = []
1159+
for node_group in node_groups:
1160+
node_group_details = client.describe_nodegroup(clusterName=cluster_name, nodegroupName=node_group)
1161+
cluster_data["NodeGroups"].append({
1162+
"NodeGroupName": node_group_details["nodegroup"].get("nodegroupName"),
1163+
"NodeRole": node_group_details["nodegroup"].get("nodeRole"),
1164+
"InstanceTypes": node_group_details["nodegroup"].get("instanceTypes",[]),
1165+
"ScalingConfig": node_group_details["nodegroup"].get("scalingConfig",{}),
1166+
"Subnets": node_group_details["nodegroup"].get("subnets",[]),
1167+
"Status": node_group_details["nodegroup"].get("status","Unknown"),
1168+
"AMIType": node_group_details["nodegroup"].get("amiType","Unknown"),
1169+
"Version": node_group_details["nodegroup"].get("version","Unknown"),
1170+
"CreatedAt": datetime.strftime(
1171+
node_group_details["nodegroup"]["createdAt"].astimezone(tz=timezone.utc), "%Y-%m-%dT%H:%M:%SZ"
1172+
),
1173+
})
1174+
except Exception as ng_exc: # Catch node group-specific issues
1175+
logger.error(f"Error fetching node groups for {cluster_name} in {region}: {ng_exc}")
1176+
yield cluster_data
11541177
except Exception as exc: #pylint: disable=W0718
11551178
logger.error(f"Cannot get info from {account_id}/{region}: {type(exc)}-{exc}")
11561179
return []

0 commit comments

Comments
 (0)