diff --git a/go.mod b/go.mod index 29726fd686..0c4402253d 100644 --- a/go.mod +++ b/go.mod @@ -29,7 +29,7 @@ require ( github.com/google/renameio v0.1.0 github.com/imdario/mergo v0.3.13 github.com/opencontainers/go-digest v1.0.0 - github.com/openshift/api v0.0.0-20240723231418-442f06d7e03b + github.com/openshift/api v0.0.0-20240801145124-1cd5e2993247 github.com/openshift/client-go v0.0.0-20240528061634-b054aa794d87 github.com/openshift/library-go v0.0.0-20240607134135-aed018c215a1 github.com/openshift/runtime-utils v0.0.0-20230921210328-7bdb5b9c177b @@ -344,5 +344,3 @@ require ( ) replace k8s.io/kube-openapi => github.com/openshift/kube-openapi v0.0.0-20230816122517-ffc8f001abb0 - -replace github.com/openshift/api => github.com/djoshy/api v0.0.0-20240726175932-7e2935d5d809 diff --git a/go.sum b/go.sum index 9171f0562c..26385e7402 100644 --- a/go.sum +++ b/go.sum @@ -166,8 +166,6 @@ github.com/denis-tingaikin/go-header v0.5.0 h1:SRdnP5ZKvcO9KKRP1KJrhFR3RrlGuD+42 github.com/denis-tingaikin/go-header v0.5.0/go.mod h1:mMenU5bWrok6Wl2UsZjy+1okegmwQ3UgWl4V1D8gjlY= github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0= github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/djoshy/api v0.0.0-20240726175932-7e2935d5d809 h1:/FwfZ/zuSzqcmTHo88xkA0HzWkgMAYAvih9pAQnCiNQ= -github.com/djoshy/api v0.0.0-20240726175932-7e2935d5d809/go.mod h1:OOh6Qopf21pSzqNVCB5gomomBXb8o5sGKZxG2KNpaXM= github.com/docker/cli v24.0.7+incompatible h1:wa/nIwYFW7BVTGa7SWPVyyXU9lgORqUb1xfI36MSkFg= github.com/docker/cli v24.0.7+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= @@ -597,6 +595,8 @@ github.com/opencontainers/runc v1.1.12 h1:BOIssBaW1La0/qbNZHXOOa71dZfZEQOzW7dqQf github.com/opencontainers/runc v1.1.12/go.mod h1:S+lQwSfncpBha7XTy/5lBwWgm5+y5Ma/O44Ekby9FK8= github.com/opencontainers/runtime-spec v1.1.0 h1:HHUyrt9mwHUjtasSbXSMvs4cyFxh+Bll4AjJ9odEGpg= github.com/opencontainers/runtime-spec v1.1.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/openshift/api v0.0.0-20240801145124-1cd5e2993247 h1:BrGVWSk+oP8ULSzaH+mXMX2U5rn+528E7NjSjQy3B7I= +github.com/openshift/api v0.0.0-20240801145124-1cd5e2993247/go.mod h1:OOh6Qopf21pSzqNVCB5gomomBXb8o5sGKZxG2KNpaXM= github.com/openshift/client-go v0.0.0-20240528061634-b054aa794d87 h1:JtLhaGpSEconE+1IKmIgCOof/Len5ceG6H1pk43yv5U= github.com/openshift/client-go v0.0.0-20240528061634-b054aa794d87/go.mod h1:3IPD4U0qyovZS4EFady2kqY32m8lGcbs/Wx+yprg9z8= github.com/openshift/kube-openapi v0.0.0-20230816122517-ffc8f001abb0 h1:GPlAy197Jkr+D0T2FNWanamraTdzS/r9ZkT29lxvHaA= diff --git a/vendor/github.com/openshift/api/features.md b/vendor/github.com/openshift/api/features.md index 6823db505c..d4a2435962 100644 --- a/vendor/github.com/openshift/api/features.md +++ b/vendor/github.com/openshift/api/features.md @@ -5,9 +5,7 @@ | EventedPLEG| | | | | | | | MachineAPIMigration| | | | | | | | MachineAPIOperatorDisableMachineHealthCheckController| | | | | | | -| MultiArchInstallAWS| | | | | | | | MultiArchInstallAzure| | | | | | | -| MultiArchInstallGCP| | | | | | | | GatewayAPI| | | Enabled | Enabled | | | | AutomatedEtcdBackup| | | Enabled | Enabled | Enabled | Enabled | | BootcNodeManagement| | | Enabled | Enabled | Enabled | Enabled | @@ -35,6 +33,8 @@ | MaxUnavailableStatefulSet| | | Enabled | Enabled | Enabled | Enabled | | MetricsCollectionProfiles| | | Enabled | Enabled | Enabled | Enabled | | MixedCPUsAllocation| | | Enabled | Enabled | Enabled | Enabled | +| MultiArchInstallAWS| | | Enabled | Enabled | Enabled | Enabled | +| MultiArchInstallGCP| | | Enabled | Enabled | Enabled | Enabled | | NetworkSegmentation| | | Enabled | Enabled | Enabled | Enabled | | NewOLM| | | Enabled | Enabled | Enabled | Enabled | | NodeSwap| | | Enabled | Enabled | Enabled | Enabled | diff --git a/vendor/github.com/openshift/api/features/features.go b/vendor/github.com/openshift/api/features/features.go index 03e3f61f14..384986719d 100644 --- a/vendor/github.com/openshift/api/features/features.go +++ b/vendor/github.com/openshift/api/features/features.go @@ -568,6 +568,7 @@ var ( reportProblemsToJiraComponent("Installer"). contactPerson("r4f4"). productScope(ocpSpecific). + enableIn(configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade). mustRegister() FeatureGateMultiArchInstallAzure = newFeatureGate("MultiArchInstallAzure"). @@ -580,6 +581,7 @@ var ( reportProblemsToJiraComponent("Installer"). contactPerson("r4f4"). productScope(ocpSpecific). + enableIn(configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade). mustRegister() FeatureGateIngressControllerLBSubnetsAWS = newFeatureGate("IngressControllerLBSubnetsAWS"). diff --git a/vendor/github.com/openshift/api/machine/v1/types_nutanixprovider.go b/vendor/github.com/openshift/api/machine/v1/types_nutanixprovider.go index 1370ebdd28..e5e0ae8305 100644 --- a/vendor/github.com/openshift/api/machine/v1/types_nutanixprovider.go +++ b/vendor/github.com/openshift/api/machine/v1/types_nutanixprovider.go @@ -78,6 +78,18 @@ type NutanixMachineProviderConfig struct { // +optional Categories []NutanixCategory `json:"categories"` + // gpus is a list of GPU devices to attach to the machine's VM. + // The GPU devices should already exist in Prism Central and associated with + // one of the Prism Element's hosts and available for the VM to attach (in "UNUSED" status). + // +listType=set + // +optional + GPUs []NutanixGPU `json:"gpus"` + + // dataDisks holds information of the data disks to attach to the Machine's VM + // +listType=set + // +optional + DataDisks []NutanixVMDisk `json:"dataDisks"` + // userDataSecret is a local reference to a secret that contains the // UserData to apply to the VM UserDataSecret *corev1.LocalObjectReference `json:"userDataSecret,omitempty"` @@ -154,6 +166,160 @@ type NutanixResourceIdentifier struct { Name *string `json:"name,omitempty"` } +// NutanixGPUIdentifierType is an enumeration of different resource identifier types for GPU entities. +// +kubebuilder:validation:Enum:=Name;DeviceID +type NutanixGPUIdentifierType string + +const ( + // NutanixGPUIdentifierName identifies a GPU by Name. + NutanixGPUIdentifierName NutanixGPUIdentifierType = "Name" + + // NutanixGPUIdentifierDeviceID identifies a GPU by device ID. + NutanixGPUIdentifierDeviceID NutanixGPUIdentifierType = "DeviceID" +) + +// NutanixGPU holds the identity of a Nutanix GPU resource in the Prism Central +// +kubebuilder:validation:XValidation:rule="has(self.type) && self.type == 'DeviceID' ? has(self.deviceID) : !has(self.deviceID)",message="deviceID configuration is required when type is DeviceID, and forbidden otherwise" +// +kubebuilder:validation:XValidation:rule="has(self.type) && self.type == 'Name' ? has(self.name) : !has(self.name)",message="name configuration is required when type is Name, and forbidden otherwise" +// +union +type NutanixGPU struct { + // type is the identifier type of the GPU device. + // Valid values are Name and DeviceID. + // +unionDiscriminator + // +kubebuilder:validation:Required + Type NutanixGPUIdentifierType `json:"type"` + + // deviceID is the GPU device ID with the integer value. + // +optional + // +unionMember + DeviceID *int32 `json:"deviceID,omitempty"` + + // name is the GPU device name + // +optional + // +unionMember + Name *string `json:"name,omitempty"` +} + +// NutanixDiskMode is an enumeration of different disk modes. +// +kubebuilder:validation:Enum=Standard;Flash +type NutanixDiskMode string + +const ( + // NutanixDiskModeStandard represents the disk standard mode (not flash). + NutanixDiskModeStandard NutanixDiskMode = "Standard" + + // NutanixDiskModeFlash represents the disk flash mode. + NutanixDiskModeFlash NutanixDiskMode = "Flash" +) + +// NutanixStorageResourceIdentifier holds the identity of a Nutanix storage resource (storage_container, etc.) +// +kubebuilder:validation:XValidation:rule="has(self.type) && self.type == 'uuid' ? has(self.uuid) : !has(self.uuid)",message="uuid configuration is required when type is uuid, and forbidden otherwise" +// +union +type NutanixStorageResourceIdentifier struct { + // type is the identifier type to use for this resource. + // The valid value is "uuid". + // +unionDiscriminator + // +kubebuilder:validation:Required + // +kubebuilder:validation:Enum:=uuid + Type NutanixIdentifierType `json:"type"` + + // uuid is the UUID of the storage resource in the PC. + // +optional + // +unionMember + UUID *string `json:"uuid,omitempty"` +} + +// NutanixVMStorageConfig specifies the storage configuration parameters for VM disks. +type NutanixVMStorageConfig struct { + // diskMode specifies the disk mode. + // The valid values are Standard and Flash, and the default is Standard. + // +kubebuilder:default=Standard + DiskMode NutanixDiskMode `json:"diskMode"` + + // storageContainer refers to the storage_container used by the VM disk. + // +optional + StorageContainer *NutanixStorageResourceIdentifier `json:"storageContainer"` +} + +// NutanixDiskDeviceType is the VM disk device type. +// +kubebuilder:validation:Enum=Disk;CDRom +type NutanixDiskDeviceType string + +const ( + // NutanixDiskDeviceTypeDisk represents the VM disk device type "Disk". + NutanixDiskDeviceTypeDisk NutanixDiskDeviceType = "Disk" + + // NutanixDiskDeviceTypeCDROM represents the VM disk device type "CDRom". + NutanixDiskDeviceTypeCDROM NutanixDiskDeviceType = "CDRom" +) + +// NutanixDiskAdapterType is an enumeration of different disk device adapter types. +// +kubebuilder:validation:Enum:=SCSI;IDE;PCI;SATA;SPAPR +type NutanixDiskAdapterType string + +const ( + // NutanixDiskAdapterTypeSCSI represents the disk adapter type "SCSI". + NutanixDiskAdapterTypeSCSI NutanixDiskAdapterType = "SCSI" + + // NutanixDiskAdapterTypeIDE represents the disk adapter type "IDE". + NutanixDiskAdapterTypeIDE NutanixDiskAdapterType = "IDE" + + // NutanixDiskAdapterTypePCI represents the disk adapter type "PCI". + NutanixDiskAdapterTypePCI NutanixDiskAdapterType = "PCI" + + // NutanixDiskAdapterTypeSATA represents the disk adapter type "SATA". + NutanixDiskAdapterTypeSATA NutanixDiskAdapterType = "SATA" + + // NutanixDiskAdapterTypeSPAPR represents the disk adapter type "SPAPR". + NutanixDiskAdapterTypeSPAPR NutanixDiskAdapterType = "SPAPR" +) + +// NutanixVMDiskDeviceProperties specifies the disk device properties. +type NutanixVMDiskDeviceProperties struct { + // deviceType specifies the disk device type. + // The valid values are "Disk" and "CDRom", and the default is "Disk". + // +kubebuilder:default=Disk + // +kubebuilder:validation:Required + DeviceType NutanixDiskDeviceType `json:"deviceType"` + + // adapterType is the adapter type of the disk address. + // If the deviceType is "Disk", the valid adapterType can be "SCSI", "IDE", "PCI", "SATA" or "SPAPR". + // If the deviceType is "CDRom", the valid adapterType can be "IDE" or "SATA". + // +kubebuilder:validation:Required + AdapterType NutanixDiskAdapterType `json:"adapterType,omitempty"` + + // deviceIndex is the index of the disk address. The valid values are non-negative integers, with the default value 0. + // For a Machine VM, the deviceIndex for the disks with the same deviceType.adapterType combination should + // start from 0 and increase consecutively afterwards. Note that for each Machine VM, the Disk.SCSI.0 + // and CDRom.IDE.0 are reserved to be used by the VM's system. So for dataDisks of Disk.SCSI and CDRom.IDE, + // the deviceIndex should start from 1. + // +kubebuilder:default=0 + // +kubebuilder:validation:Minimum=0 + // +kubebuilder:validation:Required + DeviceIndex int32 `json:"deviceIndex,omitempty"` +} + +// NutanixDataDisk specifies the VM data disk configuration parameters. +type NutanixVMDisk struct { + // diskSize is size (in Quantity format) of the disk attached to the VM. + // See https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Format for the Quantity format and example documentation. + // The minimum diskSize is 1GB. + // +kubebuilder:validation:Required + DiskSize resource.Quantity `json:"diskSize"` + + // deviceProperties are the properties of the disk device. + // +optional + DeviceProperties *NutanixVMDiskDeviceProperties `json:"deviceProperties,omitempty"` + + // storageConfig are the storage configuration parameters of the VM disks. + // +optional + StorageConfig *NutanixVMStorageConfig `json:"storageConfig,omitempty"` + + // dataSource refers to a data source image for the VM disk. + // +optional + DataSource *NutanixResourceIdentifier `json:"dataSource,omitempty"` +} + // NutanixMachineProviderStatus is the type that will be embedded in a Machine.Status.ProviderStatus field. // It contains nutanix-specific status information. // Compatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer). diff --git a/vendor/github.com/openshift/api/machine/v1/zz_generated.deepcopy.go b/vendor/github.com/openshift/api/machine/v1/zz_generated.deepcopy.go index ffd8e951f2..f30514381b 100644 --- a/vendor/github.com/openshift/api/machine/v1/zz_generated.deepcopy.go +++ b/vendor/github.com/openshift/api/machine/v1/zz_generated.deepcopy.go @@ -624,6 +624,32 @@ func (in *NutanixFailureDomainReference) DeepCopy() *NutanixFailureDomainReferen return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NutanixGPU) DeepCopyInto(out *NutanixGPU) { + *out = *in + if in.DeviceID != nil { + in, out := &in.DeviceID, &out.DeviceID + *out = new(int32) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NutanixGPU. +func (in *NutanixGPU) DeepCopy() *NutanixGPU { + if in == nil { + return nil + } + out := new(NutanixGPU) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *NutanixMachineProviderConfig) DeepCopyInto(out *NutanixMachineProviderConfig) { *out = *in @@ -646,6 +672,20 @@ func (in *NutanixMachineProviderConfig) DeepCopyInto(out *NutanixMachineProvider *out = make([]NutanixCategory, len(*in)) copy(*out, *in) } + if in.GPUs != nil { + in, out := &in.GPUs, &out.GPUs + *out = make([]NutanixGPU, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.DataDisks != nil { + in, out := &in.DataDisks, &out.DataDisks + *out = make([]NutanixVMDisk, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.UserDataSecret != nil { in, out := &in.UserDataSecret, &out.UserDataSecret *out = new(corev1.LocalObjectReference) @@ -745,6 +785,96 @@ func (in *NutanixResourceIdentifier) DeepCopy() *NutanixResourceIdentifier { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NutanixStorageResourceIdentifier) DeepCopyInto(out *NutanixStorageResourceIdentifier) { + *out = *in + if in.UUID != nil { + in, out := &in.UUID, &out.UUID + *out = new(string) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NutanixStorageResourceIdentifier. +func (in *NutanixStorageResourceIdentifier) DeepCopy() *NutanixStorageResourceIdentifier { + if in == nil { + return nil + } + out := new(NutanixStorageResourceIdentifier) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NutanixVMDisk) DeepCopyInto(out *NutanixVMDisk) { + *out = *in + out.DiskSize = in.DiskSize.DeepCopy() + if in.DeviceProperties != nil { + in, out := &in.DeviceProperties, &out.DeviceProperties + *out = new(NutanixVMDiskDeviceProperties) + **out = **in + } + if in.StorageConfig != nil { + in, out := &in.StorageConfig, &out.StorageConfig + *out = new(NutanixVMStorageConfig) + (*in).DeepCopyInto(*out) + } + if in.DataSource != nil { + in, out := &in.DataSource, &out.DataSource + *out = new(NutanixResourceIdentifier) + (*in).DeepCopyInto(*out) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NutanixVMDisk. +func (in *NutanixVMDisk) DeepCopy() *NutanixVMDisk { + if in == nil { + return nil + } + out := new(NutanixVMDisk) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NutanixVMDiskDeviceProperties) DeepCopyInto(out *NutanixVMDiskDeviceProperties) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NutanixVMDiskDeviceProperties. +func (in *NutanixVMDiskDeviceProperties) DeepCopy() *NutanixVMDiskDeviceProperties { + if in == nil { + return nil + } + out := new(NutanixVMDiskDeviceProperties) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NutanixVMStorageConfig) DeepCopyInto(out *NutanixVMStorageConfig) { + *out = *in + if in.StorageContainer != nil { + in, out := &in.StorageContainer, &out.StorageContainer + *out = new(NutanixStorageResourceIdentifier) + (*in).DeepCopyInto(*out) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NutanixVMStorageConfig. +func (in *NutanixVMStorageConfig) DeepCopy() *NutanixVMStorageConfig { + if in == nil { + return nil + } + out := new(NutanixVMStorageConfig) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *OpenShiftMachineV1Beta1MachineTemplate) DeepCopyInto(out *OpenShiftMachineV1Beta1MachineTemplate) { *out = *in diff --git a/vendor/github.com/openshift/api/machine/v1/zz_generated.swagger_doc_generated.go b/vendor/github.com/openshift/api/machine/v1/zz_generated.swagger_doc_generated.go index 44fed0c1e1..32b86a7e9b 100644 --- a/vendor/github.com/openshift/api/machine/v1/zz_generated.swagger_doc_generated.go +++ b/vendor/github.com/openshift/api/machine/v1/zz_generated.swagger_doc_generated.go @@ -325,6 +325,17 @@ func (NutanixCategory) SwaggerDoc() map[string]string { return map_NutanixCategory } +var map_NutanixGPU = map[string]string{ + "": "NutanixGPU holds the identity of a Nutanix GPU resource in the Prism Central", + "type": "type is the identifier type of the GPU device. Valid values are Name and DeviceID.", + "deviceID": "deviceID is the GPU device ID with the integer value.", + "name": "name is the GPU device name", +} + +func (NutanixGPU) SwaggerDoc() map[string]string { + return map_NutanixGPU +} + var map_NutanixMachineProviderConfig = map[string]string{ "": "NutanixMachineProviderConfig is the Schema for the nutanixmachineproviderconfigs API Compatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer).", "metadata": "metadata is the standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", @@ -338,6 +349,8 @@ var map_NutanixMachineProviderConfig = map[string]string{ "bootType": "bootType indicates the boot type (Legacy, UEFI or SecureBoot) the Machine's VM uses to boot. If this field is empty or omitted, the VM will use the default boot type \"Legacy\" to boot. \"SecureBoot\" depends on \"UEFI\" boot, i.e., enabling \"SecureBoot\" means that \"UEFI\" boot is also enabled.", "project": "project optionally identifies a Prism project for the Machine's VM to associate with.", "categories": "categories optionally adds one or more prism categories (each with key and value) for the Machine's VM to associate with. All the category key and value pairs specified must already exist in the prism central.", + "gpus": "gpus is a list of GPU devices to attach to the machine's VM. The GPU devices should already exist in Prism Central and associated with one of the Prism Element's hosts and available for the VM to attach (in \"UNUSED\" status).", + "dataDisks": "dataDisks holds information of the data disks to attach to the Machine's VM", "userDataSecret": "userDataSecret is a local reference to a secret that contains the UserData to apply to the VM", "credentialsSecret": "credentialsSecret is a local reference to a secret that contains the credentials data to access Nutanix PC client", "failureDomain": "failureDomain refers to the name of the FailureDomain with which this Machine is associated. If this is configured, the Nutanix machine controller will use the prism_central endpoint and credentials defined in the referenced FailureDomain to communicate to the prism_central. It will also verify that the 'cluster' and subnets' configuration in the NutanixMachineProviderConfig is consistent with that in the referenced failureDomain.", @@ -368,6 +381,49 @@ func (NutanixResourceIdentifier) SwaggerDoc() map[string]string { return map_NutanixResourceIdentifier } +var map_NutanixStorageResourceIdentifier = map[string]string{ + "": "NutanixStorageResourceIdentifier holds the identity of a Nutanix storage resource (storage_container, etc.)", + "type": "type is the identifier type to use for this resource. The valid value is \"uuid\".", + "uuid": "uuid is the UUID of the storage resource in the PC.", +} + +func (NutanixStorageResourceIdentifier) SwaggerDoc() map[string]string { + return map_NutanixStorageResourceIdentifier +} + +var map_NutanixVMDisk = map[string]string{ + "": "NutanixDataDisk specifies the VM data disk configuration parameters.", + "diskSize": "diskSize is size (in Quantity format) of the disk attached to the VM. See https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Format for the Quantity format and example documentation. The minimum diskSize is 1GB.", + "deviceProperties": "deviceProperties are the properties of the disk device.", + "storageConfig": "storageConfig are the storage configuration parameters of the VM disks.", + "dataSource": "dataSource refers to a data source image for the VM disk.", +} + +func (NutanixVMDisk) SwaggerDoc() map[string]string { + return map_NutanixVMDisk +} + +var map_NutanixVMDiskDeviceProperties = map[string]string{ + "": "NutanixVMDiskDeviceProperties specifies the disk device properties.", + "deviceType": "deviceType specifies the disk device type. The valid values are \"Disk\" and \"CDRom\", and the default is \"Disk\".", + "adapterType": "adapterType is the adapter type of the disk address. If the deviceType is \"Disk\", the valid adapterType can be \"SCSI\", \"IDE\", \"PCI\", \"SATA\" or \"SPAPR\". If the deviceType is \"CDRom\", the valid adapterType can be \"IDE\" or \"SATA\".", + "deviceIndex": "deviceIndex is the index of the disk address. The valid values are non-negative integers, with the default value 0. For a Machine VM, the deviceIndex for the disks with the same deviceType.adapterType combination should start from 0 and increase consecutively afterwards. Note that for each Machine VM, the Disk.SCSI.0 and CDRom.IDE.0 are reserved to be used by the VM's system. So for dataDisks of Disk.SCSI and CDRom.IDE, the deviceIndex should start from 1.", +} + +func (NutanixVMDiskDeviceProperties) SwaggerDoc() map[string]string { + return map_NutanixVMDiskDeviceProperties +} + +var map_NutanixVMStorageConfig = map[string]string{ + "": "NutanixVMStorageConfig specifies the storage configuration parameters for VM disks.", + "diskMode": "diskMode specifies the disk mode. The valid values are Standard and Flash, and the default is Standard.", + "storageContainer": "storageContainer refers to the storage_container used by the VM disk.", +} + +func (NutanixVMStorageConfig) SwaggerDoc() map[string]string { + return map_NutanixVMStorageConfig +} + var map_LoadBalancerReference = map[string]string{ "": "LoadBalancerReference is a reference to a load balancer on IBM Cloud virtual private cloud(VPC).", "name": "name of the LoadBalancer in IBM Cloud VPC. The name should be between 1 and 63 characters long and may consist of lowercase alphanumeric characters and hyphens only. The value must not end with a hyphen. It is a reference to existing LoadBalancer created by openshift installer component.", diff --git a/vendor/github.com/openshift/api/operator/v1/types_console.go b/vendor/github.com/openshift/api/operator/v1/types_console.go index 66e3798d92..74dd8f4b07 100644 --- a/vendor/github.com/openshift/api/operator/v1/types_console.go +++ b/vendor/github.com/openshift/api/operator/v1/types_console.go @@ -99,8 +99,60 @@ type StatuspageProvider struct { PageID string `json:"pageID"` } +// ConsoleCapabilityName defines name of UI capability in the console UI. +type ConsoleCapabilityName string + +const ( + // lightspeedButton is the name for the Lightspeed button HTML element. + LightspeedButton ConsoleCapabilityName = "LightspeedButton" +) + +// CapabilityState defines the state of the capability in the console UI. +type CapabilityState string + +const ( + // "Enabled" means that the capability will be rendered in the console UI. + CapabilityEnabled CapabilityState = "Enabled" + // "Disabled" means that the capability will not be rendered in the console UI. + CapabilityDisabled CapabilityState = "Disabled" +) + +// CapabilityVisibility defines the criteria to enable/disable a capability. +// +union +type CapabilityVisibility struct { + // state defines if the capability is enabled or disabled in the console UI. + // Enabling the capability in the console UI is represented by the "Enabled" value. + // Disabling the capability in the console UI is represented by the "Disabled" value. + // +unionDiscriminator + // +kubebuilder:validation:Enum:="Enabled";"Disabled" + // +kubebuilder:validation:Required + State CapabilityState `json:"state"` +} + +// Capabilities contains set of UI capabilities and their state in the console UI. +type Capability struct { + // name is the unique name of a capability. + // Available capabilities are LightspeedButton. + // +kubebuilder:validation:Enum:="LightspeedButton"; + // +kubebuilder:validation:Required + Name ConsoleCapabilityName `json:"name"` + // visibility defines the visibility state of the capability. + // +kubebuilder:validation:Required + Visibility CapabilityVisibility `json:"visibility"` +} + // ConsoleCustomization defines a list of optional configuration for the console UI. type ConsoleCustomization struct { + // capabilities defines an array of capabilities that can be interacted with in the console UI. + // Each capability defines a visual state that can be interacted with the console to render in the UI. + // Available capabilities are LightspeedButton. + // Each of the available capabilities may appear only once in the list. + // +kubebuilder:validation:MinItems=1 + // +kubebuilder:validation:MaxItems=1 + // +listType=map + // +listMapKey=name + // +optional + Capabilities []Capability `json:"capabilities,omitempty"` // brand is the default branding of the web console which can be overridden by // providing the brand field. There is a limited set of specific brand options. // This field controls elements of the console such as the logo. diff --git a/vendor/github.com/openshift/api/operator/v1/zz_generated.crd-manifests/0000_50_console_01_consoles.crd.yaml b/vendor/github.com/openshift/api/operator/v1/zz_generated.crd-manifests/0000_50_console_01_consoles.crd.yaml index c0284cf48e..2ad47de592 100644 --- a/vendor/github.com/openshift/api/operator/v1/zz_generated.crd-manifests/0000_50_console_01_consoles.crd.yaml +++ b/vendor/github.com/openshift/api/operator/v1/zz_generated.crd-manifests/0000_50_console_01_consoles.crd.yaml @@ -77,6 +77,49 @@ spec: - Azure - ROSA type: string + capabilities: + description: capabilities defines an array of capabilities that + can be interacted with in the console UI. Each capability defines + a visual state that can be interacted with the console to render + in the UI. Available capabilities are LightspeedButton. Each + of the available capabilities may appear only once in the list. + items: + description: Capabilities contains set of UI capabilities and + their state in the console UI. + properties: + name: + description: name is the unique name of a capability. Available + capabilities are LightspeedButton. + enum: + - LightspeedButton + type: string + visibility: + description: visibility defines the visibility state of + the capability. + properties: + state: + description: state defines if the capability is enabled + or disabled in the console UI. Enabling the capability + in the console UI is represented by the "Enabled" + value. Disabling the capability in the console UI + is represented by the "Disabled" value. + enum: + - Enabled + - Disabled + type: string + required: + - state + type: object + required: + - name + - visibility + type: object + maxItems: 1 + minItems: 1 + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map customLogoFile: description: 'customLogoFile replaces the default OpenShift logo in the masthead and about dialog. It is a reference to a ConfigMap diff --git a/vendor/github.com/openshift/api/operator/v1/zz_generated.deepcopy.go b/vendor/github.com/openshift/api/operator/v1/zz_generated.deepcopy.go index 24be801a17..9a37e8e385 100644 --- a/vendor/github.com/openshift/api/operator/v1/zz_generated.deepcopy.go +++ b/vendor/github.com/openshift/api/operator/v1/zz_generated.deepcopy.go @@ -463,6 +463,39 @@ func (in *CSISnapshotControllerStatus) DeepCopy() *CSISnapshotControllerStatus { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Capability) DeepCopyInto(out *Capability) { + *out = *in + out.Visibility = in.Visibility + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Capability. +func (in *Capability) DeepCopy() *Capability { + if in == nil { + return nil + } + out := new(Capability) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CapabilityVisibility) DeepCopyInto(out *CapabilityVisibility) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CapabilityVisibility. +func (in *CapabilityVisibility) DeepCopy() *CapabilityVisibility { + if in == nil { + return nil + } + out := new(CapabilityVisibility) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ClientTLS) DeepCopyInto(out *ClientTLS) { *out = *in @@ -835,6 +868,11 @@ func (in *ConsoleConfigRoute) DeepCopy() *ConsoleConfigRoute { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ConsoleCustomization) DeepCopyInto(out *ConsoleCustomization) { *out = *in + if in.Capabilities != nil { + in, out := &in.Capabilities, &out.Capabilities + *out = make([]Capability, len(*in)) + copy(*out, *in) + } out.CustomLogoFile = in.CustomLogoFile in.DeveloperCatalog.DeepCopyInto(&out.DeveloperCatalog) in.ProjectAccess.DeepCopyInto(&out.ProjectAccess) diff --git a/vendor/github.com/openshift/api/operator/v1/zz_generated.swagger_doc_generated.go b/vendor/github.com/openshift/api/operator/v1/zz_generated.swagger_doc_generated.go index 3700f2bd01..2c53fdb80b 100644 --- a/vendor/github.com/openshift/api/operator/v1/zz_generated.swagger_doc_generated.go +++ b/vendor/github.com/openshift/api/operator/v1/zz_generated.swagger_doc_generated.go @@ -205,6 +205,25 @@ func (AddPage) SwaggerDoc() map[string]string { return map_AddPage } +var map_Capability = map[string]string{ + "": "Capabilities contains set of UI capabilities and their state in the console UI.", + "name": "name is the unique name of a capability. Available capabilities are LightspeedButton.", + "visibility": "visibility defines the visibility state of the capability.", +} + +func (Capability) SwaggerDoc() map[string]string { + return map_Capability +} + +var map_CapabilityVisibility = map[string]string{ + "": "CapabilityVisibility defines the criteria to enable/disable a capability.", + "state": "state defines if the capability is enabled or disabled in the console UI. Enabling the capability in the console UI is represented by the \"Enabled\" value. Disabling the capability in the console UI is represented by the \"Disabled\" value.", +} + +func (CapabilityVisibility) SwaggerDoc() map[string]string { + return map_CapabilityVisibility +} + var map_Console = map[string]string{ "": "Console provides a means to configure an operator to manage the console.\n\nCompatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer).", "metadata": "metadata is the standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", @@ -226,6 +245,7 @@ func (ConsoleConfigRoute) SwaggerDoc() map[string]string { var map_ConsoleCustomization = map[string]string{ "": "ConsoleCustomization defines a list of optional configuration for the console UI.", + "capabilities": "capabilities defines an array of capabilities that can be interacted with in the console UI. Each capability defines a visual state that can be interacted with the console to render in the UI. Available capabilities are LightspeedButton. Each of the available capabilities may appear only once in the list.", "brand": "brand is the default branding of the web console which can be overridden by providing the brand field. There is a limited set of specific brand options. This field controls elements of the console such as the logo. Invalid value will prevent a console rollout.", "documentationBaseURL": "documentationBaseURL links to external documentation are shown in various sections of the web console. Providing documentationBaseURL will override the default documentation URL. Invalid value will prevent a console rollout.", "customProductName": "customProductName is the name that will be displayed in page titles, logo alt text, and the about dialog instead of the normal OpenShift product name.", diff --git a/vendor/modules.txt b/vendor/modules.txt index 7beb0bc411..c4f0e41753 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -962,7 +962,7 @@ github.com/opencontainers/runc/libcontainer/user # github.com/opencontainers/runtime-spec v1.1.0 ## explicit github.com/opencontainers/runtime-spec/specs-go -# github.com/openshift/api v0.0.0-20240723231418-442f06d7e03b => github.com/djoshy/api v0.0.0-20240726175932-7e2935d5d809 +# github.com/openshift/api v0.0.0-20240801145124-1cd5e2993247 ## explicit; go 1.22.0 github.com/openshift/api github.com/openshift/api/annotations @@ -2527,4 +2527,3 @@ sigs.k8s.io/structured-merge-diff/v4/value sigs.k8s.io/yaml sigs.k8s.io/yaml/goyaml.v2 # k8s.io/kube-openapi => github.com/openshift/kube-openapi v0.0.0-20230816122517-ffc8f001abb0 -# github.com/openshift/api => github.com/djoshy/api v0.0.0-20240726175932-7e2935d5d809