v1alpha1

package
v0.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 17, 2024 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Overview

Package v1alpha1 contains API Schema definitions for the infrastructure v1alpha1 API group +kubebuilder:object:generate=true +groupName=infrastructure.cluster.x-k8s.io

Index

Constants

View Source
const (
	// ClusterFinalizer allows cleanup of resources, which are
	// associated with the IonosCloudCluster before removing it from the API server.
	ClusterFinalizer = "ionoscloudcluster.infrastructure.cluster.x-k8s.io"

	// IonosCloudClusterReady is the condition for the IonosCloudCluster, which indicates that the cluster is ready.
	IonosCloudClusterReady clusterv1.ConditionType = "ClusterReady"

	// IonosCloudClusterKind is the string resource kind of the IonosCloudCluster resource.
	IonosCloudClusterKind = "IonosCloudCluster"
)
View Source
const (
	// IonosCloudMachineType is the named type for the API object.
	IonosCloudMachineType = "IonosCloudMachine"

	// MachineFinalizer is the finalizer for the IonosCloudMachine resources.
	// It will prevent the deletion of the resource until it was removed by the controller
	// to ensure that related cloud resources will be deleted before the IonosCloudMachine resource
	// will be removed from the API server.
	MachineFinalizer = "ionoscloudmachine.infrastructure.cluster.x-k8s.io"

	// MachineProvisionedCondition documents the status of the provisioning of a IonosCloudMachine and
	// the underlying VM.
	MachineProvisionedCondition clusterv1.ConditionType = "MachineProvisioned"

	// WaitingForClusterInfrastructureReason (Severity=Info) indicates that the IonosCloudMachine is currently
	// waiting for the cluster infrastructure to become ready.
	WaitingForClusterInfrastructureReason = "WaitingForClusterInfrastructure"

	// WaitingForBootstrapDataReason (Severity=Info) indicates that the bootstrap provider has not yet finished
	// creating the bootstrap data secret and store it in the Cluster API Machine.
	WaitingForBootstrapDataReason = "WaitingForBootstrapData"

	// CloudResourceConfigAuto is a constant to indicate that the cloud resource should be managed by the
	// Cluster API provider implementation.
	CloudResourceConfigAuto = "AUTO"
)

Variables

View Source
var (
	// GroupVersion is group version used to register these objects.
	GroupVersion = schema.GroupVersion{Group: "infrastructure.cluster.x-k8s.io", Version: "v1alpha1"}

	// AddToScheme adds the types in this group-version to the given scheme.
	AddToScheme = schemeBuilder.AddToScheme
)

Functions

This section is empty.

Types

type AvailabilityZone

type AvailabilityZone string

AvailabilityZone is the availability zone where different cloud resources are created in.

const (
	// AvailabilityZoneAuto automatically selects an availability zone.
	AvailabilityZoneAuto AvailabilityZone = "AUTO"
	// AvailabilityZoneOne zone 1.
	AvailabilityZoneOne AvailabilityZone = "ZONE_1"
	// AvailabilityZoneTwo zone 2.
	AvailabilityZoneTwo AvailabilityZone = "ZONE_2"
	// AvailabilityZoneThree zone 3.
	AvailabilityZoneThree AvailabilityZone = "ZONE_3"
)

func (AvailabilityZone) String

func (a AvailabilityZone) String() string

String returns the string representation of the AvailabilityZone.

type IPAMConfig added in v0.5.0

