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
- Variables
- func GetTerminalError(obj ObjectWithConditions) error
- func IsAvailable(obj ObjectWithConditions) bool
- func IsConditionReasonTerminal(reason string) bool
- func IsReconciliationComplete(obj ObjectWithConditions) bool
- func Resource(resource string) schema.GroupResource
- type CloudCredentialsRefProvider
- type CloudCredentialsReference
- type Image
- type ImageCompression
- type ImageContainerFormat
- type ImageContent
- type ImageContentSourceDownload
- type ImageDiskFormat
- type ImageFilter
- type ImageHWBus
- type ImageHash
- type ImageHashAlgorithm
- type ImageImport
- type ImageList
- type ImageProperties
- type ImagePropertiesHardware
- type ImageResourceSpec
- type ImageResourceStatus
- type ImageSpec
- type ImageStatus
- type ImageStatusExtra
- type ImageTag
- type ImageVisibility
- type ManagedOptions
- type ManagementPolicy
- type ObjectWithConditions
- type OnDelete
- type OpenStackDescription
- type OpenStackName
- type UUID
Constants ¶
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" )
const ( ConditionAvailable = "Available" ConditionProgressing = "Progressing" )
const GlanceTag = "glance"
GlanceTag is the name of the go field tag in properties structs used to specify the Glance property name.
const GroupName = "openstack.k-orc.cloud"
GroupName is the group name use in this package
Variables ¶
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 )
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 ¶
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 ¶
func (in *CloudCredentialsReference) DeepCopy() *CloudCredentialsReference
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CloudCredentialsReference.
func (*CloudCredentialsReference) DeepCopyInto ¶
func (in *CloudCredentialsReference) DeepCopyInto(out *CloudCredentialsReference)
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Image.
func (*Image) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Image) DeepCopyObject ¶
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 ¶
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 ¶
func (in *ImageContentSourceDownload) DeepCopy() *ImageContentSourceDownload
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageContentSourceDownload.
func (*ImageContentSourceDownload) DeepCopyInto ¶
func (in *ImageContentSourceDownload) DeepCopyInto(out *ImageContentSourceDownload)
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageHash.
func (*ImageHash) DeepCopyInto ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageList.
func (*ImageList) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ImageList) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
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 ¶
func (in *ImagePropertiesHardware) DeepCopy() *ImagePropertiesHardware
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageSpec.
func (*ImageSpec) DeepCopyInto ¶
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" 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 ¶
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