Skip to content

Commit

Permalink
Merge pull request #241 from Madhu-1/fix-DFBUGS-943
Browse files Browse the repository at this point in the history
DFBUGS-943: Fix key and ownerRef bug
  • Loading branch information
openshift-merge-bot[bot] authored Nov 27, 2024
2 parents 4b26b21 + 06fad89 commit da1d39c
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 5 deletions.
4 changes: 3 additions & 1 deletion internal/controller/csiaddons/csiaddonsnode_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,9 @@ func (r *CSIAddonsNodeReconciler) Reconcile(ctx context.Context, req ctrl.Reques

// namespace + "/" + leader identity(pod name) is the key for the connection.
// this key is used by GetLeaderByDriver to get the connection
key := csiAddonsNode.Namespace + "/" + podName
// util.NormalizeLeaseName() is used to sanitize the leader identity used for the leases
// csiaddonsnode need to store the key with same format so that it can be used to get the connection.
key := csiAddonsNode.Namespace + "/" + util.NormalizeLeaseName(podName)

logger = logger.WithValues("EndPoint", endPoint)

Expand Down
29 changes: 25 additions & 4 deletions sidecar/internal/csiaddonsnode/csiaddonsnode.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import (

v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
Expand Down Expand Up @@ -138,6 +139,8 @@ func (mgr *Manager) newCSIAddonsNode(node *csiaddonsv1alpha1.CSIAddonsNode) erro
csiaddonNode.ResourceVersion = resourceVersion
}
node.Spec.DeepCopyInto(&csiaddonNode.Spec)
// set the ownerReferences
csiaddonNode.ObjectMeta.OwnerReferences = node.ObjectMeta.OwnerReferences
return nil
})

Expand Down Expand Up @@ -188,7 +191,10 @@ func (mgr *Manager) getCSIAddonsNode() (*csiaddonsv1alpha1.CSIAddonsNode, error)
return nil, fmt.Errorf("%w: pod has no owner", errInvalidConfig)
}

ownerReferences := []v1.OwnerReference{}
ownerKindForCSIAddonsName := ""
ownerNameForCSIAddonsName := ""

ownerReferences := make([]v1.OwnerReference, 1)
if pod.OwnerReferences[0].Kind == "ReplicaSet" {
// If the pod is owned by a ReplicaSet, we need to get the owner of the ReplicaSet i.e. Deployment
rs, err := mgr.KubeClient.AppsV1().ReplicaSets(mgr.PodNamespace).Get(context.TODO(), pod.OwnerReferences[0].Name, v1.GetOptions{})
Expand All @@ -198,14 +204,29 @@ func (mgr *Manager) getCSIAddonsNode() (*csiaddonsv1alpha1.CSIAddonsNode, error)
if len(rs.OwnerReferences) == 0 {
return nil, fmt.Errorf("%w: replicaset has no owner", errInvalidConfig)
}
ownerReferences = append(ownerReferences, rs.OwnerReferences[0])
ownerKindForCSIAddonsName = rs.OwnerReferences[0].Kind
ownerNameForCSIAddonsName = rs.OwnerReferences[0].Name

// The pod (created using deployment) might move to new nodes and this might create the
// stale CSIAddonsNode object.
// So, we need to set the pod as the owner for the CSIAddonsNode as we dont store any details
// that are required later on for any other operations like Fencing etc.
ownerReferences[0] = v1.OwnerReference{
APIVersion: "v1",
Kind: "Pod",
Name: pod.Name,
UID: types.UID(mgr.PodUID),
}
} else {
ownerKindForCSIAddonsName = pod.OwnerReferences[0].Kind
ownerNameForCSIAddonsName = pod.OwnerReferences[0].Name
// If the pod is owned by DeamonSet or StatefulSet get the owner of the pod.
ownerReferences = append(ownerReferences, pod.OwnerReferences[0])
ownerReferences[0] = pod.OwnerReferences[0]
}

// we need to have the constant name for the CSIAddonsNode object.
// We will use the nodeID and the ownerName for the CSIAddonsNode object name.
name, err := generateName(mgr.Node, mgr.PodNamespace, ownerReferences[0].Kind, ownerReferences[0].Name)
name, err := generateName(mgr.Node, mgr.PodNamespace, ownerKindForCSIAddonsName, ownerNameForCSIAddonsName)
if err != nil {
return nil, fmt.Errorf("failed to generate name: %w", err)
}
Expand Down

0 comments on commit da1d39c

Please sign in to comment.