type IPAMConfig struct {
	// IPv4PoolRef is a reference to an IPAMConfig Pool resource, which exposes IPv4 addresses.
	// The NIC will use an available IP address from the referenced pool.
	// +kubebuilder:validation:XValidation:rule="self.apiGroup == 'ipam.cluster.x-k8s.io'",message="ipv4PoolRef allows only IPAMConfig apiGroup ipam.cluster.x-k8s.io"
	// +kubebuilder:validation:XValidation:rule="self.kind == 'InClusterIPPool' || self.kind == 'GlobalInClusterIPPool'",message="ipv4PoolRef allows either InClusterIPPool or GlobalInClusterIPPool"
	// +kubebuilder:validation:XValidation:rule="self.name != ”",message="ipv4PoolRef.name is required"
	// +optional
	IPv4PoolRef *corev1.TypedLocalObjectReference `json:"ipv4PoolRef,omitempty"`

	// IPv6PoolRef is a reference to an IPAMConfig pool resource, which exposes IPv6 addresses.
	// The NIC will use an available IP address from the referenced pool.
	// +kubebuilder:validation:XValidation:rule="self.apiGroup == 'ipam.cluster.x-k8s.io'",message="ipv6PoolRef allows only IPAMConfig apiGroup ipam.cluster.x-k8s.io"
	// +kubebuilder:validation:XValidation:rule="self.kind == 'InClusterIPPool' || self.kind == 'GlobalInClusterIPPool'",message="ipv6PoolRef allows either InClusterIPPool or GlobalInClusterIPPool"
	// +kubebuilder:validation:XValidation:rule="self.name != ”",message="ipv6PoolRef.name is required"
	// +optional
	IPv6PoolRef *corev1.TypedLocalObjectReference `json:"ipv6PoolRef,omitempty"`
}

IPAMConfig optionally defines which IP Pools to use.

func (*IPAMConfig) DeepCopy added in v0.5.0

func (in *IPAMConfig) DeepCopy() *IPAMConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAMConfig.

func (*IPAMConfig) DeepCopyInto added in v0.5.0

func (in *IPAMConfig) DeepCopyInto(out *IPAMConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ImageSelector added in v0.3.0

type ImageSelector struct {
	// MatchLabels is a map of key/value pairs.
	//
	//+kubebuilder:validation:MinProperties=1
	MatchLabels map[string]string `json:"matchLabels"`

	// UseMachineVersion indicates whether to use the parent Machine's version field to look up image names.
	// Enabled by default.
	//
	//+kubebuilder:default=true
	//+optional
	UseMachineVersion *bool `json:"useMachineVersion,omitempty"`
}

ImageSelector defines label selectors for looking up images.

func (*ImageSelector) DeepCopy added in v0.3.0

func (in *ImageSelector) DeepCopy() *ImageSelector

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageSelector.

func (*ImageSelector) DeepCopyInto added in v0.3.0

func (in *ImageSelector) DeepCopyInto(out *ImageSelector)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ImageSpec

type ImageSpec struct {
	// ID is the ID of the image to use for the VM. Has precedence over selector.
	//
	//+optional
	ID string `json:"id,omitempty"`

	// Selector is used to look up images by name and labels.
	// Only images in the IonosCloudCluster's location are considered.
	//
	//+optional
	Selector *ImageSelector `json:"selector,omitempty"`
}

ImageSpec defines the image to use for the VM.

func (*ImageSpec) DeepCopy

func (in *ImageSpec) DeepCopy() *ImageSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageSpec.

func (*ImageSpec) DeepCopyInto

func (in *ImageSpec) DeepCopyInto(out *ImageSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type IonosCloudCluster

type IonosCloudCluster struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   IonosCloudClusterSpec   `json:"spec,omitempty"`
	Status IonosCloudClusterStatus `json:"status,omitempty"`
}

IonosCloudCluster is the Schema for the ionoscloudclusters API.

func (*IonosCloudCluster) DeepCopy

func (in *IonosCloudCluster) DeepCopy() *IonosCloudCluster

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IonosCloudCluster.

func (*IonosCloudCluster) DeepCopyInto

func (in *IonosCloudCluster) DeepCopyInto(out *IonosCloudCluster)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*IonosCloudCluster) DeepCopyObject

func (in *IonosCloudCluster) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*IonosCloudCluster) DeleteCurrentClusterRequest

func (i *IonosCloudCluster) DeleteCurrentClusterRequest()

DeleteCurrentClusterRequest deletes the current provisioning request for the cluster.

func (*IonosCloudCluster) GetConditions

func (i *IonosCloudCluster) GetConditions() clusterv1.Conditions

GetConditions returns the conditions from the status.

func (*IonosCloudCluster) SetConditions

func (i *IonosCloudCluster) SetConditions(conditions clusterv1.Conditions)

SetConditions sets the conditions in the status.

func (*IonosCloudCluster) SetCurrentClusterRequest

func (i *IonosCloudCluster) SetCurrentClusterRequest(method, status, requestPath string)

SetCurrentClusterRequest sets the current provisioning request for the cluster.

