v1alpha1

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Dec 19, 2024 License: Apache-2.0 Imports: 7 Imported by: 6

Documentation

Overview

Package v1alpha1 contains API Schema definitions for the openstack v1alpha1 API group +kubebuilder:object:generate=true +groupName=openstack.k-orc.cloud +k8s:openapi-gen=true

Package v1alpha1 contains API Schema definitions for the openstack v1alpha1 API group +kubebuilder:object:generate=true +groupName=openstack.k-orc.cloud +k8s:openapi-gen=true

Index

Constants

View Source
const (

	// Normal progress: continue waiting.
	ConditionReasonProgressing = "Progressing"

	// The user must fix the configuration before trying again.
	ConditionReasonInvalidConfiguration = "InvalidConfiguration"

	// An error occurred which we can't recover from. It must be addressed
	// before we can continue.
	ConditionReasonUnrecoverableError = "UnrecoverableError"

	// An error occurred which may go away eventually if we keep trying. The
	// user likely wants to know about this if it persists.
	ConditionReasonTransientError = "TransientError"

	// The resource is ready for use.
	ConditionReasonSuccess = "Success"
)
View Source
const (
	ConditionAvailable   = "Available"
	ConditionProgressing = "Progressing"
)
View Source
const GlanceTag = "glance"

GlanceTag is the name of the go field tag in properties structs used to specify the Glance property name.

View Source
const GroupName = "openstack.k-orc.cloud"

GroupName is the group name use in this package

Variables

View Source
var (
	// SchemeBuilder is used to add go types to the GroupVersionKind scheme
	SchemeBuilder = &scheme.Builder{GroupVersion: SchemeGroupVersion}

	// AddToScheme adds the types in this group-version to the given scheme.
	AddToScheme = SchemeBuilder.AddToScheme
)
View Source
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"}

SchemeGroupVersion is group version used to register these objects

Functions

func GetTerminalError

func GetTerminalError(obj ObjectWithConditions) error

GetTerminalError returns an error containing a descriptive message if reconciliation has failed terminally, or nil otherwise.

func IsAvailable

func IsAvailable(obj ObjectWithConditions) bool

func IsConditionReasonTerminal

func IsConditionReasonTerminal(reason string) bool

IsConditionReasonTerminal returns true if the given reason represents an error which should prevent further reconciliation.

func IsReconciliationComplete

func IsReconciliationComplete(obj ObjectWithConditions) bool

IsReconciliationComplete returns true if the given set of conditions indicate that reconciliation is complete, either success or failure.

func Resource

func Resource(resource string) schema.GroupResource

Resource takes an unqualified resource and returns a Group qualified GroupResource

Types

type CloudCredentialsRefProvider

type CloudCredentialsRefProvider interface {
	GetCloudCredentialsRef() (*string, *CloudCredentialsReference)
}

CloudCredentialsRefProvider is an interface for obtaining OpenStack credentials from an API object +kubebuilder:object:generate:=false

type CloudCredentialsReference

type CloudCredentialsReference struct {
	// SecretName is the name of a secret in the same namespace as the resource being provisioned.
	// The secret must contain a key named `clouds.yaml` which contains an OpenStack clouds.yaml file.
	// The secret may optionally contain a key named `cacert` containing a PEM-encoded CA certificate.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=253
	SecretName string `json:"secretName"`

	// CloudName specifies the name of the entry in the clouds.yaml file to use.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=256
	CloudName string `json:"cloudName"`
}

CloudCredentialsReference is a reference to a secret containing OpenStack credentials.

func (*CloudCredentialsReference) DeepCopy

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

func (*CloudCredentialsReference) DeepCopyInto

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

type Image

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

	Spec   ImageSpec   `json:"spec,omitempty"`
	Status ImageStatus `json:"status,omitempty"`
}

Image is the Schema for an ORC resource.

func (*Image) DeepCopy

func (in *Image) DeepCopy() *Image

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

func (*Image) DeepCopyInto

func (in *Image) DeepCopyInto(out *Image)

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

func (*Image) DeepCopyObject

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

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

func (*Image) GetCloudCredentialsRef

func (i *Image) GetCloudCredentialsRef() (*string, *CloudCredentialsReference)

func (*Image) GetConditions

func (i *Image) GetConditions() []metav1.Condition

type ImageCompression

type ImageCompression string

+kubebuilder:validation:Enum:=xz;gz;bz2

const (
	ImageCompressionXZ  ImageCompression = "xz"
	ImageCompressionGZ  ImageCompression = "gz"
	ImageCompressionBZ2 ImageCompression = "bz2"
)

type ImageContainerFormat

type ImageContainerFormat string

+kubebuilder:validation:Enum:=ami;ari;aki;bare;ovf;ova;docker

const (
	ImageContainerFormatAKI    ImageContainerFormat = "aki"
	ImageContainerFormatAMI    ImageContainerFormat = "ami"
	ImageContainerFormatARI    ImageContainerFormat = "ari"
	ImageContainerFormatBare   ImageContainerFormat = "bare"
	ImageContainerFormatDocker ImageContainerFormat = "docker"
	ImageContainerFormatOVA    ImageContainerFormat = "ova"
	ImageContainerFormatOVF    ImageContainerFormat = "ovf"
)

type ImageContent

type ImageContent struct {
	// ContainerFormat is the format of the image container.
	// qcow2 and raw images do not usually have a container. This is specified as "bare", which is also the default.
	// Permitted values are ami, ari, aki, bare, ovf, ova, and docker.
	// +kubebuilder:default:=bare
	// +optional
	ContainerFormat ImageContainerFormat `json:"containerFormat,omitempty"`

	// DiskFormat is the format of the disk image.
	// Normal values are "qcow2", or "raw". Glance may be configured to support others.
	// +kubebuilder:validation:Required
	DiskFormat ImageDiskFormat `json:"diskFormat"`

	// Download describes how to obtain image data by downloading it from a URL.
	// Must be set when creating a managed image.
	// +kubebuilder:validation:Required
	Download *ImageContentSourceDownload `json:"download,omitempty"`
}

func (*ImageContent) DeepCopy

func (in *ImageContent) DeepCopy() *ImageContent

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

func (*ImageContent) DeepCopyInto

func (in *ImageContent) DeepCopyInto(out *ImageContent)

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

type ImageContentSourceDownload

type ImageContentSourceDownload struct {
	// URL containing image data
	// +kubebuilder:validation:Format=uri
	// +kubebuilder:validation:Required
	URL string `json:"url"`

	// Decompress specifies that the source data must be decompressed with the
	// given compression algorithm before being stored. Specifying Decompress
	// will disable the use of Glance's web-download, as web-download cannot
	// currently deterministically decompress downloaded content.
	// +optional
	Decompress *ImageCompression `json:"decompress,omitempty"`

	// Hash is a hash which will be used to verify downloaded data, i.e.
	// before any decompression. If not specified, no hash verification will be
	// performed. Specifying a Hash will disable the use of Glance's
	// web-download, as web-download cannot currently deterministically verify
	// the hash of downloaded content.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="hash is immutable"
	// +optional
	Hash *ImageHash `json:"hash,omitempty"`
}

func (*ImageContentSourceDownload) DeepCopy

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

func (*ImageContentSourceDownload) DeepCopyInto

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

type ImageDiskFormat

type ImageDiskFormat string

+kubebuilder:validation:Enum:=ami;ari;aki;vhd;vhdx;vmdk;raw;qcow2;vdi;ploop;iso

const (
	ImageDiskFormatAMI   ImageDiskFormat = "ami"
	ImageDiskFormatARI   ImageDiskFormat = "ari"
	ImageDiskFormatAKI   ImageDiskFormat = "aki"
	ImageDiskFormatVHD   ImageDiskFormat = "vhd"
	ImageDiskFormatVHDX  ImageDiskFormat = "vhdx"
	ImageDiskFormatVMDK  ImageDiskFormat = "vmdk"
	ImageDiskFormatRaw   ImageDiskFormat = "raw"
	ImageDiskFormatQCOW2 ImageDiskFormat = "qcow2"
	ImageDiskFormatVDI   ImageDiskFormat = "vdi"
	ImageDiskFormatPLoop ImageDiskFormat = "ploop"
	ImageDiskFormatISO   ImageDiskFormat = "iso"
)

type ImageFilter

type ImageFilter struct {
	// Name specifies the name of a Glance image
	// +optional
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=1000
	Name *string `json:"name,omitempty"`
}

ImageFilter defines a Glance query +kubebuilder:validation:MinProperties:=1

func (*ImageFilter) DeepCopy

func (in *ImageFilter) DeepCopy() *ImageFilter

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

func (*ImageFilter) DeepCopyInto

func (in *ImageFilter) DeepCopyInto(out *ImageFilter)

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

type ImageHWBus

type ImageHWBus string

ImageHWBus is a type of hardware bus.

Permitted values are scsi, virtio, uml, xen, ide, usb, and lxc. +kubebuilder:validation:Enum:=scsi;virtio;uml;xen;ide;usb;lxc

type ImageHash

type ImageHash struct {
	// Algorithm is the hash algorithm used to generate value.
	// +kubebuilder:validation:Required
	Algorithm ImageHashAlgorithm `json:"algorithm"`

	// Value is the hash of the image data using Algorithm. It must be hex encoded using lowercase letters.
	// +kubebuilder:validation:MinLength:=1
	// +kubebuilder:validation:MaxLength:=1024
	// +kubebuilder:validation:Pattern:=`^[0-9a-f]+$`
	// +kubebuilder:validation:Required
	Value string `json:"value"`
}

func (*ImageHash) DeepCopy

func (in *ImageHash) DeepCopy() *ImageHash

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

func (*ImageHash) DeepCopyInto

func (in *ImageHash) DeepCopyInto(out *ImageHash)

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

type ImageHashAlgorithm

type ImageHashAlgorithm string

+kubebuilder:validation:Enum:=md5;sha1;sha256;sha512

const (
	ImageHashAlgorithmMD5    ImageHashAlgorithm = "md5"
	ImageHashAlgorithmSHA1   ImageHashAlgorithm = "sha1"
	ImageHashAlgorithmSHA256 ImageHashAlgorithm = "sha256"
	ImageHashAlgorithmSHA512 ImageHashAlgorithm = "sha512"
)

type ImageImport

type ImageImport struct {
	// ID contains the unique identifier of an existing OpenStack resource. Note
	// that when specifying an import by ID, the resource MUST already exist.
	// The ORC object will enter an error state if the resource does not exist.
	// +optional
	// +kubebuilder:validation:Format:=uuid
	ID *string `json:"id,omitempty"`

	// Filter contains a resource query which is expected to return a single
	// result. The controller will continue to retry if filter returns no
	// results. If filter returns multiple results the controller will set an
	// error state and will not continue to retry.
	// +optional
	Filter *ImageFilter `json:"filter,omitempty"`
}

ImageImport specifies an existing resource which will be imported instead of creating a new one +kubebuilder:validation:MinProperties:=1 +kubebuilder:validation:MaxProperties:=1

func (*ImageImport) DeepCopy

func (in *ImageImport) DeepCopy() *ImageImport

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

func (*ImageImport) DeepCopyInto

func (in *ImageImport) DeepCopyInto(out *ImageImport)

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

type ImageList

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

ImageList contains a list of Image.

func (*ImageList) DeepCopy

func (in *ImageList) DeepCopy() *ImageList

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

func (*ImageList) DeepCopyInto

func (in *ImageList) DeepCopyInto(out *ImageList)

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

func (*ImageList) DeepCopyObject

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

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

func (*ImageList) GetItems

func (l *ImageList) GetItems() []Image

type ImageProperties

type ImageProperties struct {
	// MinDisk is the minimum amount of disk space in GB that is required to boot the image
	// +kubebuilder:validation:Minimum:=1
	// +optional
	MinDiskGB *int `json:"minDiskGB,omitempty"`

	// MinMemoryMB is the minimum amount of RAM in MB that is required to boot the image.
	// +kubebuilder:validation:Minimum:=1
	// +optional
	MinMemoryMB *int `json:"minMemoryMB,omitempty"`

	// Hardware is a set of properties which control the virtual hardware
	// created by Nova.
	// +optional
	Hardware *ImagePropertiesHardware `json:"hardware,omitempty"`
}

func (*ImageProperties) DeepCopy

func (in *ImageProperties) DeepCopy() *ImageProperties

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

func (*ImageProperties) DeepCopyInto

func (in *ImageProperties) DeepCopyInto(out *ImageProperties)

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

type ImagePropertiesHardware

type ImagePropertiesHardware struct {
	// CPUSockets is the preferred number of sockets to expose to the guest
	// +optional
	CPUSockets *int `json:"cpuSockets,omitempty" glance:"hw_cpu_sockets"`

	// CPUCores is the preferred number of cores to expose to the guest
	// +optional
	CPUCores *int `json:"cpuCores,omitempty" glance:"hw_cpu_cores"`

	// CPUThreads is the preferred number of threads to expose to the guest
	// +optional
	CPUThreads *int `json:"cpuThreads,omitempty" glance:"hw_cpu_threads"`

	// CPUPolicy is used to pin the virtual CPUs (vCPUs) of instances to the
	// host's physical CPU cores (pCPUs). Host aggregates should be used to
	// separate these pinned instances from unpinned instances as the latter
	// will not respect the resourcing requirements of the former.
	//
	// Permitted values are shared (the default), and dedicated.
	//
	// shared: The guest vCPUs will be allowed to freely float across host
	// pCPUs, albeit potentially constrained by NUMA policy.
	//
	// dedicated: The guest vCPUs will be strictly pinned to a set of host
	// pCPUs. In the absence of an explicit vCPU topology request, the
	// drivers typically expose all vCPUs as sockets with one core and one
	// thread. When strict CPU pinning is in effect the guest CPU topology
	// will be setup to match the topology of the CPUs to which it is
	// pinned. This option implies an overcommit ratio of 1.0. For example,
	// if a two vCPU guest is pinned to a single host core with two threads,
	// then the guest will get a topology of one socket, one core, two
	// threads.
	// +kubebuilder:validation:Enum:=shared;dedicated
	// +optional
	CPUPolicy *string `json:"cpuPolicy,omitempty" glance:"hw_cpu_policy"`

	// CPUThreadPolicy further refines a CPUPolicy of 'dedicated' by stating
	// how hardware CPU threads in a simultaneous multithreading-based (SMT)
	// architecture be used. SMT-based architectures include Intel
	// processors with Hyper-Threading technology. In these architectures,
	// processor cores share a number of components with one or more other
	// cores. Cores in such architectures are commonly referred to as
	// hardware threads, while the cores that a given core share components
	// with are known as thread siblings.
	//
	// Permitted values are prefer (the default), isolate, and require.
	//
	// prefer: The host may or may not have an SMT architecture. Where an
	// SMT architecture is present, thread siblings are preferred.
	//
	// isolate: The host must not have an SMT architecture or must emulate a
	// non-SMT architecture. If the host does not have an SMT architecture,
	// each vCPU is placed on a different core as expected. If the host does
	// have an SMT architecture - that is, one or more cores have thread
	// siblings - then each vCPU is placed on a different physical core. No
	// vCPUs from other guests are placed on the same core. All but one
	// thread sibling on each utilized core is therefore guaranteed to be
	// unusable.
	//
	// require: The host must have an SMT architecture. Each vCPU is
	// allocated on thread siblings. If the host does not have an SMT
	// architecture, then it is not used. If the host has an SMT
	// architecture, but not enough cores with free thread siblings are
	// available, then scheduling fails.
	// +kubebuilder:validation:Enum:=prefer;isolate;require
	// +optional
	CPUThreadPolicy *string `json:"cpuThreadPolicy,omitempty" glance:"hw_cpu_thread_policy"`

	// CDROMBus specifies the type of disk controller to attach CD-ROM devices to.
	// +optional
	CDROMBus *ImageHWBus `json:"cdromBus,omitempty" glance:"hw_cdrom_bus"`

	// DiskBus specifies the type of disk controller to attach disk devices to.
	// +optional
	DiskBus *ImageHWBus `json:"diskBus,omitempty" glance:"hw_disk_bus"`

	// SCSIModel enables the use of VirtIO SCSI (virtio-scsi) to provide
	// block device access for compute instances; by default, instances use
	// VirtIO Block (virtio-blk). VirtIO SCSI is a para-virtualized SCSI
	// controller device that provides improved scalability and performance,
	// and supports advanced SCSI hardware.
	//
	// The only permitted value is virtio-scsi.
	// +kubebuilder:validation:Enum:=virtio-scsi
	// +optional
	SCSIModel *string `json:"scsiModel,omitempty" glance:"hw_scsi_model"`

	// VIFModel specifies the model of virtual network interface device to use.
	//
	// Permitted values are e1000, e1000e, ne2k_pci, pcnet, rtl8139, virtio,
	// and vmxnet3.
	// +kubebuilder:validation:Enum:=e1000;e1000e;ne2k_pci;pcnet;rtl8139;virtio;vmxnet3
	// +optional
	VIFModel *string `json:"vifModel,omitempty" glance:"hw_vif_model"`
}

