Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
969138b
docs: add cluster-api v1.9.11 upgrade design spec
schegi Apr 1, 2026
a02cd77
Merge branch 'main' of https://github.com/ionos-cloud/cluster-api-pro…
schegi Apr 1, 2026
80cae03
docs: add cluster-api v1.9.11 upgrade implementation plan
schegi Apr 1, 2026
94f12b0
chore: bump cluster-api to v1.9.11 and controller-runtime to v0.19.6
schegi Apr 1, 2026
b17559b
chore: add importas alias for cluster-api util/conditions/v1beta2
schegi Apr 1, 2026
b30341b
feat(api): add v1beta2 conditions support to IonosCloudCluster
schegi Apr 1, 2026
fe2c00e
feat(api): add v1beta2 conditions to IonosCloudMachine, remove deprec…
schegi Apr 1, 2026
ae66a2b
chore: regenerate deepcopy and CRD manifests for v1beta2 conditions
schegi Apr 1, 2026
33fc4f3
feat(scope): migrate cluster conditions to v1beta2 API
schegi Apr 1, 2026
a8f4dcd
feat(scope): migrate machine conditions to v1beta2 API, remove HasFailed
schegi Apr 1, 2026
9a024a0
feat(controller): fix predicate signatures and migrate cluster condit…
schegi Apr 1, 2026
926b377
feat(controller): migrate machine conditions to v1beta2, remove dead …
schegi Apr 1, 2026
7221ab4
feat(cloud): migrate server conditions to v1beta2 API
schegi Apr 1, 2026
83cbe3f
chore(e2e): update CAPI component URLs to v1.9.11
schegi Apr 1, 2026
7097446
chore: regenerate mocks and fix build after cluster-api v1.9 upgrade
schegi Apr 1, 2026
9cb522b
fix(scope): add IonosCloudClusterReady to WithOwnedV1Beta2Conditions
schegi Apr 1, 2026
9c4ec81
chore: bump cluster-api to v1.10.10, controller-runtime to v0.20.4, k…
schegi Apr 1, 2026
82255e3
fix: resolve compilation errors after cluster-api v1.10 / controller-…
schegi Apr 1, 2026
2217c2d
chore(e2e): update CAPI component URLs to v1.10.10
schegi Apr 1, 2026
42068e9
feat: add --skip-crd-migration-phases flag per CAPI v1.10 provider re…
schegi Apr 1, 2026
4c5cf91
style: fix gci import/var formatting in cmd/main.go
schegi Apr 1, 2026
3483a7d
chore: update IPAM and bootstrap/controlplane import paths for CAPI v…
schegi Apr 1, 2026
ba74199
fix: rename condition getter/setter methods for CAPI v1.11 interface …
schegi Apr 1, 2026
2461053
fix: restore regressed import paths in types test files
schegi Apr 1, 2026
112230c
fix: rename patch option structs for CAPI v1.11 (WithOwnedConditions …
schegi Apr 1, 2026
5212561
chore: bump cluster-api to v1.11.7, controller-runtime to v0.21.0, k8…
schegi Apr 1, 2026
b941645
chore: update core CAPI import path api/v1beta1 → api/core/v1beta1 in…
schegi Apr 1, 2026
1def7ec
feat: migrate scope, controllers, and services to CAPI v1beta2 types
schegi Apr 1, 2026
4dabc20
chore(e2e): update CAPI component URLs to v1.11.7 and add v1.10 metadata
schegi Apr 1, 2026
771ead7
chore: regenerate mocks and manifests after cluster-api v1.11 upgrade
schegi Apr 1, 2026
a7528e2
fix: complete v1beta2 migration for API types, tests, and CRD manifests
schegi Apr 2, 2026
491cba4
refactor: simplify GetControlPlaneEndpoint now that API types use v1b…
schegi Apr 2, 2026
57d83c2
feat: complete v1beta2 contract migration with Stage 2 field layout
schegi Apr 2, 2026
fc64e1e
chore: add RBAC markers for CRDMigrator and template CRs
schegi Apr 2, 2026
ee8decd
feat: wire up CRDMigrator controller with skip-phases support
schegi Apr 2, 2026
137f0a9
chore: regenerate RBAC manifests for CRDMigrator
schegi Apr 2, 2026
8133bcf
fix: resolve lint and verify CI failures for CAPI v1.11.7 upgrade
schegi Apr 2, 2026
b1db7e1
fix: migrate remaining v1beta1 imports to v1beta2 and suppress deprec…
schegi Apr 2, 2026
897a935
fix: resolve remaining lint errors for CAPI v1.11.7 upgrade
schegi Apr 2, 2026
d471436
fix: resolve lint errors verified with make lint
schegi Apr 2, 2026
f4c2bc7
chore: remove agent-generated planning docs from docs/superpowers
Copilot Apr 2, 2026
db39e95
fix: add v1beta2 contract CRD label to enable CAPI v1beta2 contract path
schegi Apr 2, 2026
c6649bf
fix: revert metadata.yaml contract to v1beta1 for clusterctl compatib…
schegi Apr 2, 2026
c3ee948
chore: bump cluster-api to v1.12.4, controller-runtime to v0.22.5, k8…
schegi Apr 3, 2026
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
14 changes: 11 additions & 3 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -84,10 +84,16 @@ linters-settings:
- pkg: sigs.k8s.io/controller-runtime
alias: ctrl
# Cluster API
- pkg: sigs.k8s.io/cluster-api/api/v1beta1
- pkg: sigs.k8s.io/cluster-api/api/core/v1beta2
alias: clusterv1
- pkg: "sigs.k8s.io/cluster-api/test/e2e"
alias: capie2e
- pkg: "sigs.k8s.io/cluster-api/util/conditions"
alias: conditions
- pkg: "sigs.k8s.io/cluster-api/util/conditions/deprecated/v1beta1"
alias: deprecatedv1beta1conditions
- pkg: "sigs.k8s.io/cluster-api/api/ipam/v1beta2"
alias: ipamv1
# Own module
- pkg: github.com/ionos-cloud/cluster-api-provider-ionoscloud/api/v1alpha1
alias: infrav1
Expand Down Expand Up @@ -120,6 +126,8 @@ linters-settings:
disabled: true
- name: range-val-address
disabled: true # Obsolete since Go 1.22
- name: redundant-import-alias
disabled: true # Conflicts with importas which enforces explicit aliases
- name: struct-tag
arguments:
- json,inline
Expand All @@ -146,7 +154,7 @@ issues:
- linters:
- revive
text: "comment-spacings: no space between comment delimiter and comment text"
source: "//(\\+(kubebuilder|optional|required)|#nosec)"
source: "//(\\+(kubebuilder|optional|required|list)|#nosec)"
- linters:
- revive
text: "exported: exported method .*\\.(Reconcile|SetupWithManager|SetupWebhookWithManager) should have comment or be unexported"
Expand Down Expand Up @@ -205,4 +213,4 @@ run:
- e2e
timeout: 10m
allow-parallel-runners: true
go: "1.22"
go: "1.25"
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ KUSTOMIZE ?= $(LOCALBIN)/kustomize
CONTROLLER_GEN ?= $(LOCALBIN)/controller-gen
ENVTEST ?= $(LOCALBIN)/setup-envtest
GOLANGCI ?= go run github.com/golangci/golangci-lint/cmd/golangci-lint@v1.64.8
MOCKERY ?= go run github.com/vektra/mockery/v2@v2.53.5
MOCKERY ?= GOTOOLCHAIN=go1.25.0 go run github.com/vektra/mockery/v2@v2.53.6

## Tool Versions
KUSTOMIZE_VERSION ?= v5.7.1
Expand Down
81 changes: 71 additions & 10 deletions api/v1alpha1/ionoscloudcluster_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ package v1alpha1
import (
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
clusterv1 "sigs.k8s.io/cluster-api/api/core/v1beta2"
)

const (
Expand Down Expand Up @@ -64,13 +64,19 @@ type IonosCloudClusterSpec struct {

// IonosCloudClusterStatus defines the observed state of IonosCloudCluster.
type IonosCloudClusterStatus struct {
// Ready indicates that the cluster is ready.
// Initialization provides observations of the IonosCloudCluster initialization process.
// NOTE: Fields in this struct are part of the Cluster API contract and are used to orchestrate initial
// cluster provisioning. The value of these fields is never updated after initial provisioning is completed.
// Use conditions to monitor the operational state of the cluster's infrastructure.
//+optional
Ready bool `json:"ready,omitempty"`
Initialization *IonosCloudClusterInitializationStatus `json:"initialization,omitempty"`

// Conditions defines current service state of the IonosCloudCluster.
// Conditions represents the observations of the current state of the IonosCloudCluster.
//+optional
Conditions clusterv1.Conditions `json:"conditions,omitempty"`
//+listType=map
//+listMapKey=type
//+kubebuilder:validation:MaxItems=32
Conditions []metav1.Condition `json:"conditions,omitempty"`

// CurrentRequestByDatacenter maps data center IDs to a pending provisioning request made during reconciliation.
//+optional
Expand All @@ -83,13 +89,49 @@ type IonosCloudClusterStatus struct {
// ControlPlaneEndpointIPBlockID is the IONOS Cloud UUID for the control plane endpoint IP block.
//+optional
ControlPlaneEndpointIPBlockID string `json:"controlPlaneEndpointIPBlockID,omitempty"`

// Deprecated groups all status fields deprecated and scheduled for removal when v1beta1 contract support is dropped.
//+optional
Deprecated *IonosCloudClusterDeprecatedStatus `json:"deprecated,omitempty"`
}

// IonosCloudClusterInitializationStatus provides observations of the IonosCloudCluster initialization process.
type IonosCloudClusterInitializationStatus struct {
// Provisioned is true when the infrastructure cluster is fully provisioned.
// NOTE: this field is part of the Cluster API contract and is used to orchestrate provisioning.
// The value of this field is never updated after initial provisioning is completed.
//+optional
Provisioned bool `json:"provisioned"`
}

// IonosCloudClusterDeprecatedStatus groups all status fields deprecated and scheduled for removal when
// v1beta1 contract support is dropped.
type IonosCloudClusterDeprecatedStatus struct {
// V1Beta1 groups all v1beta1 status fields that are deprecated and scheduled for removal.
//+optional
V1Beta1 *IonosCloudClusterV1Beta1DeprecatedStatus `json:"v1beta1,omitempty"`
}

// IonosCloudClusterV1Beta1DeprecatedStatus contains deprecated v1beta1 fields.
type IonosCloudClusterV1Beta1DeprecatedStatus struct {
// Ready indicates that the cluster is ready.
//
// Deprecated: Use Initialization.Provisioned instead.
//+optional
Ready bool `json:"ready,omitempty"`

// Conditions defines current service state of the IonosCloudCluster using the deprecated v1beta1 condition type.
//
// Deprecated: Use the top-level conditions field instead.
//+optional
Conditions clusterv1.Conditions `json:"conditions,omitempty"`
}

//+kubebuilder:object:root=true
//+kubebuilder:subresource:status
//+kubebuilder:resource:path=ionoscloudclusters,scope=Namespaced,categories=cluster-api;ionoscloud,shortName=icc
//+kubebuilder:printcolumn:name="Cluster",type="string",JSONPath=".metadata.labels['cluster\\.x-k8s\\.io/cluster-name']",description="Cluster"
//+kubebuilder:printcolumn:name="Ready",type="string",JSONPath=".status.ready",description="Cluster infrastructure is ready"
//+kubebuilder:printcolumn:name="Ready",type="string",JSONPath=".status.initialization.provisioned",description="Cluster infrastructure is ready"
//+kubebuilder:printcolumn:name="Endpoint",type="string",JSONPath=".spec.controlPlaneEndpoint",description="API Endpoint"

// IonosCloudCluster is the Schema for the ionoscloudclusters API.
Expand All @@ -114,13 +156,32 @@ func init() {
objectTypes = append(objectTypes, &IonosCloudCluster{}, &IonosCloudClusterList{})
}

// GetConditions returns the conditions from the status.
func (i *IonosCloudCluster) GetConditions() clusterv1.Conditions {
// GetV1Beta1Conditions returns the deprecated v1beta1 conditions from status.deprecated.v1beta1.conditions.
func (i *IonosCloudCluster) GetV1Beta1Conditions() clusterv1.Conditions {
if i.Status.Deprecated == nil || i.Status.Deprecated.V1Beta1 == nil {
return nil
}
return i.Status.Deprecated.V1Beta1.Conditions
}

// SetV1Beta1Conditions sets the deprecated v1beta1 conditions in status.deprecated.v1beta1.conditions.
func (i *IonosCloudCluster) SetV1Beta1Conditions(conditions clusterv1.Conditions) {
if i.Status.Deprecated == nil {
i.Status.Deprecated = &IonosCloudClusterDeprecatedStatus{}
}
if i.Status.Deprecated.V1Beta1 == nil {
i.Status.Deprecated.V1Beta1 = &IonosCloudClusterV1Beta1DeprecatedStatus{}
}
i.Status.Deprecated.V1Beta1.Conditions = conditions
}

// GetConditions returns the v1beta2 conditions from status.conditions.
func (i *IonosCloudCluster) GetConditions() []metav1.Condition {
return i.Status.Conditions
}

// SetConditions sets the conditions in the status.
func (i *IonosCloudCluster) SetConditions(conditions clusterv1.Conditions) {
// SetConditions sets the v1beta2 conditions in status.conditions.
func (i *IonosCloudCluster) SetConditions(conditions []metav1.Condition) {
i.Status.Conditions = conditions
}

Expand Down
23 changes: 12 additions & 11 deletions api/v1alpha1/ionoscloudcluster_types_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ import (
"github.com/stretchr/testify/require"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
"sigs.k8s.io/cluster-api/util/conditions"
clusterv1 "sigs.k8s.io/cluster-api/api/core/v1beta2"
deprecatedv1beta1conditions "sigs.k8s.io/cluster-api/util/conditions/deprecated/v1beta1"
"sigs.k8s.io/controller-runtime/pkg/client"

. "github.com/onsi/ginkgo/v2"
Expand All @@ -41,8 +41,8 @@ func TestIonosCloudCluster_Conditions(t *testing.T) {
conds := clusterv1.Conditions{{Type: "type"}}
cluster := &IonosCloudCluster{}

cluster.SetConditions(conds)
require.Equal(t, conds, cluster.GetConditions())
cluster.SetV1Beta1Conditions(conds)
require.Equal(t, conds, cluster.GetV1Beta1Conditions())
}

func defaultCluster() *IonosCloudCluster {
Expand Down Expand Up @@ -149,12 +149,12 @@ var _ = Describe("IonosCloudCluster", func() {
key := client.ObjectKey{Namespace: cluster.Namespace, Name: cluster.Name}
fetched := &IonosCloudCluster{}
Expect(k8sClient.Get(context.Background(), key, fetched)).To(Succeed())
Expect(fetched.Status.Ready).To(BeFalse())
Expect(fetched.Status.Initialization).To(BeNil())
Expect(fetched.Status.CurrentRequestByDatacenter).To(BeEmpty())
Expect(fetched.Status.Conditions).To(BeEmpty())
Expect(fetched.GetV1Beta1Conditions()).To(BeEmpty())

By("retrieving the cluster and setting the status")
fetched.Status.Ready = true
fetched.Status.Initialization = &IonosCloudClusterInitializationStatus{Provisioned: true}
wantProvisionRequest := ProvisioningRequest{
Method: "POST",
RequestPath: "/path/to/resource",
Expand All @@ -163,17 +163,18 @@ var _ = Describe("IonosCloudCluster", func() {
fetched.Status.CurrentRequestByDatacenter = map[string]ProvisioningRequest{
"123": wantProvisionRequest,
}
conditions.MarkTrue(fetched, clusterv1.ReadyCondition)
deprecatedv1beta1conditions.MarkTrue(fetched, clusterv1.ReadyCondition)

By("updating the cluster status")
Expect(k8sClient.Status().Update(context.Background(), fetched)).To(Succeed())

Expect(k8sClient.Get(context.Background(), key, fetched)).To(Succeed())
Expect(fetched.Status.Ready).To(BeTrue())
Expect(fetched.Status.Initialization).ToNot(BeNil())
Expect(fetched.Status.Initialization.Provisioned).To(BeTrue())
Expect(fetched.Status.CurrentRequestByDatacenter).To(HaveLen(1))
Expect(fetched.Status.CurrentRequestByDatacenter["123"]).To(Equal(wantProvisionRequest))
Expect(fetched.Status.Conditions).To(HaveLen(1))
Expect(conditions.IsTrue(fetched, clusterv1.ReadyCondition)).To(BeTrue())
Expect(fetched.GetV1Beta1Conditions()).To(HaveLen(1))
Expect(deprecatedv1beta1conditions.IsTrue(fetched, clusterv1.ReadyCondition)).To(BeTrue())

By("Removing the entry from the status again")
delete(fetched.Status.CurrentRequestByDatacenter, "123")
Expand Down
120 changes: 71 additions & 49 deletions api/v1alpha1/ionoscloudmachine_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,7 @@ import (
"strings"

metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
"sigs.k8s.io/cluster-api/errors"
clusterv1 "sigs.k8s.io/cluster-api/api/core/v1beta2"

"github.com/ionos-cloud/cluster-api-provider-ionoscloud/internal/util/ptr"
)
Expand Down Expand Up @@ -288,55 +287,23 @@ type ImageSelector struct {

// IonosCloudMachineStatus defines the observed state of IonosCloudMachine.
type IonosCloudMachineStatus struct {
// Ready indicates the VM has been provisioned and is ready.
// Initialization provides observations of the IonosCloudMachine initialization process.
// NOTE: Fields in this struct are part of the Cluster API contract and are used to orchestrate initial
// machine provisioning. The value of these fields is never updated after initial provisioning is completed.
// Use conditions to monitor the operational state of the machine's infrastructure.
//+optional
Ready bool `json:"ready"`
Initialization *IonosCloudMachineInitializationStatus `json:"initialization,omitempty"`

// MachineNetworkInfo contains information about the network configuration of the VM.
//+optional
MachineNetworkInfo *MachineNetworkInfo `json:"machineNetworkInfo,omitempty"`

// FailureReason will be set in the event that there is a terminal problem
// reconciling the Machine and will contain a succinct value suitable
// for machine interpretation.
//
// This field should not be set for transitive errors that a controller
// faces that are expected to be fixed automatically over
// time (like service outages), but instead indicate that something is
// fundamentally wrong with the Machine's spec or the configuration of
// the controller, and that manual intervention is required. Examples
// of terminal errors would be invalid combinations of settings in the
// spec, values that are unsupported by the controller, or the
// responsible controller itself being critically misconfigured.
//
// Any transient errors that occur during the reconciliation of IonosCloudMachines
// can be added as events to the IonosCloudMachine object and/or logged in the
// controller's output.
// Conditions represents the observations of the current state of the IonosCloudMachine.
//+optional
FailureReason *errors.MachineStatusError `json:"failureReason,omitempty"`

// FailureMessage will be set in the event that there is a terminal problem
// reconciling the Machine and will contain a more verbose string suitable
// for logging and human consumption.
//
// This field should not be set for transitive errors that a controller
// faces that are expected to be fixed automatically over
// time (like service outages), but instead indicate that something is
// fundamentally wrong with the Machine's spec or the configuration of
// the controller, and that manual intervention is required. Examples
// of terminal errors would be invalid combinations of settings in the
// spec, values that are unsupported by the controller, or the
// responsible controller itself being critically misconfigured.
//
// Any transient errors that occur during the reconciliation of IonosCloudMachines
// can be added as events to the IonosCloudMachine object and/or logged in the
// controller's output.
//+optional
FailureMessage *string `json:"failureMessage,omitempty"`

// Conditions defines current service state of the IonosCloudMachine.
//+optional
Conditions clusterv1.Conditions `json:"conditions,omitempty"`
//+listType=map
//+listMapKey=type
//+kubebuilder:validation:MaxItems=32
Conditions []metav1.Condition `json:"conditions,omitempty"`

// CurrentRequest shows the current provisioning request for any
// cloud resource that is being provisioned.
Expand All @@ -346,6 +313,42 @@ type IonosCloudMachineStatus struct {
// Location is the location of the datacenter the VM is provisioned in.
//+optional
Location string `json:"location"`

// Deprecated groups all status fields deprecated and scheduled for removal when v1beta1 contract support is dropped.
//+optional
Deprecated *IonosCloudMachineDeprecatedStatus `json:"deprecated,omitempty"`
}

// IonosCloudMachineInitializationStatus provides observations of the IonosCloudMachine initialization process.
type IonosCloudMachineInitializationStatus struct {
// Provisioned is true when the machine infrastructure is fully provisioned.
// NOTE: this field is part of the Cluster API contract and is used to orchestrate provisioning.
// The value of this field is never updated after initial provisioning is completed.
//+optional
Provisioned bool `json:"provisioned"`
}

// IonosCloudMachineDeprecatedStatus groups all status fields deprecated and scheduled for removal when
// v1beta1 contract support is dropped.
type IonosCloudMachineDeprecatedStatus struct {
// V1Beta1 groups all v1beta1 status fields that are deprecated and scheduled for removal.
//+optional
V1Beta1 *IonosCloudMachineV1Beta1DeprecatedStatus `json:"v1beta1,omitempty"`
}

// IonosCloudMachineV1Beta1DeprecatedStatus contains deprecated v1beta1 fields.
type IonosCloudMachineV1Beta1DeprecatedStatus struct {
// Ready indicates the VM has been provisioned and is ready.
//
// Deprecated: Use Initialization.Provisioned instead.
//+optional
Ready bool `json:"ready,omitempty"`

// Conditions defines current service state of the IonosCloudMachine using the deprecated v1beta1 condition type.
//
// Deprecated: Use the top-level conditions field instead.
//+optional
Conditions clusterv1.Conditions `json:"conditions,omitempty"`
}

// MachineNetworkInfo contains information about the network configuration of the VM.
Expand Down Expand Up @@ -382,7 +385,7 @@ type NICInfo struct {
//+kubebuilder:subresource:status
//+kubebuilder:resource:path=ionoscloudmachines,scope=Namespaced,categories=cluster-api;ionoscloud,shortName=icm
//+kubebuilder:printcolumn:name="Cluster",type="string",JSONPath=".metadata.labels['cluster\\.x-k8s\\.io/cluster-name']",description="Cluster"
//+kubebuilder:printcolumn:name="Ready",type="string",JSONPath=".status.ready",description="Machine is ready"
//+kubebuilder:printcolumn:name="Ready",type="string",JSONPath=".status.initialization.provisioned",description="Machine is ready"
//+kubebuilder:printcolumn:name="IPv4 Addresses",type="string",JSONPath=".status.machineNetworkInfo.nicInfo[*].ipv4Addresses"
//+kubebuilder:printcolumn:name="Machine Connected Networks",type="string",JSONPath=".status.machineNetworkInfo.nicInfo[*].networkID"
//+kubebuilder:printcolumn:name="IPv6 Addresses",type="string",JSONPath=".status.machineNetworkInfo.nicInfo[*].ipv6Addresses",priority=1
Expand All @@ -406,13 +409,32 @@ type IonosCloudMachineList struct {
Items []IonosCloudMachine `json:"items"`
}

// GetConditions returns the observations of the operational state of the IonosCloudMachine resource.
func (m *IonosCloudMachine) GetConditions() clusterv1.Conditions {
// GetV1Beta1Conditions returns the deprecated v1beta1 conditions from status.deprecated.v1beta1.conditions.
func (m *IonosCloudMachine) GetV1Beta1Conditions() clusterv1.Conditions {
if m.Status.Deprecated == nil || m.Status.Deprecated.V1Beta1 == nil {
return nil
}
return m.Status.Deprecated.V1Beta1.Conditions
}

// SetV1Beta1Conditions sets the deprecated v1beta1 conditions in status.deprecated.v1beta1.conditions.
func (m *IonosCloudMachine) SetV1Beta1Conditions(conditions clusterv1.Conditions) {
if m.Status.Deprecated == nil {
m.Status.Deprecated = &IonosCloudMachineDeprecatedStatus{}
}
if m.Status.Deprecated.V1Beta1 == nil {
m.Status.Deprecated.V1Beta1 = &IonosCloudMachineV1Beta1DeprecatedStatus{}
}
m.Status.Deprecated.V1Beta1.Conditions = conditions
}

// GetConditions returns the v1beta2 conditions from status.conditions.
func (m *IonosCloudMachine) GetConditions() []metav1.Condition {
return m.Status.Conditions
}

// SetConditions sets the underlying service state of the IonosCloudMachine to the predescribed clusterv1.Conditions.
func (m *IonosCloudMachine) SetConditions(conditions clusterv1.Conditions) {
// SetConditions sets the v1beta2 conditions in status.conditions.
func (m *IonosCloudMachine) SetConditions(conditions []metav1.Condition) {
m.Status.Conditions = conditions
}

Expand Down
Loading
Loading