mirror of
https://github.com/vmware-tanzu/velero.git
synced 2026-07-29 11:32:42 +00:00
fix node-agent node detection logic
Add namespace in ListOptions, to fix node-agent node detection in its deployed namespace. Signed-off-by: Adam Zhang <adam.zhang@broadcom.com>
This commit is contained in:
@@ -118,28 +118,37 @@ func TestIsRunningInNode(t *testing.T) {
|
||||
Phase(corev1api.PodRunning).
|
||||
NodeName("fake-node").
|
||||
Result()
|
||||
nodeAgentPodOtherNs := builder.ForPod("other-ns", "fake-pod-other").
|
||||
Labels(map[string]string{"role": "node-agent"}).
|
||||
Phase(corev1api.PodRunning).
|
||||
NodeName("fake-node").
|
||||
Result()
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
kubeClientObj []runtime.Object
|
||||
namespace string
|
||||
nodeName string
|
||||
expectErr string
|
||||
}{
|
||||
{
|
||||
name: "node name is empty",
|
||||
namespace: "fake-ns",
|
||||
expectErr: "node name is empty",
|
||||
},
|
||||
{
|
||||
name: "ds pod not found",
|
||||
nodeName: "fake-node",
|
||||
name: "ds pod not found",
|
||||
namespace: "fake-ns",
|
||||
nodeName: "fake-node",
|
||||
kubeClientObj: []runtime.Object{
|
||||
nonNodeAgentPod,
|
||||
},
|
||||
expectErr: "daemonset pod not found in running state in node fake-node",
|
||||
},
|
||||
{
|
||||
name: "ds po are not all running",
|
||||
nodeName: "fake-node",
|
||||
name: "ds po are not all running",
|
||||
namespace: "fake-ns",
|
||||
nodeName: "fake-node",
|
||||
kubeClientObj: []runtime.Object{
|
||||
nodeAgentPodNotRunning,
|
||||
nodeAgentPodRunning1,
|
||||
@@ -147,8 +156,9 @@ func TestIsRunningInNode(t *testing.T) {
|
||||
expectErr: "daemonset pod not found in running state in node fake-node",
|
||||
},
|
||||
{
|
||||
name: "ds pods wrong node name",
|
||||
nodeName: "fake-node",
|
||||
name: "ds pods wrong node name",
|
||||
namespace: "fake-ns",
|
||||
nodeName: "fake-node",
|
||||
kubeClientObj: []runtime.Object{
|
||||
nodeAgentPodNotRunning,
|
||||
nodeAgentPodRunning1,
|
||||
@@ -157,8 +167,9 @@ func TestIsRunningInNode(t *testing.T) {
|
||||
expectErr: "daemonset pod not found in running state in node fake-node",
|
||||
},
|
||||
{
|
||||
name: "succeed",
|
||||
nodeName: "fake-node",
|
||||
name: "succeed",
|
||||
namespace: "fake-ns",
|
||||
nodeName: "fake-node",
|
||||
kubeClientObj: []runtime.Object{
|
||||
nodeAgentPodNotRunning,
|
||||
nodeAgentPodRunning1,
|
||||
@@ -166,6 +177,23 @@ func TestIsRunningInNode(t *testing.T) {
|
||||
nodeAgentPodRunning3,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "cross-namespace isolation - pod in wrong namespace on same node",
|
||||
namespace: "fake-ns",
|
||||
nodeName: "fake-node",
|
||||
kubeClientObj: []runtime.Object{
|
||||
nodeAgentPodOtherNs,
|
||||
},
|
||||
expectErr: "daemonset pod not found in running state in node fake-node",
|
||||
},
|
||||
{
|
||||
name: "cross-namespace isolation - pod in correct namespace on same node",
|
||||
namespace: "other-ns",
|
||||
nodeName: "fake-node",
|
||||
kubeClientObj: []runtime.Object{
|
||||
nodeAgentPodOtherNs,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
@@ -175,7 +203,7 @@ func TestIsRunningInNode(t *testing.T) {
|
||||
|
||||
fakeClient := fakeClientBuilder.WithRuntimeObjects(test.kubeClientObj...).Build()
|
||||
|
||||
err := IsRunningInNode(t.Context(), "", test.nodeName, fakeClient)
|
||||
err := IsRunningInNode(t.Context(), test.namespace, test.nodeName, fakeClient)
|
||||
if test.expectErr == "" {
|
||||
assert.NoError(t, err)
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user