Skip to content

Commit 076d423

Browse files
committed
test(e2e): Reserve and unreserve CP endpoint IP per test cluster
1 parent 11e642c commit 076d423

File tree

13 files changed

+452
-30
lines changed

13 files changed

+452
-30
lines changed

.github/workflows/e2e.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,6 @@ jobs:
9696
NUTANIX_USER: ${{ secrets.NUTANIX_USER }}
9797
NUTANIX_PASSWORD: ${{ secrets.NUTANIX_PASSWORD }}
9898
NUTANIX_PORT: ${{ vars.NUTANIX_PORT }}
99-
NUTANIX_INSECURE: false
10099
NUTANIX_PRISM_ELEMENT_CLUSTER_NAME: ${{ vars.NUTANIX_PRISM_ELEMENT_CLUSTER_NAME }}
101100
NUTANIX_SUBNET_NAME: ${{ vars.NUTANIX_SUBNET_NAME }}
102101
NUTANIX_MACHINE_TEMPLATE_IMAGE_NAME: ${{ vars.NUTANIX_MACHINE_TEMPLATE_IMAGE_NAME }}

api/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ replace github.com/nutanix-cloud-native/cluster-api-runtime-extensions-nutanix/c
1212
require (
1313
github.com/aws/aws-sdk-go v1.54.19
1414
github.com/nutanix-cloud-native/cluster-api-runtime-extensions-nutanix/common v0.7.0
15-
github.com/nutanix-cloud-native/prism-go-client v0.4.0
15+
github.com/nutanix-cloud-native/prism-go-client v0.4.1-0.20240704131014-072b7a88a7f5
1616
github.com/onsi/gomega v1.33.1
1717
k8s.io/api v0.29.6
1818
k8s.io/apiextensions-apiserver v0.29.6

api/go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,8 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G
8585
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
8686
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
8787
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
88-
github.com/nutanix-cloud-native/prism-go-client v0.4.0 h1:P9mLW6eyKMUXVQBzuVL5k7WjV1YwVu8XNpu2XAsRgGo=
89-
github.com/nutanix-cloud-native/prism-go-client v0.4.0/go.mod h1:bHxgYigeclzjuaMEdjpsIEO4k7sjzP4Gr7ooF6nWXcI=
88+
github.com/nutanix-cloud-native/prism-go-client v0.4.1-0.20240704131014-072b7a88a7f5 h1:R9Aaat25nA9mAIRGciy8QpkVzLOcuk+TV7U4s1kH8fQ=
89+
github.com/nutanix-cloud-native/prism-go-client v0.4.1-0.20240704131014-072b7a88a7f5/go.mod h1:C2eEpgqsMqwhliCKeoJOvkkWobeZr4d4DiaCR09pdHA=
9090
github.com/onsi/ginkgo/v2 v2.19.0 h1:9Cnnf7UHo57Hy3k6/m5k3dRfGTMXGvxhHFvkDTCTpvA=
9191
github.com/onsi/ginkgo/v2 v2.19.0/go.mod h1:rlwLi9PilAFJ8jCg9UE1QP6VBpd6/xj3SRC0d6TU0To=
9292
github.com/onsi/gomega v1.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk=

common/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ require (
5959
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
6060
github.com/modern-go/reflect2 v1.0.2 // indirect
6161
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
62-
github.com/nutanix-cloud-native/prism-go-client v0.4.0 // indirect
62+
github.com/nutanix-cloud-native/prism-go-client v0.4.1-0.20240704131014-072b7a88a7f5 // indirect
6363
github.com/pkg/errors v0.9.1 // indirect
6464
github.com/pmezard/go-difflib v1.0.0 // indirect
6565
github.com/prometheus/client_golang v1.18.0 // indirect

common/go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,8 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G
106106
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
107107
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
108108
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
109-
github.com/nutanix-cloud-native/prism-go-client v0.4.0 h1:P9mLW6eyKMUXVQBzuVL5k7WjV1YwVu8XNpu2XAsRgGo=
110-
github.com/nutanix-cloud-native/prism-go-client v0.4.0/go.mod h1:bHxgYigeclzjuaMEdjpsIEO4k7sjzP4Gr7ooF6nWXcI=
109+
github.com/nutanix-cloud-native/prism-go-client v0.4.1-0.20240704131014-072b7a88a7f5 h1:R9Aaat25nA9mAIRGciy8QpkVzLOcuk+TV7U4s1kH8fQ=
110+
github.com/nutanix-cloud-native/prism-go-client v0.4.1-0.20240704131014-072b7a88a7f5/go.mod h1:C2eEpgqsMqwhliCKeoJOvkkWobeZr4d4DiaCR09pdHA=
111111
github.com/onsi/ginkgo/v2 v2.19.0 h1:9Cnnf7UHo57Hy3k6/m5k3dRfGTMXGvxhHFvkDTCTpvA=
112112
github.com/onsi/ginkgo/v2 v2.19.0/go.mod h1:rlwLi9PilAFJ8jCg9UE1QP6VBpd6/xj3SRC0d6TU0To=
113113
github.com/onsi/gomega v1.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk=

go.mod

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,13 @@ require (
1717
github.com/go-logr/logr v1.4.2
1818
github.com/gobuffalo/flect v1.0.2
1919
github.com/google/go-cmp v0.6.0
20+
github.com/google/uuid v1.4.0
2021
github.com/nutanix-cloud-native/cluster-api-runtime-extensions-nutanix/api v0.0.0-00010101000000-000000000000
2122
github.com/nutanix-cloud-native/cluster-api-runtime-extensions-nutanix/common v0.7.0
22-
github.com/nutanix-cloud-native/prism-go-client v0.4.0
23+
github.com/nutanix-cloud-native/prism-go-client v0.4.1-0.20240704131014-072b7a88a7f5
24+
github.com/nutanix/ntnx-api-golang-clients/clustermgmt-go-client/v4 v4.0.1-beta.2
25+
github.com/nutanix/ntnx-api-golang-clients/networking-go-client/v4 v4.0.2-beta.1
26+
github.com/nutanix/ntnx-api-golang-clients/prism-go-client/v4 v4.0.1-beta.1
2327
github.com/onsi/ginkgo/v2 v2.19.0
2428
github.com/onsi/gomega v1.33.1
2529
github.com/pkg/errors v0.9.1
@@ -84,7 +88,8 @@ require (
8488
github.com/google/gofuzz v1.2.0 // indirect
8589
github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6 // indirect
8690
github.com/google/safetext v0.0.0-20220905092116-b49f7bc46da2 // indirect
87-
github.com/google/uuid v1.4.0 // indirect
91+
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
92+
github.com/hashicorp/go-retryablehttp v0.7.1 // indirect
8893
github.com/hashicorp/hcl v1.0.0 // indirect
8994
github.com/huandu/xstrings v1.4.0 // indirect
9095
github.com/imdario/mergo v0.3.13 // indirect
@@ -103,6 +108,8 @@ require (
103108
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
104109
github.com/modern-go/reflect2 v1.0.2 // indirect
105110
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
111+
github.com/nutanix/ntnx-api-golang-clients/storage-go-client/v4 v4.0.2-alpha.3 // indirect
112+
github.com/nutanix/ntnx-api-golang-clients/vmm-go-client/v4 v4.0.1-beta.1 // indirect
106113
github.com/opencontainers/go-digest v1.0.0 // indirect
107114
github.com/opencontainers/image-spec v1.1.0-rc5 // indirect
108115
github.com/pelletier/go-toml v1.9.5 // indirect
@@ -115,6 +122,7 @@ require (
115122
github.com/sagikazarmark/locafero v0.4.0 // indirect
116123
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
117124
github.com/shopspring/decimal v1.3.1 // indirect
125+
github.com/sirupsen/logrus v1.9.0 // indirect
118126
github.com/sourcegraph/conc v0.3.0 // indirect
119127
github.com/spf13/afero v1.11.0 // indirect
120128
github.com/spf13/cast v1.6.0 // indirect

go.sum

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ github.com/evanphx/json-patch v5.7.0+incompatible h1:vgGkfT/9f8zE6tvSCe74nfpAVDQ
7070
github.com/evanphx/json-patch v5.7.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
7171
github.com/evanphx/json-patch/v5 v5.9.0 h1:kcBlZQbplgElYIlo/n1hJbls2z/1awpXxpRi0/FOJfg=
7272
github.com/evanphx/json-patch/v5 v5.9.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ=
73+
github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM=
74+
github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
7375
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
7476
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
7577
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
@@ -130,6 +132,14 @@ github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgf
130132
github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo=
131133
github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms=
132134
github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg=
135+
github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
136+
github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
137+
github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
138+
github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ=
139+
github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c=
140+
github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=
141+
github.com/hashicorp/go-retryablehttp v0.7.1 h1:sUiuQAnLlbvmExtFQs72iFW/HXeUn8Z1aJLQ4LJJbTQ=
142+
github.com/hashicorp/go-retryablehttp v0.7.1/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY=
133143
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
134144
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
135145
github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
@@ -161,6 +171,8 @@ github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0V
161171
github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
162172
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
163173
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
174+
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
175+
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
164176
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
165177
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
166178
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg=
@@ -184,8 +196,18 @@ github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
184196
github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
185197
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
186198
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
187-
github.com/nutanix-cloud-native/prism-go-client v0.4.0 h1:P9mLW6eyKMUXVQBzuVL5k7WjV1YwVu8XNpu2XAsRgGo=
188-
github.com/nutanix-cloud-native/prism-go-client v0.4.0/go.mod h1:bHxgYigeclzjuaMEdjpsIEO4k7sjzP4Gr7ooF6nWXcI=
199+
github.com/nutanix-cloud-native/prism-go-client v0.4.1-0.20240704131014-072b7a88a7f5 h1:R9Aaat25nA9mAIRGciy8QpkVzLOcuk+TV7U4s1kH8fQ=
200+
github.com/nutanix-cloud-native/prism-go-client v0.4.1-0.20240704131014-072b7a88a7f5/go.mod h1:C2eEpgqsMqwhliCKeoJOvkkWobeZr4d4DiaCR09pdHA=
201+
github.com/nutanix/ntnx-api-golang-clients/clustermgmt-go-client/v4 v4.0.1-beta.2 h1:s1u5/GEw3mTZakepJoTD1OvPVU1YuioRxmKZin+W99s=
202+
github.com/nutanix/ntnx-api-golang-clients/clustermgmt-go-client/v4 v4.0.1-beta.2/go.mod h1:sd4Fnk6MVfEDVY+8WyRoQTmLhi2SgZ3riySWErVHf8E=
203+
github.com/nutanix/ntnx-api-golang-clients/networking-go-client/v4 v4.0.2-beta.1 h1:PvZQwYhhJtxmzLpnzEhHTpp2fV6woc6W65PHGsHzVfs=
204+
github.com/nutanix/ntnx-api-golang-clients/networking-go-client/v4 v4.0.2-beta.1/go.mod h1:+eZgV1+xL/r84qmuFSVt5R8OFRO70rEz92jOnVgJNco=
205+
github.com/nutanix/ntnx-api-golang-clients/prism-go-client/v4 v4.0.1-beta.1 h1:hvy3QCc2SgVidYxTq0rRPOazJOt1PP8A86kW7j6sywU=
206+
github.com/nutanix/ntnx-api-golang-clients/prism-go-client/v4 v4.0.1-beta.1/go.mod h1:Yhk+xD4mN90OKEHnk5ARf97CX5p4+MEC/B/YIVoZeZ0=
207+
github.com/nutanix/ntnx-api-golang-clients/storage-go-client/v4 v4.0.2-alpha.3 h1:K3I9YtqKcKKxSL4+tcxnFeLOoaptiVlpsOJ9Xzq3shM=
208+
github.com/nutanix/ntnx-api-golang-clients/storage-go-client/v4 v4.0.2-alpha.3/go.mod h1:kz3gO87xtWnPOCP2kN7yw5LvCDVRnvg8BOWL7CarqXA=
209+
github.com/nutanix/ntnx-api-golang-clients/vmm-go-client/v4 v4.0.1-beta.1 h1:XuTRvYu1kiNjdXOYVwyjhKlFWyo9nMit6GsOYV8+5Cg=
210+
github.com/nutanix/ntnx-api-golang-clients/vmm-go-client/v4 v4.0.1-beta.1/go.mod h1:CaWm4GFpAjQQDc6YXl/dUDrHpuW54h8j6Cj7EslE4Qk=
189211
github.com/onsi/ginkgo/v2 v2.19.0 h1:9Cnnf7UHo57Hy3k6/m5k3dRfGTMXGvxhHFvkDTCTpvA=
190212
github.com/onsi/ginkgo/v2 v2.19.0/go.mod h1:rlwLi9PilAFJ8jCg9UE1QP6VBpd6/xj3SRC0d6TU0To=
191213
github.com/onsi/gomega v1.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk=
@@ -331,6 +353,7 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc
331353
golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
332354
golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
333355
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
356+
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
334357
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
335358
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
336359
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=

test/e2e/config/caren.yaml

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -190,21 +190,17 @@ variables:
190190
# set as empty here to enable running the e2e tests for non-nutanix providers locally without setting the env var.
191191
NUTANIX_ENDPOINT: ""
192192
# # Port of Prism Central. Default: 9440
193-
# NUTANIX_PORT: 9440
194-
# # Disable Prism Central certificate checking. Default: false
195-
# NUTANIX_INSECURE: false
193+
NUTANIX_PORT: 9440
196194
# # Prism Central user
197195
NUTANIX_USER: ""
198196
# # Prism Central password
199197
NUTANIX_PASSWORD: ""
200-
# # Host IP to be assigned to the CAPX Kubernetes cluster.
201-
# CONTROL_PLANE_ENDPOINT_IP: ""
202198
# # Port of the CAPX Kubernetes cluster. Default: 6443
203199
# CONTROL_PLANE_ENDPOINT_PORT: 6443
204200
# # Name of the Prism Element cluster.
205201
# NUTANIX_PRISM_ELEMENT_CLUSTER_NAME: ""
206202
# # Name of the OS image pre-uploaded in PC.
207-
# NUTANIX_MACHINE_TEMPLATE_IMAGE_NAME: ""
203+
NUTANIX_MACHINE_TEMPLATE_IMAGE_NAME: "nkp-rocky-9.4-1.29.6-20240704044125"
208204
# # Name of the subnet to be assigned to the VMs.
209205
# NUTANIX_SUBNET_NAME: ""
210206
# # Name of the storage container to CSI driver

test/e2e/framework/nutanix/client.go

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
//go:build e2e
2+
3+
// Copyright 2024 Nutanix. All rights reserved.
4+
// SPDX-License-Identifier: Apache-2.0
5+
6+
package nutanix
7+
8+
import (
9+
"context"
10+
"fmt"
11+
"time"
12+
13+
prismcommonapi "github.com/nutanix/ntnx-api-golang-clients/prism-go-client/v4/models/common/v1/config"
14+
prismapi "github.com/nutanix/ntnx-api-golang-clients/prism-go-client/v4/models/prism/v4/config"
15+
"k8s.io/apimachinery/pkg/util/wait"
16+
"k8s.io/utils/ptr"
17+
"sigs.k8s.io/cluster-api/test/framework/clusterctl"
18+
19+
prismgoclient "github.com/nutanix-cloud-native/prism-go-client"
20+
prismclientv4 "github.com/nutanix-cloud-native/prism-go-client/v4"
21+
)
22+
23+
const (
24+
prismEndpointVariableName = "NUTANIX_ENDPOINT"
25+
prismPortVariableName = "NUTANIX_PORT"
26+
prismUsernameVariableName = "NUTANIX_USER"
27+
prismPasswordVariableName = "NUTANIX_PASSWORD"
28+
)
29+
30+
func CredentialsFromCAPIE2EConfig(e2eConfig *clusterctl.E2EConfig) *prismgoclient.Credentials {
31+
return &prismgoclient.Credentials{
32+
Endpoint: e2eConfig.GetVariable(prismEndpointVariableName),
33+
Port: e2eConfig.GetVariable(prismPortVariableName),
34+
Username: e2eConfig.GetVariable(prismUsernameVariableName),
35+
Password: e2eConfig.GetVariable(prismPasswordVariableName),
36+
Insecure: false,
37+
}
38+
}
39+
40+
func NewV4Client(credentials *prismgoclient.Credentials) (*prismclientv4.Client, error) {
41+
v4Client, err := prismclientv4.NewV4Client(*credentials)
42+
if err != nil {
43+
return nil, fmt.Errorf("failed to create Nutanix V4 API client: %w", err)
44+
}
45+
46+
return v4Client, nil
47+
}
48+
49+
func WaitForTaskCompletion(
50+
ctx context.Context,
51+
taskID string,
52+
v4Client *prismclientv4.Client,
53+
) ([]prismcommonapi.KVPair, error) {
54+
var data []prismcommonapi.KVPair
55+
56+
if err := wait.PollUntilContextCancel(
57+
ctx,
58+
100*time.Millisecond,
59+
true,
60+
func(ctx context.Context) (done bool, err error) {
61+
task, err := v4Client.TasksApiInstance.GetTaskById(ptr.To(taskID))
62+
if err != nil {
63+
return false, fmt.Errorf("failed to get task %s: %w", taskID, err)
64+
}
65+
66+
taskData, ok := task.GetData().(prismapi.Task)
67+
if !ok {
68+
return false, fmt.Errorf("unexpected task data type %[1]T: %+[1]v", task.GetData())
69+
}
70+
71+
if ptr.Deref(taskData.Status, prismapi.TASKSTATUS_UNKNOWN) != prismapi.TASKSTATUS_SUCCEEDED {
72+
return false, nil
73+
}
74+
75+
data = taskData.CompletionDetails
76+
77+
return true, nil
78+
},
79+
); err != nil {
80+
return nil, fmt.Errorf("failed to wait for task %s to complete: %w", taskID, err)
81+
}
82+
83+
return data, nil
84+
}

test/e2e/framework/nutanix/cluster.go

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
//go:build e2e
2+
3+
// Copyright 2024 Nutanix. All rights reserved.
4+
// SPDX-License-Identifier: Apache-2.0
5+
6+
package nutanix
7+
8+
import (
9+
"fmt"
10+
11+
"github.com/google/uuid"
12+
clustersapi "github.com/nutanix/ntnx-api-golang-clients/clustermgmt-go-client/v4/models/clustermgmt/v4/config"
13+
"k8s.io/utils/ptr"
14+
15+
prismclientv4 "github.com/nutanix-cloud-native/prism-go-client/v4"
16+
)
17+
18+
func GetClusterUUIDFromName(cluster string, v4Client *prismclientv4.Client) (uuid.UUID, error) {
19+
clusterUUID, err := uuid.Parse(cluster)
20+
if err == nil {
21+
return clusterUUID, nil
22+
}
23+
24+
response, err := v4Client.ClustersApiInstance.ListClusters(
25+
nil,
26+
nil,
27+
ptr.To(`name eq '`+cluster+`'`),
28+
nil,
29+
nil,
30+
nil,
31+
)
32+
if err != nil {
33+
return uuid.UUID{}, fmt.Errorf(
34+
"failed to find cluster uuid for cluster %s: %w",
35+
cluster,
36+
err,
37+
)
38+
}
39+
clusters := response.GetData()
40+
if clusters == nil {
41+
return uuid.UUID{}, fmt.Errorf("no cluster found with name %s", cluster)
42+
}
43+
44+
switch apiClusters := clusters.(type) {
45+
case []clustersapi.Cluster:
46+
if len(apiClusters) == 0 {
47+
return uuid.UUID{}, fmt.Errorf("no subnet found with name %s", cluster)
48+
}
49+
50+
clusterUUID, err := uuid.Parse(*apiClusters[0].ExtId)
51+
if err != nil {
52+
return uuid.UUID{}, fmt.Errorf("failed to parse cluster uuid for cluster %s: %w", cluster, err)
53+
}
54+
55+
return clusterUUID, nil
56+
default:
57+
return uuid.UUID{}, fmt.Errorf("unknown response: %+v", clusters)
58+
}
59+
}

0 commit comments

Comments
 (0)