Documentation ¶
Overview ¶
Package v1beta1 contains API Schema definitions for the infrastructure v1beta1 API group. +kubebuilder:object:generate=true +groupName=infrastructure.cluster.x-k8s.io +k8s:openapi-gen=true
package v1beta1 contains API Schema definitions for the infrastructure v1beta1 API group +kubebuilder:object:generate=true +groupName=infrastructure.cluster.x-k8s.io
Index ¶
- Constants
- Variables
- func ConvertAllTagsFrom(neutronTags *FilterByNeutronTags, tags, tagsAny, notTags, notTagsAny *string)
- func ConvertAllTagsTo(tags, tagsAny, notTags, notTagsAny string, neutronTags *FilterByNeutronTags)
- func JoinTags(tags []NeutronTag) string
- type APIServerLoadBalancer
- type AdditionalBlockDevice
- type AddressPair
- type AllocationPool
- type Bastion
- type BastionStatus
- type BindingProfile
- type BlockDeviceStorage
- type BlockDeviceType
- type BlockDeviceVolume
- type ExternalRouterIPParam
- type FilterByNeutronTags
- type FixedIP
- type IdentityRefProvider
- type ImageFilter
- type ImageParam
- type InstanceState
- type LoadBalancer
- type MachineResources
- type ManagedSecurityGroupName
- type ManagedSecurityGroups
- type NetworkFilter
- type NetworkParam
- type NetworkStatus
- type NetworkStatusWithSubnets
- type NeutronTag
- type OpenStackCluster
- type OpenStackClusterList
- type OpenStackClusterSpec
- type OpenStackClusterStatus
- type OpenStackClusterTemplate
- type OpenStackClusterTemplateList
- type OpenStackClusterTemplateResource
- type OpenStackClusterTemplateSpec
- type OpenStackIdentityReference
- type OpenStackMachine
- func (in *OpenStackMachine) DeepCopy() *OpenStackMachine
- func (in *OpenStackMachine) DeepCopyInto(out *OpenStackMachine)
- func (in *OpenStackMachine) DeepCopyObject() runtime.Object
- func (r *OpenStackMachine) GetConditions() clusterv1.Conditions
- func (r *OpenStackMachine) GetIdentityRef() (*string, *OpenStackIdentityReference)
- func (*OpenStackMachine) Hub()
- func (r *OpenStackMachine) SetConditions(conditions clusterv1.Conditions)
- func (r *OpenStackMachine) SetFailure(failureReason errors.MachineStatusError, failureMessage error)
- type OpenStackMachineList
- type OpenStackMachineSpec
- type OpenStackMachineStatus
- type OpenStackMachineTemplate
- type OpenStackMachineTemplateList
- type OpenStackMachineTemplateResource
- type OpenStackMachineTemplateSpec
- type PortOpts
- type PortStatus
- type ResolvedFixedIP
- type ResolvedMachineSpec
- type ResolvedPortSpec
- type ResolvedPortSpecFields
- type ResourceReference
- type RootVolume
- type Router
- type RouterFilter
- type RouterParam
- type SchedulerHintAdditionalProperty
- type SchedulerHintAdditionalValue
- type SchedulerHintValueType
- type SecurityGroupFilter
- type SecurityGroupParam
- type SecurityGroupRuleSpec
- type SecurityGroupStatus
- type ServerGroupFilter
- type ServerGroupParam
- type ServerMetadata
- type Subnet
- type SubnetFilter
- type SubnetParam
- type SubnetSpec
- type ValueSpec
- type VolumeAZName
- type VolumeAZSource
- type VolumeAvailabilityZone
Constants ¶
const ( // InstanceReadyCondition reports on current status of the OpenStack instance. Ready indicates the instance is in a Running state. InstanceReadyCondition clusterv1.ConditionType = "InstanceReady" // WaitingForClusterInfrastructureReason used when machine is waiting for cluster infrastructure to be ready before proceeding. WaitingForClusterInfrastructureReason = "WaitingForClusterInfrastructure" // WaitingForBootstrapDataReason used when machine is waiting for bootstrap data to be ready before proceeding. WaitingForBootstrapDataReason = "WaitingForBootstrapData" // InvalidMachineSpecReason used when the machine spec is invalid. InvalidMachineSpecReason = "InvalidMachineSpec" // InstanceCreateFailedReason used when creating the instance failed. InstanceCreateFailedReason = "InstanceCreateFailed" // InstanceNotFoundReason used when the instance couldn't be retrieved. InstanceNotFoundReason = "InstanceNotFound" // InstanceStateErrorReason used when the instance is in error state. InstanceStateErrorReason = "InstanceStateError" // InstanceDeletedReason used when the instance is in a deleted state. InstanceDeletedReason = "InstanceDeleted" // InstanceNotReadyReason used when the instance is in a pending state. InstanceNotReadyReason = "InstanceNotReady" // InstanceDeleteFailedReason used when deleting the instance failed. InstanceDeleteFailedReason = "InstanceDeleteFailed" // OpenstackErrorReason used when there is an error communicating with OpenStack. OpenStackErrorReason = "OpenStackError" // DependencyFailedReason indicates that a dependent object failed. DependencyFailedReason = "DependencyFailed" )
const ( // APIServerIngressReadyCondition reports on the current status of the network ingress (Loadbalancer, Floating IP) for Control Plane machines. Ready indicates that the instance can receive requests. APIServerIngressReadyCondition clusterv1.ConditionType = "APIServerIngressReadyCondition" // LoadBalancerMemberErrorReason used when the instance could not be added as a loadbalancer member. LoadBalancerMemberErrorReason = "LoadBalancerMemberError" // FloatingIPErrorReason used when the floating ip could not be created or attached. FloatingIPErrorReason = "FloatingIPError" )
const ( // FloatingAddressFromPoolReadyCondition reports on the current status of the Floating IPs from ipam pool. FloatingAddressFromPoolReadyCondition clusterv1.ConditionType = "FloatingAddressFromPoolReady" // WaitingForIpamProviderReason used when machine is waiting for ipam provider to be ready before proceeding. FloatingAddressFromPoolWaitingForIpamProviderReason = "WaitingForIPAMProvider" // FloatingAddressFromPoolErrorReason is used when there is an error attaching an IP from the pool to an machine. FloatingAddressFromPoolErrorReason = "FloatingIPError" // UnableToFindFloatingIPNetworkReason is used when the floating ip network is not found. UnableToFindFloatingIPNetworkReason = "UnableToFindFloatingIPNetwork" )
const ( // MachineFinalizer allows ReconcileOpenStackMachine to clean up OpenStack resources associated with OpenStackMachine before // removing it from the apiserver. MachineFinalizer = "openstackmachine.infrastructure.cluster.x-k8s.io" IPClaimMachineFinalizer = "openstackmachine.infrastructure.cluster.x-k8s.io/ip-claim" )
const ( // ClusterFinalizer allows ReconcileOpenStackCluster to clean up OpenStack resources associated with OpenStackCluster before // removing it from the apiserver. ClusterFinalizer = "openstackcluster.infrastructure.cluster.x-k8s.io" )
Variables ¶
var ( // SchemeGroupVersion is group version used to register these objects. SchemeGroupVersion = schema.GroupVersion{Group: "infrastructure.cluster.x-k8s.io", Version: "v1beta1"} // AddToScheme adds the types in this group-version to the given scheme. AddToScheme = schemeBuilder.AddToScheme )
var ( // InstanceStateBuild is the string representing an instance in a build state. InstanceStateBuild = InstanceState("BUILD") // InstanceStateActive is the string representing an instance in an active state. InstanceStateActive = InstanceState("ACTIVE") // InstanceStateError is the string representing an instance in an error state. InstanceStateError = InstanceState("ERROR") // InstanceStateStopped is the string representing an instance in a stopped state. InstanceStateStopped = InstanceState("STOPPED") // InstanceStateShutoff is the string representing an instance in a shutoff state. InstanceStateShutoff = InstanceState("SHUTOFF") // InstanceStateDeleted is the string representing an instance in a deleted state. InstanceStateDeleted = InstanceState("DELETED") // InstanceStateUndefined is the string representing an undefined instance state. InstanceStateUndefined = InstanceState("") )
Functions ¶
func ConvertAllTagsFrom ¶ added in v0.10.0
func ConvertAllTagsFrom(neutronTags *FilterByNeutronTags, tags, tagsAny, notTags, notTagsAny *string)
func ConvertAllTagsTo ¶ added in v0.10.0
func ConvertAllTagsTo(tags, tagsAny, notTags, notTagsAny string, neutronTags *FilterByNeutronTags)
func JoinTags ¶ added in v0.10.0
func JoinTags(tags []NeutronTag) string
JoinTags joins a slice of tags into a comma separated list of tags.
Types ¶
type APIServerLoadBalancer ¶ added in v0.10.0
type APIServerLoadBalancer struct { // Enabled defines whether a load balancer should be created. This value // defaults to true if an APIServerLoadBalancer is given. // // There is no reason to set this to false. To disable creation of the // API server loadbalancer, omit the APIServerLoadBalancer field in the // cluster spec instead. // // +kubebuilder:validation:Required // +kubebuilder:default:=true Enabled *bool `json:"enabled"` // AdditionalPorts adds additional tcp ports to the load balancer. // +optional // +listType=set AdditionalPorts []int `json:"additionalPorts,omitempty"` // AllowedCIDRs restrict access to all API-Server listeners to the given address CIDRs. // +optional // +listType=set AllowedCIDRs []string `json:"allowedCIDRs,omitempty"` // Provider specifies name of a specific Octavia provider to use for the // API load balancer. The Octavia default will be used if it is not // specified. // +optional Provider optional.String `json:"provider,omitempty"` // Network defines which network should the load balancer be allocated on. //+optional Network *NetworkParam `json:"network,omitempty"` // Subnets define which subnets should the load balancer be allocated on. // It is expected that subnets are located on the network specified in this resource. // Only the first element is taken into account. // +optional // +listType=atomic // kubebuilder:validation:MaxLength:=2 Subnets []SubnetParam `json:"subnets,omitempty"` // AvailabilityZone is the failure domain that will be used to create the APIServerLoadBalancer Spec. //+optional AvailabilityZone optional.String `json:"availabilityZone,omitempty"` // Flavor is the flavor name that will be used to create the APIServerLoadBalancer Spec. //+optional Flavor optional.String `json:"flavor,omitempty"` }
func (*APIServerLoadBalancer) DeepCopy ¶ added in v0.10.0
func (in *APIServerLoadBalancer) DeepCopy() *APIServerLoadBalancer
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIServerLoadBalancer.
func (*APIServerLoadBalancer) DeepCopyInto ¶ added in v0.10.0
func (in *APIServerLoadBalancer) DeepCopyInto(out *APIServerLoadBalancer)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*APIServerLoadBalancer) IsEnabled ¶ added in v0.10.0
func (s *APIServerLoadBalancer) IsEnabled() bool
func (*APIServerLoadBalancer) IsZero ¶ added in v0.10.0
func (s *APIServerLoadBalancer) IsZero() bool
type AdditionalBlockDevice ¶ added in v0.10.0
type AdditionalBlockDevice struct { // Name of the block device in the context of a machine. // If the block device is a volume, the Cinder volume will be named // as a combination of the machine name and this name. // Also, this name will be used for tagging the block device. // Information about the block device tag can be obtained from the OpenStack // metadata API or the config drive. // Name cannot be 'root', which is reserved for the root volume. // +kubebuilder:validation:Required Name string `json:"name"` // SizeGiB is the size of the block device in gibibytes (GiB). // +kubebuilder:validation:Required // +kubebuilder:validation:Minimum:=1 SizeGiB int `json:"sizeGiB"` // Storage specifies the storage type of the block device and // additional storage options. Storage BlockDeviceStorage `json:"storage"` }
AdditionalBlockDevice is a block device to attach to the server.
func (*AdditionalBlockDevice) DeepCopy ¶ added in v0.10.0
func (in *AdditionalBlockDevice) DeepCopy() *AdditionalBlockDevice
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AdditionalBlockDevice.
func (*AdditionalBlockDevice) DeepCopyInto ¶ added in v0.10.0
func (in *AdditionalBlockDevice) DeepCopyInto(out *AdditionalBlockDevice)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AddressPair ¶
type AddressPair struct { // IPAddress is the IP address of the allowed address pair. Depending on // the configuration of Neutron, it may be supported to specify a CIDR // instead of a specific IP address. // +kubebuilder:validation:Required IPAddress string `json:"ipAddress"` // MACAddress is the MAC address of the allowed address pair. If not // specified, the MAC address will be the MAC address of the port. // +optional MACAddress optional.String `json:"macAddress,omitempty"` }
func (*AddressPair) DeepCopy ¶
func (in *AddressPair) DeepCopy() *AddressPair
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AddressPair.
func (*AddressPair) DeepCopyInto ¶
func (in *AddressPair) DeepCopyInto(out *AddressPair)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AllocationPool ¶ added in v0.10.0
type AllocationPool struct { // Start represents the start of the AllocationPool, that is the lowest IP of the pool. // +required Start string `json:"start"` // End represents the end of the AlloctionPool, that is the highest IP of the pool. // +required End string `json:"end"` }
func (*AllocationPool) DeepCopy ¶ added in v0.10.0
func (in *AllocationPool) DeepCopy() *AllocationPool
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AllocationPool.
func (*AllocationPool) DeepCopyInto ¶ added in v0.10.0
func (in *AllocationPool) DeepCopyInto(out *AllocationPool)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Bastion ¶
type Bastion struct { // Enabled means that bastion is enabled. The bastion is enabled by // default if this field is not specified. Set this field to false to disable the // bastion. // // It is not currently possible to remove the bastion from the cluster // spec without first disabling it by setting this field to false and // waiting until the bastion has been deleted. // +kubebuilder:default:=true // +optional Enabled *bool `json:"enabled,omitempty"` // Spec for the bastion itself Spec *OpenStackMachineSpec `json:"spec,omitempty"` // AvailabilityZone is the failure domain that will be used to create the Bastion Spec. //+optional AvailabilityZone optional.String `json:"availabilityZone,omitempty"` // FloatingIP which will be associated to the bastion machine. It's the IP address, not UUID. // The floating IP should already exist and should not be associated with a port. If FIP of this address does not // exist, CAPO will try to create it, but by default only OpenStack administrators have privileges to do so. //+optional //+kubebuilder:validation:Format:=ipv4 FloatingIP optional.String `json:"floatingIP,omitempty"` }
Bastion represents basic information about the bastion node. If you enable bastion, the spec has to be specified. +kubebuilder:validation:XValidation:rule="!self.enabled || has(self.spec)",message="spec is required if bastion is enabled"
func (*Bastion) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Bastion.
func (*Bastion) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type BastionStatus ¶ added in v0.10.0
type BastionStatus struct { ID string `json:"id,omitempty"` Name string `json:"name,omitempty"` SSHKeyName string `json:"sshKeyName,omitempty"` State InstanceState `json:"state,omitempty"` IP string `json:"ip,omitempty"` FloatingIP string `json:"floatingIP,omitempty"` // Resolved contains parts of the bastion's machine spec with all // external references fully resolved. // +optional Resolved *ResolvedMachineSpec `json:"resolved,omitempty"` // Resources contains references to OpenStack resources created for the bastion. // +optional Resources *MachineResources `json:"resources,omitempty"` }
func (*BastionStatus) DeepCopy ¶ added in v0.10.0
func (in *BastionStatus) DeepCopy() *BastionStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BastionStatus.
func (*BastionStatus) DeepCopyInto ¶ added in v0.10.0
func (in *BastionStatus) DeepCopyInto(out *BastionStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type BindingProfile ¶ added in v0.10.0
type BindingProfile struct { // OVSHWOffload enables or disables the OVS hardware offload feature. // This flag is not required on OpenStack clouds since Yoga as Nova will set it automatically when the port is attached. // See: https://bugs.launchpad.net/nova/+bug/2020813 // +optional OVSHWOffload *bool `json:"ovsHWOffload,omitempty"` // TrustedVF enables or disables the “trusted mode” for the VF. // +optional TrustedVF *bool `json:"trustedVF,omitempty"` }
func (*BindingProfile) DeepCopy ¶ added in v0.10.0
func (in *BindingProfile) DeepCopy() *BindingProfile
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BindingProfile.
func (*BindingProfile) DeepCopyInto ¶ added in v0.10.0
func (in *BindingProfile) DeepCopyInto(out *BindingProfile)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type BlockDeviceStorage ¶ added in v0.10.0
type BlockDeviceStorage struct { // Type is the type of block device to create. // This can be either "Volume" or "Local". // +unionDiscriminator Type BlockDeviceType `json:"type"` // Volume contains additional storage options for a volume block device. // +optional // +unionMember,optional Volume *BlockDeviceVolume `json:"volume,omitempty"` }
BlockDeviceStorage is the storage type of a block device to create and contains additional storage options. +union
func (*BlockDeviceStorage) DeepCopy ¶ added in v0.10.0
func (in *BlockDeviceStorage) DeepCopy() *BlockDeviceStorage
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BlockDeviceStorage.
func (*BlockDeviceStorage) DeepCopyInto ¶ added in v0.10.0
func (in *BlockDeviceStorage) DeepCopyInto(out *BlockDeviceStorage)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type BlockDeviceType ¶ added in v0.10.0
type BlockDeviceType string
BlockDeviceType defines the type of block device to create.
const ( // LocalBlockDevice is an ephemeral block device attached to the server. LocalBlockDevice BlockDeviceType = "Local" // VolumeBlockDevice is a volume block device attached to the server. VolumeBlockDevice BlockDeviceType = "Volume" )
type BlockDeviceVolume ¶ added in v0.10.0
type BlockDeviceVolume struct { // Type is the Cinder volume type of the volume. // If omitted, the default Cinder volume type that is configured in the OpenStack cloud // will be used. // +optional Type string `json:"type,omitempty"` // AvailabilityZone is the volume availability zone to create the volume // in. If not specified, the volume will be created without an explicit // availability zone. // +optional AvailabilityZone *VolumeAvailabilityZone `json:"availabilityZone,omitempty"` }
BlockDeviceVolume contains additional storage options for a volume block device.
func (*BlockDeviceVolume) DeepCopy ¶ added in v0.10.0
func (in *BlockDeviceVolume) DeepCopy() *BlockDeviceVolume
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BlockDeviceVolume.
func (*BlockDeviceVolume) DeepCopyInto ¶ added in v0.10.0
func (in *BlockDeviceVolume) DeepCopyInto(out *BlockDeviceVolume)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ExternalRouterIPParam ¶
type ExternalRouterIPParam struct { // The FixedIP in the corresponding subnet FixedIP string `json:"fixedIP,omitempty"` // The subnet in which the FixedIP is used for the Gateway of this router Subnet SubnetParam `json:"subnet"` }
func (*ExternalRouterIPParam) DeepCopy ¶
func (in *ExternalRouterIPParam) DeepCopy() *ExternalRouterIPParam
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalRouterIPParam.
func (*ExternalRouterIPParam) DeepCopyInto ¶
func (in *ExternalRouterIPParam) DeepCopyInto(out *ExternalRouterIPParam)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FilterByNeutronTags ¶ added in v0.10.0
type FilterByNeutronTags struct { // Tags is a list of tags to filter by. If specified, the resource must // have all of the tags specified to be included in the result. // +listType=set // +optional Tags []NeutronTag `json:"tags,omitempty"` // TagsAny is a list of tags to filter by. If specified, the resource // must have at least one of the tags specified to be included in the // result. // +listType=set // +optional TagsAny []NeutronTag `json:"tagsAny,omitempty"` // NotTags is a list of tags to filter by. If specified, resources which // contain all of the given tags will be excluded from the result. // +listType=set // +optional NotTags []NeutronTag `json:"notTags,omitempty"` // NotTagsAny is a list of tags to filter by. If specified, resources // which contain any of the given tags will be excluded from the result. // +listType=set // +optional NotTagsAny []NeutronTag `json:"notTagsAny,omitempty"` }
func (*FilterByNeutronTags) DeepCopy ¶ added in v0.10.0
func (in *FilterByNeutronTags) DeepCopy() *FilterByNeutronTags
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FilterByNeutronTags.
func (*FilterByNeutronTags) DeepCopyInto ¶ added in v0.10.0
func (in *FilterByNeutronTags) DeepCopyInto(out *FilterByNeutronTags)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*FilterByNeutronTags) IsZero ¶ added in v0.10.0
func (f *FilterByNeutronTags) IsZero() bool
type FixedIP ¶
type FixedIP struct { // Subnet is an openstack subnet query that will return the id of a subnet to create // the fixed IP of a port in. This query must not return more than one subnet. // +optional Subnet *SubnetParam `json:"subnet,omitempty"` // IPAddress is a specific IP address to assign to the port. If Subnet // is also specified, IPAddress must be a valid IP address in the // subnet. If Subnet is not specified, IPAddress must be a valid IP // address in any subnet of the port's network. // +optional IPAddress optional.String `json:"ipAddress,omitempty"` }
func (*FixedIP) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FixedIP.
func (*FixedIP) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type IdentityRefProvider ¶ added in v0.11.0
type IdentityRefProvider interface { // GetIdentifyRef returns the object's namespace and IdentityRef if it has an IdentityRef, or nulls if it does not GetIdentityRef() (*string, *OpenStackIdentityReference) }
IdentityRefProvider is an interface for obtaining OpenStack credentials from an API object +kubebuilder:object:generate:=false
type ImageFilter ¶ added in v0.10.0
type ImageFilter struct { // The name of the desired image. If specified, the combination of name and tags must return a single matching image or an error will be raised. // +optional Name optional.String `json:"name,omitempty"` // The tags associated with the desired image. If specified, the combination of name and tags must return a single matching image or an error will be raised. // +listType=set // +optional Tags []string `json:"tags,omitempty"` }
ImageFilter describes a query for an image. +kubebuilder:validation:MinProperties:=1
func (*ImageFilter) DeepCopy ¶ added in v0.10.0
func (in *ImageFilter) DeepCopy() *ImageFilter
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageFilter.
func (*ImageFilter) DeepCopyInto ¶ added in v0.10.0
func (in *ImageFilter) DeepCopyInto(out *ImageFilter)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ImageFilter) IsZero ¶ added in v0.10.0
func (f *ImageFilter) IsZero() bool
type ImageParam ¶ added in v0.10.0
type ImageParam struct { // ID is the uuid of the image. ID will not be validated before use. // +kubebuilder:validation:Format:=uuid // +optional ID optional.String `json:"id,omitempty"` // Filter describes a query for an image. If specified, the combination // of name and tags must return a single matching image or an error will // be raised. // +optional Filter *ImageFilter `json:"filter,omitempty"` // ImageRef is a reference to an ORC Image in the same namespace as the // referring object. // +optional ImageRef *ResourceReference `json:"imageRef,omitempty"` }
ImageParam describes a glance image. It can be specified by ID, filter, or a reference to an ORC Image. +kubebuilder:validation:MaxProperties:=1 +kubebuilder:validation:MinProperties:=1
func (*ImageParam) DeepCopy ¶ added in v0.10.0
func (in *ImageParam) DeepCopy() *ImageParam
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageParam.
func (*ImageParam) DeepCopyInto ¶ added in v0.10.0
func (in *ImageParam) DeepCopyInto(out *ImageParam)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type InstanceState ¶
type InstanceState string
InstanceState describes the state of an OpenStack instance.
type LoadBalancer ¶
type LoadBalancer struct { Name string `json:"name"` ID string `json:"id"` IP string `json:"ip"` InternalIP string `json:"internalIP"` //+optional AllowedCIDRs []string `json:"allowedCIDRs,omitempty"` //+optional Tags []string `json:"tags,omitempty"` // LoadBalancerNetwork contains information about network and/or subnets which the // loadbalancer is allocated on. // If subnets are specified within the LoadBalancerNetwork currently only the first // subnet in the list is taken into account. // +optional LoadBalancerNetwork *NetworkStatusWithSubnets `json:"loadBalancerNetwork,omitempty"` }
LoadBalancer represents basic information about the associated OpenStack LoadBalancer.
func (*LoadBalancer) DeepCopy ¶
func (in *LoadBalancer) DeepCopy() *LoadBalancer
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LoadBalancer.
func (*LoadBalancer) DeepCopyInto ¶
func (in *LoadBalancer) DeepCopyInto(out *LoadBalancer)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineResources ¶ added in v0.10.0
type MachineResources struct { // Ports is the status of the ports created for the machine. // +optional Ports []PortStatus `json:"ports,omitempty"` }
func (*MachineResources) DeepCopy ¶ added in v0.10.0
func (in *MachineResources) DeepCopy() *MachineResources
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineResources.
func (*MachineResources) DeepCopyInto ¶ added in v0.10.0
func (in *MachineResources) DeepCopyInto(out *MachineResources)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ManagedSecurityGroupName ¶ added in v0.10.0
type ManagedSecurityGroupName string
+kubebuilder:validation:Enum=bastion;controlplane;worker
func (ManagedSecurityGroupName) String ¶ added in v0.10.0
func (m ManagedSecurityGroupName) String() string
type ManagedSecurityGroups ¶ added in v0.10.0
type ManagedSecurityGroups struct { // allNodesSecurityGroupRules defines the rules that should be applied to all nodes. // +patchMergeKey=name // +patchStrategy=merge // +listType=map // +listMapKey=name // +optional AllNodesSecurityGroupRules []SecurityGroupRuleSpec `json:"allNodesSecurityGroupRules,omitempty" patchStrategy:"merge" patchMergeKey:"name"` // AllowAllInClusterTraffic allows all ingress and egress traffic between cluster nodes when set to true. // +kubebuilder:default=false // +kubebuilder:validation:Required AllowAllInClusterTraffic bool `json:"allowAllInClusterTraffic"` }
ManagedSecurityGroups defines the desired state of security groups and rules for the cluster.
func (*ManagedSecurityGroups) DeepCopy ¶ added in v0.10.0
func (in *ManagedSecurityGroups) DeepCopy() *ManagedSecurityGroups
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedSecurityGroups.
func (*ManagedSecurityGroups) DeepCopyInto ¶ added in v0.10.0
func (in *ManagedSecurityGroups) DeepCopyInto(out *ManagedSecurityGroups)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type NetworkFilter ¶
type NetworkFilter struct { Name string `json:"name,omitempty"` Description string `json:"description,omitempty"` ProjectID string `json:"projectID,omitempty"` FilterByNeutronTags `json:",inline"` }
NetworkFilter specifies a query to select an OpenStack network. At least one property must be set. +kubebuilder:validation:MinProperties:=1
func (*NetworkFilter) DeepCopy ¶
func (in *NetworkFilter) DeepCopy() *NetworkFilter
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkFilter.
func (*NetworkFilter) DeepCopyInto ¶
func (in *NetworkFilter) DeepCopyInto(out *NetworkFilter)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*NetworkFilter) IsZero ¶ added in v0.10.0
func (networkFilter *NetworkFilter) IsZero() bool
type NetworkParam ¶
type NetworkParam struct { // ID is the ID of the network to use. If ID is provided, the other filters cannot be provided. Must be in UUID format. // +kubebuilder:validation:Format:=uuid // +optional ID optional.String `json:"id,omitempty"` // Filter specifies a filter to select an OpenStack network. If provided, cannot be empty. // +optional Filter *NetworkFilter `json:"filter,omitempty"` }
NetworkParam specifies an OpenStack network. It may be specified by either ID or Filter, but not both. +kubebuilder:validation:MaxProperties:=1 +kubebuilder:validation:MinProperties:=1
func (*NetworkParam) DeepCopy ¶
func (in *NetworkParam) DeepCopy() *NetworkParam
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkParam.
func (*NetworkParam) DeepCopyInto ¶
func (in *NetworkParam) DeepCopyInto(out *NetworkParam)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type NetworkStatus ¶ added in v0.10.0
type NetworkStatus struct { Name string `json:"name"` ID string `json:"id"` //+optional Tags []string `json:"tags,omitempty"` }
NetworkStatus contains basic information about an existing neutron network.
func (*NetworkStatus) DeepCopy ¶ added in v0.10.0
func (in *NetworkStatus) DeepCopy() *NetworkStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkStatus.
func (*NetworkStatus) DeepCopyInto ¶ added in v0.10.0
func (in *NetworkStatus) DeepCopyInto(out *NetworkStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type NetworkStatusWithSubnets ¶ added in v0.10.0
type NetworkStatusWithSubnets struct { NetworkStatus `json:",inline"` // Subnets is a list of subnets associated with the default cluster network. Machines which use the default cluster network will get an address from all of these subnets. Subnets []Subnet `json:"subnets,omitempty"` }
NetworkStatusWithSubnets represents basic information about an existing neutron network and an associated set of subnets.
func (*NetworkStatusWithSubnets) DeepCopy ¶ added in v0.10.0
func (in *NetworkStatusWithSubnets) DeepCopy() *NetworkStatusWithSubnets
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkStatusWithSubnets.
func (*NetworkStatusWithSubnets) DeepCopyInto ¶ added in v0.10.0
func (in *NetworkStatusWithSubnets) DeepCopyInto(out *NetworkStatusWithSubnets)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type NeutronTag ¶ added in v0.10.0
type NeutronTag string
NeutronTag represents a tag on a Neutron resource. It may not be empty and may not contain commas. +kubebuilder:validation:Pattern:="^[^,]+$" +kubebuilder:validation:MinLength:=1
type OpenStackCluster ¶
type OpenStackCluster struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` Spec OpenStackClusterSpec `json:"spec,omitempty"` Status OpenStackClusterStatus `json:"status,omitempty"` }
OpenStackCluster is the Schema for the openstackclusters API.
func (*OpenStackCluster) DeepCopy ¶
func (in *OpenStackCluster) DeepCopy() *OpenStackCluster
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenStackCluster.
func (*OpenStackCluster) DeepCopyInto ¶
func (in *OpenStackCluster) DeepCopyInto(out *OpenStackCluster)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*OpenStackCluster) DeepCopyObject ¶
func (in *OpenStackCluster) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*OpenStackCluster) GetIdentityRef ¶ added in v0.11.0
func (c *OpenStackCluster) GetIdentityRef() (*string, *OpenStackIdentityReference)
GetIdentifyRef returns the cluster's namespace and IdentityRef.
func (*OpenStackCluster) Hub ¶
func (*OpenStackCluster) Hub()
Hub marks OpenStackCluster as a conversion hub.
type OpenStackClusterList ¶
type OpenStackClusterList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` Items []OpenStackCluster `json:"items"` }
OpenStackClusterList contains a list of OpenStackCluster.
func (*OpenStackClusterList) DeepCopy ¶
func (in *OpenStackClusterList) DeepCopy() *OpenStackClusterList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenStackClusterList.
func (*OpenStackClusterList) DeepCopyInto ¶
func (in *OpenStackClusterList) DeepCopyInto(out *OpenStackClusterList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*OpenStackClusterList) DeepCopyObject ¶
func (in *OpenStackClusterList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*OpenStackClusterList) Hub ¶
func (*OpenStackClusterList) Hub()
Hub marks OpenStackClusterList as a conversion hub.
type OpenStackClusterSpec ¶
type OpenStackClusterSpec struct { // ManagedSubnets describe OpenStack Subnets to be created. Cluster actuator will create a network, // subnets with the defined CIDR, and a router connected to these subnets. Currently only one IPv4 // subnet is supported. If you leave this empty, no network will be created. // +kubebuilder:validation:MaxItems=1 // +listType=atomic // +optional ManagedSubnets []SubnetSpec `json:"managedSubnets,omitempty"` // Router specifies an existing router to be used if ManagedSubnets are // specified. If specified, no new router will be created. // +optional Router *RouterParam `json:"router,omitempty"` // Network specifies an existing network to use if no ManagedSubnets // are specified. // +optional Network *NetworkParam `json:"network,omitempty"` // Subnets specifies existing subnets to use if not ManagedSubnets are // specified. All subnets must be in the network specified by Network. // There can be zero, one, or two subnets. If no subnets are specified, // all subnets in Network will be used. If 2 subnets are specified, one // must be IPv4 and the other IPv6. // +kubebuilder:validation:MaxItems=2 // +listType=atomic // +optional Subnets []SubnetParam `json:"subnets,omitempty"` // NetworkMTU sets the maximum transmission unit (MTU) value to address fragmentation for the private network ID. // This value will be used only if the Cluster actuator creates the network. // If left empty, the network will have the default MTU defined in Openstack network service. // To use this field, the Openstack installation requires the net-mtu neutron API extension. // +optional NetworkMTU optional.Int `json:"networkMTU,omitempty"` // ExternalRouterIPs is an array of externalIPs on the respective subnets. // This is necessary if the router needs a fixed ip in a specific subnet. // +listType=atomic // +optional ExternalRouterIPs []ExternalRouterIPParam `json:"externalRouterIPs,omitempty"` // ExternalNetwork is the OpenStack Network to be used to get public internet to the VMs. // This option is ignored if DisableExternalNetwork is set to true. // // If ExternalNetwork is defined it must refer to exactly one external network. // // If ExternalNetwork is not defined or is empty the controller will use any // existing external network as long as there is only one. It is an // error if ExternalNetwork is not defined and there are multiple // external networks unless DisableExternalNetwork is also set. // // If ExternalNetwork is not defined and there are no external networks // the controller will proceed as though DisableExternalNetwork was set. // +optional ExternalNetwork *NetworkParam `json:"externalNetwork,omitempty"` // DisableExternalNetwork specifies whether or not to attempt to connect the cluster // to an external network. This allows for the creation of clusters when connecting // to an external network is not possible or desirable, e.g. if using a provider network. // +optional DisableExternalNetwork optional.Bool `json:"disableExternalNetwork,omitempty"` // APIServerLoadBalancer configures the optional LoadBalancer for the APIServer. // If not specified, no load balancer will be created for the API server. // +optional APIServerLoadBalancer *APIServerLoadBalancer `json:"apiServerLoadBalancer,omitempty"` // DisableAPIServerFloatingIP determines whether or not to attempt to attach a floating // IP to the API server. This allows for the creation of clusters when attaching a floating // IP to the API server (and hence, in many cases, exposing the API server to the internet) // is not possible or desirable, e.g. if using a shared VLAN for communication between // management and workload clusters or when the management cluster is inside the // project network. // This option requires that the API server use a VIP on the cluster network so that the // underlying machines can change without changing ControlPlaneEndpoint.Host. // When using a managed load balancer, this VIP will be managed automatically. // If not using a managed load balancer, cluster configuration will fail without additional // configuration to manage the VIP on the control plane machines, which falls outside of // the scope of this controller. // +optional DisableAPIServerFloatingIP optional.Bool `json:"disableAPIServerFloatingIP,omitempty"` // APIServerFloatingIP is the floatingIP which will be associated with the API server. // The floatingIP will be created if it does not already exist. // If not specified, a new floatingIP is allocated. // This field is not used if DisableAPIServerFloatingIP is set to true. // +optional APIServerFloatingIP optional.String `json:"apiServerFloatingIP,omitempty"` // APIServerFixedIP is the fixed IP which will be associated with the API server. // In the case where the API server has a floating IP but not a managed load balancer, // this field is not used. // If a managed load balancer is used and this field is not specified, a fixed IP will // be dynamically allocated for the load balancer. // If a managed load balancer is not used AND the API server floating IP is disabled, // this field MUST be specified and should correspond to a pre-allocated port that // holds the fixed IP to be used as a VIP. // +optional APIServerFixedIP optional.String `json:"apiServerFixedIP,omitempty"` // APIServerPort is the port on which the listener on the APIServer // will be created. If specified, it must be an integer between 0 and 65535. // +optional APIServerPort optional.UInt16 `json:"apiServerPort,omitempty"` // ManagedSecurityGroups determines whether OpenStack security groups for the cluster // will be managed by the OpenStack provider or whether pre-existing security groups will // be specified as part of the configuration. // By default, the managed security groups have rules that allow the Kubelet, etcd, and the // Kubernetes API server to function correctly. // It's possible to add additional rules to the managed security groups. // When defined to an empty struct, the managed security groups will be created with the default rules. // +optional ManagedSecurityGroups *ManagedSecurityGroups `json:"managedSecurityGroups,omitempty"` // DisablePortSecurity disables the port security of the network created for the // Kubernetes cluster, which also disables SecurityGroups // +optional DisablePortSecurity optional.Bool `json:"disablePortSecurity,omitempty"` // Tags to set on all resources in cluster which support tags // +listType=set // +optional Tags []string `json:"tags,omitempty"` // ControlPlaneEndpoint represents the endpoint used to communicate with the control plane. // It is normally populated automatically by the OpenStackCluster // controller during cluster provisioning. If it is set on creation the // control plane endpoint will use the values set here in preference to // values set elsewhere. // ControlPlaneEndpoint cannot be modified after ControlPlaneEndpoint.Host has been set. // +optional ControlPlaneEndpoint *clusterv1.APIEndpoint `json:"controlPlaneEndpoint,omitempty"` // ControlPlaneAvailabilityZones is the set of availability zones which // control plane machines may be deployed to. // +listType=set // +optional ControlPlaneAvailabilityZones []string `json:"controlPlaneAvailabilityZones,omitempty"` // ControlPlaneOmitAvailabilityZone causes availability zone to be // omitted when creating control plane nodes, allowing the Nova // scheduler to make a decision on which availability zone to use based // on other scheduling constraints // +optional ControlPlaneOmitAvailabilityZone optional.Bool `json:"controlPlaneOmitAvailabilityZone,omitempty"` // Bastion is the OpenStack instance to login the nodes // // As a rolling update is not ideal during a bastion host session, we // prevent changes to a running bastion configuration. To make changes, it's required // to first set `enabled: false` which will remove the bastion and then changes can be made. //+optional Bastion *Bastion `json:"bastion,omitempty"` // IdentityRef is a reference to a secret holding OpenStack credentials // to be used when reconciling this cluster. It is also to reconcile // machines unless overridden in the machine spec. // +kubebuilder:validation:Required IdentityRef OpenStackIdentityReference `json:"identityRef"` }
OpenStackClusterSpec defines the desired state of OpenStackCluster.
func (*OpenStackClusterSpec) DeepCopy ¶
func (in *OpenStackClusterSpec) DeepCopy() *OpenStackClusterSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenStackClusterSpec.
func (*OpenStackClusterSpec) DeepCopyInto ¶
func (in *OpenStackClusterSpec) DeepCopyInto(out *OpenStackClusterSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type OpenStackClusterStatus ¶
type OpenStackClusterStatus struct { // Ready is true when the cluster infrastructure is ready. // +kubebuilder:default=false Ready bool `json:"ready"` // Network contains information about the created OpenStack Network. // +optional Network *NetworkStatusWithSubnets `json:"network,omitempty"` // ExternalNetwork contains information about the external network used for default ingress and egress traffic. // +optional ExternalNetwork *NetworkStatus `json:"externalNetwork,omitempty"` // Router describes the default cluster router // +optional Router *Router `json:"router,omitempty"` // APIServerLoadBalancer describes the api server load balancer if one exists // +optional APIServerLoadBalancer *LoadBalancer `json:"apiServerLoadBalancer,omitempty"` // FailureDomains represent OpenStack availability zones FailureDomains clusterv1.FailureDomains `json:"failureDomains,omitempty"` // ControlPlaneSecurityGroup contains the information about the // OpenStack Security Group that needs to be applied to control plane // nodes. // +optional ControlPlaneSecurityGroup *SecurityGroupStatus `json:"controlPlaneSecurityGroup,omitempty"` // WorkerSecurityGroup contains the information about the OpenStack // Security Group that needs to be applied to worker nodes. // +optional WorkerSecurityGroup *SecurityGroupStatus `json:"workerSecurityGroup,omitempty"` // BastionSecurityGroup contains the information about the OpenStack // Security Group that needs to be applied to worker nodes. // +optional BastionSecurityGroup *SecurityGroupStatus `json:"bastionSecurityGroup,omitempty"` // Bastion contains the information about the deployed bastion host // +optional Bastion *BastionStatus `json:"bastion,omitempty"` // FailureReason will be set in the event that there is a terminal problem // reconciling the OpenStackCluster 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 OpenStackCluster'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 // OpenStackClusters can be added as events to the OpenStackCluster object // and/or logged in the controller's output. // +optional FailureReason *capierrors.ClusterStatusError `json:"failureReason,omitempty"` // FailureMessage will be set in the event that there is a terminal problem // reconciling the OpenStackCluster 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 OpenStackCluster'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 // OpenStackClusters can be added as events to the OpenStackCluster object // and/or logged in the controller's output. // +optional FailureMessage *string `json:"failureMessage,omitempty"` }
OpenStackClusterStatus defines the observed state of OpenStackCluster.
func (*OpenStackClusterStatus) DeepCopy ¶
func (in *OpenStackClusterStatus) DeepCopy() *OpenStackClusterStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenStackClusterStatus.
func (*OpenStackClusterStatus) DeepCopyInto ¶
func (in *OpenStackClusterStatus) DeepCopyInto(out *OpenStackClusterStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type OpenStackClusterTemplate ¶
type OpenStackClusterTemplate struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` Spec OpenStackClusterTemplateSpec `json:"spec,omitempty"` }
OpenStackClusterTemplate is the Schema for the openstackclustertemplates API.
func (*OpenStackClusterTemplate) DeepCopy ¶
func (in *OpenStackClusterTemplate) DeepCopy() *OpenStackClusterTemplate
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenStackClusterTemplate.
func (*OpenStackClusterTemplate) DeepCopyInto ¶
func (in *OpenStackClusterTemplate) DeepCopyInto(out *OpenStackClusterTemplate)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*OpenStackClusterTemplate) DeepCopyObject ¶
func (in *OpenStackClusterTemplate) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*OpenStackClusterTemplate) Hub ¶ added in v0.10.0
func (*OpenStackClusterTemplate) Hub()
Hub marks OpenStackClusterTemplate as a conversion hub.
type OpenStackClusterTemplateList ¶
type OpenStackClusterTemplateList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` Items []OpenStackClusterTemplate `json:"items"` }
OpenStackClusterTemplateList contains a list of OpenStackClusterTemplate.
func (*OpenStackClusterTemplateList) DeepCopy ¶
func (in *OpenStackClusterTemplateList) DeepCopy() *OpenStackClusterTemplateList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenStackClusterTemplateList.
func (*OpenStackClusterTemplateList) DeepCopyInto ¶
func (in *OpenStackClusterTemplateList) DeepCopyInto(out *OpenStackClusterTemplateList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*OpenStackClusterTemplateList) DeepCopyObject ¶
func (in *OpenStackClusterTemplateList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*OpenStackClusterTemplateList) Hub ¶ added in v0.10.0
func (*OpenStackClusterTemplateList) Hub()
Hub marks OpenStackClusterTemplateList as a conversion hub.
type OpenStackClusterTemplateResource ¶
type OpenStackClusterTemplateResource struct {
Spec OpenStackClusterSpec `json:"spec"`
}
OpenStackClusterTemplateResource describes the data needed to create a OpenStackCluster from a template.
func (*OpenStackClusterTemplateResource) DeepCopy ¶
func (in *OpenStackClusterTemplateResource) DeepCopy() *OpenStackClusterTemplateResource
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenStackClusterTemplateResource.
func (*OpenStackClusterTemplateResource) DeepCopyInto ¶
func (in *OpenStackClusterTemplateResource) DeepCopyInto(out *OpenStackClusterTemplateResource)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type OpenStackClusterTemplateSpec ¶
type OpenStackClusterTemplateSpec struct {
Template OpenStackClusterTemplateResource `json:"template"`
}
OpenStackClusterTemplateSpec defines the desired state of OpenStackClusterTemplate.
func (*OpenStackClusterTemplateSpec) DeepCopy ¶
func (in *OpenStackClusterTemplateSpec) DeepCopy() *OpenStackClusterTemplateSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenStackClusterTemplateSpec.
func (*OpenStackClusterTemplateSpec) DeepCopyInto ¶
func (in *OpenStackClusterTemplateSpec) DeepCopyInto(out *OpenStackClusterTemplateSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type OpenStackIdentityReference ¶
type OpenStackIdentityReference struct { // Name 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 Name string `json:"name"` // CloudName specifies the name of the entry in the clouds.yaml file to use. // +kubebuilder:validation:Required CloudName string `json:"cloudName"` // Region specifies an OpenStack region to use. If specified, it overrides // any value in clouds.yaml. If specified for an OpenStackMachine, its // value will be included in providerID. // +optional Region string `json:"region,omitempty"` }
OpenStackIdentityReference is a reference to an infrastructure provider identity to be used to provision cluster resources. +kubebuilder:validation:XValidation:rule="(!has(self.region) && !has(oldSelf.region)) || self.region == oldSelf.region",message="region is immutable"
func (*OpenStackIdentityReference) DeepCopy ¶
func (in *OpenStackIdentityReference) DeepCopy() *OpenStackIdentityReference
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenStackIdentityReference.
func (*OpenStackIdentityReference) DeepCopyInto ¶
func (in *OpenStackIdentityReference) DeepCopyInto(out *OpenStackIdentityReference)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type OpenStackMachine ¶
type OpenStackMachine struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` Spec OpenStackMachineSpec `json:"spec,omitempty"` Status OpenStackMachineStatus `json:"status,omitempty"` }
OpenStackMachine is the Schema for the openstackmachines API.
func (*OpenStackMachine) DeepCopy ¶
func (in *OpenStackMachine) DeepCopy() *OpenStackMachine
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenStackMachine.
func (*OpenStackMachine) DeepCopyInto ¶
func (in *OpenStackMachine) DeepCopyInto(out *OpenStackMachine)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*OpenStackMachine) DeepCopyObject ¶
func (in *OpenStackMachine) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*OpenStackMachine) GetConditions ¶ added in v0.10.0
func (r *OpenStackMachine) GetConditions() clusterv1.Conditions
GetConditions returns the observations of the operational state of the OpenStackMachine resource.
func (*OpenStackMachine) GetIdentityRef ¶ added in v0.11.0
func (r *OpenStackMachine) GetIdentityRef() (*string, *OpenStackIdentityReference)
GetIdentifyRef returns the object's namespace and IdentityRef if it has an IdentityRef, or nulls if it does not.
func (*OpenStackMachine) Hub ¶
func (*OpenStackMachine) Hub()
Hub marks OpenStackMachine as a conversion hub.
func (*OpenStackMachine) SetConditions ¶ added in v0.10.0
func (r *OpenStackMachine) SetConditions(conditions clusterv1.Conditions)
SetConditions sets the underlying service state of the OpenStackMachine to the predescribed clusterv1.Conditions.
func (*OpenStackMachine) SetFailure ¶ added in v0.10.0
func (r *OpenStackMachine) SetFailure(failureReason errors.MachineStatusError, failureMessage error)
SetFailure sets the OpenStackMachine status failure reason and failure message.
type OpenStackMachineList ¶
type OpenStackMachineList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` Items []OpenStackMachine `json:"items"` }
OpenStackMachineList contains a list of OpenStackMachine.
func (*OpenStackMachineList) DeepCopy ¶
func (in *OpenStackMachineList) DeepCopy() *OpenStackMachineList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenStackMachineList.
func (*OpenStackMachineList) DeepCopyInto ¶
func (in *OpenStackMachineList) DeepCopyInto(out *OpenStackMachineList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*OpenStackMachineList) DeepCopyObject ¶
func (in *OpenStackMachineList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*OpenStackMachineList) Hub ¶
func (*OpenStackMachineList) Hub()
Hub marks OpenStackMachineList as a conversion hub.
type OpenStackMachineSpec ¶
type OpenStackMachineSpec struct { // ProviderID is the unique identifier as specified by the cloud provider. ProviderID *string `json:"providerID,omitempty"` // The flavor reference for the flavor for your server instance. // +kubebuilder:validation:MinLength=1 Flavor *string `json:"flavor,omitempty"` // FlavorID allows flavors to be specified by ID. This field takes precedence // over Flavor. // +kubebuilder:validation:MinLength=1 FlavorID *string `json:"flavorID,omitempty"` // The image to use for your server instance. // If the rootVolume is specified, this will be used when creating the root volume. // +required Image ImageParam `json:"image"` // The ssh key to inject in the instance SSHKeyName string `json:"sshKeyName,omitempty"` // Ports to be attached to the server instance. They are created if a port with the given name does not already exist. // If not specified a default port will be added for the default cluster network. Ports []PortOpts `json:"ports,omitempty"` // The names of the security groups to assign to the instance SecurityGroups []SecurityGroupParam `json:"securityGroups,omitempty"` // Whether the server instance is created on a trunk port or not. Trunk bool `json:"trunk,omitempty"` // Tags which will be added to the machine and all dependent resources // which support them. These are in addition to Tags defined on the // cluster. // Requires Nova api 2.52 minimum! // +listType=set Tags []string `json:"tags,omitempty"` // Metadata mapping. Allows you to create a map of key value pairs to add to the server instance. // +listType=map // +listMapKey=key ServerMetadata []ServerMetadata `json:"serverMetadata,omitempty"` // Config Drive support ConfigDrive *bool `json:"configDrive,omitempty"` // The volume metadata to boot from RootVolume *RootVolume `json:"rootVolume,omitempty"` // AdditionalBlockDevices is a list of specifications for additional block devices to attach to the server instance // +listType=map // +listMapKey=name // +optional AdditionalBlockDevices []AdditionalBlockDevice `json:"additionalBlockDevices,omitempty"` // The server group to assign the machine to. // +optional ServerGroup *ServerGroupParam `json:"serverGroup,omitempty"` // IdentityRef is a reference to a secret holding OpenStack credentials // to be used when reconciling this machine. If not specified, the // credentials specified in the cluster will be used. // +optional IdentityRef *OpenStackIdentityReference `json:"identityRef,omitempty"` // floatingIPPoolRef is a reference to a IPPool that will be assigned // to an IPAddressClaim. Once the IPAddressClaim is fulfilled, the FloatingIP // will be assigned to the OpenStackMachine. // +optional FloatingIPPoolRef *corev1.TypedLocalObjectReference `json:"floatingIPPoolRef,omitempty"` // SchedulerHintAdditionalProperties are arbitrary key/value pairs that provide additional hints // to the OpenStack scheduler. These hints can influence how instances are placed on the infrastructure, // such as specifying certain host aggregates or availability zones. // +optional // +listType=map // +listMapKey=name SchedulerHintAdditionalProperties []SchedulerHintAdditionalProperty `json:"schedulerHintAdditionalProperties,omitempty"` }
OpenStackMachineSpec defines the desired state of OpenStackMachine. +kubebuilder:validation:XValidation:message="at least one of flavor or flavorID must be set",rule=(has(self.flavor) || has(self.flavorID))
func (*OpenStackMachineSpec) DeepCopy ¶
func (in *OpenStackMachineSpec) DeepCopy() *OpenStackMachineSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenStackMachineSpec.
func (*OpenStackMachineSpec) DeepCopyInto ¶
func (in *OpenStackMachineSpec) DeepCopyInto(out *OpenStackMachineSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type OpenStackMachineStatus ¶
type OpenStackMachineStatus struct { // Ready is true when the provider resource is ready. // +optional Ready bool `json:"ready"` // InstanceID is the OpenStack instance ID for this machine. // +optional InstanceID optional.String `json:"instanceID,omitempty"` // Addresses contains the OpenStack instance associated addresses. Addresses []corev1.NodeAddress `json:"addresses,omitempty"` // InstanceState is the state of the OpenStack instance for this machine. // +optional InstanceState *InstanceState `json:"instanceState,omitempty"` // Resolved contains parts of the machine spec with all external // references fully resolved. // +optional Resolved *ResolvedMachineSpec `json:"resolved,omitempty"` // Resources contains references to OpenStack resources created for the machine. // +optional Resources *MachineResources `json:"resources,omitempty"` 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 Machines // can be added as events to the Machine object and/or logged in the // controller's output. // +optional FailureMessage *string `json:"failureMessage,omitempty"` Conditions clusterv1.Conditions `json:"conditions,omitempty"` }
OpenStackMachineStatus defines the observed state of OpenStackMachine.
func (*OpenStackMachineStatus) DeepCopy ¶
func (in *OpenStackMachineStatus) DeepCopy() *OpenStackMachineStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenStackMachineStatus.
func (*OpenStackMachineStatus) DeepCopyInto ¶
func (in *OpenStackMachineStatus) DeepCopyInto(out *OpenStackMachineStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type OpenStackMachineTemplate ¶
type OpenStackMachineTemplate struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` Spec OpenStackMachineTemplateSpec `json:"spec,omitempty"` }
OpenStackMachineTemplate is the Schema for the openstackmachinetemplates API.
func (*OpenStackMachineTemplate) DeepCopy ¶
func (in *OpenStackMachineTemplate) DeepCopy() *OpenStackMachineTemplate
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenStackMachineTemplate.
func (*OpenStackMachineTemplate) DeepCopyInto ¶
func (in *OpenStackMachineTemplate) DeepCopyInto(out *OpenStackMachineTemplate)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*OpenStackMachineTemplate) DeepCopyObject ¶
func (in *OpenStackMachineTemplate) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*OpenStackMachineTemplate) Hub ¶
func (*OpenStackMachineTemplate) Hub()
Hub marks OpenStackMachineTemplate as a conversion hub.
type OpenStackMachineTemplateList ¶
type OpenStackMachineTemplateList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` Items []OpenStackMachineTemplate `json:"items"` }
OpenStackMachineTemplateList contains a list of OpenStackMachineTemplate.
func (*OpenStackMachineTemplateList) DeepCopy ¶
func (in *OpenStackMachineTemplateList) DeepCopy() *OpenStackMachineTemplateList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenStackMachineTemplateList.
func (*OpenStackMachineTemplateList) DeepCopyInto ¶
func (in *OpenStackMachineTemplateList) DeepCopyInto(out *OpenStackMachineTemplateList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*OpenStackMachineTemplateList) DeepCopyObject ¶
func (in *OpenStackMachineTemplateList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*OpenStackMachineTemplateList) Hub ¶
func (*OpenStackMachineTemplateList) Hub()
Hub marks OpenStackMachineTemplateList as a conversion hub.
type OpenStackMachineTemplateResource ¶
type OpenStackMachineTemplateResource struct { // Spec is the specification of the desired behavior of the machine. Spec OpenStackMachineSpec `json:"spec"` }
OpenStackMachineTemplateResource describes the data needed to create a OpenStackMachine from a template.
func (*OpenStackMachineTemplateResource) DeepCopy ¶
func (in *OpenStackMachineTemplateResource) DeepCopy() *OpenStackMachineTemplateResource
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenStackMachineTemplateResource.
func (*OpenStackMachineTemplateResource) DeepCopyInto ¶
func (in *OpenStackMachineTemplateResource) DeepCopyInto(out *OpenStackMachineTemplateResource)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type OpenStackMachineTemplateSpec ¶
type OpenStackMachineTemplateSpec struct {
Template OpenStackMachineTemplateResource `json:"template"`
}
OpenStackMachineTemplateSpec defines the desired state of OpenStackMachineTemplate.
func (*OpenStackMachineTemplateSpec) DeepCopy ¶
func (in *OpenStackMachineTemplateSpec) DeepCopy() *OpenStackMachineTemplateSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenStackMachineTemplateSpec.
func (*OpenStackMachineTemplateSpec) DeepCopyInto ¶
func (in *OpenStackMachineTemplateSpec) DeepCopyInto(out *OpenStackMachineTemplateSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PortOpts ¶
type PortOpts struct { // Network is a query for an openstack network that the port will be created or discovered on. // This will fail if the query returns more than one network. // +optional Network *NetworkParam `json:"network,omitempty"` // Description is a human-readable description for the port. // +optional Description optional.String `json:"description,omitempty"` // NameSuffix will be appended to the name of the port if specified. If unspecified, instead the 0-based index of the port in the list is used. // +optional NameSuffix optional.String `json:"nameSuffix,omitempty"` // FixedIPs is a list of pairs of subnet and/or IP address to assign to the port. If specified, these must be subnets of the port's network. // +optional // +listType=atomic FixedIPs []FixedIP `json:"fixedIPs,omitempty"` // SecurityGroups is a list of the names, uuids, filters or any combination these of the security groups to assign to the instance. // +optional // +listType=atomic SecurityGroups []SecurityGroupParam `json:"securityGroups,omitempty"` // Tags applied to the port (and corresponding trunk, if a trunk is configured.) // These tags are applied in addition to the instance's tags, which will also be applied to the port. // +listType=set // +optional Tags []string `json:"tags,omitempty"` // Trunk specifies whether trunking is enabled at the port level. If not // provided the value is inherited from the machine, or false for a // bastion host. // +optional Trunk *bool `json:"trunk,omitempty"` ResolvedPortSpecFields `json:",inline"` }
func (*PortOpts) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortOpts.
func (*PortOpts) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PortStatus ¶ added in v0.10.0
type PortStatus struct { // ID is the unique identifier of the port. // +required ID string `json:"id"` }
func (*PortStatus) DeepCopy ¶ added in v0.10.0
func (in *PortStatus) DeepCopy() *PortStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortStatus.
func (*PortStatus) DeepCopyInto ¶ added in v0.10.0
func (in *PortStatus) DeepCopyInto(out *PortStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ResolvedFixedIP ¶ added in v0.10.0
type ResolvedFixedIP struct { // SubnetID is the id of a subnet to create the fixed IP of a port in. // +optional SubnetID optional.String `json:"subnet,omitempty"` // IPAddress is a specific IP address to assign to the port. If SubnetID // is also specified, IPAddress must be a valid IP address in the // subnet. If Subnet is not specified, IPAddress must be a valid IP // address in any subnet of the port's network. // +optional IPAddress optional.String `json:"ipAddress,omitempty"` }
ResolvedFixedIP is a FixedIP with the Subnet resolved to an ID.
func (*ResolvedFixedIP) DeepCopy ¶ added in v0.10.0
func (in *ResolvedFixedIP) DeepCopy() *ResolvedFixedIP
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResolvedFixedIP.
func (*ResolvedFixedIP) DeepCopyInto ¶ added in v0.10.0
func (in *ResolvedFixedIP) DeepCopyInto(out *ResolvedFixedIP)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ResolvedMachineSpec ¶ added in v0.10.0
type ResolvedMachineSpec struct { // ServerGroupID is the ID of the server group the machine should be added to and is calculated based on ServerGroupFilter. // +optional ServerGroupID string `json:"serverGroupID,omitempty"` // ImageID is the ID of the image to use for the machine and is calculated based on ImageFilter. // +optional ImageID string `json:"imageID,omitempty"` // FlavorID is the ID of the flavor to use. // +optional FlavorID string `json:"flavorID,omitempty"` // Ports is the fully resolved list of ports to create for the machine. // +optional Ports []ResolvedPortSpec `json:"ports,omitempty"` }
ResolvedMachineSpec contains resolved references to resources required by the machine.
func (*ResolvedMachineSpec) DeepCopy ¶ added in v0.10.0
func (in *ResolvedMachineSpec) DeepCopy() *ResolvedMachineSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResolvedMachineSpec.
func (*ResolvedMachineSpec) DeepCopyInto ¶ added in v0.10.0
func (in *ResolvedMachineSpec) DeepCopyInto(out *ResolvedMachineSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ResolvedPortSpec ¶ added in v0.10.0
type ResolvedPortSpec struct { // Name is the name of the port. Name string `json:"name"` // Description is a human-readable description for the port. Description string `json:"description"` // NetworkID is the ID of the network the port will be created in. NetworkID string `json:"networkID"` // Tags applied to the port (and corresponding trunk, if a trunk is configured.) // +listType=set // +optional Tags []string `json:"tags,omitempty"` // Trunk specifies whether trunking is enabled at the port level. // +optional Trunk optional.Bool `json:"trunk,omitempty"` // FixedIPs is a list of pairs of subnet and/or IP address to assign to the port. If specified, these must be subnets of the port's network. // +optional // +listType=atomic FixedIPs []ResolvedFixedIP `json:"fixedIPs,omitempty"` // SecurityGroups is a list of security group IDs to assign to the port. // +optional // +listType=atomic SecurityGroups []string `json:"securityGroups,omitempty"` ResolvedPortSpecFields `json:",inline"` }
ResolvedPortSpec is a PortOpts with all contained references fully resolved.
func (*ResolvedPortSpec) DeepCopy ¶ added in v0.10.0
func (in *ResolvedPortSpec) DeepCopy() *ResolvedPortSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResolvedPortSpec.
func (*ResolvedPortSpec) DeepCopyInto ¶ added in v0.10.0
func (in *ResolvedPortSpec) DeepCopyInto(out *ResolvedPortSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ResolvedPortSpecFields ¶ added in v0.10.0
type ResolvedPortSpecFields struct { // AdminStateUp specifies whether the port should be created in the up (true) or down (false) state. The default is up. // +optional AdminStateUp *bool `json:"adminStateUp,omitempty"` // MACAddress specifies the MAC address of the port. If not specified, the MAC address will be generated. // +optional MACAddress optional.String `json:"macAddress,omitempty"` // AllowedAddressPairs is a list of address pairs which Neutron will // allow the port to send traffic from in addition to the port's // addresses. If not specified, the MAC Address will be the MAC Address // of the port. Depending on the configuration of Neutron, it may be // supported to specify a CIDR instead of a specific IP address. // +optional AllowedAddressPairs []AddressPair `json:"allowedAddressPairs,omitempty"` // HostID specifies the ID of the host where the port resides. // +optional HostID optional.String `json:"hostID,omitempty"` // VNICType specifies the type of vNIC which this port should be // attached to. This is used to determine which mechanism driver(s) to // be used to bind the port. The valid values are normal, macvtap, // direct, baremetal, direct-physical, virtio-forwarder, smart-nic and // remote-managed, although these values will not be validated in this // API to ensure compatibility with future neutron changes or custom // implementations. What type of vNIC is actually available depends on // deployments. If not specified, the Neutron default value is used. // +optional VNICType optional.String `json:"vnicType,omitempty"` // Profile is a set of key-value pairs that are used for binding // details. We intentionally don't expose this as a map[string]string // because we only want to enable the users to set the values of the // keys that are known to work in OpenStack Networking API. See // https://docs.openstack.org/api-ref/network/v2/index.html?expanded=create-port-detail#create-port // To set profiles, your tenant needs permissions rule:create_port, and // rule:create_port:binding:profile // +optional Profile *BindingProfile `json:"profile,omitempty"` // DisablePortSecurity enables or disables the port security when set. // When not set, it takes the value of the corresponding field at the network level. // +optional DisablePortSecurity *bool `json:"disablePortSecurity,omitempty"` // PropageteUplinkStatus enables or disables the propagate uplink status on the port. // +optional PropagateUplinkStatus *bool `json:"propagateUplinkStatus,omitempty"` // Value specs are extra parameters to include in the API request with OpenStack. // This is an extension point for the API, so what they do and if they are supported, // depends on the specific OpenStack implementation. // +optional // +listType=map // +listMapKey=name ValueSpecs []ValueSpec `json:"valueSpecs,omitempty"` }
ResolvePortSpecFields is a convenience struct containing all fields of a PortOpts which don't contain references which need to be resolved, and can therefore be shared with ResolvedPortSpec.
func (*ResolvedPortSpecFields) DeepCopy ¶ added in v0.10.0
func (in *ResolvedPortSpecFields) DeepCopy() *ResolvedPortSpecFields
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResolvedPortSpecFields.
func (*ResolvedPortSpecFields) DeepCopyInto ¶ added in v0.10.0
func (in *ResolvedPortSpecFields) DeepCopyInto(out *ResolvedPortSpecFields)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ResourceReference ¶ added in v0.11.0
type ResourceReference struct { // Name is the name of the referenced resource Name string `json:"name"` }
func (*ResourceReference) DeepCopy ¶ added in v0.11.0
func (in *ResourceReference) DeepCopy() *ResourceReference
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceReference.
func (*ResourceReference) DeepCopyInto ¶ added in v0.11.0
func (in *ResourceReference) DeepCopyInto(out *ResourceReference)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type RootVolume ¶
type RootVolume struct { // SizeGiB is the size of the block device in gibibytes (GiB). // +kubebuilder:validation:Required // +kubebuilder:validation:Minimum:=1 SizeGiB int `json:"sizeGiB"` BlockDeviceVolume `json:",inline"` }
func (*RootVolume) DeepCopy ¶
func (in *RootVolume) DeepCopy() *RootVolume
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RootVolume.
func (*RootVolume) DeepCopyInto ¶
func (in *RootVolume) DeepCopyInto(out *RootVolume)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Router ¶
type Router struct { Name string `json:"name"` ID string `json:"id"` //+optional Tags []string `json:"tags,omitempty"` //+optional IPs []string `json:"ips,omitempty"` }
Router represents basic information about the associated OpenStack Neutron Router.
func (*Router) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Router.
func (*Router) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type RouterFilter ¶ added in v0.10.0
type RouterFilter struct { Name string `json:"name,omitempty"` Description string `json:"description,omitempty"` ProjectID string `json:"projectID,omitempty"` FilterByNeutronTags `json:",inline"` }
RouterFilter specifies a query to select an OpenStack router. At least one property must be set. +kubebuilder:validation:MinProperties:=1
func (*RouterFilter) DeepCopy ¶ added in v0.10.0
func (in *RouterFilter) DeepCopy() *RouterFilter
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RouterFilter.
func (*RouterFilter) DeepCopyInto ¶ added in v0.10.0
func (in *RouterFilter) DeepCopyInto(out *RouterFilter)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*RouterFilter) IsZero ¶ added in v0.10.0
func (f *RouterFilter) IsZero() bool
type RouterParam ¶ added in v0.10.0
type RouterParam struct { // ID is the ID of the router to use. If ID is provided, the other filters cannot be provided. Must be in UUID format. // +kubebuilder:validation:Format:=uuid // +optional ID optional.String `json:"id,omitempty"` // Filter specifies a filter to select an OpenStack router. If provided, cannot be empty. Filter *RouterFilter `json:"filter,omitempty"` }
RouterParam specifies an OpenStack router to use. It may be specified by either ID or filter, but not both. +kubebuilder:validation:MaxProperties:=1 +kubebuilder:validation:MinProperties:=1
func (*RouterParam) DeepCopy ¶ added in v0.10.0
func (in *RouterParam) DeepCopy() *RouterParam
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RouterParam.
func (*RouterParam) DeepCopyInto ¶ added in v0.10.0
func (in *RouterParam) DeepCopyInto(out *RouterParam)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SchedulerHintAdditionalProperty ¶ added in v0.11.0
type SchedulerHintAdditionalProperty struct { // Name is the name of the scheduler hint property. // It is a unique identifier for the property. // +kubebuilder:validation:MinLength:=1 // +kubebuilder:validation:Required Name string `json:"name"` // Value is the value of the scheduler hint property, which can be of various types // (e.g., bool, string, int). The type is indicated by the Value.Type field. // +kubebuilder:validation:Required Value SchedulerHintAdditionalValue `json:"value"` }
SchedulerHintAdditionalProperty represents a single additional property for a scheduler hint. It includes a Name to identify the property and a Value that can be of various types.
func (*SchedulerHintAdditionalProperty) DeepCopy ¶ added in v0.11.0
func (in *SchedulerHintAdditionalProperty) DeepCopy() *SchedulerHintAdditionalProperty
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SchedulerHintAdditionalProperty.
func (*SchedulerHintAdditionalProperty) DeepCopyInto ¶ added in v0.11.0
func (in *SchedulerHintAdditionalProperty) DeepCopyInto(out *SchedulerHintAdditionalProperty)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SchedulerHintAdditionalValue ¶ added in v0.11.0
type SchedulerHintAdditionalValue struct { // Type represents the type of the value. // Valid values are Bool, String, and Number. // +kubebuilder:validation:Required // +unionDiscriminator Type SchedulerHintValueType `json:"type"` // Bool is the boolean value of the scheduler hint, used when Type is "Bool". // This field is required if type is 'Bool', and must not be set otherwise. // +unionMember,optional Bool *bool `json:"bool,omitempty"` // Number is the integer value of the scheduler hint, used when Type is "Number". // This field is required if type is 'Number', and must not be set otherwise. // +unionMember,optional Number *int `json:"number,omitempty"` // String is the string value of the scheduler hint, used when Type is "String". // This field is required if type is 'String', and must not be set otherwise. // +unionMember,optional // +kubebuilder:validation:MinLength:=1 // +kubebuilder:validation:MaxLength:=255 String *string `json:"string,omitempty"` }
SchedulerHintAdditionalValue represents the value of a scheduler hint property. The value can be of various types: Bool, String, or Number. The Type field indicates the type of the value being used. +kubebuilder:validation:XValidation:rule="has(self.type) && self.type == 'Bool' ? has(self.bool) : !has(self.bool)",message="bool is required when type is Bool, and forbidden otherwise" +kubebuilder:validation:XValidation:rule="has(self.type) && self.type == 'Number' ? has(self.number) : !has(self.number)",message="number is required when type is Number, and forbidden otherwise" +kubebuilder:validation:XValidation:rule="has(self.type) && self.type == 'String' ? has(self.string) : !has(self.string)",message="string is required when type is String, and forbidden otherwise" +union.
func (*SchedulerHintAdditionalValue) DeepCopy ¶ added in v0.11.0
func (in *SchedulerHintAdditionalValue) DeepCopy() *SchedulerHintAdditionalValue
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SchedulerHintAdditionalValue.
func (*SchedulerHintAdditionalValue) DeepCopyInto ¶ added in v0.11.0
func (in *SchedulerHintAdditionalValue) DeepCopyInto(out *SchedulerHintAdditionalValue)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SchedulerHintValueType ¶ added in v0.11.0
type SchedulerHintValueType string
SchedulerHintValueType is the type that represents allowed values for the Type field. +kubebuilder:validation:Enum=Bool;String;Number
const ( SchedulerHintTypeBool SchedulerHintValueType = "Bool" SchedulerHintTypeString SchedulerHintValueType = "String" SchedulerHintTypeNumber SchedulerHintValueType = "Number" )
Constants representing the allowed types for SchedulerHintAdditionalValue.
type SecurityGroupFilter ¶
type SecurityGroupFilter struct { Name string `json:"name,omitempty"` Description string `json:"description,omitempty"` ProjectID string `json:"projectID,omitempty"` FilterByNeutronTags `json:",inline"` }
SecurityGroupFilter specifies a query to select an OpenStack security group. At least one property must be set. +kubebuilder:validation:MinProperties:=1
func (*SecurityGroupFilter) DeepCopy ¶
func (in *SecurityGroupFilter) DeepCopy() *SecurityGroupFilter
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecurityGroupFilter.
func (*SecurityGroupFilter) DeepCopyInto ¶
func (in *SecurityGroupFilter) DeepCopyInto(out *SecurityGroupFilter)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*SecurityGroupFilter) IsZero ¶ added in v0.10.0
func (f *SecurityGroupFilter) IsZero() bool
type SecurityGroupParam ¶
type SecurityGroupParam struct { // ID is the ID of the security group to use. If ID is provided, the other filters cannot be provided. Must be in UUID format. // +kubebuilder:validation:Format:=uuid // +optional ID optional.String `json:"id,omitempty"` // Filter specifies a query to select an OpenStack security group. If provided, cannot be empty. // +optional Filter *SecurityGroupFilter `json:"filter,omitempty"` }
SecurityGroupParam specifies an OpenStack security group. It may be specified by ID or filter, but not both. +kubebuilder:validation:MaxProperties:=1 +kubebuilder:validation:MinProperties:=1
func (*SecurityGroupParam) DeepCopy ¶
func (in *SecurityGroupParam) DeepCopy() *SecurityGroupParam
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecurityGroupParam.
func (*SecurityGroupParam) DeepCopyInto ¶
func (in *SecurityGroupParam) DeepCopyInto(out *SecurityGroupParam)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SecurityGroupRuleSpec ¶ added in v0.10.0
type SecurityGroupRuleSpec struct { // name of the security group rule. // It's used to identify the rule so it can be patched and will not be sent to the OpenStack API. // +kubebuilder:validation:Required Name string `json:"name"` // description of the security group rule. // +optional Description *string `json:"description,omitempty"` // direction in which the security group rule is applied. The only values // allowed are "ingress" or "egress". For a compute instance, an ingress // security group rule is applied to incoming (ingress) traffic for that // instance. An egress rule is applied to traffic leaving the instance. // +kubebuilder:validation:Required // +kubebuilder:validation:enum=ingress;egress Direction string `json:"direction"` // etherType must be IPv4 or IPv6, and addresses represented in CIDR must match the // ingress or egress rules. // +kubebuilder:validation:enum=IPv4;IPv6 // +optional EtherType *string `json:"etherType,omitempty"` // portRangeMin is a number in the range that is matched by the security group // rule. If the protocol is TCP or UDP, this value must be less than or equal // to the value of the portRangeMax attribute. // +optional PortRangeMin *int `json:"portRangeMin,omitempty"` // portRangeMax is a number in the range that is matched by the security group // rule. The portRangeMin attribute constrains the portRangeMax attribute. // +optional PortRangeMax *int `json:"portRangeMax,omitempty"` // protocol is the protocol that is matched by the security group rule. // +optional Protocol *string `json:"protocol,omitempty"` // remoteGroupID is the remote group ID to be associated with this security group rule. // You can specify either remoteGroupID or remoteIPPrefix or remoteManagedGroups. // +optional RemoteGroupID *string `json:"remoteGroupID,omitempty"` // remoteIPPrefix is the remote IP prefix to be associated with this security group rule. // You can specify either remoteGroupID or remoteIPPrefix or remoteManagedGroups. // +optional RemoteIPPrefix *string `json:"remoteIPPrefix,omitempty"` // remoteManagedGroups is the remote managed groups to be associated with this security group rule. // You can specify either remoteGroupID or remoteIPPrefix or remoteManagedGroups. // +optional RemoteManagedGroups []ManagedSecurityGroupName `json:"remoteManagedGroups,omitempty"` }
SecurityGroupRuleSpec represent the basic information of the associated OpenStack Security Group Role. For now this is only used for the allNodesSecurityGroupRules but when we add other security groups, we'll need to add a validation because Remote* fields are mutually exclusive.
func LegacyCalicoSecurityGroupRules ¶ added in v0.10.0
func LegacyCalicoSecurityGroupRules() []SecurityGroupRuleSpec
LegacyCalicoSecurityGroupRules returns a list of security group rules for calico that need to be applied to the control plane and worker security groups when managed security groups are enabled and upgrading to v1beta1.
func (*SecurityGroupRuleSpec) DeepCopy ¶ added in v0.10.0
func (in *SecurityGroupRuleSpec) DeepCopy() *SecurityGroupRuleSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecurityGroupRuleSpec.
func (*SecurityGroupRuleSpec) DeepCopyInto ¶ added in v0.10.0
func (in *SecurityGroupRuleSpec) DeepCopyInto(out *SecurityGroupRuleSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SecurityGroupStatus ¶ added in v0.10.0
type SecurityGroupStatus struct { // name of the security group // +kubebuilder:validation:Required Name string `json:"name"` // id of the security group // +kubebuilder:validation:Required ID string `json:"id"` }
SecurityGroupStatus represents the basic information of the associated OpenStack Neutron Security Group.
func (*SecurityGroupStatus) DeepCopy ¶ added in v0.10.0
func (in *SecurityGroupStatus) DeepCopy() *SecurityGroupStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecurityGroupStatus.
func (*SecurityGroupStatus) DeepCopyInto ¶ added in v0.10.0
func (in *SecurityGroupStatus) DeepCopyInto(out *SecurityGroupStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ServerGroupFilter ¶ added in v0.10.0
type ServerGroupFilter struct { // Name is the name of a server group to look for. Name optional.String `json:"name,omitempty"` }
ServerGroupFilter specifies a query to select an OpenStack server group. At least one property must be set. +kubebuilder:validation:MinProperties:=1
func (*ServerGroupFilter) DeepCopy ¶ added in v0.10.0
func (in *ServerGroupFilter) DeepCopy() *ServerGroupFilter
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerGroupFilter.
func (*ServerGroupFilter) DeepCopyInto ¶ added in v0.10.0
func (in *ServerGroupFilter) DeepCopyInto(out *ServerGroupFilter)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ServerGroupFilter) IsZero ¶ added in v0.10.0
func (f *ServerGroupFilter) IsZero() bool
type ServerGroupParam ¶ added in v0.10.0
type ServerGroupParam struct { // ID is the ID of the server group to use. // +kubebuilder:validation:Format:=uuid ID optional.String `json:"id,omitempty"` // Filter specifies a query to select an OpenStack server group. If provided, it cannot be empty. Filter *ServerGroupFilter `json:"filter,omitempty"` }
ServerGroupParam specifies an OpenStack server group. It may be specified by ID or filter, but not both. +kubebuilder:validation:MaxProperties:=1 +kubebuilder:validation:MinProperties:=1
func (*ServerGroupParam) DeepCopy ¶ added in v0.10.0
func (in *ServerGroupParam) DeepCopy() *ServerGroupParam
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerGroupParam.
func (*ServerGroupParam) DeepCopyInto ¶ added in v0.10.0
func (in *ServerGroupParam) DeepCopyInto(out *ServerGroupParam)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ServerMetadata ¶ added in v0.10.0
type ServerMetadata struct { // Key is the server metadata key // +kubebuilder:validation:MaxLength:=255 // +kubebuilder:validation:Required Key string `json:"key"` // Value is the server metadata value // +kubebuilder:validation:MaxLength:=255 // +kubebuilder:validation:Required Value string `json:"value"` }
func (*ServerMetadata) DeepCopy ¶ added in v0.10.0
func (in *ServerMetadata) DeepCopy() *ServerMetadata
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerMetadata.
func (*ServerMetadata) DeepCopyInto ¶ added in v0.10.0
func (in *ServerMetadata) DeepCopyInto(out *ServerMetadata)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Subnet ¶
type Subnet struct { Name string `json:"name"` ID string `json:"id"` CIDR string `json:"cidr"` //+optional Tags []string `json:"tags,omitempty"` }
Subnet represents basic information about the associated OpenStack Neutron Subnet.
func (*Subnet) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Subnet.
func (*Subnet) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SubnetFilter ¶
type SubnetFilter struct { Name string `json:"name,omitempty"` Description string `json:"description,omitempty"` ProjectID string `json:"projectID,omitempty"` IPVersion int `json:"ipVersion,omitempty"` GatewayIP string `json:"gatewayIP,omitempty"` CIDR string `json:"cidr,omitempty"` IPv6AddressMode string `json:"ipv6AddressMode,omitempty"` IPv6RAMode string `json:"ipv6RAMode,omitempty"` FilterByNeutronTags `json:",inline"` }
SubnetFilter specifies a filter to select a subnet. At least one parameter must be specified. +kubebuilder:validation:MinProperties:=1
func (*SubnetFilter) DeepCopy ¶
func (in *SubnetFilter) DeepCopy() *SubnetFilter
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubnetFilter.
func (*SubnetFilter) DeepCopyInto ¶
func (in *SubnetFilter) DeepCopyInto(out *SubnetFilter)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*SubnetFilter) IsZero ¶ added in v0.10.0
func (subnetFilter *SubnetFilter) IsZero() bool
type SubnetParam ¶
type SubnetParam struct { // ID is the uuid of the subnet. It will not be validated. // +kubebuilder:validation:Format:=uuid // +optional ID optional.String `json:"id,omitempty"` // Filter specifies a filter to select the subnet. It must match exactly one subnet. // +optional Filter *SubnetFilter `json:"filter,omitempty"` }
SubnetParam specifies an OpenStack subnet to use. It may be specified by either ID or filter, but not both. +kubebuilder:validation:MaxProperties:=1 +kubebuilder:validation:MinProperties:=1
func (*SubnetParam) DeepCopy ¶
func (in *SubnetParam) DeepCopy() *SubnetParam
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubnetParam.
func (*SubnetParam) DeepCopyInto ¶
func (in *SubnetParam) DeepCopyInto(out *SubnetParam)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SubnetSpec ¶ added in v0.10.0
type SubnetSpec struct { // CIDR is representing the IP address range used to create the subnet, e.g. 10.0.0.0/24. // This field is required when defining a subnet. // +required CIDR string `json:"cidr"` // DNSNameservers holds a list of DNS server addresses that will be provided when creating // the subnet. These addresses need to have the same IP version as CIDR. DNSNameservers []string `json:"dnsNameservers,omitempty"` // AllocationPools is an array of AllocationPool objects that will be applied to OpenStack Subnet being created. // If set, OpenStack will only allocate these IPs for Machines. It will still be possible to create ports from // outside of these ranges manually. AllocationPools []AllocationPool `json:"allocationPools,omitempty"` }
func (*SubnetSpec) DeepCopy ¶ added in v0.10.0
func (in *SubnetSpec) DeepCopy() *SubnetSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubnetSpec.
func (*SubnetSpec) DeepCopyInto ¶ added in v0.10.0
func (in *SubnetSpec) DeepCopyInto(out *SubnetSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ValueSpec ¶ added in v0.10.0
type ValueSpec struct { // Name is the name of the key-value pair. // This is just for identifying the pair and will not be sent to the OpenStack API. // +kubebuilder:validation:Required Name string `json:"name"` // Key is the key in the key-value pair. // +kubebuilder:validation:Required Key string `json:"key"` // Value is the value in the key-value pair. // +kubebuilder:validation:Required Value string `json:"value"` }
ValueSpec represents a single value_spec key-value pair.
func (*ValueSpec) DeepCopy ¶ added in v0.10.0
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ValueSpec.
func (*ValueSpec) DeepCopyInto ¶ added in v0.10.0
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type VolumeAZName ¶ added in v0.10.0
type VolumeAZName string
VolumeAZName is the name of a volume availability zone. It may not contain spaces. +kubebuilder:validation:Pattern:="^[^ ]+$" +kubebuilder:validation:MinLength:=1
type VolumeAZSource ¶ added in v0.10.0
type VolumeAZSource string
VolumeAZSource specifies where to obtain the availability zone for a volume. +kubebuilder:validation:Enum=Name;Machine
const ( VolumeAZFromName VolumeAZSource = "Name" VolumeAZFromMachine VolumeAZSource = "Machine" )
type VolumeAvailabilityZone ¶ added in v0.10.0
type VolumeAvailabilityZone struct { // From specifies where we will obtain the availability zone for the // volume. The options are "Name" and "Machine". If "Name" is specified // then the Name field must also be specified. If "Machine" is specified // the volume will use the value of FailureDomain, if any, from the // associated Machine. // +kubebuilder:default:=Name // +optional From VolumeAZSource `json:"from,omitempty"` // Name is the name of a volume availability zone to use. It is required // if From is "Name". The volume availability zone name may not contain // spaces. // +optional Name *VolumeAZName `json:"name,omitempty"` }
VolumeAvailabilityZone specifies the availability zone for a volume. +kubebuilder:validation:XValidation:rule="!has(self.from) || self.from == 'Name' ? has(self.name) : !has(self.name)",message="name is required when from is 'Name' or default"
func (*VolumeAvailabilityZone) DeepCopy ¶ added in v0.10.0
func (in *VolumeAvailabilityZone) DeepCopy() *VolumeAvailabilityZone
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeAvailabilityZone.
func (*VolumeAvailabilityZone) DeepCopyInto ¶ added in v0.10.0
func (in *VolumeAvailabilityZone) DeepCopyInto(out *VolumeAvailabilityZone)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.