Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions api/v1alpha1/aws_node_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@

package v1alpha1

import (
capav1 "github.com/nutanix-cloud-native/cluster-api-runtime-extensions-nutanix/api/external/sigs.k8s.io/cluster-api-provider-aws/v2/api/v1beta2"
)

type AWSControlPlaneNodeSpec struct {
// The IAM instance profile to use for the cluster Machines.
// +kubebuilder:validation:Optional
Expand Down Expand Up @@ -50,6 +54,10 @@ type AWSGenericNodeSpec struct {
// PlacementGroup specifies the placement group in which to launch the instance.
// +kubebuilder:validation:Optional
PlacementGroup *PlacementGroup `json:"placementGroup,omitempty"`

// Configuration options for the root and additional storage volume.
// +kubebuilder:validation:Optional
Volumes *AWSVolumes `json:"volumes,omitempty"`
}

// +kubebuilder:validation:MaxItems=32
Expand Down Expand Up @@ -105,3 +113,47 @@ type AMILookup struct {
// +kubebuilder:validation:MaxLength=32
BaseOS string `json:"baseOS,omitempty"`
}

type AWSVolumes struct {
// Configuration options for the root storage volume.
// +kubebuilder:validation:Optional
Root *AWSVolume `json:"root,omitempty"`

// Configuration options for non-root storage volumes.
// +kubebuilder:validation:Optional
NonRoot []AWSVolume `json:"nonroot,omitempty"`
}

type AWSVolume struct {
// Device name
// +kubebuilder:validation:Optional
DeviceName string `json:"deviceName,omitempty"`

// Size specifies size (in Gi) of the storage device.
// Must be greater than the image snapshot size or 8 (whichever is greater).
// +kubebuilder:validation:Optional
// +kubebuilder:validation:Minimum=8
Size int64 `json:"size,omitempty"`

// Type is the type of the volume (e.g. gp2, io1, etc...).
// +kubebuilder:validation:Optional
Type capav1.VolumeType `json:"type,omitempty"`

// IOPS is the number of IOPS requested for the disk. Not applicable to all types.
// +kubebuilder:validation:Optional
IOPS int64 `json:"iops,omitempty"`

// Throughput to provision in MiB/s supported for the volume type. Not applicable to all types.
// +kubebuilder:validation:Optional
Throughput int64 `json:"throughput,omitempty"`

// Encrypted is whether the volume should be encrypted or not.
// +kubebuilder:validation:Optional
Encrypted bool `json:"encrypted,omitempty"`

// EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN.
// If Encrypted is set and this is omitted, the default AWS key will be used.
// The key must already exist and be accessible by the controller.
// +kubebuilder:validation:Optional
EncryptionKey string `json:"encryptionKey,omitempty"`
}
74 changes: 74 additions & 0 deletions api/v1alpha1/crds/caren.nutanix.com_awsclusterconfigs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -424,6 +424,80 @@ spec:
required:
- name
type: object
volumes:
description: Configuration options for the root and additional storage volume.
properties:
nonroot:
description: Configuration options for non-root storage volumes.
items:
properties:
deviceName:
description: Device name
type: string
encrypted:
description: Encrypted is whether the volume should be encrypted or not.
type: boolean
encryptionKey:
description: |-
EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN.
If Encrypted is set and this is omitted, the default AWS key will be used.
The key must already exist and be accessible by the controller.
type: string
iops:
description: IOPS is the number of IOPS requested for the disk. Not applicable to all types.
format: int64
type: integer
size:
description: |-
Size specifies size (in Gi) of the storage device.
Must be greater than the image snapshot size or 8 (whichever is greater).
format: int64
minimum: 8
type: integer
throughput:
description: Throughput to provision in MiB/s supported for the volume type. Not applicable to all types.
format: int64
type: integer
type:
description: Type is the type of the volume (e.g. gp2, io1, etc...).
type: string
type: object
type: array
root:
description: Configuration options for the root storage volume.
properties:
deviceName:
description: Device name
type: string
encrypted:
description: Encrypted is whether the volume should be encrypted or not.
type: boolean
encryptionKey:
description: |-
EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN.
If Encrypted is set and this is omitted, the default AWS key will be used.
The key must already exist and be accessible by the controller.
type: string
iops:
description: IOPS is the number of IOPS requested for the disk. Not applicable to all types.
format: int64
type: integer
size:
description: |-
Size specifies size (in Gi) of the storage device.
Must be greater than the image snapshot size or 8 (whichever is greater).
format: int64
minimum: 8
type: integer
throughput:
description: Throughput to provision in MiB/s supported for the volume type. Not applicable to all types.
format: int64
type: integer
type:
description: Type is the type of the volume (e.g. gp2, io1, etc...).
type: string
type: object
type: object
type: object
nodeRegistration:
default: {}
Expand Down
83 changes: 83 additions & 0 deletions api/v1alpha1/crds/caren.nutanix.com_awsworkernodeconfigs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,89 @@ spec:
required:
- name
type: object
volumes:
description: Configuration options for the root and additional
storage volume.
properties:
nonroot:
description: Configuration options for non-root storage volumes.
items:
properties:
deviceName:
description: Device name
type: string
encrypted:
description: Encrypted is whether the volume should
be encrypted or not.
type: boolean
encryptionKey:
description: |-
EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN.
If Encrypted is set and this is omitted, the default AWS key will be used.
The key must already exist and be accessible by the controller.
type: string
iops:
description: IOPS is the number of IOPS requested for
the disk. Not applicable to all types.
format: int64
type: integer
size:
description: |-
Size specifies size (in Gi) of the storage device.
Must be greater than the image snapshot size or 8 (whichever is greater).
format: int64
minimum: 8
type: integer
throughput:
description: Throughput to provision in MiB/s supported
for the volume type. Not applicable to all types.
format: int64
type: integer
type:
description: Type is the type of the volume (e.g. gp2,
io1, etc...).
type: string
type: object
type: array
root:
description: Configuration options for the root storage volume.
properties:
deviceName:
description: Device name
type: string
encrypted:
description: Encrypted is whether the volume should be
encrypted or not.
type: boolean
encryptionKey:
description: |-
EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN.
If Encrypted is set and this is omitted, the default AWS key will be used.
The key must already exist and be accessible by the controller.
type: string
iops:
description: IOPS is the number of IOPS requested for
the disk. Not applicable to all types.
format: int64
type: integer
size:
description: |-
Size specifies size (in Gi) of the storage device.
Must be greater than the image snapshot size or 8 (whichever is greater).
format: int64
minimum: 8
type: integer
throughput:
description: Throughput to provision in MiB/s supported
for the volume type. Not applicable to all types.
format: int64
type: integer
type:
description: Type is the type of the volume (e.g. gp2,
io1, etc...).
type: string
type: object
type: object
type: object
nodeRegistration:
default: {}
Expand Down
83 changes: 83 additions & 0 deletions api/v1alpha1/crds/caren.nutanix.com_eksworkernodeconfigs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,89 @@ spec:
required:
- name
type: object
volumes:
description: Configuration options for the root and additional
storage volume.
properties:
nonroot:
description: Configuration options for non-root storage volumes.
items:
properties:
deviceName:
description: Device name
type: string
encrypted:
description: Encrypted is whether the volume should
be encrypted or not.
type: boolean
encryptionKey:
description: |-
EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN.
If Encrypted is set and this is omitted, the default AWS key will be used.
The key must already exist and be accessible by the controller.
type: string
iops:
description: IOPS is the number of IOPS requested for
the disk. Not applicable to all types.
format: int64
type: integer
size:
description: |-
Size specifies size (in Gi) of the storage device.
Must be greater than the image snapshot size or 8 (whichever is greater).
format: int64
minimum: 8
type: integer
throughput:
description: Throughput to provision in MiB/s supported
for the volume type. Not applicable to all types.
format: int64
type: integer
type:
description: Type is the type of the volume (e.g. gp2,
io1, etc...).
type: string
type: object
type: array
root:
description: Configuration options for the root storage volume.
properties:
deviceName:
description: Device name
type: string
encrypted:
description: Encrypted is whether the volume should be
encrypted or not.
type: boolean
encryptionKey:
description: |-
EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN.
If Encrypted is set and this is omitted, the default AWS key will be used.
The key must already exist and be accessible by the controller.
type: string
iops:
description: IOPS is the number of IOPS requested for
the disk. Not applicable to all types.
format: int64
type: integer
size:
description: |-
Size specifies size (in Gi) of the storage device.
Must be greater than the image snapshot size or 8 (whichever is greater).
format: int64
minimum: 8
type: integer
throughput:
description: Throughput to provision in MiB/s supported
for the volume type. Not applicable to all types.
format: int64
type: integer
type:
description: Type is the type of the volume (e.g. gp2,
io1, etc...).
type: string
type: object
type: object
type: object
taints:
description: Taints specifies the taints the Node API object should
Expand Down
45 changes: 45 additions & 0 deletions api/v1alpha1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading