config/crd/bases/anywhere.eks.amazonaws.com_nutanixmachineconfigs.yaml (353 lines of code) (raw):
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.2
name: nutanixmachineconfigs.anywhere.eks.amazonaws.com
spec:
group: anywhere.eks.amazonaws.com
names:
kind: NutanixMachineConfig
listKind: NutanixMachineConfigList
plural: nutanixmachineconfigs
singular: nutanixmachineconfig
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: NutanixMachineConfig is the Schema for the nutanix machine configs
API
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: NutanixMachineConfigSpec defines the desired state of NutanixMachineConfig.
properties:
additionalCategories:
description: |-
additionalCategories is a list of optional categories to be added to the VM.
Categories must be created in Prism Central before they can be used.
items:
description: NutanixCategoryIdentifier holds the identity of a Nutanix
Prism Central category.
properties:
key:
description: key is the Key of the category in the Prism Central.
type: string
value:
description: value is the category value linked to the key in
the Prism Central.
type: string
required:
- key
- value
type: object
type: array
cluster:
description: |-
cluster is to identify the cluster (the Prism Element under management
of the Prism Central), in which the Machine's VM will be created.
The cluster identifier (uuid or name) can be obtained from the Prism Central console
or using the prism_central API.
properties:
name:
description: name is the resource name in the PC
type: string
type:
description: Type is the identifier type to use for this resource.
enum:
- uuid
- name
type: string
uuid:
description: uuid is the UUID of the resource in the PC.
type: string
required:
- type
type: object
gpus:
description: List of GPU devices that should be added to the VMs.
items:
description: NutanixGPUIdentifier holds VM GPU device configuration.
properties:
deviceID:
description: deviceID is the device ID of the GPU device.
format: int64
type: integer
name:
description: vendorID is the vendor ID of the GPU device.
type: string
type:
description: type is the type of the GPU device.
enum:
- deviceID
- name
type: string
required:
- type
type: object
type: array
image:
description: |-
image is to identify the OS image uploaded to the Prism Central (PC)
The image identifier (uuid or name) can be obtained from the Prism Central console
or using the Prism Central API.
It must include the Kubernetes version(s). For example, a template used for
Kubernetes 1.27 could be ubuntu-2204-1.27.
properties:
name:
description: name is the resource name in the PC
type: string
type:
description: Type is the identifier type to use for this resource.
enum:
- uuid
- name
type: string
uuid:
description: uuid is the UUID of the resource in the PC.
type: string
required:
- type
type: object
memorySize:
anyOf:
- type: integer
- type: string
description: |-
memorySize is the memory size (in Quantity format) of the VM
The minimum memorySize is 2Gi bytes
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
osFamily:
type: string
project:
description: |-
Project is an optional property that specifies the Prism Central project so that machine resources
can be linked to it. The project identifier (uuid or name) can be obtained from the Prism Central console
or using the Prism Central API.
properties:
name:
description: name is the resource name in the PC
type: string
type:
description: Type is the identifier type to use for this resource.
enum:
- uuid
- name
type: string
uuid:
description: uuid is the UUID of the resource in the PC.
type: string
required:
- type
type: object
subnet:
description: |-
subnet is to identify the cluster's network subnet to use for the Machine's VM
The cluster identifier (uuid or name) can be obtained from the Prism Central console
or using the Prism Central API.
properties:
name:
description: name is the resource name in the PC
type: string
type:
description: Type is the identifier type to use for this resource.
enum:
- uuid
- name
type: string
uuid:
description: uuid is the UUID of the resource in the PC.
type: string
required:
- type
type: object
systemDiskSize:
anyOf:
- type: integer
- type: string
description: |-
systemDiskSize is size (in Quantity format) of the system disk of the VM
The minimum systemDiskSize is 20Gi bytes
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
users:
items:
description: UserConfiguration defines the configuration of the
user to be added to the VM.
properties:
name:
type: string
sshAuthorizedKeys:
items:
type: string
type: array
required:
- name
- sshAuthorizedKeys
type: object
type: array
vcpuSockets:
description: vcpuSockets is the number of vCPU sockets of the VM
format: int32
minimum: 1
type: integer
vcpusPerSocket:
description: vcpusPerSocket is the number of vCPUs per socket of the
VM
format: int32
minimum: 1
type: integer
required:
- cluster
- image
- memorySize
- osFamily
- subnet
- systemDiskSize
- vcpuSockets
- vcpusPerSocket
type: object
status:
description: NutanixMachineConfigStatus defines the observed state of
NutanixMachineConfig.
properties:
addresses:
description: |-
Addresses contains the Nutanix VM associated addresses.
Address type is one of Hostname, ExternalIP, InternalIP, ExternalDNS, InternalDNS
items:
description: MachineAddress contains information for the node's
address.
properties:
address:
description: The machine address.
type: string
type:
description: Machine address type, one of Hostname, ExternalIP,
InternalIP, ExternalDNS or InternalDNS.
type: string
required:
- address
- type
type: object
type: array
conditions:
description: Conditions defines current service state of the NutanixMachine.
items:
description: Condition defines an observation of a Cluster API resource
operational state.
properties:
lastTransitionTime:
description: |-
Last time the condition transitioned from one status to another.
This should be when the underlying condition changed. If that is not known, then using the time when
the API field changed is acceptable.
format: date-time
type: string
message:
description: |-
A human readable message indicating details about the transition.
This field may be empty.
type: string
reason:
description: |-
The reason for the condition's last transition in CamelCase.
The specific API may choose whether or not this field is considered a guaranteed API.
This field may not be empty.
type: string
severity:
description: |-
Severity provides an explicit classification of Reason code, so the users or machines can immediately
understand the current situation and act accordingly.
The Severity field MUST be set only when Status=False.
type: string
status:
description: Status of the condition, one of True, False, Unknown.
type: string
type:
description: |-
Type of condition in CamelCase or in foo.example.com/CamelCase.
Many .condition.type values are consistent across resources like Available, but because arbitrary conditions
can be useful (see .node.status.conditions), the ability to deconflict is important.
type: string
required:
- lastTransitionTime
- status
- type
type: object
type: array
nodeRef:
description: NodeRef is a reference to the corresponding workload
cluster Node if it exists.
properties:
apiVersion:
description: API version of the referent.
type: string
fieldPath:
description: |-
If referring to a piece of an object instead of an entire object, this string
should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
For example, if the object reference is to a container within a pod, this would take on a value like:
"spec.containers{name}" (where "name" refers to the name of the container that triggered
the event) or if no container name is specified "spec.containers[2]" (container with
index 2 in this pod). This syntax is chosen only to have some well-defined way of
referencing a part of an object.
type: string
kind:
description: |-
Kind of the referent.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
name:
description: |-
Name of the referent.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
namespace:
description: |-
Namespace of the referent.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
type: string
resourceVersion:
description: |-
Specific resourceVersion to which this reference is made, if any.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
type: string
uid:
description: |-
UID of the referent.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
type: string
type: object
x-kubernetes-map-type: atomic
ready:
description: Ready is true when the provider resource is ready.
type: boolean
vmUUID:
description: The Nutanix VM's UUID
type: string
type: object
type: object
served: true
storage: true
subresources:
status: {}