88 "fmt"
99
1010 corev1 "k8s.io/api/core/v1"
11+ apierrors "k8s.io/apimachinery/pkg/api/errors"
1112 "k8s.io/apimachinery/pkg/types"
1213
1314 prismgoclient "github.com/nutanix-cloud-native/prism-go-client"
@@ -52,7 +53,6 @@ func newCredentialsCheck(
5253 // However, the credentials configuration is missing, so we cannot perform the check.
5354 if cd .nutanixClusterConfigSpec == nil || cd .nutanixClusterConfigSpec .Nutanix == nil {
5455 credentialsCheck .result .Allowed = false
55- credentialsCheck .result .Error = true
5656 credentialsCheck .result .Causes = append (credentialsCheck .result .Causes ,
5757 preflight.Cause {
5858 Message : "Nutanix cluster configuration is not defined in the cluster spec" ,
@@ -69,7 +69,6 @@ func newCredentialsCheck(
6969 if err != nil {
7070 // Should not happen if the cluster passed CEL validation rules.
7171 credentialsCheck .result .Allowed = false
72- credentialsCheck .result .Error = true
7372 credentialsCheck .result .Causes = append (credentialsCheck .result .Causes ,
7473 preflight.Cause {
7574 Message : fmt .Sprintf ("failed to parse Prism Central endpoint URL: %s" , err ),
@@ -88,25 +87,39 @@ func newCredentialsCheck(
8887 },
8988 credentialsSecret ,
9089 )
90+ if apierrors .IsNotFound (err ) {
91+ credentialsCheck .result .Allowed = false
92+ credentialsCheck .result .InternalError = false
93+ credentialsCheck .result .Causes = append (credentialsCheck .result .Causes ,
94+ preflight.Cause {
95+ Message : fmt .Sprintf ("Prism Central credentials Secret %q not found" ,
96+ prismCentralEndpointSpec .Credentials .SecretRef .Name ),
97+ Field : "cluster.spec.topology.variables[.name=clusterConfig].nutanix.prismCentralEndpoint.credentials.secretRef" ,
98+ },
99+ )
100+ return credentialsCheck
101+ }
91102 if err != nil {
92103 credentialsCheck .result .Allowed = false
93- credentialsCheck .result .Error = true
104+ credentialsCheck .result .InternalError = true
94105 credentialsCheck .result .Causes = append (credentialsCheck .result .Causes ,
95106 preflight.Cause {
96- Message : fmt .Sprintf ("failed to get Prism Central credentials Secret: %s" , err ),
97- Field : "cluster.spec.topology.variables[.name=clusterConfig].nutanix.prismCentralEndpoint.credentials.secretRef" ,
107+ Message : fmt .Sprintf ("Failed to get Prism Central credentials Secret %q: %s" ,
108+ prismCentralEndpointSpec .Credentials .SecretRef .Name ,
109+ err ,
110+ ),
111+ Field : "cluster.spec.topology.variables[.name=clusterConfig].nutanix.prismCentralEndpoint.credentials.secretRef" ,
98112 },
99113 )
100114 return credentialsCheck
101115 }
102116
103117 if len (credentialsSecret .Data ) == 0 {
104118 credentialsCheck .result .Allowed = false
105- credentialsCheck .result .Error = true
106119 credentialsCheck .result .Causes = append (credentialsCheck .result .Causes ,
107120 preflight.Cause {
108121 Message : fmt .Sprintf (
109- "credentials Secret '%s' is empty" ,
122+ "credentials Secret %q is empty" ,
110123 prismCentralEndpointSpec .Credentials .SecretRef .Name ,
111124 ),
112125 Field : "cluster.spec.topology.variables[.name=clusterConfig].nutanix.prismCentralEndpoint.credentials.secretRef" ,
@@ -118,11 +131,10 @@ func newCredentialsCheck(
118131 data , ok := credentialsSecret .Data [credentialsSecretDataKey ]
119132 if ! ok {
120133 credentialsCheck .result .Allowed = false
121- credentialsCheck .result .Error = true
122134 credentialsCheck .result .Causes = append (credentialsCheck .result .Causes ,
123135 preflight.Cause {
124136 Message : fmt .Sprintf (
125- "credentials Secret '%s' does not contain key '%s' " ,
137+ "credentials Secret %q does not contain key %q " ,
126138 prismCentralEndpointSpec .Credentials .SecretRef .Name ,
127139 credentialsSecretDataKey ,
128140 ),
@@ -135,7 +147,6 @@ func newCredentialsCheck(
135147 usernamePassword , err := prismcredentials .ParseCredentials (data )
136148 if err != nil {
137149 credentialsCheck .result .Allowed = false
138- credentialsCheck .result .Error = true
139150 credentialsCheck .result .Causes = append (credentialsCheck .result .Causes ,
140151 preflight.Cause {
141152 Message : fmt .Sprintf ("failed to parse Prism Central credentials: %s" , err ),
@@ -158,7 +169,7 @@ func newCredentialsCheck(
158169 nclient , err := nclientFactory (credentials )
159170 if err != nil {
160171 credentialsCheck .result .Allowed = false
161- credentialsCheck .result .Error = true
172+ credentialsCheck .result .InternalError = true
162173 credentialsCheck .result .Causes = append (credentialsCheck .result .Causes ,
163174 preflight.Cause {
164175 Message : fmt .Sprintf ("Failed to initialize Nutanix client: %s" , err ),
@@ -172,7 +183,7 @@ func newCredentialsCheck(
172183 _ , err = nclient .GetCurrentLoggedInUser (ctx )
173184 if err != nil {
174185 credentialsCheck .result .Allowed = false
175- credentialsCheck .result .Error = true
186+ credentialsCheck .result .InternalError = true
176187 credentialsCheck .result .Causes = append (credentialsCheck .result .Causes ,
177188 preflight.Cause {
178189 Message : fmt .Sprintf ("Failed to validate credentials using the v3 API client. " +
0 commit comments