mirror of
https://github.com/portainer/portainer.git
synced 2025-07-23 15:29:42 +02:00
feat(helm): update helm view [r8s-256] (#582)
Co-authored-by: Cara Ryan <cara.ryan@portainer.io> Co-authored-by: James Player <james.player@portainer.io> Co-authored-by: stevensbkang <skan070@gmail.com>
This commit is contained in:
parent
46eddbe7b9
commit
0ca9321db1
57 changed files with 2635 additions and 222 deletions
143
pkg/libhelm/sdk/resources_test.go
Normal file
143
pkg/libhelm/sdk/resources_test.go
Normal file
|
@ -0,0 +1,143 @@
|
|||
package sdk
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
)
|
||||
|
||||
func TestParseResources(t *testing.T) {
|
||||
t.Run("successfully parse single resource", func(t *testing.T) {
|
||||
resourceTypesLists := map[string][]runtime.Object{
|
||||
"v1/Pod(related)": {
|
||||
&unstructured.Unstructured{
|
||||
Object: map[string]any{
|
||||
"apiVersion": "v1",
|
||||
"kind": "Pod",
|
||||
"metadata": map[string]any{
|
||||
"name": "test-pod",
|
||||
"namespace": "default",
|
||||
},
|
||||
"status": map[string]any{
|
||||
"phase": "Available",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
got, err := parseResources(resourceTypesLists)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, 1, len(got))
|
||||
|
||||
// Check resource metadata
|
||||
assert.Equal(t, "test-pod", got[0].GetName())
|
||||
assert.Equal(t, "default", got[0].GetNamespace())
|
||||
|
||||
// Check status and condition
|
||||
statusMap, found, _ := unstructured.NestedMap(got[0].Object, "status")
|
||||
assert.True(t, found)
|
||||
assert.Equal(t, "Available", statusMap["phase"])
|
||||
|
||||
healthSummary, found, _ := unstructured.NestedMap(statusMap, "healthSummary")
|
||||
assert.True(t, found)
|
||||
assert.Equal(t, "Healthy", healthSummary["status"])
|
||||
assert.Equal(t, "Available", healthSummary["reason"])
|
||||
})
|
||||
|
||||
t.Run("successfully parse multiple resources", func(t *testing.T) {
|
||||
resourceTypesLists := map[string][]runtime.Object{
|
||||
"v1/Pod(related)": {
|
||||
&unstructured.Unstructured{
|
||||
Object: map[string]any{
|
||||
"apiVersion": "v1",
|
||||
"kind": "Pod",
|
||||
"metadata": map[string]any{
|
||||
"name": "test-pod-1",
|
||||
"namespace": "default",
|
||||
},
|
||||
"status": map[string]any{
|
||||
"phase": "Pending",
|
||||
},
|
||||
},
|
||||
},
|
||||
&unstructured.Unstructured{
|
||||
Object: map[string]any{
|
||||
"apiVersion": "v1",
|
||||
"kind": "Pod",
|
||||
"metadata": map[string]any{
|
||||
"name": "test-pod-2",
|
||||
"namespace": "default",
|
||||
},
|
||||
"status": map[string]any{
|
||||
"phase": "Error",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
got, err := parseResources(resourceTypesLists)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, 2, len(got))
|
||||
|
||||
// Check first resource
|
||||
assert.Equal(t, "test-pod-1", got[0].GetName())
|
||||
statusMap1, found, _ := unstructured.NestedMap(got[0].Object, "status")
|
||||
assert.True(t, found)
|
||||
assert.Equal(t, "Pending", statusMap1["phase"])
|
||||
|
||||
healthSummary1, found, _ := unstructured.NestedMap(statusMap1, "healthSummary")
|
||||
assert.True(t, found)
|
||||
assert.Equal(t, Progressing, healthSummary1["status"])
|
||||
assert.Equal(t, "Pending", healthSummary1["reason"])
|
||||
|
||||
// Check second resource
|
||||
assert.Equal(t, "test-pod-2", got[1].GetName())
|
||||
statusMap2, found, _ := unstructured.NestedMap(got[1].Object, "status")
|
||||
assert.True(t, found)
|
||||
healthSummary2, found, _ := unstructured.NestedMap(statusMap2, "healthSummary")
|
||||
assert.True(t, found)
|
||||
assert.Equal(t, Unhealthy, healthSummary2["status"])
|
||||
assert.Equal(t, "Error", healthSummary2["reason"])
|
||||
})
|
||||
}
|
||||
|
||||
func TestEnhanceStatus(t *testing.T) {
|
||||
t.Run("healthy running pod", func(t *testing.T) {
|
||||
// Create a ResourceStatus object
|
||||
status := &ResourceStatus{
|
||||
Phase: "Failed",
|
||||
}
|
||||
|
||||
conditions := []metav1.Condition{}
|
||||
|
||||
result := summarizeStatus(status, conditions, "test-pod", "default", nil)
|
||||
|
||||
assert.Equal(t, Unhealthy, result.HealthSummary.Status)
|
||||
assert.Equal(t, "Failed", result.HealthSummary.Reason)
|
||||
})
|
||||
|
||||
t.Run("unhealthy pod with error", func(t *testing.T) {
|
||||
// Create a ResourceStatus object
|
||||
status := &ResourceStatus{
|
||||
Phase: "Error",
|
||||
}
|
||||
|
||||
conditions := []metav1.Condition{
|
||||
{
|
||||
Type: "DisruptionAllowed",
|
||||
Status: metav1.ConditionFalse,
|
||||
Reason: "InsufficientPods",
|
||||
},
|
||||
}
|
||||
|
||||
result := summarizeStatus(status, conditions, "test-pod", "default", nil)
|
||||
|
||||
assert.Equal(t, Unhealthy, result.HealthSummary.Status)
|
||||
assert.Equal(t, "Error", result.HealthSummary.Reason)
|
||||
})
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue