@@ -6,22 +6,45 @@ import (
66
77 corev1 "k8s.io/api/core/v1"
88 "k8s.io/apimachinery/pkg/types"
9- clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
109 ctrlclient "sigs.k8s.io/controller-runtime/pkg/client"
1110
1211 prismgoclient "github.com/nutanix-cloud-native/prism-go-client"
1312 prismcredentials "github.com/nutanix-cloud-native/prism-go-client/environment/credentials"
13+ prismv4 "github.com/nutanix-cloud-native/prism-go-client/v4"
1414
1515 carenv1 "github.com/nutanix-cloud-native/cluster-api-runtime-extensions-nutanix/api/v1alpha1"
1616 "github.com/nutanix-cloud-native/cluster-api-runtime-extensions-nutanix/pkg/webhook/preflight"
1717)
1818
1919const credentialsSecretDataKey = "credentials"
2020
21+ func newV4Client (ctx context.Context ,
22+ client ctrlclient.Client ,
23+ clusterNamespace string ,
24+ prismCentralEndpointSpec * carenv1.NutanixPrismCentralEndpointSpec ,
25+ ) (* prismv4.Client , []preflight.Cause ) {
26+ credentials , causes := getCredentials (ctx , client , clusterNamespace , prismCentralEndpointSpec )
27+ if len (causes ) > 0 {
28+ return nil , causes
29+ }
30+
31+ nv4client , err := prismv4 .NewV4Client (* credentials )
32+ if err != nil {
33+ return nil , []preflight.Cause {
34+ {
35+ Message : fmt .Sprintf ("failed to create Prism Central client: %s" , err ),
36+ Field : "cluster.spec.topology.variables[.name=clusterConfig].nutanix.prismCentralEndpoint" ,
37+ },
38+ }
39+ }
40+
41+ return nv4client , nil
42+ }
43+
2144func getCredentials (
2245 ctx context.Context ,
2346 client ctrlclient.Client ,
24- cluster * clusterv1. Cluster ,
47+ clusterNamespace string ,
2548 prismCentralEndpointSpec * carenv1.NutanixPrismCentralEndpointSpec ,
2649) (* prismgoclient.Credentials , []preflight.Cause ) {
2750 if prismCentralEndpointSpec == nil {
@@ -36,7 +59,7 @@ func getCredentials(
3659 if prismCentralEndpointSpec .Credentials .SecretRef .Name == "" {
3760 return nil , []preflight.Cause {
3861 {
39- Message : "Prism Central credentials secret reference is missing the name" ,
62+ Message : "Prism Central credentials reference is missing the name" ,
4063 Field : "cluster.spec.topology.variables[.name=clusterConfig].nutanix.prismCentralEndpoint.credentials.secretRef.name" ,
4164 },
4265 }
@@ -46,14 +69,14 @@ func getCredentials(
4669 if err := client .Get (
4770 ctx ,
4871 types.NamespacedName {
49- Namespace : cluster . Namespace ,
72+ Namespace : clusterNamespace ,
5073 Name : prismCentralEndpointSpec .Credentials .SecretRef .Name ,
5174 },
5275 credentialsSecret ,
5376 ); err != nil {
5477 return nil , []preflight.Cause {
5578 {
56- Message : fmt .Sprintf ("failed to get the credentials Secret: %s" , err ),
79+ Message : fmt .Sprintf ("failed to get credentials Secret: %s" , err ),
5780 Field : "cluster.spec.topology.variables[.name=clusterConfig].nutanix.prismCentralEndpoint.credentials.secretRef" ,
5881 },
5982 }
0 commit comments