func (*ImagePropertiesHardware) DeepCopy

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

func (*ImagePropertiesHardware) DeepCopyInto

func (in *ImagePropertiesHardware) DeepCopyInto(out *ImagePropertiesHardware)

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

type ImageResourceSpec

type ImageResourceSpec struct {
	// Name will be the name of the created Glance image. If not specified, the
	// name of the Image object will be used.
	// +optional
	Name *OpenStackName `json:"name,omitempty"`

	// Protected specifies that the image is protected from deletion.
	// If not specified, the default is false.
	// +optional
	Protected *bool `json:"protected,omitempty"`

	// Tags is a list of tags which will be applied to the image. A tag has a maximum length of 255 characters.
	// +listType=set
	// +optional
	Tags []ImageTag `json:"tags,omitempty"`

	// Visibility of the image
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="visibility is immutable"
	// +optional
	Visibility *ImageVisibility `json:"visibility,omitempty"`

	// Properties is metadata available to consumers of the image
	// +optional
	Properties *ImageProperties `json:"properties,omitempty"`

	// Content specifies how to obtain the image content.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="content is immutable"
	// +optional
	Content *ImageContent `json:"content,omitempty"`
}

ImageResourceSpec contains the desired state of a Glance image +kubebuilder:validation:XValidation:rule="has(self.name) ? self.name == oldSelf.name : !has(oldSelf.name)",message="name is immutable" +kubebuilder:validation:XValidation:rule="has(self.protected) ? self.protected == oldSelf.protected : !has(oldSelf.protected)",message="name is immutable" +kubebuilder:validation:XValidation:rule="has(self.tags) ? self.tags == oldSelf.tags : !has(oldSelf.tags)",message="tags is immutable" +kubebuilder:validation:XValidation:rule="has(self.visibility) ? self.visibility == oldSelf.visibility : !has(oldSelf.visibility)",message="visibility is immutable" +kubebuilder:validation:XValidation:rule="has(self.properties) ? self.properties == oldSelf.properties : !has(oldSelf.properties)",message="properties is immutable"

func (*ImageResourceSpec) DeepCopy

func (in *ImageResourceSpec) DeepCopy() *ImageResourceSpec

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

func (*ImageResourceSpec) DeepCopyInto

func (in *ImageResourceSpec) DeepCopyInto(out *ImageResourceSpec)

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

