Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,8 @@ linters-settings:
alias: "ibmpowervsv1"
- pkg: "sigs.k8s.io/cluster-api-provider-openstack/api/v1beta1"
alias: "openstackv1"
- pkg: "github.com/nutanix-cloud-native/cluster-api-provider-nutanix/api/v1beta1"
alias: "nutanixv1"
- pkg: "github.com/openshift/api/machine/v1"
alias: "mapiv1"
- pkg: "github.com/openshift/api/machine/v1beta1"
Expand Down
5 changes: 5 additions & 0 deletions cmd/cluster-capi-operator/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ import (
"sigs.k8s.io/controller-runtime/pkg/manager"
crwebhook "sigs.k8s.io/controller-runtime/pkg/webhook"

nutanixv1 "github.com/nutanix-cloud-native/cluster-api-provider-nutanix/api/v1beta1"
configv1 "github.com/openshift/api/config/v1"
mapiv1 "github.com/openshift/api/machine/v1"
mapiv1beta1 "github.com/openshift/api/machine/v1beta1"
Expand Down Expand Up @@ -88,6 +89,7 @@ func initScheme(scheme *runtime.Scheme) {
utilruntime.Must(mapiv1.AddToScheme(scheme))
utilruntime.Must(mapiv1beta1.AddToScheme(scheme))
utilruntime.Must(metal3v1.AddToScheme(scheme))
utilruntime.Must(nutanixv1.AddToScheme(scheme))
}

//nolint:funlen
Expand Down Expand Up @@ -287,6 +289,9 @@ func setupPlatformReconcilers(mgr manager.Manager, infra *configv1.Infrastructur
case configv1.BareMetalPlatformType:
setupReconcilers(mgr, infra, platform, &metal3v1.Metal3Cluster{}, containerImages, applyClient, apiextensionsClient, managedNamespace)
setupWebhooks(mgr)
case configv1.NutanixPlatformType:
setupReconcilers(mgr, infra, platform, &nutanixv1.NutanixCluster{}, containerImages, applyClient, apiextensionsClient, managedNamespace)
setupWebhooks(mgr)
default:
klog.Infof("Detected platform %q is not supported, skipping capi controllers setup", platform)

Expand Down
2 changes: 2 additions & 0 deletions e2e/e2e_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import (
runtimeclient "sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/client/config"

nutanixv1 "github.com/nutanix-cloud-native/cluster-api-provider-nutanix/api/v1beta1"
configv1 "github.com/openshift/api/config/v1"
mapiv1 "github.com/openshift/api/machine/v1beta1"
"sigs.k8s.io/controller-runtime/pkg/envtest/komega"
Expand Down Expand Up @@ -49,6 +50,7 @@ func init() {
utilruntime.Must(vspherev1.AddToScheme(scheme.Scheme))
utilruntime.Must(metal3v1.AddToScheme(scheme.Scheme))
utilruntime.Must(bmov1alpha1.AddToScheme(scheme.Scheme))
utilruntime.Must(nutanixv1.AddToScheme(scheme.Scheme))
}

func TestAPIs(t *testing.T) {
Expand Down
2 changes: 2 additions & 0 deletions e2e/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ require (
github.com/google/go-cmp v0.7.0
github.com/metal3-io/baremetal-operator/apis v0.5.1
github.com/metal3-io/cluster-api-provider-metal3/api v1.10.1
github.com/nutanix-cloud-native/cluster-api-provider-nutanix v1.7.2
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

Add Nutanix deps: verify compatibility and build/vendor wiring

Looks good. Please:

  • Ensure the root module also requires the Nutanix provider (cmd/cluster-capi-operator imports nutanixv1).
  • Run tidy/vendor in both root and e2e modules and commit go.sum/vendor changes.
  • Double-check CAPN v1.7.2 compatibility with CAPI v1.10.4 in this repo.

Also applies to: 80-80


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "Check root go.mod has CAPN dep (exclude e2e/):"
fd -a go.mod | grep -v '^e2e/' | xargs rg -n 'nutanix-cloud-native/cluster-api-provider-nutanix' || { echo "Missing CAPN in root go.mod"; exit 1; }

echo "Search for Nutanix images/manifests (operators install step needs these):"
fd -a -t f -E 'e2e/**' 'dev-images.json' | xargs -r rg -n -i 'nutanix' || true
fd -a -t f -E 'e2e/**' -e '.yaml' -e '.yml' | xargs -r rg -n -i 'nutanix' || true

echo "Tidy both modules (no network in CI mirrors may be required):"
if [ -f go.mod ]; then
  echo "Root tidy"; grep -q '^module ' go.mod && true
fi
if [ -f e2e/go.mod ]; then
  echo "e2e tidy check"; grep -q '^module ' e2e/go.mod && true
fi

Length of output: 28397



---

🏁 Script executed:

```shell
#!/bin/bash
set -euo pipefail

echo "Check CAPI version in root go.mod:"
rg -n 'sigs\.k8s\.io/cluster-api' /home/jailuser/git/go.mod || echo "CAPI not found"

Length of output: 383



---

🌐 Web query:

```web
cluster-api-provider-nutanix v1.7.2 release notes CAPI compatibility

💡 Result:

cluster-api-provider-nutanix v1.7.2 (CAPX v1.7.x) is validated to work with Cluster API (CAPI) v1.3.x through v1.9.x. [1][2]

Sources:

  • Nutanix CAPX validated integrations (CAPX v1.7.x → CAPI v1.3.x–v1.9.x). [1]
  • Cluster API v1.7.2 release notes (context for CAPI v1.7.x). [2]

⚠️ Critical: CAPN v1.7.2 incompatible with CAPI v1.10.4

CAPN v1.7.2 is validated only for CAPI v1.3.x–v1.9.x, but the root go.mod specifies CAPI v1.10.4. Upgrade CAPN to a version supporting v1.10.4 or downgrade CAPI to v1.9.x or earlier.

Root go.mod already correctly declares CAPN v1.7.2 (line 14), and manifests include Nutanix provider assets. However, resolve the version incompatibility before merging.

🤖 Prompt for AI Agents
In e2e/go.mod around line 10, the project pins
github.com/nutanix-cloud-native/cluster-api-provider-nutanix v1.7.2 which is
incompatible with the root CAPI version v1.10.4; update the Nutanix provider to
a release that declares compatibility with CAPI v1.10.x (or alternatively
downgrade the root CAPI to v1.9.x or earlier). Modify e2e/go.mod to reference a
CAPN version that supports CAPI v1.10.4 (or change the root go.mod CAPI
dependency to a compatible v1.9.x), then run go mod tidy and verify
manifests/builds to ensure the versions resolve and integration tests pass
before merging.

github.com/onsi/ginkgo/v2 v2.23.4
github.com/onsi/gomega v1.38.0
github.com/openshift/api v0.0.0-20250731015415-ed654edbd7c6
Expand Down Expand Up @@ -76,6 +77,7 @@ require (
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/nutanix-cloud-native/prism-go-client v0.5.0 // indirect
github.com/oklog/ulid v1.3.1 // indirect
github.com/openshift/client-go v0.0.0-20250710075018-396b36f983ee // indirect
github.com/openshift/cluster-api-actuator-pkg/testutils v0.0.0-20250821122144-fd0936342469 // indirect
Expand Down
16 changes: 16 additions & 0 deletions e2e/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,8 @@ github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv
github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ=
github.com/gabriel-vasile/mimetype v1.4.8 h1:FfZ3gj38NjllZIeJAmMhr+qKL8Wu+nOoI3GqacKw1NM=
github.com/gabriel-vasile/mimetype v1.4.8/go.mod h1:ByKUIKGjh1ODkGM1asKUbQZOLGrPjydw3hYPU2YU9t8=
github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=
github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
Expand Down Expand Up @@ -115,6 +117,8 @@ github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J0b1vyeLSOYI8bm5wbJM/8yDe8=
github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA=
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4=
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
Expand Down Expand Up @@ -168,8 +172,14 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/2gBQ3RWajuToeY6ZtZTIKv2v7ThUy5KKusIT0yc0=
github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/nutanix-cloud-native/cluster-api-provider-nutanix v1.7.2 h1:+ppriYkMNsQPE6+pa0WOPOXsY/G8ZIZmF5gRjhi2RZU=
github.com/nutanix-cloud-native/cluster-api-provider-nutanix v1.7.2/go.mod h1:6AJwae8W/nGmITlnuTnvMxCxxztctEAUJulxC9z/jgU=
github.com/nutanix-cloud-native/prism-go-client v0.5.0 h1:aSNuKDOK7+q676MQyetYXcySY41IjSvN2UmrDIU3+6s=
github.com/nutanix-cloud-native/prism-go-client v0.5.0/go.mod h1:QhLX+sEep0cStzHVYU6mPgIlnA8U3DySskagrbDprRk=
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4=
Expand Down Expand Up @@ -245,6 +255,8 @@ github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4=
github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
github.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ=
github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
Expand Down Expand Up @@ -381,6 +393,10 @@ sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7np
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
sigs.k8s.io/kube-storage-version-migrator v0.0.6-0.20230721195810-5c8923c5ff96 h1:PFWFSkpArPNJxFX4ZKWAk9NSeRoZaXschn+ULa4xVek=
sigs.k8s.io/kube-storage-version-migrator v0.0.6-0.20230721195810-5c8923c5ff96/go.mod h1:EOBQyBowOUsd7U4CJnMHNE0ri+zCXyouGdLwC/jZU+I=
sigs.k8s.io/kustomize/api v0.19.0 h1:F+2HB2mU1MSiR9Hp1NEgoU2q9ItNOaBJl0I4Dlus5SQ=
sigs.k8s.io/kustomize/api v0.19.0/go.mod h1:/BbwnivGVcBh1r+8m3tH1VNxJmHSk1PzP5fkP6lbL1o=
sigs.k8s.io/kustomize/kyaml v0.19.0 h1:RFge5qsO1uHhwJsu3ipV7RNolC7Uozc0jUBC/61XSlA=
sigs.k8s.io/kustomize/kyaml v0.19.0/go.mod h1:FeKD5jEOH+FbZPpqUghBP8mrLjJ3+zD3/rf9NNu1cwY=
sigs.k8s.io/randfill v0.0.0-20250304075658-069ef1bbf016/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
Expand Down
131 changes: 131 additions & 0 deletions e2e/nutanix_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
package e2e

import (
nutanixv1 "github.com/nutanix-cloud-native/cluster-api-provider-nutanix/api/v1beta1"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
configv1 "github.com/openshift/api/config/v1"
"github.com/openshift/cluster-capi-operator/e2e/framework"
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
"sigs.k8s.io/controller-runtime/pkg/client"
)

var _ = Describe("Cluster API Nutanix InfraCluster", Ordered, func() {
var nutanixCluster *nutanixv1.NutanixCluster

BeforeAll(func() {
if platform != configv1.NutanixPlatformType {
Skip("Skipping Nutanix E2E tests")
}
})

AfterEach(func() {
if platform != configv1.NutanixPlatformType {
// Because AfterEach always runs, even when tests are skipped, we have to
// explicitly skip it here for other platforms.
Skip("Skipping Nutanix E2E tests")
}
})

It("should have a NutanixCluster created by the infracluster controller", func() {
By("Fetching the NutanixCluster object")
nutanixCluster = &nutanixv1.NutanixCluster{}
err := cl.Get(ctx, client.ObjectKey{
Name: clusterName,
Namespace: framework.CAPINamespace,
}, nutanixCluster)
Expect(err).ToNot(HaveOccurred(), "should be able to get the NutanixCluster")
Expect(nutanixCluster).ToNot(BeNil())
})

It("should have the correct ManagedBy annotation", func() {
By("Validating the ManagedBy annotation")
Expect(nutanixCluster.Annotations).To(HaveKey(clusterv1.ManagedByAnnotation))
Expect(nutanixCluster.Annotations[clusterv1.ManagedByAnnotation]).To(Equal(managedByAnnotationValueClusterCAPIOperatorInfraClusterController))
})

It("should have the control plane endpoint configured", func() {
By("Validating control plane endpoint")
Expect(nutanixCluster.Spec.ControlPlaneEndpoint.Host).ToNot(BeEmpty(), "control plane endpoint host should not be empty")
Expect(nutanixCluster.Spec.ControlPlaneEndpoint.Port).To(BeNumerically(">", 0), "control plane endpoint port should be greater than 0")
})

It("should have PrismCentral configuration if specified in Infrastructure", func() {
By("Checking Infrastructure for Nutanix PrismCentral configuration")
if mapiInfrastructure.Spec.PlatformSpec.Nutanix != nil &&
mapiInfrastructure.Spec.PlatformSpec.Nutanix.PrismCentral.Address != "" {
By("Validating PrismCentral configuration in NutanixCluster")
Expect(nutanixCluster.Spec.PrismCentral).ToNot(BeNil(), "PrismCentral should be configured")
Expect(nutanixCluster.Spec.PrismCentral.Address).To(Equal(mapiInfrastructure.Spec.PlatformSpec.Nutanix.PrismCentral.Address))
Expect(nutanixCluster.Spec.PrismCentral.Port).To(Equal(mapiInfrastructure.Spec.PlatformSpec.Nutanix.PrismCentral.Port))
}
})

It("should have failure domains configured if specified in Infrastructure", func() {
By("Checking Infrastructure for Nutanix failure domains")
if mapiInfrastructure.Spec.PlatformSpec.Nutanix != nil &&
len(mapiInfrastructure.Spec.PlatformSpec.Nutanix.FailureDomains) > 0 {
By("Validating failure domains in NutanixCluster")
Expect(nutanixCluster.Spec.ControlPlaneFailureDomains).ToNot(BeEmpty(), "failure domains should be configured")
Expect(len(nutanixCluster.Spec.ControlPlaneFailureDomains)).To(Equal(len(mapiInfrastructure.Spec.PlatformSpec.Nutanix.FailureDomains)))

// Verify that each failure domain from Infrastructure is present in NutanixCluster
infraFDNames := make(map[string]bool)
for _, fd := range mapiInfrastructure.Spec.PlatformSpec.Nutanix.FailureDomains {
infraFDNames[fd.Name] = true
}

for _, fd := range nutanixCluster.Spec.ControlPlaneFailureDomains {
Expect(infraFDNames).To(HaveKey(fd.Name), "failure domain %s should exist in Infrastructure spec", fd.Name)
}
}
})

It("should eventually become ready", func() {
By("Waiting for NutanixCluster to become ready")
Eventually(func() bool {
updatedCluster := &nutanixv1.NutanixCluster{}
err := cl.Get(ctx, client.ObjectKey{
Name: clusterName,
Namespace: framework.CAPINamespace,
}, updatedCluster)
if err != nil {
return false
}
return updatedCluster.Status.Ready
}, framework.WaitLong).Should(BeTrue(), "NutanixCluster should eventually become ready")
})
})

var _ = Describe("Cluster API Nutanix Cluster", Ordered, func() {
var capiCluster *clusterv1.Cluster

BeforeAll(func() {
if platform != configv1.NutanixPlatformType {
Skip("Skipping Nutanix E2E tests")
}
})

It("should have a CAPI Cluster with NutanixCluster infrastructure reference", func() {
By("Fetching the CAPI Cluster object")
capiCluster = &clusterv1.Cluster{}
err := cl.Get(ctx, client.ObjectKey{
Name: clusterName,
Namespace: framework.CAPINamespace,
}, capiCluster)
Expect(err).ToNot(HaveOccurred(), "should be able to get the CAPI Cluster")
Expect(capiCluster).ToNot(BeNil())

By("Validating infrastructure reference")
Expect(capiCluster.Spec.InfrastructureRef).ToNot(BeNil())
Expect(capiCluster.Spec.InfrastructureRef.Kind).To(Equal("NutanixCluster"))
Expect(capiCluster.Spec.InfrastructureRef.Name).To(Equal(clusterName))
Expect(capiCluster.Spec.InfrastructureRef.Namespace).To(Equal(framework.CAPINamespace))
})

It("should have control plane endpoint initialized", func() {
By("Validating CAPI Cluster control plane endpoint")
Expect(capiCluster.Spec.ControlPlaneEndpoint.Host).ToNot(BeEmpty())
Expect(capiCluster.Spec.ControlPlaneEndpoint.Port).To(BeNumerically(">", 0))
})
})
4 changes: 4 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ require (
github.com/google/uuid v1.6.0
github.com/klauspost/compress v1.18.0
github.com/metal3-io/cluster-api-provider-metal3/api v1.10.1
github.com/nutanix-cloud-native/cluster-api-provider-nutanix v1.7.2
github.com/nutanix-cloud-native/prism-go-client v0.5.0
github.com/onsi/ginkgo/v2 v2.23.4
github.com/onsi/gomega v1.38.0
github.com/openshift/api v0.0.0-20250731015415-ed654edbd7c6
Expand Down Expand Up @@ -301,5 +303,7 @@ require (
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.32.0 // indirect
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect
sigs.k8s.io/kube-storage-version-migrator v0.0.6-0.20230721195810-5c8923c5ff96 // indirect
sigs.k8s.io/kustomize/api v0.19.0 // indirect
sigs.k8s.io/kustomize/kyaml v0.19.0 // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.7.0 // indirect
)
Loading