type IonosCloudClusterList

type IonosCloudClusterList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []IonosCloudCluster `json:"items"`
}

IonosCloudClusterList contains a list of IonosCloudCluster.

func (*IonosCloudClusterList) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IonosCloudClusterList.

func (*IonosCloudClusterList) DeepCopyInto

func (in *IonosCloudClusterList) DeepCopyInto(out *IonosCloudClusterList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*IonosCloudClusterList) DeepCopyObject

func (in *IonosCloudClusterList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type IonosCloudClusterSpec

type IonosCloudClusterSpec struct {
	// ControlPlaneEndpoint represents the endpoint used to communicate with the control plane.
	// +kubebuilder:validation:XValidation:rule="size(self.host) == 0 && self.port == 0 || self.port > 0 && self.port < 65536",message="port must be within 1-65535"
	//
	// TODO(gfariasalves): as of now, IP must be provided by the user as we still don't insert the
	// provider-provided block IP into the kube-vip manifest.
	ControlPlaneEndpoint clusterv1.APIEndpoint `json:"controlPlaneEndpoint,omitempty"`

	// Location is the location where the data centers should be located.
	//
	//+kubebuilder:validation:XValidation:rule="self == oldSelf",message="location is immutable"
	//+kubebuilder:example=de/txl
	//+kubebuilder:validation:MinLength=1
	//+optional
	Location string `json:"location,omitempty"`

	// CredentialsRef is a reference to the secret containing the credentials to access the IONOS Cloud API.
	//+kubebuilder:validation:XValidation:rule="has(self.name) && self.name != ”",message="credentialsRef.name must be provided"
	CredentialsRef corev1.LocalObjectReference `json:"credentialsRef"`

	// LoadBalancerProviderRef is a reference to the load balancer provider configuration.
	// An empty loadBalancerProviderRef field is allowed and means to disable any load balancer logic.
	LoadBalancerProviderRef *corev1.LocalObjectReference `json:"loadBalancerProviderRef,omitempty"`
}

IonosCloudClusterSpec defines the desired state of IonosCloudCluster.

func (*IonosCloudClusterSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IonosCloudClusterSpec.

func (*IonosCloudClusterSpec) DeepCopyInto

func (in *IonosCloudClusterSpec) DeepCopyInto(out *IonosCloudClusterSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type IonosCloudClusterStatus

type IonosCloudClusterStatus struct {
	// Ready indicates that the cluster is ready.
	//+optional
	Ready bool `json:"ready,omitempty"`

	// Conditions defines current service state of the IonosCloudCluster.
	//+optional
	Conditions clusterv1.Conditions `json:"conditions,omitempty"`

	// CurrentRequestByDatacenter maps data center IDs to a pending provisioning request made during reconciliation.
	//+optional
	CurrentRequestByDatacenter map[string]ProvisioningRequest `json:"currentRequest,omitempty"`

	// CurrentClusterRequest is the current pending request made during reconciliation for the whole cluster.
	//+optional
	CurrentClusterRequest *ProvisioningRequest `json:"currentClusterRequest,omitempty"`

	// ControlPlaneEndpointIPBlockID is the IONOS Cloud UUID for the control plane endpoint IP block.
	//+optional
	ControlPlaneEndpointIPBlockID string `json:"controlPlaneEndpointIPBlockID,omitempty"`
}

IonosCloudClusterStatus defines the observed state of IonosCloudCluster.

func (*IonosCloudClusterStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IonosCloudClusterStatus.

func (*IonosCloudClusterStatus) DeepCopyInto

func (in *IonosCloudClusterStatus) DeepCopyInto(out *IonosCloudClusterStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type IonosCloudClusterTemplate added in v0.3.0

type IonosCloudClusterTemplate struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec IonosCloudClusterTemplateSpec `json:"spec,omitempty"`
}

IonosCloudClusterTemplate is the Schema for the ionoscloudclustertemplates API.

func (*IonosCloudClusterTemplate) DeepCopy added in v0.3.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IonosCloudClusterTemplate.

func (*IonosCloudClusterTemplate) DeepCopyInto added in v0.3.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*IonosCloudClusterTemplate) DeepCopyObject added in v0.3.0

func (in *IonosCloudClusterTemplate) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type IonosCloudClusterTemplateList added in v0.3.0

type IonosCloudClusterTemplateList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []IonosCloudCluster `json:"items"`
}

IonosCloudClusterTemplateList contains a list of IonosCloudClusterTemplate.

func (*IonosCloudClusterTemplateList) DeepCopy added in v0.3.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IonosCloudClusterTemplateList.

func (*IonosCloudClusterTemplateList) DeepCopyInto added in v0.3.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*IonosCloudClusterTemplateList) DeepCopyObject added in v0.3.0

func (in *IonosCloudClusterTemplateList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type IonosCloudClusterTemplateResource added in v0.3.0

type IonosCloudClusterTemplateResource struct {
	Spec IonosCloudClusterSpec `json:"spec"`
}

IonosCloudClusterTemplateResource describes the data for creating a IonosCloudCluster from a template.

func (*IonosCloudClusterTemplateResource) DeepCopy added in v0.3.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IonosCloudClusterTemplateResource.

func (*IonosCloudClusterTemplateResource) DeepCopyInto added in v0.3.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type IonosCloudClusterTemplateSpec added in v0.3.0

type IonosCloudClusterTemplateSpec struct {
	Template IonosCloudClusterTemplateResource `json:"template"`
}

IonosCloudClusterTemplateSpec defines the desired state of IonosCloudClusterTemplate.

func (*IonosCloudClusterTemplateSpec) DeepCopy added in v0.3.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IonosCloudClusterTemplateSpec.

func (*IonosCloudClusterTemplateSpec) DeepCopyInto added in v0.3.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type IonosCloudMachine

type IonosCloudMachine struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	//+kubebuilder:validation:XValidation:rule="self.type != 'VCPU' || !has(self.cpuFamily)",message="cpuFamily must not be specified when using VCPU"
	Spec   IonosCloudMachineSpec   `json:"spec,omitempty"`
	Status IonosCloudMachineStatus `json:"status,omitempty"`
}

IonosCloudMachine is the Schema for the ionoscloudmachines API.

func (*IonosCloudMachine) DeepCopy

func (in *IonosCloudMachine) DeepCopy() *IonosCloudMachine

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IonosCloudMachine.

func (*IonosCloudMachine) DeepCopyInto

func (in *IonosCloudMachine) DeepCopyInto(out *IonosCloudMachine)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*IonosCloudMachine) DeepCopyObject