type ImageResourceStatus

type ImageResourceStatus struct {
	// Status is the image status as reported by Glance
	// +optional
	Status *string `json:"status,omitempty"`

	// Hash is the hash of the image data published by Glance. Note that this is
	// a hash of the data stored internally by Glance, which will have been
	// decompressed and potentially format converted depending on server-side
	// configuration which is not visible to clients. It is expected that this
	// hash will usually differ from the download hash.
	// +optional
	Hash *ImageHash `json:"hash,omitempty"`

	// SizeB is the size of the image data, in bytes
	// +optional
	SizeB *int64 `json:"sizeB,omitempty"`

	// VirtualSizeB is the size of the disk the image data represents, in bytes
	// +optional
	VirtualSizeB *int64 `json:"virtualSizeB,omitempty"`
}

ImageResourceStatus represents the observed state of a Glance image

func (*ImageResourceStatus) DeepCopy

func (in *ImageResourceStatus) DeepCopy() *ImageResourceStatus

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

func (*ImageResourceStatus) DeepCopyInto

func (in *ImageResourceStatus) DeepCopyInto(out *ImageResourceStatus)

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

type ImageSpec

type ImageSpec struct {
	// Import refers to an existing OpenStack resource which will be imported instead of
	// creating a new one.
	// +optional
	Import *ImageImport `json:"import,omitempty"`

	// Resource specifies the desired state of the resource.
	//
	// Resource may not be specified if the management policy is `unmanaged`.
	//
	// Resource must be specified if the management policy is `managed`.
	// +optional
	Resource *ImageResourceSpec `json:"resource,omitempty"`

	// ManagementPolicy defines how ORC will treat the object. Valid values are
	// `managed`: ORC will create, update, and delete the resource; `unmanaged`:
	// ORC will import an existing resource, and will not apply updates to it or
	// delete it.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="managementPolicy is immutable"
	// +kubebuilder:default:=managed
	// +optional
	ManagementPolicy ManagementPolicy `json:"managementPolicy,omitempty"`

	// ManagedOptions specifies options which may be applied to managed objects.
	// +optional
	ManagedOptions *ManagedOptions `json:"managedOptions,omitempty"`

	// CloudCredentialsRef points to a secret containing OpenStack credentials
	// +kubebuilder:validation:Required
	CloudCredentialsRef CloudCredentialsReference `json:"cloudCredentialsRef"`
}

ImageSpec defines the desired state of an ORC object. +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? has(self.resource) : true",message="resource must be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'managed' ? !has(self.__import__) : true",message="import may not be specified when policy is managed" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? !has(self.resource) : true",message="resource may not be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'unmanaged' ? has(self.__import__) : true",message="import must be specified when policy is unmanaged" +kubebuilder:validation:XValidation:rule="has(self.managedOptions) ? self.managementPolicy == 'managed' : true",message="managedOptions may only be provided when policy is managed" +kubebuilder:validation:XValidation:rule="!has(self.__import__) ? has(self.resource.content) : true",message="resource content must be specified when not importing"

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 ImageStatus

