in pkg/provider/branch/trunk/trunk.go [534:570]
func (t *trunkENI) deleteENI(eniDetail *ENIDetails) (err error) {
// Disassociate branch ENI from trunk if association ID exists and delete branch network interface
if eniDetail.AssociationID != "" {
err = t.ec2ApiHelper.DisassociateTrunkInterface(&eniDetail.AssociationID)
if err != nil {
trunkENIOperationsErrCount.WithLabelValues("disassociate_trunk_error").Inc()
if !strings.Contains(err.Error(), ec2Errors.NotFoundAssociationID) {
t.log.Error(err, "failed to disassociate branch ENI from trunk, will try to delete the branch ENI")
// Not returning error here, fallback to force branch ENI deletion
} else {
t.log.Info("AssociationID not found when disassociating branch from trunk ENI, it is already disassociated so delete the branch ENI")
}
}
}
err = t.ec2ApiHelper.DeleteNetworkInterface(&eniDetail.ID)
if err != nil {
branchENIOperationsFailureCount.WithLabelValues("delete_branch_error").Inc()
if !strings.Contains(err.Error(), ec2Errors.NotFoundInterfaceID) {
t.log.Error(err, "calling EC2 delete API to delete the branch ENI failed", "BranchENI", eniDetail)
return err
} else {
t.log.Info("The branch ENI was not found by EC2. Will not call EC2 for deletion again", "BranchENI", eniDetail, "Error", err.Error())
}
}
branchENIOperationsSuccessCount.WithLabelValues("deleted_branch_succesfully").Inc()
t.log.Info("deleted eni", "eni details", eniDetail)
// Free vlan id used by the branch ENI
if eniDetail.VlanID != 0 {
t.freeVlanId(eniDetail.VlanID)
}
return nil
}