func (in *IonosCloudMachine) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*IonosCloudMachine) DeleteCurrentRequest

func (m *IonosCloudMachine) DeleteCurrentRequest()

DeleteCurrentRequest deletes the current provisioning request for the machine.

func (*IonosCloudMachine) ExtractServerID

func (m *IonosCloudMachine) ExtractServerID() string

ExtractServerID extracts the server ID from the provider ID. if the provider ID is empty, an empty string will be returned instead.

func (*IonosCloudMachine) GetConditions

func (m *IonosCloudMachine) GetConditions() clusterv1.Conditions

GetConditions returns the observations of the operational state of the IonosCloudMachine resource.

func (*IonosCloudMachine) SetConditions

func (m *IonosCloudMachine) SetConditions(conditions clusterv1.Conditions)

SetConditions sets the underlying service state of the IonosCloudMachine to the predescribed clusterv1.Conditions.

func (*IonosCloudMachine) SetCurrentRequest

func (m *IonosCloudMachine) SetCurrentRequest(method, status, requestPath string)

SetCurrentRequest sets the current provisioning request for the machine.

type IonosCloudMachineList

type IonosCloudMachineList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []IonosCloudMachine `json:"items"`
}

IonosCloudMachineList contains a list of IonosCloudMachine.

func (*IonosCloudMachineList) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IonosCloudMachineList.

func (*IonosCloudMachineList) DeepCopyInto

func (in *IonosCloudMachineList) DeepCopyInto(out *IonosCloudMachineList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*IonosCloudMachineList) DeepCopyObject