type ImageStatus struct {
	// Conditions represents the observed status of the object.
	// Known .status.conditions.type are: "Available", "Progressing"
	//
	// Available represents the availability of the OpenStack resource. If it is
	// true then the resource is ready for use.
	//
	// Progressing indicates whether the controller is still attempting to
	// reconcile the current state of the OpenStack resource to the desired
	// state. Progressing will be False either because the desired state has
	// been achieved, or because some terminal error prevents it from ever being
	// achieved and the controller is no longer attempting to reconcile. If
	// Progressing is True, an observer waiting on the resource should continue
	// to wait.
	//
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`

	// ID is the unique identifier of the OpenStack resource.
	// +optional
	ID *string `json:"id,omitempty"`

	// Resource contains the observed state of the OpenStack resource.
	// +optional
	Resource *ImageResourceStatus `json:"resource,omitempty"`

	ImageStatusExtra `json:",inline"`
}

ImageStatus defines the observed state of an ORC resource.

func (*ImageStatus) DeepCopy

func (in *ImageStatus) DeepCopy() *ImageStatus

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

func (*ImageStatus) DeepCopyInto

func (in *ImageStatus) DeepCopyInto(out *ImageStatus)

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

type ImageStatusExtra

type ImageStatusExtra struct {
	// DownloadAttempts is the number of times the controller has attempted to download the image contents
	// +optional
	DownloadAttempts *int `json:"downloadAttempts,omitempty"`
}

func (*ImageStatusExtra) DeepCopy

func (in *ImageStatusExtra) DeepCopy() *ImageStatusExtra

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

func (*ImageStatusExtra) DeepCopyInto

func (in *ImageStatusExtra) DeepCopyInto(out *ImageStatusExtra)

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

type ImageTag

type ImageTag string

+kubebuilder:validation:MinLength:=1 +kubebuilder:validation:MaxLength:=255

type ImageVisibility

type ImageVisibility string

+kubebuilder:validation:Enum:=public;private;shared;community

const (
	ImageVisibilityPublic    ImageVisibility = "public"
	ImageVisibilityPrivate   ImageVisibility = "private"
	ImageVisibilityShared    ImageVisibility = "shared"
	ImageVisibilityCommunity ImageVisibility = "community"
)

type ManagedOptions

type ManagedOptions struct {
	// OnDelete specifies the behaviour of the controller when the ORC
	// object is deleted. Options are `delete` - delete the OpenStack resource;
	// `detach` - do not delete the OpenStack resource. If not specified, the
	// default is `delete`.
	// +kubebuilder:default:=delete
	// +optional
	OnDelete OnDelete `json:"onDelete,omitempty"`
}

func (*ManagedOptions) DeepCopy

func (in *ManagedOptions) DeepCopy() *ManagedOptions

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

func (*ManagedOptions) DeepCopyInto

func (in *ManagedOptions) DeepCopyInto(out *ManagedOptions)

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

func (*ManagedOptions) GetOnDelete

func (o *ManagedOptions) GetOnDelete() OnDelete

GetOnDelete returns the delete behaviour from ManagedOptions. If called on a nil receiver it safely returns the default.

type ManagementPolicy

type ManagementPolicy string

+kubebuilder:validation:Enum:=managed;unmanaged

const (
	// ManagementPolicyManaged specifies that the controller will reconcile the
	// state of the referenced OpenStack resource with the state of the ORC
	// object.
	ManagementPolicyManaged ManagementPolicy = "managed"

	// ManagementPolicyUnmanaged specifies that the controller will expect the
	// resource to either exist already or to be created externally. The
	// controller will not make any changes to the referenced OpenStack
	// resource.
	ManagementPolicyUnmanaged ManagementPolicy = "unmanaged"
)

type ObjectWithConditions

type ObjectWithConditions interface {
	metav1.Object
	GetConditions() []metav1.Condition
}

ObjectWithConditions is a metav1.Object which also stores conditions in its status. +kubebuilder:object:generate:=false

type OnDelete

type OnDelete string

+kubebuilder:validation:Enum:=delete;detach

const (
	// OnDeleteDelete specifies that the OpenStack resource will be deleted
	// when the managed ORC object is deleted.
	OnDeleteDelete OnDelete = "delete"

	// OnDeleteDetach specifies that the OpenStack resource will not be
	// deleted when the managed ORC object is deleted.
	OnDeleteDetach OnDelete = "detach"
)

type OpenStackDescription

type OpenStackDescription string

+kubebuilder:validation:MinLength:=1 +kubebuilder:validation:MaxLength:=1024

type OpenStackName

type OpenStackName string

+kubebuilder:validation:MinLength:=1 +kubebuilder:validation:MaxLength:=1024

type UUID

type UUID string

+kubebuilder:validation:Format:=uuid +kubebuilder:validation:MaxLength:=36

Jump to

Keyboard shortcuts

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