From 607827f15c989959b5afe2c88f9dddceedb1d9f9 Mon Sep 17 00:00:00 2001 From: kisahm Date: Tue, 22 Oct 2024 13:53:42 +0200 Subject: [PATCH] TF module v7.21.0 Signed-off-by: kisahm --- Makefile | 4 +- apis/castai/v1alpha1/zz_autoscaler_types.go | 198 +++- apis/castai/v1alpha1/zz_eksclusterid_types.go | 14 +- apis/castai/v1alpha1/zz_eksuserarn_types.go | 8 +- .../zz_evictoradvancedconfig_types.go | 79 +- apis/castai/v1alpha1/zz_generated.deepcopy.go | 339 +++++++ .../v1alpha1/zz_nodeconfiguration_types.go | 108 ++- apis/castai/v1alpha1/zz_nodetemplate_types.go | 220 ++++- .../v1alpha1/zz_organizationmembers_types.go | 16 +- config/provider-metadata.yaml | 330 ++++++- config/schema.json | 2 +- .../castai/v1alpha1/autoscaler.yaml | 38 + .../castai/v1alpha1/eksclusterid.yaml | 13 + .../castai/v1alpha1/eksuserarn.yaml | 13 + .../v1alpha1/evictoradvancedconfig.yaml | 20 + .../castai/v1alpha1/nodetemplate.yaml | 57 ++ .../castai/v1alpha1/organizationmembers.yaml | 16 + .../crds/castai.upbound.io_autoscalers.yaml | 902 ++++++++++-------- .../crds/castai.upbound.io_eksclusterids.yaml | 13 +- .../crds/castai.upbound.io_eksuserarns.yaml | 8 +- ...tai.upbound.io_evictoradvancedconfigs.yaml | 117 ++- .../castai.upbound.io_nodeconfigurations.yaml | 120 ++- .../crds/castai.upbound.io_nodetemplates.yaml | 862 +++++++++++------ ...castai.upbound.io_organizationmembers.yaml | 60 +- 24 files changed, 2787 insertions(+), 770 deletions(-) create mode 100644 examples-generated/castai/v1alpha1/autoscaler.yaml create mode 100644 examples-generated/castai/v1alpha1/eksclusterid.yaml create mode 100644 examples-generated/castai/v1alpha1/eksuserarn.yaml create mode 100644 examples-generated/castai/v1alpha1/evictoradvancedconfig.yaml create mode 100644 examples-generated/castai/v1alpha1/nodetemplate.yaml create mode 100644 examples-generated/castai/v1alpha1/organizationmembers.yaml diff --git a/Makefile b/Makefile index d9f6f69..9a7fbc5 100644 --- a/Makefile +++ b/Makefile @@ -8,10 +8,10 @@ export TERRAFORM_VERSION ?= 1.3.3 export TERRAFORM_PROVIDER_SOURCE ?= castai/castai export TERRAFORM_PROVIDER_REPO ?= https://github.com/castai/terraform-provider-castai -export TERRAFORM_PROVIDER_VERSION ?= 7.10.0 +export TERRAFORM_PROVIDER_VERSION ?= 7.21.0 export TERRAFORM_PROVIDER_DOWNLOAD_NAME ?= terraform-provider-castai export TERRAFORM_PROVIDER_DOWNLOAD_URL_PREFIX ?= https://releases.hashicorp.com/$(TERRAFORM_PROVIDER_DOWNLOAD_NAME)/$(TERRAFORM_PROVIDER_VERSION) -export TERRAFORM_NATIVE_PROVIDER_BINARY ?= terraform-provider-castai_v7.10.0 +export TERRAFORM_NATIVE_PROVIDER_BINARY ?= terraform-provider-castai_v7.21.0 export TERRAFORM_DOCS_PATH ?= docs/resources diff --git a/apis/castai/v1alpha1/zz_autoscaler_types.go b/apis/castai/v1alpha1/zz_autoscaler_types.go index 0cfaa87..13f1e8a 100755 --- a/apis/castai/v1alpha1/zz_autoscaler_types.go +++ b/apis/castai/v1alpha1/zz_autoscaler_types.go @@ -15,12 +15,15 @@ import ( type AutoScalerInitParameters struct { + // (String, Deprecated) autoscaler policies JSON string to override current autoscaler settings // autoscaler policies JSON string to override current autoscaler settings AutoscalerPoliciesJSON *string `json:"autoscalerPoliciesJson,omitempty" tf:"autoscaler_policies_json,omitempty"` + // (Block List, Max: 1) autoscaler policy definitions to override current autoscaler settings (see below for nested schema) // autoscaler policy definitions to override current autoscaler settings AutoscalerSettings []AutoscalerSettingsInitParameters `json:"autoscalerSettings,omitempty" tf:"autoscaler_settings,omitempty"` + // (String) CAST AI cluster id // CAST AI cluster id // +crossplane:generate:reference:type=github.com/crossplane-contrib/crossplane-provider-castai/apis/castai/v1alpha1.EksClusterId ClusterID *string `json:"clusterId,omitempty" tf:"cluster_id,omitempty"` @@ -36,31 +39,39 @@ type AutoScalerInitParameters struct { type AutoScalerObservation struct { + // (String) computed value to store full policies configuration // computed value to store full policies configuration AutoscalerPolicies *string `json:"autoscalerPolicies,omitempty" tf:"autoscaler_policies,omitempty"` + // (String, Deprecated) autoscaler policies JSON string to override current autoscaler settings // autoscaler policies JSON string to override current autoscaler settings AutoscalerPoliciesJSON *string `json:"autoscalerPoliciesJson,omitempty" tf:"autoscaler_policies_json,omitempty"` + // (Block List, Max: 1) autoscaler policy definitions to override current autoscaler settings (see below for nested schema) // autoscaler policy definitions to override current autoscaler settings AutoscalerSettings []AutoscalerSettingsObservation `json:"autoscalerSettings,omitempty" tf:"autoscaler_settings,omitempty"` + // (String) CAST AI cluster id // CAST AI cluster id ClusterID *string `json:"clusterId,omitempty" tf:"cluster_id,omitempty"` + // (String) The ID of this resource. ID *string `json:"id,omitempty" tf:"id,omitempty"` } type AutoScalerParameters struct { + // (String, Deprecated) autoscaler policies JSON string to override current autoscaler settings // autoscaler policies JSON string to override current autoscaler settings // +kubebuilder:validation:Optional AutoscalerPoliciesJSON *string `json:"autoscalerPoliciesJson,omitempty" tf:"autoscaler_policies_json,omitempty"` + // (Block List, Max: 1) autoscaler policy definitions to override current autoscaler settings (see below for nested schema) // autoscaler policy definitions to override current autoscaler settings // +kubebuilder:validation:Optional AutoscalerSettings []AutoscalerSettingsParameters `json:"autoscalerSettings,omitempty" tf:"autoscaler_settings,omitempty"` + // (String) CAST AI cluster id // CAST AI cluster id // +crossplane:generate:reference:type=github.com/crossplane-contrib/crossplane-provider-castai/apis/castai/v1alpha1.EksClusterId // +kubebuilder:validation:Optional @@ -77,78 +88,99 @@ type AutoScalerParameters struct { type AutoscalerSettingsInitParameters struct { + // (Block List, Max: 1) defines minimum and maximum amount of CPU the cluster can have. (see below for nested schema) // defines minimum and maximum amount of CPU the cluster can have. ClusterLimits []ClusterLimitsInitParameters `json:"clusterLimits,omitempty" tf:"cluster_limits,omitempty"` + // (Boolean) enable/disable autoscaler policies // enable/disable autoscaler policies Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + // (Boolean) run autoscaler in scoped mode. Only marked pods and nodes will be considered. // run autoscaler in scoped mode. Only marked pods and nodes will be considered. IsScopedMode *bool `json:"isScopedMode,omitempty" tf:"is_scoped_mode,omitempty"` + // (Block List, Max: 1) node downscaler defines policies for removing nodes based on the configured conditions. (see below for nested schema) // node downscaler defines policies for removing nodes based on the configured conditions. NodeDownscaler []NodeDownscalerInitParameters `json:"nodeDownscaler,omitempty" tf:"node_downscaler,omitempty"` + // (Boolean) marks whether partial matching should be used when deciding which custom node template to select. // marks whether partial matching should be used when deciding which custom node template to select. NodeTemplatesPartialMatchingEnabled *bool `json:"nodeTemplatesPartialMatchingEnabled,omitempty" tf:"node_templates_partial_matching_enabled,omitempty"` + // (Block List, Max: 1) policy defining whether autoscaler can use spot instances for provisioning additional workloads. (see below for nested schema) // policy defining whether autoscaler can use spot instances for provisioning additional workloads. SpotInstances []SpotInstancesInitParameters `json:"spotInstances,omitempty" tf:"spot_instances,omitempty"` + // (Block List, Max: 1) policy defining autoscaler's behavior when unschedulable pods were detected. (see below for nested schema) // policy defining autoscaler's behavior when unschedulable pods were detected. UnschedulablePods []UnschedulablePodsInitParameters `json:"unschedulablePods,omitempty" tf:"unschedulable_pods,omitempty"` } type AutoscalerSettingsObservation struct { + // (Block List, Max: 1) defines minimum and maximum amount of CPU the cluster can have. (see below for nested schema) // defines minimum and maximum amount of CPU the cluster can have. ClusterLimits []ClusterLimitsObservation `json:"clusterLimits,omitempty" tf:"cluster_limits,omitempty"` + // (Boolean) enable/disable autoscaler policies // enable/disable autoscaler policies Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + // (Boolean) run autoscaler in scoped mode. Only marked pods and nodes will be considered. // run autoscaler in scoped mode. Only marked pods and nodes will be considered. IsScopedMode *bool `json:"isScopedMode,omitempty" tf:"is_scoped_mode,omitempty"` + // (Block List, Max: 1) node downscaler defines policies for removing nodes based on the configured conditions. (see below for nested schema) // node downscaler defines policies for removing nodes based on the configured conditions. NodeDownscaler []NodeDownscalerObservation `json:"nodeDownscaler,omitempty" tf:"node_downscaler,omitempty"` + // (Boolean) marks whether partial matching should be used when deciding which custom node template to select. // marks whether partial matching should be used when deciding which custom node template to select. NodeTemplatesPartialMatchingEnabled *bool `json:"nodeTemplatesPartialMatchingEnabled,omitempty" tf:"node_templates_partial_matching_enabled,omitempty"` + // (Block List, Max: 1) policy defining whether autoscaler can use spot instances for provisioning additional workloads. (see below for nested schema) // policy defining whether autoscaler can use spot instances for provisioning additional workloads. SpotInstances []SpotInstancesObservation `json:"spotInstances,omitempty" tf:"spot_instances,omitempty"` + // (Block List, Max: 1) policy defining autoscaler's behavior when unschedulable pods were detected. (see below for nested schema) // policy defining autoscaler's behavior when unschedulable pods were detected. UnschedulablePods []UnschedulablePodsObservation `json:"unschedulablePods,omitempty" tf:"unschedulable_pods,omitempty"` } type AutoscalerSettingsParameters struct { + // (Block List, Max: 1) defines minimum and maximum amount of CPU the cluster can have. (see below for nested schema) // defines minimum and maximum amount of CPU the cluster can have. // +kubebuilder:validation:Optional ClusterLimits []ClusterLimitsParameters `json:"clusterLimits,omitempty" tf:"cluster_limits,omitempty"` + // (Boolean) enable/disable autoscaler policies // enable/disable autoscaler policies // +kubebuilder:validation:Optional Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + // (Boolean) run autoscaler in scoped mode. Only marked pods and nodes will be considered. // run autoscaler in scoped mode. Only marked pods and nodes will be considered. // +kubebuilder:validation:Optional IsScopedMode *bool `json:"isScopedMode,omitempty" tf:"is_scoped_mode,omitempty"` + // (Block List, Max: 1) node downscaler defines policies for removing nodes based on the configured conditions. (see below for nested schema) // node downscaler defines policies for removing nodes based on the configured conditions. // +kubebuilder:validation:Optional NodeDownscaler []NodeDownscalerParameters `json:"nodeDownscaler,omitempty" tf:"node_downscaler,omitempty"` + // (Boolean) marks whether partial matching should be used when deciding which custom node template to select. // marks whether partial matching should be used when deciding which custom node template to select. // +kubebuilder:validation:Optional NodeTemplatesPartialMatchingEnabled *bool `json:"nodeTemplatesPartialMatchingEnabled,omitempty" tf:"node_templates_partial_matching_enabled,omitempty"` + // (Block List, Max: 1) policy defining whether autoscaler can use spot instances for provisioning additional workloads. (see below for nested schema) // policy defining whether autoscaler can use spot instances for provisioning additional workloads. // +kubebuilder:validation:Optional SpotInstances []SpotInstancesParameters `json:"spotInstances,omitempty" tf:"spot_instances,omitempty"` + // (Block List, Max: 1) policy defining autoscaler's behavior when unschedulable pods were detected. (see below for nested schema) // policy defining autoscaler's behavior when unschedulable pods were detected. // +kubebuilder:validation:Optional UnschedulablePods []UnschedulablePodsParameters `json:"unschedulablePods,omitempty" tf:"unschedulable_pods,omitempty"` @@ -156,28 +188,34 @@ type AutoscalerSettingsParameters struct { type CPUInitParameters struct { + // (Number) defines the maximum allowed amount of vCPUs in the whole cluster. // defines the maximum allowed amount of vCPUs in the whole cluster. MaxCores *float64 `json:"maxCores,omitempty" tf:"max_cores,omitempty"` + // (Number) defines the minimum allowed amount of CPUs in the whole cluster. // defines the minimum allowed amount of CPUs in the whole cluster. MinCores *float64 `json:"minCores,omitempty" tf:"min_cores,omitempty"` } type CPUObservation struct { + // (Number) defines the maximum allowed amount of vCPUs in the whole cluster. // defines the maximum allowed amount of vCPUs in the whole cluster. MaxCores *float64 `json:"maxCores,omitempty" tf:"max_cores,omitempty"` + // (Number) defines the minimum allowed amount of CPUs in the whole cluster. // defines the minimum allowed amount of CPUs in the whole cluster. MinCores *float64 `json:"minCores,omitempty" tf:"min_cores,omitempty"` } type CPUParameters struct { + // (Number) defines the maximum allowed amount of vCPUs in the whole cluster. // defines the maximum allowed amount of vCPUs in the whole cluster. // +kubebuilder:validation:Optional MaxCores *float64 `json:"maxCores,omitempty" tf:"max_cores,omitempty"` + // (Number) defines the minimum allowed amount of CPUs in the whole cluster. // defines the minimum allowed amount of CPUs in the whole cluster. // +kubebuilder:validation:Optional MinCores *float64 `json:"minCores,omitempty" tf:"min_cores,omitempty"` @@ -185,28 +223,34 @@ type CPUParameters struct { type ClusterLimitsInitParameters struct { + // (Block List, Max: 1) defines the minimum and maximum amount of CPUs for cluster's worker nodes. (see below for nested schema) // defines the minimum and maximum amount of CPUs for cluster's worker nodes. CPU []CPUInitParameters `json:"cpu,omitempty" tf:"cpu,omitempty"` + // (Boolean) enable/disable autoscaler policies // enable/disable cluster size limits policy. Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` } type ClusterLimitsObservation struct { + // (Block List, Max: 1) defines the minimum and maximum amount of CPUs for cluster's worker nodes. (see below for nested schema) // defines the minimum and maximum amount of CPUs for cluster's worker nodes. CPU []CPUObservation `json:"cpu,omitempty" tf:"cpu,omitempty"` + // (Boolean) enable/disable autoscaler policies // enable/disable cluster size limits policy. Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` } type ClusterLimitsParameters struct { + // (Block List, Max: 1) defines the minimum and maximum amount of CPUs for cluster's worker nodes. (see below for nested schema) // defines the minimum and maximum amount of CPUs for cluster's worker nodes. // +kubebuilder:validation:Optional CPU []CPUParameters `json:"cpu,omitempty" tf:"cpu,omitempty"` + // (Boolean) enable/disable autoscaler policies // enable/disable cluster size limits policy. // +kubebuilder:validation:Optional Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` @@ -214,28 +258,34 @@ type ClusterLimitsParameters struct { type EmptyNodesInitParameters struct { + // (Number) period (in seconds) to wait before removing the node. Might be useful to control the aggressiveness of the downscaler. // period (in seconds) to wait before removing the node. Might be useful to control the aggressiveness of the downscaler. DelaySeconds *float64 `json:"delaySeconds,omitempty" tf:"delay_seconds,omitempty"` + // (Boolean) enable/disable autoscaler policies // enable/disable the empty worker nodes policy. Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` } type EmptyNodesObservation struct { + // (Number) period (in seconds) to wait before removing the node. Might be useful to control the aggressiveness of the downscaler. // period (in seconds) to wait before removing the node. Might be useful to control the aggressiveness of the downscaler. DelaySeconds *float64 `json:"delaySeconds,omitempty" tf:"delay_seconds,omitempty"` + // (Boolean) enable/disable autoscaler policies // enable/disable the empty worker nodes policy. Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` } type EmptyNodesParameters struct { + // (Number) period (in seconds) to wait before removing the node. Might be useful to control the aggressiveness of the downscaler. // period (in seconds) to wait before removing the node. Might be useful to control the aggressiveness of the downscaler. // +kubebuilder:validation:Optional DelaySeconds *float64 `json:"delaySeconds,omitempty" tf:"delay_seconds,omitempty"` + // (Boolean) enable/disable autoscaler policies // enable/disable the empty worker nodes policy. // +kubebuilder:validation:Optional Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` @@ -243,88 +293,112 @@ type EmptyNodesParameters struct { type EvictorInitParameters struct { + // (Boolean) enable/disable aggressive mode. By default, Evictor does not target nodes that are running unreplicated pods. This mode will make the Evictor start considering application with just a single replica. // enable/disable aggressive mode. By default, Evictor does not target nodes that are running unreplicated pods. This mode will make the Evictor start considering application with just a single replica. AggressiveMode *bool `json:"aggressiveMode,omitempty" tf:"aggressive_mode,omitempty"` + // and-drain operations. // configure the interval duration between Evictor operations. This property can be used to lower or raise the frequency of the Evictor's find-and-drain operations. CycleInterval *string `json:"cycleInterval,omitempty" tf:"cycle_interval,omitempty"` + // run. This property allows you to prevent the Evictor from carrying any operations out and preview the actions it would take. // enable/disable dry-run. This property allows you to prevent the Evictor from carrying any operations out and preview the actions it would take. DryRun *bool `json:"dryRun,omitempty" tf:"dry_run,omitempty"` + // (Boolean) enable/disable autoscaler policies // enable/disable the Evictor policy. This will either install or uninstall the Evictor component in your cluster. Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + // (Boolean) if enabled then Evictor will attempt to evict pods that have pod disruption budgets configured. // if enabled then Evictor will attempt to evict pods that have pod disruption budgets configured. IgnorePodDisruptionBudgets *bool `json:"ignorePodDisruptionBudgets,omitempty" tf:"ignore_pod_disruption_budgets,omitempty"` + // (Number) configure the node grace period which controls the duration which must pass after a node has been created before Evictor starts considering that node. // configure the node grace period which controls the duration which must pass after a node has been created before Evictor starts considering that node. NodeGracePeriodMinutes *float64 `json:"nodeGracePeriodMinutes,omitempty" tf:"node_grace_period_minutes,omitempty"` + // (String) configure the pod eviction failure back off interval. If pod eviction fails then Evictor will attempt to evict it again after the amount of time specified here. // configure the pod eviction failure back off interval. If pod eviction fails then Evictor will attempt to evict it again after the amount of time specified here. PodEvictionFailureBackOffInterval *string `json:"podEvictionFailureBackOffInterval,omitempty" tf:"pod_eviction_failure_back_off_interval,omitempty"` + // (Boolean) enable/disable scoped mode. By default, Evictor targets all nodes in the cluster. This mode will constrain it to just the nodes which were created by CAST AI. // enable/disable scoped mode. By default, Evictor targets all nodes in the cluster. This mode will constrain it to just the nodes which were created by CAST AI. ScopedMode *bool `json:"scopedMode,omitempty" tf:"scoped_mode,omitempty"` } type EvictorObservation struct { + // (Boolean) enable/disable aggressive mode. By default, Evictor does not target nodes that are running unreplicated pods. This mode will make the Evictor start considering application with just a single replica. // enable/disable aggressive mode. By default, Evictor does not target nodes that are running unreplicated pods. This mode will make the Evictor start considering application with just a single replica. AggressiveMode *bool `json:"aggressiveMode,omitempty" tf:"aggressive_mode,omitempty"` + // and-drain operations. // configure the interval duration between Evictor operations. This property can be used to lower or raise the frequency of the Evictor's find-and-drain operations. CycleInterval *string `json:"cycleInterval,omitempty" tf:"cycle_interval,omitempty"` + // run. This property allows you to prevent the Evictor from carrying any operations out and preview the actions it would take. // enable/disable dry-run. This property allows you to prevent the Evictor from carrying any operations out and preview the actions it would take. DryRun *bool `json:"dryRun,omitempty" tf:"dry_run,omitempty"` + // (Boolean) enable/disable autoscaler policies // enable/disable the Evictor policy. This will either install or uninstall the Evictor component in your cluster. Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + // (Boolean) if enabled then Evictor will attempt to evict pods that have pod disruption budgets configured. // if enabled then Evictor will attempt to evict pods that have pod disruption budgets configured. IgnorePodDisruptionBudgets *bool `json:"ignorePodDisruptionBudgets,omitempty" tf:"ignore_pod_disruption_budgets,omitempty"` + // (Number) configure the node grace period which controls the duration which must pass after a node has been created before Evictor starts considering that node. // configure the node grace period which controls the duration which must pass after a node has been created before Evictor starts considering that node. NodeGracePeriodMinutes *float64 `json:"nodeGracePeriodMinutes,omitempty" tf:"node_grace_period_minutes,omitempty"` + // (String) configure the pod eviction failure back off interval. If pod eviction fails then Evictor will attempt to evict it again after the amount of time specified here. // configure the pod eviction failure back off interval. If pod eviction fails then Evictor will attempt to evict it again after the amount of time specified here. PodEvictionFailureBackOffInterval *string `json:"podEvictionFailureBackOffInterval,omitempty" tf:"pod_eviction_failure_back_off_interval,omitempty"` + // (Boolean) enable/disable scoped mode. By default, Evictor targets all nodes in the cluster. This mode will constrain it to just the nodes which were created by CAST AI. // enable/disable scoped mode. By default, Evictor targets all nodes in the cluster. This mode will constrain it to just the nodes which were created by CAST AI. ScopedMode *bool `json:"scopedMode,omitempty" tf:"scoped_mode,omitempty"` } type EvictorParameters struct { + // (Boolean) enable/disable aggressive mode. By default, Evictor does not target nodes that are running unreplicated pods. This mode will make the Evictor start considering application with just a single replica. // enable/disable aggressive mode. By default, Evictor does not target nodes that are running unreplicated pods. This mode will make the Evictor start considering application with just a single replica. // +kubebuilder:validation:Optional AggressiveMode *bool `json:"aggressiveMode,omitempty" tf:"aggressive_mode,omitempty"` + // and-drain operations. // configure the interval duration between Evictor operations. This property can be used to lower or raise the frequency of the Evictor's find-and-drain operations. // +kubebuilder:validation:Optional CycleInterval *string `json:"cycleInterval,omitempty" tf:"cycle_interval,omitempty"` + // run. This property allows you to prevent the Evictor from carrying any operations out and preview the actions it would take. // enable/disable dry-run. This property allows you to prevent the Evictor from carrying any operations out and preview the actions it would take. // +kubebuilder:validation:Optional DryRun *bool `json:"dryRun,omitempty" tf:"dry_run,omitempty"` + // (Boolean) enable/disable autoscaler policies // enable/disable the Evictor policy. This will either install or uninstall the Evictor component in your cluster. // +kubebuilder:validation:Optional Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + // (Boolean) if enabled then Evictor will attempt to evict pods that have pod disruption budgets configured. // if enabled then Evictor will attempt to evict pods that have pod disruption budgets configured. // +kubebuilder:validation:Optional IgnorePodDisruptionBudgets *bool `json:"ignorePodDisruptionBudgets,omitempty" tf:"ignore_pod_disruption_budgets,omitempty"` + // (Number) configure the node grace period which controls the duration which must pass after a node has been created before Evictor starts considering that node. // configure the node grace period which controls the duration which must pass after a node has been created before Evictor starts considering that node. // +kubebuilder:validation:Optional NodeGracePeriodMinutes *float64 `json:"nodeGracePeriodMinutes,omitempty" tf:"node_grace_period_minutes,omitempty"` + // (String) configure the pod eviction failure back off interval. If pod eviction fails then Evictor will attempt to evict it again after the amount of time specified here. // configure the pod eviction failure back off interval. If pod eviction fails then Evictor will attempt to evict it again after the amount of time specified here. // +kubebuilder:validation:Optional PodEvictionFailureBackOffInterval *string `json:"podEvictionFailureBackOffInterval,omitempty" tf:"pod_eviction_failure_back_off_interval,omitempty"` + // (Boolean) enable/disable scoped mode. By default, Evictor targets all nodes in the cluster. This mode will constrain it to just the nodes which were created by CAST AI. // enable/disable scoped mode. By default, Evictor targets all nodes in the cluster. This mode will constrain it to just the nodes which were created by CAST AI. // +kubebuilder:validation:Optional ScopedMode *bool `json:"scopedMode,omitempty" tf:"scoped_mode,omitempty"` @@ -332,38 +406,47 @@ type EvictorParameters struct { type HeadroomInitParameters struct { + // (Number) defines percentage of additional CPU capacity to be added. // defines percentage of additional CPU capacity to be added. CPUPercentage *float64 `json:"cpuPercentage,omitempty" tf:"cpu_percentage,omitempty"` + // (Boolean) enable/disable autoscaler policies // enable/disable headroom policy. Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + // (Number) defines percentage of additional memory capacity to be added. // defines percentage of additional memory capacity to be added. MemoryPercentage *float64 `json:"memoryPercentage,omitempty" tf:"memory_percentage,omitempty"` } type HeadroomObservation struct { + // (Number) defines percentage of additional CPU capacity to be added. // defines percentage of additional CPU capacity to be added. CPUPercentage *float64 `json:"cpuPercentage,omitempty" tf:"cpu_percentage,omitempty"` + // (Boolean) enable/disable autoscaler policies // enable/disable headroom policy. Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + // (Number) defines percentage of additional memory capacity to be added. // defines percentage of additional memory capacity to be added. MemoryPercentage *float64 `json:"memoryPercentage,omitempty" tf:"memory_percentage,omitempty"` } type HeadroomParameters struct { + // (Number) defines percentage of additional CPU capacity to be added. // defines percentage of additional CPU capacity to be added. // +kubebuilder:validation:Optional CPUPercentage *float64 `json:"cpuPercentage,omitempty" tf:"cpu_percentage,omitempty"` + // (Boolean) enable/disable autoscaler policies // enable/disable headroom policy. // +kubebuilder:validation:Optional Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + // (Number) defines percentage of additional memory capacity to be added. // defines percentage of additional memory capacity to be added. // +kubebuilder:validation:Optional MemoryPercentage *float64 `json:"memoryPercentage,omitempty" tf:"memory_percentage,omitempty"` @@ -371,38 +454,47 @@ type HeadroomParameters struct { type HeadroomSpotInitParameters struct { + // (Number) defines percentage of additional CPU capacity to be added. // defines percentage of additional CPU capacity to be added. CPUPercentage *float64 `json:"cpuPercentage,omitempty" tf:"cpu_percentage,omitempty"` + // (Boolean) enable/disable autoscaler policies // enable/disable headroom_spot policy. Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + // (Number) defines percentage of additional memory capacity to be added. // defines percentage of additional memory capacity to be added. MemoryPercentage *float64 `json:"memoryPercentage,omitempty" tf:"memory_percentage,omitempty"` } type HeadroomSpotObservation struct { + // (Number) defines percentage of additional CPU capacity to be added. // defines percentage of additional CPU capacity to be added. CPUPercentage *float64 `json:"cpuPercentage,omitempty" tf:"cpu_percentage,omitempty"` + // (Boolean) enable/disable autoscaler policies // enable/disable headroom_spot policy. Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + // (Number) defines percentage of additional memory capacity to be added. // defines percentage of additional memory capacity to be added. MemoryPercentage *float64 `json:"memoryPercentage,omitempty" tf:"memory_percentage,omitempty"` } type HeadroomSpotParameters struct { + // (Number) defines percentage of additional CPU capacity to be added. // defines percentage of additional CPU capacity to be added. // +kubebuilder:validation:Optional CPUPercentage *float64 `json:"cpuPercentage,omitempty" tf:"cpu_percentage,omitempty"` + // (Boolean) enable/disable autoscaler policies // enable/disable headroom_spot policy. // +kubebuilder:validation:Optional Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + // (Number) defines percentage of additional memory capacity to be added. // defines percentage of additional memory capacity to be added. // +kubebuilder:validation:Optional MemoryPercentage *float64 `json:"memoryPercentage,omitempty" tf:"memory_percentage,omitempty"` @@ -410,58 +502,73 @@ type HeadroomSpotParameters struct { type NodeConstraintsInitParameters struct { + // (Boolean) enable/disable autoscaler policies // enable/disable node constraints policy. Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + // (Number) defines max CPU cores for the node to pick. // defines max CPU cores for the node to pick. MaxCPUCores *float64 `json:"maxCpuCores,omitempty" tf:"max_cpu_cores,omitempty"` + // (Number) defines max RAM in MiB for the node to pick. // defines max RAM in MiB for the node to pick. MaxRAMMib *float64 `json:"maxRamMib,omitempty" tf:"max_ram_mib,omitempty"` + // (Number) defines min CPU cores for the node to pick. // defines min CPU cores for the node to pick. MinCPUCores *float64 `json:"minCpuCores,omitempty" tf:"min_cpu_cores,omitempty"` + // (Number) defines min RAM in MiB for the node to pick. // defines min RAM in MiB for the node to pick. MinRAMMib *float64 `json:"minRamMib,omitempty" tf:"min_ram_mib,omitempty"` } type NodeConstraintsObservation struct { + // (Boolean) enable/disable autoscaler policies // enable/disable node constraints policy. Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + // (Number) defines max CPU cores for the node to pick. // defines max CPU cores for the node to pick. MaxCPUCores *float64 `json:"maxCpuCores,omitempty" tf:"max_cpu_cores,omitempty"` + // (Number) defines max RAM in MiB for the node to pick. // defines max RAM in MiB for the node to pick. MaxRAMMib *float64 `json:"maxRamMib,omitempty" tf:"max_ram_mib,omitempty"` + // (Number) defines min CPU cores for the node to pick. // defines min CPU cores for the node to pick. MinCPUCores *float64 `json:"minCpuCores,omitempty" tf:"min_cpu_cores,omitempty"` + // (Number) defines min RAM in MiB for the node to pick. // defines min RAM in MiB for the node to pick. MinRAMMib *float64 `json:"minRamMib,omitempty" tf:"min_ram_mib,omitempty"` } type NodeConstraintsParameters struct { + // (Boolean) enable/disable autoscaler policies // enable/disable node constraints policy. // +kubebuilder:validation:Optional Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + // (Number) defines max CPU cores for the node to pick. // defines max CPU cores for the node to pick. // +kubebuilder:validation:Optional MaxCPUCores *float64 `json:"maxCpuCores,omitempty" tf:"max_cpu_cores,omitempty"` + // (Number) defines max RAM in MiB for the node to pick. // defines max RAM in MiB for the node to pick. // +kubebuilder:validation:Optional MaxRAMMib *float64 `json:"maxRamMib,omitempty" tf:"max_ram_mib,omitempty"` + // (Number) defines min CPU cores for the node to pick. // defines min CPU cores for the node to pick. // +kubebuilder:validation:Optional MinCPUCores *float64 `json:"minCpuCores,omitempty" tf:"min_cpu_cores,omitempty"` + // (Number) defines min RAM in MiB for the node to pick. // defines min RAM in MiB for the node to pick. // +kubebuilder:validation:Optional MinRAMMib *float64 `json:"minRamMib,omitempty" tf:"min_ram_mib,omitempty"` @@ -469,67 +576,104 @@ type NodeConstraintsParameters struct { type NodeDownscalerInitParameters struct { + // (Block List, Max: 1) defines whether Node Downscaler should opt in for removing empty worker nodes when possible. (see below for nested schema) // defines whether Node Downscaler should opt in for removing empty worker nodes when possible. EmptyNodes []EmptyNodesInitParameters `json:"emptyNodes,omitempty" tf:"empty_nodes,omitempty"` + // (Boolean) enable/disable autoscaler policies // enable/disable node downscaler policy. Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + // (Block List, Max: 1) defines the CAST AI Evictor component settings. Evictor watches the pods running in your cluster and looks for ways to compact them into fewer nodes, making nodes empty, which will be removed by the empty worker nodes policy. (see below for nested schema) // defines the CAST AI Evictor component settings. Evictor watches the pods running in your cluster and looks for ways to compact them into fewer nodes, making nodes empty, which will be removed by the empty worker nodes policy. Evictor []EvictorInitParameters `json:"evictor,omitempty" tf:"evictor,omitempty"` } type NodeDownscalerObservation struct { + // (Block List, Max: 1) defines whether Node Downscaler should opt in for removing empty worker nodes when possible. (see below for nested schema) // defines whether Node Downscaler should opt in for removing empty worker nodes when possible. EmptyNodes []EmptyNodesObservation `json:"emptyNodes,omitempty" tf:"empty_nodes,omitempty"` + // (Boolean) enable/disable autoscaler policies // enable/disable node downscaler policy. Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + // (Block List, Max: 1) defines the CAST AI Evictor component settings. Evictor watches the pods running in your cluster and looks for ways to compact them into fewer nodes, making nodes empty, which will be removed by the empty worker nodes policy. (see below for nested schema) // defines the CAST AI Evictor component settings. Evictor watches the pods running in your cluster and looks for ways to compact them into fewer nodes, making nodes empty, which will be removed by the empty worker nodes policy. Evictor []EvictorObservation `json:"evictor,omitempty" tf:"evictor,omitempty"` } type NodeDownscalerParameters struct { + // (Block List, Max: 1) defines whether Node Downscaler should opt in for removing empty worker nodes when possible. (see below for nested schema) // defines whether Node Downscaler should opt in for removing empty worker nodes when possible. // +kubebuilder:validation:Optional EmptyNodes []EmptyNodesParameters `json:"emptyNodes,omitempty" tf:"empty_nodes,omitempty"` + // (Boolean) enable/disable autoscaler policies // enable/disable node downscaler policy. // +kubebuilder:validation:Optional Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + // (Block List, Max: 1) defines the CAST AI Evictor component settings. Evictor watches the pods running in your cluster and looks for ways to compact them into fewer nodes, making nodes empty, which will be removed by the empty worker nodes policy. (see below for nested schema) // defines the CAST AI Evictor component settings. Evictor watches the pods running in your cluster and looks for ways to compact them into fewer nodes, making nodes empty, which will be removed by the empty worker nodes policy. // +kubebuilder:validation:Optional Evictor []EvictorParameters `json:"evictor,omitempty" tf:"evictor,omitempty"` } +type PodPinnerInitParameters struct { + + // (Boolean) enable/disable autoscaler policies + // enable/disable the Pod Pinner component's automatic management in your cluster. Default: enabled. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type PodPinnerObservation struct { + + // (Boolean) enable/disable autoscaler policies + // enable/disable the Pod Pinner component's automatic management in your cluster. Default: enabled. + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + +type PodPinnerParameters struct { + + // (Boolean) enable/disable autoscaler policies + // enable/disable the Pod Pinner component's automatic management in your cluster. Default: enabled. + // +kubebuilder:validation:Optional + Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` +} + type SpotBackupsInitParameters struct { + // (Boolean) enable/disable autoscaler policies // enable/disable spot backups policy. Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + // (Number) defines interval on how often spot backups restore to real spot should occur. // defines interval on how often spot backups restore to real spot should occur. SpotBackupRestoreRateSeconds *float64 `json:"spotBackupRestoreRateSeconds,omitempty" tf:"spot_backup_restore_rate_seconds,omitempty"` } type SpotBackupsObservation struct { + // (Boolean) enable/disable autoscaler policies // enable/disable spot backups policy. Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + // (Number) defines interval on how often spot backups restore to real spot should occur. // defines interval on how often spot backups restore to real spot should occur. SpotBackupRestoreRateSeconds *float64 `json:"spotBackupRestoreRateSeconds,omitempty" tf:"spot_backup_restore_rate_seconds,omitempty"` } type SpotBackupsParameters struct { + // (Boolean) enable/disable autoscaler policies // enable/disable spot backups policy. // +kubebuilder:validation:Optional Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + // (Number) defines interval on how often spot backups restore to real spot should occur. // defines interval on how often spot backups restore to real spot should occur. // +kubebuilder:validation:Optional SpotBackupRestoreRateSeconds *float64 `json:"spotBackupRestoreRateSeconds,omitempty" tf:"spot_backup_restore_rate_seconds,omitempty"` @@ -537,68 +681,86 @@ type SpotBackupsParameters struct { type SpotInstancesInitParameters struct { + // (Boolean) enable/disable autoscaler policies // enable/disable spot instances policy. Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + // (Number) max allowed reclaim rate when choosing spot instance type. E.g. if the value is 10%, instance types having 10% or higher reclaim rate will not be considered. Set to zero to use all instance types regardless of reclaim rate. // max allowed reclaim rate when choosing spot instance type. E.g. if the value is 10%, instance types having 10% or higher reclaim rate will not be considered. Set to zero to use all instance types regardless of reclaim rate. MaxReclaimRate *float64 `json:"maxReclaimRate,omitempty" tf:"max_reclaim_rate,omitempty"` + // (Block List, Max: 1) policy defining whether autoscaler can use spot backups instead of spot instances when spot instances are not available. (see below for nested schema) // policy defining whether autoscaler can use spot backups instead of spot instances when spot instances are not available. SpotBackups []SpotBackupsInitParameters `json:"spotBackups,omitempty" tf:"spot_backups,omitempty"` + // (Boolean) enable/disable spot diversity policy. When enabled, autoscaler will try to balance between diverse and cost optimal instance types. // enable/disable spot diversity policy. When enabled, autoscaler will try to balance between diverse and cost optimal instance types. SpotDiversityEnabled *bool `json:"spotDiversityEnabled,omitempty" tf:"spot_diversity_enabled,omitempty"` + // (Number) allowed node configuration price increase when diversifying instance types. E.g. if the value is 10%, then the overall price of diversified instance types can be 10% higher than the price of the optimal configuration. // allowed node configuration price increase when diversifying instance types. E.g. if the value is 10%, then the overall price of diversified instance types can be 10% higher than the price of the optimal configuration. SpotDiversityPriceIncreaseLimit *float64 `json:"spotDiversityPriceIncreaseLimit,omitempty" tf:"spot_diversity_price_increase_limit,omitempty"` + // (Block List, Max: 1) configure the handling of SPOT interruption predictions. (see below for nested schema) // configure the handling of SPOT interruption predictions. SpotInterruptionPredictions []SpotInterruptionPredictionsInitParameters `json:"spotInterruptionPredictions,omitempty" tf:"spot_interruption_predictions,omitempty"` } type SpotInstancesObservation struct { + // (Boolean) enable/disable autoscaler policies // enable/disable spot instances policy. Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + // (Number) max allowed reclaim rate when choosing spot instance type. E.g. if the value is 10%, instance types having 10% or higher reclaim rate will not be considered. Set to zero to use all instance types regardless of reclaim rate. // max allowed reclaim rate when choosing spot instance type. E.g. if the value is 10%, instance types having 10% or higher reclaim rate will not be considered. Set to zero to use all instance types regardless of reclaim rate. MaxReclaimRate *float64 `json:"maxReclaimRate,omitempty" tf:"max_reclaim_rate,omitempty"` + // (Block List, Max: 1) policy defining whether autoscaler can use spot backups instead of spot instances when spot instances are not available. (see below for nested schema) // policy defining whether autoscaler can use spot backups instead of spot instances when spot instances are not available. SpotBackups []SpotBackupsObservation `json:"spotBackups,omitempty" tf:"spot_backups,omitempty"` + // (Boolean) enable/disable spot diversity policy. When enabled, autoscaler will try to balance between diverse and cost optimal instance types. // enable/disable spot diversity policy. When enabled, autoscaler will try to balance between diverse and cost optimal instance types. SpotDiversityEnabled *bool `json:"spotDiversityEnabled,omitempty" tf:"spot_diversity_enabled,omitempty"` + // (Number) allowed node configuration price increase when diversifying instance types. E.g. if the value is 10%, then the overall price of diversified instance types can be 10% higher than the price of the optimal configuration. // allowed node configuration price increase when diversifying instance types. E.g. if the value is 10%, then the overall price of diversified instance types can be 10% higher than the price of the optimal configuration. SpotDiversityPriceIncreaseLimit *float64 `json:"spotDiversityPriceIncreaseLimit,omitempty" tf:"spot_diversity_price_increase_limit,omitempty"` + // (Block List, Max: 1) configure the handling of SPOT interruption predictions. (see below for nested schema) // configure the handling of SPOT interruption predictions. SpotInterruptionPredictions []SpotInterruptionPredictionsObservation `json:"spotInterruptionPredictions,omitempty" tf:"spot_interruption_predictions,omitempty"` } type SpotInstancesParameters struct { + // (Boolean) enable/disable autoscaler policies // enable/disable spot instances policy. // +kubebuilder:validation:Optional Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + // (Number) max allowed reclaim rate when choosing spot instance type. E.g. if the value is 10%, instance types having 10% or higher reclaim rate will not be considered. Set to zero to use all instance types regardless of reclaim rate. // max allowed reclaim rate when choosing spot instance type. E.g. if the value is 10%, instance types having 10% or higher reclaim rate will not be considered. Set to zero to use all instance types regardless of reclaim rate. // +kubebuilder:validation:Optional MaxReclaimRate *float64 `json:"maxReclaimRate,omitempty" tf:"max_reclaim_rate,omitempty"` + // (Block List, Max: 1) policy defining whether autoscaler can use spot backups instead of spot instances when spot instances are not available. (see below for nested schema) // policy defining whether autoscaler can use spot backups instead of spot instances when spot instances are not available. // +kubebuilder:validation:Optional SpotBackups []SpotBackupsParameters `json:"spotBackups,omitempty" tf:"spot_backups,omitempty"` + // (Boolean) enable/disable spot diversity policy. When enabled, autoscaler will try to balance between diverse and cost optimal instance types. // enable/disable spot diversity policy. When enabled, autoscaler will try to balance between diverse and cost optimal instance types. // +kubebuilder:validation:Optional SpotDiversityEnabled *bool `json:"spotDiversityEnabled,omitempty" tf:"spot_diversity_enabled,omitempty"` + // (Number) allowed node configuration price increase when diversifying instance types. E.g. if the value is 10%, then the overall price of diversified instance types can be 10% higher than the price of the optimal configuration. // allowed node configuration price increase when diversifying instance types. E.g. if the value is 10%, then the overall price of diversified instance types can be 10% higher than the price of the optimal configuration. // +kubebuilder:validation:Optional SpotDiversityPriceIncreaseLimit *float64 `json:"spotDiversityPriceIncreaseLimit,omitempty" tf:"spot_diversity_price_increase_limit,omitempty"` + // (Block List, Max: 1) configure the handling of SPOT interruption predictions. (see below for nested schema) // configure the handling of SPOT interruption predictions. // +kubebuilder:validation:Optional SpotInterruptionPredictions []SpotInterruptionPredictionsParameters `json:"spotInterruptionPredictions,omitempty" tf:"spot_interruption_predictions,omitempty"` @@ -606,28 +768,34 @@ type SpotInstancesParameters struct { type SpotInterruptionPredictionsInitParameters struct { + // (Boolean) enable/disable autoscaler policies // enable/disable spot interruption predictions. Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + // (String) define the type of the spot interruption prediction to handle. Allowed values are AWSRebalanceRecommendations, CASTAIInterruptionPredictions. // define the type of the spot interruption prediction to handle. Allowed values are AWSRebalanceRecommendations, CASTAIInterruptionPredictions. SpotInterruptionPredictionsType *string `json:"spotInterruptionPredictionsType,omitempty" tf:"spot_interruption_predictions_type,omitempty"` } type SpotInterruptionPredictionsObservation struct { + // (Boolean) enable/disable autoscaler policies // enable/disable spot interruption predictions. Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + // (String) define the type of the spot interruption prediction to handle. Allowed values are AWSRebalanceRecommendations, CASTAIInterruptionPredictions. // define the type of the spot interruption prediction to handle. Allowed values are AWSRebalanceRecommendations, CASTAIInterruptionPredictions. SpotInterruptionPredictionsType *string `json:"spotInterruptionPredictionsType,omitempty" tf:"spot_interruption_predictions_type,omitempty"` } type SpotInterruptionPredictionsParameters struct { + // (Boolean) enable/disable autoscaler policies // enable/disable spot interruption predictions. // +kubebuilder:validation:Optional Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + // (String) define the type of the spot interruption prediction to handle. Allowed values are AWSRebalanceRecommendations, CASTAIInterruptionPredictions. // define the type of the spot interruption prediction to handle. Allowed values are AWSRebalanceRecommendations, CASTAIInterruptionPredictions. // +kubebuilder:validation:Optional SpotInterruptionPredictionsType *string `json:"spotInterruptionPredictionsType,omitempty" tf:"spot_interruption_predictions_type,omitempty"` @@ -635,61 +803,89 @@ type SpotInterruptionPredictionsParameters struct { type UnschedulablePodsInitParameters struct { + // (Boolean) enable/disable custom instances policy. // enable/disable custom instances policy. CustomInstancesEnabled *bool `json:"customInstancesEnabled,omitempty" tf:"custom_instances_enabled,omitempty"` + // (Boolean) enable/disable autoscaler policies // enable/disable unschedulable pods detection policy. Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + // demand nodes. (see below for nested schema) // additional headroom based on cluster's total available capacity for on-demand nodes. Headroom []HeadroomInitParameters `json:"headroom,omitempty" tf:"headroom,omitempty"` + // (Block List, Max: 1) additional headroom based on cluster's total available capacity for spot nodes. (see below for nested schema) // additional headroom based on cluster's total available capacity for spot nodes. HeadroomSpot []HeadroomSpotInitParameters `json:"headroomSpot,omitempty" tf:"headroom_spot,omitempty"` + // (Block List, Max: 1) defines the node constraints that will be applied when autoscaling with Unschedulable Pods policy. (see below for nested schema) // defines the node constraints that will be applied when autoscaling with Unschedulable Pods policy. NodeConstraints []NodeConstraintsInitParameters `json:"nodeConstraints,omitempty" tf:"node_constraints,omitempty"` + + // (Block List, Max: 1) defines the Cast AI Pod Pinner components settings. (see below for nested schema) + // defines the Cast AI Pod Pinner components settings. + PodPinner []PodPinnerInitParameters `json:"podPinner,omitempty" tf:"pod_pinner,omitempty"` } type UnschedulablePodsObservation struct { + // (Boolean) enable/disable custom instances policy. // enable/disable custom instances policy. CustomInstancesEnabled *bool `json:"customInstancesEnabled,omitempty" tf:"custom_instances_enabled,omitempty"` + // (Boolean) enable/disable autoscaler policies // enable/disable unschedulable pods detection policy. Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + // demand nodes. (see below for nested schema) // additional headroom based on cluster's total available capacity for on-demand nodes. Headroom []HeadroomObservation `json:"headroom,omitempty" tf:"headroom,omitempty"` + // (Block List, Max: 1) additional headroom based on cluster's total available capacity for spot nodes. (see below for nested schema) // additional headroom based on cluster's total available capacity for spot nodes. HeadroomSpot []HeadroomSpotObservation `json:"headroomSpot,omitempty" tf:"headroom_spot,omitempty"` + // (Block List, Max: 1) defines the node constraints that will be applied when autoscaling with Unschedulable Pods policy. (see below for nested schema) // defines the node constraints that will be applied when autoscaling with Unschedulable Pods policy. NodeConstraints []NodeConstraintsObservation `json:"nodeConstraints,omitempty" tf:"node_constraints,omitempty"` + + // (Block List, Max: 1) defines the Cast AI Pod Pinner components settings. (see below for nested schema) + // defines the Cast AI Pod Pinner components settings. + PodPinner []PodPinnerObservation `json:"podPinner,omitempty" tf:"pod_pinner,omitempty"` } type UnschedulablePodsParameters struct { + // (Boolean) enable/disable custom instances policy. // enable/disable custom instances policy. // +kubebuilder:validation:Optional CustomInstancesEnabled *bool `json:"customInstancesEnabled,omitempty" tf:"custom_instances_enabled,omitempty"` + // (Boolean) enable/disable autoscaler policies // enable/disable unschedulable pods detection policy. // +kubebuilder:validation:Optional Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + // demand nodes. (see below for nested schema) // additional headroom based on cluster's total available capacity for on-demand nodes. // +kubebuilder:validation:Optional Headroom []HeadroomParameters `json:"headroom,omitempty" tf:"headroom,omitempty"` + // (Block List, Max: 1) additional headroom based on cluster's total available capacity for spot nodes. (see below for nested schema) // additional headroom based on cluster's total available capacity for spot nodes. // +kubebuilder:validation:Optional HeadroomSpot []HeadroomSpotParameters `json:"headroomSpot,omitempty" tf:"headroom_spot,omitempty"` + // (Block List, Max: 1) defines the node constraints that will be applied when autoscaling with Unschedulable Pods policy. (see below for nested schema) // defines the node constraints that will be applied when autoscaling with Unschedulable Pods policy. // +kubebuilder:validation:Optional NodeConstraints []NodeConstraintsParameters `json:"nodeConstraints,omitempty" tf:"node_constraints,omitempty"` + + // (Block List, Max: 1) defines the Cast AI Pod Pinner components settings. (see below for nested schema) + // defines the Cast AI Pod Pinner components settings. + // +kubebuilder:validation:Optional + PodPinner []PodPinnerParameters `json:"podPinner,omitempty" tf:"pod_pinner,omitempty"` } // AutoScalerSpec defines the desired state of AutoScaler @@ -719,7 +915,7 @@ type AutoScalerStatus struct { // +kubebuilder:subresource:status // +kubebuilder:storageversion -// AutoScaler is the Schema for the AutoScalers API. +// AutoScaler is the Schema for the AutoScalers API. CAST AI autoscaler resource to manage autoscaler settings // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" // +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" // +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" diff --git a/apis/castai/v1alpha1/zz_eksclusterid_types.go b/apis/castai/v1alpha1/zz_eksclusterid_types.go index 439ec50..1f28016 100755 --- a/apis/castai/v1alpha1/zz_eksclusterid_types.go +++ b/apis/castai/v1alpha1/zz_eksclusterid_types.go @@ -14,31 +14,43 @@ import ( ) type EksClusterIdInitParameters struct { + + // (String) AccountID *string `json:"accountId,omitempty" tf:"account_id,omitempty"` + // (String) ClusterName *string `json:"clusterName,omitempty" tf:"cluster_name,omitempty"` + // (String) Region *string `json:"region,omitempty" tf:"region,omitempty"` } type EksClusterIdObservation struct { + + // (String) AccountID *string `json:"accountId,omitempty" tf:"account_id,omitempty"` + // (String) ClusterName *string `json:"clusterName,omitempty" tf:"cluster_name,omitempty"` + // (String) The ID of this resource. ID *string `json:"id,omitempty" tf:"id,omitempty"` + // (String) Region *string `json:"region,omitempty" tf:"region,omitempty"` } type EksClusterIdParameters struct { + // (String) // +kubebuilder:validation:Optional AccountID *string `json:"accountId,omitempty" tf:"account_id,omitempty"` + // (String) // +kubebuilder:validation:Optional ClusterName *string `json:"clusterName,omitempty" tf:"cluster_name,omitempty"` + // (String) // +kubebuilder:validation:Optional Region *string `json:"region,omitempty" tf:"region,omitempty"` } @@ -70,7 +82,7 @@ type EksClusterIdStatus struct { // +kubebuilder:subresource:status // +kubebuilder:storageversion -// EksClusterId is the Schema for the EksClusterIds API. +// EksClusterId is the Schema for the EksClusterIds API. Retrieve CAST AI clusterid // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" // +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" // +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" diff --git a/apis/castai/v1alpha1/zz_eksuserarn_types.go b/apis/castai/v1alpha1/zz_eksuserarn_types.go index aa3f035..e8ad5ae 100755 --- a/apis/castai/v1alpha1/zz_eksuserarn_types.go +++ b/apis/castai/v1alpha1/zz_eksuserarn_types.go @@ -15,6 +15,7 @@ import ( type EksUserArnInitParameters struct { + // (String) // +crossplane:generate:reference:type=github.com/crossplane-contrib/crossplane-provider-castai/apis/castai/v1alpha1.EksCluster ClusterID *string `json:"clusterId,omitempty" tf:"cluster_id,omitempty"` @@ -28,15 +29,20 @@ type EksUserArnInitParameters struct { } type EksUserArnObservation struct { + + // (String) Arn *string `json:"arn,omitempty" tf:"arn,omitempty"` + // (String) ClusterID *string `json:"clusterId,omitempty" tf:"cluster_id,omitempty"` + // (String) The ID of this resource. ID *string `json:"id,omitempty" tf:"id,omitempty"` } type EksUserArnParameters struct { + // (String) // +crossplane:generate:reference:type=github.com/crossplane-contrib/crossplane-provider-castai/apis/castai/v1alpha1.EksCluster // +kubebuilder:validation:Optional ClusterID *string `json:"clusterId,omitempty" tf:"cluster_id,omitempty"` @@ -77,7 +83,7 @@ type EksUserArnStatus struct { // +kubebuilder:subresource:status // +kubebuilder:storageversion -// EksUserArn is the Schema for the EksUserArns API. +// EksUserArn is the Schema for the EksUserArns API. Retrieve EKS Cluster User ARN // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" // +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" // +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" diff --git a/apis/castai/v1alpha1/zz_evictoradvancedconfig_types.go b/apis/castai/v1alpha1/zz_evictoradvancedconfig_types.go index 69e9712..b7104d3 100755 --- a/apis/castai/v1alpha1/zz_evictoradvancedconfig_types.go +++ b/apis/castai/v1alpha1/zz_evictoradvancedconfig_types.go @@ -14,55 +14,82 @@ import ( ) type EvictorAdvancedConfigEvictorAdvancedConfigInitParameters struct { + + // (Boolean) Apply Aggressive mode to Evictor + // Apply Aggressive mode to Evictor Aggressive *bool `json:"aggressive,omitempty" tf:"aggressive,omitempty"` + // (Boolean) Mark node as disposable + // Mark node as disposable Disposable *bool `json:"disposable,omitempty" tf:"disposable,omitempty"` + // (Block List) node selector (see below for nested schema) // node selector NodeSelector []NodeSelectorInitParameters `json:"nodeSelector,omitempty" tf:"node_selector,omitempty"` + // (Block List) pod selector (see below for nested schema) // pod selector PodSelector []PodSelectorInitParameters `json:"podSelector,omitempty" tf:"pod_selector,omitempty"` + // (Boolean) Mark pods as removal disabled + // Mark pods as removal disabled RemovalDisabled *bool `json:"removalDisabled,omitempty" tf:"removal_disabled,omitempty"` } type EvictorAdvancedConfigEvictorAdvancedConfigObservation struct { + + // (Boolean) Apply Aggressive mode to Evictor + // Apply Aggressive mode to Evictor Aggressive *bool `json:"aggressive,omitempty" tf:"aggressive,omitempty"` + // (Boolean) Mark node as disposable + // Mark node as disposable Disposable *bool `json:"disposable,omitempty" tf:"disposable,omitempty"` + // (Block List) node selector (see below for nested schema) // node selector NodeSelector []NodeSelectorObservation `json:"nodeSelector,omitempty" tf:"node_selector,omitempty"` + // (Block List) pod selector (see below for nested schema) // pod selector PodSelector []PodSelectorObservation `json:"podSelector,omitempty" tf:"pod_selector,omitempty"` + // (Boolean) Mark pods as removal disabled + // Mark pods as removal disabled RemovalDisabled *bool `json:"removalDisabled,omitempty" tf:"removal_disabled,omitempty"` } type EvictorAdvancedConfigEvictorAdvancedConfigParameters struct { + // (Boolean) Apply Aggressive mode to Evictor + // Apply Aggressive mode to Evictor // +kubebuilder:validation:Optional Aggressive *bool `json:"aggressive,omitempty" tf:"aggressive,omitempty"` + // (Boolean) Mark node as disposable + // Mark node as disposable // +kubebuilder:validation:Optional Disposable *bool `json:"disposable,omitempty" tf:"disposable,omitempty"` + // (Block List) node selector (see below for nested schema) // node selector // +kubebuilder:validation:Optional NodeSelector []NodeSelectorParameters `json:"nodeSelector,omitempty" tf:"node_selector,omitempty"` + // (Block List) pod selector (see below for nested schema) // pod selector // +kubebuilder:validation:Optional PodSelector []PodSelectorParameters `json:"podSelector,omitempty" tf:"pod_selector,omitempty"` + // (Boolean) Mark pods as removal disabled + // Mark pods as removal disabled // +kubebuilder:validation:Optional RemovalDisabled *bool `json:"removalDisabled,omitempty" tf:"removal_disabled,omitempty"` } type EvictorAdvancedConfigInitParameters struct { + // (String) CAST AI cluster id. // CAST AI cluster id. // +crossplane:generate:reference:type=github.com/crossplane-contrib/crossplane-provider-castai/apis/castai/v1alpha1.EksClusterId ClusterID *string `json:"clusterId,omitempty" tf:"cluster_id,omitempty"` @@ -75,23 +102,28 @@ type EvictorAdvancedConfigInitParameters struct { // +kubebuilder:validation:Optional ClusterIDSelector *v1.Selector `json:"clusterIdSelector,omitempty" tf:"-"` + // (Block List, Min: 1) evictor advanced configuration to target specific node/pod (see below for nested schema) // evictor advanced configuration to target specific node/pod EvictorAdvancedConfig []EvictorAdvancedConfigEvictorAdvancedConfigInitParameters `json:"evictorAdvancedConfig,omitempty" tf:"evictor_advanced_config,omitempty"` } type EvictorAdvancedConfigObservation struct { + // (String) CAST AI cluster id. // CAST AI cluster id. ClusterID *string `json:"clusterId,omitempty" tf:"cluster_id,omitempty"` + // (Block List, Min: 1) evictor advanced configuration to target specific node/pod (see below for nested schema) // evictor advanced configuration to target specific node/pod EvictorAdvancedConfig []EvictorAdvancedConfigEvictorAdvancedConfigObservation `json:"evictorAdvancedConfig,omitempty" tf:"evictor_advanced_config,omitempty"` + // (String) The ID of this resource. ID *string `json:"id,omitempty" tf:"id,omitempty"` } type EvictorAdvancedConfigParameters struct { + // (String) CAST AI cluster id. // CAST AI cluster id. // +crossplane:generate:reference:type=github.com/crossplane-contrib/crossplane-provider-castai/apis/castai/v1alpha1.EksClusterId // +kubebuilder:validation:Optional @@ -105,125 +137,170 @@ type EvictorAdvancedConfigParameters struct { // +kubebuilder:validation:Optional ClusterIDSelector *v1.Selector `json:"clusterIdSelector,omitempty" tf:"-"` + // (Block List, Min: 1) evictor advanced configuration to target specific node/pod (see below for nested schema) // evictor advanced configuration to target specific node/pod // +kubebuilder:validation:Optional EvictorAdvancedConfig []EvictorAdvancedConfigEvictorAdvancedConfigParameters `json:"evictorAdvancedConfig,omitempty" tf:"evictor_advanced_config,omitempty"` } type MatchExpressionsInitParameters struct { + + // (String) Key *string `json:"key,omitempty" tf:"key,omitempty"` + // (String) Operator *string `json:"operator,omitempty" tf:"operator,omitempty"` + // (List of String) Values []*string `json:"values,omitempty" tf:"values,omitempty"` } type MatchExpressionsObservation struct { + + // (String) Key *string `json:"key,omitempty" tf:"key,omitempty"` + // (String) Operator *string `json:"operator,omitempty" tf:"operator,omitempty"` + // (List of String) Values []*string `json:"values,omitempty" tf:"values,omitempty"` } type MatchExpressionsParameters struct { + // (String) // +kubebuilder:validation:Optional Key *string `json:"key" tf:"key,omitempty"` + // (String) // +kubebuilder:validation:Optional Operator *string `json:"operator" tf:"operator,omitempty"` + // (List of String) // +kubebuilder:validation:Optional Values []*string `json:"values,omitempty" tf:"values,omitempty"` } type NodeSelectorInitParameters struct { + + // (Block List) (see below for nested schema) MatchExpressions []MatchExpressionsInitParameters `json:"matchExpressions,omitempty" tf:"match_expressions,omitempty"` + // (Map of String) // +mapType=granular MatchLabels map[string]*string `json:"matchLabels,omitempty" tf:"match_labels,omitempty"` } type NodeSelectorObservation struct { + + // (Block List) (see below for nested schema) MatchExpressions []MatchExpressionsObservation `json:"matchExpressions,omitempty" tf:"match_expressions,omitempty"` + // (Map of String) // +mapType=granular MatchLabels map[string]*string `json:"matchLabels,omitempty" tf:"match_labels,omitempty"` } type NodeSelectorParameters struct { + // (Block List) (see below for nested schema) // +kubebuilder:validation:Optional MatchExpressions []MatchExpressionsParameters `json:"matchExpressions,omitempty" tf:"match_expressions,omitempty"` + // (Map of String) // +kubebuilder:validation:Optional // +mapType=granular MatchLabels map[string]*string `json:"matchLabels,omitempty" tf:"match_labels,omitempty"` } type PodSelectorInitParameters struct { + + // (String) Kind *string `json:"kind,omitempty" tf:"kind,omitempty"` + // (Block List) (see below for nested schema) MatchExpressions []PodSelectorMatchExpressionsInitParameters `json:"matchExpressions,omitempty" tf:"match_expressions,omitempty"` + // (Map of String) // +mapType=granular MatchLabels map[string]*string `json:"matchLabels,omitempty" tf:"match_labels,omitempty"` + // (String) Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` } type PodSelectorMatchExpressionsInitParameters struct { + + // (String) Key *string `json:"key,omitempty" tf:"key,omitempty"` + // (String) Operator *string `json:"operator,omitempty" tf:"operator,omitempty"` + // (List of String) Values []*string `json:"values,omitempty" tf:"values,omitempty"` } type PodSelectorMatchExpressionsObservation struct { + + // (String) Key *string `json:"key,omitempty" tf:"key,omitempty"` + // (String) Operator *string `json:"operator,omitempty" tf:"operator,omitempty"` + // (List of String) Values []*string `json:"values,omitempty" tf:"values,omitempty"` } type PodSelectorMatchExpressionsParameters struct { + // (String) // +kubebuilder:validation:Optional Key *string `json:"key" tf:"key,omitempty"` + // (String) // +kubebuilder:validation:Optional Operator *string `json:"operator" tf:"operator,omitempty"` + // (List of String) // +kubebuilder:validation:Optional Values []*string `json:"values,omitempty" tf:"values,omitempty"` } type PodSelectorObservation struct { + + // (String) Kind *string `json:"kind,omitempty" tf:"kind,omitempty"` + // (Block List) (see below for nested schema) MatchExpressions []PodSelectorMatchExpressionsObservation `json:"matchExpressions,omitempty" tf:"match_expressions,omitempty"` + // (Map of String) // +mapType=granular MatchLabels map[string]*string `json:"matchLabels,omitempty" tf:"match_labels,omitempty"` + // (String) Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` } type PodSelectorParameters struct { + // (String) // +kubebuilder:validation:Optional Kind *string `json:"kind,omitempty" tf:"kind,omitempty"` + // (Block List) (see below for nested schema) // +kubebuilder:validation:Optional MatchExpressions []PodSelectorMatchExpressionsParameters `json:"matchExpressions,omitempty" tf:"match_expressions,omitempty"` + // (Map of String) // +kubebuilder:validation:Optional // +mapType=granular MatchLabels map[string]*string `json:"matchLabels,omitempty" tf:"match_labels,omitempty"` + // (String) // +kubebuilder:validation:Optional Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` } @@ -255,7 +332,7 @@ type EvictorAdvancedConfigStatus struct { // +kubebuilder:subresource:status // +kubebuilder:storageversion -// EvictorAdvancedConfig is the Schema for the EvictorAdvancedConfigs API. +// EvictorAdvancedConfig is the Schema for the EvictorAdvancedConfigs API. CAST AI eviction config resource to manage evictor properties // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" // +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" // +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" diff --git a/apis/castai/v1alpha1/zz_generated.deepcopy.go b/apis/castai/v1alpha1/zz_generated.deepcopy.go index 8189811..4189ba0 100644 --- a/apis/castai/v1alpha1/zz_generated.deepcopy.go +++ b/apis/castai/v1alpha1/zz_generated.deepcopy.go @@ -455,6 +455,18 @@ func (in *AksClusterStatus) DeepCopy() *AksClusterStatus { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *AksInitParameters) DeepCopyInto(out *AksInitParameters) { *out = *in + if in.AksImageFamily != nil { + in, out := &in.AksImageFamily, &out.AksImageFamily + *out = new(string) + **out = **in + } + if in.Loadbalancers != nil { + in, out := &in.Loadbalancers, &out.Loadbalancers + *out = make([]LoadbalancersInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.MaxPodsPerNode != nil { in, out := &in.MaxPodsPerNode, &out.MaxPodsPerNode *out = new(float64) @@ -480,6 +492,18 @@ func (in *AksInitParameters) DeepCopy() *AksInitParameters { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *AksObservation) DeepCopyInto(out *AksObservation) { *out = *in + if in.AksImageFamily != nil { + in, out := &in.AksImageFamily, &out.AksImageFamily + *out = new(string) + **out = **in + } + if in.Loadbalancers != nil { + in, out := &in.Loadbalancers, &out.Loadbalancers + *out = make([]LoadbalancersObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.MaxPodsPerNode != nil { in, out := &in.MaxPodsPerNode, &out.MaxPodsPerNode *out = new(float64) @@ -505,6 +529,18 @@ func (in *AksObservation) DeepCopy() *AksObservation { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *AksParameters) DeepCopyInto(out *AksParameters) { *out = *in + if in.AksImageFamily != nil { + in, out := &in.AksImageFamily, &out.AksImageFamily + *out = new(string) + **out = **in + } + if in.Loadbalancers != nil { + in, out := &in.Loadbalancers, &out.Loadbalancers + *out = make([]LoadbalancersParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.MaxPodsPerNode != nil { in, out := &in.MaxPodsPerNode, &out.MaxPodsPerNode *out = new(float64) @@ -1080,6 +1116,17 @@ func (in *ClusterLimitsParameters) DeepCopy() *ClusterLimitsParameters { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ConstraintsInitParameters) DeepCopyInto(out *ConstraintsInitParameters) { *out = *in + if in.ArchitecturePriority != nil { + in, out := &in.ArchitecturePriority, &out.ArchitecturePriority + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } if in.Architectures != nil { in, out := &in.Architectures, &out.Architectures *out = make([]*string, len(*in)) @@ -1107,6 +1154,17 @@ func (in *ConstraintsInitParameters) DeepCopyInto(out *ConstraintsInitParameters *out = new(string) **out = **in } + if in.CPUManufacturers != nil { + in, out := &in.CPUManufacturers, &out.CPUManufacturers + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } if in.ComputeOptimized != nil { in, out := &in.ComputeOptimized, &out.ComputeOptimized *out = new(bool) @@ -1251,6 +1309,17 @@ func (in *ConstraintsInitParameters) DeepCopy() *ConstraintsInitParameters { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ConstraintsObservation) DeepCopyInto(out *ConstraintsObservation) { *out = *in + if in.ArchitecturePriority != nil { + in, out := &in.ArchitecturePriority, &out.ArchitecturePriority + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } if in.Architectures != nil { in, out := &in.Architectures, &out.Architectures *out = make([]*string, len(*in)) @@ -1278,6 +1347,17 @@ func (in *ConstraintsObservation) DeepCopyInto(out *ConstraintsObservation) { *out = new(string) **out = **in } + if in.CPUManufacturers != nil { + in, out := &in.CPUManufacturers, &out.CPUManufacturers + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } if in.ComputeOptimized != nil { in, out := &in.ComputeOptimized, &out.ComputeOptimized *out = new(bool) @@ -1422,6 +1502,17 @@ func (in *ConstraintsObservation) DeepCopy() *ConstraintsObservation { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ConstraintsParameters) DeepCopyInto(out *ConstraintsParameters) { *out = *in + if in.ArchitecturePriority != nil { + in, out := &in.ArchitecturePriority, &out.ArchitecturePriority + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } if in.Architectures != nil { in, out := &in.Architectures, &out.Architectures *out = make([]*string, len(*in)) @@ -1449,6 +1540,17 @@ func (in *ConstraintsParameters) DeepCopyInto(out *ConstraintsParameters) { *out = new(string) **out = **in } + if in.CPUManufacturers != nil { + in, out := &in.CPUManufacturers, &out.CPUManufacturers + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } if in.ComputeOptimized != nil { in, out := &in.ComputeOptimized, &out.ComputeOptimized *out = new(bool) @@ -2373,6 +2475,11 @@ func (in *EksInitParameters) DeepCopyInto(out *EksInitParameters) { *out = new(string) **out = **in } + if in.NodeGroupArn != nil { + in, out := &in.NodeGroupArn, &out.NodeGroupArn + *out = new(string) + **out = **in + } if in.SecurityGroups != nil { in, out := &in.SecurityGroups, &out.SecurityGroups *out = make([]*string, len(*in)) @@ -2466,6 +2573,11 @@ func (in *EksObservation) DeepCopyInto(out *EksObservation) { *out = new(string) **out = **in } + if in.NodeGroupArn != nil { + in, out := &in.NodeGroupArn, &out.NodeGroupArn + *out = new(string) + **out = **in + } if in.SecurityGroups != nil { in, out := &in.SecurityGroups, &out.SecurityGroups *out = make([]*string, len(*in)) @@ -2559,6 +2671,11 @@ func (in *EksParameters) DeepCopyInto(out *EksParameters) { *out = new(string) **out = **in } + if in.NodeGroupArn != nil { + in, out := &in.NodeGroupArn, &out.NodeGroupArn + *out = new(string) + **out = **in + } if in.SecurityGroups != nil { in, out := &in.SecurityGroups, &out.SecurityGroups *out = make([]*string, len(*in)) @@ -4164,6 +4281,66 @@ func (in *HeadroomSpotParameters) DeepCopy() *HeadroomSpotParameters { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IPBasedBackendPoolsInitParameters) DeepCopyInto(out *IPBasedBackendPoolsInitParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPBasedBackendPoolsInitParameters. +func (in *IPBasedBackendPoolsInitParameters) DeepCopy() *IPBasedBackendPoolsInitParameters { + if in == nil { + return nil + } + out := new(IPBasedBackendPoolsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IPBasedBackendPoolsObservation) DeepCopyInto(out *IPBasedBackendPoolsObservation) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPBasedBackendPoolsObservation. +func (in *IPBasedBackendPoolsObservation) DeepCopy() *IPBasedBackendPoolsObservation { + if in == nil { + return nil + } + out := new(IPBasedBackendPoolsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IPBasedBackendPoolsParameters) DeepCopyInto(out *IPBasedBackendPoolsParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPBasedBackendPoolsParameters. +func (in *IPBasedBackendPoolsParameters) DeepCopy() *IPBasedBackendPoolsParameters { + if in == nil { + return nil + } + out := new(IPBasedBackendPoolsParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *InstanceFamiliesInitParameters) DeepCopyInto(out *InstanceFamiliesInitParameters) { *out = *in @@ -4506,6 +4683,87 @@ func (in *LaunchConfigurationParameters) DeepCopy() *LaunchConfigurationParamete return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LoadbalancersInitParameters) DeepCopyInto(out *LoadbalancersInitParameters) { + *out = *in + if in.IPBasedBackendPools != nil { + in, out := &in.IPBasedBackendPools, &out.IPBasedBackendPools + *out = make([]IPBasedBackendPoolsInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LoadbalancersInitParameters. +func (in *LoadbalancersInitParameters) DeepCopy() *LoadbalancersInitParameters { + if in == nil { + return nil + } + out := new(LoadbalancersInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LoadbalancersObservation) DeepCopyInto(out *LoadbalancersObservation) { + *out = *in + if in.IPBasedBackendPools != nil { + in, out := &in.IPBasedBackendPools, &out.IPBasedBackendPools + *out = make([]IPBasedBackendPoolsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LoadbalancersObservation. +func (in *LoadbalancersObservation) DeepCopy() *LoadbalancersObservation { + if in == nil { + return nil + } + out := new(LoadbalancersObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LoadbalancersParameters) DeepCopyInto(out *LoadbalancersParameters) { + *out = *in + if in.IPBasedBackendPools != nil { + in, out := &in.IPBasedBackendPools, &out.IPBasedBackendPools + *out = make([]IPBasedBackendPoolsParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LoadbalancersParameters. +func (in *LoadbalancersParameters) DeepCopy() *LoadbalancersParameters { + if in == nil { + return nil + } + out := new(LoadbalancersParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *MatchExpressionsInitParameters) DeepCopyInto(out *MatchExpressionsInitParameters) { *out = *in @@ -6401,6 +6659,66 @@ func (in *OrganizationMembersStatus) DeepCopy() *OrganizationMembersStatus { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodPinnerInitParameters) DeepCopyInto(out *PodPinnerInitParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodPinnerInitParameters. +func (in *PodPinnerInitParameters) DeepCopy() *PodPinnerInitParameters { + if in == nil { + return nil + } + out := new(PodPinnerInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodPinnerObservation) DeepCopyInto(out *PodPinnerObservation) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodPinnerObservation. +func (in *PodPinnerObservation) DeepCopy() *PodPinnerObservation { + if in == nil { + return nil + } + out := new(PodPinnerObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodPinnerParameters) DeepCopyInto(out *PodPinnerParameters) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodPinnerParameters. +func (in *PodPinnerParameters) DeepCopy() *PodPinnerParameters { + if in == nil { + return nil + } + out := new(PodPinnerParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *PodSelectorInitParameters) DeepCopyInto(out *PodSelectorInitParameters) { *out = *in @@ -8170,6 +8488,13 @@ func (in *UnschedulablePodsInitParameters) DeepCopyInto(out *UnschedulablePodsIn (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.PodPinner != nil { + in, out := &in.PodPinner, &out.PodPinner + *out = make([]PodPinnerInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UnschedulablePodsInitParameters. @@ -8216,6 +8541,13 @@ func (in *UnschedulablePodsObservation) DeepCopyInto(out *UnschedulablePodsObser (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.PodPinner != nil { + in, out := &in.PodPinner, &out.PodPinner + *out = make([]PodPinnerObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UnschedulablePodsObservation. @@ -8262,6 +8594,13 @@ func (in *UnschedulablePodsParameters) DeepCopyInto(out *UnschedulablePodsParame (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.PodPinner != nil { + in, out := &in.PodPinner, &out.PodPinner + *out = make([]PodPinnerParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UnschedulablePodsParameters. diff --git a/apis/castai/v1alpha1/zz_nodeconfiguration_types.go b/apis/castai/v1alpha1/zz_nodeconfiguration_types.go index 820373c..30a21cd 100755 --- a/apis/castai/v1alpha1/zz_nodeconfiguration_types.go +++ b/apis/castai/v1alpha1/zz_nodeconfiguration_types.go @@ -15,6 +15,14 @@ import ( type AksInitParameters struct { + // linux) + // Image OS Family to use when provisioning node in AKS. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. Possible values: (ubuntu,azure-linux) + AksImageFamily *string `json:"aksImageFamily,omitempty" tf:"aks_image_family,omitempty"` + + // (Block List) Loadboalancer configuration for CAST provisioned nodes (see below for nested schema) + // Loadboalancer configuration for CAST provisioned nodes + Loadbalancers []LoadbalancersInitParameters `json:"loadbalancers,omitempty" tf:"loadbalancers,omitempty"` + // (Number) Maximum number of pods that can be run on a node, which affects how many IP addresses you will need for each node. Defaults to 30 // Maximum number of pods that can be run on a node, which affects how many IP addresses you will need for each node. Defaults to 30 MaxPodsPerNode *float64 `json:"maxPodsPerNode,omitempty" tf:"max_pods_per_node,omitempty"` @@ -26,6 +34,14 @@ type AksInitParameters struct { type AksObservation struct { + // linux) + // Image OS Family to use when provisioning node in AKS. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. Possible values: (ubuntu,azure-linux) + AksImageFamily *string `json:"aksImageFamily,omitempty" tf:"aks_image_family,omitempty"` + + // (Block List) Loadboalancer configuration for CAST provisioned nodes (see below for nested schema) + // Loadboalancer configuration for CAST provisioned nodes + Loadbalancers []LoadbalancersObservation `json:"loadbalancers,omitempty" tf:"loadbalancers,omitempty"` + // (Number) Maximum number of pods that can be run on a node, which affects how many IP addresses you will need for each node. Defaults to 30 // Maximum number of pods that can be run on a node, which affects how many IP addresses you will need for each node. Defaults to 30 MaxPodsPerNode *float64 `json:"maxPodsPerNode,omitempty" tf:"max_pods_per_node,omitempty"` @@ -37,6 +53,16 @@ type AksObservation struct { type AksParameters struct { + // linux) + // Image OS Family to use when provisioning node in AKS. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. Possible values: (ubuntu,azure-linux) + // +kubebuilder:validation:Optional + AksImageFamily *string `json:"aksImageFamily,omitempty" tf:"aks_image_family,omitempty"` + + // (Block List) Loadboalancer configuration for CAST provisioned nodes (see below for nested schema) + // Loadboalancer configuration for CAST provisioned nodes + // +kubebuilder:validation:Optional + Loadbalancers []LoadbalancersParameters `json:"loadbalancers,omitempty" tf:"loadbalancers,omitempty"` + // (Number) Maximum number of pods that can be run on a node, which affects how many IP addresses you will need for each node. Defaults to 30 // Maximum number of pods that can be run on a node, which affects how many IP addresses you will need for each node. Defaults to 30 // +kubebuilder:validation:Optional @@ -54,8 +80,8 @@ type EksInitParameters struct { // IP address to use for DNS queries within the cluster DNSClusterIP *string `json:"dnsClusterIp,omitempty" tf:"dns_cluster_ip,omitempty"` - // (String) Image OS Family to use when provisioning node. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. - // Image OS Family to use when provisioning node. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. + // (String) Image OS Family to use when provisioning node in EKS. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. Possible values: (al2,al2023,bottlerocket) + // Image OS Family to use when provisioning node in EKS. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. Possible values: (al2,al2023,bottlerocket) EksImageFamily *string `json:"eksImageFamily,omitempty" tf:"eks_image_family,omitempty"` // (Number) Allow configure the IMDSv2 hop limit, the default is 2 @@ -82,6 +108,10 @@ type EksInitParameters struct { // Formula to calculate the maximum number of pods that can be run on a node. The following list of variables will be bound to a number before evaluating and can be used in the formula: NUM_MAX_NET_INTERFACES, NUM_IP_PER_INTERFACE, NUM_IP_PER_PREFIX, NUM_CPU, NUM_RAM_GB . MaxPodsPerNodeFormula *string `json:"maxPodsPerNodeFormula,omitempty" tf:"max_pods_per_node_formula,omitempty"` + // (String) Cluster's node group ARN used for CAST provisioned node pools. Required for hibernate/resume functionality + // Cluster's node group ARN used for CAST provisioned node pools. Required for hibernate/resume functionality + NodeGroupArn *string `json:"nodeGroupArn,omitempty" tf:"node_group_arn,omitempty"` + // (List of String) Cluster's security groups configuration for CAST provisioned nodes // Cluster's security groups configuration for CAST provisioned nodes SecurityGroups []*string `json:"securityGroups,omitempty" tf:"security_groups,omitempty"` @@ -113,8 +143,8 @@ type EksObservation struct { // IP address to use for DNS queries within the cluster DNSClusterIP *string `json:"dnsClusterIp,omitempty" tf:"dns_cluster_ip,omitempty"` - // (String) Image OS Family to use when provisioning node. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. - // Image OS Family to use when provisioning node. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. + // (String) Image OS Family to use when provisioning node in EKS. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. Possible values: (al2,al2023,bottlerocket) + // Image OS Family to use when provisioning node in EKS. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. Possible values: (al2,al2023,bottlerocket) EksImageFamily *string `json:"eksImageFamily,omitempty" tf:"eks_image_family,omitempty"` // (Number) Allow configure the IMDSv2 hop limit, the default is 2 @@ -141,6 +171,10 @@ type EksObservation struct { // Formula to calculate the maximum number of pods that can be run on a node. The following list of variables will be bound to a number before evaluating and can be used in the formula: NUM_MAX_NET_INTERFACES, NUM_IP_PER_INTERFACE, NUM_IP_PER_PREFIX, NUM_CPU, NUM_RAM_GB . MaxPodsPerNodeFormula *string `json:"maxPodsPerNodeFormula,omitempty" tf:"max_pods_per_node_formula,omitempty"` + // (String) Cluster's node group ARN used for CAST provisioned node pools. Required for hibernate/resume functionality + // Cluster's node group ARN used for CAST provisioned node pools. Required for hibernate/resume functionality + NodeGroupArn *string `json:"nodeGroupArn,omitempty" tf:"node_group_arn,omitempty"` + // (List of String) Cluster's security groups configuration for CAST provisioned nodes // Cluster's security groups configuration for CAST provisioned nodes SecurityGroups []*string `json:"securityGroups,omitempty" tf:"security_groups,omitempty"` @@ -173,8 +207,8 @@ type EksParameters struct { // +kubebuilder:validation:Optional DNSClusterIP *string `json:"dnsClusterIp,omitempty" tf:"dns_cluster_ip,omitempty"` - // (String) Image OS Family to use when provisioning node. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. - // Image OS Family to use when provisioning node. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. + // (String) Image OS Family to use when provisioning node in EKS. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. Possible values: (al2,al2023,bottlerocket) + // Image OS Family to use when provisioning node in EKS. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. Possible values: (al2,al2023,bottlerocket) // +kubebuilder:validation:Optional EksImageFamily *string `json:"eksImageFamily,omitempty" tf:"eks_image_family,omitempty"` @@ -208,6 +242,11 @@ type EksParameters struct { // +kubebuilder:validation:Optional MaxPodsPerNodeFormula *string `json:"maxPodsPerNodeFormula,omitempty" tf:"max_pods_per_node_formula,omitempty"` + // (String) Cluster's node group ARN used for CAST provisioned node pools. Required for hibernate/resume functionality + // Cluster's node group ARN used for CAST provisioned node pools. Required for hibernate/resume functionality + // +kubebuilder:validation:Optional + NodeGroupArn *string `json:"nodeGroupArn,omitempty" tf:"node_group_arn,omitempty"` + // (List of String) Cluster's security groups configuration for CAST provisioned nodes // Cluster's security groups configuration for CAST provisioned nodes // +kubebuilder:validation:Optional @@ -313,6 +352,28 @@ type GkeParameters struct { Zones []*string `json:"zones,omitempty" tf:"zones,omitempty"` } +type IPBasedBackendPoolsInitParameters struct { + + // (String) Name of the node configuration. It must be unique within the cluster. + // Name of the ip based backend pool + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type IPBasedBackendPoolsObservation struct { + + // (String) Name of the node configuration. It must be unique within the cluster. + // Name of the ip based backend pool + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type IPBasedBackendPoolsParameters struct { + + // (String) Name of the node configuration. It must be unique within the cluster. + // Name of the ip based backend pool + // +kubebuilder:validation:Optional + Name *string `json:"name" tf:"name,omitempty"` +} + type KopsInitParameters struct { // (String) AWS key pair ID to be used for CAST provisioned nodes. Has priority over ssh_public_key @@ -335,6 +396,41 @@ type KopsParameters struct { KeyPairID *string `json:"keyPairId,omitempty" tf:"key_pair_id,omitempty"` } +type LoadbalancersInitParameters struct { + + // (Block List) IP based backend pools configuration for CAST provisioned nodes (see below for nested schema) + // IP based backend pools configuration for CAST provisioned nodes + IPBasedBackendPools []IPBasedBackendPoolsInitParameters `json:"ipBasedBackendPools,omitempty" tf:"ip_based_backend_pools,omitempty"` + + // (String) Name of the node configuration. It must be unique within the cluster. + // Name of loadbalancer + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type LoadbalancersObservation struct { + + // (Block List) IP based backend pools configuration for CAST provisioned nodes (see below for nested schema) + // IP based backend pools configuration for CAST provisioned nodes + IPBasedBackendPools []IPBasedBackendPoolsObservation `json:"ipBasedBackendPools,omitempty" tf:"ip_based_backend_pools,omitempty"` + + // (String) Name of the node configuration. It must be unique within the cluster. + // Name of loadbalancer + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type LoadbalancersParameters struct { + + // (Block List) IP based backend pools configuration for CAST provisioned nodes (see below for nested schema) + // IP based backend pools configuration for CAST provisioned nodes + // +kubebuilder:validation:Optional + IPBasedBackendPools []IPBasedBackendPoolsParameters `json:"ipBasedBackendPools,omitempty" tf:"ip_based_backend_pools,omitempty"` + + // (String) Name of the node configuration. It must be unique within the cluster. + // Name of loadbalancer + // +kubebuilder:validation:Optional + Name *string `json:"name" tf:"name,omitempty"` +} + type NodeConfigurationInitParameters struct { // (Block List, Max: 1) (see below for nested schema) diff --git a/apis/castai/v1alpha1/zz_nodetemplate_types.go b/apis/castai/v1alpha1/zz_nodetemplate_types.go index e5a29ee..7770429 100755 --- a/apis/castai/v1alpha1/zz_nodetemplate_types.go +++ b/apis/castai/v1alpha1/zz_nodetemplate_types.go @@ -15,38 +15,47 @@ import ( type AffinityInitParameters struct { + // (String) Key of the node affinity selector. // Key of the node affinity selector. Key *string `json:"key,omitempty" tf:"key,omitempty"` + // (String) Operator of the node affinity selector. Allowed values: In, NotIn, Exists, DoesNotExist, Gt, Lt. // Operator of the node affinity selector. Allowed values: In, NotIn, Exists, DoesNotExist, Gt, Lt. Operator *string `json:"operator,omitempty" tf:"operator,omitempty"` + // (List of String) Values of the node affinity selector. // Values of the node affinity selector. Values []*string `json:"values,omitempty" tf:"values,omitempty"` } type AffinityObservation struct { + // (String) Key of the node affinity selector. // Key of the node affinity selector. Key *string `json:"key,omitempty" tf:"key,omitempty"` + // (String) Operator of the node affinity selector. Allowed values: In, NotIn, Exists, DoesNotExist, Gt, Lt. // Operator of the node affinity selector. Allowed values: In, NotIn, Exists, DoesNotExist, Gt, Lt. Operator *string `json:"operator,omitempty" tf:"operator,omitempty"` + // (List of String) Values of the node affinity selector. // Values of the node affinity selector. Values []*string `json:"values,omitempty" tf:"values,omitempty"` } type AffinityParameters struct { + // (String) Key of the node affinity selector. // Key of the node affinity selector. // +kubebuilder:validation:Optional Key *string `json:"key" tf:"key,omitempty"` + // (String) Operator of the node affinity selector. Allowed values: In, NotIn, Exists, DoesNotExist, Gt, Lt. // Operator of the node affinity selector. Allowed values: In, NotIn, Exists, DoesNotExist, Gt, Lt. // +kubebuilder:validation:Optional Operator *string `json:"operator" tf:"operator,omitempty"` + // (List of String) Values of the node affinity selector. // Values of the node affinity selector. // +kubebuilder:validation:Optional Values []*string `json:"values" tf:"values,omitempty"` @@ -54,26 +63,47 @@ type AffinityParameters struct { type ConstraintsInitParameters struct { + // (List of String) Priority ordering of architectures, specifying no priority will pick cheapest. Allowed values: amd64, arm64. + // Priority ordering of architectures, specifying no priority will pick cheapest. Allowed values: amd64, arm64. + ArchitecturePriority []*string `json:"architecturePriority,omitempty" tf:"architecture_priority,omitempty"` + + // (List of String) List of acceptable instance CPU architectures, the default is amd64. Allowed values: amd64, arm64. // List of acceptable instance CPU architectures, the default is amd64. Allowed values: amd64, arm64. Architectures []*string `json:"architectures,omitempty" tf:"architectures,omitempty"` + // (List of String) The list of AZ names to consider for the node template, if empty or not set all AZs are considered. // The list of AZ names to consider for the node template, if empty or not set all AZs are considered. Azs []*string `json:"azs,omitempty" tf:"azs,omitempty"` + // (String) Will include burstable instances when enabled otherwise they will be excluded. Supported values: enabled, disabled or “. // Will include burstable instances when enabled otherwise they will be excluded. Supported values: `enabled`, `disabled` or “. BurstableInstances *string `json:"burstableInstances,omitempty" tf:"burstable_instances,omitempty"` + // (List of String) List of acceptable CPU manufacturers. Allowed values: AMD, AMPERE, APPLE, AWS, INTEL. + // List of acceptable CPU manufacturers. Allowed values: AMD, AMPERE, APPLE, AWS, INTEL. + CPUManufacturers []*string `json:"cpuManufacturers,omitempty" tf:"cpu_manufacturers,omitempty"` + + // (Boolean) Compute optimized instance constraint (deprecated). // Compute optimized instance constraint (deprecated). ComputeOptimized *bool `json:"computeOptimized,omitempty" tf:"compute_optimized,omitempty"` + // (String) Will only include compute optimized nodes when enabled and exclude compute optimized nodes when disabled. Empty value won't have effect on instances filter. Supported values: enabled, disabled or empty string. // Will only include compute optimized nodes when enabled and exclude compute optimized nodes when disabled. Empty value won't have effect on instances filter. Supported values: `enabled`, `disabled` or empty string. ComputeOptimizedState *string `json:"computeOptimizedState,omitempty" tf:"compute_optimized_state,omitempty"` + // (Block List) (see below for nested schema) CustomPriority []CustomPriorityInitParameters `json:"customPriority,omitempty" tf:"custom_priority,omitempty"` + // (String) Will include customer specific (preview) instances when enabled otherwise they will be excluded. Supported values: enabled, disabled or “. // Will include customer specific (preview) instances when enabled otherwise they will be excluded. Supported values: `enabled`, `disabled` or “. CustomerSpecific *string `json:"customerSpecific,omitempty" tf:"customer_specific,omitempty"` + // creates preference for instances to be created on sole tenancy or dedicated nodes. This + // feature is only available for GCP clusters and sole tenancy nodes with local + // SSDs or GPUs are not supported. If the sole tenancy or dedicated nodes don't have capacity for selected instance + // type, the Autoscaler will fall back to multi-tenant instance types available for this Node Template. + // Other instance constraints are applied when the Autoscaler picks available instance types that can be created on + // the sole tenancy or dedicated node (example: setting min CPU to 16). (see below for nested schema) // Dedicated node affinity - creates preference for instances to be created on sole tenancy or dedicated nodes. This // feature is only available for GCP clusters and sole tenancy nodes with local // SSDs or GPUs are not supported. If the sole tenancy or dedicated nodes don't have capacity for selected instance @@ -82,81 +112,120 @@ type ConstraintsInitParameters struct { // the sole tenancy or dedicated node (example: setting min CPU to 16). DedicatedNodeAffinity []DedicatedNodeAffinityInitParameters `json:"dedicatedNodeAffinity,omitempty" tf:"dedicated_node_affinity,omitempty"` + // (Boolean) Enable/disable spot diversity policy. When enabled, autoscaler will try to balance between diverse and cost optimal instance types. // Enable/disable spot diversity policy. When enabled, autoscaler will try to balance between diverse and cost optimal instance types. EnableSpotDiversity *bool `json:"enableSpotDiversity,omitempty" tf:"enable_spot_diversity,omitempty"` + // (Number) Fallback restore rate in seconds: defines how much time should pass before spot fallback should be attempted to be restored to real spot. // Fallback restore rate in seconds: defines how much time should pass before spot fallback should be attempted to be restored to real spot. FallbackRestoreRateSeconds *float64 `json:"fallbackRestoreRateSeconds,omitempty" tf:"fallback_restore_rate_seconds,omitempty"` + // (Block List, Max: 1) (see below for nested schema) Gpu []GpuInitParameters `json:"gpu,omitempty" tf:"gpu,omitempty"` + // (Block List, Max: 1) (see below for nested schema) InstanceFamilies []InstanceFamiliesInitParameters `json:"instanceFamilies,omitempty" tf:"instance_families,omitempty"` + // will only pick nodes with GPU if true // GPU instance constraint - will only pick nodes with GPU if true IsGpuOnly *bool `json:"isGpuOnly,omitempty" tf:"is_gpu_only,omitempty"` + // (Number) Max CPU cores per node. // Max CPU cores per node. MaxCPU *float64 `json:"maxCpu,omitempty" tf:"max_cpu,omitempty"` + // (Number) Max Memory (Mib) per node. // Max Memory (Mib) per node. MaxMemory *float64 `json:"maxMemory,omitempty" tf:"max_memory,omitempty"` + // (Number) Min CPU cores per node. // Min CPU cores per node. MinCPU *float64 `json:"minCpu,omitempty" tf:"min_cpu,omitempty"` + // (Number) Min Memory (Mib) per node. // Min Memory (Mib) per node. MinMemory *float64 `json:"minMemory,omitempty" tf:"min_memory,omitempty"` + // demand instances in the considered pool. // Should include on-demand instances in the considered pool. OnDemand *bool `json:"onDemand,omitempty" tf:"on_demand,omitempty"` + // (List of String) List of acceptable instance Operating Systems, the default is linux. Allowed values: linux, windows. // List of acceptable instance Operating Systems, the default is linux. Allowed values: linux, windows. Os []*string `json:"os,omitempty" tf:"os,omitempty"` + // (Boolean) Should include spot instances in the considered pool. // Should include spot instances in the considered pool. Spot *bool `json:"spot,omitempty" tf:"spot,omitempty"` + // (Number) Allowed node configuration price increase when diversifying instance types. E.g. if the value is 10%, then the overall price of diversified instance types can be 10% higher than the price of the optimal configuration. // Allowed node configuration price increase when diversifying instance types. E.g. if the value is 10%, then the overall price of diversified instance types can be 10% higher than the price of the optimal configuration. SpotDiversityPriceIncreaseLimitPercent *float64 `json:"spotDiversityPriceIncreaseLimitPercent,omitempty" tf:"spot_diversity_price_increase_limit_percent,omitempty"` + // (Boolean) Enable/disable spot interruption predictions. // Enable/disable spot interruption predictions. SpotInterruptionPredictionsEnabled *bool `json:"spotInterruptionPredictionsEnabled,omitempty" tf:"spot_interruption_predictions_enabled,omitempty"` + // rebalance-recommendations" or "interruption-predictions". // Spot interruption predictions type. Can be either "aws-rebalance-recommendations" or "interruption-predictions". SpotInterruptionPredictionsType *string `json:"spotInterruptionPredictionsType,omitempty" tf:"spot_interruption_predictions_type,omitempty"` + // (Boolean) Storage optimized instance constraint (deprecated). // Storage optimized instance constraint (deprecated). StorageOptimized *bool `json:"storageOptimized,omitempty" tf:"storage_optimized,omitempty"` + // will only pick storage optimized nodes if enabled and won't pick if disabled. Empty value will have no effect. Supported values: enabled, disabled or empty string. // Storage optimized instance constraint - will only pick storage optimized nodes if enabled and won't pick if disabled. Empty value will have no effect. Supported values: `enabled`, `disabled` or empty string. StorageOptimizedState *string `json:"storageOptimizedState,omitempty" tf:"storage_optimized_state,omitempty"` + // when true, on-demand instances will be created, when spots are unavailable. // Spot instance fallback constraint - when true, on-demand instances will be created, when spots are unavailable. UseSpotFallbacks *bool `json:"useSpotFallbacks,omitempty" tf:"use_spot_fallbacks,omitempty"` } type ConstraintsObservation struct { + // (List of String) Priority ordering of architectures, specifying no priority will pick cheapest. Allowed values: amd64, arm64. + // Priority ordering of architectures, specifying no priority will pick cheapest. Allowed values: amd64, arm64. + ArchitecturePriority []*string `json:"architecturePriority,omitempty" tf:"architecture_priority,omitempty"` + + // (List of String) List of acceptable instance CPU architectures, the default is amd64. Allowed values: amd64, arm64. // List of acceptable instance CPU architectures, the default is amd64. Allowed values: amd64, arm64. Architectures []*string `json:"architectures,omitempty" tf:"architectures,omitempty"` + // (List of String) The list of AZ names to consider for the node template, if empty or not set all AZs are considered. // The list of AZ names to consider for the node template, if empty or not set all AZs are considered. Azs []*string `json:"azs,omitempty" tf:"azs,omitempty"` + // (String) Will include burstable instances when enabled otherwise they will be excluded. Supported values: enabled, disabled or “. // Will include burstable instances when enabled otherwise they will be excluded. Supported values: `enabled`, `disabled` or “. BurstableInstances *string `json:"burstableInstances,omitempty" tf:"burstable_instances,omitempty"` + // (List of String) List of acceptable CPU manufacturers. Allowed values: AMD, AMPERE, APPLE, AWS, INTEL. + // List of acceptable CPU manufacturers. Allowed values: AMD, AMPERE, APPLE, AWS, INTEL. + CPUManufacturers []*string `json:"cpuManufacturers,omitempty" tf:"cpu_manufacturers,omitempty"` + + // (Boolean) Compute optimized instance constraint (deprecated). // Compute optimized instance constraint (deprecated). ComputeOptimized *bool `json:"computeOptimized,omitempty" tf:"compute_optimized,omitempty"` + // (String) Will only include compute optimized nodes when enabled and exclude compute optimized nodes when disabled. Empty value won't have effect on instances filter. Supported values: enabled, disabled or empty string. // Will only include compute optimized nodes when enabled and exclude compute optimized nodes when disabled. Empty value won't have effect on instances filter. Supported values: `enabled`, `disabled` or empty string. ComputeOptimizedState *string `json:"computeOptimizedState,omitempty" tf:"compute_optimized_state,omitempty"` + // (Block List) (see below for nested schema) CustomPriority []CustomPriorityObservation `json:"customPriority,omitempty" tf:"custom_priority,omitempty"` + // (String) Will include customer specific (preview) instances when enabled otherwise they will be excluded. Supported values: enabled, disabled or “. // Will include customer specific (preview) instances when enabled otherwise they will be excluded. Supported values: `enabled`, `disabled` or “. CustomerSpecific *string `json:"customerSpecific,omitempty" tf:"customer_specific,omitempty"` + // creates preference for instances to be created on sole tenancy or dedicated nodes. This + // feature is only available for GCP clusters and sole tenancy nodes with local + // SSDs or GPUs are not supported. If the sole tenancy or dedicated nodes don't have capacity for selected instance + // type, the Autoscaler will fall back to multi-tenant instance types available for this Node Template. + // Other instance constraints are applied when the Autoscaler picks available instance types that can be created on + // the sole tenancy or dedicated node (example: setting min CPU to 16). (see below for nested schema) // Dedicated node affinity - creates preference for instances to be created on sole tenancy or dedicated nodes. This // feature is only available for GCP clusters and sole tenancy nodes with local // SSDs or GPUs are not supported. If the sole tenancy or dedicated nodes don't have capacity for selected instance @@ -165,88 +234,129 @@ type ConstraintsObservation struct { // the sole tenancy or dedicated node (example: setting min CPU to 16). DedicatedNodeAffinity []DedicatedNodeAffinityObservation `json:"dedicatedNodeAffinity,omitempty" tf:"dedicated_node_affinity,omitempty"` + // (Boolean) Enable/disable spot diversity policy. When enabled, autoscaler will try to balance between diverse and cost optimal instance types. // Enable/disable spot diversity policy. When enabled, autoscaler will try to balance between diverse and cost optimal instance types. EnableSpotDiversity *bool `json:"enableSpotDiversity,omitempty" tf:"enable_spot_diversity,omitempty"` + // (Number) Fallback restore rate in seconds: defines how much time should pass before spot fallback should be attempted to be restored to real spot. // Fallback restore rate in seconds: defines how much time should pass before spot fallback should be attempted to be restored to real spot. FallbackRestoreRateSeconds *float64 `json:"fallbackRestoreRateSeconds,omitempty" tf:"fallback_restore_rate_seconds,omitempty"` + // (Block List, Max: 1) (see below for nested schema) Gpu []GpuObservation `json:"gpu,omitempty" tf:"gpu,omitempty"` + // (Block List, Max: 1) (see below for nested schema) InstanceFamilies []InstanceFamiliesObservation `json:"instanceFamilies,omitempty" tf:"instance_families,omitempty"` + // will only pick nodes with GPU if true // GPU instance constraint - will only pick nodes with GPU if true IsGpuOnly *bool `json:"isGpuOnly,omitempty" tf:"is_gpu_only,omitempty"` + // (Number) Max CPU cores per node. // Max CPU cores per node. MaxCPU *float64 `json:"maxCpu,omitempty" tf:"max_cpu,omitempty"` + // (Number) Max Memory (Mib) per node. // Max Memory (Mib) per node. MaxMemory *float64 `json:"maxMemory,omitempty" tf:"max_memory,omitempty"` + // (Number) Min CPU cores per node. // Min CPU cores per node. MinCPU *float64 `json:"minCpu,omitempty" tf:"min_cpu,omitempty"` + // (Number) Min Memory (Mib) per node. // Min Memory (Mib) per node. MinMemory *float64 `json:"minMemory,omitempty" tf:"min_memory,omitempty"` + // demand instances in the considered pool. // Should include on-demand instances in the considered pool. OnDemand *bool `json:"onDemand,omitempty" tf:"on_demand,omitempty"` + // (List of String) List of acceptable instance Operating Systems, the default is linux. Allowed values: linux, windows. // List of acceptable instance Operating Systems, the default is linux. Allowed values: linux, windows. Os []*string `json:"os,omitempty" tf:"os,omitempty"` + // (Boolean) Should include spot instances in the considered pool. // Should include spot instances in the considered pool. Spot *bool `json:"spot,omitempty" tf:"spot,omitempty"` + // (Number) Allowed node configuration price increase when diversifying instance types. E.g. if the value is 10%, then the overall price of diversified instance types can be 10% higher than the price of the optimal configuration. // Allowed node configuration price increase when diversifying instance types. E.g. if the value is 10%, then the overall price of diversified instance types can be 10% higher than the price of the optimal configuration. SpotDiversityPriceIncreaseLimitPercent *float64 `json:"spotDiversityPriceIncreaseLimitPercent,omitempty" tf:"spot_diversity_price_increase_limit_percent,omitempty"` + // (Boolean) Enable/disable spot interruption predictions. // Enable/disable spot interruption predictions. SpotInterruptionPredictionsEnabled *bool `json:"spotInterruptionPredictionsEnabled,omitempty" tf:"spot_interruption_predictions_enabled,omitempty"` + // rebalance-recommendations" or "interruption-predictions". // Spot interruption predictions type. Can be either "aws-rebalance-recommendations" or "interruption-predictions". SpotInterruptionPredictionsType *string `json:"spotInterruptionPredictionsType,omitempty" tf:"spot_interruption_predictions_type,omitempty"` + // (Boolean) Storage optimized instance constraint (deprecated). // Storage optimized instance constraint (deprecated). StorageOptimized *bool `json:"storageOptimized,omitempty" tf:"storage_optimized,omitempty"` + // will only pick storage optimized nodes if enabled and won't pick if disabled. Empty value will have no effect. Supported values: enabled, disabled or empty string. // Storage optimized instance constraint - will only pick storage optimized nodes if enabled and won't pick if disabled. Empty value will have no effect. Supported values: `enabled`, `disabled` or empty string. StorageOptimizedState *string `json:"storageOptimizedState,omitempty" tf:"storage_optimized_state,omitempty"` + // when true, on-demand instances will be created, when spots are unavailable. // Spot instance fallback constraint - when true, on-demand instances will be created, when spots are unavailable. UseSpotFallbacks *bool `json:"useSpotFallbacks,omitempty" tf:"use_spot_fallbacks,omitempty"` } type ConstraintsParameters struct { + // (List of String) Priority ordering of architectures, specifying no priority will pick cheapest. Allowed values: amd64, arm64. + // Priority ordering of architectures, specifying no priority will pick cheapest. Allowed values: amd64, arm64. + // +kubebuilder:validation:Optional + ArchitecturePriority []*string `json:"architecturePriority,omitempty" tf:"architecture_priority,omitempty"` + + // (List of String) List of acceptable instance CPU architectures, the default is amd64. Allowed values: amd64, arm64. // List of acceptable instance CPU architectures, the default is amd64. Allowed values: amd64, arm64. // +kubebuilder:validation:Optional Architectures []*string `json:"architectures,omitempty" tf:"architectures,omitempty"` + // (List of String) The list of AZ names to consider for the node template, if empty or not set all AZs are considered. // The list of AZ names to consider for the node template, if empty or not set all AZs are considered. // +kubebuilder:validation:Optional Azs []*string `json:"azs,omitempty" tf:"azs,omitempty"` + // (String) Will include burstable instances when enabled otherwise they will be excluded. Supported values: enabled, disabled or “. // Will include burstable instances when enabled otherwise they will be excluded. Supported values: `enabled`, `disabled` or “. // +kubebuilder:validation:Optional BurstableInstances *string `json:"burstableInstances,omitempty" tf:"burstable_instances,omitempty"` + // (List of String) List of acceptable CPU manufacturers. Allowed values: AMD, AMPERE, APPLE, AWS, INTEL. + // List of acceptable CPU manufacturers. Allowed values: AMD, AMPERE, APPLE, AWS, INTEL. + // +kubebuilder:validation:Optional + CPUManufacturers []*string `json:"cpuManufacturers,omitempty" tf:"cpu_manufacturers,omitempty"` + + // (Boolean) Compute optimized instance constraint (deprecated). // Compute optimized instance constraint (deprecated). // +kubebuilder:validation:Optional ComputeOptimized *bool `json:"computeOptimized,omitempty" tf:"compute_optimized,omitempty"` + // (String) Will only include compute optimized nodes when enabled and exclude compute optimized nodes when disabled. Empty value won't have effect on instances filter. Supported values: enabled, disabled or empty string. // Will only include compute optimized nodes when enabled and exclude compute optimized nodes when disabled. Empty value won't have effect on instances filter. Supported values: `enabled`, `disabled` or empty string. // +kubebuilder:validation:Optional ComputeOptimizedState *string `json:"computeOptimizedState,omitempty" tf:"compute_optimized_state,omitempty"` + // (Block List) (see below for nested schema) // +kubebuilder:validation:Optional CustomPriority []CustomPriorityParameters `json:"customPriority,omitempty" tf:"custom_priority,omitempty"` + // (String) Will include customer specific (preview) instances when enabled otherwise they will be excluded. Supported values: enabled, disabled or “. // Will include customer specific (preview) instances when enabled otherwise they will be excluded. Supported values: `enabled`, `disabled` or “. // +kubebuilder:validation:Optional CustomerSpecific *string `json:"customerSpecific,omitempty" tf:"customer_specific,omitempty"` + // creates preference for instances to be created on sole tenancy or dedicated nodes. This + // feature is only available for GCP clusters and sole tenancy nodes with local + // SSDs or GPUs are not supported. If the sole tenancy or dedicated nodes don't have capacity for selected instance + // type, the Autoscaler will fall back to multi-tenant instance types available for this Node Template. + // Other instance constraints are applied when the Autoscaler picks available instance types that can be created on + // the sole tenancy or dedicated node (example: setting min CPU to 16). (see below for nested schema) // Dedicated node affinity - creates preference for instances to be created on sole tenancy or dedicated nodes. This // feature is only available for GCP clusters and sole tenancy nodes with local // SSDs or GPUs are not supported. If the sole tenancy or dedicated nodes don't have capacity for selected instance @@ -256,72 +366,90 @@ type ConstraintsParameters struct { // +kubebuilder:validation:Optional DedicatedNodeAffinity []DedicatedNodeAffinityParameters `json:"dedicatedNodeAffinity,omitempty" tf:"dedicated_node_affinity,omitempty"` + // (Boolean) Enable/disable spot diversity policy. When enabled, autoscaler will try to balance between diverse and cost optimal instance types. // Enable/disable spot diversity policy. When enabled, autoscaler will try to balance between diverse and cost optimal instance types. // +kubebuilder:validation:Optional EnableSpotDiversity *bool `json:"enableSpotDiversity,omitempty" tf:"enable_spot_diversity,omitempty"` + // (Number) Fallback restore rate in seconds: defines how much time should pass before spot fallback should be attempted to be restored to real spot. // Fallback restore rate in seconds: defines how much time should pass before spot fallback should be attempted to be restored to real spot. // +kubebuilder:validation:Optional FallbackRestoreRateSeconds *float64 `json:"fallbackRestoreRateSeconds,omitempty" tf:"fallback_restore_rate_seconds,omitempty"` + // (Block List, Max: 1) (see below for nested schema) // +kubebuilder:validation:Optional Gpu []GpuParameters `json:"gpu,omitempty" tf:"gpu,omitempty"` + // (Block List, Max: 1) (see below for nested schema) // +kubebuilder:validation:Optional InstanceFamilies []InstanceFamiliesParameters `json:"instanceFamilies,omitempty" tf:"instance_families,omitempty"` + // will only pick nodes with GPU if true // GPU instance constraint - will only pick nodes with GPU if true // +kubebuilder:validation:Optional IsGpuOnly *bool `json:"isGpuOnly,omitempty" tf:"is_gpu_only,omitempty"` + // (Number) Max CPU cores per node. // Max CPU cores per node. // +kubebuilder:validation:Optional MaxCPU *float64 `json:"maxCpu,omitempty" tf:"max_cpu,omitempty"` + // (Number) Max Memory (Mib) per node. // Max Memory (Mib) per node. // +kubebuilder:validation:Optional MaxMemory *float64 `json:"maxMemory,omitempty" tf:"max_memory,omitempty"` + // (Number) Min CPU cores per node. // Min CPU cores per node. // +kubebuilder:validation:Optional MinCPU *float64 `json:"minCpu,omitempty" tf:"min_cpu,omitempty"` + // (Number) Min Memory (Mib) per node. // Min Memory (Mib) per node. // +kubebuilder:validation:Optional MinMemory *float64 `json:"minMemory,omitempty" tf:"min_memory,omitempty"` + // demand instances in the considered pool. // Should include on-demand instances in the considered pool. // +kubebuilder:validation:Optional OnDemand *bool `json:"onDemand,omitempty" tf:"on_demand,omitempty"` + // (List of String) List of acceptable instance Operating Systems, the default is linux. Allowed values: linux, windows. // List of acceptable instance Operating Systems, the default is linux. Allowed values: linux, windows. // +kubebuilder:validation:Optional Os []*string `json:"os,omitempty" tf:"os,omitempty"` + // (Boolean) Should include spot instances in the considered pool. // Should include spot instances in the considered pool. // +kubebuilder:validation:Optional Spot *bool `json:"spot,omitempty" tf:"spot,omitempty"` + // (Number) Allowed node configuration price increase when diversifying instance types. E.g. if the value is 10%, then the overall price of diversified instance types can be 10% higher than the price of the optimal configuration. // Allowed node configuration price increase when diversifying instance types. E.g. if the value is 10%, then the overall price of diversified instance types can be 10% higher than the price of the optimal configuration. // +kubebuilder:validation:Optional SpotDiversityPriceIncreaseLimitPercent *float64 `json:"spotDiversityPriceIncreaseLimitPercent,omitempty" tf:"spot_diversity_price_increase_limit_percent,omitempty"` + // (Boolean) Enable/disable spot interruption predictions. // Enable/disable spot interruption predictions. // +kubebuilder:validation:Optional SpotInterruptionPredictionsEnabled *bool `json:"spotInterruptionPredictionsEnabled,omitempty" tf:"spot_interruption_predictions_enabled,omitempty"` + // rebalance-recommendations" or "interruption-predictions". // Spot interruption predictions type. Can be either "aws-rebalance-recommendations" or "interruption-predictions". // +kubebuilder:validation:Optional SpotInterruptionPredictionsType *string `json:"spotInterruptionPredictionsType,omitempty" tf:"spot_interruption_predictions_type,omitempty"` + // (Boolean) Storage optimized instance constraint (deprecated). // Storage optimized instance constraint (deprecated). // +kubebuilder:validation:Optional StorageOptimized *bool `json:"storageOptimized,omitempty" tf:"storage_optimized,omitempty"` + // will only pick storage optimized nodes if enabled and won't pick if disabled. Empty value will have no effect. Supported values: enabled, disabled or empty string. // Storage optimized instance constraint - will only pick storage optimized nodes if enabled and won't pick if disabled. Empty value will have no effect. Supported values: `enabled`, `disabled` or empty string. // +kubebuilder:validation:Optional StorageOptimizedState *string `json:"storageOptimizedState,omitempty" tf:"storage_optimized_state,omitempty"` + // when true, on-demand instances will be created, when spots are unavailable. // Spot instance fallback constraint - when true, on-demand instances will be created, when spots are unavailable. // +kubebuilder:validation:Optional UseSpotFallbacks *bool `json:"useSpotFallbacks,omitempty" tf:"use_spot_fallbacks,omitempty"` @@ -329,38 +457,47 @@ type ConstraintsParameters struct { type CustomPriorityInitParameters struct { + // (Block List, Max: 1) (see below for nested schema) // Instance families to prioritize in this tier. InstanceFamilies []*string `json:"instanceFamilies,omitempty" tf:"instance_families,omitempty"` + // demand instances in the considered pool. // If true, this tier will apply to on-demand instances. OnDemand *bool `json:"onDemand,omitempty" tf:"on_demand,omitempty"` + // (Boolean) Should include spot instances in the considered pool. // If true, this tier will apply to spot instances. Spot *bool `json:"spot,omitempty" tf:"spot,omitempty"` } type CustomPriorityObservation struct { + // (Block List, Max: 1) (see below for nested schema) // Instance families to prioritize in this tier. InstanceFamilies []*string `json:"instanceFamilies,omitempty" tf:"instance_families,omitempty"` + // demand instances in the considered pool. // If true, this tier will apply to on-demand instances. OnDemand *bool `json:"onDemand,omitempty" tf:"on_demand,omitempty"` + // (Boolean) Should include spot instances in the considered pool. // If true, this tier will apply to spot instances. Spot *bool `json:"spot,omitempty" tf:"spot,omitempty"` } type CustomPriorityParameters struct { + // (Block List, Max: 1) (see below for nested schema) // Instance families to prioritize in this tier. // +kubebuilder:validation:Optional InstanceFamilies []*string `json:"instanceFamilies,omitempty" tf:"instance_families,omitempty"` + // demand instances in the considered pool. // If true, this tier will apply to on-demand instances. // +kubebuilder:validation:Optional OnDemand *bool `json:"onDemand,omitempty" tf:"on_demand,omitempty"` + // (Boolean) Should include spot instances in the considered pool. // If true, this tier will apply to spot instances. // +kubebuilder:validation:Optional Spot *bool `json:"spot,omitempty" tf:"spot,omitempty"` @@ -368,82 +505,105 @@ type CustomPriorityParameters struct { type CustomTaintsInitParameters struct { + // (String) Effect of a taint to be added to nodes created from this template, the default is NoSchedule. Allowed values: NoSchedule, NoExecute. // Effect of a taint to be added to nodes created from this template, the default is NoSchedule. Allowed values: NoSchedule, NoExecute. Effect *string `json:"effect,omitempty" tf:"effect,omitempty"` + // (String) Key of the node affinity selector. // Key of a taint to be added to nodes created from this template. Key *string `json:"key,omitempty" tf:"key,omitempty"` + // (String) Value of a taint to be added to nodes created from this template. // Value of a taint to be added to nodes created from this template. Value *string `json:"value,omitempty" tf:"value,omitempty"` } type CustomTaintsObservation struct { + // (String) Effect of a taint to be added to nodes created from this template, the default is NoSchedule. Allowed values: NoSchedule, NoExecute. // Effect of a taint to be added to nodes created from this template, the default is NoSchedule. Allowed values: NoSchedule, NoExecute. Effect *string `json:"effect,omitempty" tf:"effect,omitempty"` + // (String) Key of the node affinity selector. // Key of a taint to be added to nodes created from this template. Key *string `json:"key,omitempty" tf:"key,omitempty"` + // (String) Value of a taint to be added to nodes created from this template. // Value of a taint to be added to nodes created from this template. Value *string `json:"value,omitempty" tf:"value,omitempty"` } type CustomTaintsParameters struct { + // (String) Effect of a taint to be added to nodes created from this template, the default is NoSchedule. Allowed values: NoSchedule, NoExecute. // Effect of a taint to be added to nodes created from this template, the default is NoSchedule. Allowed values: NoSchedule, NoExecute. // +kubebuilder:validation:Optional Effect *string `json:"effect,omitempty" tf:"effect,omitempty"` + // (String) Key of the node affinity selector. // Key of a taint to be added to nodes created from this template. // +kubebuilder:validation:Optional Key *string `json:"key" tf:"key,omitempty"` + // (String) Value of a taint to be added to nodes created from this template. // Value of a taint to be added to nodes created from this template. // +kubebuilder:validation:Optional Value *string `json:"value,omitempty" tf:"value,omitempty"` } type DedicatedNodeAffinityInitParameters struct { + + // (Block List) (see below for nested schema) Affinity []AffinityInitParameters `json:"affinity,omitempty" tf:"affinity,omitempty"` + // (String) Availability zone name. // Availability zone name. AzName *string `json:"azName,omitempty" tf:"az_name,omitempty"` + // (List of String) Instance/node types in this node group. // Instance/node types in this node group. InstanceTypes []*string `json:"instanceTypes,omitempty" tf:"instance_types,omitempty"` + // (String) Name of the node template. // Name of node group. Name *string `json:"name,omitempty" tf:"name,omitempty"` } type DedicatedNodeAffinityObservation struct { + + // (Block List) (see below for nested schema) Affinity []AffinityObservation `json:"affinity,omitempty" tf:"affinity,omitempty"` + // (String) Availability zone name. // Availability zone name. AzName *string `json:"azName,omitempty" tf:"az_name,omitempty"` + // (List of String) Instance/node types in this node group. // Instance/node types in this node group. InstanceTypes []*string `json:"instanceTypes,omitempty" tf:"instance_types,omitempty"` + // (String) Name of the node template. // Name of node group. Name *string `json:"name,omitempty" tf:"name,omitempty"` } type DedicatedNodeAffinityParameters struct { + // (Block List) (see below for nested schema) // +kubebuilder:validation:Optional Affinity []AffinityParameters `json:"affinity,omitempty" tf:"affinity,omitempty"` + // (String) Availability zone name. // Availability zone name. // +kubebuilder:validation:Optional AzName *string `json:"azName" tf:"az_name,omitempty"` + // (List of String) Instance/node types in this node group. // Instance/node types in this node group. // +kubebuilder:validation:Optional InstanceTypes []*string `json:"instanceTypes" tf:"instance_types,omitempty"` + // (String) Name of the node template. // Name of node group. // +kubebuilder:validation:Optional Name *string `json:"name" tf:"name,omitempty"` @@ -451,58 +611,73 @@ type DedicatedNodeAffinityParameters struct { type GpuInitParameters struct { + // (List of String) Names of the GPUs to exclude. // Names of the GPUs to exclude. ExcludeNames []*string `json:"excludeNames,omitempty" tf:"exclude_names,omitempty"` + // (List of String) Instance families to include when filtering (excludes all other families). // Instance families to include when filtering (excludes all other families). IncludeNames []*string `json:"includeNames,omitempty" tf:"include_names,omitempty"` + // NVIDIA, AMD. // Manufacturers of the gpus to select - NVIDIA, AMD. Manufacturers []*string `json:"manufacturers,omitempty" tf:"manufacturers,omitempty"` + // (Number) Max GPU count for the instance type to have. // Max GPU count for the instance type to have. MaxCount *float64 `json:"maxCount,omitempty" tf:"max_count,omitempty"` + // (Number) Min GPU count for the instance type to have. // Min GPU count for the instance type to have. MinCount *float64 `json:"minCount,omitempty" tf:"min_count,omitempty"` } type GpuObservation struct { + // (List of String) Names of the GPUs to exclude. // Names of the GPUs to exclude. ExcludeNames []*string `json:"excludeNames,omitempty" tf:"exclude_names,omitempty"` + // (List of String) Instance families to include when filtering (excludes all other families). // Instance families to include when filtering (excludes all other families). IncludeNames []*string `json:"includeNames,omitempty" tf:"include_names,omitempty"` + // NVIDIA, AMD. // Manufacturers of the gpus to select - NVIDIA, AMD. Manufacturers []*string `json:"manufacturers,omitempty" tf:"manufacturers,omitempty"` + // (Number) Max GPU count for the instance type to have. // Max GPU count for the instance type to have. MaxCount *float64 `json:"maxCount,omitempty" tf:"max_count,omitempty"` + // (Number) Min GPU count for the instance type to have. // Min GPU count for the instance type to have. MinCount *float64 `json:"minCount,omitempty" tf:"min_count,omitempty"` } type GpuParameters struct { + // (List of String) Names of the GPUs to exclude. // Names of the GPUs to exclude. // +kubebuilder:validation:Optional ExcludeNames []*string `json:"excludeNames,omitempty" tf:"exclude_names,omitempty"` + // (List of String) Instance families to include when filtering (excludes all other families). // Instance families to include when filtering (excludes all other families). // +kubebuilder:validation:Optional IncludeNames []*string `json:"includeNames,omitempty" tf:"include_names,omitempty"` + // NVIDIA, AMD. // Manufacturers of the gpus to select - NVIDIA, AMD. // +kubebuilder:validation:Optional Manufacturers []*string `json:"manufacturers,omitempty" tf:"manufacturers,omitempty"` + // (Number) Max GPU count for the instance type to have. // Max GPU count for the instance type to have. // +kubebuilder:validation:Optional MaxCount *float64 `json:"maxCount,omitempty" tf:"max_count,omitempty"` + // (Number) Min GPU count for the instance type to have. // Min GPU count for the instance type to have. // +kubebuilder:validation:Optional MinCount *float64 `json:"minCount,omitempty" tf:"min_count,omitempty"` @@ -510,28 +685,34 @@ type GpuParameters struct { type InstanceFamiliesInitParameters struct { + // (List of String) Instance families to include when filtering (excludes all other families). // Instance families to include when filtering (excludes all other families). Exclude []*string `json:"exclude,omitempty" tf:"exclude,omitempty"` + // (List of String) Instance families to exclude when filtering (includes all other families). // Instance families to exclude when filtering (includes all other families). Include []*string `json:"include,omitempty" tf:"include,omitempty"` } type InstanceFamiliesObservation struct { + // (List of String) Instance families to include when filtering (excludes all other families). // Instance families to include when filtering (excludes all other families). Exclude []*string `json:"exclude,omitempty" tf:"exclude,omitempty"` + // (List of String) Instance families to exclude when filtering (includes all other families). // Instance families to exclude when filtering (includes all other families). Include []*string `json:"include,omitempty" tf:"include,omitempty"` } type InstanceFamiliesParameters struct { + // (List of String) Instance families to include when filtering (excludes all other families). // Instance families to include when filtering (excludes all other families). // +kubebuilder:validation:Optional Exclude []*string `json:"exclude,omitempty" tf:"exclude,omitempty"` + // (List of String) Instance families to exclude when filtering (includes all other families). // Instance families to exclude when filtering (includes all other families). // +kubebuilder:validation:Optional Include []*string `json:"include,omitempty" tf:"include,omitempty"` @@ -539,6 +720,7 @@ type InstanceFamiliesParameters struct { type NodeTemplateInitParameters struct { + // (String) CAST AI cluster id. // CAST AI cluster id. // +crossplane:generate:reference:type=github.com/crossplane-contrib/crossplane-provider-castai/apis/castai/v1alpha1.EksClusterId ClusterID *string `json:"clusterId,omitempty" tf:"cluster_id,omitempty"` @@ -551,6 +733,7 @@ type NodeTemplateInitParameters struct { // +kubebuilder:validation:Optional ClusterIDSelector *v1.Selector `json:"clusterIdSelector,omitempty" tf:"-"` + // (String) CAST AI node configuration id to be used for node template. // CAST AI node configuration id to be used for node template. // +crossplane:generate:reference:type=github.com/crossplane-contrib/crossplane-provider-castai/apis/castai/v1alpha1.NodeConfiguration ConfigurationID *string `json:"configurationId,omitempty" tf:"configuration_id,omitempty"` @@ -563,80 +746,104 @@ type NodeTemplateInitParameters struct { // +kubebuilder:validation:Optional ConfigurationIDSelector *v1.Selector `json:"configurationIdSelector,omitempty" tf:"-"` + // (Block List, Max: 1) (see below for nested schema) Constraints []ConstraintsInitParameters `json:"constraints,omitempty" tf:"constraints,omitempty"` + // (Boolean) Marks whether custom instances should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP. // Marks whether custom instances should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP. CustomInstancesEnabled *bool `json:"customInstancesEnabled,omitempty" tf:"custom_instances_enabled,omitempty"` + // (Boolean) Marks whether custom instances with extended memory should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP. // Marks whether custom instances with extended memory should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP. CustomInstancesWithExtendedMemoryEnabled *bool `json:"customInstancesWithExtendedMemoryEnabled,omitempty" tf:"custom_instances_with_extended_memory_enabled,omitempty"` + // (Map of String) Custom labels to be added to nodes created from this template. // Custom labels to be added to nodes created from this template. // +mapType=granular CustomLabels map[string]*string `json:"customLabels,omitempty" tf:"custom_labels,omitempty"` + // (Block List) Custom taints to be added to the nodes created from this template. shouldTaint has to be true in order to create/update the node template with custom taints. If shouldTaint is true, but no custom taints are provided, the nodes will be tainted with the default node template taint. (see below for nested schema) // Custom taints to be added to the nodes created from this template. `shouldTaint` has to be `true` in order to create/update the node template with custom taints. If `shouldTaint` is `true`, but no custom taints are provided, the nodes will be tainted with the default node template taint. CustomTaints []CustomTaintsInitParameters `json:"customTaints,omitempty" tf:"custom_taints,omitempty"` + // (Boolean) Flag whether the node template is default. // Flag whether the node template is default. IsDefault *bool `json:"isDefault,omitempty" tf:"is_default,omitempty"` + // (Boolean) Flag whether the node template is enabled and considered for autoscaling. // Flag whether the node template is enabled and considered for autoscaling. IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + // (String) Name of the node template. // Name of the node template. Name *string `json:"name,omitempty" tf:"name,omitempty"` + // (Number) Minimum nodes that will be kept when rebalancing nodes using this node template. // Minimum nodes that will be kept when rebalancing nodes using this node template. RebalancingConfigMinNodes *float64 `json:"rebalancingConfigMinNodes,omitempty" tf:"rebalancing_config_min_nodes,omitempty"` + // (Boolean) Marks whether the templated nodes will have a taint. // Marks whether the templated nodes will have a taint. ShouldTaint *bool `json:"shouldTaint,omitempty" tf:"should_taint,omitempty"` } type NodeTemplateObservation struct { + // (String) CAST AI cluster id. // CAST AI cluster id. ClusterID *string `json:"clusterId,omitempty" tf:"cluster_id,omitempty"` + // (String) CAST AI node configuration id to be used for node template. // CAST AI node configuration id to be used for node template. ConfigurationID *string `json:"configurationId,omitempty" tf:"configuration_id,omitempty"` + // (Block List, Max: 1) (see below for nested schema) Constraints []ConstraintsObservation `json:"constraints,omitempty" tf:"constraints,omitempty"` + // (Boolean) Marks whether custom instances should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP. // Marks whether custom instances should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP. CustomInstancesEnabled *bool `json:"customInstancesEnabled,omitempty" tf:"custom_instances_enabled,omitempty"` + // (Boolean) Marks whether custom instances with extended memory should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP. // Marks whether custom instances with extended memory should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP. CustomInstancesWithExtendedMemoryEnabled *bool `json:"customInstancesWithExtendedMemoryEnabled,omitempty" tf:"custom_instances_with_extended_memory_enabled,omitempty"` + // (Map of String) Custom labels to be added to nodes created from this template. // Custom labels to be added to nodes created from this template. // +mapType=granular CustomLabels map[string]*string `json:"customLabels,omitempty" tf:"custom_labels,omitempty"` + // (Block List) Custom taints to be added to the nodes created from this template. shouldTaint has to be true in order to create/update the node template with custom taints. If shouldTaint is true, but no custom taints are provided, the nodes will be tainted with the default node template taint. (see below for nested schema) // Custom taints to be added to the nodes created from this template. `shouldTaint` has to be `true` in order to create/update the node template with custom taints. If `shouldTaint` is `true`, but no custom taints are provided, the nodes will be tainted with the default node template taint. CustomTaints []CustomTaintsObservation `json:"customTaints,omitempty" tf:"custom_taints,omitempty"` + // (String) The ID of this resource. ID *string `json:"id,omitempty" tf:"id,omitempty"` + // (Boolean) Flag whether the node template is default. // Flag whether the node template is default. IsDefault *bool `json:"isDefault,omitempty" tf:"is_default,omitempty"` + // (Boolean) Flag whether the node template is enabled and considered for autoscaling. // Flag whether the node template is enabled and considered for autoscaling. IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + // (String) Name of the node template. // Name of the node template. Name *string `json:"name,omitempty" tf:"name,omitempty"` + // (Number) Minimum nodes that will be kept when rebalancing nodes using this node template. // Minimum nodes that will be kept when rebalancing nodes using this node template. RebalancingConfigMinNodes *float64 `json:"rebalancingConfigMinNodes,omitempty" tf:"rebalancing_config_min_nodes,omitempty"` + // (Boolean) Marks whether the templated nodes will have a taint. // Marks whether the templated nodes will have a taint. ShouldTaint *bool `json:"shouldTaint,omitempty" tf:"should_taint,omitempty"` } type NodeTemplateParameters struct { + // (String) CAST AI cluster id. // CAST AI cluster id. // +crossplane:generate:reference:type=github.com/crossplane-contrib/crossplane-provider-castai/apis/castai/v1alpha1.EksClusterId // +kubebuilder:validation:Optional @@ -650,6 +857,7 @@ type NodeTemplateParameters struct { // +kubebuilder:validation:Optional ClusterIDSelector *v1.Selector `json:"clusterIdSelector,omitempty" tf:"-"` + // (String) CAST AI node configuration id to be used for node template. // CAST AI node configuration id to be used for node template. // +crossplane:generate:reference:type=github.com/crossplane-contrib/crossplane-provider-castai/apis/castai/v1alpha1.NodeConfiguration // +kubebuilder:validation:Optional @@ -663,42 +871,52 @@ type NodeTemplateParameters struct { // +kubebuilder:validation:Optional ConfigurationIDSelector *v1.Selector `json:"configurationIdSelector,omitempty" tf:"-"` + // (Block List, Max: 1) (see below for nested schema) // +kubebuilder:validation:Optional Constraints []ConstraintsParameters `json:"constraints,omitempty" tf:"constraints,omitempty"` + // (Boolean) Marks whether custom instances should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP. // Marks whether custom instances should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP. // +kubebuilder:validation:Optional CustomInstancesEnabled *bool `json:"customInstancesEnabled,omitempty" tf:"custom_instances_enabled,omitempty"` + // (Boolean) Marks whether custom instances with extended memory should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP. // Marks whether custom instances with extended memory should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP. // +kubebuilder:validation:Optional CustomInstancesWithExtendedMemoryEnabled *bool `json:"customInstancesWithExtendedMemoryEnabled,omitempty" tf:"custom_instances_with_extended_memory_enabled,omitempty"` + // (Map of String) Custom labels to be added to nodes created from this template. // Custom labels to be added to nodes created from this template. // +kubebuilder:validation:Optional // +mapType=granular CustomLabels map[string]*string `json:"customLabels,omitempty" tf:"custom_labels,omitempty"` + // (Block List) Custom taints to be added to the nodes created from this template. shouldTaint has to be true in order to create/update the node template with custom taints. If shouldTaint is true, but no custom taints are provided, the nodes will be tainted with the default node template taint. (see below for nested schema) // Custom taints to be added to the nodes created from this template. `shouldTaint` has to be `true` in order to create/update the node template with custom taints. If `shouldTaint` is `true`, but no custom taints are provided, the nodes will be tainted with the default node template taint. // +kubebuilder:validation:Optional CustomTaints []CustomTaintsParameters `json:"customTaints,omitempty" tf:"custom_taints,omitempty"` + // (Boolean) Flag whether the node template is default. // Flag whether the node template is default. // +kubebuilder:validation:Optional IsDefault *bool `json:"isDefault,omitempty" tf:"is_default,omitempty"` + // (Boolean) Flag whether the node template is enabled and considered for autoscaling. // Flag whether the node template is enabled and considered for autoscaling. // +kubebuilder:validation:Optional IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + // (String) Name of the node template. // Name of the node template. // +kubebuilder:validation:Optional Name *string `json:"name,omitempty" tf:"name,omitempty"` + // (Number) Minimum nodes that will be kept when rebalancing nodes using this node template. // Minimum nodes that will be kept when rebalancing nodes using this node template. // +kubebuilder:validation:Optional RebalancingConfigMinNodes *float64 `json:"rebalancingConfigMinNodes,omitempty" tf:"rebalancing_config_min_nodes,omitempty"` + // (Boolean) Marks whether the templated nodes will have a taint. // Marks whether the templated nodes will have a taint. // +kubebuilder:validation:Optional ShouldTaint *bool `json:"shouldTaint,omitempty" tf:"should_taint,omitempty"` @@ -731,7 +949,7 @@ type NodeTemplateStatus struct { // +kubebuilder:subresource:status // +kubebuilder:storageversion -// NodeTemplate is the Schema for the NodeTemplates API. +// NodeTemplate is the Schema for the NodeTemplates API. CAST AI node template resource to manage node templates // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" // +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" // +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" diff --git a/apis/castai/v1alpha1/zz_organizationmembers_types.go b/apis/castai/v1alpha1/zz_organizationmembers_types.go index e4ad94c..2b930d8 100755 --- a/apis/castai/v1alpha1/zz_organizationmembers_types.go +++ b/apis/castai/v1alpha1/zz_organizationmembers_types.go @@ -15,49 +15,63 @@ import ( type OrganizationMembersInitParameters struct { + // (List of String) A list of email addresses corresponding to users who should be given member access to the organization. // A list of email addresses corresponding to users who should be given member access to the organization. Members []*string `json:"members,omitempty" tf:"members,omitempty"` + // (String) CAST AI organization ID. // CAST AI organization ID. OrganizationID *string `json:"organizationId,omitempty" tf:"organization_id,omitempty"` + // (List of String) A list of email addresses corresponding to users who should be given owner access to the organization. // A list of email addresses corresponding to users who should be given owner access to the organization. Owners []*string `json:"owners,omitempty" tf:"owners,omitempty"` + // (List of String) A list of email addresses corresponding to users who should be given viewer access to the organization. // A list of email addresses corresponding to users who should be given viewer access to the organization. Viewers []*string `json:"viewers,omitempty" tf:"viewers,omitempty"` } type OrganizationMembersObservation struct { + + // (String) The ID of this resource. ID *string `json:"id,omitempty" tf:"id,omitempty"` + // (List of String) A list of email addresses corresponding to users who should be given member access to the organization. // A list of email addresses corresponding to users who should be given member access to the organization. Members []*string `json:"members,omitempty" tf:"members,omitempty"` + // (String) CAST AI organization ID. // CAST AI organization ID. OrganizationID *string `json:"organizationId,omitempty" tf:"organization_id,omitempty"` + // (List of String) A list of email addresses corresponding to users who should be given owner access to the organization. // A list of email addresses corresponding to users who should be given owner access to the organization. Owners []*string `json:"owners,omitempty" tf:"owners,omitempty"` + // (List of String) A list of email addresses corresponding to users who should be given viewer access to the organization. // A list of email addresses corresponding to users who should be given viewer access to the organization. Viewers []*string `json:"viewers,omitempty" tf:"viewers,omitempty"` } type OrganizationMembersParameters struct { + // (List of String) A list of email addresses corresponding to users who should be given member access to the organization. // A list of email addresses corresponding to users who should be given member access to the organization. // +kubebuilder:validation:Optional Members []*string `json:"members,omitempty" tf:"members,omitempty"` + // (String) CAST AI organization ID. // CAST AI organization ID. // +kubebuilder:validation:Optional OrganizationID *string `json:"organizationId,omitempty" tf:"organization_id,omitempty"` + // (List of String) A list of email addresses corresponding to users who should be given owner access to the organization. // A list of email addresses corresponding to users who should be given owner access to the organization. // +kubebuilder:validation:Optional Owners []*string `json:"owners,omitempty" tf:"owners,omitempty"` + // (List of String) A list of email addresses corresponding to users who should be given viewer access to the organization. // A list of email addresses corresponding to users who should be given viewer access to the organization. // +kubebuilder:validation:Optional Viewers []*string `json:"viewers,omitempty" tf:"viewers,omitempty"` @@ -90,7 +104,7 @@ type OrganizationMembersStatus struct { // +kubebuilder:subresource:status // +kubebuilder:storageversion -// OrganizationMembers is the Schema for the OrganizationMemberss API. +// OrganizationMembers is the Schema for the OrganizationMemberss API. CAST AI organization members resource to manage organization members // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" // +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" // +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" diff --git a/config/provider-metadata.yaml b/config/provider-metadata.yaml index 9ed27a4..dc351bb 100644 --- a/config/provider-metadata.yaml +++ b/config/provider-metadata.yaml @@ -44,11 +44,65 @@ resources: timeouts: (Block, Optional) (see below for nested schema) update: (String) importStatements: [] - castai_autoscaler Resource - terraform-provider-castai: + castai_autoscaler: subCategory: "" description: CAST AI autoscaler resource to manage autoscaler settings - name: castai_autoscaler Resource - terraform-provider-castai + name: castai_autoscaler title: castai_autoscaler Resource - terraform-provider-castai + examples: + - name: castai_autoscaler_policy + manifest: |- + { + "autoscaler_settings": [ + { + "cluster_limits": [ + { + "cpu": [ + { + "max_cores": 10, + "min_cores": 1 + } + ], + "enabled": true + } + ], + "enabled": true, + "is_scoped_mode": false, + "node_downscaler": [ + { + "empty_nodes": [ + { + "delay_seconds": 90, + "enabled": true + } + ], + "enabled": true, + "evictor": [ + { + "aggressive_mode": false, + "cycle_interval": "60s", + "dry_run": false, + "enabled": true, + "ignore_pod_disruption_budgets": false, + "node_grace_period_minutes": 10, + "pod_eviction_failure_back_off_interval": "30s", + "scoped_mode": false + } + ] + } + ], + "node_templates_partial_matching_enabled": false, + "unschedulable_pods": [ + { + "enabled": true + } + ] + } + ], + "cluster_id": "${castai_eks_cluster.test.id}" + } + references: + cluster_id: castai_eks_cluster.test.id argumentDocs: aggressive_mode: (Boolean) enable/disable aggressive mode. By default, Evictor does not target nodes that are running unreplicated pods. This mode will make the Evictor start considering application with just a single replica. autoscaler_policies: (String) computed value to store full policies configuration @@ -84,6 +138,7 @@ resources: node_grace_period_minutes: (Number) configure the node grace period which controls the duration which must pass after a node has been created before Evictor starts considering that node. node_templates_partial_matching_enabled: (Boolean) marks whether partial matching should be used when deciding which custom node template to select. pod_eviction_failure_back_off_interval: (String) configure the pod eviction failure back off interval. If pod eviction fails then Evictor will attempt to evict it again after the amount of time specified here. + pod_pinner: '(Block List, Max: 1) defines the Cast AI Pod Pinner components settings. (see below for nested schema)' scoped_mode: (Boolean) enable/disable scoped mode. By default, Evictor targets all nodes in the cluster. This mode will constrain it to just the nodes which were created by CAST AI. spot_backup_restore_rate_seconds: (Number) defines interval on how often spot backups restore to real spot should occur. spot_backups: '(Block List, Max: 1) policy defining whether autoscaler can use spot backups instead of spot instances when spot instances are not available. (see below for nested schema)' @@ -229,35 +284,79 @@ resources: timeouts: (Block, Optional) (see below for nested schema) update: (String) importStatements: [] - castai_eks_clusterid Resource - terraform-provider-castai: + castai_eks_clusterid: subCategory: "" - name: castai_eks_clusterid Resource - terraform-provider-castai + description: Retrieve CAST AI clusterid + name: castai_eks_clusterid title: castai_eks_clusterid Resource - terraform-provider-castai + examples: + - name: cluster_id + manifest: |- + { + "account_id": "${data.aws_caller_identity.current.account_id}", + "cluster_name": "${var.cluster_name}", + "region": "${var.cluster_region}" + } + references: + account_id: data.aws_caller_identity.current.account_id + cluster_name: var.cluster_name + region: var.cluster_region argumentDocs: account_id: (String) cluster_name: (String) id: (String) The ID of this resource. region: (String) importStatements: [] - castai_eks_user_arn Resource - terraform-provider-castai: + castai_eks_user_arn: subCategory: "" - name: castai_eks_user_arn Resource - terraform-provider-castai + description: Retrieve EKS Cluster User ARN + name: castai_eks_user_arn title: castai_eks_user_arn Resource - terraform-provider-castai + examples: + - name: castai_user_arn + manifest: |- + { + "cluster_id": "${castai_eks_clusterid.cluster_id.id}" + } + references: + cluster_id: castai_eks_clusterid.cluster_id.id argumentDocs: arn: (String) cluster_id: (String) id: (String) The ID of this resource. importStatements: [] - castai_evictor_advanced_config Resource - terraform-provider-castai: + castai_evictor_advanced_config: subCategory: "" description: CAST AI eviction config resource to manage evictor properties - name: castai_evictor_advanced_config Resource - terraform-provider-castai + name: castai_evictor_advanced_config title: castai_evictor_advanced_config Resource - terraform-provider-castai + examples: + - name: config + manifest: |- + { + "cluster_id": "${castai_eks_cluster.test.id}", + "evictor_advanced_config": [ + { + "aggressive": true, + "pod_selector": [ + { + "kind": "Job", + "match_labels": { + "job": "test" + }, + "namespace": "test" + } + ] + } + ] + } + references: + cluster_id: castai_eks_cluster.test.id argumentDocs: - aggressive: (Boolean) + aggressive: (Boolean) Apply Aggressive mode to Evictor cluster_id: (String) CAST AI cluster id. create: (String) - disposable: (Boolean) + disposable: (Boolean) Mark node as disposable evictor_advanced_config: '(Block List, Min: 1) evictor advanced configuration to target specific node/pod (see below for nested schema)' id: (String) The ID of this resource. key: (String) @@ -268,7 +367,7 @@ resources: node_selector: (Block List) node selector (see below for nested schema) operator: (String) pod_selector: (Block List) pod selector (see below for nested schema) - removal_disabled: (Boolean) + removal_disabled: (Boolean) Mark pods as removal disabled timeouts: (Block, Optional) (see below for nested schema) update: (String) values: (List of String) @@ -308,6 +407,24 @@ resources: timeouts: (Block, Optional) (see below for nested schema) update: (String) importStatements: [] + castai_gke_cluster_id Resource - terraform-provider-castai: + subCategory: "" + description: GKE cluster resource allows connecting an existing GKE cluster to CAST AI. + name: castai_gke_cluster_id Resource - terraform-provider-castai + title: castai_gke_cluster_id Resource - terraform-provider-castai + argumentDocs: + cast_service_account: (String) Service account email in cast project + client_service_account: (String) Service account email in client project + cluster_token: (String, Sensitive) CAST.AI agent cluster token + create: (String) + delete: (String) + id: (String) The ID of this resource. + location: (String) GCP cluster zone in case of zonal or region in case of regional cluster + name: (String) GKE cluster name + project_id: (String) GCP project id + timeouts: (Block, Optional) (see below for nested schema) + update: (String) + importStatements: [] castai_node_configuration: subCategory: "" description: Create node configuration for given cluster. Node configuration reference https://docs.cast.ai/docs/node-configuration @@ -346,6 +463,7 @@ resources: manifest: '{}' argumentDocs: aks: '(Block List, Max: 1) (see below for nested schema)' + aks_image_family: '(String) Image OS Family to use when provisioning node in AKS. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. Possible values: (ubuntu,azure-linux)' arn: (String) AWS target group ARN for CAST provisioned nodes cluster_id: (String) CAST AI cluster id container_runtime: '(String) Optional container runtime to be used by kubelet. Applicable for EKS only. Supported values include: dockerd, containerd' @@ -357,7 +475,7 @@ resources: docker_config: (String) Optional docker daemon configuration properties in JSON format. Provide only properties that you want to override. Applicable for EKS only. Available values drain_timeout_sec: (Number) Timeout in seconds for draining the node. Defaults to 0 eks: '(Block List, Max: 1) (see below for nested schema)' - eks_image_family: (String) Image OS Family to use when provisioning node. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. + eks_image_family: '(String) Image OS Family to use when provisioning node in EKS. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. Possible values: (al2,al2023,bottlerocket)' gke: '(Block List, Max: 1) (see below for nested schema)' id: (String) The ID of this resource. image: (String) Image to be used while provisioning the node. If nothing is provided will be resolved to latest available image based on Image family, Kubernetes version and node architecture if possible. See Cast.ai documentation for details. @@ -365,15 +483,18 @@ resources: imds_v1: (Boolean) When the value is true both IMDSv1 and IMDSv2 are enabled. Setting the value to false disables permanently IMDSv1 and might affect legacy workloads running on the node created with this configuration. The default is true if the flag isn't provided init_script: (String) Init script to be run on your instance at launch. Should not contain any sensitive data. Value should be base64 encoded instance_profile_arn: (String) Cluster's instance profile ARN used for CAST provisioned nodes + ip_based_backend_pools: (Block List) IP based backend pools configuration for CAST provisioned nodes (see below for nested schema) ips_per_prefix: (Number) Number of IPs per prefix to be used for calculating max pods. key_pair_id: (String) AWS key pair ID to be used for CAST provisioned nodes. Has priority over ssh_public_key kops: '(Block List, Max: 1) (see below for nested schema)' kubelet_config: (String) Optional kubelet configuration properties in JSON format. Provide only properties that you want to override. Applicable for EKS only. Available values + loadbalancers: (Block List) Loadboalancer configuration for CAST provisioned nodes (see below for nested schema) max_pods_per_node: (Number) Maximum number of pods that can be run on a node, which affects how many IP addresses you will need for each node. Defaults to 30 max_pods_per_node_formula: '(String) Formula to calculate the maximum number of pods that can be run on a node. The following list of variables will be bound to a number before evaluating and can be used in the formula: NUM_MAX_NET_INTERFACES, NUM_IP_PER_INTERFACE, NUM_IP_PER_PREFIX, NUM_CPU, NUM_RAM_GB .' min_disk_size: (Number) Minimal disk size in GiB. Defaults to 100, min 30, max 65536 name: (String) Name of the node configuration. It must be unique within the cluster. In case of cluster is reonboarded to Terraform, when previously it was onboarded with CAST AI UI, and the name corresponds to previously created node configuration this resource will override existing configuration instead of creating new. network_tags: (List of String) Network tags to be added on a VM. (See network tags) + node_group_arn: (String) Cluster's node group ARN used for CAST provisioned node pools. Required for hibernate/resume functionality os_disk_type: '(String) Type of managed os disk attached to the node. (See disk types). One of: standard, standard-ssd, premium-ssd (ultra and premium-ssd-v2 are not supported for os disk)' port: (Number) Port for AWS target group for CAST provisioned nodes read: (String) @@ -416,13 +537,82 @@ resources: read: (String) timeouts: (Block, Optional) (see below for nested schema) importStatements: [] - castai_node_template Resource - terraform-provider-castai: + castai_node_template: subCategory: "" description: CAST AI node template resource to manage node templates - name: castai_node_template Resource - terraform-provider-castai + name: castai_node_template title: castai_node_template Resource - terraform-provider-castai + examples: + - name: default_by_castai + manifest: |- + { + "cluster_id": "${castai_eks_cluster.test.id}", + "configuration_id": "${castai_node_configuration.default.id}", + "constraints": [ + { + "architectures": [ + "amd64" + ], + "azs": [ + "us-east-2a", + "us-east-2b" + ], + "burstable_instances": "disabled", + "compute_optimized_state": "disabled", + "custom_priority": [ + { + "instance_families": [ + "c5" + ], + "on_demand": true, + "spot": false + } + ], + "customer_specific": "disabled", + "enable_spot_diversity": true, + "fallback_restore_rate_seconds": 300, + "instance_families": [ + { + "include": [ + "c5" + ] + } + ], + "is_gpu_only": false, + "max_cpu": 8, + "max_memory": 16384, + "min_cpu": 2, + "min_memory": 4096, + "on_demand": true, + "spot": false, + "spot_diversity_price_increase_limit_percent": 20, + "spot_interruption_predictions_enabled": true, + "spot_interruption_predictions_type": "aws-rebalance-recommendations", + "storage_optimized_state": "disabled", + "use_spot_fallbacks": true + } + ], + "custom_labels": { + "env": "production" + }, + "custom_taints": [ + { + "effect": "NoSchedule", + "key": "dedicated", + "value": "backend" + } + ], + "is_default": true, + "is_enabled": true, + "name": "default-by-castai", + "should_taint": true + } + references: + cluster_id: castai_eks_cluster.test.id + configuration_id: castai_node_configuration.default.id argumentDocs: affinity: (Block List) (see below for nested schema) + architecture_priority: '(List of String) Priority ordering of architectures, specifying no priority will pick cheapest. Allowed values: amd64, arm64.' architectures: '(List of String) List of acceptable instance CPU architectures, the default is amd64. Allowed values: amd64, arm64.' az_name: (String) Availability zone name. azs: (List of String) The list of AZ names to consider for the node template, if empty or not set all AZs are considered. @@ -432,6 +622,7 @@ resources: compute_optimized_state: '(String) Will only include compute optimized nodes when enabled and exclude compute optimized nodes when disabled. Empty value won''t have effect on instances filter. Supported values: enabled, disabled or empty string.' configuration_id: (String) CAST AI node configuration id to be used for node template. constraints: '(Block List, Max: 1) (see below for nested schema)' + cpu_manufacturers: '(List of String) List of acceptable CPU manufacturers. Allowed values: AMD, AMPERE, APPLE, AWS, INTEL.' create: (String) custom_instances_enabled: (Boolean) Marks whether custom instances should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP. custom_instances_with_extended_memory_enabled: (Boolean) Marks whether custom instances with extended memory should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP. @@ -491,11 +682,26 @@ resources: - |- # Import node template by specifying cluster ID and node template name. terraform import castai_node_template.default_by_castai 105e6fa3-20b1-424e-v589-9a64d1eeabea/default-by-castai - castai_organization_members Resource - terraform-provider-castai: + castai_organization_members: subCategory: "" description: CAST AI organization members resource to manage organization members - name: castai_organization_members Resource - terraform-provider-castai + name: castai_organization_members title: castai_organization_members Resource - terraform-provider-castai + examples: + - name: dev + manifest: |- + { + "members": [ + "member@test.ai" + ], + "organization_id": "${data.castai_organization.dev.id}", + "owners": [ + "owner@test.ai" + ], + "viewers": [] + } + references: + organization_id: data.castai_organization.dev.id argumentDocs: create: (String) delete: (String) @@ -678,3 +884,95 @@ resources: timeouts: (Block, Optional) (see below for nested schema) update: (String) importStatements: [] + castai_workload_scaling_policy: + subCategory: "" + description: Manage workload scaling policy. Scaling policy reference https://docs.cast.ai/docs/woop-scaling-policies + name: castai_workload_scaling_policy + title: castai_workload_scaling_policy Resource - terraform-provider-castai + examples: + - name: services + manifest: |- + { + "anti_affinity": [ + { + "consider_anti_affinity": false + } + ], + "apply_type": "IMMEDIATE", + "cluster_id": "${castai_gke_cluster.dev.id}", + "cpu": [ + { + "apply_threshold": 0.1, + "args": [ + "0.9" + ], + "function": "QUANTILE", + "look_back_period_seconds": 172800, + "max": 1, + "min": 0.1, + "overhead": 0.15 + } + ], + "downscaling": [ + { + "apply_type": "DEFERRED" + } + ], + "management_option": "MANAGED", + "memory": [ + { + "apply_threshold": 0.2, + "function": "MAX", + "overhead": 0.35 + } + ], + "memory_event": [ + { + "apply_type": "IMMEDIATE" + } + ], + "name": "services", + "startup": [ + { + "period_seconds": 240 + } + ] + } + references: + cluster_id: castai_gke_cluster.dev.id + - name: services + manifest: '{}' + argumentDocs: + anti_affinity: '(Block List, Max: 1) (see below for nested schema)' + apply_threshold: (Number) The threshold of when to apply the recommendation. Recommendation will be applied when diff of current requests and new recommendation is greater than set value + apply_type: (String) Recommendation apply type. + args: (List of String) The arguments for the function - i.e. for QUANTILE this should be a [0, 1] float. MAX doesn't accept any args + cluster_id: (String) CAST AI cluster id + consider_anti_affinity: |- + (Boolean) Defines if anti-affinity should be considered when scaling the workload. + If enabled, requiring host ports, or having anti-affinity on hostname will force all recommendations to be deferred. + cpu: '(Block List, Min: 1, Max: 1) (see below for nested schema)' + create: (String) + delete: (String) + downscaling: '(Block List, Max: 1) (see below for nested schema)' + function: '(String) The function used to calculate the resource recommendation. Supported values: QUANTILE, MAX' + id: (String) The ID of this resource. + look_back_period_seconds: (Number) The look back period in seconds for the recommendation. + management_option: (String) Defines possible options for workload management. + max: (Number) Max values for the recommendation, applies to every container. For memory - this is in MiB, for CPU - this is in cores. + memory: '(Block List, Min: 1, Max: 1) (see below for nested schema)' + memory_event: '(Block List, Max: 1) (see below for nested schema)' + min: (Number) Min values for the recommendation, applies to every container. For memory - this is in MiB, for CPU - this is in cores. + name: (String) Scaling policy name + overhead: (Number) Overhead for the recommendation, e.g. 0.1 will result in 10% higher recommendation + period_seconds: |- + (Number) Defines the duration (in seconds) during which elevated resource usage is expected at startup. + When set, recommendations will be adjusted to disregard resource spikes within this period. + If not specified, the workload will receive standard recommendations without startup considerations. + read: (String) + startup: '(Block List, Max: 1) (see below for nested schema)' + timeouts: (Block, Optional) (see below for nested schema) + update: (String) + importStatements: + - $ terraform import castai_workload_scaling_policy.services /services + - $ terraform import 'module.castai-eks-cluster.castai_workload_scaling_policy.this["services"]' /services diff --git a/config/schema.json b/config/schema.json index 932e4b4..76d47f1 100644 --- a/config/schema.json +++ b/config/schema.json @@ -1 +1 @@ -{"format_version":"1.0","provider_schemas":{"registry.terraform.io/castai/castai":{"provider":{"version":0,"block":{"attributes":{"api_token":{"type":"string","description":"The token used to connect to CAST AI API.","description_kind":"plain","required":true},"api_url":{"type":"string","description":"CAST.AI API url.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"resource_schemas":{"castai_aks_cluster":{"version":0,"block":{"attributes":{"client_id":{"type":"string","description":"Azure AD application ID that is created and used by CAST AI.","description_kind":"plain","required":true},"client_secret":{"type":"string","description":"Azure AD application password that will be used by CAST AI.","description_kind":"plain","required":true,"sensitive":true},"cluster_token":{"type":"string","description":"CAST AI cluster token.","description_kind":"plain","computed":true,"sensitive":true},"credentials_id":{"type":"string","description":"CAST AI internal credentials ID","description_kind":"plain","computed":true},"delete_nodes_on_disconnect":{"type":"bool","description":"Should CAST AI remove nodes managed by CAST.AI on disconnect.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"AKS cluster name.","description_kind":"plain","required":true},"node_resource_group":{"type":"string","description":"Azure resource group in which nodes are and will be created.","description_kind":"plain","required":true},"region":{"type":"string","description":"AKS cluster region.","description_kind":"plain","required":true},"subscription_id":{"type":"string","description":"ID of the Azure subscription.","description_kind":"plain","required":true},"tenant_id":{"type":"string","description":"Azure AD tenant ID from the used subscription.","description_kind":"plain","required":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"AKS cluster resource allows connecting an existing AKS cluster to CAST AI.","description_kind":"plain"}},"castai_autoscaler":{"version":0,"block":{"attributes":{"autoscaler_policies":{"type":"string","description":"computed value to store full policies configuration","description_kind":"plain","computed":true},"autoscaler_policies_json":{"type":"string","description":"autoscaler policies JSON string to override current autoscaler settings","description_kind":"plain","deprecated":true,"optional":true},"cluster_id":{"type":"string","description":"CAST AI cluster id","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"autoscaler_settings":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description":"enable/disable autoscaler policies","description_kind":"plain","optional":true},"is_scoped_mode":{"type":"bool","description":"run autoscaler in scoped mode. Only marked pods and nodes will be considered.","description_kind":"plain","optional":true},"node_templates_partial_matching_enabled":{"type":"bool","description":"marks whether partial matching should be used when deciding which custom node template to select.","description_kind":"plain","optional":true}},"block_types":{"cluster_limits":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description":"enable/disable cluster size limits policy.","description_kind":"plain","optional":true}},"block_types":{"cpu":{"nesting_mode":"list","block":{"attributes":{"max_cores":{"type":"number","description":"defines the maximum allowed amount of vCPUs in the whole cluster.","description_kind":"plain","optional":true},"min_cores":{"type":"number","description":"defines the minimum allowed amount of CPUs in the whole cluster.","description_kind":"plain","optional":true}},"description":"defines the minimum and maximum amount of CPUs for cluster's worker nodes.","description_kind":"plain"},"max_items":1}},"description":"defines minimum and maximum amount of CPU the cluster can have.","description_kind":"plain"},"max_items":1},"node_downscaler":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description":"enable/disable node downscaler policy.","description_kind":"plain","optional":true}},"block_types":{"empty_nodes":{"nesting_mode":"list","block":{"attributes":{"delay_seconds":{"type":"number","description":"period (in seconds) to wait before removing the node. Might be useful to control the aggressiveness of the downscaler.","description_kind":"plain","optional":true},"enabled":{"type":"bool","description":"enable/disable the empty worker nodes policy.","description_kind":"plain","optional":true}},"description":"defines whether Node Downscaler should opt in for removing empty worker nodes when possible.","description_kind":"plain"},"max_items":1},"evictor":{"nesting_mode":"list","block":{"attributes":{"aggressive_mode":{"type":"bool","description":"enable/disable aggressive mode. By default, Evictor does not target nodes that are running unreplicated pods. This mode will make the Evictor start considering application with just a single replica.","description_kind":"plain","optional":true},"cycle_interval":{"type":"string","description":"configure the interval duration between Evictor operations. This property can be used to lower or raise the frequency of the Evictor's find-and-drain operations.","description_kind":"plain","optional":true},"dry_run":{"type":"bool","description":"enable/disable dry-run. This property allows you to prevent the Evictor from carrying any operations out and preview the actions it would take.","description_kind":"plain","optional":true},"enabled":{"type":"bool","description":"enable/disable the Evictor policy. This will either install or uninstall the Evictor component in your cluster.","description_kind":"plain","optional":true},"ignore_pod_disruption_budgets":{"type":"bool","description":"if enabled then Evictor will attempt to evict pods that have pod disruption budgets configured.","description_kind":"plain","optional":true},"node_grace_period_minutes":{"type":"number","description":"configure the node grace period which controls the duration which must pass after a node has been created before Evictor starts considering that node.","description_kind":"plain","optional":true},"pod_eviction_failure_back_off_interval":{"type":"string","description":"configure the pod eviction failure back off interval. If pod eviction fails then Evictor will attempt to evict it again after the amount of time specified here.","description_kind":"plain","optional":true},"scoped_mode":{"type":"bool","description":"enable/disable scoped mode. By default, Evictor targets all nodes in the cluster. This mode will constrain it to just the nodes which were created by CAST AI.","description_kind":"plain","optional":true}},"description":"defines the CAST AI Evictor component settings. Evictor watches the pods running in your cluster and looks for ways to compact them into fewer nodes, making nodes empty, which will be removed by the empty worker nodes policy.","description_kind":"plain"},"max_items":1}},"description":"node downscaler defines policies for removing nodes based on the configured conditions.","description_kind":"plain"},"max_items":1},"spot_instances":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description":"enable/disable spot instances policy.","description_kind":"plain","optional":true},"max_reclaim_rate":{"type":"number","description":"max allowed reclaim rate when choosing spot instance type. E.g. if the value is 10%, instance types having 10% or higher reclaim rate will not be considered. Set to zero to use all instance types regardless of reclaim rate.","description_kind":"plain","optional":true},"spot_diversity_enabled":{"type":"bool","description":"enable/disable spot diversity policy. When enabled, autoscaler will try to balance between diverse and cost optimal instance types.","description_kind":"plain","optional":true},"spot_diversity_price_increase_limit":{"type":"number","description":"allowed node configuration price increase when diversifying instance types. E.g. if the value is 10%, then the overall price of diversified instance types can be 10% higher than the price of the optimal configuration.","description_kind":"plain","optional":true}},"block_types":{"spot_backups":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description":"enable/disable spot backups policy.","description_kind":"plain","optional":true},"spot_backup_restore_rate_seconds":{"type":"number","description":"defines interval on how often spot backups restore to real spot should occur.","description_kind":"plain","optional":true}},"description":"policy defining whether autoscaler can use spot backups instead of spot instances when spot instances are not available.","description_kind":"plain"},"max_items":1},"spot_interruption_predictions":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description":"enable/disable spot interruption predictions.","description_kind":"plain","optional":true},"spot_interruption_predictions_type":{"type":"string","description":"define the type of the spot interruption prediction to handle. Allowed values are AWSRebalanceRecommendations, CASTAIInterruptionPredictions.","description_kind":"plain","optional":true}},"description":"configure the handling of SPOT interruption predictions.","description_kind":"plain"},"max_items":1}},"description":"policy defining whether autoscaler can use spot instances for provisioning additional workloads.","description_kind":"plain"},"max_items":1},"unschedulable_pods":{"nesting_mode":"list","block":{"attributes":{"custom_instances_enabled":{"type":"bool","description":"enable/disable custom instances policy.","description_kind":"plain","optional":true},"enabled":{"type":"bool","description":"enable/disable unschedulable pods detection policy.","description_kind":"plain","optional":true}},"block_types":{"headroom":{"nesting_mode":"list","block":{"attributes":{"cpu_percentage":{"type":"number","description":"defines percentage of additional CPU capacity to be added.","description_kind":"plain","optional":true},"enabled":{"type":"bool","description":"enable/disable headroom policy.","description_kind":"plain","optional":true},"memory_percentage":{"type":"number","description":"defines percentage of additional memory capacity to be added.","description_kind":"plain","optional":true}},"description":"additional headroom based on cluster's total available capacity for on-demand nodes.","description_kind":"plain"},"max_items":1},"headroom_spot":{"nesting_mode":"list","block":{"attributes":{"cpu_percentage":{"type":"number","description":"defines percentage of additional CPU capacity to be added.","description_kind":"plain","optional":true},"enabled":{"type":"bool","description":"enable/disable headroom_spot policy.","description_kind":"plain","optional":true},"memory_percentage":{"type":"number","description":"defines percentage of additional memory capacity to be added.","description_kind":"plain","optional":true}},"description":"additional headroom based on cluster's total available capacity for spot nodes.","description_kind":"plain"},"max_items":1},"node_constraints":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description":"enable/disable node constraints policy.","description_kind":"plain","optional":true},"max_cpu_cores":{"type":"number","description":"defines max CPU cores for the node to pick.","description_kind":"plain","optional":true},"max_ram_mib":{"type":"number","description":"defines max RAM in MiB for the node to pick.","description_kind":"plain","optional":true},"min_cpu_cores":{"type":"number","description":"defines min CPU cores for the node to pick.","description_kind":"plain","optional":true},"min_ram_mib":{"type":"number","description":"defines min RAM in MiB for the node to pick.","description_kind":"plain","optional":true}},"description":"defines the node constraints that will be applied when autoscaling with Unschedulable Pods policy.","description_kind":"plain"},"max_items":1}},"description":"policy defining autoscaler's behavior when unschedulable pods were detected.","description_kind":"plain"},"max_items":1}},"description":"autoscaler policy definitions to override current autoscaler settings","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"CAST AI autoscaler resource to manage autoscaler settings","description_kind":"plain"}},"castai_commitments":{"version":0,"block":{"attributes":{"azure_reservations":{"type":["list",["object",{"allowed_usage":"number","assignments":["list",["object",{"cluster_id":"string","priority":"number"}]],"count":"number","end_timestamp":"string","id":"string","instance_type":"string","name":"string","plan":"string","prioritization":"bool","region":"string","reservation_id":"string","reservation_status":"string","scaling_strategy":"string","scope":"string","scope_resource_group":"string","scope_subscription":"string","start_timestamp":"string","status":"string"}]],"description":"List of Azure reservations.","description_kind":"plain","computed":true},"azure_reservations_csv":{"type":"string","description":"CSV file containing reservations exported from Azure.","description_kind":"plain","optional":true},"gcp_cuds":{"type":["list",["object",{"allowed_usage":"number","assignments":["list",["object",{"cluster_id":"string","priority":"number"}]],"cpu":"number","cud_id":"string","cud_status":"string","end_timestamp":"string","id":"string","memory_mb":"number","name":"string","plan":"string","prioritization":"bool","region":"string","scaling_strategy":"string","start_timestamp":"string","status":"string","type":"string"}]],"description":"List of GCP CUDs.","description_kind":"plain","computed":true},"gcp_cuds_json":{"type":"string","description":"JSON file containing CUDs exported from GCP.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"commitment_configs":{"nesting_mode":"list","block":{"attributes":{"allowed_usage":{"type":"number","description":"Allowed usage of the commitment. The value is between 0 (0%) and 1 (100%).","description_kind":"plain","optional":true},"prioritization":{"type":"bool","description":"If enabled, it's possible to assign priorities to the assigned clusters.","description_kind":"plain","optional":true},"scaling_strategy":{"type":"string","description":"Scaling strategy of the commitment in CAST AI. One of: Default, CPUBased, RamBased","description_kind":"plain","optional":true},"status":{"type":"string","description":"Status of the commitment in CAST AI.","description_kind":"plain","optional":true}},"block_types":{"assignments":{"nesting_mode":"list","block":{"attributes":{"cluster_id":{"type":"string","description":"ID of the cluster to assign the commitment to.","description_kind":"plain","required":true},"priority":{"type":"number","description":"Priority of the assignment. The lower the value, the higher the priority. 1 is the highest priority.","description_kind":"plain","computed":true}},"description":"List of assigned clusters for the commitment. If prioritization is enabled, the order of the assignments indicates the priority. The first assignment has the highest priority.","description_kind":"plain"}},"matcher":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"Name of the commitment to match.","description_kind":"plain","required":true},"region":{"type":"string","description":"Region of the commitment to match.","description_kind":"plain","required":true},"type":{"type":"string","description":"Type of the commitment to match. For compute resources, it's the type of the machine.","description_kind":"plain","optional":true}},"description":"Matcher used to map config to a commitment.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"List of commitment configurations.","description_kind":"plain"}},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Commitments represent cloud service provider reserved instances (Azure) and commited use discounts (GCP) that can be used by CAST AI autoscaler.","description_kind":"plain"}},"castai_eks_cluster":{"version":0,"block":{"attributes":{"account_id":{"type":"string","description":"ID of AWS account","description_kind":"plain","required":true},"assume_role_arn":{"type":"string","description":"AWS IAM role ARN that will be assumed by CAST AI user. This role should allow `sts:AssumeRole` action for CAST AI user that can be retrieved using `castai_eks_user_arn` data source","description_kind":"plain","optional":true},"cluster_token":{"type":"string","description":"computed value to store cluster token","description_kind":"plain","computed":true,"sensitive":true},"credentials_id":{"type":"string","description":"CAST AI internal credentials ID","description_kind":"plain","computed":true},"delete_nodes_on_disconnect":{"type":"bool","description":"Should CAST AI remove nodes managed by CAST AI on disconnect","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"name of your EKS cluster","description_kind":"plain","required":true},"region":{"type":"string","description":"AWS region where the cluster is placed","description_kind":"plain","required":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"EKS cluster resource allows connecting an existing EKS cluster to CAST AI.","description_kind":"plain"}},"castai_eks_clusterid":{"version":0,"block":{"attributes":{"account_id":{"type":"string","description_kind":"plain","required":true},"cluster_name":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"castai_eks_user_arn":{"version":0,"block":{"attributes":{"arn":{"type":"string","description_kind":"plain","computed":true},"cluster_id":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"castai_evictor_advanced_config":{"version":0,"block":{"attributes":{"cluster_id":{"type":"string","description":"CAST AI cluster id.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"evictor_advanced_config":{"nesting_mode":"list","block":{"attributes":{"aggressive":{"type":"bool","description_kind":"plain","optional":true},"disposable":{"type":"bool","description_kind":"plain","optional":true},"removal_disabled":{"type":"bool","description_kind":"plain","optional":true}},"block_types":{"node_selector":{"nesting_mode":"list","block":{"attributes":{"match_labels":{"type":["map","string"],"description_kind":"plain","optional":true}},"block_types":{"match_expressions":{"nesting_mode":"list","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"operator":{"type":"string","description_kind":"plain","required":true},"values":{"type":["list","string"],"description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"node selector","description_kind":"plain"}},"pod_selector":{"nesting_mode":"list","block":{"attributes":{"kind":{"type":"string","description_kind":"plain","optional":true},"match_labels":{"type":["map","string"],"description_kind":"plain","optional":true},"namespace":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"match_expressions":{"nesting_mode":"list","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"operator":{"type":"string","description_kind":"plain","required":true},"values":{"type":["list","string"],"description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"pod selector","description_kind":"plain"}}},"description":"evictor advanced configuration to target specific node/pod","description_kind":"plain"},"min_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"CAST AI eviction config resource to manage evictor properties ","description_kind":"plain"}},"castai_gke_cluster":{"version":0,"block":{"attributes":{"cluster_token":{"type":"string","description":"CAST.AI agent cluster token","description_kind":"plain","computed":true,"sensitive":true},"credentials_id":{"type":"string","description":"CAST AI credentials id for cluster","description_kind":"plain","computed":true},"credentials_json":{"type":"string","description":"GCP credentials.json from ServiceAccount with credentials for CAST AI","description_kind":"plain","optional":true,"sensitive":true},"delete_nodes_on_disconnect":{"type":"bool","description":"Should CAST AI remove nodes managed by CAST.AI on disconnect","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"location":{"type":"string","description":"GCP cluster zone in case of zonal or region in case of regional cluster","description_kind":"plain","required":true},"name":{"type":"string","description":"GKE cluster name","description_kind":"plain","required":true},"project_id":{"type":"string","description":"GCP project id","description_kind":"plain","required":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"GKE cluster resource allows connecting an existing GKE cluster to CAST AI.","description_kind":"plain"}},"castai_node_configuration":{"version":0,"block":{"attributes":{"cluster_id":{"type":"string","description":"CAST AI cluster id","description_kind":"plain","required":true},"container_runtime":{"type":"string","description":"Optional container runtime to be used by kubelet. Applicable for EKS only. Supported values include: `dockerd`, `containerd`","description_kind":"plain","optional":true},"disk_cpu_ratio":{"type":"number","description":"Disk to CPU ratio. Sets the number of GiBs to be added for every CPU on the node. Defaults to 0","description_kind":"plain","optional":true},"docker_config":{"type":"string","description":"Optional docker daemon configuration properties in JSON format. Provide only properties that you want to override. Applicable for EKS only. [Available values](https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file)","description_kind":"plain","optional":true},"drain_timeout_sec":{"type":"number","description":"Timeout in seconds for draining the node. Defaults to 0","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"image":{"type":"string","description":"Image to be used while provisioning the node. If nothing is provided will be resolved to latest available image based on Image family, Kubernetes version and node architecture if possible. See Cast.ai documentation for details.","description_kind":"plain","optional":true},"init_script":{"type":"string","description":"Init script to be run on your instance at launch. Should not contain any sensitive data. Value should be base64 encoded","description_kind":"plain","optional":true},"kubelet_config":{"type":"string","description":"Optional kubelet configuration properties in JSON format. Provide only properties that you want to override. Applicable for EKS only. [Available values](https://kubernetes.io/docs/reference/config-api/kubelet-config.v1beta1/)","description_kind":"plain","optional":true},"min_disk_size":{"type":"number","description":"Minimal disk size in GiB. Defaults to 100, min 30, max 65536","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the node configuration. It must be unique within the cluster. In case of cluster is reonboarded to Terraform, when previously it was onboarded with CAST AI UI, and the name corresponds to previously created node configuration this resource will override existing configuration instead of creating new.","description_kind":"plain","required":true},"ssh_public_key":{"type":"string","description":"SSH public key to be used for provisioned nodes","description_kind":"plain","optional":true},"subnets":{"type":["list","string"],"description":"Subnet ids to be used for provisioned nodes","description_kind":"plain","required":true},"tags":{"type":["map","string"],"description":"Tags to be added on cloud instances for provisioned nodes","description_kind":"plain","optional":true}},"block_types":{"aks":{"nesting_mode":"list","block":{"attributes":{"max_pods_per_node":{"type":"number","description":"Maximum number of pods that can be run on a node, which affects how many IP addresses you will need for each node. Defaults to 30","description_kind":"plain","optional":true},"os_disk_type":{"type":"string","description":"Type of managed os disk attached to the node. (See [disk types](https://learn.microsoft.com/en-us/azure/virtual-machines/disks-types)). One of: standard, standard-ssd, premium-ssd (ultra and premium-ssd-v2 are not supported for os disk)","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"eks":{"nesting_mode":"list","block":{"attributes":{"dns_cluster_ip":{"type":"string","description":"IP address to use for DNS queries within the cluster","description_kind":"plain","optional":true},"eks_image_family":{"type":"string","description":"Image OS Family to use when provisioning node. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details.","description_kind":"plain","optional":true},"imds_hop_limit":{"type":"number","description":"Allow configure the IMDSv2 hop limit, the default is 2","description_kind":"plain","optional":true},"imds_v1":{"type":"bool","description":"When the value is true both IMDSv1 and IMDSv2 are enabled. Setting the value to false disables permanently IMDSv1 and might affect legacy workloads running on the node created with this configuration. The default is true if the flag isn't provided","description_kind":"plain","optional":true},"instance_profile_arn":{"type":"string","description":"Cluster's instance profile ARN used for CAST provisioned nodes","description_kind":"plain","required":true},"ips_per_prefix":{"type":"number","description":"Number of IPs per prefix to be used for calculating max pods.","description_kind":"plain","optional":true},"key_pair_id":{"type":"string","description":"AWS key pair ID to be used for CAST provisioned nodes. Has priority over ssh_public_key","description_kind":"plain","optional":true},"max_pods_per_node_formula":{"type":"string","description":"Formula to calculate the maximum number of pods that can be run on a node. The following list of variables will be bound to a number before evaluating and can be used in the formula: NUM_MAX_NET_INTERFACES, NUM_IP_PER_INTERFACE, NUM_IP_PER_PREFIX, NUM_CPU, NUM_RAM_GB .","description_kind":"plain","optional":true},"security_groups":{"type":["list","string"],"description":"Cluster's security groups configuration for CAST provisioned nodes","description_kind":"plain","required":true},"volume_iops":{"type":"number","description":"AWS EBS volume IOPS to be used for CAST provisioned nodes","description_kind":"plain","optional":true},"volume_kms_key_arn":{"type":"string","description":"AWS KMS key ARN for encrypting EBS volume attached to the node","description_kind":"plain","optional":true},"volume_throughput":{"type":"number","description":"AWS EBS volume throughput in MiB/s to be used for CAST provisioned nodes","description_kind":"plain","optional":true},"volume_type":{"type":"string","description":"AWS EBS volume type to be used for CAST provisioned nodes. One of: gp3, gp2, io1, io2","description_kind":"plain","optional":true}},"block_types":{"target_group":{"nesting_mode":"list","block":{"attributes":{"arn":{"type":"string","description":"AWS target group ARN for CAST provisioned nodes","description_kind":"plain","required":true},"port":{"type":"number","description":"Port for AWS target group for CAST provisioned nodes","description_kind":"plain","optional":true}},"description":"AWS target groups configuration for CAST provisioned nodes","description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"gke":{"nesting_mode":"list","block":{"attributes":{"disk_type":{"type":"string","description":"Type of boot disk attached to the node. (See [disk types](https://cloud.google.com/compute/docs/disks#pdspecs)). One of: pd-standard, pd-balanced, pd-ssd, pd-extreme ","description_kind":"plain","optional":true},"max_pods_per_node":{"type":"number","description":"Maximum number of pods that can be run on a node, which affects how many IP addresses you will need for each node. Defaults to 110","description_kind":"plain","optional":true},"network_tags":{"type":["list","string"],"description":"Network tags to be added on a VM. (See [network tags](https://cloud.google.com/vpc/docs/add-remove-network-tags))","description_kind":"plain","optional":true},"use_ephemeral_storage_local_ssd":{"type":"bool","description":"Use ephemeral storage local SSD. Defaults to false","description_kind":"plain","optional":true},"zones":{"type":["list","string"],"description":"List of preferred availability zones to choose from when provisioning new nodes.","description_kind":"plain","deprecated":true,"optional":true}},"description_kind":"plain"},"max_items":1},"kops":{"nesting_mode":"list","block":{"attributes":{"key_pair_id":{"type":"string","description":"AWS key pair ID to be used for provisioned nodes. Has priority over sshPublicKey","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"read":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Create node configuration for given cluster. Node configuration [reference](https://docs.cast.ai/docs/node-configuration)","description_kind":"plain"}},"castai_node_configuration_default":{"version":0,"block":{"attributes":{"cluster_id":{"type":"string","description":"CAST AI cluster id","description_kind":"plain","required":true},"configuration_id":{"type":"string","description":"Id of the node configuration","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"read":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"castai_node_template":{"version":0,"block":{"attributes":{"cluster_id":{"type":"string","description":"CAST AI cluster id.","description_kind":"plain","optional":true},"configuration_id":{"type":"string","description":"CAST AI node configuration id to be used for node template.","description_kind":"plain","optional":true},"custom_instances_enabled":{"type":"bool","description":"Marks whether custom instances should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP.","description_kind":"plain","optional":true},"custom_instances_with_extended_memory_enabled":{"type":"bool","description":"Marks whether custom instances with extended memory should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP.","description_kind":"plain","optional":true},"custom_labels":{"type":["map","string"],"description":"Custom labels to be added to nodes created from this template.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_default":{"type":"bool","description":"Flag whether the node template is default.","description_kind":"plain","optional":true},"is_enabled":{"type":"bool","description":"Flag whether the node template is enabled and considered for autoscaling.","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the node template.","description_kind":"plain","required":true},"rebalancing_config_min_nodes":{"type":"number","description":"Minimum nodes that will be kept when rebalancing nodes using this node template.","description_kind":"plain","optional":true},"should_taint":{"type":"bool","description":"Marks whether the templated nodes will have a taint.","description_kind":"plain","optional":true}},"block_types":{"constraints":{"nesting_mode":"list","block":{"attributes":{"architectures":{"type":["list","string"],"description":"List of acceptable instance CPU architectures, the default is amd64. Allowed values: amd64, arm64.","description_kind":"plain","optional":true,"computed":true},"azs":{"type":["list","string"],"description":"The list of AZ names to consider for the node template, if empty or not set all AZs are considered.","description_kind":"plain","optional":true},"burstable_instances":{"type":"string","description":"Will include burstable instances when enabled otherwise they will be excluded. Supported values: `enabled`, `disabled` or ``.","description_kind":"plain","optional":true},"compute_optimized":{"type":"bool","description":"Compute optimized instance constraint (deprecated).","description_kind":"plain","optional":true},"compute_optimized_state":{"type":"string","description":"Will only include compute optimized nodes when enabled and exclude compute optimized nodes when disabled. Empty value won't have effect on instances filter. Supported values: `enabled`, `disabled` or empty string.","description_kind":"plain","optional":true},"customer_specific":{"type":"string","description":"Will include customer specific (preview) instances when enabled otherwise they will be excluded. Supported values: `enabled`, `disabled` or ``.","description_kind":"plain","optional":true},"enable_spot_diversity":{"type":"bool","description":"Enable/disable spot diversity policy. When enabled, autoscaler will try to balance between diverse and cost optimal instance types.","description_kind":"plain","optional":true},"fallback_restore_rate_seconds":{"type":"number","description":"Fallback restore rate in seconds: defines how much time should pass before spot fallback should be attempted to be restored to real spot.","description_kind":"plain","optional":true},"is_gpu_only":{"type":"bool","description":"GPU instance constraint - will only pick nodes with GPU if true","description_kind":"plain","optional":true},"max_cpu":{"type":"number","description":"Max CPU cores per node.","description_kind":"plain","optional":true},"max_memory":{"type":"number","description":"Max Memory (Mib) per node.","description_kind":"plain","optional":true},"min_cpu":{"type":"number","description":"Min CPU cores per node.","description_kind":"plain","optional":true},"min_memory":{"type":"number","description":"Min Memory (Mib) per node.","description_kind":"plain","optional":true},"on_demand":{"type":"bool","description":"Should include on-demand instances in the considered pool.","description_kind":"plain","optional":true,"computed":true},"os":{"type":["list","string"],"description":"List of acceptable instance Operating Systems, the default is linux. Allowed values: linux, windows.","description_kind":"plain","optional":true,"computed":true},"spot":{"type":"bool","description":"Should include spot instances in the considered pool.","description_kind":"plain","optional":true},"spot_diversity_price_increase_limit_percent":{"type":"number","description":"Allowed node configuration price increase when diversifying instance types. E.g. if the value is 10%, then the overall price of diversified instance types can be 10% higher than the price of the optimal configuration.","description_kind":"plain","optional":true},"spot_interruption_predictions_enabled":{"type":"bool","description":"Enable/disable spot interruption predictions.","description_kind":"plain","optional":true},"spot_interruption_predictions_type":{"type":"string","description":"Spot interruption predictions type. Can be either \"aws-rebalance-recommendations\" or \"interruption-predictions\".","description_kind":"plain","optional":true},"storage_optimized":{"type":"bool","description":"Storage optimized instance constraint (deprecated).","description_kind":"plain","optional":true},"storage_optimized_state":{"type":"string","description":"Storage optimized instance constraint - will only pick storage optimized nodes if enabled and won't pick if disabled. Empty value will have no effect. Supported values: `enabled`, `disabled` or empty string.","description_kind":"plain","optional":true},"use_spot_fallbacks":{"type":"bool","description":"Spot instance fallback constraint - when true, on-demand instances will be created, when spots are unavailable.","description_kind":"plain","optional":true}},"block_types":{"custom_priority":{"nesting_mode":"list","block":{"attributes":{"instance_families":{"type":["list","string"],"description":"Instance families to prioritize in this tier.","description_kind":"plain","optional":true},"on_demand":{"type":"bool","description":"If true, this tier will apply to on-demand instances.","description_kind":"plain","optional":true},"spot":{"type":"bool","description":"If true, this tier will apply to spot instances.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"dedicated_node_affinity":{"nesting_mode":"list","block":{"attributes":{"az_name":{"type":"string","description":"Availability zone name.","description_kind":"plain","required":true},"instance_types":{"type":["list","string"],"description":"Instance/node types in this node group.","description_kind":"plain","required":true},"name":{"type":"string","description":"Name of node group.","description_kind":"plain","required":true}},"block_types":{"affinity":{"nesting_mode":"list","block":{"attributes":{"key":{"type":"string","description":"Key of the node affinity selector.","description_kind":"plain","required":true},"operator":{"type":"string","description":"Operator of the node affinity selector. Allowed values: In, NotIn, Exists, DoesNotExist, Gt, Lt.","description_kind":"plain","required":true},"values":{"type":["list","string"],"description":"Values of the node affinity selector.","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description":"Dedicated node affinity - creates preference for instances to be created on sole tenancy or dedicated nodes. This\n feature is only available for GCP clusters and sole tenancy nodes with local\n SSDs or GPUs are not supported. If the sole tenancy or dedicated nodes don't have capacity for selected instance\n type, the Autoscaler will fall back to multi-tenant instance types available for this Node Template.\n Other instance constraints are applied when the Autoscaler picks available instance types that can be created on\n the sole tenancy or dedicated node (example: setting min CPU to 16).","description_kind":"plain"}},"gpu":{"nesting_mode":"list","block":{"attributes":{"exclude_names":{"type":["list","string"],"description":"Names of the GPUs to exclude.","description_kind":"plain","optional":true},"include_names":{"type":["list","string"],"description":"Instance families to include when filtering (excludes all other families).","description_kind":"plain","optional":true},"manufacturers":{"type":["list","string"],"description":"Manufacturers of the gpus to select - NVIDIA, AMD.","description_kind":"plain","optional":true},"max_count":{"type":"number","description":"Max GPU count for the instance type to have.","description_kind":"plain","optional":true},"min_count":{"type":"number","description":"Min GPU count for the instance type to have.","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"instance_families":{"nesting_mode":"list","block":{"attributes":{"exclude":{"type":["list","string"],"description":"Instance families to include when filtering (excludes all other families).","description_kind":"plain","optional":true},"include":{"type":["list","string"],"description":"Instance families to exclude when filtering (includes all other families).","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"custom_taints":{"nesting_mode":"list","block":{"attributes":{"effect":{"type":"string","description":"Effect of a taint to be added to nodes created from this template, the default is NoSchedule. Allowed values: NoSchedule, NoExecute.","description_kind":"plain","optional":true},"key":{"type":"string","description":"Key of a taint to be added to nodes created from this template.","description_kind":"plain","required":true},"value":{"type":"string","description":"Value of a taint to be added to nodes created from this template.","description_kind":"plain","optional":true}},"description":"Custom taints to be added to the nodes created from this template. `shouldTaint` has to be `true` in order to create/update the node template with custom taints. If `shouldTaint` is `true`, but no custom taints are provided, the nodes will be tainted with the default node template taint.","description_kind":"plain"}},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"read":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"CAST AI node template resource to manage node templates","description_kind":"plain"}},"castai_organization_members":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"members":{"type":["list","string"],"description":"A list of email addresses corresponding to users who should be given member access to the organization.","description_kind":"plain","optional":true},"organization_id":{"type":"string","description":"CAST AI organization ID.","description_kind":"plain","required":true},"owners":{"type":["list","string"],"description":"A list of email addresses corresponding to users who should be given owner access to the organization.","description_kind":"plain","optional":true},"viewers":{"type":["list","string"],"description":"A list of email addresses corresponding to users who should be given viewer access to the organization.","description_kind":"plain","optional":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"CAST AI organization members resource to manage organization members","description_kind":"plain"}},"castai_rebalancing_job":{"version":0,"block":{"attributes":{"cluster_id":{"type":"string","description":"CAST AI cluster id.","description_kind":"plain","required":true},"enabled":{"type":"bool","description":"The job will only be executed if it's enabled.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"rebalancing_schedule_id":{"type":"string","description":"Rebalancing schedule of this job.","description_kind":"plain","required":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"read":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Job assigns a rebalancing schedule to a cluster.","description_kind":"plain"}},"castai_rebalancing_schedule":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the schedule.","description_kind":"plain","required":true}},"block_types":{"launch_configuration":{"nesting_mode":"list","block":{"attributes":{"aggressive_mode":{"type":"bool","description":"When enabled rebalancing will also consider problematic pods (pods without controller, job pods, pods with removal-disabled annotation) as not-problematic.","description_kind":"plain","optional":true},"keep_drain_timeout_nodes":{"type":"bool","description":"Defines whether the nodes that failed to get drained until a predefined timeout, will be kept with a rebalancing.cast.ai/status=drain-failed annotation instead of forcefully drained.","description_kind":"plain","optional":true},"node_ttl_seconds":{"type":"number","description":"Specifies amount of time since node creation before the node is allowed to be considered for automated rebalancing.","description_kind":"plain","optional":true},"num_targeted_nodes":{"type":"number","description":"Maximum number of nodes that will be selected for rebalancing.","description_kind":"plain","optional":true},"rebalancing_min_nodes":{"type":"number","description":"Minimum number of nodes that should be kept in the cluster after rebalancing.","description_kind":"plain","optional":true},"selector":{"type":"string","description":"Node selector in JSON format.","description_kind":"plain","optional":true},"target_node_selection_algorithm":{"type":"string","description":"Defines the algorithm used to select the target nodes for rebalancing.","description_kind":"plain","optional":true}},"block_types":{"execution_conditions":{"nesting_mode":"list","block":{"attributes":{"achieved_savings_percentage":{"type":"number","description":"The percentage of the predicted savings that must be achieved in order to fully execute the plan.If the savings are not achieved after creating the new nodes, the plan will fail and delete the created nodes.","description_kind":"plain","optional":true},"enabled":{"type":"bool","description":"Enables or disables the execution conditions.","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"min_items":1,"max_items":1},"schedule":{"nesting_mode":"list","block":{"attributes":{"cron":{"type":"string","description":"Cron expression defining when the schedule should trigger.\n\n The `cron` expression can optionally include the `CRON_TZ` variable at the beginning to specify the timezone in which the schedule should be interpreted.\n\n Example:\n ```plaintext\n CRON_TZ=America/New_York 0 12 * * ?\n ```\n In the example above, the `CRON_TZ` variable is set to \"America/New_York\" indicating that the cron expression should be interpreted in the Eastern Time (ET) timezone.\n\n To retrieve a list of available timezone values, you can use the following API endpoint:\n\n GET https://api.cast.ai/v1/time-zones\n\n When using the `CRON_TZ` variable, ensure that the specified timezone is valid and supported by checking the list of available timezones from the API endpoint. If the `CRON_TZ` variable is not specified, the cron expression will be interpreted in the UTC timezone.","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"read":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"trigger_conditions":{"nesting_mode":"list","block":{"attributes":{"ignore_savings":{"type":"bool","description":"If true, the savings percentage will be ignored and the rebalancing will be triggered regardless of the savings percentage.","description_kind":"plain","optional":true},"savings_percentage":{"type":"number","description":"Defines the minimum percentage of savings expected.","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1}},"description":"CAST AI rebalancing schedule resource to manage rebalancing schedules.","description_kind":"plain"}},"castai_reservations":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"organization_id":{"type":"string","description":"organization","description_kind":"plain","optional":true},"reservations":{"type":["list",["object",{"count":"string","end_date":"string","instance_type":"string","name":"string","price":"string","provider":"string","region":"string","start_date":"string","zone_id":"string","zone_name":"string"}]],"description_kind":"plain","computed":true},"reservations_csv":{"type":"string","description":"csv file containing reservations","description_kind":"plain","required":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Reservation represents cloud service provider reserved instances that can be used by CAST AI autoscaler.","description_kind":"plain"}},"castai_sso_connection":{"version":0,"block":{"attributes":{"additional_email_domains":{"type":["list","string"],"description":"Additional email domains that will be allowed to sign in via the connection","description_kind":"plain","optional":true},"email_domain":{"type":"string","description":"Email domain of the connection","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Connection name","description_kind":"plain","required":true}},"block_types":{"aad":{"nesting_mode":"list","block":{"attributes":{"ad_domain":{"type":"string","description":"Azure AD domain","description_kind":"plain","required":true},"client_id":{"type":"string","description":"Azure AD client ID","description_kind":"plain","required":true},"client_secret":{"type":"string","description":"Azure AD client secret","description_kind":"plain","required":true,"sensitive":true}},"description":"Azure AD connector","description_kind":"plain"},"max_items":1},"okta":{"nesting_mode":"list","block":{"attributes":{"client_id":{"type":"string","description":"Okta client ID","description_kind":"plain","required":true},"client_secret":{"type":"string","description":"Okta client secret","description_kind":"plain","required":true,"sensitive":true},"okta_domain":{"type":"string","description":"Okta domain","description_kind":"plain","required":true}},"description":"Okta connector","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"SSO Connection resource allows creating SSO trust relationship with CAST AI.","description_kind":"plain"}}},"data_source_schemas":{"castai_eks_settings":{"version":0,"block":{"attributes":{"account_id":{"type":"string","description_kind":"plain","required":true},"cluster":{"type":"string","description_kind":"plain","required":true},"iam_managed_policies":{"type":["set","string"],"description_kind":"plain","computed":true},"iam_policy_json":{"type":"string","description_kind":"plain","computed":true},"iam_user_policy_json":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description_kind":"plain","required":true},"vpc":{"type":"string","description_kind":"plain","required":true}},"description":"Retrieve IAM policy, IAM User Policy and instance profile policies for the specified cluster","description_kind":"plain"}},"castai_eks_user_arn":{"version":0,"block":{"attributes":{"arn":{"type":"string","description_kind":"plain","computed":true},"cluster_id":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain","deprecated":true}},"castai_gke_user_policies":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"policy":{"type":["list","string"],"description_kind":"plain","computed":true}},"description_kind":"plain"}},"castai_organization":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true}},"description":"Retrieve organization ID","description_kind":"plain"}}}}}} +{"format_version":"1.0","provider_schemas":{"registry.terraform.io/castai/castai":{"provider":{"version":0,"block":{"attributes":{"api_token":{"type":"string","description":"The token used to connect to CAST AI API.","description_kind":"plain","required":true},"api_url":{"type":"string","description":"CAST.AI API url.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"resource_schemas":{"castai_aks_cluster":{"version":0,"block":{"attributes":{"client_id":{"type":"string","description":"Azure AD application ID that is created and used by CAST AI.","description_kind":"plain","required":true},"client_secret":{"type":"string","description":"Azure AD application password that will be used by CAST AI.","description_kind":"plain","required":true,"sensitive":true},"cluster_token":{"type":"string","description":"CAST AI cluster token.","description_kind":"plain","computed":true,"sensitive":true},"credentials_id":{"type":"string","description":"CAST AI internal credentials ID","description_kind":"plain","computed":true},"delete_nodes_on_disconnect":{"type":"bool","description":"Should CAST AI remove nodes managed by CAST.AI on disconnect.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"AKS cluster name.","description_kind":"plain","required":true},"node_resource_group":{"type":"string","description":"Azure resource group in which nodes are and will be created.","description_kind":"plain","required":true},"region":{"type":"string","description":"AKS cluster region.","description_kind":"plain","required":true},"subscription_id":{"type":"string","description":"ID of the Azure subscription.","description_kind":"plain","required":true},"tenant_id":{"type":"string","description":"Azure AD tenant ID from the used subscription.","description_kind":"plain","required":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"AKS cluster resource allows connecting an existing AKS cluster to CAST AI.","description_kind":"plain"}},"castai_autoscaler":{"version":0,"block":{"attributes":{"autoscaler_policies":{"type":"string","description":"computed value to store full policies configuration","description_kind":"plain","computed":true},"autoscaler_policies_json":{"type":"string","description":"autoscaler policies JSON string to override current autoscaler settings","description_kind":"plain","deprecated":true,"optional":true},"cluster_id":{"type":"string","description":"CAST AI cluster id","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"autoscaler_settings":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description":"enable/disable autoscaler policies","description_kind":"plain","optional":true},"is_scoped_mode":{"type":"bool","description":"run autoscaler in scoped mode. Only marked pods and nodes will be considered.","description_kind":"plain","optional":true},"node_templates_partial_matching_enabled":{"type":"bool","description":"marks whether partial matching should be used when deciding which custom node template to select.","description_kind":"plain","optional":true}},"block_types":{"cluster_limits":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description":"enable/disable cluster size limits policy.","description_kind":"plain","optional":true}},"block_types":{"cpu":{"nesting_mode":"list","block":{"attributes":{"max_cores":{"type":"number","description":"defines the maximum allowed amount of vCPUs in the whole cluster.","description_kind":"plain","optional":true},"min_cores":{"type":"number","description":"defines the minimum allowed amount of CPUs in the whole cluster.","description_kind":"plain","optional":true}},"description":"defines the minimum and maximum amount of CPUs for cluster's worker nodes.","description_kind":"plain"},"max_items":1}},"description":"defines minimum and maximum amount of CPU the cluster can have.","description_kind":"plain"},"max_items":1},"node_downscaler":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description":"enable/disable node downscaler policy.","description_kind":"plain","optional":true}},"block_types":{"empty_nodes":{"nesting_mode":"list","block":{"attributes":{"delay_seconds":{"type":"number","description":"period (in seconds) to wait before removing the node. Might be useful to control the aggressiveness of the downscaler.","description_kind":"plain","optional":true},"enabled":{"type":"bool","description":"enable/disable the empty worker nodes policy.","description_kind":"plain","optional":true}},"description":"defines whether Node Downscaler should opt in for removing empty worker nodes when possible.","description_kind":"plain"},"max_items":1},"evictor":{"nesting_mode":"list","block":{"attributes":{"aggressive_mode":{"type":"bool","description":"enable/disable aggressive mode. By default, Evictor does not target nodes that are running unreplicated pods. This mode will make the Evictor start considering application with just a single replica.","description_kind":"plain","optional":true},"cycle_interval":{"type":"string","description":"configure the interval duration between Evictor operations. This property can be used to lower or raise the frequency of the Evictor's find-and-drain operations.","description_kind":"plain","optional":true},"dry_run":{"type":"bool","description":"enable/disable dry-run. This property allows you to prevent the Evictor from carrying any operations out and preview the actions it would take.","description_kind":"plain","optional":true},"enabled":{"type":"bool","description":"enable/disable the Evictor policy. This will either install or uninstall the Evictor component in your cluster.","description_kind":"plain","optional":true},"ignore_pod_disruption_budgets":{"type":"bool","description":"if enabled then Evictor will attempt to evict pods that have pod disruption budgets configured.","description_kind":"plain","optional":true},"node_grace_period_minutes":{"type":"number","description":"configure the node grace period which controls the duration which must pass after a node has been created before Evictor starts considering that node.","description_kind":"plain","optional":true},"pod_eviction_failure_back_off_interval":{"type":"string","description":"configure the pod eviction failure back off interval. If pod eviction fails then Evictor will attempt to evict it again after the amount of time specified here.","description_kind":"plain","optional":true},"scoped_mode":{"type":"bool","description":"enable/disable scoped mode. By default, Evictor targets all nodes in the cluster. This mode will constrain it to just the nodes which were created by CAST AI.","description_kind":"plain","optional":true}},"description":"defines the CAST AI Evictor component settings. Evictor watches the pods running in your cluster and looks for ways to compact them into fewer nodes, making nodes empty, which will be removed by the empty worker nodes policy.","description_kind":"plain"},"max_items":1}},"description":"node downscaler defines policies for removing nodes based on the configured conditions.","description_kind":"plain"},"max_items":1},"spot_instances":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description":"enable/disable spot instances policy.","description_kind":"plain","optional":true},"max_reclaim_rate":{"type":"number","description":"max allowed reclaim rate when choosing spot instance type. E.g. if the value is 10%, instance types having 10% or higher reclaim rate will not be considered. Set to zero to use all instance types regardless of reclaim rate.","description_kind":"plain","optional":true},"spot_diversity_enabled":{"type":"bool","description":"enable/disable spot diversity policy. When enabled, autoscaler will try to balance between diverse and cost optimal instance types.","description_kind":"plain","optional":true},"spot_diversity_price_increase_limit":{"type":"number","description":"allowed node configuration price increase when diversifying instance types. E.g. if the value is 10%, then the overall price of diversified instance types can be 10% higher than the price of the optimal configuration.","description_kind":"plain","optional":true}},"block_types":{"spot_backups":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description":"enable/disable spot backups policy.","description_kind":"plain","optional":true},"spot_backup_restore_rate_seconds":{"type":"number","description":"defines interval on how often spot backups restore to real spot should occur.","description_kind":"plain","optional":true}},"description":"policy defining whether autoscaler can use spot backups instead of spot instances when spot instances are not available.","description_kind":"plain"},"max_items":1},"spot_interruption_predictions":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description":"enable/disable spot interruption predictions.","description_kind":"plain","optional":true},"spot_interruption_predictions_type":{"type":"string","description":"define the type of the spot interruption prediction to handle. Allowed values are AWSRebalanceRecommendations, CASTAIInterruptionPredictions.","description_kind":"plain","optional":true}},"description":"configure the handling of SPOT interruption predictions.","description_kind":"plain"},"max_items":1}},"description":"policy defining whether autoscaler can use spot instances for provisioning additional workloads.","description_kind":"plain"},"max_items":1},"unschedulable_pods":{"nesting_mode":"list","block":{"attributes":{"custom_instances_enabled":{"type":"bool","description":"enable/disable custom instances policy.","description_kind":"plain","optional":true},"enabled":{"type":"bool","description":"enable/disable unschedulable pods detection policy.","description_kind":"plain","optional":true}},"block_types":{"headroom":{"nesting_mode":"list","block":{"attributes":{"cpu_percentage":{"type":"number","description":"defines percentage of additional CPU capacity to be added.","description_kind":"plain","optional":true},"enabled":{"type":"bool","description":"enable/disable headroom policy.","description_kind":"plain","optional":true},"memory_percentage":{"type":"number","description":"defines percentage of additional memory capacity to be added.","description_kind":"plain","optional":true}},"description":"additional headroom based on cluster's total available capacity for on-demand nodes.","description_kind":"plain"},"max_items":1},"headroom_spot":{"nesting_mode":"list","block":{"attributes":{"cpu_percentage":{"type":"number","description":"defines percentage of additional CPU capacity to be added.","description_kind":"plain","optional":true},"enabled":{"type":"bool","description":"enable/disable headroom_spot policy.","description_kind":"plain","optional":true},"memory_percentage":{"type":"number","description":"defines percentage of additional memory capacity to be added.","description_kind":"plain","optional":true}},"description":"additional headroom based on cluster's total available capacity for spot nodes.","description_kind":"plain"},"max_items":1},"node_constraints":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description":"enable/disable node constraints policy.","description_kind":"plain","optional":true},"max_cpu_cores":{"type":"number","description":"defines max CPU cores for the node to pick.","description_kind":"plain","optional":true},"max_ram_mib":{"type":"number","description":"defines max RAM in MiB for the node to pick.","description_kind":"plain","optional":true},"min_cpu_cores":{"type":"number","description":"defines min CPU cores for the node to pick.","description_kind":"plain","optional":true},"min_ram_mib":{"type":"number","description":"defines min RAM in MiB for the node to pick.","description_kind":"plain","optional":true}},"description":"defines the node constraints that will be applied when autoscaling with Unschedulable Pods policy.","description_kind":"plain"},"max_items":1},"pod_pinner":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description":"enable/disable the Pod Pinner component's automatic management in your cluster. Default: enabled.","description_kind":"plain","optional":true}},"description":"defines the Cast AI Pod Pinner components settings.","description_kind":"plain"},"max_items":1}},"description":"policy defining autoscaler's behavior when unschedulable pods were detected.","description_kind":"plain"},"max_items":1}},"description":"autoscaler policy definitions to override current autoscaler settings","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"CAST AI autoscaler resource to manage autoscaler settings","description_kind":"plain"}},"castai_commitments":{"version":0,"block":{"attributes":{"azure_reservations":{"type":["list",["object",{"allowed_usage":"number","assignments":["list",["object",{"cluster_id":"string","priority":"number"}]],"count":"number","end_timestamp":"string","id":"string","instance_type":"string","name":"string","plan":"string","prioritization":"bool","region":"string","reservation_id":"string","reservation_status":"string","scaling_strategy":"string","scope":"string","scope_resource_group":"string","scope_subscription":"string","start_timestamp":"string","status":"string"}]],"description":"List of Azure reservations.","description_kind":"plain","computed":true},"azure_reservations_csv":{"type":"string","description":"CSV file containing reservations exported from Azure.","description_kind":"plain","optional":true},"gcp_cuds":{"type":["list",["object",{"allowed_usage":"number","assignments":["list",["object",{"cluster_id":"string","priority":"number"}]],"cpu":"number","cud_id":"string","cud_status":"string","end_timestamp":"string","id":"string","memory_mb":"number","name":"string","plan":"string","prioritization":"bool","region":"string","scaling_strategy":"string","start_timestamp":"string","status":"string","type":"string"}]],"description":"List of GCP CUDs.","description_kind":"plain","computed":true},"gcp_cuds_json":{"type":"string","description":"JSON file containing CUDs exported from GCP.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"commitment_configs":{"nesting_mode":"list","block":{"attributes":{"allowed_usage":{"type":"number","description":"Allowed usage of the commitment. The value is between 0 (0%) and 1 (100%).","description_kind":"plain","optional":true},"prioritization":{"type":"bool","description":"If enabled, it's possible to assign priorities to the assigned clusters.","description_kind":"plain","optional":true},"scaling_strategy":{"type":"string","description":"Scaling strategy of the commitment in CAST AI. One of: Default, CPUBased, RamBased","description_kind":"plain","optional":true},"status":{"type":"string","description":"Status of the commitment in CAST AI.","description_kind":"plain","optional":true}},"block_types":{"assignments":{"nesting_mode":"list","block":{"attributes":{"cluster_id":{"type":"string","description":"ID of the cluster to assign the commitment to.","description_kind":"plain","required":true},"priority":{"type":"number","description":"Priority of the assignment. The lower the value, the higher the priority. 1 is the highest priority.","description_kind":"plain","computed":true}},"description":"List of assigned clusters for the commitment. If prioritization is enabled, the order of the assignments indicates the priority. The first assignment has the highest priority.","description_kind":"plain"}},"matcher":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"Name of the commitment to match.","description_kind":"plain","required":true},"region":{"type":"string","description":"Region of the commitment to match.","description_kind":"plain","required":true},"type":{"type":"string","description":"Type of the commitment to match. For compute resources, it's the type of the machine.","description_kind":"plain","optional":true}},"description":"Matcher used to map config to a commitment.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"List of commitment configurations.","description_kind":"plain"}},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Commitments represent cloud service provider reserved instances (Azure) and commited use discounts (GCP) that can be used by CAST AI autoscaler.","description_kind":"plain"}},"castai_eks_cluster":{"version":0,"block":{"attributes":{"account_id":{"type":"string","description":"ID of AWS account","description_kind":"plain","required":true},"assume_role_arn":{"type":"string","description":"AWS IAM role ARN that will be assumed by CAST AI user. This role should allow `sts:AssumeRole` action for CAST AI user that can be retrieved using `castai_eks_user_arn` data source","description_kind":"plain","optional":true},"cluster_token":{"type":"string","description":"computed value to store cluster token","description_kind":"plain","computed":true,"sensitive":true},"credentials_id":{"type":"string","description":"CAST AI internal credentials ID","description_kind":"plain","computed":true},"delete_nodes_on_disconnect":{"type":"bool","description":"Should CAST AI remove nodes managed by CAST AI on disconnect","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"name of your EKS cluster","description_kind":"plain","required":true},"region":{"type":"string","description":"AWS region where the cluster is placed","description_kind":"plain","required":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"EKS cluster resource allows connecting an existing EKS cluster to CAST AI.","description_kind":"plain"}},"castai_eks_clusterid":{"version":0,"block":{"attributes":{"account_id":{"type":"string","description_kind":"plain","required":true},"cluster_name":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description_kind":"plain","required":true}},"description":"Retrieve CAST AI clusterid","description_kind":"plain"}},"castai_eks_user_arn":{"version":0,"block":{"attributes":{"arn":{"type":"string","description_kind":"plain","computed":true},"cluster_id":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description":"Retrieve EKS Cluster User ARN","description_kind":"plain"}},"castai_evictor_advanced_config":{"version":0,"block":{"attributes":{"cluster_id":{"type":"string","description":"CAST AI cluster id.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"evictor_advanced_config":{"nesting_mode":"list","block":{"attributes":{"aggressive":{"type":"bool","description":"Apply Aggressive mode to Evictor","description_kind":"plain","optional":true},"disposable":{"type":"bool","description":"Mark node as disposable","description_kind":"plain","optional":true},"removal_disabled":{"type":"bool","description":"Mark pods as removal disabled","description_kind":"plain","optional":true}},"block_types":{"node_selector":{"nesting_mode":"list","block":{"attributes":{"match_labels":{"type":["map","string"],"description_kind":"plain","optional":true}},"block_types":{"match_expressions":{"nesting_mode":"list","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"operator":{"type":"string","description_kind":"plain","required":true},"values":{"type":["list","string"],"description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"node selector","description_kind":"plain"}},"pod_selector":{"nesting_mode":"list","block":{"attributes":{"kind":{"type":"string","description_kind":"plain","optional":true},"match_labels":{"type":["map","string"],"description_kind":"plain","optional":true},"namespace":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"match_expressions":{"nesting_mode":"list","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"operator":{"type":"string","description_kind":"plain","required":true},"values":{"type":["list","string"],"description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"pod selector","description_kind":"plain"}}},"description":"evictor advanced configuration to target specific node/pod","description_kind":"plain"},"min_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"CAST AI eviction config resource to manage evictor properties ","description_kind":"plain"}},"castai_gke_cluster":{"version":0,"block":{"attributes":{"cluster_token":{"type":"string","description":"CAST.AI agent cluster token","description_kind":"plain","computed":true,"sensitive":true},"credentials_id":{"type":"string","description":"CAST AI credentials id for cluster","description_kind":"plain","computed":true},"credentials_json":{"type":"string","description":"GCP credentials.json from ServiceAccount with credentials for CAST AI","description_kind":"plain","optional":true,"sensitive":true},"delete_nodes_on_disconnect":{"type":"bool","description":"Should CAST AI remove nodes managed by CAST.AI on disconnect","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"location":{"type":"string","description":"GCP cluster zone in case of zonal or region in case of regional cluster","description_kind":"plain","required":true},"name":{"type":"string","description":"GKE cluster name","description_kind":"plain","required":true},"project_id":{"type":"string","description":"GCP project id","description_kind":"plain","required":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"GKE cluster resource allows connecting an existing GKE cluster to CAST AI.","description_kind":"plain"}},"castai_gke_cluster_id":{"version":0,"block":{"attributes":{"cast_service_account":{"type":"string","description":"Service account email in cast project","description_kind":"plain","optional":true,"computed":true},"client_service_account":{"type":"string","description":"Service account email in client project","description_kind":"plain","optional":true},"cluster_token":{"type":"string","description":"CAST.AI agent cluster token","description_kind":"plain","computed":true,"sensitive":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"location":{"type":"string","description":"GCP cluster zone in case of zonal or region in case of regional cluster","description_kind":"plain","required":true},"name":{"type":"string","description":"GKE cluster name","description_kind":"plain","required":true},"project_id":{"type":"string","description":"GCP project id","description_kind":"plain","required":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"GKE cluster resource allows connecting an existing GKE cluster to CAST AI.","description_kind":"plain"}},"castai_node_configuration":{"version":0,"block":{"attributes":{"cluster_id":{"type":"string","description":"CAST AI cluster id","description_kind":"plain","required":true},"container_runtime":{"type":"string","description":"Optional container runtime to be used by kubelet. Applicable for EKS only. Supported values include: `dockerd`, `containerd`","description_kind":"plain","optional":true},"disk_cpu_ratio":{"type":"number","description":"Disk to CPU ratio. Sets the number of GiBs to be added for every CPU on the node. Defaults to 0","description_kind":"plain","optional":true},"docker_config":{"type":"string","description":"Optional docker daemon configuration properties in JSON format. Provide only properties that you want to override. Applicable for EKS only. [Available values](https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file)","description_kind":"plain","optional":true},"drain_timeout_sec":{"type":"number","description":"Timeout in seconds for draining the node. Defaults to 0","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"image":{"type":"string","description":"Image to be used while provisioning the node. If nothing is provided will be resolved to latest available image based on Image family, Kubernetes version and node architecture if possible. See Cast.ai documentation for details.","description_kind":"plain","optional":true},"init_script":{"type":"string","description":"Init script to be run on your instance at launch. Should not contain any sensitive data. Value should be base64 encoded","description_kind":"plain","optional":true},"kubelet_config":{"type":"string","description":"Optional kubelet configuration properties in JSON format. Provide only properties that you want to override. Applicable for EKS only. [Available values](https://kubernetes.io/docs/reference/config-api/kubelet-config.v1beta1/)","description_kind":"plain","optional":true},"min_disk_size":{"type":"number","description":"Minimal disk size in GiB. Defaults to 100, min 30, max 65536","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the node configuration. It must be unique within the cluster. In case of cluster is reonboarded to Terraform, when previously it was onboarded with CAST AI UI, and the name corresponds to previously created node configuration this resource will override existing configuration instead of creating new.","description_kind":"plain","required":true},"ssh_public_key":{"type":"string","description":"SSH public key to be used for provisioned nodes","description_kind":"plain","optional":true},"subnets":{"type":["list","string"],"description":"Subnet ids to be used for provisioned nodes","description_kind":"plain","required":true},"tags":{"type":["map","string"],"description":"Tags to be added on cloud instances for provisioned nodes","description_kind":"plain","optional":true}},"block_types":{"aks":{"nesting_mode":"list","block":{"attributes":{"aks_image_family":{"type":"string","description":"Image OS Family to use when provisioning node in AKS. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. Possible values: (ubuntu,azure-linux)","description_kind":"plain","optional":true},"max_pods_per_node":{"type":"number","description":"Maximum number of pods that can be run on a node, which affects how many IP addresses you will need for each node. Defaults to 30","description_kind":"plain","optional":true},"os_disk_type":{"type":"string","description":"Type of managed os disk attached to the node. (See [disk types](https://learn.microsoft.com/en-us/azure/virtual-machines/disks-types)). One of: standard, standard-ssd, premium-ssd (ultra and premium-ssd-v2 are not supported for os disk)","description_kind":"plain","optional":true}},"block_types":{"loadbalancers":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"Name of loadbalancer","description_kind":"plain","required":true}},"block_types":{"ip_based_backend_pools":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"Name of the ip based backend pool","description_kind":"plain","required":true}},"description":"IP based backend pools configuration for CAST provisioned nodes","description_kind":"plain"}}},"description":"Loadboalancer configuration for CAST provisioned nodes","description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"eks":{"nesting_mode":"list","block":{"attributes":{"dns_cluster_ip":{"type":"string","description":"IP address to use for DNS queries within the cluster","description_kind":"plain","optional":true},"eks_image_family":{"type":"string","description":"Image OS Family to use when provisioning node in EKS. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. Possible values: (al2,al2023,bottlerocket)","description_kind":"plain","optional":true},"imds_hop_limit":{"type":"number","description":"Allow configure the IMDSv2 hop limit, the default is 2","description_kind":"plain","optional":true},"imds_v1":{"type":"bool","description":"When the value is true both IMDSv1 and IMDSv2 are enabled. Setting the value to false disables permanently IMDSv1 and might affect legacy workloads running on the node created with this configuration. The default is true if the flag isn't provided","description_kind":"plain","optional":true},"instance_profile_arn":{"type":"string","description":"Cluster's instance profile ARN used for CAST provisioned nodes","description_kind":"plain","required":true},"ips_per_prefix":{"type":"number","description":"Number of IPs per prefix to be used for calculating max pods.","description_kind":"plain","optional":true},"key_pair_id":{"type":"string","description":"AWS key pair ID to be used for CAST provisioned nodes. Has priority over ssh_public_key","description_kind":"plain","optional":true},"max_pods_per_node_formula":{"type":"string","description":"Formula to calculate the maximum number of pods that can be run on a node. The following list of variables will be bound to a number before evaluating and can be used in the formula: NUM_MAX_NET_INTERFACES, NUM_IP_PER_INTERFACE, NUM_IP_PER_PREFIX, NUM_CPU, NUM_RAM_GB .","description_kind":"plain","optional":true},"node_group_arn":{"type":"string","description":"Cluster's node group ARN used for CAST provisioned node pools. Required for hibernate/resume functionality","description_kind":"plain","optional":true},"security_groups":{"type":["list","string"],"description":"Cluster's security groups configuration for CAST provisioned nodes","description_kind":"plain","required":true},"volume_iops":{"type":"number","description":"AWS EBS volume IOPS to be used for CAST provisioned nodes","description_kind":"plain","optional":true},"volume_kms_key_arn":{"type":"string","description":"AWS KMS key ARN for encrypting EBS volume attached to the node","description_kind":"plain","optional":true},"volume_throughput":{"type":"number","description":"AWS EBS volume throughput in MiB/s to be used for CAST provisioned nodes","description_kind":"plain","optional":true},"volume_type":{"type":"string","description":"AWS EBS volume type to be used for CAST provisioned nodes. One of: gp3, gp2, io1, io2","description_kind":"plain","optional":true}},"block_types":{"target_group":{"nesting_mode":"list","block":{"attributes":{"arn":{"type":"string","description":"AWS target group ARN for CAST provisioned nodes","description_kind":"plain","required":true},"port":{"type":"number","description":"Port for AWS target group for CAST provisioned nodes","description_kind":"plain","optional":true}},"description":"AWS target groups configuration for CAST provisioned nodes","description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"gke":{"nesting_mode":"list","block":{"attributes":{"disk_type":{"type":"string","description":"Type of boot disk attached to the node. (See [disk types](https://cloud.google.com/compute/docs/disks#pdspecs)). One of: pd-standard, pd-balanced, pd-ssd, pd-extreme ","description_kind":"plain","optional":true},"max_pods_per_node":{"type":"number","description":"Maximum number of pods that can be run on a node, which affects how many IP addresses you will need for each node. Defaults to 110","description_kind":"plain","optional":true},"network_tags":{"type":["list","string"],"description":"Network tags to be added on a VM. (See [network tags](https://cloud.google.com/vpc/docs/add-remove-network-tags))","description_kind":"plain","optional":true},"use_ephemeral_storage_local_ssd":{"type":"bool","description":"Use ephemeral storage local SSD. Defaults to false","description_kind":"plain","optional":true},"zones":{"type":["list","string"],"description":"List of preferred availability zones to choose from when provisioning new nodes.","description_kind":"plain","deprecated":true,"optional":true}},"description_kind":"plain"},"max_items":1},"kops":{"nesting_mode":"list","block":{"attributes":{"key_pair_id":{"type":"string","description":"AWS key pair ID to be used for provisioned nodes. Has priority over sshPublicKey","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"read":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Create node configuration for given cluster. Node configuration [reference](https://docs.cast.ai/docs/node-configuration)","description_kind":"plain"}},"castai_node_configuration_default":{"version":0,"block":{"attributes":{"cluster_id":{"type":"string","description":"CAST AI cluster id","description_kind":"plain","required":true},"configuration_id":{"type":"string","description":"Id of the node configuration","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"read":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"castai_node_template":{"version":0,"block":{"attributes":{"cluster_id":{"type":"string","description":"CAST AI cluster id.","description_kind":"plain","optional":true},"configuration_id":{"type":"string","description":"CAST AI node configuration id to be used for node template.","description_kind":"plain","optional":true},"custom_instances_enabled":{"type":"bool","description":"Marks whether custom instances should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP.","description_kind":"plain","optional":true},"custom_instances_with_extended_memory_enabled":{"type":"bool","description":"Marks whether custom instances with extended memory should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP.","description_kind":"plain","optional":true},"custom_labels":{"type":["map","string"],"description":"Custom labels to be added to nodes created from this template.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_default":{"type":"bool","description":"Flag whether the node template is default.","description_kind":"plain","optional":true},"is_enabled":{"type":"bool","description":"Flag whether the node template is enabled and considered for autoscaling.","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the node template.","description_kind":"plain","required":true},"rebalancing_config_min_nodes":{"type":"number","description":"Minimum nodes that will be kept when rebalancing nodes using this node template.","description_kind":"plain","optional":true},"should_taint":{"type":"bool","description":"Marks whether the templated nodes will have a taint.","description_kind":"plain","optional":true}},"block_types":{"constraints":{"nesting_mode":"list","block":{"attributes":{"architecture_priority":{"type":["list","string"],"description":"Priority ordering of architectures, specifying no priority will pick cheapest. Allowed values: amd64, arm64.","description_kind":"plain","optional":true,"computed":true},"architectures":{"type":["list","string"],"description":"List of acceptable instance CPU architectures, the default is amd64. Allowed values: amd64, arm64.","description_kind":"plain","optional":true,"computed":true},"azs":{"type":["list","string"],"description":"The list of AZ names to consider for the node template, if empty or not set all AZs are considered.","description_kind":"plain","optional":true},"burstable_instances":{"type":"string","description":"Will include burstable instances when enabled otherwise they will be excluded. Supported values: `enabled`, `disabled` or ``.","description_kind":"plain","optional":true},"compute_optimized":{"type":"bool","description":"Compute optimized instance constraint (deprecated).","description_kind":"plain","optional":true},"compute_optimized_state":{"type":"string","description":"Will only include compute optimized nodes when enabled and exclude compute optimized nodes when disabled. Empty value won't have effect on instances filter. Supported values: `enabled`, `disabled` or empty string.","description_kind":"plain","optional":true},"cpu_manufacturers":{"type":["list","string"],"description":"List of acceptable CPU manufacturers. Allowed values: AMD, AMPERE, APPLE, AWS, INTEL.","description_kind":"plain","optional":true},"customer_specific":{"type":"string","description":"Will include customer specific (preview) instances when enabled otherwise they will be excluded. Supported values: `enabled`, `disabled` or ``.","description_kind":"plain","optional":true},"enable_spot_diversity":{"type":"bool","description":"Enable/disable spot diversity policy. When enabled, autoscaler will try to balance between diverse and cost optimal instance types.","description_kind":"plain","optional":true},"fallback_restore_rate_seconds":{"type":"number","description":"Fallback restore rate in seconds: defines how much time should pass before spot fallback should be attempted to be restored to real spot.","description_kind":"plain","optional":true},"is_gpu_only":{"type":"bool","description":"GPU instance constraint - will only pick nodes with GPU if true","description_kind":"plain","optional":true},"max_cpu":{"type":"number","description":"Max CPU cores per node.","description_kind":"plain","optional":true},"max_memory":{"type":"number","description":"Max Memory (Mib) per node.","description_kind":"plain","optional":true},"min_cpu":{"type":"number","description":"Min CPU cores per node.","description_kind":"plain","optional":true},"min_memory":{"type":"number","description":"Min Memory (Mib) per node.","description_kind":"plain","optional":true},"on_demand":{"type":"bool","description":"Should include on-demand instances in the considered pool.","description_kind":"plain","optional":true,"computed":true},"os":{"type":["list","string"],"description":"List of acceptable instance Operating Systems, the default is linux. Allowed values: linux, windows.","description_kind":"plain","optional":true,"computed":true},"spot":{"type":"bool","description":"Should include spot instances in the considered pool.","description_kind":"plain","optional":true},"spot_diversity_price_increase_limit_percent":{"type":"number","description":"Allowed node configuration price increase when diversifying instance types. E.g. if the value is 10%, then the overall price of diversified instance types can be 10% higher than the price of the optimal configuration.","description_kind":"plain","optional":true},"spot_interruption_predictions_enabled":{"type":"bool","description":"Enable/disable spot interruption predictions.","description_kind":"plain","optional":true},"spot_interruption_predictions_type":{"type":"string","description":"Spot interruption predictions type. Can be either \"aws-rebalance-recommendations\" or \"interruption-predictions\".","description_kind":"plain","optional":true},"storage_optimized":{"type":"bool","description":"Storage optimized instance constraint (deprecated).","description_kind":"plain","optional":true},"storage_optimized_state":{"type":"string","description":"Storage optimized instance constraint - will only pick storage optimized nodes if enabled and won't pick if disabled. Empty value will have no effect. Supported values: `enabled`, `disabled` or empty string.","description_kind":"plain","optional":true},"use_spot_fallbacks":{"type":"bool","description":"Spot instance fallback constraint - when true, on-demand instances will be created, when spots are unavailable.","description_kind":"plain","optional":true}},"block_types":{"custom_priority":{"nesting_mode":"list","block":{"attributes":{"instance_families":{"type":["list","string"],"description":"Instance families to prioritize in this tier.","description_kind":"plain","optional":true},"on_demand":{"type":"bool","description":"If true, this tier will apply to on-demand instances.","description_kind":"plain","optional":true},"spot":{"type":"bool","description":"If true, this tier will apply to spot instances.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"dedicated_node_affinity":{"nesting_mode":"list","block":{"attributes":{"az_name":{"type":"string","description":"Availability zone name.","description_kind":"plain","required":true},"instance_types":{"type":["list","string"],"description":"Instance/node types in this node group.","description_kind":"plain","required":true},"name":{"type":"string","description":"Name of node group.","description_kind":"plain","required":true}},"block_types":{"affinity":{"nesting_mode":"list","block":{"attributes":{"key":{"type":"string","description":"Key of the node affinity selector.","description_kind":"plain","required":true},"operator":{"type":"string","description":"Operator of the node affinity selector. Allowed values: In, NotIn, Exists, DoesNotExist, Gt, Lt.","description_kind":"plain","required":true},"values":{"type":["list","string"],"description":"Values of the node affinity selector.","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description":"Dedicated node affinity - creates preference for instances to be created on sole tenancy or dedicated nodes. This\n feature is only available for GCP clusters and sole tenancy nodes with local\n SSDs or GPUs are not supported. If the sole tenancy or dedicated nodes don't have capacity for selected instance\n type, the Autoscaler will fall back to multi-tenant instance types available for this Node Template.\n Other instance constraints are applied when the Autoscaler picks available instance types that can be created on\n the sole tenancy or dedicated node (example: setting min CPU to 16).","description_kind":"plain"}},"gpu":{"nesting_mode":"list","block":{"attributes":{"exclude_names":{"type":["list","string"],"description":"Names of the GPUs to exclude.","description_kind":"plain","optional":true},"include_names":{"type":["list","string"],"description":"Instance families to include when filtering (excludes all other families).","description_kind":"plain","optional":true},"manufacturers":{"type":["list","string"],"description":"Manufacturers of the gpus to select - NVIDIA, AMD.","description_kind":"plain","optional":true},"max_count":{"type":"number","description":"Max GPU count for the instance type to have.","description_kind":"plain","optional":true},"min_count":{"type":"number","description":"Min GPU count for the instance type to have.","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"instance_families":{"nesting_mode":"list","block":{"attributes":{"exclude":{"type":["list","string"],"description":"Instance families to include when filtering (excludes all other families).","description_kind":"plain","optional":true},"include":{"type":["list","string"],"description":"Instance families to exclude when filtering (includes all other families).","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"custom_taints":{"nesting_mode":"list","block":{"attributes":{"effect":{"type":"string","description":"Effect of a taint to be added to nodes created from this template, the default is NoSchedule. Allowed values: NoSchedule, NoExecute.","description_kind":"plain","optional":true},"key":{"type":"string","description":"Key of a taint to be added to nodes created from this template.","description_kind":"plain","required":true},"value":{"type":"string","description":"Value of a taint to be added to nodes created from this template.","description_kind":"plain","optional":true}},"description":"Custom taints to be added to the nodes created from this template. `shouldTaint` has to be `true` in order to create/update the node template with custom taints. If `shouldTaint` is `true`, but no custom taints are provided, the nodes will be tainted with the default node template taint.","description_kind":"plain"}},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"read":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"CAST AI node template resource to manage node templates","description_kind":"plain"}},"castai_organization_members":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"members":{"type":["list","string"],"description":"A list of email addresses corresponding to users who should be given member access to the organization.","description_kind":"plain","optional":true},"organization_id":{"type":"string","description":"CAST AI organization ID.","description_kind":"plain","required":true},"owners":{"type":["list","string"],"description":"A list of email addresses corresponding to users who should be given owner access to the organization.","description_kind":"plain","optional":true},"viewers":{"type":["list","string"],"description":"A list of email addresses corresponding to users who should be given viewer access to the organization.","description_kind":"plain","optional":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"CAST AI organization members resource to manage organization members","description_kind":"plain"}},"castai_rebalancing_job":{"version":0,"block":{"attributes":{"cluster_id":{"type":"string","description":"CAST AI cluster id.","description_kind":"plain","required":true},"enabled":{"type":"bool","description":"The job will only be executed if it's enabled.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"rebalancing_schedule_id":{"type":"string","description":"Rebalancing schedule of this job.","description_kind":"plain","required":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"read":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Job assigns a rebalancing schedule to a cluster.","description_kind":"plain"}},"castai_rebalancing_schedule":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the schedule.","description_kind":"plain","required":true}},"block_types":{"launch_configuration":{"nesting_mode":"list","block":{"attributes":{"aggressive_mode":{"type":"bool","description":"When enabled rebalancing will also consider problematic pods (pods without controller, job pods, pods with removal-disabled annotation) as not-problematic.","description_kind":"plain","optional":true},"keep_drain_timeout_nodes":{"type":"bool","description":"Defines whether the nodes that failed to get drained until a predefined timeout, will be kept with a rebalancing.cast.ai/status=drain-failed annotation instead of forcefully drained.","description_kind":"plain","optional":true},"node_ttl_seconds":{"type":"number","description":"Specifies amount of time since node creation before the node is allowed to be considered for automated rebalancing.","description_kind":"plain","optional":true},"num_targeted_nodes":{"type":"number","description":"Maximum number of nodes that will be selected for rebalancing.","description_kind":"plain","optional":true},"rebalancing_min_nodes":{"type":"number","description":"Minimum number of nodes that should be kept in the cluster after rebalancing.","description_kind":"plain","optional":true},"selector":{"type":"string","description":"Node selector in JSON format.","description_kind":"plain","optional":true},"target_node_selection_algorithm":{"type":"string","description":"Defines the algorithm used to select the target nodes for rebalancing.","description_kind":"plain","optional":true}},"block_types":{"execution_conditions":{"nesting_mode":"list","block":{"attributes":{"achieved_savings_percentage":{"type":"number","description":"The percentage of the predicted savings that must be achieved in order to fully execute the plan.If the savings are not achieved after creating the new nodes, the plan will fail and delete the created nodes.","description_kind":"plain","optional":true},"enabled":{"type":"bool","description":"Enables or disables the execution conditions.","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"min_items":1,"max_items":1},"schedule":{"nesting_mode":"list","block":{"attributes":{"cron":{"type":"string","description":"Cron expression defining when the schedule should trigger.\n\n The `cron` expression can optionally include the `CRON_TZ` variable at the beginning to specify the timezone in which the schedule should be interpreted.\n\n Example:\n ```plaintext\n CRON_TZ=America/New_York 0 12 * * ?\n ```\n In the example above, the `CRON_TZ` variable is set to \"America/New_York\" indicating that the cron expression should be interpreted in the Eastern Time (ET) timezone.\n\n To retrieve a list of available timezone values, you can use the following API endpoint:\n\n GET https://api.cast.ai/v1/time-zones\n\n When using the `CRON_TZ` variable, ensure that the specified timezone is valid and supported by checking the list of available timezones from the API endpoint. If the `CRON_TZ` variable is not specified, the cron expression will be interpreted in the UTC timezone.","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"read":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"trigger_conditions":{"nesting_mode":"list","block":{"attributes":{"ignore_savings":{"type":"bool","description":"If true, the savings percentage will be ignored and the rebalancing will be triggered regardless of the savings percentage.","description_kind":"plain","optional":true},"savings_percentage":{"type":"number","description":"Defines the minimum percentage of savings expected.","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1}},"description":"CAST AI rebalancing schedule resource to manage rebalancing schedules.","description_kind":"plain"}},"castai_reservations":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"organization_id":{"type":"string","description":"organization","description_kind":"plain","optional":true},"reservations":{"type":["list",["object",{"count":"string","end_date":"string","instance_type":"string","name":"string","price":"string","provider":"string","region":"string","start_date":"string","zone_id":"string","zone_name":"string"}]],"description_kind":"plain","computed":true},"reservations_csv":{"type":"string","description":"csv file containing reservations","description_kind":"plain","required":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Reservation represents cloud service provider reserved instances that can be used by CAST AI autoscaler.","description_kind":"plain","deprecated":true}},"castai_sso_connection":{"version":0,"block":{"attributes":{"additional_email_domains":{"type":["list","string"],"description":"Additional email domains that will be allowed to sign in via the connection","description_kind":"plain","optional":true},"email_domain":{"type":"string","description":"Email domain of the connection","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Connection name","description_kind":"plain","required":true}},"block_types":{"aad":{"nesting_mode":"list","block":{"attributes":{"ad_domain":{"type":"string","description":"Azure AD domain","description_kind":"plain","required":true},"client_id":{"type":"string","description":"Azure AD client ID","description_kind":"plain","required":true},"client_secret":{"type":"string","description":"Azure AD client secret","description_kind":"plain","required":true,"sensitive":true}},"description":"Azure AD connector","description_kind":"plain"},"max_items":1},"okta":{"nesting_mode":"list","block":{"attributes":{"client_id":{"type":"string","description":"Okta client ID","description_kind":"plain","required":true},"client_secret":{"type":"string","description":"Okta client secret","description_kind":"plain","required":true,"sensitive":true},"okta_domain":{"type":"string","description":"Okta domain","description_kind":"plain","required":true}},"description":"Okta connector","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"SSO Connection resource allows creating SSO trust relationship with CAST AI.","description_kind":"plain"}},"castai_workload_scaling_policy":{"version":0,"block":{"attributes":{"apply_type":{"type":"string","description":"Recommendation apply type. \n\t- IMMEDIATE - pods are restarted immediately when new recommendation is generated.\n\t- DEFERRED - pods are not restarted and recommendation values are applied during natural restarts only (new deployment, etc.)","description_kind":"plain","required":true},"cluster_id":{"type":"string","description":"CAST AI cluster id","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"management_option":{"type":"string","description":"Defines possible options for workload management.\n\t- READ_ONLY - workload watched (metrics collected), but no actions performed by CAST AI.\n\t- MANAGED - workload watched (metrics collected), CAST AI may perform actions on the workload.","description_kind":"plain","required":true},"name":{"type":"string","description":"Scaling policy name","description_kind":"plain","required":true}},"block_types":{"anti_affinity":{"nesting_mode":"list","block":{"attributes":{"consider_anti_affinity":{"type":"bool","description":"Defines if anti-affinity should be considered when scaling the workload.\n\tIf enabled, requiring host ports, or having anti-affinity on hostname will force all recommendations to be deferred.","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"cpu":{"nesting_mode":"list","block":{"attributes":{"apply_threshold":{"type":"number","description":"The threshold of when to apply the recommendation. Recommendation will be applied when diff of current requests and new recommendation is greater than set value","description_kind":"plain","optional":true},"args":{"type":["list","string"],"description":"The arguments for the function - i.e. for `QUANTILE` this should be a [0, 1] float. `MAX` doesn't accept any args","description_kind":"plain","optional":true},"function":{"type":"string","description":"The function used to calculate the resource recommendation. Supported values: `QUANTILE`, `MAX`","description_kind":"plain","optional":true},"look_back_period_seconds":{"type":"number","description":"The look back period in seconds for the recommendation.","description_kind":"plain","optional":true},"max":{"type":"number","description":"Max values for the recommendation, applies to every container. For memory - this is in MiB, for CPU - this is in cores.","description_kind":"plain","optional":true},"min":{"type":"number","description":"Min values for the recommendation, applies to every container. For memory - this is in MiB, for CPU - this is in cores.","description_kind":"plain","optional":true},"overhead":{"type":"number","description":"Overhead for the recommendation, e.g. `0.1` will result in 10% higher recommendation","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"downscaling":{"nesting_mode":"list","block":{"attributes":{"apply_type":{"type":"string","description":"Defines the apply type to be used when downscaling.\n\t- IMMEDIATE - pods are restarted immediately when new recommendation is generated.\n\t- DEFERRED - pods are not restarted and recommendation values are applied during natural restarts only (new deployment, etc.)","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"memory":{"nesting_mode":"list","block":{"attributes":{"apply_threshold":{"type":"number","description":"The threshold of when to apply the recommendation. Recommendation will be applied when diff of current requests and new recommendation is greater than set value","description_kind":"plain","optional":true},"args":{"type":["list","string"],"description":"The arguments for the function - i.e. for `QUANTILE` this should be a [0, 1] float. `MAX` doesn't accept any args","description_kind":"plain","optional":true},"function":{"type":"string","description":"The function used to calculate the resource recommendation. Supported values: `QUANTILE`, `MAX`","description_kind":"plain","optional":true},"look_back_period_seconds":{"type":"number","description":"The look back period in seconds for the recommendation.","description_kind":"plain","optional":true},"max":{"type":"number","description":"Max values for the recommendation, applies to every container. For memory - this is in MiB, for CPU - this is in cores.","description_kind":"plain","optional":true},"min":{"type":"number","description":"Min values for the recommendation, applies to every container. For memory - this is in MiB, for CPU - this is in cores.","description_kind":"plain","optional":true},"overhead":{"type":"number","description":"Overhead for the recommendation, e.g. `0.1` will result in 10% higher recommendation","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"memory_event":{"nesting_mode":"list","block":{"attributes":{"apply_type":{"type":"string","description":"Defines the apply type to be used when applying recommendation for memory related event.\n\t- IMMEDIATE - pods are restarted immediately when new recommendation is generated.\n\t- DEFERRED - pods are not restarted and recommendation values are applied during natural restarts only (new deployment, etc.)","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"startup":{"nesting_mode":"list","block":{"attributes":{"period_seconds":{"type":"number","description":"Defines the duration (in seconds) during which elevated resource usage is expected at startup.\nWhen set, recommendations will be adjusted to disregard resource spikes within this period.\nIf not specified, the workload will receive standard recommendations without startup considerations.","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"read":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Manage workload scaling policy. Scaling policy [reference](https://docs.cast.ai/docs/woop-scaling-policies)","description_kind":"plain"}}},"data_source_schemas":{"castai_eks_settings":{"version":0,"block":{"attributes":{"account_id":{"type":"string","description_kind":"plain","required":true},"cluster":{"type":"string","description_kind":"plain","required":true},"iam_managed_policies":{"type":["set","string"],"description_kind":"plain","computed":true},"iam_policy_json":{"type":"string","description_kind":"plain","computed":true},"iam_user_policy_json":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description_kind":"plain","required":true},"vpc":{"type":"string","description_kind":"plain","required":true}},"description":"Retrieve IAM policy, IAM User Policy and instance profile policies for the specified cluster","description_kind":"plain"}},"castai_eks_user_arn":{"version":0,"block":{"attributes":{"arn":{"type":"string","description_kind":"plain","computed":true},"cluster_id":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain","deprecated":true}},"castai_gke_user_policies":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"policy":{"type":["list","string"],"description_kind":"plain","computed":true}},"description_kind":"plain"}},"castai_organization":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true}},"description":"Retrieve organization ID","description_kind":"plain"}}}}}} diff --git a/examples-generated/castai/v1alpha1/autoscaler.yaml b/examples-generated/castai/v1alpha1/autoscaler.yaml new file mode 100644 index 0000000..e01653f --- /dev/null +++ b/examples-generated/castai/v1alpha1/autoscaler.yaml @@ -0,0 +1,38 @@ +apiVersion: castai.upbound.io/v1alpha1 +kind: AutoScaler +metadata: + annotations: + meta.upbound.io/example-id: castai/v1alpha1/autoscaler + labels: + testing.upbound.io/example-name: castai_autoscaler_policy + name: castai-autoscaler-policy +spec: + forProvider: + autoscalerSettings: + - clusterLimits: + - cpu: + - maxCores: 10 + minCores: 1 + enabled: true + enabled: true + isScopedMode: false + nodeDownscaler: + - emptyNodes: + - delaySeconds: 90 + enabled: true + enabled: true + evictor: + - aggressiveMode: false + cycleInterval: 60s + dryRun: false + enabled: true + ignorePodDisruptionBudgets: false + nodeGracePeriodMinutes: 10 + podEvictionFailureBackOffInterval: 30s + scopedMode: false + nodeTemplatesPartialMatchingEnabled: false + unschedulablePods: + - enabled: true + clusterIdSelector: + matchLabels: + testing.upbound.io/example-name: test diff --git a/examples-generated/castai/v1alpha1/eksclusterid.yaml b/examples-generated/castai/v1alpha1/eksclusterid.yaml new file mode 100644 index 0000000..e2c0826 --- /dev/null +++ b/examples-generated/castai/v1alpha1/eksclusterid.yaml @@ -0,0 +1,13 @@ +apiVersion: castai.upbound.io/v1alpha1 +kind: EksClusterId +metadata: + annotations: + meta.upbound.io/example-id: castai/v1alpha1/eksclusterid + labels: + testing.upbound.io/example-name: cluster_id + name: cluster-id +spec: + forProvider: + accountId: ${data.aws_caller_identity.current.account_id} + clusterName: ${var.cluster_name} + region: ${var.cluster_region} diff --git a/examples-generated/castai/v1alpha1/eksuserarn.yaml b/examples-generated/castai/v1alpha1/eksuserarn.yaml new file mode 100644 index 0000000..d5e0159 --- /dev/null +++ b/examples-generated/castai/v1alpha1/eksuserarn.yaml @@ -0,0 +1,13 @@ +apiVersion: castai.upbound.io/v1alpha1 +kind: EksUserArn +metadata: + annotations: + meta.upbound.io/example-id: castai/v1alpha1/eksuserarn + labels: + testing.upbound.io/example-name: castai_user_arn + name: castai-user-arn +spec: + forProvider: + clusterIdSelector: + matchLabels: + testing.upbound.io/example-name: cluster_id diff --git a/examples-generated/castai/v1alpha1/evictoradvancedconfig.yaml b/examples-generated/castai/v1alpha1/evictoradvancedconfig.yaml new file mode 100644 index 0000000..ee4e9ad --- /dev/null +++ b/examples-generated/castai/v1alpha1/evictoradvancedconfig.yaml @@ -0,0 +1,20 @@ +apiVersion: castai.upbound.io/v1alpha1 +kind: EvictorAdvancedConfig +metadata: + annotations: + meta.upbound.io/example-id: castai/v1alpha1/evictoradvancedconfig + labels: + testing.upbound.io/example-name: config + name: config +spec: + forProvider: + clusterIdSelector: + matchLabels: + testing.upbound.io/example-name: test + evictorAdvancedConfig: + - aggressive: true + podSelector: + - kind: Job + matchLabels: + job: test + namespace: test diff --git a/examples-generated/castai/v1alpha1/nodetemplate.yaml b/examples-generated/castai/v1alpha1/nodetemplate.yaml new file mode 100644 index 0000000..5c0dc5e --- /dev/null +++ b/examples-generated/castai/v1alpha1/nodetemplate.yaml @@ -0,0 +1,57 @@ +apiVersion: castai.upbound.io/v1alpha1 +kind: NodeTemplate +metadata: + annotations: + meta.upbound.io/example-id: castai/v1alpha1/nodetemplate + labels: + testing.upbound.io/example-name: default_by_castai + name: default-by-castai +spec: + forProvider: + clusterIdSelector: + matchLabels: + testing.upbound.io/example-name: test + configurationIdSelector: + matchLabels: + testing.upbound.io/example-name: default + constraints: + - architectures: + - amd64 + azs: + - us-east-2a + - us-east-2b + burstableInstances: disabled + computeOptimizedState: disabled + customPriority: + - instanceFamilies: + - c5 + onDemand: true + spot: false + customerSpecific: disabled + enableSpotDiversity: true + fallbackRestoreRateSeconds: 300 + instanceFamilies: + - include: + - c5 + isGpuOnly: false + maxCpu: 8 + maxMemory: 16384 + minCpu: 2 + minMemory: 4096 + onDemand: true + spot: false + spotDiversityPriceIncreaseLimitPercent: 20 + spotInterruptionPredictionsEnabled: true + spotInterruptionPredictionsType: aws-rebalance-recommendations + storageOptimizedState: disabled + useSpotFallbacks: true + customLabels: + env: production + customTaints: + - effect: NoSchedule + key: dedicated + value: backend + isDefault: true + isEnabled: true + name: default-by-castai + shouldTaint: true diff --git a/examples-generated/castai/v1alpha1/organizationmembers.yaml b/examples-generated/castai/v1alpha1/organizationmembers.yaml new file mode 100644 index 0000000..4b8b301 --- /dev/null +++ b/examples-generated/castai/v1alpha1/organizationmembers.yaml @@ -0,0 +1,16 @@ +apiVersion: castai.upbound.io/v1alpha1 +kind: OrganizationMembers +metadata: + annotations: + meta.upbound.io/example-id: castai/v1alpha1/organizationmembers + labels: + testing.upbound.io/example-name: dev + name: dev +spec: + forProvider: + members: + - member@test.ai + organizationId: ${data.castai_organization.dev.id} + owners: + - owner@test.ai + viewers: [] diff --git a/package/crds/castai.upbound.io_autoscalers.yaml b/package/crds/castai.upbound.io_autoscalers.yaml index edbaef5..d26f2fd 100644 --- a/package/crds/castai.upbound.io_autoscalers.yaml +++ b/package/crds/castai.upbound.io_autoscalers.yaml @@ -34,7 +34,8 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: AutoScaler is the Schema for the AutoScalers API. + description: AutoScaler is the Schema for the AutoScalers API. CAST AI autoscaler + resource to manage autoscaler settings properties: apiVersion: description: |- @@ -73,275 +74,321 @@ spec: forProvider: properties: autoscalerPoliciesJson: - description: autoscaler policies JSON string to override current - autoscaler settings + description: |- + (String, Deprecated) autoscaler policies JSON string to override current autoscaler settings + autoscaler policies JSON string to override current autoscaler settings type: string autoscalerSettings: - description: autoscaler policy definitions to override current - autoscaler settings + description: |- + (Block List, Max: 1) autoscaler policy definitions to override current autoscaler settings (see below for nested schema) + autoscaler policy definitions to override current autoscaler settings items: properties: clusterLimits: - description: defines minimum and maximum amount of CPU the - cluster can have. + description: |- + (Block List, Max: 1) defines minimum and maximum amount of CPU the cluster can have. (see below for nested schema) + defines minimum and maximum amount of CPU the cluster can have. items: properties: cpu: - description: defines the minimum and maximum amount - of CPUs for cluster's worker nodes. + description: |- + (Block List, Max: 1) defines the minimum and maximum amount of CPUs for cluster's worker nodes. (see below for nested schema) + defines the minimum and maximum amount of CPUs for cluster's worker nodes. items: properties: maxCores: - description: defines the maximum allowed amount - of vCPUs in the whole cluster. + description: |- + (Number) defines the maximum allowed amount of vCPUs in the whole cluster. + defines the maximum allowed amount of vCPUs in the whole cluster. type: number minCores: - description: defines the minimum allowed amount - of CPUs in the whole cluster. + description: |- + (Number) defines the minimum allowed amount of CPUs in the whole cluster. + defines the minimum allowed amount of CPUs in the whole cluster. type: number type: object type: array enabled: - description: enable/disable cluster size limits policy. + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable cluster size limits policy. type: boolean type: object type: array enabled: - description: enable/disable autoscaler policies + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable autoscaler policies type: boolean isScopedMode: - description: run autoscaler in scoped mode. Only marked - pods and nodes will be considered. + description: |- + (Boolean) run autoscaler in scoped mode. Only marked pods and nodes will be considered. + run autoscaler in scoped mode. Only marked pods and nodes will be considered. type: boolean nodeDownscaler: - description: node downscaler defines policies for removing - nodes based on the configured conditions. + description: |- + (Block List, Max: 1) node downscaler defines policies for removing nodes based on the configured conditions. (see below for nested schema) + node downscaler defines policies for removing nodes based on the configured conditions. items: properties: emptyNodes: - description: defines whether Node Downscaler should - opt in for removing empty worker nodes when possible. + description: |- + (Block List, Max: 1) defines whether Node Downscaler should opt in for removing empty worker nodes when possible. (see below for nested schema) + defines whether Node Downscaler should opt in for removing empty worker nodes when possible. items: properties: delaySeconds: - description: period (in seconds) to wait before - removing the node. Might be useful to control - the aggressiveness of the downscaler. + description: |- + (Number) period (in seconds) to wait before removing the node. Might be useful to control the aggressiveness of the downscaler. + period (in seconds) to wait before removing the node. Might be useful to control the aggressiveness of the downscaler. type: number enabled: - description: enable/disable the empty worker - nodes policy. + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable the empty worker nodes policy. type: boolean type: object type: array enabled: - description: enable/disable node downscaler policy. + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable node downscaler policy. type: boolean evictor: - description: defines the CAST AI Evictor component - settings. Evictor watches the pods running in your - cluster and looks for ways to compact them into - fewer nodes, making nodes empty, which will be removed - by the empty worker nodes policy. + description: |- + (Block List, Max: 1) defines the CAST AI Evictor component settings. Evictor watches the pods running in your cluster and looks for ways to compact them into fewer nodes, making nodes empty, which will be removed by the empty worker nodes policy. (see below for nested schema) + defines the CAST AI Evictor component settings. Evictor watches the pods running in your cluster and looks for ways to compact them into fewer nodes, making nodes empty, which will be removed by the empty worker nodes policy. items: properties: aggressiveMode: - description: enable/disable aggressive mode. - By default, Evictor does not target nodes - that are running unreplicated pods. This mode - will make the Evictor start considering application - with just a single replica. + description: |- + (Boolean) enable/disable aggressive mode. By default, Evictor does not target nodes that are running unreplicated pods. This mode will make the Evictor start considering application with just a single replica. + enable/disable aggressive mode. By default, Evictor does not target nodes that are running unreplicated pods. This mode will make the Evictor start considering application with just a single replica. type: boolean cycleInterval: - description: configure the interval duration - between Evictor operations. This property - can be used to lower or raise the frequency - of the Evictor's find-and-drain operations. + description: |- + and-drain operations. + configure the interval duration between Evictor operations. This property can be used to lower or raise the frequency of the Evictor's find-and-drain operations. type: string dryRun: - description: enable/disable dry-run. This property - allows you to prevent the Evictor from carrying - any operations out and preview the actions - it would take. + description: |- + run. This property allows you to prevent the Evictor from carrying any operations out and preview the actions it would take. + enable/disable dry-run. This property allows you to prevent the Evictor from carrying any operations out and preview the actions it would take. type: boolean enabled: - description: enable/disable the Evictor policy. - This will either install or uninstall the - Evictor component in your cluster. + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable the Evictor policy. This will either install or uninstall the Evictor component in your cluster. type: boolean ignorePodDisruptionBudgets: - description: if enabled then Evictor will attempt - to evict pods that have pod disruption budgets - configured. + description: |- + (Boolean) if enabled then Evictor will attempt to evict pods that have pod disruption budgets configured. + if enabled then Evictor will attempt to evict pods that have pod disruption budgets configured. type: boolean nodeGracePeriodMinutes: - description: configure the node grace period - which controls the duration which must pass - after a node has been created before Evictor - starts considering that node. + description: |- + (Number) configure the node grace period which controls the duration which must pass after a node has been created before Evictor starts considering that node. + configure the node grace period which controls the duration which must pass after a node has been created before Evictor starts considering that node. type: number podEvictionFailureBackOffInterval: - description: configure the pod eviction failure - back off interval. If pod eviction fails then - Evictor will attempt to evict it again after - the amount of time specified here. + description: |- + (String) configure the pod eviction failure back off interval. If pod eviction fails then Evictor will attempt to evict it again after the amount of time specified here. + configure the pod eviction failure back off interval. If pod eviction fails then Evictor will attempt to evict it again after the amount of time specified here. type: string scopedMode: - description: enable/disable scoped mode. By - default, Evictor targets all nodes in the - cluster. This mode will constrain it to just - the nodes which were created by CAST AI. + description: |- + (Boolean) enable/disable scoped mode. By default, Evictor targets all nodes in the cluster. This mode will constrain it to just the nodes which were created by CAST AI. + enable/disable scoped mode. By default, Evictor targets all nodes in the cluster. This mode will constrain it to just the nodes which were created by CAST AI. type: boolean type: object type: array type: object type: array nodeTemplatesPartialMatchingEnabled: - description: marks whether partial matching should be used - when deciding which custom node template to select. + description: |- + (Boolean) marks whether partial matching should be used when deciding which custom node template to select. + marks whether partial matching should be used when deciding which custom node template to select. type: boolean spotInstances: - description: policy defining whether autoscaler can use - spot instances for provisioning additional workloads. + description: |- + (Block List, Max: 1) policy defining whether autoscaler can use spot instances for provisioning additional workloads. (see below for nested schema) + policy defining whether autoscaler can use spot instances for provisioning additional workloads. items: properties: enabled: - description: enable/disable spot instances policy. + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable spot instances policy. type: boolean maxReclaimRate: - description: max allowed reclaim rate when choosing - spot instance type. E.g. if the value is 10%, instance - types having 10% or higher reclaim rate will not - be considered. Set to zero to use all instance types - regardless of reclaim rate. + description: |- + (Number) max allowed reclaim rate when choosing spot instance type. E.g. if the value is 10%, instance types having 10% or higher reclaim rate will not be considered. Set to zero to use all instance types regardless of reclaim rate. + max allowed reclaim rate when choosing spot instance type. E.g. if the value is 10%, instance types having 10% or higher reclaim rate will not be considered. Set to zero to use all instance types regardless of reclaim rate. type: number spotBackups: - description: policy defining whether autoscaler can - use spot backups instead of spot instances when - spot instances are not available. + description: |- + (Block List, Max: 1) policy defining whether autoscaler can use spot backups instead of spot instances when spot instances are not available. (see below for nested schema) + policy defining whether autoscaler can use spot backups instead of spot instances when spot instances are not available. items: properties: enabled: - description: enable/disable spot backups policy. + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable spot backups policy. type: boolean spotBackupRestoreRateSeconds: - description: defines interval on how often spot - backups restore to real spot should occur. + description: |- + (Number) defines interval on how often spot backups restore to real spot should occur. + defines interval on how often spot backups restore to real spot should occur. type: number type: object type: array spotDiversityEnabled: - description: enable/disable spot diversity policy. - When enabled, autoscaler will try to balance between - diverse and cost optimal instance types. + description: |- + (Boolean) enable/disable spot diversity policy. When enabled, autoscaler will try to balance between diverse and cost optimal instance types. + enable/disable spot diversity policy. When enabled, autoscaler will try to balance between diverse and cost optimal instance types. type: boolean spotDiversityPriceIncreaseLimit: - description: allowed node configuration price increase - when diversifying instance types. E.g. if the value - is 10%, then the overall price of diversified instance - types can be 10% higher than the price of the optimal - configuration. + description: |- + (Number) allowed node configuration price increase when diversifying instance types. E.g. if the value is 10%, then the overall price of diversified instance types can be 10% higher than the price of the optimal configuration. + allowed node configuration price increase when diversifying instance types. E.g. if the value is 10%, then the overall price of diversified instance types can be 10% higher than the price of the optimal configuration. type: number spotInterruptionPredictions: - description: configure the handling of SPOT interruption - predictions. + description: |- + (Block List, Max: 1) configure the handling of SPOT interruption predictions. (see below for nested schema) + configure the handling of SPOT interruption predictions. items: properties: enabled: - description: enable/disable spot interruption - predictions. + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable spot interruption predictions. type: boolean spotInterruptionPredictionsType: - description: define the type of the spot interruption - prediction to handle. Allowed values are AWSRebalanceRecommendations, - CASTAIInterruptionPredictions. + description: |- + (String) define the type of the spot interruption prediction to handle. Allowed values are AWSRebalanceRecommendations, CASTAIInterruptionPredictions. + define the type of the spot interruption prediction to handle. Allowed values are AWSRebalanceRecommendations, CASTAIInterruptionPredictions. type: string type: object type: array type: object type: array unschedulablePods: - description: policy defining autoscaler's behavior when - unschedulable pods were detected. + description: |- + (Block List, Max: 1) policy defining autoscaler's behavior when unschedulable pods were detected. (see below for nested schema) + policy defining autoscaler's behavior when unschedulable pods were detected. items: properties: customInstancesEnabled: - description: enable/disable custom instances policy. + description: |- + (Boolean) enable/disable custom instances policy. + enable/disable custom instances policy. type: boolean enabled: - description: enable/disable unschedulable pods detection - policy. + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable unschedulable pods detection policy. type: boolean headroom: - description: additional headroom based on cluster's - total available capacity for on-demand nodes. + description: |- + demand nodes. (see below for nested schema) + additional headroom based on cluster's total available capacity for on-demand nodes. items: properties: cpuPercentage: - description: defines percentage of additional - CPU capacity to be added. + description: |- + (Number) defines percentage of additional CPU capacity to be added. + defines percentage of additional CPU capacity to be added. type: number enabled: - description: enable/disable headroom policy. + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable headroom policy. type: boolean memoryPercentage: - description: defines percentage of additional - memory capacity to be added. + description: |- + (Number) defines percentage of additional memory capacity to be added. + defines percentage of additional memory capacity to be added. type: number type: object type: array headroomSpot: - description: additional headroom based on cluster's - total available capacity for spot nodes. + description: |- + (Block List, Max: 1) additional headroom based on cluster's total available capacity for spot nodes. (see below for nested schema) + additional headroom based on cluster's total available capacity for spot nodes. items: properties: cpuPercentage: - description: defines percentage of additional - CPU capacity to be added. + description: |- + (Number) defines percentage of additional CPU capacity to be added. + defines percentage of additional CPU capacity to be added. type: number enabled: - description: enable/disable headroom_spot policy. + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable headroom_spot policy. type: boolean memoryPercentage: - description: defines percentage of additional - memory capacity to be added. + description: |- + (Number) defines percentage of additional memory capacity to be added. + defines percentage of additional memory capacity to be added. type: number type: object type: array nodeConstraints: - description: defines the node constraints that will - be applied when autoscaling with Unschedulable Pods - policy. + description: |- + (Block List, Max: 1) defines the node constraints that will be applied when autoscaling with Unschedulable Pods policy. (see below for nested schema) + defines the node constraints that will be applied when autoscaling with Unschedulable Pods policy. items: properties: enabled: - description: enable/disable node constraints - policy. + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable node constraints policy. type: boolean maxCpuCores: - description: defines max CPU cores for the node - to pick. + description: |- + (Number) defines max CPU cores for the node to pick. + defines max CPU cores for the node to pick. type: number maxRamMib: - description: defines max RAM in MiB for the - node to pick. + description: |- + (Number) defines max RAM in MiB for the node to pick. + defines max RAM in MiB for the node to pick. type: number minCpuCores: - description: defines min CPU cores for the node - to pick. + description: |- + (Number) defines min CPU cores for the node to pick. + defines min CPU cores for the node to pick. type: number minRamMib: - description: defines min RAM in MiB for the - node to pick. + description: |- + (Number) defines min RAM in MiB for the node to pick. + defines min RAM in MiB for the node to pick. type: number type: object type: array + podPinner: + description: |- + (Block List, Max: 1) defines the Cast AI Pod Pinner components settings. (see below for nested schema) + defines the Cast AI Pod Pinner components settings. + items: + properties: + enabled: + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable the Pod Pinner component's automatic management in your cluster. Default: enabled. + type: boolean + type: object + type: array type: object type: array type: object type: array clusterId: - description: CAST AI cluster id + description: |- + (String) CAST AI cluster id + CAST AI cluster id type: string clusterIdRef: description: Reference to a EksClusterId in castai to populate @@ -434,275 +481,321 @@ spec: autoscaler. properties: autoscalerPoliciesJson: - description: autoscaler policies JSON string to override current - autoscaler settings + description: |- + (String, Deprecated) autoscaler policies JSON string to override current autoscaler settings + autoscaler policies JSON string to override current autoscaler settings type: string autoscalerSettings: - description: autoscaler policy definitions to override current - autoscaler settings + description: |- + (Block List, Max: 1) autoscaler policy definitions to override current autoscaler settings (see below for nested schema) + autoscaler policy definitions to override current autoscaler settings items: properties: clusterLimits: - description: defines minimum and maximum amount of CPU the - cluster can have. + description: |- + (Block List, Max: 1) defines minimum and maximum amount of CPU the cluster can have. (see below for nested schema) + defines minimum and maximum amount of CPU the cluster can have. items: properties: cpu: - description: defines the minimum and maximum amount - of CPUs for cluster's worker nodes. + description: |- + (Block List, Max: 1) defines the minimum and maximum amount of CPUs for cluster's worker nodes. (see below for nested schema) + defines the minimum and maximum amount of CPUs for cluster's worker nodes. items: properties: maxCores: - description: defines the maximum allowed amount - of vCPUs in the whole cluster. + description: |- + (Number) defines the maximum allowed amount of vCPUs in the whole cluster. + defines the maximum allowed amount of vCPUs in the whole cluster. type: number minCores: - description: defines the minimum allowed amount - of CPUs in the whole cluster. + description: |- + (Number) defines the minimum allowed amount of CPUs in the whole cluster. + defines the minimum allowed amount of CPUs in the whole cluster. type: number type: object type: array enabled: - description: enable/disable cluster size limits policy. + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable cluster size limits policy. type: boolean type: object type: array enabled: - description: enable/disable autoscaler policies + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable autoscaler policies type: boolean isScopedMode: - description: run autoscaler in scoped mode. Only marked - pods and nodes will be considered. + description: |- + (Boolean) run autoscaler in scoped mode. Only marked pods and nodes will be considered. + run autoscaler in scoped mode. Only marked pods and nodes will be considered. type: boolean nodeDownscaler: - description: node downscaler defines policies for removing - nodes based on the configured conditions. + description: |- + (Block List, Max: 1) node downscaler defines policies for removing nodes based on the configured conditions. (see below for nested schema) + node downscaler defines policies for removing nodes based on the configured conditions. items: properties: emptyNodes: - description: defines whether Node Downscaler should - opt in for removing empty worker nodes when possible. + description: |- + (Block List, Max: 1) defines whether Node Downscaler should opt in for removing empty worker nodes when possible. (see below for nested schema) + defines whether Node Downscaler should opt in for removing empty worker nodes when possible. items: properties: delaySeconds: - description: period (in seconds) to wait before - removing the node. Might be useful to control - the aggressiveness of the downscaler. + description: |- + (Number) period (in seconds) to wait before removing the node. Might be useful to control the aggressiveness of the downscaler. + period (in seconds) to wait before removing the node. Might be useful to control the aggressiveness of the downscaler. type: number enabled: - description: enable/disable the empty worker - nodes policy. + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable the empty worker nodes policy. type: boolean type: object type: array enabled: - description: enable/disable node downscaler policy. + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable node downscaler policy. type: boolean evictor: - description: defines the CAST AI Evictor component - settings. Evictor watches the pods running in your - cluster and looks for ways to compact them into - fewer nodes, making nodes empty, which will be removed - by the empty worker nodes policy. + description: |- + (Block List, Max: 1) defines the CAST AI Evictor component settings. Evictor watches the pods running in your cluster and looks for ways to compact them into fewer nodes, making nodes empty, which will be removed by the empty worker nodes policy. (see below for nested schema) + defines the CAST AI Evictor component settings. Evictor watches the pods running in your cluster and looks for ways to compact them into fewer nodes, making nodes empty, which will be removed by the empty worker nodes policy. items: properties: aggressiveMode: - description: enable/disable aggressive mode. - By default, Evictor does not target nodes - that are running unreplicated pods. This mode - will make the Evictor start considering application - with just a single replica. + description: |- + (Boolean) enable/disable aggressive mode. By default, Evictor does not target nodes that are running unreplicated pods. This mode will make the Evictor start considering application with just a single replica. + enable/disable aggressive mode. By default, Evictor does not target nodes that are running unreplicated pods. This mode will make the Evictor start considering application with just a single replica. type: boolean cycleInterval: - description: configure the interval duration - between Evictor operations. This property - can be used to lower or raise the frequency - of the Evictor's find-and-drain operations. + description: |- + and-drain operations. + configure the interval duration between Evictor operations. This property can be used to lower or raise the frequency of the Evictor's find-and-drain operations. type: string dryRun: - description: enable/disable dry-run. This property - allows you to prevent the Evictor from carrying - any operations out and preview the actions - it would take. + description: |- + run. This property allows you to prevent the Evictor from carrying any operations out and preview the actions it would take. + enable/disable dry-run. This property allows you to prevent the Evictor from carrying any operations out and preview the actions it would take. type: boolean enabled: - description: enable/disable the Evictor policy. - This will either install or uninstall the - Evictor component in your cluster. + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable the Evictor policy. This will either install or uninstall the Evictor component in your cluster. type: boolean ignorePodDisruptionBudgets: - description: if enabled then Evictor will attempt - to evict pods that have pod disruption budgets - configured. + description: |- + (Boolean) if enabled then Evictor will attempt to evict pods that have pod disruption budgets configured. + if enabled then Evictor will attempt to evict pods that have pod disruption budgets configured. type: boolean nodeGracePeriodMinutes: - description: configure the node grace period - which controls the duration which must pass - after a node has been created before Evictor - starts considering that node. + description: |- + (Number) configure the node grace period which controls the duration which must pass after a node has been created before Evictor starts considering that node. + configure the node grace period which controls the duration which must pass after a node has been created before Evictor starts considering that node. type: number podEvictionFailureBackOffInterval: - description: configure the pod eviction failure - back off interval. If pod eviction fails then - Evictor will attempt to evict it again after - the amount of time specified here. + description: |- + (String) configure the pod eviction failure back off interval. If pod eviction fails then Evictor will attempt to evict it again after the amount of time specified here. + configure the pod eviction failure back off interval. If pod eviction fails then Evictor will attempt to evict it again after the amount of time specified here. type: string scopedMode: - description: enable/disable scoped mode. By - default, Evictor targets all nodes in the - cluster. This mode will constrain it to just - the nodes which were created by CAST AI. + description: |- + (Boolean) enable/disable scoped mode. By default, Evictor targets all nodes in the cluster. This mode will constrain it to just the nodes which were created by CAST AI. + enable/disable scoped mode. By default, Evictor targets all nodes in the cluster. This mode will constrain it to just the nodes which were created by CAST AI. type: boolean type: object type: array type: object type: array nodeTemplatesPartialMatchingEnabled: - description: marks whether partial matching should be used - when deciding which custom node template to select. + description: |- + (Boolean) marks whether partial matching should be used when deciding which custom node template to select. + marks whether partial matching should be used when deciding which custom node template to select. type: boolean spotInstances: - description: policy defining whether autoscaler can use - spot instances for provisioning additional workloads. + description: |- + (Block List, Max: 1) policy defining whether autoscaler can use spot instances for provisioning additional workloads. (see below for nested schema) + policy defining whether autoscaler can use spot instances for provisioning additional workloads. items: properties: enabled: - description: enable/disable spot instances policy. + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable spot instances policy. type: boolean maxReclaimRate: - description: max allowed reclaim rate when choosing - spot instance type. E.g. if the value is 10%, instance - types having 10% or higher reclaim rate will not - be considered. Set to zero to use all instance types - regardless of reclaim rate. + description: |- + (Number) max allowed reclaim rate when choosing spot instance type. E.g. if the value is 10%, instance types having 10% or higher reclaim rate will not be considered. Set to zero to use all instance types regardless of reclaim rate. + max allowed reclaim rate when choosing spot instance type. E.g. if the value is 10%, instance types having 10% or higher reclaim rate will not be considered. Set to zero to use all instance types regardless of reclaim rate. type: number spotBackups: - description: policy defining whether autoscaler can - use spot backups instead of spot instances when - spot instances are not available. + description: |- + (Block List, Max: 1) policy defining whether autoscaler can use spot backups instead of spot instances when spot instances are not available. (see below for nested schema) + policy defining whether autoscaler can use spot backups instead of spot instances when spot instances are not available. items: properties: enabled: - description: enable/disable spot backups policy. + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable spot backups policy. type: boolean spotBackupRestoreRateSeconds: - description: defines interval on how often spot - backups restore to real spot should occur. + description: |- + (Number) defines interval on how often spot backups restore to real spot should occur. + defines interval on how often spot backups restore to real spot should occur. type: number type: object type: array spotDiversityEnabled: - description: enable/disable spot diversity policy. - When enabled, autoscaler will try to balance between - diverse and cost optimal instance types. + description: |- + (Boolean) enable/disable spot diversity policy. When enabled, autoscaler will try to balance between diverse and cost optimal instance types. + enable/disable spot diversity policy. When enabled, autoscaler will try to balance between diverse and cost optimal instance types. type: boolean spotDiversityPriceIncreaseLimit: - description: allowed node configuration price increase - when diversifying instance types. E.g. if the value - is 10%, then the overall price of diversified instance - types can be 10% higher than the price of the optimal - configuration. + description: |- + (Number) allowed node configuration price increase when diversifying instance types. E.g. if the value is 10%, then the overall price of diversified instance types can be 10% higher than the price of the optimal configuration. + allowed node configuration price increase when diversifying instance types. E.g. if the value is 10%, then the overall price of diversified instance types can be 10% higher than the price of the optimal configuration. type: number spotInterruptionPredictions: - description: configure the handling of SPOT interruption - predictions. + description: |- + (Block List, Max: 1) configure the handling of SPOT interruption predictions. (see below for nested schema) + configure the handling of SPOT interruption predictions. items: properties: enabled: - description: enable/disable spot interruption - predictions. + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable spot interruption predictions. type: boolean spotInterruptionPredictionsType: - description: define the type of the spot interruption - prediction to handle. Allowed values are AWSRebalanceRecommendations, - CASTAIInterruptionPredictions. + description: |- + (String) define the type of the spot interruption prediction to handle. Allowed values are AWSRebalanceRecommendations, CASTAIInterruptionPredictions. + define the type of the spot interruption prediction to handle. Allowed values are AWSRebalanceRecommendations, CASTAIInterruptionPredictions. type: string type: object type: array type: object type: array unschedulablePods: - description: policy defining autoscaler's behavior when - unschedulable pods were detected. + description: |- + (Block List, Max: 1) policy defining autoscaler's behavior when unschedulable pods were detected. (see below for nested schema) + policy defining autoscaler's behavior when unschedulable pods were detected. items: properties: customInstancesEnabled: - description: enable/disable custom instances policy. + description: |- + (Boolean) enable/disable custom instances policy. + enable/disable custom instances policy. type: boolean enabled: - description: enable/disable unschedulable pods detection - policy. + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable unschedulable pods detection policy. type: boolean headroom: - description: additional headroom based on cluster's - total available capacity for on-demand nodes. + description: |- + demand nodes. (see below for nested schema) + additional headroom based on cluster's total available capacity for on-demand nodes. items: properties: cpuPercentage: - description: defines percentage of additional - CPU capacity to be added. + description: |- + (Number) defines percentage of additional CPU capacity to be added. + defines percentage of additional CPU capacity to be added. type: number enabled: - description: enable/disable headroom policy. + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable headroom policy. type: boolean memoryPercentage: - description: defines percentage of additional - memory capacity to be added. + description: |- + (Number) defines percentage of additional memory capacity to be added. + defines percentage of additional memory capacity to be added. type: number type: object type: array headroomSpot: - description: additional headroom based on cluster's - total available capacity for spot nodes. + description: |- + (Block List, Max: 1) additional headroom based on cluster's total available capacity for spot nodes. (see below for nested schema) + additional headroom based on cluster's total available capacity for spot nodes. items: properties: cpuPercentage: - description: defines percentage of additional - CPU capacity to be added. + description: |- + (Number) defines percentage of additional CPU capacity to be added. + defines percentage of additional CPU capacity to be added. type: number enabled: - description: enable/disable headroom_spot policy. + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable headroom_spot policy. type: boolean memoryPercentage: - description: defines percentage of additional - memory capacity to be added. + description: |- + (Number) defines percentage of additional memory capacity to be added. + defines percentage of additional memory capacity to be added. type: number type: object type: array nodeConstraints: - description: defines the node constraints that will - be applied when autoscaling with Unschedulable Pods - policy. + description: |- + (Block List, Max: 1) defines the node constraints that will be applied when autoscaling with Unschedulable Pods policy. (see below for nested schema) + defines the node constraints that will be applied when autoscaling with Unschedulable Pods policy. items: properties: enabled: - description: enable/disable node constraints - policy. + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable node constraints policy. type: boolean maxCpuCores: - description: defines max CPU cores for the node - to pick. + description: |- + (Number) defines max CPU cores for the node to pick. + defines max CPU cores for the node to pick. type: number maxRamMib: - description: defines max RAM in MiB for the - node to pick. + description: |- + (Number) defines max RAM in MiB for the node to pick. + defines max RAM in MiB for the node to pick. type: number minCpuCores: - description: defines min CPU cores for the node - to pick. + description: |- + (Number) defines min CPU cores for the node to pick. + defines min CPU cores for the node to pick. type: number minRamMib: - description: defines min RAM in MiB for the - node to pick. + description: |- + (Number) defines min RAM in MiB for the node to pick. + defines min RAM in MiB for the node to pick. type: number type: object type: array + podPinner: + description: |- + (Block List, Max: 1) defines the Cast AI Pod Pinner components settings. (see below for nested schema) + defines the Cast AI Pod Pinner components settings. + items: + properties: + enabled: + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable the Pod Pinner component's automatic management in your cluster. Default: enabled. + type: boolean + type: object + type: array type: object type: array type: object type: array clusterId: - description: CAST AI cluster id + description: |- + (String) CAST AI cluster id + CAST AI cluster id type: string clusterIdRef: description: Reference to a EksClusterId in castai to populate @@ -954,280 +1047,329 @@ spec: atProvider: properties: autoscalerPolicies: - description: computed value to store full policies configuration + description: |- + (String) computed value to store full policies configuration + computed value to store full policies configuration type: string autoscalerPoliciesJson: - description: autoscaler policies JSON string to override current - autoscaler settings + description: |- + (String, Deprecated) autoscaler policies JSON string to override current autoscaler settings + autoscaler policies JSON string to override current autoscaler settings type: string autoscalerSettings: - description: autoscaler policy definitions to override current - autoscaler settings + description: |- + (Block List, Max: 1) autoscaler policy definitions to override current autoscaler settings (see below for nested schema) + autoscaler policy definitions to override current autoscaler settings items: properties: clusterLimits: - description: defines minimum and maximum amount of CPU the - cluster can have. + description: |- + (Block List, Max: 1) defines minimum and maximum amount of CPU the cluster can have. (see below for nested schema) + defines minimum and maximum amount of CPU the cluster can have. items: properties: cpu: - description: defines the minimum and maximum amount - of CPUs for cluster's worker nodes. + description: |- + (Block List, Max: 1) defines the minimum and maximum amount of CPUs for cluster's worker nodes. (see below for nested schema) + defines the minimum and maximum amount of CPUs for cluster's worker nodes. items: properties: maxCores: - description: defines the maximum allowed amount - of vCPUs in the whole cluster. + description: |- + (Number) defines the maximum allowed amount of vCPUs in the whole cluster. + defines the maximum allowed amount of vCPUs in the whole cluster. type: number minCores: - description: defines the minimum allowed amount - of CPUs in the whole cluster. + description: |- + (Number) defines the minimum allowed amount of CPUs in the whole cluster. + defines the minimum allowed amount of CPUs in the whole cluster. type: number type: object type: array enabled: - description: enable/disable cluster size limits policy. + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable cluster size limits policy. type: boolean type: object type: array enabled: - description: enable/disable autoscaler policies + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable autoscaler policies type: boolean isScopedMode: - description: run autoscaler in scoped mode. Only marked - pods and nodes will be considered. + description: |- + (Boolean) run autoscaler in scoped mode. Only marked pods and nodes will be considered. + run autoscaler in scoped mode. Only marked pods and nodes will be considered. type: boolean nodeDownscaler: - description: node downscaler defines policies for removing - nodes based on the configured conditions. + description: |- + (Block List, Max: 1) node downscaler defines policies for removing nodes based on the configured conditions. (see below for nested schema) + node downscaler defines policies for removing nodes based on the configured conditions. items: properties: emptyNodes: - description: defines whether Node Downscaler should - opt in for removing empty worker nodes when possible. + description: |- + (Block List, Max: 1) defines whether Node Downscaler should opt in for removing empty worker nodes when possible. (see below for nested schema) + defines whether Node Downscaler should opt in for removing empty worker nodes when possible. items: properties: delaySeconds: - description: period (in seconds) to wait before - removing the node. Might be useful to control - the aggressiveness of the downscaler. + description: |- + (Number) period (in seconds) to wait before removing the node. Might be useful to control the aggressiveness of the downscaler. + period (in seconds) to wait before removing the node. Might be useful to control the aggressiveness of the downscaler. type: number enabled: - description: enable/disable the empty worker - nodes policy. + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable the empty worker nodes policy. type: boolean type: object type: array enabled: - description: enable/disable node downscaler policy. + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable node downscaler policy. type: boolean evictor: - description: defines the CAST AI Evictor component - settings. Evictor watches the pods running in your - cluster and looks for ways to compact them into - fewer nodes, making nodes empty, which will be removed - by the empty worker nodes policy. + description: |- + (Block List, Max: 1) defines the CAST AI Evictor component settings. Evictor watches the pods running in your cluster and looks for ways to compact them into fewer nodes, making nodes empty, which will be removed by the empty worker nodes policy. (see below for nested schema) + defines the CAST AI Evictor component settings. Evictor watches the pods running in your cluster and looks for ways to compact them into fewer nodes, making nodes empty, which will be removed by the empty worker nodes policy. items: properties: aggressiveMode: - description: enable/disable aggressive mode. - By default, Evictor does not target nodes - that are running unreplicated pods. This mode - will make the Evictor start considering application - with just a single replica. + description: |- + (Boolean) enable/disable aggressive mode. By default, Evictor does not target nodes that are running unreplicated pods. This mode will make the Evictor start considering application with just a single replica. + enable/disable aggressive mode. By default, Evictor does not target nodes that are running unreplicated pods. This mode will make the Evictor start considering application with just a single replica. type: boolean cycleInterval: - description: configure the interval duration - between Evictor operations. This property - can be used to lower or raise the frequency - of the Evictor's find-and-drain operations. + description: |- + and-drain operations. + configure the interval duration between Evictor operations. This property can be used to lower or raise the frequency of the Evictor's find-and-drain operations. type: string dryRun: - description: enable/disable dry-run. This property - allows you to prevent the Evictor from carrying - any operations out and preview the actions - it would take. + description: |- + run. This property allows you to prevent the Evictor from carrying any operations out and preview the actions it would take. + enable/disable dry-run. This property allows you to prevent the Evictor from carrying any operations out and preview the actions it would take. type: boolean enabled: - description: enable/disable the Evictor policy. - This will either install or uninstall the - Evictor component in your cluster. + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable the Evictor policy. This will either install or uninstall the Evictor component in your cluster. type: boolean ignorePodDisruptionBudgets: - description: if enabled then Evictor will attempt - to evict pods that have pod disruption budgets - configured. + description: |- + (Boolean) if enabled then Evictor will attempt to evict pods that have pod disruption budgets configured. + if enabled then Evictor will attempt to evict pods that have pod disruption budgets configured. type: boolean nodeGracePeriodMinutes: - description: configure the node grace period - which controls the duration which must pass - after a node has been created before Evictor - starts considering that node. + description: |- + (Number) configure the node grace period which controls the duration which must pass after a node has been created before Evictor starts considering that node. + configure the node grace period which controls the duration which must pass after a node has been created before Evictor starts considering that node. type: number podEvictionFailureBackOffInterval: - description: configure the pod eviction failure - back off interval. If pod eviction fails then - Evictor will attempt to evict it again after - the amount of time specified here. + description: |- + (String) configure the pod eviction failure back off interval. If pod eviction fails then Evictor will attempt to evict it again after the amount of time specified here. + configure the pod eviction failure back off interval. If pod eviction fails then Evictor will attempt to evict it again after the amount of time specified here. type: string scopedMode: - description: enable/disable scoped mode. By - default, Evictor targets all nodes in the - cluster. This mode will constrain it to just - the nodes which were created by CAST AI. + description: |- + (Boolean) enable/disable scoped mode. By default, Evictor targets all nodes in the cluster. This mode will constrain it to just the nodes which were created by CAST AI. + enable/disable scoped mode. By default, Evictor targets all nodes in the cluster. This mode will constrain it to just the nodes which were created by CAST AI. type: boolean type: object type: array type: object type: array nodeTemplatesPartialMatchingEnabled: - description: marks whether partial matching should be used - when deciding which custom node template to select. + description: |- + (Boolean) marks whether partial matching should be used when deciding which custom node template to select. + marks whether partial matching should be used when deciding which custom node template to select. type: boolean spotInstances: - description: policy defining whether autoscaler can use - spot instances for provisioning additional workloads. + description: |- + (Block List, Max: 1) policy defining whether autoscaler can use spot instances for provisioning additional workloads. (see below for nested schema) + policy defining whether autoscaler can use spot instances for provisioning additional workloads. items: properties: enabled: - description: enable/disable spot instances policy. + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable spot instances policy. type: boolean maxReclaimRate: - description: max allowed reclaim rate when choosing - spot instance type. E.g. if the value is 10%, instance - types having 10% or higher reclaim rate will not - be considered. Set to zero to use all instance types - regardless of reclaim rate. + description: |- + (Number) max allowed reclaim rate when choosing spot instance type. E.g. if the value is 10%, instance types having 10% or higher reclaim rate will not be considered. Set to zero to use all instance types regardless of reclaim rate. + max allowed reclaim rate when choosing spot instance type. E.g. if the value is 10%, instance types having 10% or higher reclaim rate will not be considered. Set to zero to use all instance types regardless of reclaim rate. type: number spotBackups: - description: policy defining whether autoscaler can - use spot backups instead of spot instances when - spot instances are not available. + description: |- + (Block List, Max: 1) policy defining whether autoscaler can use spot backups instead of spot instances when spot instances are not available. (see below for nested schema) + policy defining whether autoscaler can use spot backups instead of spot instances when spot instances are not available. items: properties: enabled: - description: enable/disable spot backups policy. + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable spot backups policy. type: boolean spotBackupRestoreRateSeconds: - description: defines interval on how often spot - backups restore to real spot should occur. + description: |- + (Number) defines interval on how often spot backups restore to real spot should occur. + defines interval on how often spot backups restore to real spot should occur. type: number type: object type: array spotDiversityEnabled: - description: enable/disable spot diversity policy. - When enabled, autoscaler will try to balance between - diverse and cost optimal instance types. + description: |- + (Boolean) enable/disable spot diversity policy. When enabled, autoscaler will try to balance between diverse and cost optimal instance types. + enable/disable spot diversity policy. When enabled, autoscaler will try to balance between diverse and cost optimal instance types. type: boolean spotDiversityPriceIncreaseLimit: - description: allowed node configuration price increase - when diversifying instance types. E.g. if the value - is 10%, then the overall price of diversified instance - types can be 10% higher than the price of the optimal - configuration. + description: |- + (Number) allowed node configuration price increase when diversifying instance types. E.g. if the value is 10%, then the overall price of diversified instance types can be 10% higher than the price of the optimal configuration. + allowed node configuration price increase when diversifying instance types. E.g. if the value is 10%, then the overall price of diversified instance types can be 10% higher than the price of the optimal configuration. type: number spotInterruptionPredictions: - description: configure the handling of SPOT interruption - predictions. + description: |- + (Block List, Max: 1) configure the handling of SPOT interruption predictions. (see below for nested schema) + configure the handling of SPOT interruption predictions. items: properties: enabled: - description: enable/disable spot interruption - predictions. + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable spot interruption predictions. type: boolean spotInterruptionPredictionsType: - description: define the type of the spot interruption - prediction to handle. Allowed values are AWSRebalanceRecommendations, - CASTAIInterruptionPredictions. + description: |- + (String) define the type of the spot interruption prediction to handle. Allowed values are AWSRebalanceRecommendations, CASTAIInterruptionPredictions. + define the type of the spot interruption prediction to handle. Allowed values are AWSRebalanceRecommendations, CASTAIInterruptionPredictions. type: string type: object type: array type: object type: array unschedulablePods: - description: policy defining autoscaler's behavior when - unschedulable pods were detected. + description: |- + (Block List, Max: 1) policy defining autoscaler's behavior when unschedulable pods were detected. (see below for nested schema) + policy defining autoscaler's behavior when unschedulable pods were detected. items: properties: customInstancesEnabled: - description: enable/disable custom instances policy. + description: |- + (Boolean) enable/disable custom instances policy. + enable/disable custom instances policy. type: boolean enabled: - description: enable/disable unschedulable pods detection - policy. + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable unschedulable pods detection policy. type: boolean headroom: - description: additional headroom based on cluster's - total available capacity for on-demand nodes. + description: |- + demand nodes. (see below for nested schema) + additional headroom based on cluster's total available capacity for on-demand nodes. items: properties: cpuPercentage: - description: defines percentage of additional - CPU capacity to be added. + description: |- + (Number) defines percentage of additional CPU capacity to be added. + defines percentage of additional CPU capacity to be added. type: number enabled: - description: enable/disable headroom policy. + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable headroom policy. type: boolean memoryPercentage: - description: defines percentage of additional - memory capacity to be added. + description: |- + (Number) defines percentage of additional memory capacity to be added. + defines percentage of additional memory capacity to be added. type: number type: object type: array headroomSpot: - description: additional headroom based on cluster's - total available capacity for spot nodes. + description: |- + (Block List, Max: 1) additional headroom based on cluster's total available capacity for spot nodes. (see below for nested schema) + additional headroom based on cluster's total available capacity for spot nodes. items: properties: cpuPercentage: - description: defines percentage of additional - CPU capacity to be added. + description: |- + (Number) defines percentage of additional CPU capacity to be added. + defines percentage of additional CPU capacity to be added. type: number enabled: - description: enable/disable headroom_spot policy. + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable headroom_spot policy. type: boolean memoryPercentage: - description: defines percentage of additional - memory capacity to be added. + description: |- + (Number) defines percentage of additional memory capacity to be added. + defines percentage of additional memory capacity to be added. type: number type: object type: array nodeConstraints: - description: defines the node constraints that will - be applied when autoscaling with Unschedulable Pods - policy. + description: |- + (Block List, Max: 1) defines the node constraints that will be applied when autoscaling with Unschedulable Pods policy. (see below for nested schema) + defines the node constraints that will be applied when autoscaling with Unschedulable Pods policy. items: properties: enabled: - description: enable/disable node constraints - policy. + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable node constraints policy. type: boolean maxCpuCores: - description: defines max CPU cores for the node - to pick. + description: |- + (Number) defines max CPU cores for the node to pick. + defines max CPU cores for the node to pick. type: number maxRamMib: - description: defines max RAM in MiB for the - node to pick. + description: |- + (Number) defines max RAM in MiB for the node to pick. + defines max RAM in MiB for the node to pick. type: number minCpuCores: - description: defines min CPU cores for the node - to pick. + description: |- + (Number) defines min CPU cores for the node to pick. + defines min CPU cores for the node to pick. type: number minRamMib: - description: defines min RAM in MiB for the - node to pick. + description: |- + (Number) defines min RAM in MiB for the node to pick. + defines min RAM in MiB for the node to pick. type: number type: object type: array + podPinner: + description: |- + (Block List, Max: 1) defines the Cast AI Pod Pinner components settings. (see below for nested schema) + defines the Cast AI Pod Pinner components settings. + items: + properties: + enabled: + description: |- + (Boolean) enable/disable autoscaler policies + enable/disable the Pod Pinner component's automatic management in your cluster. Default: enabled. + type: boolean + type: object + type: array type: object type: array type: object type: array clusterId: - description: CAST AI cluster id + description: |- + (String) CAST AI cluster id + CAST AI cluster id type: string id: + description: (String) The ID of this resource. type: string type: object conditions: diff --git a/package/crds/castai.upbound.io_eksclusterids.yaml b/package/crds/castai.upbound.io_eksclusterids.yaml index 26294b0..35f17c2 100644 --- a/package/crds/castai.upbound.io_eksclusterids.yaml +++ b/package/crds/castai.upbound.io_eksclusterids.yaml @@ -34,7 +34,8 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: EksClusterId is the Schema for the EksClusterIds API. + description: EksClusterId is the Schema for the EksClusterIds API. Retrieve + CAST AI clusterid properties: apiVersion: description: |- @@ -73,10 +74,13 @@ spec: forProvider: properties: accountId: + description: (String) type: string clusterName: + description: (String) type: string region: + description: (String) type: string type: object initProvider: @@ -93,10 +97,13 @@ spec: autoscaler. properties: accountId: + description: (String) type: string clusterName: + description: (String) type: string region: + description: (String) type: string type: object managementPolicies: @@ -285,12 +292,16 @@ spec: atProvider: properties: accountId: + description: (String) type: string clusterName: + description: (String) type: string id: + description: (String) The ID of this resource. type: string region: + description: (String) type: string type: object conditions: diff --git a/package/crds/castai.upbound.io_eksuserarns.yaml b/package/crds/castai.upbound.io_eksuserarns.yaml index 76de061..2f3cd38 100644 --- a/package/crds/castai.upbound.io_eksuserarns.yaml +++ b/package/crds/castai.upbound.io_eksuserarns.yaml @@ -34,7 +34,8 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: EksUserArn is the Schema for the EksUserArns API. + description: EksUserArn is the Schema for the EksUserArns API. Retrieve EKS + Cluster User ARN properties: apiVersion: description: |- @@ -73,6 +74,7 @@ spec: forProvider: properties: clusterId: + description: (String) type: string clusterIdRef: description: Reference to a EksCluster in castai to populate clusterId. @@ -163,6 +165,7 @@ spec: autoscaler. properties: clusterId: + description: (String) type: string clusterIdRef: description: Reference to a EksCluster in castai to populate clusterId. @@ -412,10 +415,13 @@ spec: atProvider: properties: arn: + description: (String) type: string clusterId: + description: (String) type: string id: + description: (String) The ID of this resource. type: string type: object conditions: diff --git a/package/crds/castai.upbound.io_evictoradvancedconfigs.yaml b/package/crds/castai.upbound.io_evictoradvancedconfigs.yaml index 02dd6d9..b610ac7 100644 --- a/package/crds/castai.upbound.io_evictoradvancedconfigs.yaml +++ b/package/crds/castai.upbound.io_evictoradvancedconfigs.yaml @@ -35,7 +35,7 @@ spec: schema: openAPIV3Schema: description: EvictorAdvancedConfig is the Schema for the EvictorAdvancedConfigs - API. + API. CAST AI eviction config resource to manage evictor properties properties: apiVersion: description: |- @@ -74,7 +74,9 @@ spec: forProvider: properties: clusterId: - description: CAST AI cluster id. + description: |- + (String) CAST AI cluster id. + CAST AI cluster id. type: string clusterIdRef: description: Reference to a EksClusterId in castai to populate @@ -153,26 +155,39 @@ spec: type: object type: object evictorAdvancedConfig: - description: evictor advanced configuration to target specific - node/pod + description: |- + (Block List, Min: 1) evictor advanced configuration to target specific node/pod (see below for nested schema) + evictor advanced configuration to target specific node/pod items: properties: aggressive: + description: |- + (Boolean) Apply Aggressive mode to Evictor + Apply Aggressive mode to Evictor type: boolean disposable: + description: |- + (Boolean) Mark node as disposable + Mark node as disposable type: boolean nodeSelector: - description: node selector + description: |- + (Block List) node selector (see below for nested schema) + node selector items: properties: matchExpressions: + description: (Block List) (see below for nested schema) items: properties: key: + description: (String) type: string operator: + description: (String) type: string values: + description: (List of String) items: type: string type: array @@ -181,24 +196,32 @@ spec: matchLabels: additionalProperties: type: string + description: (Map of String) type: object x-kubernetes-map-type: granular type: object type: array podSelector: - description: pod selector + description: |- + (Block List) pod selector (see below for nested schema) + pod selector items: properties: kind: + description: (String) type: string matchExpressions: + description: (Block List) (see below for nested schema) items: properties: key: + description: (String) type: string operator: + description: (String) type: string values: + description: (List of String) items: type: string type: array @@ -207,13 +230,18 @@ spec: matchLabels: additionalProperties: type: string + description: (Map of String) type: object x-kubernetes-map-type: granular namespace: + description: (String) type: string type: object type: array removalDisabled: + description: |- + (Boolean) Mark pods as removal disabled + Mark pods as removal disabled type: boolean type: object type: array @@ -232,7 +260,9 @@ spec: autoscaler. properties: clusterId: - description: CAST AI cluster id. + description: |- + (String) CAST AI cluster id. + CAST AI cluster id. type: string clusterIdRef: description: Reference to a EksClusterId in castai to populate @@ -311,26 +341,39 @@ spec: type: object type: object evictorAdvancedConfig: - description: evictor advanced configuration to target specific - node/pod + description: |- + (Block List, Min: 1) evictor advanced configuration to target specific node/pod (see below for nested schema) + evictor advanced configuration to target specific node/pod items: properties: aggressive: + description: |- + (Boolean) Apply Aggressive mode to Evictor + Apply Aggressive mode to Evictor type: boolean disposable: + description: |- + (Boolean) Mark node as disposable + Mark node as disposable type: boolean nodeSelector: - description: node selector + description: |- + (Block List) node selector (see below for nested schema) + node selector items: properties: matchExpressions: + description: (Block List) (see below for nested schema) items: properties: key: + description: (String) type: string operator: + description: (String) type: string values: + description: (List of String) items: type: string type: array @@ -339,24 +382,32 @@ spec: matchLabels: additionalProperties: type: string + description: (Map of String) type: object x-kubernetes-map-type: granular type: object type: array podSelector: - description: pod selector + description: |- + (Block List) pod selector (see below for nested schema) + pod selector items: properties: kind: + description: (String) type: string matchExpressions: + description: (Block List) (see below for nested schema) items: properties: key: + description: (String) type: string operator: + description: (String) type: string values: + description: (List of String) items: type: string type: array @@ -365,13 +416,18 @@ spec: matchLabels: additionalProperties: type: string + description: (Map of String) type: object x-kubernetes-map-type: granular namespace: + description: (String) type: string type: object type: array removalDisabled: + description: |- + (Boolean) Mark pods as removal disabled + Mark pods as removal disabled type: boolean type: object type: array @@ -555,29 +611,44 @@ spec: atProvider: properties: clusterId: - description: CAST AI cluster id. + description: |- + (String) CAST AI cluster id. + CAST AI cluster id. type: string evictorAdvancedConfig: - description: evictor advanced configuration to target specific - node/pod + description: |- + (Block List, Min: 1) evictor advanced configuration to target specific node/pod (see below for nested schema) + evictor advanced configuration to target specific node/pod items: properties: aggressive: + description: |- + (Boolean) Apply Aggressive mode to Evictor + Apply Aggressive mode to Evictor type: boolean disposable: + description: |- + (Boolean) Mark node as disposable + Mark node as disposable type: boolean nodeSelector: - description: node selector + description: |- + (Block List) node selector (see below for nested schema) + node selector items: properties: matchExpressions: + description: (Block List) (see below for nested schema) items: properties: key: + description: (String) type: string operator: + description: (String) type: string values: + description: (List of String) items: type: string type: array @@ -586,24 +657,32 @@ spec: matchLabels: additionalProperties: type: string + description: (Map of String) type: object x-kubernetes-map-type: granular type: object type: array podSelector: - description: pod selector + description: |- + (Block List) pod selector (see below for nested schema) + pod selector items: properties: kind: + description: (String) type: string matchExpressions: + description: (Block List) (see below for nested schema) items: properties: key: + description: (String) type: string operator: + description: (String) type: string values: + description: (List of String) items: type: string type: array @@ -612,17 +691,23 @@ spec: matchLabels: additionalProperties: type: string + description: (Map of String) type: object x-kubernetes-map-type: granular namespace: + description: (String) type: string type: object type: array removalDisabled: + description: |- + (Boolean) Mark pods as removal disabled + Mark pods as removal disabled type: boolean type: object type: array id: + description: (String) The ID of this resource. type: string type: object conditions: diff --git a/package/crds/castai.upbound.io_nodeconfigurations.yaml b/package/crds/castai.upbound.io_nodeconfigurations.yaml index 3548228..b57cb9b 100644 --- a/package/crds/castai.upbound.io_nodeconfigurations.yaml +++ b/package/crds/castai.upbound.io_nodeconfigurations.yaml @@ -78,6 +78,37 @@ spec: description: '(Block List, Max: 1) (see below for nested schema)' items: properties: + aksImageFamily: + description: |- + linux) + Image OS Family to use when provisioning node in AKS. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. Possible values: (ubuntu,azure-linux) + type: string + loadbalancers: + description: |- + (Block List) Loadboalancer configuration for CAST provisioned nodes (see below for nested schema) + Loadboalancer configuration for CAST provisioned nodes + items: + properties: + ipBasedBackendPools: + description: |- + (Block List) IP based backend pools configuration for CAST provisioned nodes (see below for nested schema) + IP based backend pools configuration for CAST provisioned nodes + items: + properties: + name: + description: |- + (String) Name of the node configuration. It must be unique within the cluster. + Name of the ip based backend pool + type: string + type: object + type: array + name: + description: |- + (String) Name of the node configuration. It must be unique within the cluster. + Name of loadbalancer + type: string + type: object + type: array maxPodsPerNode: description: |- (Number) Maximum number of pods that can be run on a node, which affects how many IP addresses you will need for each node. Defaults to 30 @@ -202,8 +233,8 @@ spec: type: string eksImageFamily: description: |- - (String) Image OS Family to use when provisioning node. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. - Image OS Family to use when provisioning node. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. + (String) Image OS Family to use when provisioning node in EKS. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. Possible values: (al2,al2023,bottlerocket) + Image OS Family to use when provisioning node in EKS. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. Possible values: (al2,al2023,bottlerocket) type: string imdsHopLimit: description: |- @@ -235,6 +266,11 @@ spec: (String) Formula to calculate the maximum number of pods that can be run on a node. The following list of variables will be bound to a number before evaluating and can be used in the formula: NUM_MAX_NET_INTERFACES, NUM_IP_PER_INTERFACE, NUM_IP_PER_PREFIX, NUM_CPU, NUM_RAM_GB . Formula to calculate the maximum number of pods that can be run on a node. The following list of variables will be bound to a number before evaluating and can be used in the formula: NUM_MAX_NET_INTERFACES, NUM_IP_PER_INTERFACE, NUM_IP_PER_PREFIX, NUM_CPU, NUM_RAM_GB . type: string + nodeGroupArn: + description: |- + (String) Cluster's node group ARN used for CAST provisioned node pools. Required for hibernate/resume functionality + Cluster's node group ARN used for CAST provisioned node pools. Required for hibernate/resume functionality + type: string securityGroups: description: |- (List of String) Cluster's security groups configuration for CAST provisioned nodes @@ -391,6 +427,37 @@ spec: description: '(Block List, Max: 1) (see below for nested schema)' items: properties: + aksImageFamily: + description: |- + linux) + Image OS Family to use when provisioning node in AKS. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. Possible values: (ubuntu,azure-linux) + type: string + loadbalancers: + description: |- + (Block List) Loadboalancer configuration for CAST provisioned nodes (see below for nested schema) + Loadboalancer configuration for CAST provisioned nodes + items: + properties: + ipBasedBackendPools: + description: |- + (Block List) IP based backend pools configuration for CAST provisioned nodes (see below for nested schema) + IP based backend pools configuration for CAST provisioned nodes + items: + properties: + name: + description: |- + (String) Name of the node configuration. It must be unique within the cluster. + Name of the ip based backend pool + type: string + type: object + type: array + name: + description: |- + (String) Name of the node configuration. It must be unique within the cluster. + Name of loadbalancer + type: string + type: object + type: array maxPodsPerNode: description: |- (Number) Maximum number of pods that can be run on a node, which affects how many IP addresses you will need for each node. Defaults to 30 @@ -515,8 +582,8 @@ spec: type: string eksImageFamily: description: |- - (String) Image OS Family to use when provisioning node. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. - Image OS Family to use when provisioning node. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. + (String) Image OS Family to use when provisioning node in EKS. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. Possible values: (al2,al2023,bottlerocket) + Image OS Family to use when provisioning node in EKS. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. Possible values: (al2,al2023,bottlerocket) type: string imdsHopLimit: description: |- @@ -548,6 +615,11 @@ spec: (String) Formula to calculate the maximum number of pods that can be run on a node. The following list of variables will be bound to a number before evaluating and can be used in the formula: NUM_MAX_NET_INTERFACES, NUM_IP_PER_INTERFACE, NUM_IP_PER_PREFIX, NUM_CPU, NUM_RAM_GB . Formula to calculate the maximum number of pods that can be run on a node. The following list of variables will be bound to a number before evaluating and can be used in the formula: NUM_MAX_NET_INTERFACES, NUM_IP_PER_INTERFACE, NUM_IP_PER_PREFIX, NUM_CPU, NUM_RAM_GB . type: string + nodeGroupArn: + description: |- + (String) Cluster's node group ARN used for CAST provisioned node pools. Required for hibernate/resume functionality + Cluster's node group ARN used for CAST provisioned node pools. Required for hibernate/resume functionality + type: string securityGroups: description: |- (List of String) Cluster's security groups configuration for CAST provisioned nodes @@ -872,6 +944,37 @@ spec: description: '(Block List, Max: 1) (see below for nested schema)' items: properties: + aksImageFamily: + description: |- + linux) + Image OS Family to use when provisioning node in AKS. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. Possible values: (ubuntu,azure-linux) + type: string + loadbalancers: + description: |- + (Block List) Loadboalancer configuration for CAST provisioned nodes (see below for nested schema) + Loadboalancer configuration for CAST provisioned nodes + items: + properties: + ipBasedBackendPools: + description: |- + (Block List) IP based backend pools configuration for CAST provisioned nodes (see below for nested schema) + IP based backend pools configuration for CAST provisioned nodes + items: + properties: + name: + description: |- + (String) Name of the node configuration. It must be unique within the cluster. + Name of the ip based backend pool + type: string + type: object + type: array + name: + description: |- + (String) Name of the node configuration. It must be unique within the cluster. + Name of loadbalancer + type: string + type: object + type: array maxPodsPerNode: description: |- (Number) Maximum number of pods that can be run on a node, which affects how many IP addresses you will need for each node. Defaults to 30 @@ -920,8 +1023,8 @@ spec: type: string eksImageFamily: description: |- - (String) Image OS Family to use when provisioning node. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. - Image OS Family to use when provisioning node. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. + (String) Image OS Family to use when provisioning node in EKS. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. Possible values: (al2,al2023,bottlerocket) + Image OS Family to use when provisioning node in EKS. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. Possible values: (al2,al2023,bottlerocket) type: string imdsHopLimit: description: |- @@ -953,6 +1056,11 @@ spec: (String) Formula to calculate the maximum number of pods that can be run on a node. The following list of variables will be bound to a number before evaluating and can be used in the formula: NUM_MAX_NET_INTERFACES, NUM_IP_PER_INTERFACE, NUM_IP_PER_PREFIX, NUM_CPU, NUM_RAM_GB . Formula to calculate the maximum number of pods that can be run on a node. The following list of variables will be bound to a number before evaluating and can be used in the formula: NUM_MAX_NET_INTERFACES, NUM_IP_PER_INTERFACE, NUM_IP_PER_PREFIX, NUM_CPU, NUM_RAM_GB . type: string + nodeGroupArn: + description: |- + (String) Cluster's node group ARN used for CAST provisioned node pools. Required for hibernate/resume functionality + Cluster's node group ARN used for CAST provisioned node pools. Required for hibernate/resume functionality + type: string securityGroups: description: |- (List of String) Cluster's security groups configuration for CAST provisioned nodes diff --git a/package/crds/castai.upbound.io_nodetemplates.yaml b/package/crds/castai.upbound.io_nodetemplates.yaml index 57104f3..fd90b10 100644 --- a/package/crds/castai.upbound.io_nodetemplates.yaml +++ b/package/crds/castai.upbound.io_nodetemplates.yaml @@ -34,7 +34,8 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: NodeTemplate is the Schema for the NodeTemplates API. + description: NodeTemplate is the Schema for the NodeTemplates API. CAST AI + node template resource to manage node templates properties: apiVersion: description: |- @@ -73,7 +74,9 @@ spec: forProvider: properties: clusterId: - description: CAST AI cluster id. + description: |- + (String) CAST AI cluster id. + CAST AI cluster id. type: string clusterIdRef: description: Reference to a EksClusterId in castai to populate @@ -152,8 +155,9 @@ spec: type: object type: object configurationId: - description: CAST AI node configuration id to be used for node - template. + description: |- + (String) CAST AI node configuration id to be used for node template. + CAST AI node configuration id to be used for node template. type: string configurationIdRef: description: Reference to a NodeConfiguration in castai to populate @@ -232,61 +236,88 @@ spec: type: object type: object constraints: + description: '(Block List, Max: 1) (see below for nested schema)' items: properties: + architecturePriority: + description: |- + (List of String) Priority ordering of architectures, specifying no priority will pick cheapest. Allowed values: amd64, arm64. + Priority ordering of architectures, specifying no priority will pick cheapest. Allowed values: amd64, arm64. + items: + type: string + type: array architectures: - description: 'List of acceptable instance CPU architectures, - the default is amd64. Allowed values: amd64, arm64.' + description: |- + (List of String) List of acceptable instance CPU architectures, the default is amd64. Allowed values: amd64, arm64. + List of acceptable instance CPU architectures, the default is amd64. Allowed values: amd64, arm64. items: type: string type: array azs: - description: The list of AZ names to consider for the node - template, if empty or not set all AZs are considered. + description: |- + (List of String) The list of AZ names to consider for the node template, if empty or not set all AZs are considered. + The list of AZ names to consider for the node template, if empty or not set all AZs are considered. items: type: string type: array burstableInstances: - description: 'Will include burstable instances when enabled - otherwise they will be excluded. Supported values: `enabled`, - `disabled` or “.' + description: |- + (String) Will include burstable instances when enabled otherwise they will be excluded. Supported values: enabled, disabled or “. + Will include burstable instances when enabled otherwise they will be excluded. Supported values: `enabled`, `disabled` or “. type: string computeOptimized: - description: Compute optimized instance constraint (deprecated). + description: |- + (Boolean) Compute optimized instance constraint (deprecated). + Compute optimized instance constraint (deprecated). type: boolean computeOptimizedState: - description: 'Will only include compute optimized nodes - when enabled and exclude compute optimized nodes when - disabled. Empty value won''t have effect on instances - filter. Supported values: `enabled`, `disabled` or empty - string.' + description: |- + (String) Will only include compute optimized nodes when enabled and exclude compute optimized nodes when disabled. Empty value won't have effect on instances filter. Supported values: enabled, disabled or empty string. + Will only include compute optimized nodes when enabled and exclude compute optimized nodes when disabled. Empty value won't have effect on instances filter. Supported values: `enabled`, `disabled` or empty string. type: string + cpuManufacturers: + description: |- + (List of String) List of acceptable CPU manufacturers. Allowed values: AMD, AMPERE, APPLE, AWS, INTEL. + List of acceptable CPU manufacturers. Allowed values: AMD, AMPERE, APPLE, AWS, INTEL. + items: + type: string + type: array customPriority: + description: (Block List) (see below for nested schema) items: properties: instanceFamilies: - description: Instance families to prioritize in this - tier. + description: |- + (Block List, Max: 1) (see below for nested schema) + Instance families to prioritize in this tier. items: type: string type: array onDemand: - description: If true, this tier will apply to on-demand - instances. + description: |- + demand instances in the considered pool. + If true, this tier will apply to on-demand instances. type: boolean spot: - description: If true, this tier will apply to spot - instances. + description: |- + (Boolean) Should include spot instances in the considered pool. + If true, this tier will apply to spot instances. type: boolean type: object type: array customerSpecific: - description: 'Will include customer specific (preview) instances - when enabled otherwise they will be excluded. Supported - values: `enabled`, `disabled` or “.' + description: |- + (String) Will include customer specific (preview) instances when enabled otherwise they will be excluded. Supported values: enabled, disabled or “. + Will include customer specific (preview) instances when enabled otherwise they will be excluded. Supported values: `enabled`, `disabled` or “. type: string dedicatedNodeAffinity: description: |- + creates preference for instances to be created on sole tenancy or dedicated nodes. This + feature is only available for GCP clusters and sole tenancy nodes with local + SSDs or GPUs are not supported. If the sole tenancy or dedicated nodes don't have capacity for selected instance + type, the Autoscaler will fall back to multi-tenant instance types available for this Node Template. + Other instance constraints are applied when the Autoscaler picks available instance types that can be created on + the sole tenancy or dedicated node (example: setting min CPU to 16). (see below for nested schema) Dedicated node affinity - creates preference for instances to be created on sole tenancy or dedicated nodes. This feature is only available for GCP clusters and sole tenancy nodes with local SSDs or GPUs are not supported. If the sole tenancy or dedicated nodes don't have capacity for selected instance @@ -296,207 +327,255 @@ spec: items: properties: affinity: + description: (Block List) (see below for nested schema) items: properties: key: - description: Key of the node affinity selector. + description: |- + (String) Key of the node affinity selector. + Key of the node affinity selector. type: string operator: - description: 'Operator of the node affinity - selector. Allowed values: In, NotIn, Exists, - DoesNotExist, Gt, Lt.' + description: |- + (String) Operator of the node affinity selector. Allowed values: In, NotIn, Exists, DoesNotExist, Gt, Lt. + Operator of the node affinity selector. Allowed values: In, NotIn, Exists, DoesNotExist, Gt, Lt. type: string values: - description: Values of the node affinity selector. + description: |- + (List of String) Values of the node affinity selector. + Values of the node affinity selector. items: type: string type: array type: object type: array azName: - description: Availability zone name. + description: |- + (String) Availability zone name. + Availability zone name. type: string instanceTypes: - description: Instance/node types in this node group. + description: |- + (List of String) Instance/node types in this node group. + Instance/node types in this node group. items: type: string type: array name: - description: Name of node group. + description: |- + (String) Name of the node template. + Name of node group. type: string type: object type: array enableSpotDiversity: - description: Enable/disable spot diversity policy. When - enabled, autoscaler will try to balance between diverse - and cost optimal instance types. + description: |- + (Boolean) Enable/disable spot diversity policy. When enabled, autoscaler will try to balance between diverse and cost optimal instance types. + Enable/disable spot diversity policy. When enabled, autoscaler will try to balance between diverse and cost optimal instance types. type: boolean fallbackRestoreRateSeconds: - description: 'Fallback restore rate in seconds: defines - how much time should pass before spot fallback should - be attempted to be restored to real spot.' + description: |- + (Number) Fallback restore rate in seconds: defines how much time should pass before spot fallback should be attempted to be restored to real spot. + Fallback restore rate in seconds: defines how much time should pass before spot fallback should be attempted to be restored to real spot. type: number gpu: + description: '(Block List, Max: 1) (see below for nested + schema)' items: properties: excludeNames: - description: Names of the GPUs to exclude. + description: |- + (List of String) Names of the GPUs to exclude. + Names of the GPUs to exclude. items: type: string type: array includeNames: - description: Instance families to include when filtering - (excludes all other families). + description: |- + (List of String) Instance families to include when filtering (excludes all other families). + Instance families to include when filtering (excludes all other families). items: type: string type: array manufacturers: - description: Manufacturers of the gpus to select - + description: |- NVIDIA, AMD. + Manufacturers of the gpus to select - NVIDIA, AMD. items: type: string type: array maxCount: - description: Max GPU count for the instance type to - have. + description: |- + (Number) Max GPU count for the instance type to have. + Max GPU count for the instance type to have. type: number minCount: - description: Min GPU count for the instance type to - have. + description: |- + (Number) Min GPU count for the instance type to have. + Min GPU count for the instance type to have. type: number type: object type: array instanceFamilies: + description: '(Block List, Max: 1) (see below for nested + schema)' items: properties: exclude: - description: Instance families to include when filtering - (excludes all other families). + description: |- + (List of String) Instance families to include when filtering (excludes all other families). + Instance families to include when filtering (excludes all other families). items: type: string type: array include: - description: Instance families to exclude when filtering - (includes all other families). + description: |- + (List of String) Instance families to exclude when filtering (includes all other families). + Instance families to exclude when filtering (includes all other families). items: type: string type: array type: object type: array isGpuOnly: - description: GPU instance constraint - will only pick nodes - with GPU if true + description: |- + will only pick nodes with GPU if true + GPU instance constraint - will only pick nodes with GPU if true type: boolean maxCpu: - description: Max CPU cores per node. + description: |- + (Number) Max CPU cores per node. + Max CPU cores per node. type: number maxMemory: - description: Max Memory (Mib) per node. + description: |- + (Number) Max Memory (Mib) per node. + Max Memory (Mib) per node. type: number minCpu: - description: Min CPU cores per node. + description: |- + (Number) Min CPU cores per node. + Min CPU cores per node. type: number minMemory: - description: Min Memory (Mib) per node. + description: |- + (Number) Min Memory (Mib) per node. + Min Memory (Mib) per node. type: number onDemand: - description: Should include on-demand instances in the considered - pool. + description: |- + demand instances in the considered pool. + Should include on-demand instances in the considered pool. type: boolean os: - description: 'List of acceptable instance Operating Systems, - the default is linux. Allowed values: linux, windows.' + description: |- + (List of String) List of acceptable instance Operating Systems, the default is linux. Allowed values: linux, windows. + List of acceptable instance Operating Systems, the default is linux. Allowed values: linux, windows. items: type: string type: array spot: - description: Should include spot instances in the considered - pool. + description: |- + (Boolean) Should include spot instances in the considered pool. + Should include spot instances in the considered pool. type: boolean spotDiversityPriceIncreaseLimitPercent: - description: Allowed node configuration price increase when - diversifying instance types. E.g. if the value is 10%, - then the overall price of diversified instance types can - be 10% higher than the price of the optimal configuration. + description: |- + (Number) Allowed node configuration price increase when diversifying instance types. E.g. if the value is 10%, then the overall price of diversified instance types can be 10% higher than the price of the optimal configuration. + Allowed node configuration price increase when diversifying instance types. E.g. if the value is 10%, then the overall price of diversified instance types can be 10% higher than the price of the optimal configuration. type: number spotInterruptionPredictionsEnabled: - description: Enable/disable spot interruption predictions. + description: |- + (Boolean) Enable/disable spot interruption predictions. + Enable/disable spot interruption predictions. type: boolean spotInterruptionPredictionsType: - description: Spot interruption predictions type. Can be - either "aws-rebalance-recommendations" or "interruption-predictions". + description: |- + rebalance-recommendations" or "interruption-predictions". + Spot interruption predictions type. Can be either "aws-rebalance-recommendations" or "interruption-predictions". type: string storageOptimized: - description: Storage optimized instance constraint (deprecated). + description: |- + (Boolean) Storage optimized instance constraint (deprecated). + Storage optimized instance constraint (deprecated). type: boolean storageOptimizedState: - description: 'Storage optimized instance constraint - will - only pick storage optimized nodes if enabled and won''t - pick if disabled. Empty value will have no effect. Supported - values: `enabled`, `disabled` or empty string.' + description: |- + will only pick storage optimized nodes if enabled and won't pick if disabled. Empty value will have no effect. Supported values: enabled, disabled or empty string. + Storage optimized instance constraint - will only pick storage optimized nodes if enabled and won't pick if disabled. Empty value will have no effect. Supported values: `enabled`, `disabled` or empty string. type: string useSpotFallbacks: - description: Spot instance fallback constraint - when true, - on-demand instances will be created, when spots are unavailable. + description: |- + when true, on-demand instances will be created, when spots are unavailable. + Spot instance fallback constraint - when true, on-demand instances will be created, when spots are unavailable. type: boolean type: object type: array customInstancesEnabled: - description: Marks whether custom instances should be used when - deciding which parts of inventory are available. Custom instances - are only supported in GCP. + description: |- + (Boolean) Marks whether custom instances should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP. + Marks whether custom instances should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP. type: boolean customInstancesWithExtendedMemoryEnabled: - description: Marks whether custom instances with extended memory - should be used when deciding which parts of inventory are available. - Custom instances are only supported in GCP. + description: |- + (Boolean) Marks whether custom instances with extended memory should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP. + Marks whether custom instances with extended memory should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP. type: boolean customLabels: additionalProperties: type: string - description: Custom labels to be added to nodes created from this - template. + description: |- + (Map of String) Custom labels to be added to nodes created from this template. + Custom labels to be added to nodes created from this template. type: object x-kubernetes-map-type: granular customTaints: - description: Custom taints to be added to the nodes created from - this template. `shouldTaint` has to be `true` in order to create/update - the node template with custom taints. If `shouldTaint` is `true`, - but no custom taints are provided, the nodes will be tainted - with the default node template taint. + description: |- + (Block List) Custom taints to be added to the nodes created from this template. shouldTaint has to be true in order to create/update the node template with custom taints. If shouldTaint is true, but no custom taints are provided, the nodes will be tainted with the default node template taint. (see below for nested schema) + Custom taints to be added to the nodes created from this template. `shouldTaint` has to be `true` in order to create/update the node template with custom taints. If `shouldTaint` is `true`, but no custom taints are provided, the nodes will be tainted with the default node template taint. items: properties: effect: - description: 'Effect of a taint to be added to nodes created - from this template, the default is NoSchedule. Allowed - values: NoSchedule, NoExecute.' + description: |- + (String) Effect of a taint to be added to nodes created from this template, the default is NoSchedule. Allowed values: NoSchedule, NoExecute. + Effect of a taint to be added to nodes created from this template, the default is NoSchedule. Allowed values: NoSchedule, NoExecute. type: string key: - description: Key of a taint to be added to nodes created - from this template. + description: |- + (String) Key of the node affinity selector. + Key of a taint to be added to nodes created from this template. type: string value: - description: Value of a taint to be added to nodes created - from this template. + description: |- + (String) Value of a taint to be added to nodes created from this template. + Value of a taint to be added to nodes created from this template. type: string type: object type: array isDefault: - description: Flag whether the node template is default. + description: |- + (Boolean) Flag whether the node template is default. + Flag whether the node template is default. type: boolean isEnabled: - description: Flag whether the node template is enabled and considered - for autoscaling. + description: |- + (Boolean) Flag whether the node template is enabled and considered for autoscaling. + Flag whether the node template is enabled and considered for autoscaling. type: boolean name: - description: Name of the node template. + description: |- + (String) Name of the node template. + Name of the node template. type: string rebalancingConfigMinNodes: - description: Minimum nodes that will be kept when rebalancing - nodes using this node template. + description: |- + (Number) Minimum nodes that will be kept when rebalancing nodes using this node template. + Minimum nodes that will be kept when rebalancing nodes using this node template. type: number shouldTaint: - description: Marks whether the templated nodes will have a taint. + description: |- + (Boolean) Marks whether the templated nodes will have a taint. + Marks whether the templated nodes will have a taint. type: boolean type: object initProvider: @@ -513,7 +592,9 @@ spec: autoscaler. properties: clusterId: - description: CAST AI cluster id. + description: |- + (String) CAST AI cluster id. + CAST AI cluster id. type: string clusterIdRef: description: Reference to a EksClusterId in castai to populate @@ -592,8 +673,9 @@ spec: type: object type: object configurationId: - description: CAST AI node configuration id to be used for node - template. + description: |- + (String) CAST AI node configuration id to be used for node template. + CAST AI node configuration id to be used for node template. type: string configurationIdRef: description: Reference to a NodeConfiguration in castai to populate @@ -672,61 +754,88 @@ spec: type: object type: object constraints: + description: '(Block List, Max: 1) (see below for nested schema)' items: properties: + architecturePriority: + description: |- + (List of String) Priority ordering of architectures, specifying no priority will pick cheapest. Allowed values: amd64, arm64. + Priority ordering of architectures, specifying no priority will pick cheapest. Allowed values: amd64, arm64. + items: + type: string + type: array architectures: - description: 'List of acceptable instance CPU architectures, - the default is amd64. Allowed values: amd64, arm64.' + description: |- + (List of String) List of acceptable instance CPU architectures, the default is amd64. Allowed values: amd64, arm64. + List of acceptable instance CPU architectures, the default is amd64. Allowed values: amd64, arm64. items: type: string type: array azs: - description: The list of AZ names to consider for the node - template, if empty or not set all AZs are considered. + description: |- + (List of String) The list of AZ names to consider for the node template, if empty or not set all AZs are considered. + The list of AZ names to consider for the node template, if empty or not set all AZs are considered. items: type: string type: array burstableInstances: - description: 'Will include burstable instances when enabled - otherwise they will be excluded. Supported values: `enabled`, - `disabled` or “.' + description: |- + (String) Will include burstable instances when enabled otherwise they will be excluded. Supported values: enabled, disabled or “. + Will include burstable instances when enabled otherwise they will be excluded. Supported values: `enabled`, `disabled` or “. type: string computeOptimized: - description: Compute optimized instance constraint (deprecated). + description: |- + (Boolean) Compute optimized instance constraint (deprecated). + Compute optimized instance constraint (deprecated). type: boolean computeOptimizedState: - description: 'Will only include compute optimized nodes - when enabled and exclude compute optimized nodes when - disabled. Empty value won''t have effect on instances - filter. Supported values: `enabled`, `disabled` or empty - string.' + description: |- + (String) Will only include compute optimized nodes when enabled and exclude compute optimized nodes when disabled. Empty value won't have effect on instances filter. Supported values: enabled, disabled or empty string. + Will only include compute optimized nodes when enabled and exclude compute optimized nodes when disabled. Empty value won't have effect on instances filter. Supported values: `enabled`, `disabled` or empty string. type: string + cpuManufacturers: + description: |- + (List of String) List of acceptable CPU manufacturers. Allowed values: AMD, AMPERE, APPLE, AWS, INTEL. + List of acceptable CPU manufacturers. Allowed values: AMD, AMPERE, APPLE, AWS, INTEL. + items: + type: string + type: array customPriority: + description: (Block List) (see below for nested schema) items: properties: instanceFamilies: - description: Instance families to prioritize in this - tier. + description: |- + (Block List, Max: 1) (see below for nested schema) + Instance families to prioritize in this tier. items: type: string type: array onDemand: - description: If true, this tier will apply to on-demand - instances. + description: |- + demand instances in the considered pool. + If true, this tier will apply to on-demand instances. type: boolean spot: - description: If true, this tier will apply to spot - instances. + description: |- + (Boolean) Should include spot instances in the considered pool. + If true, this tier will apply to spot instances. type: boolean type: object type: array customerSpecific: - description: 'Will include customer specific (preview) instances - when enabled otherwise they will be excluded. Supported - values: `enabled`, `disabled` or “.' + description: |- + (String) Will include customer specific (preview) instances when enabled otherwise they will be excluded. Supported values: enabled, disabled or “. + Will include customer specific (preview) instances when enabled otherwise they will be excluded. Supported values: `enabled`, `disabled` or “. type: string dedicatedNodeAffinity: description: |- + creates preference for instances to be created on sole tenancy or dedicated nodes. This + feature is only available for GCP clusters and sole tenancy nodes with local + SSDs or GPUs are not supported. If the sole tenancy or dedicated nodes don't have capacity for selected instance + type, the Autoscaler will fall back to multi-tenant instance types available for this Node Template. + Other instance constraints are applied when the Autoscaler picks available instance types that can be created on + the sole tenancy or dedicated node (example: setting min CPU to 16). (see below for nested schema) Dedicated node affinity - creates preference for instances to be created on sole tenancy or dedicated nodes. This feature is only available for GCP clusters and sole tenancy nodes with local SSDs or GPUs are not supported. If the sole tenancy or dedicated nodes don't have capacity for selected instance @@ -736,207 +845,255 @@ spec: items: properties: affinity: + description: (Block List) (see below for nested schema) items: properties: key: - description: Key of the node affinity selector. + description: |- + (String) Key of the node affinity selector. + Key of the node affinity selector. type: string operator: - description: 'Operator of the node affinity - selector. Allowed values: In, NotIn, Exists, - DoesNotExist, Gt, Lt.' + description: |- + (String) Operator of the node affinity selector. Allowed values: In, NotIn, Exists, DoesNotExist, Gt, Lt. + Operator of the node affinity selector. Allowed values: In, NotIn, Exists, DoesNotExist, Gt, Lt. type: string values: - description: Values of the node affinity selector. + description: |- + (List of String) Values of the node affinity selector. + Values of the node affinity selector. items: type: string type: array type: object type: array azName: - description: Availability zone name. + description: |- + (String) Availability zone name. + Availability zone name. type: string instanceTypes: - description: Instance/node types in this node group. + description: |- + (List of String) Instance/node types in this node group. + Instance/node types in this node group. items: type: string type: array name: - description: Name of node group. + description: |- + (String) Name of the node template. + Name of node group. type: string type: object type: array enableSpotDiversity: - description: Enable/disable spot diversity policy. When - enabled, autoscaler will try to balance between diverse - and cost optimal instance types. + description: |- + (Boolean) Enable/disable spot diversity policy. When enabled, autoscaler will try to balance between diverse and cost optimal instance types. + Enable/disable spot diversity policy. When enabled, autoscaler will try to balance between diverse and cost optimal instance types. type: boolean fallbackRestoreRateSeconds: - description: 'Fallback restore rate in seconds: defines - how much time should pass before spot fallback should - be attempted to be restored to real spot.' + description: |- + (Number) Fallback restore rate in seconds: defines how much time should pass before spot fallback should be attempted to be restored to real spot. + Fallback restore rate in seconds: defines how much time should pass before spot fallback should be attempted to be restored to real spot. type: number gpu: + description: '(Block List, Max: 1) (see below for nested + schema)' items: properties: excludeNames: - description: Names of the GPUs to exclude. + description: |- + (List of String) Names of the GPUs to exclude. + Names of the GPUs to exclude. items: type: string type: array includeNames: - description: Instance families to include when filtering - (excludes all other families). + description: |- + (List of String) Instance families to include when filtering (excludes all other families). + Instance families to include when filtering (excludes all other families). items: type: string type: array manufacturers: - description: Manufacturers of the gpus to select - + description: |- NVIDIA, AMD. + Manufacturers of the gpus to select - NVIDIA, AMD. items: type: string type: array maxCount: - description: Max GPU count for the instance type to - have. + description: |- + (Number) Max GPU count for the instance type to have. + Max GPU count for the instance type to have. type: number minCount: - description: Min GPU count for the instance type to - have. + description: |- + (Number) Min GPU count for the instance type to have. + Min GPU count for the instance type to have. type: number type: object type: array instanceFamilies: + description: '(Block List, Max: 1) (see below for nested + schema)' items: properties: exclude: - description: Instance families to include when filtering - (excludes all other families). + description: |- + (List of String) Instance families to include when filtering (excludes all other families). + Instance families to include when filtering (excludes all other families). items: type: string type: array include: - description: Instance families to exclude when filtering - (includes all other families). + description: |- + (List of String) Instance families to exclude when filtering (includes all other families). + Instance families to exclude when filtering (includes all other families). items: type: string type: array type: object type: array isGpuOnly: - description: GPU instance constraint - will only pick nodes - with GPU if true + description: |- + will only pick nodes with GPU if true + GPU instance constraint - will only pick nodes with GPU if true type: boolean maxCpu: - description: Max CPU cores per node. + description: |- + (Number) Max CPU cores per node. + Max CPU cores per node. type: number maxMemory: - description: Max Memory (Mib) per node. + description: |- + (Number) Max Memory (Mib) per node. + Max Memory (Mib) per node. type: number minCpu: - description: Min CPU cores per node. + description: |- + (Number) Min CPU cores per node. + Min CPU cores per node. type: number minMemory: - description: Min Memory (Mib) per node. + description: |- + (Number) Min Memory (Mib) per node. + Min Memory (Mib) per node. type: number onDemand: - description: Should include on-demand instances in the considered - pool. + description: |- + demand instances in the considered pool. + Should include on-demand instances in the considered pool. type: boolean os: - description: 'List of acceptable instance Operating Systems, - the default is linux. Allowed values: linux, windows.' + description: |- + (List of String) List of acceptable instance Operating Systems, the default is linux. Allowed values: linux, windows. + List of acceptable instance Operating Systems, the default is linux. Allowed values: linux, windows. items: type: string type: array spot: - description: Should include spot instances in the considered - pool. + description: |- + (Boolean) Should include spot instances in the considered pool. + Should include spot instances in the considered pool. type: boolean spotDiversityPriceIncreaseLimitPercent: - description: Allowed node configuration price increase when - diversifying instance types. E.g. if the value is 10%, - then the overall price of diversified instance types can - be 10% higher than the price of the optimal configuration. + description: |- + (Number) Allowed node configuration price increase when diversifying instance types. E.g. if the value is 10%, then the overall price of diversified instance types can be 10% higher than the price of the optimal configuration. + Allowed node configuration price increase when diversifying instance types. E.g. if the value is 10%, then the overall price of diversified instance types can be 10% higher than the price of the optimal configuration. type: number spotInterruptionPredictionsEnabled: - description: Enable/disable spot interruption predictions. + description: |- + (Boolean) Enable/disable spot interruption predictions. + Enable/disable spot interruption predictions. type: boolean spotInterruptionPredictionsType: - description: Spot interruption predictions type. Can be - either "aws-rebalance-recommendations" or "interruption-predictions". + description: |- + rebalance-recommendations" or "interruption-predictions". + Spot interruption predictions type. Can be either "aws-rebalance-recommendations" or "interruption-predictions". type: string storageOptimized: - description: Storage optimized instance constraint (deprecated). + description: |- + (Boolean) Storage optimized instance constraint (deprecated). + Storage optimized instance constraint (deprecated). type: boolean storageOptimizedState: - description: 'Storage optimized instance constraint - will - only pick storage optimized nodes if enabled and won''t - pick if disabled. Empty value will have no effect. Supported - values: `enabled`, `disabled` or empty string.' + description: |- + will only pick storage optimized nodes if enabled and won't pick if disabled. Empty value will have no effect. Supported values: enabled, disabled or empty string. + Storage optimized instance constraint - will only pick storage optimized nodes if enabled and won't pick if disabled. Empty value will have no effect. Supported values: `enabled`, `disabled` or empty string. type: string useSpotFallbacks: - description: Spot instance fallback constraint - when true, - on-demand instances will be created, when spots are unavailable. + description: |- + when true, on-demand instances will be created, when spots are unavailable. + Spot instance fallback constraint - when true, on-demand instances will be created, when spots are unavailable. type: boolean type: object type: array customInstancesEnabled: - description: Marks whether custom instances should be used when - deciding which parts of inventory are available. Custom instances - are only supported in GCP. + description: |- + (Boolean) Marks whether custom instances should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP. + Marks whether custom instances should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP. type: boolean customInstancesWithExtendedMemoryEnabled: - description: Marks whether custom instances with extended memory - should be used when deciding which parts of inventory are available. - Custom instances are only supported in GCP. + description: |- + (Boolean) Marks whether custom instances with extended memory should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP. + Marks whether custom instances with extended memory should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP. type: boolean customLabels: additionalProperties: type: string - description: Custom labels to be added to nodes created from this - template. + description: |- + (Map of String) Custom labels to be added to nodes created from this template. + Custom labels to be added to nodes created from this template. type: object x-kubernetes-map-type: granular customTaints: - description: Custom taints to be added to the nodes created from - this template. `shouldTaint` has to be `true` in order to create/update - the node template with custom taints. If `shouldTaint` is `true`, - but no custom taints are provided, the nodes will be tainted - with the default node template taint. + description: |- + (Block List) Custom taints to be added to the nodes created from this template. shouldTaint has to be true in order to create/update the node template with custom taints. If shouldTaint is true, but no custom taints are provided, the nodes will be tainted with the default node template taint. (see below for nested schema) + Custom taints to be added to the nodes created from this template. `shouldTaint` has to be `true` in order to create/update the node template with custom taints. If `shouldTaint` is `true`, but no custom taints are provided, the nodes will be tainted with the default node template taint. items: properties: effect: - description: 'Effect of a taint to be added to nodes created - from this template, the default is NoSchedule. Allowed - values: NoSchedule, NoExecute.' + description: |- + (String) Effect of a taint to be added to nodes created from this template, the default is NoSchedule. Allowed values: NoSchedule, NoExecute. + Effect of a taint to be added to nodes created from this template, the default is NoSchedule. Allowed values: NoSchedule, NoExecute. type: string key: - description: Key of a taint to be added to nodes created - from this template. + description: |- + (String) Key of the node affinity selector. + Key of a taint to be added to nodes created from this template. type: string value: - description: Value of a taint to be added to nodes created - from this template. + description: |- + (String) Value of a taint to be added to nodes created from this template. + Value of a taint to be added to nodes created from this template. type: string type: object type: array isDefault: - description: Flag whether the node template is default. + description: |- + (Boolean) Flag whether the node template is default. + Flag whether the node template is default. type: boolean isEnabled: - description: Flag whether the node template is enabled and considered - for autoscaling. + description: |- + (Boolean) Flag whether the node template is enabled and considered for autoscaling. + Flag whether the node template is enabled and considered for autoscaling. type: boolean name: - description: Name of the node template. + description: |- + (String) Name of the node template. + Name of the node template. type: string rebalancingConfigMinNodes: - description: Minimum nodes that will be kept when rebalancing - nodes using this node template. + description: |- + (Number) Minimum nodes that will be kept when rebalancing nodes using this node template. + Minimum nodes that will be kept when rebalancing nodes using this node template. type: number shouldTaint: - description: Marks whether the templated nodes will have a taint. + description: |- + (Boolean) Marks whether the templated nodes will have a taint. + Marks whether the templated nodes will have a taint. type: boolean type: object managementPolicies: @@ -1117,68 +1274,98 @@ spec: atProvider: properties: clusterId: - description: CAST AI cluster id. + description: |- + (String) CAST AI cluster id. + CAST AI cluster id. type: string configurationId: - description: CAST AI node configuration id to be used for node - template. + description: |- + (String) CAST AI node configuration id to be used for node template. + CAST AI node configuration id to be used for node template. type: string constraints: + description: '(Block List, Max: 1) (see below for nested schema)' items: properties: + architecturePriority: + description: |- + (List of String) Priority ordering of architectures, specifying no priority will pick cheapest. Allowed values: amd64, arm64. + Priority ordering of architectures, specifying no priority will pick cheapest. Allowed values: amd64, arm64. + items: + type: string + type: array architectures: - description: 'List of acceptable instance CPU architectures, - the default is amd64. Allowed values: amd64, arm64.' + description: |- + (List of String) List of acceptable instance CPU architectures, the default is amd64. Allowed values: amd64, arm64. + List of acceptable instance CPU architectures, the default is amd64. Allowed values: amd64, arm64. items: type: string type: array azs: - description: The list of AZ names to consider for the node - template, if empty or not set all AZs are considered. + description: |- + (List of String) The list of AZ names to consider for the node template, if empty or not set all AZs are considered. + The list of AZ names to consider for the node template, if empty or not set all AZs are considered. items: type: string type: array burstableInstances: - description: 'Will include burstable instances when enabled - otherwise they will be excluded. Supported values: `enabled`, - `disabled` or “.' + description: |- + (String) Will include burstable instances when enabled otherwise they will be excluded. Supported values: enabled, disabled or “. + Will include burstable instances when enabled otherwise they will be excluded. Supported values: `enabled`, `disabled` or “. type: string computeOptimized: - description: Compute optimized instance constraint (deprecated). + description: |- + (Boolean) Compute optimized instance constraint (deprecated). + Compute optimized instance constraint (deprecated). type: boolean computeOptimizedState: - description: 'Will only include compute optimized nodes - when enabled and exclude compute optimized nodes when - disabled. Empty value won''t have effect on instances - filter. Supported values: `enabled`, `disabled` or empty - string.' + description: |- + (String) Will only include compute optimized nodes when enabled and exclude compute optimized nodes when disabled. Empty value won't have effect on instances filter. Supported values: enabled, disabled or empty string. + Will only include compute optimized nodes when enabled and exclude compute optimized nodes when disabled. Empty value won't have effect on instances filter. Supported values: `enabled`, `disabled` or empty string. type: string + cpuManufacturers: + description: |- + (List of String) List of acceptable CPU manufacturers. Allowed values: AMD, AMPERE, APPLE, AWS, INTEL. + List of acceptable CPU manufacturers. Allowed values: AMD, AMPERE, APPLE, AWS, INTEL. + items: + type: string + type: array customPriority: + description: (Block List) (see below for nested schema) items: properties: instanceFamilies: - description: Instance families to prioritize in this - tier. + description: |- + (Block List, Max: 1) (see below for nested schema) + Instance families to prioritize in this tier. items: type: string type: array onDemand: - description: If true, this tier will apply to on-demand - instances. + description: |- + demand instances in the considered pool. + If true, this tier will apply to on-demand instances. type: boolean spot: - description: If true, this tier will apply to spot - instances. + description: |- + (Boolean) Should include spot instances in the considered pool. + If true, this tier will apply to spot instances. type: boolean type: object type: array customerSpecific: - description: 'Will include customer specific (preview) instances - when enabled otherwise they will be excluded. Supported - values: `enabled`, `disabled` or “.' + description: |- + (String) Will include customer specific (preview) instances when enabled otherwise they will be excluded. Supported values: enabled, disabled or “. + Will include customer specific (preview) instances when enabled otherwise they will be excluded. Supported values: `enabled`, `disabled` or “. type: string dedicatedNodeAffinity: description: |- + creates preference for instances to be created on sole tenancy or dedicated nodes. This + feature is only available for GCP clusters and sole tenancy nodes with local + SSDs or GPUs are not supported. If the sole tenancy or dedicated nodes don't have capacity for selected instance + type, the Autoscaler will fall back to multi-tenant instance types available for this Node Template. + Other instance constraints are applied when the Autoscaler picks available instance types that can be created on + the sole tenancy or dedicated node (example: setting min CPU to 16). (see below for nested schema) Dedicated node affinity - creates preference for instances to be created on sole tenancy or dedicated nodes. This feature is only available for GCP clusters and sole tenancy nodes with local SSDs or GPUs are not supported. If the sole tenancy or dedicated nodes don't have capacity for selected instance @@ -1188,209 +1375,258 @@ spec: items: properties: affinity: + description: (Block List) (see below for nested schema) items: properties: key: - description: Key of the node affinity selector. + description: |- + (String) Key of the node affinity selector. + Key of the node affinity selector. type: string operator: - description: 'Operator of the node affinity - selector. Allowed values: In, NotIn, Exists, - DoesNotExist, Gt, Lt.' + description: |- + (String) Operator of the node affinity selector. Allowed values: In, NotIn, Exists, DoesNotExist, Gt, Lt. + Operator of the node affinity selector. Allowed values: In, NotIn, Exists, DoesNotExist, Gt, Lt. type: string values: - description: Values of the node affinity selector. + description: |- + (List of String) Values of the node affinity selector. + Values of the node affinity selector. items: type: string type: array type: object type: array azName: - description: Availability zone name. + description: |- + (String) Availability zone name. + Availability zone name. type: string instanceTypes: - description: Instance/node types in this node group. + description: |- + (List of String) Instance/node types in this node group. + Instance/node types in this node group. items: type: string type: array name: - description: Name of node group. + description: |- + (String) Name of the node template. + Name of node group. type: string type: object type: array enableSpotDiversity: - description: Enable/disable spot diversity policy. When - enabled, autoscaler will try to balance between diverse - and cost optimal instance types. + description: |- + (Boolean) Enable/disable spot diversity policy. When enabled, autoscaler will try to balance between diverse and cost optimal instance types. + Enable/disable spot diversity policy. When enabled, autoscaler will try to balance between diverse and cost optimal instance types. type: boolean fallbackRestoreRateSeconds: - description: 'Fallback restore rate in seconds: defines - how much time should pass before spot fallback should - be attempted to be restored to real spot.' + description: |- + (Number) Fallback restore rate in seconds: defines how much time should pass before spot fallback should be attempted to be restored to real spot. + Fallback restore rate in seconds: defines how much time should pass before spot fallback should be attempted to be restored to real spot. type: number gpu: + description: '(Block List, Max: 1) (see below for nested + schema)' items: properties: excludeNames: - description: Names of the GPUs to exclude. + description: |- + (List of String) Names of the GPUs to exclude. + Names of the GPUs to exclude. items: type: string type: array includeNames: - description: Instance families to include when filtering - (excludes all other families). + description: |- + (List of String) Instance families to include when filtering (excludes all other families). + Instance families to include when filtering (excludes all other families). items: type: string type: array manufacturers: - description: Manufacturers of the gpus to select - + description: |- NVIDIA, AMD. + Manufacturers of the gpus to select - NVIDIA, AMD. items: type: string type: array maxCount: - description: Max GPU count for the instance type to - have. + description: |- + (Number) Max GPU count for the instance type to have. + Max GPU count for the instance type to have. type: number minCount: - description: Min GPU count for the instance type to - have. + description: |- + (Number) Min GPU count for the instance type to have. + Min GPU count for the instance type to have. type: number type: object type: array instanceFamilies: + description: '(Block List, Max: 1) (see below for nested + schema)' items: properties: exclude: - description: Instance families to include when filtering - (excludes all other families). + description: |- + (List of String) Instance families to include when filtering (excludes all other families). + Instance families to include when filtering (excludes all other families). items: type: string type: array include: - description: Instance families to exclude when filtering - (includes all other families). + description: |- + (List of String) Instance families to exclude when filtering (includes all other families). + Instance families to exclude when filtering (includes all other families). items: type: string type: array type: object type: array isGpuOnly: - description: GPU instance constraint - will only pick nodes - with GPU if true + description: |- + will only pick nodes with GPU if true + GPU instance constraint - will only pick nodes with GPU if true type: boolean maxCpu: - description: Max CPU cores per node. + description: |- + (Number) Max CPU cores per node. + Max CPU cores per node. type: number maxMemory: - description: Max Memory (Mib) per node. + description: |- + (Number) Max Memory (Mib) per node. + Max Memory (Mib) per node. type: number minCpu: - description: Min CPU cores per node. + description: |- + (Number) Min CPU cores per node. + Min CPU cores per node. type: number minMemory: - description: Min Memory (Mib) per node. + description: |- + (Number) Min Memory (Mib) per node. + Min Memory (Mib) per node. type: number onDemand: - description: Should include on-demand instances in the considered - pool. + description: |- + demand instances in the considered pool. + Should include on-demand instances in the considered pool. type: boolean os: - description: 'List of acceptable instance Operating Systems, - the default is linux. Allowed values: linux, windows.' + description: |- + (List of String) List of acceptable instance Operating Systems, the default is linux. Allowed values: linux, windows. + List of acceptable instance Operating Systems, the default is linux. Allowed values: linux, windows. items: type: string type: array spot: - description: Should include spot instances in the considered - pool. + description: |- + (Boolean) Should include spot instances in the considered pool. + Should include spot instances in the considered pool. type: boolean spotDiversityPriceIncreaseLimitPercent: - description: Allowed node configuration price increase when - diversifying instance types. E.g. if the value is 10%, - then the overall price of diversified instance types can - be 10% higher than the price of the optimal configuration. + description: |- + (Number) Allowed node configuration price increase when diversifying instance types. E.g. if the value is 10%, then the overall price of diversified instance types can be 10% higher than the price of the optimal configuration. + Allowed node configuration price increase when diversifying instance types. E.g. if the value is 10%, then the overall price of diversified instance types can be 10% higher than the price of the optimal configuration. type: number spotInterruptionPredictionsEnabled: - description: Enable/disable spot interruption predictions. + description: |- + (Boolean) Enable/disable spot interruption predictions. + Enable/disable spot interruption predictions. type: boolean spotInterruptionPredictionsType: - description: Spot interruption predictions type. Can be - either "aws-rebalance-recommendations" or "interruption-predictions". + description: |- + rebalance-recommendations" or "interruption-predictions". + Spot interruption predictions type. Can be either "aws-rebalance-recommendations" or "interruption-predictions". type: string storageOptimized: - description: Storage optimized instance constraint (deprecated). + description: |- + (Boolean) Storage optimized instance constraint (deprecated). + Storage optimized instance constraint (deprecated). type: boolean storageOptimizedState: - description: 'Storage optimized instance constraint - will - only pick storage optimized nodes if enabled and won''t - pick if disabled. Empty value will have no effect. Supported - values: `enabled`, `disabled` or empty string.' + description: |- + will only pick storage optimized nodes if enabled and won't pick if disabled. Empty value will have no effect. Supported values: enabled, disabled or empty string. + Storage optimized instance constraint - will only pick storage optimized nodes if enabled and won't pick if disabled. Empty value will have no effect. Supported values: `enabled`, `disabled` or empty string. type: string useSpotFallbacks: - description: Spot instance fallback constraint - when true, - on-demand instances will be created, when spots are unavailable. + description: |- + when true, on-demand instances will be created, when spots are unavailable. + Spot instance fallback constraint - when true, on-demand instances will be created, when spots are unavailable. type: boolean type: object type: array customInstancesEnabled: - description: Marks whether custom instances should be used when - deciding which parts of inventory are available. Custom instances - are only supported in GCP. + description: |- + (Boolean) Marks whether custom instances should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP. + Marks whether custom instances should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP. type: boolean customInstancesWithExtendedMemoryEnabled: - description: Marks whether custom instances with extended memory - should be used when deciding which parts of inventory are available. - Custom instances are only supported in GCP. + description: |- + (Boolean) Marks whether custom instances with extended memory should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP. + Marks whether custom instances with extended memory should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP. type: boolean customLabels: additionalProperties: type: string - description: Custom labels to be added to nodes created from this - template. + description: |- + (Map of String) Custom labels to be added to nodes created from this template. + Custom labels to be added to nodes created from this template. type: object x-kubernetes-map-type: granular customTaints: - description: Custom taints to be added to the nodes created from - this template. `shouldTaint` has to be `true` in order to create/update - the node template with custom taints. If `shouldTaint` is `true`, - but no custom taints are provided, the nodes will be tainted - with the default node template taint. + description: |- + (Block List) Custom taints to be added to the nodes created from this template. shouldTaint has to be true in order to create/update the node template with custom taints. If shouldTaint is true, but no custom taints are provided, the nodes will be tainted with the default node template taint. (see below for nested schema) + Custom taints to be added to the nodes created from this template. `shouldTaint` has to be `true` in order to create/update the node template with custom taints. If `shouldTaint` is `true`, but no custom taints are provided, the nodes will be tainted with the default node template taint. items: properties: effect: - description: 'Effect of a taint to be added to nodes created - from this template, the default is NoSchedule. Allowed - values: NoSchedule, NoExecute.' + description: |- + (String) Effect of a taint to be added to nodes created from this template, the default is NoSchedule. Allowed values: NoSchedule, NoExecute. + Effect of a taint to be added to nodes created from this template, the default is NoSchedule. Allowed values: NoSchedule, NoExecute. type: string key: - description: Key of a taint to be added to nodes created - from this template. + description: |- + (String) Key of the node affinity selector. + Key of a taint to be added to nodes created from this template. type: string value: - description: Value of a taint to be added to nodes created - from this template. + description: |- + (String) Value of a taint to be added to nodes created from this template. + Value of a taint to be added to nodes created from this template. type: string type: object type: array id: + description: (String) The ID of this resource. type: string isDefault: - description: Flag whether the node template is default. + description: |- + (Boolean) Flag whether the node template is default. + Flag whether the node template is default. type: boolean isEnabled: - description: Flag whether the node template is enabled and considered - for autoscaling. + description: |- + (Boolean) Flag whether the node template is enabled and considered for autoscaling. + Flag whether the node template is enabled and considered for autoscaling. type: boolean name: - description: Name of the node template. + description: |- + (String) Name of the node template. + Name of the node template. type: string rebalancingConfigMinNodes: - description: Minimum nodes that will be kept when rebalancing - nodes using this node template. + description: |- + (Number) Minimum nodes that will be kept when rebalancing nodes using this node template. + Minimum nodes that will be kept when rebalancing nodes using this node template. type: number shouldTaint: - description: Marks whether the templated nodes will have a taint. + description: |- + (Boolean) Marks whether the templated nodes will have a taint. + Marks whether the templated nodes will have a taint. type: boolean type: object conditions: diff --git a/package/crds/castai.upbound.io_organizationmembers.yaml b/package/crds/castai.upbound.io_organizationmembers.yaml index 5e88eba..0a77e0d 100644 --- a/package/crds/castai.upbound.io_organizationmembers.yaml +++ b/package/crds/castai.upbound.io_organizationmembers.yaml @@ -35,7 +35,7 @@ spec: schema: openAPIV3Schema: description: OrganizationMembers is the Schema for the OrganizationMemberss - API. + API. CAST AI organization members resource to manage organization members properties: apiVersion: description: |- @@ -74,23 +74,28 @@ spec: forProvider: properties: members: - description: A list of email addresses corresponding to users - who should be given member access to the organization. + description: |- + (List of String) A list of email addresses corresponding to users who should be given member access to the organization. + A list of email addresses corresponding to users who should be given member access to the organization. items: type: string type: array organizationId: - description: CAST AI organization ID. + description: |- + (String) CAST AI organization ID. + CAST AI organization ID. type: string owners: - description: A list of email addresses corresponding to users - who should be given owner access to the organization. + description: |- + (List of String) A list of email addresses corresponding to users who should be given owner access to the organization. + A list of email addresses corresponding to users who should be given owner access to the organization. items: type: string type: array viewers: - description: A list of email addresses corresponding to users - who should be given viewer access to the organization. + description: |- + (List of String) A list of email addresses corresponding to users who should be given viewer access to the organization. + A list of email addresses corresponding to users who should be given viewer access to the organization. items: type: string type: array @@ -109,23 +114,28 @@ spec: autoscaler. properties: members: - description: A list of email addresses corresponding to users - who should be given member access to the organization. + description: |- + (List of String) A list of email addresses corresponding to users who should be given member access to the organization. + A list of email addresses corresponding to users who should be given member access to the organization. items: type: string type: array organizationId: - description: CAST AI organization ID. + description: |- + (String) CAST AI organization ID. + CAST AI organization ID. type: string owners: - description: A list of email addresses corresponding to users - who should be given owner access to the organization. + description: |- + (List of String) A list of email addresses corresponding to users who should be given owner access to the organization. + A list of email addresses corresponding to users who should be given owner access to the organization. items: type: string type: array viewers: - description: A list of email addresses corresponding to users - who should be given viewer access to the organization. + description: |- + (List of String) A list of email addresses corresponding to users who should be given viewer access to the organization. + A list of email addresses corresponding to users who should be given viewer access to the organization. items: type: string type: array @@ -308,25 +318,31 @@ spec: atProvider: properties: id: + description: (String) The ID of this resource. type: string members: - description: A list of email addresses corresponding to users - who should be given member access to the organization. + description: |- + (List of String) A list of email addresses corresponding to users who should be given member access to the organization. + A list of email addresses corresponding to users who should be given member access to the organization. items: type: string type: array organizationId: - description: CAST AI organization ID. + description: |- + (String) CAST AI organization ID. + CAST AI organization ID. type: string owners: - description: A list of email addresses corresponding to users - who should be given owner access to the organization. + description: |- + (List of String) A list of email addresses corresponding to users who should be given owner access to the organization. + A list of email addresses corresponding to users who should be given owner access to the organization. items: type: string type: array viewers: - description: A list of email addresses corresponding to users - who should be given viewer access to the organization. + description: |- + (List of String) A list of email addresses corresponding to users who should be given viewer access to the organization. + A list of email addresses corresponding to users who should be given viewer access to the organization. items: type: string type: array