Skip to content

Commit 7f41f34

Browse files
committed
Fix security group name handling in NodeENI controller
1 parent 1fa3686 commit 7f41f34

2 files changed

Lines changed: 38 additions & 5 deletions

File tree

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
apiVersion: networking.k8s.aws/v1alpha1
2+
kind: NodeENI
3+
metadata:
4+
name: multus-eni-sg-both
5+
spec:
6+
nodeSelector:
7+
ng: multi-eni
8+
subnetID: subnet-0f59b4f14737be9ad
9+
securityGroupIDs:
10+
- sg-05da196f3314d4af8
11+
securityGroupNames:
12+
- multus-security-group
13+
deviceIndex: 2
14+
deleteOnTermination: true
15+
description: "Multus ENI using both security group ID and name"

pkg/controller/nodeeni_controller.go

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -559,21 +559,39 @@ func (r *NodeENIReconciler) createENI(ctx context.Context, nodeENI *networkingv1
559559
}
560560

561561
// Determine the security group IDs to use
562-
securityGroupIDs := nodeENI.Spec.SecurityGroupIDs
563-
if len(securityGroupIDs) == 0 && len(nodeENI.Spec.SecurityGroupNames) > 0 {
564-
// Look up security group IDs by name
562+
var securityGroupIDs []string
563+
564+
// First, use any explicitly provided security group IDs
565+
if len(nodeENI.Spec.SecurityGroupIDs) > 0 {
566+
securityGroupIDs = append(securityGroupIDs, nodeENI.Spec.SecurityGroupIDs...)
567+
}
568+
569+
// Then, look up any security group names and add those IDs
570+
if len(nodeENI.Spec.SecurityGroupNames) > 0 {
565571
for _, sgName := range nodeENI.Spec.SecurityGroupNames {
566572
sgID, err := r.getSecurityGroupIDByName(ctx, sgName)
567573
if err != nil {
568574
return "", fmt.Errorf("failed to get security group ID from name %s: %v", sgName, err)
569575
}
570576
r.Log.Info("Resolved security group name to ID", "securityGroupName", sgName, "securityGroupID", sgID)
571-
securityGroupIDs = append(securityGroupIDs, sgID)
577+
578+
// Check if this ID is already in the list (to avoid duplicates)
579+
isDuplicate := false
580+
for _, existingID := range securityGroupIDs {
581+
if existingID == sgID {
582+
isDuplicate = true
583+
break
584+
}
585+
}
586+
587+
if !isDuplicate {
588+
securityGroupIDs = append(securityGroupIDs, sgID)
589+
}
572590
}
573591
}
574592

575593
if len(securityGroupIDs) == 0 {
576-
return "", fmt.Errorf("neither securityGroupIDs nor securityGroupNames provided")
594+
return "", fmt.Errorf("neither securityGroupIDs nor securityGroupNames provided, or all lookups failed")
577595
}
578596

579597
input := &ec2.CreateNetworkInterfaceInput{

0 commit comments

Comments
 (0)