Skip to content

Commit 5c107e3

Browse files
openstack: Upgrade manifests to CAPO v1beta1
This is the result of the following steps: 1. Fork cluster-api-provider-openstack and revert its go.mod to Go v1.21 2. Replace the fork in the Installer's go.mod 3. Replace imports from v1alphaX to v1beta1 4. Update manifests to use the v1beta1 spec
1 parent 1be8970 commit 5c107e3

33 files changed

+2289
-1379
lines changed

go.mod

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ require (
119119
sigs.k8s.io/cluster-api-provider-azure v1.14.2
120120
sigs.k8s.io/cluster-api-provider-gcp v1.6.0
121121
sigs.k8s.io/cluster-api-provider-ibmcloud v0.7.0
122-
sigs.k8s.io/cluster-api-provider-openstack v0.9.0
122+
sigs.k8s.io/cluster-api-provider-openstack v0.10.0
123123
sigs.k8s.io/cluster-api-provider-vsphere v1.9.3
124124
sigs.k8s.io/controller-runtime v0.17.3
125125
sigs.k8s.io/controller-tools v0.12.0
@@ -318,3 +318,5 @@ replace github.com/containerd/containerd => github.com/containerd/containerd v1.
318318
replace golang.org/x/oauth2 => golang.org/x/oauth2 v0.15.0
319319

320320
replace google.golang.org/api => google.golang.org/api v0.157.0
321+
322+
replace sigs.k8s.io/cluster-api-provider-openstack => github.com/openshift/cluster-api-provider-openstack v0.9.1-0.20240426092531-c42a4659d6c0

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1996,6 +1996,8 @@ github.com/openshift/cluster-api-provider-baremetal v0.0.0-20220408122422-7a548e
19961996
github.com/openshift/cluster-api-provider-baremetal v0.0.0-20220408122422-7a548effc26e/go.mod h1:Q5WzHV1JZw/XNRnXCo8JfyOSegL13a+lhV4sc44lpSI=
19971997
github.com/openshift/cluster-api-provider-libvirt v0.2.1-0.20230308152226-83c0473d4429 h1:2/6W0JbwAmEbDtHAHaJvoj6et532k3qaY/jFKK9uH3o=
19981998
github.com/openshift/cluster-api-provider-libvirt v0.2.1-0.20230308152226-83c0473d4429/go.mod h1:jCWQvdjpxizEfnLAP7NyR3Itt0mMhRHxUScJZdaB2aM=
1999+
github.com/openshift/cluster-api-provider-openstack v0.9.1-0.20240426092531-c42a4659d6c0 h1:e/o1uQYyapM0e/+R4HUB4Y+efEkRu1qWqn5sHeW9dck=
2000+
github.com/openshift/cluster-api-provider-openstack v0.9.1-0.20240426092531-c42a4659d6c0/go.mod h1:PX3pVY7IPC/zmKJksYuvz779eyYHeP2ZW7PfnOllng8=
19992001
github.com/openshift/cluster-api-provider-ovirt v0.1.1-0.20220323121149-e3f2850dd519 h1:foU7/s6DQczTFdZ/8H++pUC2Pzygqdz5ZgqUakksR5w=
20002002
github.com/openshift/cluster-api-provider-ovirt v0.1.1-0.20220323121149-e3f2850dd519/go.mod h1:C7unCUThP8eqT4xQfbvg3oIDn2S9TYtb0wbBoH/SR2U=
20012003
github.com/openshift/custom-resource-status v1.1.2 h1:C3DL44LEbvlbItfd8mT5jWrqPfHnSOQoQf/sypqA6A4=
@@ -3049,8 +3051,6 @@ sigs.k8s.io/cluster-api-provider-gcp v1.6.0 h1:I/Fxzoh1RyHp/n7Do5nJlJgYoMuQ2SVzl
30493051
sigs.k8s.io/cluster-api-provider-gcp v1.6.0/go.mod h1:gcrcNrKveBcUdW5FOWDA5yK77Ibz09jUHlzXEoTV/fw=
30503052
sigs.k8s.io/cluster-api-provider-ibmcloud v0.8.0-alpha.0.0.20240424062805-188d9e99702c h1:MAvrIPrHonmW/za51+adrHuvbT66VQXTKrkTejMsA4c=
30513053
sigs.k8s.io/cluster-api-provider-ibmcloud v0.8.0-alpha.0.0.20240424062805-188d9e99702c/go.mod h1:92RPFJ+hNfmJLJQjHRKZSkZTDd7u6Wdk5RiK5j9YhpU=
3052-
sigs.k8s.io/cluster-api-provider-openstack v0.9.0 h1:ScwZIfT1kI88+qMzeO7ppMP9DvEzrfLHuYPg2p1mcho=
3053-
sigs.k8s.io/cluster-api-provider-openstack v0.9.0/go.mod h1:ecR9lx4XbOr3Gg2CGNgM3wguuV6l31Nd5rUccE+xjKs=
30543054
sigs.k8s.io/cluster-api-provider-vsphere v1.9.3 h1:Kgo9XQYZyZVUYwzUWr351h1OJf8LYOIDPgsjt6Rqv2k=
30553055
sigs.k8s.io/cluster-api-provider-vsphere v1.9.3/go.mod h1:t0z1hU7lR5olxrwNv9C3j5UJsjQ2KLdnQ1RaZiPkQ2A=
30563056
sigs.k8s.io/controller-runtime v0.17.3 h1:65QmN7r3FWgTxDMz9fvGnO1kbf2nu+acg9p2R9oYYYk=

pkg/asset/machines/openstack/openstackmachines.go

Lines changed: 47 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77
v1 "k8s.io/api/core/v1"
88
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
99
"k8s.io/utils/ptr"
10-
capo "sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha7"
10+
capo "sigs.k8s.io/cluster-api-provider-openstack/api/v1beta1"
1111
capi "sigs.k8s.io/cluster-api/api/v1beta1"
1212

1313
machinev1 "github.com/openshift/api/machine/v1"
@@ -121,18 +121,19 @@ func generateMachineSpec(clusterID string, platform *openstack.Platform, mpool *
121121
}
122122

123123
if platform.ControlPlanePort != nil {
124-
port.Network = &capo.NetworkFilter{
125-
Name: platform.ControlPlanePort.Network.Name,
126-
ID: platform.ControlPlanePort.Network.ID,
124+
if networkID := platform.ControlPlanePort.Network.ID; networkID != "" {
125+
port.Network = &capo.NetworkParam{ID: &networkID}
126+
} else if networkName := platform.ControlPlanePort.Network.Name; networkName != "" {
127+
port.Network = &capo.NetworkParam{Filter: &capo.NetworkFilter{Name: networkName}}
127128
}
128129

129130
var fixedIPs []capo.FixedIP
130131
for _, fixedIP := range platform.ControlPlanePort.FixedIPs {
131-
fixedIPs = append(fixedIPs, capo.FixedIP{
132-
Subnet: &capo.SubnetFilter{
133-
ID: fixedIP.Subnet.ID,
134-
Name: fixedIP.Subnet.Name,
135-
}})
132+
if subnetID := fixedIP.Subnet.ID; subnetID != "" {
133+
fixedIPs = append(fixedIPs, capo.FixedIP{Subnet: &capo.SubnetParam{ID: &subnetID}})
134+
} else {
135+
fixedIPs = append(fixedIPs, capo.FixedIP{Subnet: &capo.SubnetParam{Filter: &capo.SubnetFilter{Name: fixedIP.Subnet.Name}}})
136+
}
136137
}
137138
port.FixedIPs = fixedIPs
138139
if len(addressPairs) > 0 {
@@ -142,10 +143,14 @@ func generateMachineSpec(clusterID string, platform *openstack.Platform, mpool *
142143
port = capo.PortOpts{
143144
FixedIPs: []capo.FixedIP{
144145
{
145-
Subnet: &capo.SubnetFilter{
146-
// NOTE(mandre) the format of the subnet name changes when letting CAPI create it.
147-
// So solely rely on tags for now.
148-
Tags: fmt.Sprintf("openshiftClusterID=%s", clusterID),
146+
Subnet: &capo.SubnetParam{
147+
Filter: &capo.SubnetFilter{
148+
// NOTE(mandre) the format of the subnet name changes when letting CAPI create it.
149+
// So solely rely on tags for now.
150+
FilterByNeutronTags: capo.FilterByNeutronTags{
151+
TagsAny: []capo.NeutronTag{capo.NeutronTag("openshiftClusterID=" + clusterID)},
152+
},
153+
},
149154
},
150155
},
151156
},
@@ -156,49 +161,44 @@ func generateMachineSpec(clusterID string, platform *openstack.Platform, mpool *
156161
}
157162

158163
additionalPorts := make([]capo.PortOpts, 0, len(mpool.AdditionalNetworkIDs))
159-
for _, networkID := range mpool.AdditionalNetworkIDs {
164+
for i := range mpool.AdditionalNetworkIDs {
160165
additionalPorts = append(additionalPorts, capo.PortOpts{
161-
Network: &capo.NetworkFilter{
162-
ID: networkID,
163-
},
166+
Network: &capo.NetworkParam{ID: &mpool.AdditionalNetworkIDs[i]},
164167
})
165168
}
166169

167-
securityGroups := []capo.SecurityGroupFilter{
170+
securityGroups := []capo.SecurityGroupParam{
168171
{
169172
// Bootstrap and Master share the same security group
170-
Name: fmt.Sprintf("%s-master", clusterID),
173+
Filter: &capo.SecurityGroupFilter{Name: fmt.Sprintf("%s-master", clusterID)},
171174
},
172175
}
173176

174-
for _, securityGroup := range mpool.AdditionalSecurityGroupIDs {
175-
securityGroups = append(securityGroups, capo.SecurityGroupFilter{ID: securityGroup})
177+
for i := range mpool.AdditionalSecurityGroupIDs {
178+
securityGroups = append(securityGroups, capo.SecurityGroupParam{ID: &mpool.AdditionalSecurityGroupIDs[i]})
176179
}
177180

178-
// FIXME: Uncomment when the server group rework merged
179-
// https://github.com/kubernetes-sigs/cluster-api-provider-openstack/pull/1779
180-
// serverGroupName := clusterID + "-" + role
181181
spec := capo.OpenStackMachineSpec{
182-
CloudName: CloudName,
183-
Flavor: mpool.FlavorName,
182+
Flavor: mpool.FlavorName,
184183
IdentityRef: &capo.OpenStackIdentityReference{
185-
Kind: "Secret",
186-
Name: clusterID + "-cloud-config",
184+
Name: clusterID + "-cloud-config",
185+
CloudName: CloudName,
187186
},
188-
// FIXME(stephenfin): We probably want a FIP for bootstrap?
189-
// TODO: This is an image name. Migrate to a filter with Name when API v1alpha8 is released.
190-
Image: osImage,
187+
Image: capo.ImageParam{Filter: &capo.ImageFilter{Name: &osImage}},
191188
Ports: append([]capo.PortOpts{port}, additionalPorts...),
192189
SecurityGroups: securityGroups,
193-
// FIXME: Uncomment when the server group rework merged
194-
// https://github.com/kubernetes-sigs/cluster-api-provider-openstack/pull/1779
195-
//ServerGroup: *capo.ServerGroupFilter{
196-
// "Name": serverGroupName,
197-
// },
198-
ServerMetadata: map[string]string{
199-
"Name": fmt.Sprintf("%s-%s", clusterID, role),
200-
"openshiftClusterID": clusterID,
190+
ServerGroup: &capo.ServerGroupParam{Filter: &capo.ServerGroupFilter{Name: ptr.To(clusterID + "-" + role)}},
191+
ServerMetadata: []capo.ServerMetadata{
192+
{
193+
Key: "Name",
194+
Value: fmt.Sprintf("%s-%s", clusterID, role),
195+
},
196+
{
197+
Key: "openshiftClusterID",
198+
Value: clusterID,
199+
},
201200
},
201+
202202
Trunk: trunkSupport,
203203
Tags: []string{
204204
fmt.Sprintf("openshiftClusterID=%s", clusterID),
@@ -207,9 +207,14 @@ func generateMachineSpec(clusterID string, platform *openstack.Platform, mpool *
207207

208208
if mpool.RootVolume != nil {
209209
spec.RootVolume = &capo.RootVolume{
210-
Size: mpool.RootVolume.Size,
211-
VolumeType: failureDomain.RootVolume.VolumeType,
212-
AvailabilityZone: failureDomain.RootVolume.AvailabilityZone,
210+
SizeGiB: mpool.RootVolume.Size,
211+
BlockDeviceVolume: capo.BlockDeviceVolume{Type: failureDomain.RootVolume.VolumeType},
212+
}
213+
if failureDomain.RootVolume.AvailabilityZone != "" {
214+
spec.RootVolume.BlockDeviceVolume.AvailabilityZone = &capo.VolumeAvailabilityZone{
215+
From: capo.VolumeAZFromName,
216+
Name: ptr.To(capo.VolumeAZName(failureDomain.RootVolume.AvailabilityZone)),
217+
}
213218
}
214219
}
215220

pkg/asset/manifests/openstack/cluster.go

Lines changed: 42 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ import (
77
"github.com/gophercloud/utils/openstack/clientconfig"
88
corev1 "k8s.io/api/core/v1"
99
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
10-
capo "sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha7"
10+
"k8s.io/utils/ptr"
11+
capo "sigs.k8s.io/cluster-api-provider-openstack/api/v1beta1"
12+
"sigs.k8s.io/cluster-api-provider-openstack/pkg/utils/optional"
1113
capi "sigs.k8s.io/cluster-api/api/v1beta1"
1214
"sigs.k8s.io/yaml"
1315

@@ -24,6 +26,17 @@ const (
2426
func GenerateClusterAssets(installConfig *installconfig.InstallConfig, clusterID *installconfig.ClusterID) (*capiutils.GenerateClusterAssetsOutput, error) {
2527
manifests := []*asset.RuntimeFile{}
2628
openstackInstallConfig := installConfig.Config.OpenStack
29+
30+
var (
31+
externalNetwork *capo.NetworkParam
32+
disableExternalNetwork optional.Bool
33+
)
34+
if e := openstackInstallConfig.ExternalNetwork; e != "" {
35+
externalNetwork = &capo.NetworkParam{Filter: &capo.NetworkFilter{Name: e}}
36+
} else {
37+
disableExternalNetwork = ptr.To(true)
38+
}
39+
2740
openStackCluster := &capo.OpenStackCluster{
2841
ObjectMeta: metav1.ObjectMeta{
2942
Name: clusterID.InfraID,
@@ -33,35 +46,47 @@ func GenerateClusterAssets(installConfig *installconfig.InstallConfig, clusterID
3346
},
3447
},
3548
Spec: capo.OpenStackClusterSpec{
36-
CloudName: cloudName,
37-
IdentityRef: &capo.OpenStackIdentityReference{
38-
Kind: "Secret",
39-
Name: clusterID.InfraID + "-cloud-config",
49+
IdentityRef: capo.OpenStackIdentityReference{
50+
Name: clusterID.InfraID + "-cloud-config",
51+
CloudName: cloudName,
4052
},
4153
// We disable management of most networking resources since either
4254
// we (the installer) will create them, or the user will have
4355
// pre-created them as part of a "Bring Your Own Network (BYON)"
4456
// configuration
45-
ManagedSecurityGroups: false,
46-
DisableAPIServerFloatingIP: true,
57+
ManagedSecurityGroups: nil,
58+
DisableAPIServerFloatingIP: ptr.To(true),
4759
// TODO(stephenfin): update when we support dual-stack (there are
4860
// potentially *two* IPs here)
49-
APIServerFixedIP: openstackInstallConfig.APIVIPs[0],
50-
DNSNameservers: openstackInstallConfig.ExternalDNS,
51-
ExternalNetworkID: openstackInstallConfig.ExternalNetwork,
61+
APIServerFixedIP: &openstackInstallConfig.APIVIPs[0],
62+
ExternalNetwork: externalNetwork,
63+
DisableExternalNetwork: disableExternalNetwork,
5264
Tags: []string{
5365
fmt.Sprintf("openshiftClusterID=%s", clusterID.InfraID),
5466
},
5567
},
5668
}
57-
if openstackInstallConfig.ControlPlanePort != nil {
58-
// TODO(maysa): update when BYO dual-stack is supported in CAPO
59-
openStackCluster.Spec.Network.ID = openstackInstallConfig.ControlPlanePort.Network.ID
60-
openStackCluster.Spec.Network.Name = openstackInstallConfig.ControlPlanePort.Network.Name
61-
openStackCluster.Spec.Subnet.ID = openstackInstallConfig.ControlPlanePort.FixedIPs[0].Subnet.ID
62-
openStackCluster.Spec.Subnet.Name = openstackInstallConfig.ControlPlanePort.FixedIPs[0].Subnet.Name
69+
if cpPort := openstackInstallConfig.ControlPlanePort; cpPort != nil {
70+
if networkID := cpPort.Network.ID; networkID != "" {
71+
openStackCluster.Spec.Network = &capo.NetworkParam{ID: &networkID}
72+
} else if networkName := cpPort.Network.Name; networkName != "" {
73+
openStackCluster.Spec.Network = &capo.NetworkParam{Filter: &capo.NetworkFilter{Name: networkName}}
74+
}
75+
openStackCluster.Spec.Subnets = make([]capo.SubnetParam, len(cpPort.FixedIPs))
76+
for i := range cpPort.FixedIPs {
77+
if subnetID := cpPort.FixedIPs[i].Subnet.ID; subnetID != "" {
78+
openStackCluster.Spec.Subnets[i] = capo.SubnetParam{ID: &subnetID}
79+
} else {
80+
openStackCluster.Spec.Subnets[i] = capo.SubnetParam{Filter: &capo.SubnetFilter{Name: cpPort.FixedIPs[i].Subnet.Name}}
81+
}
82+
}
6383
} else {
64-
openStackCluster.Spec.NodeCIDR = capiutils.CIDRFromInstallConfig(installConfig).String()
84+
openStackCluster.Spec.ManagedSubnets = []capo.SubnetSpec{
85+
{
86+
CIDR: capiutils.CIDRFromInstallConfig(installConfig).String(),
87+
DNSNameservers: openstackInstallConfig.ExternalDNS,
88+
},
89+
}
6590
}
6691
openStackCluster.SetGroupVersionKind(capo.GroupVersion.WithKind("OpenStackCluster"))
6792

pkg/clusterapi/localcontrolplane.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import (
2020
capzv1 "sigs.k8s.io/cluster-api-provider-azure/api/v1beta1"
2121
capgv1 "sigs.k8s.io/cluster-api-provider-gcp/api/v1beta1"
2222
capiv1 "sigs.k8s.io/cluster-api-provider-ibmcloud/api/v1beta2"
23-
capov1 "sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha7"
23+
capov1 "sigs.k8s.io/cluster-api-provider-openstack/api/v1beta1"
2424
capvv1 "sigs.k8s.io/cluster-api-provider-vsphere/apis/v1beta1"
2525
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
2626
"sigs.k8s.io/controller-runtime/pkg/client"

pkg/infrastructure/openstack/clusterapi/clusterapi.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import (
66

77
"github.com/sirupsen/logrus"
88
"gopkg.in/yaml.v2"
9-
capo "sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha7"
9+
capo "sigs.k8s.io/cluster-api-provider-openstack/api/v1beta1"
1010
"sigs.k8s.io/controller-runtime/pkg/client"
1111

1212
configv1 "github.com/openshift/api/config/v1"

pkg/infrastructure/openstack/infraready/floatingips.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77
"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/attributestags"
88
"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/floatingips"
99
"github.com/gophercloud/gophercloud/openstack/networking/v2/ports"
10-
capo "sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha7"
10+
capo "sigs.k8s.io/cluster-api-provider-openstack/api/v1beta1"
1111

1212
"github.com/openshift/installer/pkg/asset/installconfig"
1313
openstackdefaults "github.com/openshift/installer/pkg/types/openstack/defaults"

pkg/infrastructure/openstack/postprovision/floatingips.go

Lines changed: 3 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,8 @@ import (
77
"github.com/gophercloud/gophercloud"
88
"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/attributestags"
99
"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/floatingips"
10-
"github.com/gophercloud/gophercloud/openstack/networking/v2/networks"
1110
"github.com/gophercloud/gophercloud/openstack/networking/v2/ports"
12-
capo "sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha7"
11+
capo "sigs.k8s.io/cluster-api-provider-openstack/api/v1beta1"
1312
"sigs.k8s.io/controller-runtime/pkg/client"
1413

1514
"github.com/openshift/installer/pkg/asset/installconfig"
@@ -33,17 +32,12 @@ func FloatingIPs(ctx context.Context, c client.Client, cluster *capo.OpenStackCl
3332
return err
3433
}
3534

36-
bootstrapPort, err := getPortForInstance(networkClient, *bootstrapMachine.Spec.InstanceID)
35+
bootstrapPort, err := getPortForInstance(networkClient, *bootstrapMachine.Status.InstanceID)
3736
if err != nil {
3837
return err
3938
}
4039

41-
network, err := getNetworkByName(networkClient, cluster.Spec.ExternalNetworkID)
42-
if err != nil {
43-
return err
44-
}
45-
46-
_, err = createAndAttachFIP(networkClient, "bootstrap", infraID, network.ID, bootstrapPort.ID)
40+
_, err = createAndAttachFIP(networkClient, "bootstrap", infraID, cluster.Status.ExternalNetwork.ID, bootstrapPort.ID)
4741
if err != nil {
4842
return err
4943
}
@@ -74,29 +68,6 @@ func getPortForInstance(client *gophercloud.ServiceClient, instanceID string) (*
7468
return &allPorts[0], nil
7569
}
7670

77-
// Get a network by name.
78-
func getNetworkByName(client *gophercloud.ServiceClient, name string) (*networks.Network, error) {
79-
listOpts := networks.ListOpts{
80-
Name: name,
81-
}
82-
allPages, err := networks.List(client, listOpts).AllPages()
83-
if err != nil {
84-
return nil, fmt.Errorf("failed to list networks: %w", err)
85-
}
86-
allNetworks, err := networks.ExtractNetworks(allPages)
87-
if err != nil {
88-
return nil, fmt.Errorf("failed to extract networks: %w", err)
89-
}
90-
91-
if len(allNetworks) < 1 {
92-
return nil, fmt.Errorf("found no matches for network %s", name)
93-
} else if len(allNetworks) > 1 {
94-
return nil, fmt.Errorf("found more than one match for network %s", name)
95-
}
96-
97-
return &allNetworks[0], nil
98-
}
99-
10071
// Create a floating IP.
10172
func createAndAttachFIP(client *gophercloud.ServiceClient, role, infraID, networkID, portID string) (*floatingips.FloatingIP, error) {
10273
createOpts := floatingips.CreateOpts{

vendor/modules.txt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2135,9 +2135,10 @@ sigs.k8s.io/cluster-api-provider-gcp/api/v1beta1
21352135
# sigs.k8s.io/cluster-api-provider-ibmcloud v0.7.0 => sigs.k8s.io/cluster-api-provider-ibmcloud v0.8.0-alpha.0.0.20240424062805-188d9e99702c
21362136
## explicit; go 1.21
21372137
sigs.k8s.io/cluster-api-provider-ibmcloud/api/v1beta2
2138-
# sigs.k8s.io/cluster-api-provider-openstack v0.9.0
2139-
## explicit; go 1.20
2140-
sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha7
2138+
# sigs.k8s.io/cluster-api-provider-openstack v0.10.0 => github.com/openshift/cluster-api-provider-openstack v0.9.1-0.20240426092531-c42a4659d6c0
2139+
## explicit; go 1.21
2140+
sigs.k8s.io/cluster-api-provider-openstack/api/v1beta1
2141+
sigs.k8s.io/cluster-api-provider-openstack/pkg/utils/optional
21412142
# sigs.k8s.io/cluster-api-provider-vsphere v1.9.3
21422143
## explicit; go 1.20
21432144
sigs.k8s.io/cluster-api-provider-vsphere/apis/v1beta1
@@ -2318,3 +2319,4 @@ sigs.k8s.io/yaml/goyaml.v3
23182319
# github.com/containerd/containerd => github.com/containerd/containerd v1.6.26
23192320
# golang.org/x/oauth2 => golang.org/x/oauth2 v0.15.0
23202321
# google.golang.org/api => google.golang.org/api v0.157.0
2322+
# sigs.k8s.io/cluster-api-provider-openstack => github.com/openshift/cluster-api-provider-openstack v0.9.1-0.20240426092531-c42a4659d6c0

0 commit comments

Comments
 (0)