func (in *IonosCloudMachineList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type IonosCloudMachineSpec

type IonosCloudMachineSpec struct {
	// ProviderID is the IONOS Cloud provider ID
	// will be in the format ionos://ee090ff2-1eef-48ec-a246-a51a33aa4f3a
	//+optional
	ProviderID *string `json:"providerID,omitempty"`

	// DatacenterID is the ID of the data center where the VM should be created in.
	//+kubebuilder:validation:XValidation:rule="self == oldSelf",message="datacenterID is immutable"
	//+kubebuilder:validation:Format=uuid
	DatacenterID string `json:"datacenterID"`

	// NumCores defines the number of cores for the VM.
	//+kubebuilder:validation:Minimum=1
	//+kubebuilder:default=1
	//+optional
	NumCores int32 `json:"numCores,omitempty"`

	// AvailabilityZone is the availability zone in which the VM should be provisioned.
	//+kubebuilder:validation:Enum=AUTO;ZONE_1;ZONE_2
	//+kubebuilder:default=AUTO
	//+optional
	AvailabilityZone AvailabilityZone `json:"availabilityZone,omitempty"`

	// MemoryMB is the memory size for the VM in MB.
	// Size must be specified in multiples of 256 MB with a minimum of 1024 MB
	// which is required as we are using hot-pluggable RAM by default.
	//+kubebuilder:validation:MultipleOf=1024
	//+kubebuilder:validation:Minimum=2048
	//+kubebuilder:default=3072
	//+optional
	MemoryMB int32 `json:"memoryMB,omitempty"`

	// CPUFamily defines the CPU architecture, which will be used for this VM.
	// Not all CPU architectures are available in all data centers.
	//
	// If not specified, the cloud will select a suitable CPU family
	// based on the availability in the data center.
	//+kubebuilder:example=AMD_OPTERON
	//+optional
	CPUFamily *string `json:"cpuFamily,omitempty"`

	// Disk defines the boot volume of the VM.
	Disk *Volume `json:"disk"`

	// AdditionalNetworks defines the additional network configurations for the VM.
	//
	//+optional
	AdditionalNetworks []Network `json:"additionalNetworks,omitempty"`

	// IPAMConfig allows to obtain IP Addresses from existing IP pools instead of using DHCP.
	IPAMConfig `json:",inline"`

	// FailoverIP can be set to enable failover for VMs in the same MachineDeployment.
	// It can be either set to an already reserved IPv4 address, or it can be set to "AUTO"
	// which will automatically reserve an IPv4 address for the Failover Group.
	//
	// If the machine is a control plane machine, this field will not be taken into account.
	//+kubebuilder:validation:XValidation:rule="self == oldSelf",message="failoverIP is immutable"
	//+kubebuilder:validation:XValidation:rule=`self == "AUTO" || self.matches("((25[0-5]|(2[0-4]|1\\d|[1-9]|)\\d)\\.?\\b){4}$")`,message="failoverIP must be either 'AUTO' or a valid IPv4 address"
	//+optional
	FailoverIP *string `json:"failoverIP,omitempty"`

	// Type is the server type of the VM. Can be either ENTERPRISE or VCPU.
	//+kubebuilder:validation:XValidation:rule="self == oldSelf",message="type is immutable"
	//+kubebuilder:validation:Enum=ENTERPRISE;VCPU
	//+kubebuilder:default=ENTERPRISE
	//+optional
	Type ServerType `json:"type,omitempty"`
}

IonosCloudMachineSpec defines the desired state of IonosCloudMachine.

func (*IonosCloudMachineSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IonosCloudMachineSpec.

func (*IonosCloudMachineSpec) DeepCopyInto

func (in *IonosCloudMachineSpec) DeepCopyInto(out *IonosCloudMachineSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type IonosCloudMachineStatus

type IonosCloudMachineStatus struct {
	// Ready indicates the VM has been provisioned and is ready.
	//+optional
	Ready bool `json:"ready"`

	// 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.
	//+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"`

	// CurrentRequest shows the current provisioning request for any
	// cloud resource that is being provisioned.
	//+optional
	CurrentRequest *ProvisioningRequest `json:"currentRequest,omitempty"`

	// Location is the location of the datacenter the VM is provisioned in.
	//+optional
	Location string `json:"location"`
}

IonosCloudMachineStatus defines the observed state of IonosCloudMachine.

func (*IonosCloudMachineStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IonosCloudMachineStatus.

func (*IonosCloudMachineStatus) DeepCopyInto

func (in *IonosCloudMachineStatus) DeepCopyInto(out *IonosCloudMachineStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type IonosCloudMachineTemplate

type IonosCloudMachineTemplate struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec IonosCloudMachineTemplateSpec `json:"spec,omitempty"`
}

IonosCloudMachineTemplate is the Schema for the ionoscloudmachinetemplates API.

func (*IonosCloudMachineTemplate) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IonosCloudMachineTemplate.

func (*IonosCloudMachineTemplate) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*IonosCloudMachineTemplate) DeepCopyObject

func (in *IonosCloudMachineTemplate) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type IonosCloudMachineTemplateList

type IonosCloudMachineTemplateList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []IonosCloudMachineTemplate `json:"items"`
}

IonosCloudMachineTemplateList contains a list of IonosCloudMachineTemplate.

func (*IonosCloudMachineTemplateList) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IonosCloudMachineTemplateList.

func (*IonosCloudMachineTemplateList) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*IonosCloudMachineTemplateList) DeepCopyObject

func (in *IonosCloudMachineTemplateList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type IonosCloudMachineTemplateResource

type IonosCloudMachineTemplateResource struct {
	// Standard object's metadata.
	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
	//+optional
	ObjectMeta clusterv1.ObjectMeta `json:"metadata,omitempty"`
	// Spec is the IonosCloudMachineSpec for the IonosCloudMachineTemplate.
	Spec IonosCloudMachineSpec `json:"spec"`
}

IonosCloudMachineTemplateResource defines the spec and metadata for IonosCloudMachineTemplate supported by capi.

func (*IonosCloudMachineTemplateResource) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IonosCloudMachineTemplateResource.

func (*IonosCloudMachineTemplateResource) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type IonosCloudMachineTemplateSpec

type IonosCloudMachineTemplateSpec struct {
	// Template is the IonosCloudMachineTemplateResource for the IonosCloudMachineTemplate.
	Template IonosCloudMachineTemplateResource `json:"template"`
}

IonosCloudMachineTemplateSpec defines the desired state of IonosCloudMachineTemplate.

func (*IonosCloudMachineTemplateSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IonosCloudMachineTemplateSpec.

func (*IonosCloudMachineTemplateSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MachineNetworkInfo

type MachineNetworkInfo struct {
	// NICInfo holds information about the NICs, which are attached to the VM.
	//+optional
	NICInfo []NICInfo `json:"nicInfo,omitempty"`
}

MachineNetworkInfo contains information about the network configuration of the VM. Before the provisioning MachineNetworkInfo may contain IP addresses to be used for provisioning. After provisioning this information is available completely.

func (*MachineNetworkInfo) DeepCopy

func (in *MachineNetworkInfo) DeepCopy() *MachineNetworkInfo

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineNetworkInfo.

func (*MachineNetworkInfo) DeepCopyInto

func (in *MachineNetworkInfo) DeepCopyInto(out *MachineNetworkInfo)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type NICInfo

type NICInfo struct {
	// IPv4Addresses contains the IPv4 addresses of the NIC.
	// By default, we enable dual-stack, but as we are storing the IP obtained from AddressClaims here before
	// creating the VM this can be temporarily empty, e.g. we use DHCP for IPv4 and fixed IP for IPv6.
	//+optional
	IPv4Addresses []string `json:"ipv4Addresses,omitempty"`

	// IPv6Addresses contains the IPv6 addresses of the NIC.
	// By default, we enable dual-stack, but as we are storing the IP obtained from AddressClaims here before
	// creating the VM this can be temporarily empty, e.g. we use DHCP for IPv6 and fixed IP for IPv4.
	//+optional
	IPv6Addresses []string `json:"ipv6Addresses,omitempty"`

	// NetworkID is the ID of the LAN to which the NIC is connected.
	NetworkID int32 `json:"networkID"`

	// Primary indicates whether the NIC is the primary NIC of the VM.
	Primary bool `json:"primary"`
}

NICInfo provides information about the NIC of the VM.

func (*NICInfo) DeepCopy

func (in *NICInfo) DeepCopy() *NICInfo

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NICInfo.

func (*NICInfo) DeepCopyInto

func (in *NICInfo) DeepCopyInto(out *NICInfo)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Network

type Network struct {
	// NetworkID represents an ID an existing LAN in the data center.
	// This LAN will be excluded from the deletion process.
	//+kubebuilder:validation:Minimum=1
	NetworkID int32 `json:"networkID"`

	// VNET is solely used for internal purposes and requires elevated permissions.
	//+optional
	VNET *string `json:"vnet,omitempty"`

	// DHCP indicates whether DHCP is enabled for the LAN.
	// The primary NIC will always have DHCP enabled.
	//+kubebuilder:default=true
	//+optional
	DHCP *bool `json:"dhcp,omitempty"`

	// IPAMConfig allows to obtain IP Addresses from existing IP pools instead of using DHCP.
	IPAMConfig `json:",inline"`
}

Network contains the config for additional LANs.

func (*Network) DeepCopy

func (in *Network) DeepCopy() *Network

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Network.

func (*Network) DeepCopyInto

func (in *Network) DeepCopyInto(out *Network)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ProvisioningRequest

type ProvisioningRequest struct {
	// Method is the request method
	Method string `json:"method"`

	// RequestPath is the sub path for the request URL
	RequestPath string `json:"requestPath"`

	// RequestStatus is the status of the request in the queue.
	//+kubebuilder:validation:Enum=QUEUED;RUNNING;DONE;FAILED
	//+optional
	State string `json:"state,omitempty"`
}

ProvisioningRequest is a definition of a provisioning request in the IONOS Cloud.

func (*ProvisioningRequest) DeepCopy

func (in *ProvisioningRequest) DeepCopy() *ProvisioningRequest

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProvisioningRequest.

func (*ProvisioningRequest) DeepCopyInto

func (in *ProvisioningRequest) DeepCopyInto(out *ProvisioningRequest)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServerType

type ServerType string

ServerType is the type of server which is created (ENTERPRISE or VCPU).

const (
	// ServerTypeEnterprise server of type ENTERPRISE.
	ServerTypeEnterprise ServerType = "ENTERPRISE"
	// ServerTypeVCPU server of type VCPU.
	ServerTypeVCPU ServerType = "VCPU"
)

func (ServerType) String

func (a ServerType) String() string

String returns the string representation of the ServerType.

type Volume

type Volume struct {
	// Name is the name of the volume
	//+optional
	Name string `json:"name,omitempty"`

	// DiskType defines the type of the hard drive.
	//+kubebuilder:validation:Enum=HDD;SSD Standard;SSD Premium
	//+kubebuilder:default=HDD
	//+optional
	DiskType VolumeDiskType `json:"diskType,omitempty"`

	// SizeGB defines the size of the volume in GB
	//+kubebuilder:validation:Minimum=10
	//+kubebuilder:default=20
	//+optional
	SizeGB int `json:"sizeGB,omitempty"`

	// AvailabilityZone is the availability zone where the volume will be created.
	//+kubebuilder:validation:Enum=AUTO;ZONE_1;ZONE_2;ZONE_3
	//+kubebuilder:default=AUTO
	//+optional
	AvailabilityZone AvailabilityZone `json:"availabilityZone,omitempty"`

	// Image is the image to use for the VM.
	//+kubebuilder:validation:XValidation:rule="self.id != ” || has(self.selector)",message="must provide either id or selector"
	Image *ImageSpec `json:"image"`
}

Volume is the physical storage on the VM.

func (*Volume) DeepCopy

func (in *Volume) DeepCopy() *Volume

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Volume.

func (*Volume) DeepCopyInto

func (in *Volume) DeepCopyInto(out *Volume)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type VolumeDiskType

type VolumeDiskType string

VolumeDiskType specifies the type of hard disk.

const (
	// VolumeDiskTypeHDD defines the disk type HDD.
	VolumeDiskTypeHDD VolumeDiskType = "HDD"
	// VolumeDiskTypeSSDStandard defines the standard SSD disk type.
	// This is the same as VolumeDiskTypeSSD.
	VolumeDiskTypeSSDStandard VolumeDiskType = "SSD Standard"
	// VolumeDiskTypeSSDPremium defines the premium SSD disk type.
	VolumeDiskTypeSSDPremium VolumeDiskType = "SSD Premium"
)

func (VolumeDiskType) String

func (v VolumeDiskType) String() string

String returns the string representation of the VolumeDiskType.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL