diff --git a/cmd/main.go b/cmd/main.go index 83e9bbd21..5976cdc8c 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -177,8 +177,8 @@ func main() { } // nsxClient is used to interact with NSX API. - nsxClient := nsx.GetClient(cf) - if nsxClient == nil { + nsxClient, err := nsx.GetClient(cf) + if err != nil { log.Error(err, "failed to get nsx client") os.Exit(1) } diff --git a/pkg/clean/clean.go b/pkg/clean/clean.go index eb8b5b3c9..35553d444 100644 --- a/pkg/clean/clean.go +++ b/pkg/clean/clean.go @@ -5,7 +5,6 @@ package clean import ( "errors" - "fmt" "k8s.io/client-go/util/retry" @@ -38,10 +37,6 @@ func Clean(cf *config.NSXOperatorConfig) error { if err := cf.ValidateConfigFromCmd(); err != nil { return errors.Join(ValidationFailed, err) } - nsxClient := nsx.GetClient(cf) - if nsxClient == nil { - return GetNSXClientFailed - } if cleanupService, err := InitializeCleanupService(cf); err != nil { return errors.Join(InitCleanupServiceFailed, err) } else if cleanupService.err != nil { @@ -72,9 +67,9 @@ func Clean(cf *config.NSXOperatorConfig) error { func InitializeCleanupService(cf *config.NSXOperatorConfig) (*CleanupService, error) { cleanupService := NewCleanupService() - nsxClient := nsx.GetClient(cf) - if nsxClient == nil { - return cleanupService, fmt.Errorf("failed to get nsx client") + nsxClient, err := nsx.GetClient(cf) + if err != nil { + return cleanupService, GetNSXClientFailed } var commonService = common.Service{ diff --git a/pkg/nsx/client.go b/pkg/nsx/client.go index bba1f19ad..0443415c0 100644 --- a/pkg/nsx/client.go +++ b/pkg/nsx/client.go @@ -119,7 +119,7 @@ func restConnector(c *Cluster) *client.RestConnector { return connector } -func GetClient(cf *config.NSXOperatorConfig) *Client { +func GetClient(cf *config.NSXOperatorConfig) (*Client, error) { // Set log level for vsphere-automation-sdk-go logger := logrus.New() vspherelog.SetLogger(logger) @@ -215,14 +215,17 @@ func GetClient(cf *config.NSXOperatorConfig) *Client { if !nsxClient.NSXCheckVersion(SecurityPolicy) { err := errors.New("SecurityPolicy feature support check failed") log.Error(err, "initial NSX version check for SecurityPolicy got error") + return nil, err } if !nsxClient.NSXCheckVersion(ServiceAccount) { err := errors.New("NSXServiceAccount feature support check failed") log.Error(err, "initial NSX version check for NSXServiceAccount got error") + return nil, err } if !nsxClient.NSXCheckVersion(ServiceAccountRestore) { err := errors.New("NSXServiceAccountRestore feature support check failed") log.Error(err, "initial NSX version check for NSXServiceAccountRestore got error") + return nil, err } if !nsxClient.NSXCheckVersion(VpcAviRule) { err := errors.New("VpcAviRule feature support check failed") @@ -233,7 +236,7 @@ func GetClient(cf *config.NSXOperatorConfig) *Client { log.Error(err, "initial NSX version check for ServiceAccountCertRotation got error") } - return nsxClient + return nsxClient, nil } func (client *Client) NSXCheckVersion(feature int) bool { diff --git a/pkg/nsx/client_test.go b/pkg/nsx/client_test.go index c305d8614..1cae38f65 100644 --- a/pkg/nsx/client_test.go +++ b/pkg/nsx/client_test.go @@ -64,8 +64,8 @@ func TestNSXHealthChecker_CheckNSXHealth(t *testing.T) { func TestGetClient(t *testing.T) { cf := config.NSXOperatorConfig{NsxConfig: &config.NsxConfig{NsxApiUser: "1", NsxApiPassword: "1"}} cf.VCConfig = &config.VCConfig{} - client := GetClient(&cf) - assert.True(t, client != nil) + _, err := GetClient(&cf) + assert.True(t, err == nil) cluster := &Cluster{} patches := gomonkey.ApplyMethod(reflect.TypeOf(cluster), "GetVersion", func(_ *Cluster) (*NsxVersion, error) { @@ -73,9 +73,9 @@ func TestGetClient(t *testing.T) { return nsxVersion, nil }) - client = GetClient(&cf) + client, err := GetClient(&cf) patches.Reset() - assert.True(t, client != nil) + assert.True(t, err == nil) securityPolicySupported := client.NSXCheckVersion(SecurityPolicy) assert.True(t, securityPolicySupported == false) assert.False(t, client.NSXCheckVersion(ServiceAccount)) @@ -86,9 +86,9 @@ func TestGetClient(t *testing.T) { nsxVersion := &NsxVersion{NodeVersion: "3.2.1"} return nsxVersion, nil }) - client = GetClient(&cf) + client, err = GetClient(&cf) patches.Reset() - assert.True(t, client != nil) + assert.True(t, err == nil) securityPolicySupported = client.NSXCheckVersion(SecurityPolicy) assert.True(t, securityPolicySupported == true) assert.False(t, client.NSXCheckVersion(ServiceAccount)) @@ -99,9 +99,9 @@ func TestGetClient(t *testing.T) { nsxVersion := &NsxVersion{NodeVersion: "4.1.0"} return nsxVersion, nil }) - client = GetClient(&cf) + client, err = GetClient(&cf) patches.Reset() - assert.True(t, client != nil) + assert.True(t, err == nil) securityPolicySupported = client.NSXCheckVersion(SecurityPolicy) assert.True(t, securityPolicySupported == true) assert.True(t, client.NSXCheckVersion(ServiceAccount)) @@ -112,9 +112,9 @@ func TestGetClient(t *testing.T) { nsxVersion := &NsxVersion{NodeVersion: "4.1.2"} return nsxVersion, nil }) - client = GetClient(&cf) + client, err = GetClient(&cf) patches.Reset() - assert.True(t, client != nil) + assert.True(t, err == nil) securityPolicySupported = client.NSXCheckVersion(SecurityPolicy) assert.True(t, securityPolicySupported == true) assert.True(t, client.NSXCheckVersion(ServiceAccount)) @@ -125,9 +125,9 @@ func TestGetClient(t *testing.T) { nsxVersion := &NsxVersion{NodeVersion: "4.1.3"} return nsxVersion, nil }) - client = GetClient(&cf) + client, err = GetClient(&cf) patches.Reset() - assert.True(t, client != nil) + assert.True(t, err == nil) securityPolicySupported = client.NSXCheckVersion(SecurityPolicy) assert.True(t, securityPolicySupported == true) assert.True(t, client.NSXCheckVersion(ServiceAccount)) @@ -142,7 +142,7 @@ func IsInstanceOf(objectPtr, typePtr interface{}) bool { func TestSRGetClient(t *testing.T) { cf := config.NSXOperatorConfig{NsxConfig: &config.NsxConfig{NsxApiUser: "admin", NsxApiPassword: "Admin!23Admin", NsxApiManagers: []string{"10.173.82.128"}}} cf.VCConfig = &config.VCConfig{} - client := GetClient(&cf) + client, _ := GetClient(&cf) st, error := client.StaticRouteClient.Get("default", "project-1", "vpc-2", "site1") if error == nil { fmt.Printf("sr %v\n", *st.ResourceType) diff --git a/test/e2e/nsxclient.go b/test/e2e/nsxclient.go index d96592bbe..dee315f5d 100644 --- a/test/e2e/nsxclient.go +++ b/test/e2e/nsxclient.go @@ -21,8 +21,8 @@ func NewNSXClient(configFile string) (*NSXClient, error) { if err != nil { return nil, err } - client := nsx.GetClient(cf) - if client == nil { + client, err := nsx.GetClient(cf) + if err != nil { return nil, fmt.Errorf("failed to get nsx client") } nsxClient := &NSXClient{}