mirror of https://github.com/portainer/portainer
fix(k8s): memory leak during k8s stack deployment [BE-12281] (#1264)
parent
7450501b7a
commit
74b1dd04d1
|
@ -46,7 +46,8 @@ func generateConfigFlags(token, server, namespace, kubeconfigPath string, insecu
|
||||||
return nil, errors.New("must provide either a kubeconfig path or a server")
|
return nil, errors.New("must provide either a kubeconfig path or a server")
|
||||||
}
|
}
|
||||||
|
|
||||||
configFlags := genericclioptions.NewConfigFlags(true)
|
// Pass 'false' to usePersistentConfig to prevent memory leaks.
|
||||||
|
configFlags := genericclioptions.NewConfigFlags(false)
|
||||||
if namespace != "" {
|
if namespace != "" {
|
||||||
configFlags.Namespace = &namespace
|
configFlags.Namespace = &namespace
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
package libkubectl
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestGenerateConfigFlags(t *testing.T) {
|
||||||
|
config, err := generateConfigFlags("test-token", "https://api.example.com", "", "", false)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.NotNil(t, config)
|
||||||
|
|
||||||
|
_, err = generateConfigFlags("test-token", "", "", "", false)
|
||||||
|
require.Error(t, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestNewClient(t *testing.T) {
|
||||||
|
// Test with server and token
|
||||||
|
client, err := NewClient(&ClientAccess{
|
||||||
|
Token: "test-token",
|
||||||
|
ServerUrl: "https://api.example.com",
|
||||||
|
}, "", "", false)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.NotNil(t, client)
|
||||||
|
|
||||||
|
// Verify the client has the expected structure for a Kubernetes client
|
||||||
|
require.NotNil(t, client.factory, "Expected factory to be set")
|
||||||
|
require.NotNil(t, client.streams, "Expected streams to be set")
|
||||||
|
require.NotNil(t, client.out, "Expected output buffer to be set")
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestNewClientWithKubeconfig(t *testing.T) {
|
||||||
|
// Test with kubeconfig path
|
||||||
|
client, err := NewClient(&ClientAccess{
|
||||||
|
Token: "",
|
||||||
|
ServerUrl: "",
|
||||||
|
}, "test-namespace", "/path/to/kubeconfig", true)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.NotNil(t, client)
|
||||||
|
|
||||||
|
// Verify the client has the expected structure for a Kubernetes client
|
||||||
|
require.NotNil(t, client.factory, "Expected factory to be set")
|
||||||
|
require.NotNil(t, client.streams, "Expected streams to be set")
|
||||||
|
require.NotNil(t, client.out, "Expected output buffer to be set")
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestNewClientError(t *testing.T) {
|
||||||
|
// Test error case when both server and kubeconfig are empty
|
||||||
|
client, err := NewClient(&ClientAccess{
|
||||||
|
Token: "",
|
||||||
|
ServerUrl: "",
|
||||||
|
}, "", "", false)
|
||||||
|
require.Error(t, err)
|
||||||
|
require.Nil(t, client)
|
||||||
|
}
|
Loading…
Reference in New Issue