diff --git a/Makefile b/Makefile index cd5c401..1a7aeae 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,7 @@ TERRAFORM_VERSION_VALID := $(shell [ "$(TERRAFORM_VERSION)" = "`printf "$(TERRAF export TERRAFORM_PROVIDER_SOURCE := spotinst/spotinst export TERRAFORM_PROVIDER_REPO := https://github.com/spotinst/terraform-provider-spotinst -export TERRAFORM_PROVIDER_VERSION := 1.197.1 +export TERRAFORM_PROVIDER_VERSION := 1.199.2 export TERRAFORM_PROVIDER_DOWNLOAD_NAME := terraform-provider-spotinst export TERRAFORM_PROVIDER_DOWNLOAD_URL_PREFIX := $(TERRAFORM_PROVIDER_REPO)/releases/download/v$(TERRAFORM_PROVIDER_VERSION) export TERRAFORM_NATIVE_PROVIDER_BINARY := $(TERRAFORM_PROVIDER_DOWNLOAD_NAME)_v$(TERRAFORM_PROVIDER_VERSION) diff --git a/README.md b/README.md index 640436e..1326968 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,9 @@ Spot API. ## Getting Started Install the provider by using the following command after changing the image tag -to the [latest release](https://marketplace.upbound.io/providers/spotinst/crossplane-provider-spot): +to the [latest release](https://marketplace.upbound.io/providers/spot-by-netapp/crossplane-provider-spot/): ``` -up ctp provider install spotinst/crossplane-provider-spot:v0.1.0 +up ctp provider install xpkg.upbound.io/spot-by-netapp/crossplane-provider-spot:v0.6.0 ``` Alternatively, you can use declarative installation: @@ -21,7 +21,7 @@ kind: Provider metadata: name: crossplane-provider-spot spec: - package: spotinst/crossplane-provider-spot:v0.1.0 + package: xpkg.upbound.io/spot-by-netapp/crossplane-provider-spot:v0.6.0 EOF ``` diff --git a/apis/oceanaws/v1alpha1/zz_generated.deepcopy.go b/apis/oceanaws/v1alpha1/zz_generated.deepcopy.go index 60f967b..3b2aa56 100644 --- a/apis/oceanaws/v1alpha1/zz_generated.deepcopy.go +++ b/apis/oceanaws/v1alpha1/zz_generated.deepcopy.go @@ -2307,6 +2307,11 @@ func (in *OceanAwsInitParameters) DeepCopyInto(out *OceanAwsInitParameters) { *out = new(string) **out = **in } + if in.ReservedEnis != nil { + in, out := &in.ReservedEnis, &out.ReservedEnis + *out = new(float64) + **out = **in + } if in.ResourceTagSpecification != nil { in, out := &in.ResourceTagSpecification, &out.ResourceTagSpecification *out = make([]ResourceTagSpecificationInitParameters, len(*in)) @@ -2614,6 +2619,11 @@ func (in *OceanAwsObservation) DeepCopyInto(out *OceanAwsObservation) { *out = new(string) **out = **in } + if in.ReservedEnis != nil { + in, out := &in.ReservedEnis, &out.ReservedEnis + *out = new(float64) + **out = **in + } if in.ResourceTagSpecification != nil { in, out := &in.ResourceTagSpecification, &out.ResourceTagSpecification *out = make([]ResourceTagSpecificationObservation, len(*in)) @@ -2884,6 +2894,11 @@ func (in *OceanAwsParameters) DeepCopyInto(out *OceanAwsParameters) { *out = new(string) **out = **in } + if in.ReservedEnis != nil { + in, out := &in.ReservedEnis, &out.ReservedEnis + *out = new(float64) + **out = **in + } if in.ResourceTagSpecification != nil { in, out := &in.ResourceTagSpecification, &out.ResourceTagSpecification *out = make([]ResourceTagSpecificationParameters, len(*in)) diff --git a/apis/oceanaws/v1alpha1/zz_oceanaws_types.go b/apis/oceanaws/v1alpha1/zz_oceanaws_types.go index c1fc386..219af01 100755 --- a/apis/oceanaws/v1alpha1/zz_oceanaws_types.go +++ b/apis/oceanaws/v1alpha1/zz_oceanaws_types.go @@ -1017,6 +1017,9 @@ type OceanAwsInitParameters struct { // The region the cluster will run in. Region *string `json:"region,omitempty" tf:"region,omitempty"` + // Specifies the count of ENIs to reserve per instance type for scaling purposes. + ReservedEnis *float64 `json:"reservedEnis,omitempty" tf:"reserved_enis,omitempty"` + // Specify which resources should be tagged with Virtual Node Group tags or Ocean tags. If tags are set on the VNG, the resources will be tagged with the VNG tags; otherwise, they will be tagged with the Ocean tags. ResourceTagSpecification []ResourceTagSpecificationInitParameters `json:"resourceTagSpecification,omitempty" tf:"resource_tag_specification,omitempty"` @@ -1145,6 +1148,9 @@ type OceanAwsObservation struct { // The region the cluster will run in. Region *string `json:"region,omitempty" tf:"region,omitempty"` + // Specifies the count of ENIs to reserve per instance type for scaling purposes. + ReservedEnis *float64 `json:"reservedEnis,omitempty" tf:"reserved_enis,omitempty"` + // Specify which resources should be tagged with Virtual Node Group tags or Ocean tags. If tags are set on the VNG, the resources will be tagged with the VNG tags; otherwise, they will be tagged with the Ocean tags. ResourceTagSpecification []ResourceTagSpecificationObservation `json:"resourceTagSpecification,omitempty" tf:"resource_tag_specification,omitempty"` @@ -1297,6 +1303,10 @@ type OceanAwsParameters struct { // +kubebuilder:validation:Optional Region *string `json:"region,omitempty" tf:"region,omitempty"` + // Specifies the count of ENIs to reserve per instance type for scaling purposes. + // +kubebuilder:validation:Optional + ReservedEnis *float64 `json:"reservedEnis,omitempty" tf:"reserved_enis,omitempty"` + // Specify which resources should be tagged with Virtual Node Group tags or Ocean tags. If tags are set on the VNG, the resources will be tagged with the VNG tags; otherwise, they will be tagged with the Ocean tags. // +kubebuilder:validation:Optional ResourceTagSpecification []ResourceTagSpecificationParameters `json:"resourceTagSpecification,omitempty" tf:"resource_tag_specification,omitempty"` diff --git a/apis/oceanawslaunchspec/v1alpha1/zz_generated.deepcopy.go b/apis/oceanawslaunchspec/v1alpha1/zz_generated.deepcopy.go index 58c6760..ab7c301 100644 --- a/apis/oceanawslaunchspec/v1alpha1/zz_generated.deepcopy.go +++ b/apis/oceanawslaunchspec/v1alpha1/zz_generated.deepcopy.go @@ -1708,6 +1708,11 @@ func (in *OceanAwsLaunchSpecInitParameters) DeepCopyInto(out *OceanAwsLaunchSpec } } } + if in.ReservedEnis != nil { + in, out := &in.ReservedEnis, &out.ReservedEnis + *out = new(float64) + **out = **in + } if in.ResourceLimits != nil { in, out := &in.ResourceLimits, &out.ResourceLimits *out = make([]ResourceLimitsInitParameters, len(*in)) @@ -1988,6 +1993,11 @@ func (in *OceanAwsLaunchSpecObservation) DeepCopyInto(out *OceanAwsLaunchSpecObs } } } + if in.ReservedEnis != nil { + in, out := &in.ReservedEnis, &out.ReservedEnis + *out = new(float64) + **out = **in + } if in.ResourceLimits != nil { in, out := &in.ResourceLimits, &out.ResourceLimits *out = make([]ResourceLimitsObservation, len(*in)) @@ -2231,6 +2241,11 @@ func (in *OceanAwsLaunchSpecParameters) DeepCopyInto(out *OceanAwsLaunchSpecPara } } } + if in.ReservedEnis != nil { + in, out := &in.ReservedEnis, &out.ReservedEnis + *out = new(float64) + **out = **in + } if in.ResourceLimits != nil { in, out := &in.ResourceLimits, &out.ResourceLimits *out = make([]ResourceLimitsParameters, len(*in)) diff --git a/apis/oceanawslaunchspec/v1alpha1/zz_oceanawslaunchspec_types.go b/apis/oceanawslaunchspec/v1alpha1/zz_oceanawslaunchspec_types.go index 25f2cfb..2828249 100755 --- a/apis/oceanawslaunchspec/v1alpha1/zz_oceanawslaunchspec_types.go +++ b/apis/oceanawslaunchspec/v1alpha1/zz_oceanawslaunchspec_types.go @@ -721,6 +721,9 @@ type OceanAwsLaunchSpecInitParameters struct { // A list of instance types. Takes the preferred types into consideration while maintaining a variety of machine types running for optimized distribution. PreferredSpotTypes []*string `json:"preferredSpotTypes,omitempty" tf:"preferred_spot_types,omitempty"` + // Specifies the count of ENIs to reserve per instance type for scaling purposes. + ReservedEnis *float64 `json:"reservedEnis,omitempty" tf:"reserved_enis,omitempty"` + ResourceLimits []ResourceLimitsInitParameters `json:"resourceLimits,omitempty" tf:"resource_limits,omitempty"` // Boolean. When set to true, nodes will be treated as if all pods running have the restrict-scale-down label. Therefore, Ocean will not scale nodes down unless empty. @@ -819,6 +822,9 @@ type OceanAwsLaunchSpecObservation struct { // A list of instance types. Takes the preferred types into consideration while maintaining a variety of machine types running for optimized distribution. PreferredSpotTypes []*string `json:"preferredSpotTypes,omitempty" tf:"preferred_spot_types,omitempty"` + // Specifies the count of ENIs to reserve per instance type for scaling purposes. + ReservedEnis *float64 `json:"reservedEnis,omitempty" tf:"reserved_enis,omitempty"` + ResourceLimits []ResourceLimitsObservation `json:"resourceLimits,omitempty" tf:"resource_limits,omitempty"` // Boolean. When set to true, nodes will be treated as if all pods running have the restrict-scale-down label. Therefore, Ocean will not scale nodes down unless empty. @@ -934,6 +940,10 @@ type OceanAwsLaunchSpecParameters struct { // +kubebuilder:validation:Optional PreferredSpotTypes []*string `json:"preferredSpotTypes,omitempty" tf:"preferred_spot_types,omitempty"` + // Specifies the count of ENIs to reserve per instance type for scaling purposes. + // +kubebuilder:validation:Optional + ReservedEnis *float64 `json:"reservedEnis,omitempty" tf:"reserved_enis,omitempty"` + // +kubebuilder:validation:Optional ResourceLimits []ResourceLimitsParameters `json:"resourceLimits,omitempty" tf:"resource_limits,omitempty"` diff --git a/apis/oceangke/v1alpha1/zz_generated.conversion_hubs.go b/apis/oceangke/v1alpha1/zz_generated.conversion_hubs.go new file mode 100755 index 0000000..5a518ae --- /dev/null +++ b/apis/oceangke/v1alpha1/zz_generated.conversion_hubs.go @@ -0,0 +1,10 @@ +// SPDX-FileCopyrightText: 2024 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +// Hub marks this type as a conversion hub. +func (tr *OceanGke) Hub() {} diff --git a/apis/oceangke/v1alpha1/zz_generated.deepcopy.go b/apis/oceangke/v1alpha1/zz_generated.deepcopy.go new file mode 100644 index 0000000..f1211fc --- /dev/null +++ b/apis/oceangke/v1alpha1/zz_generated.deepcopy.go @@ -0,0 +1,2184 @@ +//go:build !ignore_autogenerated + +// SPDX-FileCopyrightText: 2024 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +// Code generated by controller-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AutoscalerInitParameters) DeepCopyInto(out *AutoscalerInitParameters) { + *out = *in + if in.AutoHeadroomPercentage != nil { + in, out := &in.AutoHeadroomPercentage, &out.AutoHeadroomPercentage + *out = new(float64) + **out = **in + } + if in.Cooldown != nil { + in, out := &in.Cooldown, &out.Cooldown + *out = new(float64) + **out = **in + } + if in.Down != nil { + in, out := &in.Down, &out.Down + *out = make([]DownInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.EnableAutomaticAndManualHeadroom != nil { + in, out := &in.EnableAutomaticAndManualHeadroom, &out.EnableAutomaticAndManualHeadroom + *out = new(bool) + **out = **in + } + if in.Headroom != nil { + in, out := &in.Headroom, &out.Headroom + *out = make([]HeadroomInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.IsAutoConfig != nil { + in, out := &in.IsAutoConfig, &out.IsAutoConfig + *out = new(bool) + **out = **in + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.ResourceLimits != nil { + in, out := &in.ResourceLimits, &out.ResourceLimits + *out = make([]ResourceLimitsInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AutoscalerInitParameters. +func (in *AutoscalerInitParameters) DeepCopy() *AutoscalerInitParameters { + if in == nil { + return nil + } + out := new(AutoscalerInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AutoscalerObservation) DeepCopyInto(out *AutoscalerObservation) { + *out = *in + if in.AutoHeadroomPercentage != nil { + in, out := &in.AutoHeadroomPercentage, &out.AutoHeadroomPercentage + *out = new(float64) + **out = **in + } + if in.Cooldown != nil { + in, out := &in.Cooldown, &out.Cooldown + *out = new(float64) + **out = **in + } + if in.Down != nil { + in, out := &in.Down, &out.Down + *out = make([]DownObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.EnableAutomaticAndManualHeadroom != nil { + in, out := &in.EnableAutomaticAndManualHeadroom, &out.EnableAutomaticAndManualHeadroom + *out = new(bool) + **out = **in + } + if in.Headroom != nil { + in, out := &in.Headroom, &out.Headroom + *out = make([]HeadroomObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.IsAutoConfig != nil { + in, out := &in.IsAutoConfig, &out.IsAutoConfig + *out = new(bool) + **out = **in + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.ResourceLimits != nil { + in, out := &in.ResourceLimits, &out.ResourceLimits + *out = make([]ResourceLimitsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AutoscalerObservation. +func (in *AutoscalerObservation) DeepCopy() *AutoscalerObservation { + if in == nil { + return nil + } + out := new(AutoscalerObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AutoscalerParameters) DeepCopyInto(out *AutoscalerParameters) { + *out = *in + if in.AutoHeadroomPercentage != nil { + in, out := &in.AutoHeadroomPercentage, &out.AutoHeadroomPercentage + *out = new(float64) + **out = **in + } + if in.Cooldown != nil { + in, out := &in.Cooldown, &out.Cooldown + *out = new(float64) + **out = **in + } + if in.Down != nil { + in, out := &in.Down, &out.Down + *out = make([]DownParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.EnableAutomaticAndManualHeadroom != nil { + in, out := &in.EnableAutomaticAndManualHeadroom, &out.EnableAutomaticAndManualHeadroom + *out = new(bool) + **out = **in + } + if in.Headroom != nil { + in, out := &in.Headroom, &out.Headroom + *out = make([]HeadroomParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.IsAutoConfig != nil { + in, out := &in.IsAutoConfig, &out.IsAutoConfig + *out = new(bool) + **out = **in + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.ResourceLimits != nil { + in, out := &in.ResourceLimits, &out.ResourceLimits + *out = make([]ResourceLimitsParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AutoscalerParameters. +func (in *AutoscalerParameters) DeepCopy() *AutoscalerParameters { + if in == nil { + return nil + } + out := new(AutoscalerParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BackendServicesInitParameters) DeepCopyInto(out *BackendServicesInitParameters) { + *out = *in + if in.LocationType != nil { + in, out := &in.LocationType, &out.LocationType + *out = new(string) + **out = **in + } + if in.NamedPorts != nil { + in, out := &in.NamedPorts, &out.NamedPorts + *out = make([]NamedPortsInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Scheme != nil { + in, out := &in.Scheme, &out.Scheme + *out = new(string) + **out = **in + } + if in.ServiceName != nil { + in, out := &in.ServiceName, &out.ServiceName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BackendServicesInitParameters. +func (in *BackendServicesInitParameters) DeepCopy() *BackendServicesInitParameters { + if in == nil { + return nil + } + out := new(BackendServicesInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BackendServicesObservation) DeepCopyInto(out *BackendServicesObservation) { + *out = *in + if in.LocationType != nil { + in, out := &in.LocationType, &out.LocationType + *out = new(string) + **out = **in + } + if in.NamedPorts != nil { + in, out := &in.NamedPorts, &out.NamedPorts + *out = make([]NamedPortsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Scheme != nil { + in, out := &in.Scheme, &out.Scheme + *out = new(string) + **out = **in + } + if in.ServiceName != nil { + in, out := &in.ServiceName, &out.ServiceName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BackendServicesObservation. +func (in *BackendServicesObservation) DeepCopy() *BackendServicesObservation { + if in == nil { + return nil + } + out := new(BackendServicesObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BackendServicesParameters) DeepCopyInto(out *BackendServicesParameters) { + *out = *in + if in.LocationType != nil { + in, out := &in.LocationType, &out.LocationType + *out = new(string) + **out = **in + } + if in.NamedPorts != nil { + in, out := &in.NamedPorts, &out.NamedPorts + *out = make([]NamedPortsParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Scheme != nil { + in, out := &in.Scheme, &out.Scheme + *out = new(string) + **out = **in + } + if in.ServiceName != nil { + in, out := &in.ServiceName, &out.ServiceName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BackendServicesParameters. +func (in *BackendServicesParameters) DeepCopy() *BackendServicesParameters { + if in == nil { + return nil + } + out := new(BackendServicesParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterRollInitParameters) DeepCopyInto(out *ClusterRollInitParameters) { + *out = *in + if in.BatchMinHealthyPercentage != nil { + in, out := &in.BatchMinHealthyPercentage, &out.BatchMinHealthyPercentage + *out = new(float64) + **out = **in + } + if in.BatchSizePercentage != nil { + in, out := &in.BatchSizePercentage, &out.BatchSizePercentage + *out = new(float64) + **out = **in + } + if in.Comment != nil { + in, out := &in.Comment, &out.Comment + *out = new(string) + **out = **in + } + if in.RespectPdb != nil { + in, out := &in.RespectPdb, &out.RespectPdb + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRollInitParameters. +func (in *ClusterRollInitParameters) DeepCopy() *ClusterRollInitParameters { + if in == nil { + return nil + } + out := new(ClusterRollInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterRollObservation) DeepCopyInto(out *ClusterRollObservation) { + *out = *in + if in.BatchMinHealthyPercentage != nil { + in, out := &in.BatchMinHealthyPercentage, &out.BatchMinHealthyPercentage + *out = new(float64) + **out = **in + } + if in.BatchSizePercentage != nil { + in, out := &in.BatchSizePercentage, &out.BatchSizePercentage + *out = new(float64) + **out = **in + } + if in.Comment != nil { + in, out := &in.Comment, &out.Comment + *out = new(string) + **out = **in + } + if in.RespectPdb != nil { + in, out := &in.RespectPdb, &out.RespectPdb + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRollObservation. +func (in *ClusterRollObservation) DeepCopy() *ClusterRollObservation { + if in == nil { + return nil + } + out := new(ClusterRollObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterRollParameters) DeepCopyInto(out *ClusterRollParameters) { + *out = *in + if in.BatchMinHealthyPercentage != nil { + in, out := &in.BatchMinHealthyPercentage, &out.BatchMinHealthyPercentage + *out = new(float64) + **out = **in + } + if in.BatchSizePercentage != nil { + in, out := &in.BatchSizePercentage, &out.BatchSizePercentage + *out = new(float64) + **out = **in + } + if in.Comment != nil { + in, out := &in.Comment, &out.Comment + *out = new(string) + **out = **in + } + if in.RespectPdb != nil { + in, out := &in.RespectPdb, &out.RespectPdb + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRollParameters. +func (in *ClusterRollParameters) DeepCopy() *ClusterRollParameters { + if in == nil { + return nil + } + out := new(ClusterRollParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DownInitParameters) DeepCopyInto(out *DownInitParameters) { + *out = *in + if in.EvaluationPeriods != nil { + in, out := &in.EvaluationPeriods, &out.EvaluationPeriods + *out = new(float64) + **out = **in + } + if in.IsAggressiveScaleDownEnabled != nil { + in, out := &in.IsAggressiveScaleDownEnabled, &out.IsAggressiveScaleDownEnabled + *out = new(bool) + **out = **in + } + if in.MaxScaleDownPercentage != nil { + in, out := &in.MaxScaleDownPercentage, &out.MaxScaleDownPercentage + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DownInitParameters. +func (in *DownInitParameters) DeepCopy() *DownInitParameters { + if in == nil { + return nil + } + out := new(DownInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DownObservation) DeepCopyInto(out *DownObservation) { + *out = *in + if in.EvaluationPeriods != nil { + in, out := &in.EvaluationPeriods, &out.EvaluationPeriods + *out = new(float64) + **out = **in + } + if in.IsAggressiveScaleDownEnabled != nil { + in, out := &in.IsAggressiveScaleDownEnabled, &out.IsAggressiveScaleDownEnabled + *out = new(bool) + **out = **in + } + if in.MaxScaleDownPercentage != nil { + in, out := &in.MaxScaleDownPercentage, &out.MaxScaleDownPercentage + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DownObservation. +func (in *DownObservation) DeepCopy() *DownObservation { + if in == nil { + return nil + } + out := new(DownObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DownParameters) DeepCopyInto(out *DownParameters) { + *out = *in + if in.EvaluationPeriods != nil { + in, out := &in.EvaluationPeriods, &out.EvaluationPeriods + *out = new(float64) + **out = **in + } + if in.IsAggressiveScaleDownEnabled != nil { + in, out := &in.IsAggressiveScaleDownEnabled, &out.IsAggressiveScaleDownEnabled + *out = new(bool) + **out = **in + } + if in.MaxScaleDownPercentage != nil { + in, out := &in.MaxScaleDownPercentage, &out.MaxScaleDownPercentage + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DownParameters. +func (in *DownParameters) DeepCopy() *DownParameters { + if in == nil { + return nil + } + out := new(DownParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FiltersInitParameters) DeepCopyInto(out *FiltersInitParameters) { + *out = *in + if in.ExcludeFamilies != nil { + in, out := &in.ExcludeFamilies, &out.ExcludeFamilies + *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.IncludeFamilies != nil { + in, out := &in.IncludeFamilies, &out.IncludeFamilies + *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.MaxMemoryGib != nil { + in, out := &in.MaxMemoryGib, &out.MaxMemoryGib + *out = new(float64) + **out = **in + } + if in.MaxVcpu != nil { + in, out := &in.MaxVcpu, &out.MaxVcpu + *out = new(float64) + **out = **in + } + if in.MinMemoryGib != nil { + in, out := &in.MinMemoryGib, &out.MinMemoryGib + *out = new(float64) + **out = **in + } + if in.MinVcpu != nil { + in, out := &in.MinVcpu, &out.MinVcpu + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FiltersInitParameters. +func (in *FiltersInitParameters) DeepCopy() *FiltersInitParameters { + if in == nil { + return nil + } + out := new(FiltersInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FiltersObservation) DeepCopyInto(out *FiltersObservation) { + *out = *in + if in.ExcludeFamilies != nil { + in, out := &in.ExcludeFamilies, &out.ExcludeFamilies + *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.IncludeFamilies != nil { + in, out := &in.IncludeFamilies, &out.IncludeFamilies + *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.MaxMemoryGib != nil { + in, out := &in.MaxMemoryGib, &out.MaxMemoryGib + *out = new(float64) + **out = **in + } + if in.MaxVcpu != nil { + in, out := &in.MaxVcpu, &out.MaxVcpu + *out = new(float64) + **out = **in + } + if in.MinMemoryGib != nil { + in, out := &in.MinMemoryGib, &out.MinMemoryGib + *out = new(float64) + **out = **in + } + if in.MinVcpu != nil { + in, out := &in.MinVcpu, &out.MinVcpu + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FiltersObservation. +func (in *FiltersObservation) DeepCopy() *FiltersObservation { + if in == nil { + return nil + } + out := new(FiltersObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FiltersParameters) DeepCopyInto(out *FiltersParameters) { + *out = *in + if in.ExcludeFamilies != nil { + in, out := &in.ExcludeFamilies, &out.ExcludeFamilies + *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.IncludeFamilies != nil { + in, out := &in.IncludeFamilies, &out.IncludeFamilies + *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.MaxMemoryGib != nil { + in, out := &in.MaxMemoryGib, &out.MaxMemoryGib + *out = new(float64) + **out = **in + } + if in.MaxVcpu != nil { + in, out := &in.MaxVcpu, &out.MaxVcpu + *out = new(float64) + **out = **in + } + if in.MinMemoryGib != nil { + in, out := &in.MinMemoryGib, &out.MinMemoryGib + *out = new(float64) + **out = **in + } + if in.MinVcpu != nil { + in, out := &in.MinVcpu, &out.MinVcpu + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FiltersParameters. +func (in *FiltersParameters) DeepCopy() *FiltersParameters { + if in == nil { + return nil + } + out := new(FiltersParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HeadroomInitParameters) DeepCopyInto(out *HeadroomInitParameters) { + *out = *in + if in.CPUPerUnit != nil { + in, out := &in.CPUPerUnit, &out.CPUPerUnit + *out = new(float64) + **out = **in + } + if in.GpuPerUnit != nil { + in, out := &in.GpuPerUnit, &out.GpuPerUnit + *out = new(float64) + **out = **in + } + if in.MemoryPerUnit != nil { + in, out := &in.MemoryPerUnit, &out.MemoryPerUnit + *out = new(float64) + **out = **in + } + if in.NumOfUnits != nil { + in, out := &in.NumOfUnits, &out.NumOfUnits + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HeadroomInitParameters. +func (in *HeadroomInitParameters) DeepCopy() *HeadroomInitParameters { + if in == nil { + return nil + } + out := new(HeadroomInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HeadroomObservation) DeepCopyInto(out *HeadroomObservation) { + *out = *in + if in.CPUPerUnit != nil { + in, out := &in.CPUPerUnit, &out.CPUPerUnit + *out = new(float64) + **out = **in + } + if in.GpuPerUnit != nil { + in, out := &in.GpuPerUnit, &out.GpuPerUnit + *out = new(float64) + **out = **in + } + if in.MemoryPerUnit != nil { + in, out := &in.MemoryPerUnit, &out.MemoryPerUnit + *out = new(float64) + **out = **in + } + if in.NumOfUnits != nil { + in, out := &in.NumOfUnits, &out.NumOfUnits + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HeadroomObservation. +func (in *HeadroomObservation) DeepCopy() *HeadroomObservation { + if in == nil { + return nil + } + out := new(HeadroomObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HeadroomParameters) DeepCopyInto(out *HeadroomParameters) { + *out = *in + if in.CPUPerUnit != nil { + in, out := &in.CPUPerUnit, &out.CPUPerUnit + *out = new(float64) + **out = **in + } + if in.GpuPerUnit != nil { + in, out := &in.GpuPerUnit, &out.GpuPerUnit + *out = new(float64) + **out = **in + } + if in.MemoryPerUnit != nil { + in, out := &in.MemoryPerUnit, &out.MemoryPerUnit + *out = new(float64) + **out = **in + } + if in.NumOfUnits != nil { + in, out := &in.NumOfUnits, &out.NumOfUnits + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HeadroomParameters. +func (in *HeadroomParameters) DeepCopy() *HeadroomParameters { + if in == nil { + return nil + } + out := new(HeadroomParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NamedPortsInitParameters) DeepCopyInto(out *NamedPortsInitParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NamedPortsInitParameters. +func (in *NamedPortsInitParameters) DeepCopy() *NamedPortsInitParameters { + if in == nil { + return nil + } + out := new(NamedPortsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NamedPortsObservation) DeepCopyInto(out *NamedPortsObservation) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NamedPortsObservation. +func (in *NamedPortsObservation) DeepCopy() *NamedPortsObservation { + if in == nil { + return nil + } + out := new(NamedPortsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NamedPortsParameters) DeepCopyInto(out *NamedPortsParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NamedPortsParameters. +func (in *NamedPortsParameters) DeepCopy() *NamedPortsParameters { + if in == nil { + return nil + } + out := new(NamedPortsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OceanGke) DeepCopyInto(out *OceanGke) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OceanGke. +func (in *OceanGke) DeepCopy() *OceanGke { + if in == nil { + return nil + } + out := new(OceanGke) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *OceanGke) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OceanGkeInitParameters) DeepCopyInto(out *OceanGkeInitParameters) { + *out = *in + if in.Autoscaler != nil { + in, out := &in.Autoscaler, &out.Autoscaler + *out = make([]AutoscalerInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.BackendServices != nil { + in, out := &in.BackendServices, &out.BackendServices + *out = make([]BackendServicesInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Blacklist != nil { + in, out := &in.Blacklist, &out.Blacklist + *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.ClusterName != nil { + in, out := &in.ClusterName, &out.ClusterName + *out = new(string) + **out = **in + } + if in.ControllerClusterID != nil { + in, out := &in.ControllerClusterID, &out.ControllerClusterID + *out = new(string) + **out = **in + } + if in.DesiredCapacity != nil { + in, out := &in.DesiredCapacity, &out.DesiredCapacity + *out = new(float64) + **out = **in + } + if in.Filters != nil { + in, out := &in.Filters, &out.Filters + *out = make([]FiltersInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } + if in.MaxSize != nil { + in, out := &in.MaxSize, &out.MaxSize + *out = new(float64) + **out = **in + } + if in.MinSize != nil { + in, out := &in.MinSize, &out.MinSize + *out = new(float64) + **out = **in + } + if in.RootVolumeType != nil { + in, out := &in.RootVolumeType, &out.RootVolumeType + *out = new(string) + **out = **in + } + if in.ScheduledTask != nil { + in, out := &in.ScheduledTask, &out.ScheduledTask + *out = make([]ScheduledTaskInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ShieldedInstanceConfig != nil { + in, out := &in.ShieldedInstanceConfig, &out.ShieldedInstanceConfig + *out = make([]ShieldedInstanceConfigInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Strategy != nil { + in, out := &in.Strategy, &out.Strategy + *out = make([]StrategyInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.UpdatePolicy != nil { + in, out := &in.UpdatePolicy, &out.UpdatePolicy + *out = make([]UpdatePolicyInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.UseAsTemplateOnly != nil { + in, out := &in.UseAsTemplateOnly, &out.UseAsTemplateOnly + *out = new(bool) + **out = **in + } + if in.Whitelist != nil { + in, out := &in.Whitelist, &out.Whitelist + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OceanGkeInitParameters. +func (in *OceanGkeInitParameters) DeepCopy() *OceanGkeInitParameters { + if in == nil { + return nil + } + out := new(OceanGkeInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OceanGkeList) DeepCopyInto(out *OceanGkeList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]OceanGke, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OceanGkeList. +func (in *OceanGkeList) DeepCopy() *OceanGkeList { + if in == nil { + return nil + } + out := new(OceanGkeList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *OceanGkeList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OceanGkeObservation) DeepCopyInto(out *OceanGkeObservation) { + *out = *in + if in.Autoscaler != nil { + in, out := &in.Autoscaler, &out.Autoscaler + *out = make([]AutoscalerObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.BackendServices != nil { + in, out := &in.BackendServices, &out.BackendServices + *out = make([]BackendServicesObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Blacklist != nil { + in, out := &in.Blacklist, &out.Blacklist + *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.ClusterControllerID != nil { + in, out := &in.ClusterControllerID, &out.ClusterControllerID + *out = new(string) + **out = **in + } + if in.ClusterName != nil { + in, out := &in.ClusterName, &out.ClusterName + *out = new(string) + **out = **in + } + if in.ControllerClusterID != nil { + in, out := &in.ControllerClusterID, &out.ControllerClusterID + *out = new(string) + **out = **in + } + if in.DesiredCapacity != nil { + in, out := &in.DesiredCapacity, &out.DesiredCapacity + *out = new(float64) + **out = **in + } + if in.Filters != nil { + in, out := &in.Filters, &out.Filters + *out = make([]FiltersObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } + if in.MaxSize != nil { + in, out := &in.MaxSize, &out.MaxSize + *out = new(float64) + **out = **in + } + if in.MinSize != nil { + in, out := &in.MinSize, &out.MinSize + *out = new(float64) + **out = **in + } + if in.RootVolumeType != nil { + in, out := &in.RootVolumeType, &out.RootVolumeType + *out = new(string) + **out = **in + } + if in.ScheduledTask != nil { + in, out := &in.ScheduledTask, &out.ScheduledTask + *out = make([]ScheduledTaskObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ShieldedInstanceConfig != nil { + in, out := &in.ShieldedInstanceConfig, &out.ShieldedInstanceConfig + *out = make([]ShieldedInstanceConfigObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Strategy != nil { + in, out := &in.Strategy, &out.Strategy + *out = make([]StrategyObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.UpdatePolicy != nil { + in, out := &in.UpdatePolicy, &out.UpdatePolicy + *out = make([]UpdatePolicyObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.UseAsTemplateOnly != nil { + in, out := &in.UseAsTemplateOnly, &out.UseAsTemplateOnly + *out = new(bool) + **out = **in + } + if in.Whitelist != nil { + in, out := &in.Whitelist, &out.Whitelist + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OceanGkeObservation. +func (in *OceanGkeObservation) DeepCopy() *OceanGkeObservation { + if in == nil { + return nil + } + out := new(OceanGkeObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OceanGkeParameters) DeepCopyInto(out *OceanGkeParameters) { + *out = *in + if in.Autoscaler != nil { + in, out := &in.Autoscaler, &out.Autoscaler + *out = make([]AutoscalerParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.BackendServices != nil { + in, out := &in.BackendServices, &out.BackendServices + *out = make([]BackendServicesParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Blacklist != nil { + in, out := &in.Blacklist, &out.Blacklist + *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.ClusterName != nil { + in, out := &in.ClusterName, &out.ClusterName + *out = new(string) + **out = **in + } + if in.ControllerClusterID != nil { + in, out := &in.ControllerClusterID, &out.ControllerClusterID + *out = new(string) + **out = **in + } + if in.DesiredCapacity != nil { + in, out := &in.DesiredCapacity, &out.DesiredCapacity + *out = new(float64) + **out = **in + } + if in.Filters != nil { + in, out := &in.Filters, &out.Filters + *out = make([]FiltersParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } + if in.MaxSize != nil { + in, out := &in.MaxSize, &out.MaxSize + *out = new(float64) + **out = **in + } + if in.MinSize != nil { + in, out := &in.MinSize, &out.MinSize + *out = new(float64) + **out = **in + } + if in.RootVolumeType != nil { + in, out := &in.RootVolumeType, &out.RootVolumeType + *out = new(string) + **out = **in + } + if in.ScheduledTask != nil { + in, out := &in.ScheduledTask, &out.ScheduledTask + *out = make([]ScheduledTaskParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ShieldedInstanceConfig != nil { + in, out := &in.ShieldedInstanceConfig, &out.ShieldedInstanceConfig + *out = make([]ShieldedInstanceConfigParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Strategy != nil { + in, out := &in.Strategy, &out.Strategy + *out = make([]StrategyParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.UpdatePolicy != nil { + in, out := &in.UpdatePolicy, &out.UpdatePolicy + *out = make([]UpdatePolicyParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.UseAsTemplateOnly != nil { + in, out := &in.UseAsTemplateOnly, &out.UseAsTemplateOnly + *out = new(bool) + **out = **in + } + if in.Whitelist != nil { + in, out := &in.Whitelist, &out.Whitelist + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OceanGkeParameters. +func (in *OceanGkeParameters) DeepCopy() *OceanGkeParameters { + if in == nil { + return nil + } + out := new(OceanGkeParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OceanGkeSpec) DeepCopyInto(out *OceanGkeSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OceanGkeSpec. +func (in *OceanGkeSpec) DeepCopy() *OceanGkeSpec { + if in == nil { + return nil + } + out := new(OceanGkeSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OceanGkeStatus) DeepCopyInto(out *OceanGkeStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OceanGkeStatus. +func (in *OceanGkeStatus) DeepCopy() *OceanGkeStatus { + if in == nil { + return nil + } + out := new(OceanGkeStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceLimitsInitParameters) DeepCopyInto(out *ResourceLimitsInitParameters) { + *out = *in + if in.MaxMemoryGib != nil { + in, out := &in.MaxMemoryGib, &out.MaxMemoryGib + *out = new(float64) + **out = **in + } + if in.MaxVcpu != nil { + in, out := &in.MaxVcpu, &out.MaxVcpu + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceLimitsInitParameters. +func (in *ResourceLimitsInitParameters) DeepCopy() *ResourceLimitsInitParameters { + if in == nil { + return nil + } + out := new(ResourceLimitsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceLimitsObservation) DeepCopyInto(out *ResourceLimitsObservation) { + *out = *in + if in.MaxMemoryGib != nil { + in, out := &in.MaxMemoryGib, &out.MaxMemoryGib + *out = new(float64) + **out = **in + } + if in.MaxVcpu != nil { + in, out := &in.MaxVcpu, &out.MaxVcpu + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceLimitsObservation. +func (in *ResourceLimitsObservation) DeepCopy() *ResourceLimitsObservation { + if in == nil { + return nil + } + out := new(ResourceLimitsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceLimitsParameters) DeepCopyInto(out *ResourceLimitsParameters) { + *out = *in + if in.MaxMemoryGib != nil { + in, out := &in.MaxMemoryGib, &out.MaxMemoryGib + *out = new(float64) + **out = **in + } + if in.MaxVcpu != nil { + in, out := &in.MaxVcpu, &out.MaxVcpu + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceLimitsParameters. +func (in *ResourceLimitsParameters) DeepCopy() *ResourceLimitsParameters { + if in == nil { + return nil + } + out := new(ResourceLimitsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RollConfigInitParameters) DeepCopyInto(out *RollConfigInitParameters) { + *out = *in + if in.BatchMinHealthyPercentage != nil { + in, out := &in.BatchMinHealthyPercentage, &out.BatchMinHealthyPercentage + *out = new(float64) + **out = **in + } + if in.BatchSizePercentage != nil { + in, out := &in.BatchSizePercentage, &out.BatchSizePercentage + *out = new(float64) + **out = **in + } + if in.LaunchSpecIds != nil { + in, out := &in.LaunchSpecIds, &out.LaunchSpecIds + *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.RespectPdb != nil { + in, out := &in.RespectPdb, &out.RespectPdb + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RollConfigInitParameters. +func (in *RollConfigInitParameters) DeepCopy() *RollConfigInitParameters { + if in == nil { + return nil + } + out := new(RollConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RollConfigObservation) DeepCopyInto(out *RollConfigObservation) { + *out = *in + if in.BatchMinHealthyPercentage != nil { + in, out := &in.BatchMinHealthyPercentage, &out.BatchMinHealthyPercentage + *out = new(float64) + **out = **in + } + if in.BatchSizePercentage != nil { + in, out := &in.BatchSizePercentage, &out.BatchSizePercentage + *out = new(float64) + **out = **in + } + if in.LaunchSpecIds != nil { + in, out := &in.LaunchSpecIds, &out.LaunchSpecIds + *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.RespectPdb != nil { + in, out := &in.RespectPdb, &out.RespectPdb + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RollConfigObservation. +func (in *RollConfigObservation) DeepCopy() *RollConfigObservation { + if in == nil { + return nil + } + out := new(RollConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RollConfigParameters) DeepCopyInto(out *RollConfigParameters) { + *out = *in + if in.BatchMinHealthyPercentage != nil { + in, out := &in.BatchMinHealthyPercentage, &out.BatchMinHealthyPercentage + *out = new(float64) + **out = **in + } + if in.BatchSizePercentage != nil { + in, out := &in.BatchSizePercentage, &out.BatchSizePercentage + *out = new(float64) + **out = **in + } + if in.LaunchSpecIds != nil { + in, out := &in.LaunchSpecIds, &out.LaunchSpecIds + *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.RespectPdb != nil { + in, out := &in.RespectPdb, &out.RespectPdb + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RollConfigParameters. +func (in *RollConfigParameters) DeepCopy() *RollConfigParameters { + if in == nil { + return nil + } + out := new(RollConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ScheduledTaskInitParameters) DeepCopyInto(out *ScheduledTaskInitParameters) { + *out = *in + if in.ShutdownHours != nil { + in, out := &in.ShutdownHours, &out.ShutdownHours + *out = make([]ShutdownHoursInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Tasks != nil { + in, out := &in.Tasks, &out.Tasks + *out = make([]TasksInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScheduledTaskInitParameters. +func (in *ScheduledTaskInitParameters) DeepCopy() *ScheduledTaskInitParameters { + if in == nil { + return nil + } + out := new(ScheduledTaskInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ScheduledTaskObservation) DeepCopyInto(out *ScheduledTaskObservation) { + *out = *in + if in.ShutdownHours != nil { + in, out := &in.ShutdownHours, &out.ShutdownHours + *out = make([]ShutdownHoursObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Tasks != nil { + in, out := &in.Tasks, &out.Tasks + *out = make([]TasksObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScheduledTaskObservation. +func (in *ScheduledTaskObservation) DeepCopy() *ScheduledTaskObservation { + if in == nil { + return nil + } + out := new(ScheduledTaskObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ScheduledTaskParameters) DeepCopyInto(out *ScheduledTaskParameters) { + *out = *in + if in.ShutdownHours != nil { + in, out := &in.ShutdownHours, &out.ShutdownHours + *out = make([]ShutdownHoursParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Tasks != nil { + in, out := &in.Tasks, &out.Tasks + *out = make([]TasksParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScheduledTaskParameters. +func (in *ScheduledTaskParameters) DeepCopy() *ScheduledTaskParameters { + if in == nil { + return nil + } + out := new(ScheduledTaskParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ShieldedInstanceConfigInitParameters) DeepCopyInto(out *ShieldedInstanceConfigInitParameters) { + *out = *in + if in.EnableIntegrityMonitoring != nil { + in, out := &in.EnableIntegrityMonitoring, &out.EnableIntegrityMonitoring + *out = new(bool) + **out = **in + } + if in.EnableSecureBoot != nil { + in, out := &in.EnableSecureBoot, &out.EnableSecureBoot + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShieldedInstanceConfigInitParameters. +func (in *ShieldedInstanceConfigInitParameters) DeepCopy() *ShieldedInstanceConfigInitParameters { + if in == nil { + return nil + } + out := new(ShieldedInstanceConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ShieldedInstanceConfigObservation) DeepCopyInto(out *ShieldedInstanceConfigObservation) { + *out = *in + if in.EnableIntegrityMonitoring != nil { + in, out := &in.EnableIntegrityMonitoring, &out.EnableIntegrityMonitoring + *out = new(bool) + **out = **in + } + if in.EnableSecureBoot != nil { + in, out := &in.EnableSecureBoot, &out.EnableSecureBoot + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShieldedInstanceConfigObservation. +func (in *ShieldedInstanceConfigObservation) DeepCopy() *ShieldedInstanceConfigObservation { + if in == nil { + return nil + } + out := new(ShieldedInstanceConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ShieldedInstanceConfigParameters) DeepCopyInto(out *ShieldedInstanceConfigParameters) { + *out = *in + if in.EnableIntegrityMonitoring != nil { + in, out := &in.EnableIntegrityMonitoring, &out.EnableIntegrityMonitoring + *out = new(bool) + **out = **in + } + if in.EnableSecureBoot != nil { + in, out := &in.EnableSecureBoot, &out.EnableSecureBoot + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShieldedInstanceConfigParameters. +func (in *ShieldedInstanceConfigParameters) DeepCopy() *ShieldedInstanceConfigParameters { + if in == nil { + return nil + } + out := new(ShieldedInstanceConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ShutdownHoursInitParameters) DeepCopyInto(out *ShutdownHoursInitParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.TimeWindows != nil { + in, out := &in.TimeWindows, &out.TimeWindows + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShutdownHoursInitParameters. +func (in *ShutdownHoursInitParameters) DeepCopy() *ShutdownHoursInitParameters { + if in == nil { + return nil + } + out := new(ShutdownHoursInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ShutdownHoursObservation) DeepCopyInto(out *ShutdownHoursObservation) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.TimeWindows != nil { + in, out := &in.TimeWindows, &out.TimeWindows + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShutdownHoursObservation. +func (in *ShutdownHoursObservation) DeepCopy() *ShutdownHoursObservation { + if in == nil { + return nil + } + out := new(ShutdownHoursObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ShutdownHoursParameters) DeepCopyInto(out *ShutdownHoursParameters) { + *out = *in + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.TimeWindows != nil { + in, out := &in.TimeWindows, &out.TimeWindows + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShutdownHoursParameters. +func (in *ShutdownHoursParameters) DeepCopy() *ShutdownHoursParameters { + if in == nil { + return nil + } + out := new(ShutdownHoursParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StrategyInitParameters) DeepCopyInto(out *StrategyInitParameters) { + *out = *in + if in.DrainingTimeout != nil { + in, out := &in.DrainingTimeout, &out.DrainingTimeout + *out = new(float64) + **out = **in + } + if in.PreemptiblePercentage != nil { + in, out := &in.PreemptiblePercentage, &out.PreemptiblePercentage + *out = new(float64) + **out = **in + } + if in.ProvisioningModel != nil { + in, out := &in.ProvisioningModel, &out.ProvisioningModel + *out = new(string) + **out = **in + } + if in.ShouldUtilizeCommitments != nil { + in, out := &in.ShouldUtilizeCommitments, &out.ShouldUtilizeCommitments + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StrategyInitParameters. +func (in *StrategyInitParameters) DeepCopy() *StrategyInitParameters { + if in == nil { + return nil + } + out := new(StrategyInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StrategyObservation) DeepCopyInto(out *StrategyObservation) { + *out = *in + if in.DrainingTimeout != nil { + in, out := &in.DrainingTimeout, &out.DrainingTimeout + *out = new(float64) + **out = **in + } + if in.PreemptiblePercentage != nil { + in, out := &in.PreemptiblePercentage, &out.PreemptiblePercentage + *out = new(float64) + **out = **in + } + if in.ProvisioningModel != nil { + in, out := &in.ProvisioningModel, &out.ProvisioningModel + *out = new(string) + **out = **in + } + if in.ShouldUtilizeCommitments != nil { + in, out := &in.ShouldUtilizeCommitments, &out.ShouldUtilizeCommitments + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StrategyObservation. +func (in *StrategyObservation) DeepCopy() *StrategyObservation { + if in == nil { + return nil + } + out := new(StrategyObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StrategyParameters) DeepCopyInto(out *StrategyParameters) { + *out = *in + if in.DrainingTimeout != nil { + in, out := &in.DrainingTimeout, &out.DrainingTimeout + *out = new(float64) + **out = **in + } + if in.PreemptiblePercentage != nil { + in, out := &in.PreemptiblePercentage, &out.PreemptiblePercentage + *out = new(float64) + **out = **in + } + if in.ProvisioningModel != nil { + in, out := &in.ProvisioningModel, &out.ProvisioningModel + *out = new(string) + **out = **in + } + if in.ShouldUtilizeCommitments != nil { + in, out := &in.ShouldUtilizeCommitments, &out.ShouldUtilizeCommitments + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StrategyParameters. +func (in *StrategyParameters) DeepCopy() *StrategyParameters { + if in == nil { + return nil + } + out := new(StrategyParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TaskParametersInitParameters) DeepCopyInto(out *TaskParametersInitParameters) { + *out = *in + if in.ClusterRoll != nil { + in, out := &in.ClusterRoll, &out.ClusterRoll + *out = make([]ClusterRollInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TaskParametersInitParameters. +func (in *TaskParametersInitParameters) DeepCopy() *TaskParametersInitParameters { + if in == nil { + return nil + } + out := new(TaskParametersInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TaskParametersObservation) DeepCopyInto(out *TaskParametersObservation) { + *out = *in + if in.ClusterRoll != nil { + in, out := &in.ClusterRoll, &out.ClusterRoll + *out = make([]ClusterRollObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TaskParametersObservation. +func (in *TaskParametersObservation) DeepCopy() *TaskParametersObservation { + if in == nil { + return nil + } + out := new(TaskParametersObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TaskParametersParameters) DeepCopyInto(out *TaskParametersParameters) { + *out = *in + if in.ClusterRoll != nil { + in, out := &in.ClusterRoll, &out.ClusterRoll + *out = make([]ClusterRollParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TaskParametersParameters. +func (in *TaskParametersParameters) DeepCopy() *TaskParametersParameters { + if in == nil { + return nil + } + out := new(TaskParametersParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TasksInitParameters) DeepCopyInto(out *TasksInitParameters) { + *out = *in + if in.CronExpression != nil { + in, out := &in.CronExpression, &out.CronExpression + *out = new(string) + **out = **in + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.TaskParameters != nil { + in, out := &in.TaskParameters, &out.TaskParameters + *out = make([]TaskParametersInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.TaskType != nil { + in, out := &in.TaskType, &out.TaskType + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TasksInitParameters. +func (in *TasksInitParameters) DeepCopy() *TasksInitParameters { + if in == nil { + return nil + } + out := new(TasksInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TasksObservation) DeepCopyInto(out *TasksObservation) { + *out = *in + if in.CronExpression != nil { + in, out := &in.CronExpression, &out.CronExpression + *out = new(string) + **out = **in + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.TaskParameters != nil { + in, out := &in.TaskParameters, &out.TaskParameters + *out = make([]TaskParametersObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.TaskType != nil { + in, out := &in.TaskType, &out.TaskType + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TasksObservation. +func (in *TasksObservation) DeepCopy() *TasksObservation { + if in == nil { + return nil + } + out := new(TasksObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TasksParameters) DeepCopyInto(out *TasksParameters) { + *out = *in + if in.CronExpression != nil { + in, out := &in.CronExpression, &out.CronExpression + *out = new(string) + **out = **in + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.TaskParameters != nil { + in, out := &in.TaskParameters, &out.TaskParameters + *out = make([]TaskParametersParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.TaskType != nil { + in, out := &in.TaskType, &out.TaskType + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TasksParameters. +func (in *TasksParameters) DeepCopy() *TasksParameters { + if in == nil { + return nil + } + out := new(TasksParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UpdatePolicyInitParameters) DeepCopyInto(out *UpdatePolicyInitParameters) { + *out = *in + if in.ConditionedRoll != nil { + in, out := &in.ConditionedRoll, &out.ConditionedRoll + *out = new(bool) + **out = **in + } + if in.RollConfig != nil { + in, out := &in.RollConfig, &out.RollConfig + *out = make([]RollConfigInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ShouldRoll != nil { + in, out := &in.ShouldRoll, &out.ShouldRoll + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UpdatePolicyInitParameters. +func (in *UpdatePolicyInitParameters) DeepCopy() *UpdatePolicyInitParameters { + if in == nil { + return nil + } + out := new(UpdatePolicyInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UpdatePolicyObservation) DeepCopyInto(out *UpdatePolicyObservation) { + *out = *in + if in.ConditionedRoll != nil { + in, out := &in.ConditionedRoll, &out.ConditionedRoll + *out = new(bool) + **out = **in + } + if in.RollConfig != nil { + in, out := &in.RollConfig, &out.RollConfig + *out = make([]RollConfigObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ShouldRoll != nil { + in, out := &in.ShouldRoll, &out.ShouldRoll + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UpdatePolicyObservation. +func (in *UpdatePolicyObservation) DeepCopy() *UpdatePolicyObservation { + if in == nil { + return nil + } + out := new(UpdatePolicyObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UpdatePolicyParameters) DeepCopyInto(out *UpdatePolicyParameters) { + *out = *in + if in.ConditionedRoll != nil { + in, out := &in.ConditionedRoll, &out.ConditionedRoll + *out = new(bool) + **out = **in + } + if in.RollConfig != nil { + in, out := &in.RollConfig, &out.RollConfig + *out = make([]RollConfigParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ShouldRoll != nil { + in, out := &in.ShouldRoll, &out.ShouldRoll + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UpdatePolicyParameters. +func (in *UpdatePolicyParameters) DeepCopy() *UpdatePolicyParameters { + if in == nil { + return nil + } + out := new(UpdatePolicyParameters) + in.DeepCopyInto(out) + return out +} diff --git a/apis/oceangke/v1alpha1/zz_generated.managed.go b/apis/oceangke/v1alpha1/zz_generated.managed.go new file mode 100644 index 0000000..2782629 --- /dev/null +++ b/apis/oceangke/v1alpha1/zz_generated.managed.go @@ -0,0 +1,69 @@ +// SPDX-FileCopyrightText: 2024 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +// Code generated by angryjet. DO NOT EDIT. + +package v1alpha1 + +import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" + +// GetCondition of this OceanGke. +func (mg *OceanGke) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this OceanGke. +func (mg *OceanGke) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this OceanGke. +func (mg *OceanGke) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this OceanGke. +func (mg *OceanGke) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this OceanGke. +func (mg *OceanGke) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this OceanGke. +func (mg *OceanGke) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this OceanGke. +func (mg *OceanGke) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this OceanGke. +func (mg *OceanGke) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this OceanGke. +func (mg *OceanGke) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this OceanGke. +func (mg *OceanGke) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this OceanGke. +func (mg *OceanGke) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this OceanGke. +func (mg *OceanGke) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} diff --git a/apis/oceangke/v1alpha1/zz_generated.managedlist.go b/apis/oceangke/v1alpha1/zz_generated.managedlist.go new file mode 100644 index 0000000..7c794a5 --- /dev/null +++ b/apis/oceangke/v1alpha1/zz_generated.managedlist.go @@ -0,0 +1,18 @@ +// SPDX-FileCopyrightText: 2024 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +// Code generated by angryjet. DO NOT EDIT. + +package v1alpha1 + +import resource "github.com/crossplane/crossplane-runtime/pkg/resource" + +// GetItems of this OceanGkeList. +func (l *OceanGkeList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} diff --git a/apis/oceangke/v1alpha1/zz_groupversion_info.go b/apis/oceangke/v1alpha1/zz_groupversion_info.go new file mode 100755 index 0000000..20b93c9 --- /dev/null +++ b/apis/oceangke/v1alpha1/zz_groupversion_info.go @@ -0,0 +1,32 @@ +// SPDX-FileCopyrightText: 2024 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +// Code generated by upjet. DO NOT EDIT. + +// +kubebuilder:object:generate=true +// +groupName=oceangke.spot.upbound.io +// +versionName=v1alpha1 +package v1alpha1 + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +// Package type metadata. +const ( + CRDGroup = "oceangke.spot.upbound.io" + CRDVersion = "v1alpha1" +) + +var ( + // CRDGroupVersion is the API Group Version used to register the objects + CRDGroupVersion = schema.GroupVersion{Group: CRDGroup, Version: CRDVersion} + + // SchemeBuilder is used to add go types to the GroupVersionKind scheme + SchemeBuilder = &scheme.Builder{GroupVersion: CRDGroupVersion} + + // AddToScheme adds the types in this group-version to the given scheme. + AddToScheme = SchemeBuilder.AddToScheme +) diff --git a/apis/oceangke/v1alpha1/zz_oceangke_terraformed.go b/apis/oceangke/v1alpha1/zz_oceangke_terraformed.go new file mode 100755 index 0000000..0ed345d --- /dev/null +++ b/apis/oceangke/v1alpha1/zz_oceangke_terraformed.go @@ -0,0 +1,129 @@ +// SPDX-FileCopyrightText: 2024 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this OceanGke +func (mg *OceanGke) GetTerraformResourceType() string { + return "spotinst_ocean_gke_import" +} + +// GetConnectionDetailsMapping for this OceanGke +func (tr *OceanGke) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this OceanGke +func (tr *OceanGke) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this OceanGke +func (tr *OceanGke) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this OceanGke +func (tr *OceanGke) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this OceanGke +func (tr *OceanGke) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this OceanGke +func (tr *OceanGke) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this OceanGke +func (tr *OceanGke) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this OceanGke +func (tr *OceanGke) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this OceanGke using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *OceanGke) LateInitialize(attrs []byte) (bool, error) { + params := &OceanGkeParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *OceanGke) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/oceangke/v1alpha1/zz_oceangke_types.go b/apis/oceangke/v1alpha1/zz_oceangke_types.go new file mode 100755 index 0000000..6c3cac2 --- /dev/null +++ b/apis/oceangke/v1alpha1/zz_oceangke_types.go @@ -0,0 +1,975 @@ +// SPDX-FileCopyrightText: 2024 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type AutoscalerInitParameters struct { + + // Optionally set the auto headroom percentage, set a number between 0-200 to control the headroom % from the cluster. Relevant when isAutoConfig=true. + AutoHeadroomPercentage *float64 `json:"autoHeadroomPercentage,omitempty" tf:"auto_headroom_percentage,omitempty"` + + // Cooldown period between scaling actions. + Cooldown *float64 `json:"cooldown,omitempty" tf:"cooldown,omitempty"` + + // Auto Scaling scale down operations. + Down []DownInitParameters `json:"down,omitempty" tf:"down,omitempty"` + + // enables automatic and manual headroom to work in parallel. When set to false, automatic headroom overrides all other headroom definitions manually configured, whether they are at cluster or VNG level. + EnableAutomaticAndManualHeadroom *bool `json:"enableAutomaticAndManualHeadroom,omitempty" tf:"enable_automatic_and_manual_headroom,omitempty"` + + // Spare resource capacity management enabling fast assignment of Pods without waiting for new resources to launch. + Headroom []HeadroomInitParameters `json:"headroom,omitempty" tf:"headroom,omitempty"` + + // Automatically configure and optimize headroom resources. + IsAutoConfig *bool `json:"isAutoConfig,omitempty" tf:"is_auto_config,omitempty"` + + // Flag to enable / disable the shutdown hours. + // Example: true + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // Optionally set upper and lower bounds on the resource usage of the cluster. + ResourceLimits []ResourceLimitsInitParameters `json:"resourceLimits,omitempty" tf:"resource_limits,omitempty"` +} + +type AutoscalerObservation struct { + + // Optionally set the auto headroom percentage, set a number between 0-200 to control the headroom % from the cluster. Relevant when isAutoConfig=true. + AutoHeadroomPercentage *float64 `json:"autoHeadroomPercentage,omitempty" tf:"auto_headroom_percentage,omitempty"` + + // Cooldown period between scaling actions. + Cooldown *float64 `json:"cooldown,omitempty" tf:"cooldown,omitempty"` + + // Auto Scaling scale down operations. + Down []DownObservation `json:"down,omitempty" tf:"down,omitempty"` + + // enables automatic and manual headroom to work in parallel. When set to false, automatic headroom overrides all other headroom definitions manually configured, whether they are at cluster or VNG level. + EnableAutomaticAndManualHeadroom *bool `json:"enableAutomaticAndManualHeadroom,omitempty" tf:"enable_automatic_and_manual_headroom,omitempty"` + + // Spare resource capacity management enabling fast assignment of Pods without waiting for new resources to launch. + Headroom []HeadroomObservation `json:"headroom,omitempty" tf:"headroom,omitempty"` + + // Automatically configure and optimize headroom resources. + IsAutoConfig *bool `json:"isAutoConfig,omitempty" tf:"is_auto_config,omitempty"` + + // Flag to enable / disable the shutdown hours. + // Example: true + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // Optionally set upper and lower bounds on the resource usage of the cluster. + ResourceLimits []ResourceLimitsObservation `json:"resourceLimits,omitempty" tf:"resource_limits,omitempty"` +} + +type AutoscalerParameters struct { + + // Optionally set the auto headroom percentage, set a number between 0-200 to control the headroom % from the cluster. Relevant when isAutoConfig=true. + // +kubebuilder:validation:Optional + AutoHeadroomPercentage *float64 `json:"autoHeadroomPercentage,omitempty" tf:"auto_headroom_percentage,omitempty"` + + // Cooldown period between scaling actions. + // +kubebuilder:validation:Optional + Cooldown *float64 `json:"cooldown,omitempty" tf:"cooldown,omitempty"` + + // Auto Scaling scale down operations. + // +kubebuilder:validation:Optional + Down []DownParameters `json:"down,omitempty" tf:"down,omitempty"` + + // enables automatic and manual headroom to work in parallel. When set to false, automatic headroom overrides all other headroom definitions manually configured, whether they are at cluster or VNG level. + // +kubebuilder:validation:Optional + EnableAutomaticAndManualHeadroom *bool `json:"enableAutomaticAndManualHeadroom,omitempty" tf:"enable_automatic_and_manual_headroom,omitempty"` + + // Spare resource capacity management enabling fast assignment of Pods without waiting for new resources to launch. + // +kubebuilder:validation:Optional + Headroom []HeadroomParameters `json:"headroom,omitempty" tf:"headroom,omitempty"` + + // Automatically configure and optimize headroom resources. + // +kubebuilder:validation:Optional + IsAutoConfig *bool `json:"isAutoConfig,omitempty" tf:"is_auto_config,omitempty"` + + // Flag to enable / disable the shutdown hours. + // Example: true + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // Optionally set upper and lower bounds on the resource usage of the cluster. + // +kubebuilder:validation:Optional + ResourceLimits []ResourceLimitsParameters `json:"resourceLimits,omitempty" tf:"resource_limits,omitempty"` +} + +type BackendServicesInitParameters struct { + + // Sets which location the backend services will be active. Valid values: regional, global. + LocationType *string `json:"locationType,omitempty" tf:"location_type,omitempty"` + + // A list of ports. + NamedPorts []NamedPortsInitParameters `json:"namedPorts,omitempty" tf:"named_ports,omitempty"` + + // Use when location_type is regional. Set the traffic for the backend service to either between the instances in the vpc or to traffic from the internet. Valid values: INTERNAL, EXTERNAL. + Scheme *string `json:"scheme,omitempty" tf:"scheme,omitempty"` + + // The name of the backend service. + ServiceName *string `json:"serviceName,omitempty" tf:"service_name,omitempty"` +} + +type BackendServicesObservation struct { + + // Sets which location the backend services will be active. Valid values: regional, global. + LocationType *string `json:"locationType,omitempty" tf:"location_type,omitempty"` + + // A list of ports. + NamedPorts []NamedPortsObservation `json:"namedPorts,omitempty" tf:"named_ports,omitempty"` + + // Use when location_type is regional. Set the traffic for the backend service to either between the instances in the vpc or to traffic from the internet. Valid values: INTERNAL, EXTERNAL. + Scheme *string `json:"scheme,omitempty" tf:"scheme,omitempty"` + + // The name of the backend service. + ServiceName *string `json:"serviceName,omitempty" tf:"service_name,omitempty"` +} + +type BackendServicesParameters struct { + + // Sets which location the backend services will be active. Valid values: regional, global. + // +kubebuilder:validation:Optional + LocationType *string `json:"locationType,omitempty" tf:"location_type,omitempty"` + + // A list of ports. + // +kubebuilder:validation:Optional + NamedPorts []NamedPortsParameters `json:"namedPorts,omitempty" tf:"named_ports,omitempty"` + + // Use when location_type is regional. Set the traffic for the backend service to either between the instances in the vpc or to traffic from the internet. Valid values: INTERNAL, EXTERNAL. + // +kubebuilder:validation:Optional + Scheme *string `json:"scheme,omitempty" tf:"scheme,omitempty"` + + // The name of the backend service. + // +kubebuilder:validation:Optional + ServiceName *string `json:"serviceName" tf:"service_name,omitempty"` +} + +type ClusterRollInitParameters struct { + + // Indicates the threshold of minimum healthy instances in single batch. If the amount of healthy instances in single batch is under the threshold, the cluster roll will fail. If exists, the parameter value will be in range of 1-100. In case of null as value, the default value in the backend will be 50%. Value of param should represent the number in percentage (%) of the batch. + BatchMinHealthyPercentage *float64 `json:"batchMinHealthyPercentage,omitempty" tf:"batch_min_healthy_percentage,omitempty"` + + // Value in % to set size of batch in roll. Valid values are 0-100 + // Example: 20. + BatchSizePercentage *float64 `json:"batchSizePercentage,omitempty" tf:"batch_size_percentage,omitempty"` + + // Add a comment description for the roll. The comment is limited to 256 chars. + Comment *string `json:"comment,omitempty" tf:"comment,omitempty"` + + // During the roll, if the parameter is set to true we honor PDB during the instance replacement. + RespectPdb *bool `json:"respectPdb,omitempty" tf:"respect_pdb,omitempty"` +} + +type ClusterRollObservation struct { + + // Indicates the threshold of minimum healthy instances in single batch. If the amount of healthy instances in single batch is under the threshold, the cluster roll will fail. If exists, the parameter value will be in range of 1-100. In case of null as value, the default value in the backend will be 50%. Value of param should represent the number in percentage (%) of the batch. + BatchMinHealthyPercentage *float64 `json:"batchMinHealthyPercentage,omitempty" tf:"batch_min_healthy_percentage,omitempty"` + + // Value in % to set size of batch in roll. Valid values are 0-100 + // Example: 20. + BatchSizePercentage *float64 `json:"batchSizePercentage,omitempty" tf:"batch_size_percentage,omitempty"` + + // Add a comment description for the roll. The comment is limited to 256 chars. + Comment *string `json:"comment,omitempty" tf:"comment,omitempty"` + + // During the roll, if the parameter is set to true we honor PDB during the instance replacement. + RespectPdb *bool `json:"respectPdb,omitempty" tf:"respect_pdb,omitempty"` +} + +type ClusterRollParameters struct { + + // Indicates the threshold of minimum healthy instances in single batch. If the amount of healthy instances in single batch is under the threshold, the cluster roll will fail. If exists, the parameter value will be in range of 1-100. In case of null as value, the default value in the backend will be 50%. Value of param should represent the number in percentage (%) of the batch. + // +kubebuilder:validation:Optional + BatchMinHealthyPercentage *float64 `json:"batchMinHealthyPercentage,omitempty" tf:"batch_min_healthy_percentage,omitempty"` + + // Value in % to set size of batch in roll. Valid values are 0-100 + // Example: 20. + // +kubebuilder:validation:Optional + BatchSizePercentage *float64 `json:"batchSizePercentage,omitempty" tf:"batch_size_percentage,omitempty"` + + // Add a comment description for the roll. The comment is limited to 256 chars. + // +kubebuilder:validation:Optional + Comment *string `json:"comment,omitempty" tf:"comment,omitempty"` + + // During the roll, if the parameter is set to true we honor PDB during the instance replacement. + // +kubebuilder:validation:Optional + RespectPdb *bool `json:"respectPdb,omitempty" tf:"respect_pdb,omitempty"` +} + +type DownInitParameters struct { + + // The number of evaluation periods that should accumulate before a scale down action takes place. + EvaluationPeriods *float64 `json:"evaluationPeriods,omitempty" tf:"evaluation_periods,omitempty"` + + // When set to 'true', the Aggressive Scale Down feature is enabled. + IsAggressiveScaleDownEnabled *bool `json:"isAggressiveScaleDownEnabled,omitempty" tf:"is_aggressive_scale_down_enabled,omitempty"` + + // Would represent the maximum % to scale-down. Number between 1-100. + MaxScaleDownPercentage *float64 `json:"maxScaleDownPercentage,omitempty" tf:"max_scale_down_percentage,omitempty"` +} + +type DownObservation struct { + + // The number of evaluation periods that should accumulate before a scale down action takes place. + EvaluationPeriods *float64 `json:"evaluationPeriods,omitempty" tf:"evaluation_periods,omitempty"` + + // When set to 'true', the Aggressive Scale Down feature is enabled. + IsAggressiveScaleDownEnabled *bool `json:"isAggressiveScaleDownEnabled,omitempty" tf:"is_aggressive_scale_down_enabled,omitempty"` + + // Would represent the maximum % to scale-down. Number between 1-100. + MaxScaleDownPercentage *float64 `json:"maxScaleDownPercentage,omitempty" tf:"max_scale_down_percentage,omitempty"` +} + +type DownParameters struct { + + // The number of evaluation periods that should accumulate before a scale down action takes place. + // +kubebuilder:validation:Optional + EvaluationPeriods *float64 `json:"evaluationPeriods,omitempty" tf:"evaluation_periods,omitempty"` + + // When set to 'true', the Aggressive Scale Down feature is enabled. + // +kubebuilder:validation:Optional + IsAggressiveScaleDownEnabled *bool `json:"isAggressiveScaleDownEnabled,omitempty" tf:"is_aggressive_scale_down_enabled,omitempty"` + + // Would represent the maximum % to scale-down. Number between 1-100. + // +kubebuilder:validation:Optional + MaxScaleDownPercentage *float64 `json:"maxScaleDownPercentage,omitempty" tf:"max_scale_down_percentage,omitempty"` +} + +type FiltersInitParameters struct { + + // Types belonging to a family from the ExcludeFamilies will not be available for scaling (asterisk wildcard is also supported). For example, C* will exclude instance types from these families: c5, c4, c4a, etc. + // +listType=set + ExcludeFamilies []*string `json:"excludeFamilies,omitempty" tf:"exclude_families,omitempty"` + + // Types belonging to a family from the IncludeFamilies will be available for scaling (asterisk wildcard is also supported). For example, C* will include instance types from these families: c5, c4, c4a, etc. + // +listType=set + IncludeFamilies []*string `json:"includeFamilies,omitempty" tf:"include_families,omitempty"` + + // Maximum amount of Memory (GiB). + MaxMemoryGib *float64 `json:"maxMemoryGib,omitempty" tf:"max_memory_gib,omitempty"` + + // Maximum number of vcpus available. + MaxVcpu *float64 `json:"maxVcpu,omitempty" tf:"max_vcpu,omitempty"` + + // Minimum amount of Memory (GiB). + MinMemoryGib *float64 `json:"minMemoryGib,omitempty" tf:"min_memory_gib,omitempty"` + + // Minimum number of vcpus available. + MinVcpu *float64 `json:"minVcpu,omitempty" tf:"min_vcpu,omitempty"` +} + +type FiltersObservation struct { + + // Types belonging to a family from the ExcludeFamilies will not be available for scaling (asterisk wildcard is also supported). For example, C* will exclude instance types from these families: c5, c4, c4a, etc. + // +listType=set + ExcludeFamilies []*string `json:"excludeFamilies,omitempty" tf:"exclude_families,omitempty"` + + // Types belonging to a family from the IncludeFamilies will be available for scaling (asterisk wildcard is also supported). For example, C* will include instance types from these families: c5, c4, c4a, etc. + // +listType=set + IncludeFamilies []*string `json:"includeFamilies,omitempty" tf:"include_families,omitempty"` + + // Maximum amount of Memory (GiB). + MaxMemoryGib *float64 `json:"maxMemoryGib,omitempty" tf:"max_memory_gib,omitempty"` + + // Maximum number of vcpus available. + MaxVcpu *float64 `json:"maxVcpu,omitempty" tf:"max_vcpu,omitempty"` + + // Minimum amount of Memory (GiB). + MinMemoryGib *float64 `json:"minMemoryGib,omitempty" tf:"min_memory_gib,omitempty"` + + // Minimum number of vcpus available. + MinVcpu *float64 `json:"minVcpu,omitempty" tf:"min_vcpu,omitempty"` +} + +type FiltersParameters struct { + + // Types belonging to a family from the ExcludeFamilies will not be available for scaling (asterisk wildcard is also supported). For example, C* will exclude instance types from these families: c5, c4, c4a, etc. + // +kubebuilder:validation:Optional + // +listType=set + ExcludeFamilies []*string `json:"excludeFamilies,omitempty" tf:"exclude_families,omitempty"` + + // Types belonging to a family from the IncludeFamilies will be available for scaling (asterisk wildcard is also supported). For example, C* will include instance types from these families: c5, c4, c4a, etc. + // +kubebuilder:validation:Optional + // +listType=set + IncludeFamilies []*string `json:"includeFamilies,omitempty" tf:"include_families,omitempty"` + + // Maximum amount of Memory (GiB). + // +kubebuilder:validation:Optional + MaxMemoryGib *float64 `json:"maxMemoryGib,omitempty" tf:"max_memory_gib,omitempty"` + + // Maximum number of vcpus available. + // +kubebuilder:validation:Optional + MaxVcpu *float64 `json:"maxVcpu,omitempty" tf:"max_vcpu,omitempty"` + + // Minimum amount of Memory (GiB). + // +kubebuilder:validation:Optional + MinMemoryGib *float64 `json:"minMemoryGib,omitempty" tf:"min_memory_gib,omitempty"` + + // Minimum number of vcpus available. + // +kubebuilder:validation:Optional + MinVcpu *float64 `json:"minVcpu,omitempty" tf:"min_vcpu,omitempty"` +} + +type HeadroomInitParameters struct { + + // Optionally configure the number of CPUs to allocate the headroom. CPUs are denoted in millicores, where 1000 millicores = 1 vCPU. + CPUPerUnit *float64 `json:"cpuPerUnit,omitempty" tf:"cpu_per_unit,omitempty"` + + // How much GPU allocate for headroom unit. + GpuPerUnit *float64 `json:"gpuPerUnit,omitempty" tf:"gpu_per_unit,omitempty"` + + // Optionally configure the amount of memory (MiB) to allocate the headroom. + MemoryPerUnit *float64 `json:"memoryPerUnit,omitempty" tf:"memory_per_unit,omitempty"` + + // The number of units to retain as headroom, where each unit has the defined headroom CPU and memory. + NumOfUnits *float64 `json:"numOfUnits,omitempty" tf:"num_of_units,omitempty"` +} + +type HeadroomObservation struct { + + // Optionally configure the number of CPUs to allocate the headroom. CPUs are denoted in millicores, where 1000 millicores = 1 vCPU. + CPUPerUnit *float64 `json:"cpuPerUnit,omitempty" tf:"cpu_per_unit,omitempty"` + + // How much GPU allocate for headroom unit. + GpuPerUnit *float64 `json:"gpuPerUnit,omitempty" tf:"gpu_per_unit,omitempty"` + + // Optionally configure the amount of memory (MiB) to allocate the headroom. + MemoryPerUnit *float64 `json:"memoryPerUnit,omitempty" tf:"memory_per_unit,omitempty"` + + // The number of units to retain as headroom, where each unit has the defined headroom CPU and memory. + NumOfUnits *float64 `json:"numOfUnits,omitempty" tf:"num_of_units,omitempty"` +} + +type HeadroomParameters struct { + + // Optionally configure the number of CPUs to allocate the headroom. CPUs are denoted in millicores, where 1000 millicores = 1 vCPU. + // +kubebuilder:validation:Optional + CPUPerUnit *float64 `json:"cpuPerUnit,omitempty" tf:"cpu_per_unit,omitempty"` + + // How much GPU allocate for headroom unit. + // +kubebuilder:validation:Optional + GpuPerUnit *float64 `json:"gpuPerUnit,omitempty" tf:"gpu_per_unit,omitempty"` + + // Optionally configure the amount of memory (MiB) to allocate the headroom. + // +kubebuilder:validation:Optional + MemoryPerUnit *float64 `json:"memoryPerUnit,omitempty" tf:"memory_per_unit,omitempty"` + + // The number of units to retain as headroom, where each unit has the defined headroom CPU and memory. + // +kubebuilder:validation:Optional + NumOfUnits *float64 `json:"numOfUnits,omitempty" tf:"num_of_units,omitempty"` +} + +type NamedPortsInitParameters struct { + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // A list of ports. + Ports []*string `json:"ports,omitempty" tf:"ports,omitempty"` +} + +type NamedPortsObservation struct { + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // A list of ports. + Ports []*string `json:"ports,omitempty" tf:"ports,omitempty"` +} + +type NamedPortsParameters struct { + + // +kubebuilder:validation:Optional + Name *string `json:"name" tf:"name,omitempty"` + + // A list of ports. + // +kubebuilder:validation:Optional + Ports []*string `json:"ports" tf:"ports,omitempty"` +} + +type OceanGkeInitParameters struct { + + // The Ocean Kubernetes Autoscaler object. + Autoscaler []AutoscalerInitParameters `json:"autoscaler,omitempty" tf:"autoscaler,omitempty"` + + // Describes the backend service configurations. + BackendServices []BackendServicesInitParameters `json:"backendServices,omitempty" tf:"backend_services,omitempty"` + + // Instance types to avoid launching in the Ocean cluster. Cannot be configured if whitelist list is configured. + Blacklist []*string `json:"blacklist,omitempty" tf:"blacklist,omitempty"` + + // The GKE cluster name. + ClusterName *string `json:"clusterName,omitempty" tf:"cluster_name,omitempty"` + + // A unique identifier used for connecting the Ocean SaaS platform and the Kubernetes cluster. Typically, the cluster name is used as its identifier. + ControllerClusterID *string `json:"controllerClusterId,omitempty" tf:"controller_cluster_id,omitempty"` + + // The number of instances to launch and maintain in the cluster. + DesiredCapacity *float64 `json:"desiredCapacity,omitempty" tf:"desired_capacity,omitempty"` + + // List of filters. The Instance types that match with all filters compose the Ocean's whitelist parameter. Cannot be configured together with whitelist/blacklist. + Filters []FiltersInitParameters `json:"filters,omitempty" tf:"filters,omitempty"` + + // The zone the master cluster is located in. + Location *string `json:"location,omitempty" tf:"location,omitempty"` + + // The upper limit of instances the cluster can scale up to. + MaxSize *float64 `json:"maxSize,omitempty" tf:"max_size,omitempty"` + + // The lower limit of instances the cluster can scale down to. + MinSize *float64 `json:"minSize,omitempty" tf:"min_size,omitempty"` + + // The root volume disk type. + RootVolumeType *string `json:"rootVolumeType,omitempty" tf:"root_volume_type,omitempty"` + + // Set scheduling object. + ScheduledTask []ScheduledTaskInitParameters `json:"scheduledTask,omitempty" tf:"scheduled_task,omitempty"` + + // The Ocean shielded instance configuration object. + ShieldedInstanceConfig []ShieldedInstanceConfigInitParameters `json:"shieldedInstanceConfig,omitempty" tf:"shielded_instance_config,omitempty"` + + // Strategy object. + Strategy []StrategyInitParameters `json:"strategy,omitempty" tf:"strategy,omitempty"` + + UpdatePolicy []UpdatePolicyInitParameters `json:"updatePolicy,omitempty" tf:"update_policy,omitempty"` + + // launch specification defined on the Ocean object will function only as a template for virtual node groups. + UseAsTemplateOnly *bool `json:"useAsTemplateOnly,omitempty" tf:"use_as_template_only,omitempty"` + + // Instance types allowed in the Ocean cluster. Cannot be configured if blacklist list is configured. + Whitelist []*string `json:"whitelist,omitempty" tf:"whitelist,omitempty"` +} + +type OceanGkeObservation struct { + + // The Ocean Kubernetes Autoscaler object. + Autoscaler []AutoscalerObservation `json:"autoscaler,omitempty" tf:"autoscaler,omitempty"` + + // Describes the backend service configurations. + BackendServices []BackendServicesObservation `json:"backendServices,omitempty" tf:"backend_services,omitempty"` + + // Instance types to avoid launching in the Ocean cluster. Cannot be configured if whitelist list is configured. + Blacklist []*string `json:"blacklist,omitempty" tf:"blacklist,omitempty"` + + // The Spotinst Ocean ID. + ClusterControllerID *string `json:"clusterControllerId,omitempty" tf:"cluster_controller_id,omitempty"` + + // The GKE cluster name. + ClusterName *string `json:"clusterName,omitempty" tf:"cluster_name,omitempty"` + + // A unique identifier used for connecting the Ocean SaaS platform and the Kubernetes cluster. Typically, the cluster name is used as its identifier. + ControllerClusterID *string `json:"controllerClusterId,omitempty" tf:"controller_cluster_id,omitempty"` + + // The number of instances to launch and maintain in the cluster. + DesiredCapacity *float64 `json:"desiredCapacity,omitempty" tf:"desired_capacity,omitempty"` + + // List of filters. The Instance types that match with all filters compose the Ocean's whitelist parameter. Cannot be configured together with whitelist/blacklist. + Filters []FiltersObservation `json:"filters,omitempty" tf:"filters,omitempty"` + + // The Spotinst Ocean ID. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // The zone the master cluster is located in. + Location *string `json:"location,omitempty" tf:"location,omitempty"` + + // The upper limit of instances the cluster can scale up to. + MaxSize *float64 `json:"maxSize,omitempty" tf:"max_size,omitempty"` + + // The lower limit of instances the cluster can scale down to. + MinSize *float64 `json:"minSize,omitempty" tf:"min_size,omitempty"` + + // The root volume disk type. + RootVolumeType *string `json:"rootVolumeType,omitempty" tf:"root_volume_type,omitempty"` + + // Set scheduling object. + ScheduledTask []ScheduledTaskObservation `json:"scheduledTask,omitempty" tf:"scheduled_task,omitempty"` + + // The Ocean shielded instance configuration object. + ShieldedInstanceConfig []ShieldedInstanceConfigObservation `json:"shieldedInstanceConfig,omitempty" tf:"shielded_instance_config,omitempty"` + + // Strategy object. + Strategy []StrategyObservation `json:"strategy,omitempty" tf:"strategy,omitempty"` + + UpdatePolicy []UpdatePolicyObservation `json:"updatePolicy,omitempty" tf:"update_policy,omitempty"` + + // launch specification defined on the Ocean object will function only as a template for virtual node groups. + UseAsTemplateOnly *bool `json:"useAsTemplateOnly,omitempty" tf:"use_as_template_only,omitempty"` + + // Instance types allowed in the Ocean cluster. Cannot be configured if blacklist list is configured. + Whitelist []*string `json:"whitelist,omitempty" tf:"whitelist,omitempty"` +} + +type OceanGkeParameters struct { + + // The Ocean Kubernetes Autoscaler object. + // +kubebuilder:validation:Optional + Autoscaler []AutoscalerParameters `json:"autoscaler,omitempty" tf:"autoscaler,omitempty"` + + // Describes the backend service configurations. + // +kubebuilder:validation:Optional + BackendServices []BackendServicesParameters `json:"backendServices,omitempty" tf:"backend_services,omitempty"` + + // Instance types to avoid launching in the Ocean cluster. Cannot be configured if whitelist list is configured. + // +kubebuilder:validation:Optional + Blacklist []*string `json:"blacklist,omitempty" tf:"blacklist,omitempty"` + + // The GKE cluster name. + // +kubebuilder:validation:Optional + ClusterName *string `json:"clusterName,omitempty" tf:"cluster_name,omitempty"` + + // A unique identifier used for connecting the Ocean SaaS platform and the Kubernetes cluster. Typically, the cluster name is used as its identifier. + // +kubebuilder:validation:Optional + ControllerClusterID *string `json:"controllerClusterId,omitempty" tf:"controller_cluster_id,omitempty"` + + // The number of instances to launch and maintain in the cluster. + // +kubebuilder:validation:Optional + DesiredCapacity *float64 `json:"desiredCapacity,omitempty" tf:"desired_capacity,omitempty"` + + // List of filters. The Instance types that match with all filters compose the Ocean's whitelist parameter. Cannot be configured together with whitelist/blacklist. + // +kubebuilder:validation:Optional + Filters []FiltersParameters `json:"filters,omitempty" tf:"filters,omitempty"` + + // The zone the master cluster is located in. + // +kubebuilder:validation:Optional + Location *string `json:"location,omitempty" tf:"location,omitempty"` + + // The upper limit of instances the cluster can scale up to. + // +kubebuilder:validation:Optional + MaxSize *float64 `json:"maxSize,omitempty" tf:"max_size,omitempty"` + + // The lower limit of instances the cluster can scale down to. + // +kubebuilder:validation:Optional + MinSize *float64 `json:"minSize,omitempty" tf:"min_size,omitempty"` + + // The root volume disk type. + // +kubebuilder:validation:Optional + RootVolumeType *string `json:"rootVolumeType,omitempty" tf:"root_volume_type,omitempty"` + + // Set scheduling object. + // +kubebuilder:validation:Optional + ScheduledTask []ScheduledTaskParameters `json:"scheduledTask,omitempty" tf:"scheduled_task,omitempty"` + + // The Ocean shielded instance configuration object. + // +kubebuilder:validation:Optional + ShieldedInstanceConfig []ShieldedInstanceConfigParameters `json:"shieldedInstanceConfig,omitempty" tf:"shielded_instance_config,omitempty"` + + // Strategy object. + // +kubebuilder:validation:Optional + Strategy []StrategyParameters `json:"strategy,omitempty" tf:"strategy,omitempty"` + + // +kubebuilder:validation:Optional + UpdatePolicy []UpdatePolicyParameters `json:"updatePolicy,omitempty" tf:"update_policy,omitempty"` + + // launch specification defined on the Ocean object will function only as a template for virtual node groups. + // +kubebuilder:validation:Optional + UseAsTemplateOnly *bool `json:"useAsTemplateOnly,omitempty" tf:"use_as_template_only,omitempty"` + + // Instance types allowed in the Ocean cluster. Cannot be configured if blacklist list is configured. + // +kubebuilder:validation:Optional + Whitelist []*string `json:"whitelist,omitempty" tf:"whitelist,omitempty"` +} + +type ResourceLimitsInitParameters struct { + + // Maximum amount of Memory (GiB). + MaxMemoryGib *float64 `json:"maxMemoryGib,omitempty" tf:"max_memory_gib,omitempty"` + + // Maximum number of vcpus available. + MaxVcpu *float64 `json:"maxVcpu,omitempty" tf:"max_vcpu,omitempty"` +} + +type ResourceLimitsObservation struct { + + // Maximum amount of Memory (GiB). + MaxMemoryGib *float64 `json:"maxMemoryGib,omitempty" tf:"max_memory_gib,omitempty"` + + // Maximum number of vcpus available. + MaxVcpu *float64 `json:"maxVcpu,omitempty" tf:"max_vcpu,omitempty"` +} + +type ResourceLimitsParameters struct { + + // Maximum amount of Memory (GiB). + // +kubebuilder:validation:Optional + MaxMemoryGib *float64 `json:"maxMemoryGib,omitempty" tf:"max_memory_gib,omitempty"` + + // Maximum number of vcpus available. + // +kubebuilder:validation:Optional + MaxVcpu *float64 `json:"maxVcpu,omitempty" tf:"max_vcpu,omitempty"` +} + +type RollConfigInitParameters struct { + + // Indicates the threshold of minimum healthy instances in single batch. If the amount of healthy instances in single batch is under the threshold, the cluster roll will fail. If exists, the parameter value will be in range of 1-100. In case of null as value, the default value in the backend will be 50%. Value of param should represent the number in percentage (%) of the batch. + BatchMinHealthyPercentage *float64 `json:"batchMinHealthyPercentage,omitempty" tf:"batch_min_healthy_percentage,omitempty"` + + // Value in % to set size of batch in roll. Valid values are 0-100 + // Example: 20. + BatchSizePercentage *float64 `json:"batchSizePercentage,omitempty" tf:"batch_size_percentage,omitempty"` + + // List of Virtual Node Group identifiers to be rolled. + LaunchSpecIds []*string `json:"launchSpecIds,omitempty" tf:"launch_spec_ids,omitempty"` + + // During the roll, if the parameter is set to true we honor PDB during the instance replacement. + RespectPdb *bool `json:"respectPdb,omitempty" tf:"respect_pdb,omitempty"` +} + +type RollConfigObservation struct { + + // Indicates the threshold of minimum healthy instances in single batch. If the amount of healthy instances in single batch is under the threshold, the cluster roll will fail. If exists, the parameter value will be in range of 1-100. In case of null as value, the default value in the backend will be 50%. Value of param should represent the number in percentage (%) of the batch. + BatchMinHealthyPercentage *float64 `json:"batchMinHealthyPercentage,omitempty" tf:"batch_min_healthy_percentage,omitempty"` + + // Value in % to set size of batch in roll. Valid values are 0-100 + // Example: 20. + BatchSizePercentage *float64 `json:"batchSizePercentage,omitempty" tf:"batch_size_percentage,omitempty"` + + // List of Virtual Node Group identifiers to be rolled. + LaunchSpecIds []*string `json:"launchSpecIds,omitempty" tf:"launch_spec_ids,omitempty"` + + // During the roll, if the parameter is set to true we honor PDB during the instance replacement. + RespectPdb *bool `json:"respectPdb,omitempty" tf:"respect_pdb,omitempty"` +} + +type RollConfigParameters struct { + + // Indicates the threshold of minimum healthy instances in single batch. If the amount of healthy instances in single batch is under the threshold, the cluster roll will fail. If exists, the parameter value will be in range of 1-100. In case of null as value, the default value in the backend will be 50%. Value of param should represent the number in percentage (%) of the batch. + // +kubebuilder:validation:Optional + BatchMinHealthyPercentage *float64 `json:"batchMinHealthyPercentage,omitempty" tf:"batch_min_healthy_percentage,omitempty"` + + // Value in % to set size of batch in roll. Valid values are 0-100 + // Example: 20. + // +kubebuilder:validation:Optional + BatchSizePercentage *float64 `json:"batchSizePercentage" tf:"batch_size_percentage,omitempty"` + + // List of Virtual Node Group identifiers to be rolled. + // +kubebuilder:validation:Optional + LaunchSpecIds []*string `json:"launchSpecIds,omitempty" tf:"launch_spec_ids,omitempty"` + + // During the roll, if the parameter is set to true we honor PDB during the instance replacement. + // +kubebuilder:validation:Optional + RespectPdb *bool `json:"respectPdb,omitempty" tf:"respect_pdb,omitempty"` +} + +type ScheduledTaskInitParameters struct { + + // Set shutdown hours for cluster object. + ShutdownHours []ShutdownHoursInitParameters `json:"shutdownHours,omitempty" tf:"shutdown_hours,omitempty"` + + // The scheduling tasks for the cluster. + Tasks []TasksInitParameters `json:"tasks,omitempty" tf:"tasks,omitempty"` +} + +type ScheduledTaskObservation struct { + + // Set shutdown hours for cluster object. + ShutdownHours []ShutdownHoursObservation `json:"shutdownHours,omitempty" tf:"shutdown_hours,omitempty"` + + // The scheduling tasks for the cluster. + Tasks []TasksObservation `json:"tasks,omitempty" tf:"tasks,omitempty"` +} + +type ScheduledTaskParameters struct { + + // Set shutdown hours for cluster object. + // +kubebuilder:validation:Optional + ShutdownHours []ShutdownHoursParameters `json:"shutdownHours,omitempty" tf:"shutdown_hours,omitempty"` + + // The scheduling tasks for the cluster. + // +kubebuilder:validation:Optional + Tasks []TasksParameters `json:"tasks,omitempty" tf:"tasks,omitempty"` +} + +type ShieldedInstanceConfigInitParameters struct { + + // Boolean. Enable the integrity monitoring parameter on the GCP instances. + EnableIntegrityMonitoring *bool `json:"enableIntegrityMonitoring,omitempty" tf:"enable_integrity_monitoring,omitempty"` + + // Boolean. Enable the secure boot parameter on the GCP instances. + EnableSecureBoot *bool `json:"enableSecureBoot,omitempty" tf:"enable_secure_boot,omitempty"` +} + +type ShieldedInstanceConfigObservation struct { + + // Boolean. Enable the integrity monitoring parameter on the GCP instances. + EnableIntegrityMonitoring *bool `json:"enableIntegrityMonitoring,omitempty" tf:"enable_integrity_monitoring,omitempty"` + + // Boolean. Enable the secure boot parameter on the GCP instances. + EnableSecureBoot *bool `json:"enableSecureBoot,omitempty" tf:"enable_secure_boot,omitempty"` +} + +type ShieldedInstanceConfigParameters struct { + + // Boolean. Enable the integrity monitoring parameter on the GCP instances. + // +kubebuilder:validation:Optional + EnableIntegrityMonitoring *bool `json:"enableIntegrityMonitoring,omitempty" tf:"enable_integrity_monitoring,omitempty"` + + // Boolean. Enable the secure boot parameter on the GCP instances. + // +kubebuilder:validation:Optional + EnableSecureBoot *bool `json:"enableSecureBoot,omitempty" tf:"enable_secure_boot,omitempty"` +} + +type ShutdownHoursInitParameters struct { + + // Flag to enable / disable the shutdown hours. + // Example: true + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // Set time windows for shutdown hours. specify a list of 'timeWindows' with at least one time window Each string is in the format of - ddd:hh:mm-ddd:hh:mm ddd = day of week = Sun | Mon | Tue | Wed | Thu | Fri | Sat hh = hour 24 = 0 -23 mm = minute = 0 - 59. Time windows should not overlap. required on cluster.scheduling.isEnabled = true. API Times are in UTC + // Example: Fri:15:30-Wed:14:30 + TimeWindows []*string `json:"timeWindows,omitempty" tf:"time_windows,omitempty"` +} + +type ShutdownHoursObservation struct { + + // Flag to enable / disable the shutdown hours. + // Example: true + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // Set time windows for shutdown hours. specify a list of 'timeWindows' with at least one time window Each string is in the format of - ddd:hh:mm-ddd:hh:mm ddd = day of week = Sun | Mon | Tue | Wed | Thu | Fri | Sat hh = hour 24 = 0 -23 mm = minute = 0 - 59. Time windows should not overlap. required on cluster.scheduling.isEnabled = true. API Times are in UTC + // Example: Fri:15:30-Wed:14:30 + TimeWindows []*string `json:"timeWindows,omitempty" tf:"time_windows,omitempty"` +} + +type ShutdownHoursParameters struct { + + // Flag to enable / disable the shutdown hours. + // Example: true + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // Set time windows for shutdown hours. specify a list of 'timeWindows' with at least one time window Each string is in the format of - ddd:hh:mm-ddd:hh:mm ddd = day of week = Sun | Mon | Tue | Wed | Thu | Fri | Sat hh = hour 24 = 0 -23 mm = minute = 0 - 59. Time windows should not overlap. required on cluster.scheduling.isEnabled = true. API Times are in UTC + // Example: Fri:15:30-Wed:14:30 + // +kubebuilder:validation:Optional + TimeWindows []*string `json:"timeWindows" tf:"time_windows,omitempty"` +} + +type StrategyInitParameters struct { + + // The draining timeout (in seconds) before terminating the instance. + DrainingTimeout *float64 `json:"drainingTimeout,omitempty" tf:"draining_timeout,omitempty"` + + // Defines the desired preemptible percentage for the cluster. + PreemptiblePercentage *float64 `json:"preemptiblePercentage,omitempty" tf:"preemptible_percentage,omitempty"` + + // Define the provisioning model of the launched instances. Valid values: SPOT, PREEMPTIBLE. + ProvisioningModel *string `json:"provisioningModel,omitempty" tf:"provisioning_model,omitempty"` + + // Enable committed use discounts utilization. + ShouldUtilizeCommitments *bool `json:"shouldUtilizeCommitments,omitempty" tf:"should_utilize_commitments,omitempty"` +} + +type StrategyObservation struct { + + // The draining timeout (in seconds) before terminating the instance. + DrainingTimeout *float64 `json:"drainingTimeout,omitempty" tf:"draining_timeout,omitempty"` + + // Defines the desired preemptible percentage for the cluster. + PreemptiblePercentage *float64 `json:"preemptiblePercentage,omitempty" tf:"preemptible_percentage,omitempty"` + + // Define the provisioning model of the launched instances. Valid values: SPOT, PREEMPTIBLE. + ProvisioningModel *string `json:"provisioningModel,omitempty" tf:"provisioning_model,omitempty"` + + // Enable committed use discounts utilization. + ShouldUtilizeCommitments *bool `json:"shouldUtilizeCommitments,omitempty" tf:"should_utilize_commitments,omitempty"` +} + +type StrategyParameters struct { + + // The draining timeout (in seconds) before terminating the instance. + // +kubebuilder:validation:Optional + DrainingTimeout *float64 `json:"drainingTimeout,omitempty" tf:"draining_timeout,omitempty"` + + // Defines the desired preemptible percentage for the cluster. + // +kubebuilder:validation:Optional + PreemptiblePercentage *float64 `json:"preemptiblePercentage,omitempty" tf:"preemptible_percentage,omitempty"` + + // Define the provisioning model of the launched instances. Valid values: SPOT, PREEMPTIBLE. + // +kubebuilder:validation:Optional + ProvisioningModel *string `json:"provisioningModel,omitempty" tf:"provisioning_model,omitempty"` + + // Enable committed use discounts utilization. + // +kubebuilder:validation:Optional + ShouldUtilizeCommitments *bool `json:"shouldUtilizeCommitments,omitempty" tf:"should_utilize_commitments,omitempty"` +} + +type TaskParametersInitParameters struct { + + // The cluster roll parameters for the cluster. + ClusterRoll []ClusterRollInitParameters `json:"clusterRoll,omitempty" tf:"cluster_roll,omitempty"` +} + +type TaskParametersObservation struct { + + // The cluster roll parameters for the cluster. + ClusterRoll []ClusterRollObservation `json:"clusterRoll,omitempty" tf:"cluster_roll,omitempty"` +} + +type TaskParametersParameters struct { + + // The cluster roll parameters for the cluster. + // +kubebuilder:validation:Optional + ClusterRoll []ClusterRollParameters `json:"clusterRoll,omitempty" tf:"cluster_roll,omitempty"` +} + +type TasksInitParameters struct { + + // A valid cron expression. For example : " * * * * * ".The cron is running in UTC time zone and is in Unix cron format Cron Expression Validator Script. Only one of ‘frequency’ or ‘cronExpression’ should be used at a time. Required for cluster.scheduling.tasks object + // Example: 0 1 * * * + CronExpression *string `json:"cronExpression,omitempty" tf:"cron_expression,omitempty"` + + // Flag to enable / disable the shutdown hours. + // Example: true + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // The scheduling parameters for the cluster. + TaskParameters []TaskParametersInitParameters `json:"taskParameters,omitempty" tf:"task_parameters,omitempty"` + + // Valid values: "clusterRoll". Required for cluster.scheduling.tasks object. + TaskType *string `json:"taskType,omitempty" tf:"task_type,omitempty"` +} + +type TasksObservation struct { + + // A valid cron expression. For example : " * * * * * ".The cron is running in UTC time zone and is in Unix cron format Cron Expression Validator Script. Only one of ‘frequency’ or ‘cronExpression’ should be used at a time. Required for cluster.scheduling.tasks object + // Example: 0 1 * * * + CronExpression *string `json:"cronExpression,omitempty" tf:"cron_expression,omitempty"` + + // Flag to enable / disable the shutdown hours. + // Example: true + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // The scheduling parameters for the cluster. + TaskParameters []TaskParametersObservation `json:"taskParameters,omitempty" tf:"task_parameters,omitempty"` + + // Valid values: "clusterRoll". Required for cluster.scheduling.tasks object. + TaskType *string `json:"taskType,omitempty" tf:"task_type,omitempty"` +} + +type TasksParameters struct { + + // A valid cron expression. For example : " * * * * * ".The cron is running in UTC time zone and is in Unix cron format Cron Expression Validator Script. Only one of ‘frequency’ or ‘cronExpression’ should be used at a time. Required for cluster.scheduling.tasks object + // Example: 0 1 * * * + // +kubebuilder:validation:Optional + CronExpression *string `json:"cronExpression" tf:"cron_expression,omitempty"` + + // Flag to enable / disable the shutdown hours. + // Example: true + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled" tf:"is_enabled,omitempty"` + + // The scheduling parameters for the cluster. + // +kubebuilder:validation:Optional + TaskParameters []TaskParametersParameters `json:"taskParameters,omitempty" tf:"task_parameters,omitempty"` + + // Valid values: "clusterRoll". Required for cluster.scheduling.tasks object. + // +kubebuilder:validation:Optional + TaskType *string `json:"taskType" tf:"task_type,omitempty"` +} + +type UpdatePolicyInitParameters struct { + + // Spot will perform a cluster Roll in accordance with a relevant modification of the cluster’s settings. When set to true , only specific changes in the cluster’s configuration will trigger a cluster roll (such as AMI, Key Pair, user data, instance types, load balancers, etc). + ConditionedRoll *bool `json:"conditionedRoll,omitempty" tf:"conditioned_roll,omitempty"` + + // Holds the roll configuration. + RollConfig []RollConfigInitParameters `json:"rollConfig,omitempty" tf:"roll_config,omitempty"` + + // Enables the roll. + ShouldRoll *bool `json:"shouldRoll,omitempty" tf:"should_roll,omitempty"` +} + +type UpdatePolicyObservation struct { + + // Spot will perform a cluster Roll in accordance with a relevant modification of the cluster’s settings. When set to true , only specific changes in the cluster’s configuration will trigger a cluster roll (such as AMI, Key Pair, user data, instance types, load balancers, etc). + ConditionedRoll *bool `json:"conditionedRoll,omitempty" tf:"conditioned_roll,omitempty"` + + // Holds the roll configuration. + RollConfig []RollConfigObservation `json:"rollConfig,omitempty" tf:"roll_config,omitempty"` + + // Enables the roll. + ShouldRoll *bool `json:"shouldRoll,omitempty" tf:"should_roll,omitempty"` +} + +type UpdatePolicyParameters struct { + + // Spot will perform a cluster Roll in accordance with a relevant modification of the cluster’s settings. When set to true , only specific changes in the cluster’s configuration will trigger a cluster roll (such as AMI, Key Pair, user data, instance types, load balancers, etc). + // +kubebuilder:validation:Optional + ConditionedRoll *bool `json:"conditionedRoll,omitempty" tf:"conditioned_roll,omitempty"` + + // Holds the roll configuration. + // +kubebuilder:validation:Optional + RollConfig []RollConfigParameters `json:"rollConfig,omitempty" tf:"roll_config,omitempty"` + + // Enables the roll. + // +kubebuilder:validation:Optional + ShouldRoll *bool `json:"shouldRoll" tf:"should_roll,omitempty"` +} + +// OceanGkeSpec defines the desired state of OceanGke +type OceanGkeSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider OceanGkeParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider OceanGkeInitParameters `json:"initProvider,omitempty"` +} + +// OceanGkeStatus defines the observed state of OceanGke. +type OceanGkeStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider OceanGkeObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// OceanGke is the Schema for the OceanGkes API. Provides a Spotinst Ocean resource using gke. +// +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" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,spot} +type OceanGke struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.clusterName) || (has(self.initProvider) && has(self.initProvider.clusterName))",message="spec.forProvider.clusterName is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.location) || (has(self.initProvider) && has(self.initProvider.location))",message="spec.forProvider.location is a required parameter" + Spec OceanGkeSpec `json:"spec"` + Status OceanGkeStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// OceanGkeList contains a list of OceanGkes +type OceanGkeList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []OceanGke `json:"items"` +} + +// Repository type metadata. +var ( + OceanGke_Kind = "OceanGke" + OceanGke_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: OceanGke_Kind}.String() + OceanGke_KindAPIVersion = OceanGke_Kind + "." + CRDGroupVersion.String() + OceanGke_GroupVersionKind = CRDGroupVersion.WithKind(OceanGke_Kind) +) + +func init() { + SchemeBuilder.Register(&OceanGke{}, &OceanGkeList{}) +} diff --git a/apis/oceangkevng/v1alpha1/zz_generated.conversion_hubs.go b/apis/oceangkevng/v1alpha1/zz_generated.conversion_hubs.go new file mode 100755 index 0000000..d41ba5a --- /dev/null +++ b/apis/oceangkevng/v1alpha1/zz_generated.conversion_hubs.go @@ -0,0 +1,10 @@ +// SPDX-FileCopyrightText: 2024 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +// Hub marks this type as a conversion hub. +func (tr *OceanGkeVng) Hub() {} diff --git a/apis/oceangkevng/v1alpha1/zz_generated.deepcopy.go b/apis/oceangkevng/v1alpha1/zz_generated.deepcopy.go new file mode 100644 index 0000000..8edf0b7 --- /dev/null +++ b/apis/oceangkevng/v1alpha1/zz_generated.deepcopy.go @@ -0,0 +1,1975 @@ +//go:build !ignore_autogenerated + +// SPDX-FileCopyrightText: 2024 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +// Code generated by controller-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AccessConfigsInitParameters) DeepCopyInto(out *AccessConfigsInitParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AccessConfigsInitParameters. +func (in *AccessConfigsInitParameters) DeepCopy() *AccessConfigsInitParameters { + if in == nil { + return nil + } + out := new(AccessConfigsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AccessConfigsObservation) DeepCopyInto(out *AccessConfigsObservation) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AccessConfigsObservation. +func (in *AccessConfigsObservation) DeepCopy() *AccessConfigsObservation { + if in == nil { + return nil + } + out := new(AccessConfigsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AccessConfigsParameters) DeepCopyInto(out *AccessConfigsParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AccessConfigsParameters. +func (in *AccessConfigsParameters) DeepCopy() *AccessConfigsParameters { + if in == nil { + return nil + } + out := new(AccessConfigsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AliasIPRangesInitParameters) DeepCopyInto(out *AliasIPRangesInitParameters) { + *out = *in + if in.IPCidrRange != nil { + in, out := &in.IPCidrRange, &out.IPCidrRange + *out = new(string) + **out = **in + } + if in.SubnetworkRangeName != nil { + in, out := &in.SubnetworkRangeName, &out.SubnetworkRangeName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AliasIPRangesInitParameters. +func (in *AliasIPRangesInitParameters) DeepCopy() *AliasIPRangesInitParameters { + if in == nil { + return nil + } + out := new(AliasIPRangesInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AliasIPRangesObservation) DeepCopyInto(out *AliasIPRangesObservation) { + *out = *in + if in.IPCidrRange != nil { + in, out := &in.IPCidrRange, &out.IPCidrRange + *out = new(string) + **out = **in + } + if in.SubnetworkRangeName != nil { + in, out := &in.SubnetworkRangeName, &out.SubnetworkRangeName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AliasIPRangesObservation. +func (in *AliasIPRangesObservation) DeepCopy() *AliasIPRangesObservation { + if in == nil { + return nil + } + out := new(AliasIPRangesObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AliasIPRangesParameters) DeepCopyInto(out *AliasIPRangesParameters) { + *out = *in + if in.IPCidrRange != nil { + in, out := &in.IPCidrRange, &out.IPCidrRange + *out = new(string) + **out = **in + } + if in.SubnetworkRangeName != nil { + in, out := &in.SubnetworkRangeName, &out.SubnetworkRangeName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AliasIPRangesParameters. +func (in *AliasIPRangesParameters) DeepCopy() *AliasIPRangesParameters { + if in == nil { + return nil + } + out := new(AliasIPRangesParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AutoscaleHeadroomsAutomaticInitParameters) DeepCopyInto(out *AutoscaleHeadroomsAutomaticInitParameters) { + *out = *in + if in.AutoHeadroomPercentage != nil { + in, out := &in.AutoHeadroomPercentage, &out.AutoHeadroomPercentage + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AutoscaleHeadroomsAutomaticInitParameters. +func (in *AutoscaleHeadroomsAutomaticInitParameters) DeepCopy() *AutoscaleHeadroomsAutomaticInitParameters { + if in == nil { + return nil + } + out := new(AutoscaleHeadroomsAutomaticInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AutoscaleHeadroomsAutomaticObservation) DeepCopyInto(out *AutoscaleHeadroomsAutomaticObservation) { + *out = *in + if in.AutoHeadroomPercentage != nil { + in, out := &in.AutoHeadroomPercentage, &out.AutoHeadroomPercentage + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AutoscaleHeadroomsAutomaticObservation. +func (in *AutoscaleHeadroomsAutomaticObservation) DeepCopy() *AutoscaleHeadroomsAutomaticObservation { + if in == nil { + return nil + } + out := new(AutoscaleHeadroomsAutomaticObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AutoscaleHeadroomsAutomaticParameters) DeepCopyInto(out *AutoscaleHeadroomsAutomaticParameters) { + *out = *in + if in.AutoHeadroomPercentage != nil { + in, out := &in.AutoHeadroomPercentage, &out.AutoHeadroomPercentage + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AutoscaleHeadroomsAutomaticParameters. +func (in *AutoscaleHeadroomsAutomaticParameters) DeepCopy() *AutoscaleHeadroomsAutomaticParameters { + if in == nil { + return nil + } + out := new(AutoscaleHeadroomsAutomaticParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AutoscaleHeadroomsInitParameters) DeepCopyInto(out *AutoscaleHeadroomsInitParameters) { + *out = *in + if in.CPUPerUnit != nil { + in, out := &in.CPUPerUnit, &out.CPUPerUnit + *out = new(float64) + **out = **in + } + if in.GpuPerUnit != nil { + in, out := &in.GpuPerUnit, &out.GpuPerUnit + *out = new(float64) + **out = **in + } + if in.MemoryPerUnit != nil { + in, out := &in.MemoryPerUnit, &out.MemoryPerUnit + *out = new(float64) + **out = **in + } + if in.NumOfUnits != nil { + in, out := &in.NumOfUnits, &out.NumOfUnits + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AutoscaleHeadroomsInitParameters. +func (in *AutoscaleHeadroomsInitParameters) DeepCopy() *AutoscaleHeadroomsInitParameters { + if in == nil { + return nil + } + out := new(AutoscaleHeadroomsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AutoscaleHeadroomsObservation) DeepCopyInto(out *AutoscaleHeadroomsObservation) { + *out = *in + if in.CPUPerUnit != nil { + in, out := &in.CPUPerUnit, &out.CPUPerUnit + *out = new(float64) + **out = **in + } + if in.GpuPerUnit != nil { + in, out := &in.GpuPerUnit, &out.GpuPerUnit + *out = new(float64) + **out = **in + } + if in.MemoryPerUnit != nil { + in, out := &in.MemoryPerUnit, &out.MemoryPerUnit + *out = new(float64) + **out = **in + } + if in.NumOfUnits != nil { + in, out := &in.NumOfUnits, &out.NumOfUnits + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AutoscaleHeadroomsObservation. +func (in *AutoscaleHeadroomsObservation) DeepCopy() *AutoscaleHeadroomsObservation { + if in == nil { + return nil + } + out := new(AutoscaleHeadroomsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AutoscaleHeadroomsParameters) DeepCopyInto(out *AutoscaleHeadroomsParameters) { + *out = *in + if in.CPUPerUnit != nil { + in, out := &in.CPUPerUnit, &out.CPUPerUnit + *out = new(float64) + **out = **in + } + if in.GpuPerUnit != nil { + in, out := &in.GpuPerUnit, &out.GpuPerUnit + *out = new(float64) + **out = **in + } + if in.MemoryPerUnit != nil { + in, out := &in.MemoryPerUnit, &out.MemoryPerUnit + *out = new(float64) + **out = **in + } + if in.NumOfUnits != nil { + in, out := &in.NumOfUnits, &out.NumOfUnits + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AutoscaleHeadroomsParameters. +func (in *AutoscaleHeadroomsParameters) DeepCopy() *AutoscaleHeadroomsParameters { + if in == nil { + return nil + } + out := new(AutoscaleHeadroomsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CreateOptionsInitParameters) DeepCopyInto(out *CreateOptionsInitParameters) { + *out = *in + if in.InitialNodes != nil { + in, out := &in.InitialNodes, &out.InitialNodes + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CreateOptionsInitParameters. +func (in *CreateOptionsInitParameters) DeepCopy() *CreateOptionsInitParameters { + if in == nil { + return nil + } + out := new(CreateOptionsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CreateOptionsObservation) DeepCopyInto(out *CreateOptionsObservation) { + *out = *in + if in.InitialNodes != nil { + in, out := &in.InitialNodes, &out.InitialNodes + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CreateOptionsObservation. +func (in *CreateOptionsObservation) DeepCopy() *CreateOptionsObservation { + if in == nil { + return nil + } + out := new(CreateOptionsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CreateOptionsParameters) DeepCopyInto(out *CreateOptionsParameters) { + *out = *in + if in.InitialNodes != nil { + in, out := &in.InitialNodes, &out.InitialNodes + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CreateOptionsParameters. +func (in *CreateOptionsParameters) DeepCopy() *CreateOptionsParameters { + if in == nil { + return nil + } + out := new(CreateOptionsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LabelsInitParameters) DeepCopyInto(out *LabelsInitParameters) { + *out = *in + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LabelsInitParameters. +func (in *LabelsInitParameters) DeepCopy() *LabelsInitParameters { + if in == nil { + return nil + } + out := new(LabelsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LabelsObservation) DeepCopyInto(out *LabelsObservation) { + *out = *in + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LabelsObservation. +func (in *LabelsObservation) DeepCopy() *LabelsObservation { + if in == nil { + return nil + } + out := new(LabelsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LabelsParameters) DeepCopyInto(out *LabelsParameters) { + *out = *in + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LabelsParameters. +func (in *LabelsParameters) DeepCopy() *LabelsParameters { + if in == nil { + return nil + } + out := new(LabelsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetadataInitParameters) DeepCopyInto(out *MetadataInitParameters) { + *out = *in + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetadataInitParameters. +func (in *MetadataInitParameters) DeepCopy() *MetadataInitParameters { + if in == nil { + return nil + } + out := new(MetadataInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetadataObservation) DeepCopyInto(out *MetadataObservation) { + *out = *in + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetadataObservation. +func (in *MetadataObservation) DeepCopy() *MetadataObservation { + if in == nil { + return nil + } + out := new(MetadataObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetadataParameters) DeepCopyInto(out *MetadataParameters) { + *out = *in + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetadataParameters. +func (in *MetadataParameters) DeepCopy() *MetadataParameters { + if in == nil { + return nil + } + out := new(MetadataParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkInterfacesInitParameters) DeepCopyInto(out *NetworkInterfacesInitParameters) { + *out = *in + if in.AccessConfigs != nil { + in, out := &in.AccessConfigs, &out.AccessConfigs + *out = make([]AccessConfigsInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.AliasIPRanges != nil { + in, out := &in.AliasIPRanges, &out.AliasIPRanges + *out = make([]AliasIPRangesInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Network != nil { + in, out := &in.Network, &out.Network + *out = new(string) + **out = **in + } + if in.ProjectID != nil { + in, out := &in.ProjectID, &out.ProjectID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkInterfacesInitParameters. +func (in *NetworkInterfacesInitParameters) DeepCopy() *NetworkInterfacesInitParameters { + if in == nil { + return nil + } + out := new(NetworkInterfacesInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkInterfacesObservation) DeepCopyInto(out *NetworkInterfacesObservation) { + *out = *in + if in.AccessConfigs != nil { + in, out := &in.AccessConfigs, &out.AccessConfigs + *out = make([]AccessConfigsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.AliasIPRanges != nil { + in, out := &in.AliasIPRanges, &out.AliasIPRanges + *out = make([]AliasIPRangesObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Network != nil { + in, out := &in.Network, &out.Network + *out = new(string) + **out = **in + } + if in.ProjectID != nil { + in, out := &in.ProjectID, &out.ProjectID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkInterfacesObservation. +func (in *NetworkInterfacesObservation) DeepCopy() *NetworkInterfacesObservation { + if in == nil { + return nil + } + out := new(NetworkInterfacesObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkInterfacesParameters) DeepCopyInto(out *NetworkInterfacesParameters) { + *out = *in + if in.AccessConfigs != nil { + in, out := &in.AccessConfigs, &out.AccessConfigs + *out = make([]AccessConfigsParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.AliasIPRanges != nil { + in, out := &in.AliasIPRanges, &out.AliasIPRanges + *out = make([]AliasIPRangesParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Network != nil { + in, out := &in.Network, &out.Network + *out = new(string) + **out = **in + } + if in.ProjectID != nil { + in, out := &in.ProjectID, &out.ProjectID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkInterfacesParameters. +func (in *NetworkInterfacesParameters) DeepCopy() *NetworkInterfacesParameters { + if in == nil { + return nil + } + out := new(NetworkInterfacesParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OceanGkeVng) DeepCopyInto(out *OceanGkeVng) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OceanGkeVng. +func (in *OceanGkeVng) DeepCopy() *OceanGkeVng { + if in == nil { + return nil + } + out := new(OceanGkeVng) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *OceanGkeVng) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OceanGkeVngInitParameters) DeepCopyInto(out *OceanGkeVngInitParameters) { + *out = *in + if in.AutoscaleHeadrooms != nil { + in, out := &in.AutoscaleHeadrooms, &out.AutoscaleHeadrooms + *out = make([]AutoscaleHeadroomsInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.AutoscaleHeadroomsAutomatic != nil { + in, out := &in.AutoscaleHeadroomsAutomatic, &out.AutoscaleHeadroomsAutomatic + *out = make([]AutoscaleHeadroomsAutomaticInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.CreateOptions != nil { + in, out := &in.CreateOptions, &out.CreateOptions + *out = make([]CreateOptionsInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.InstanceTypes != nil { + in, out := &in.InstanceTypes, &out.InstanceTypes + *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.Labels != nil { + in, out := &in.Labels, &out.Labels + *out = make([]LabelsInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Metadata != nil { + in, out := &in.Metadata, &out.Metadata + *out = make([]MetadataInitParameters, 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 + } + if in.NetworkInterfaces != nil { + in, out := &in.NetworkInterfaces, &out.NetworkInterfaces + *out = make([]NetworkInterfacesInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.NodePoolName != nil { + in, out := &in.NodePoolName, &out.NodePoolName + *out = new(string) + **out = **in + } + if in.OceanID != nil { + in, out := &in.OceanID, &out.OceanID + *out = new(string) + **out = **in + } + if in.ResourceLimits != nil { + in, out := &in.ResourceLimits, &out.ResourceLimits + *out = make([]ResourceLimitsInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.RestrictScaleDown != nil { + in, out := &in.RestrictScaleDown, &out.RestrictScaleDown + *out = new(bool) + **out = **in + } + if in.RootVolumeSize != nil { + in, out := &in.RootVolumeSize, &out.RootVolumeSize + *out = new(float64) + **out = **in + } + if in.RootVolumeType != nil { + in, out := &in.RootVolumeType, &out.RootVolumeType + *out = new(string) + **out = **in + } + if in.SchedulingTask != nil { + in, out := &in.SchedulingTask, &out.SchedulingTask + *out = make([]SchedulingTaskInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ServiceAccount != nil { + in, out := &in.ServiceAccount, &out.ServiceAccount + *out = new(string) + **out = **in + } + if in.ShieldedInstanceConfig != nil { + in, out := &in.ShieldedInstanceConfig, &out.ShieldedInstanceConfig + *out = make([]ShieldedInstanceConfigInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.SourceImage != nil { + in, out := &in.SourceImage, &out.SourceImage + *out = new(string) + **out = **in + } + if in.Storage != nil { + in, out := &in.Storage, &out.Storage + *out = make([]StorageInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Strategy != nil { + in, out := &in.Strategy, &out.Strategy + *out = make([]StrategyInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *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.Taints != nil { + in, out := &in.Taints, &out.Taints + *out = make([]TaintsInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.UpdatePolicy != nil { + in, out := &in.UpdatePolicy, &out.UpdatePolicy + *out = make([]UpdatePolicyInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OceanGkeVngInitParameters. +func (in *OceanGkeVngInitParameters) DeepCopy() *OceanGkeVngInitParameters { + if in == nil { + return nil + } + out := new(OceanGkeVngInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OceanGkeVngList) DeepCopyInto(out *OceanGkeVngList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]OceanGkeVng, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OceanGkeVngList. +func (in *OceanGkeVngList) DeepCopy() *OceanGkeVngList { + if in == nil { + return nil + } + out := new(OceanGkeVngList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *OceanGkeVngList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OceanGkeVngObservation) DeepCopyInto(out *OceanGkeVngObservation) { + *out = *in + if in.AutoscaleHeadrooms != nil { + in, out := &in.AutoscaleHeadrooms, &out.AutoscaleHeadrooms + *out = make([]AutoscaleHeadroomsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.AutoscaleHeadroomsAutomatic != nil { + in, out := &in.AutoscaleHeadroomsAutomatic, &out.AutoscaleHeadroomsAutomatic + *out = make([]AutoscaleHeadroomsAutomaticObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.CreateOptions != nil { + in, out := &in.CreateOptions, &out.CreateOptions + *out = make([]CreateOptionsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.InstanceTypes != nil { + in, out := &in.InstanceTypes, &out.InstanceTypes + *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.Labels != nil { + in, out := &in.Labels, &out.Labels + *out = make([]LabelsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Metadata != nil { + in, out := &in.Metadata, &out.Metadata + *out = make([]MetadataObservation, 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 + } + if in.NetworkInterfaces != nil { + in, out := &in.NetworkInterfaces, &out.NetworkInterfaces + *out = make([]NetworkInterfacesObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.NodePoolName != nil { + in, out := &in.NodePoolName, &out.NodePoolName + *out = new(string) + **out = **in + } + if in.OceanID != nil { + in, out := &in.OceanID, &out.OceanID + *out = new(string) + **out = **in + } + if in.ResourceLimits != nil { + in, out := &in.ResourceLimits, &out.ResourceLimits + *out = make([]ResourceLimitsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.RestrictScaleDown != nil { + in, out := &in.RestrictScaleDown, &out.RestrictScaleDown + *out = new(bool) + **out = **in + } + if in.RootVolumeSize != nil { + in, out := &in.RootVolumeSize, &out.RootVolumeSize + *out = new(float64) + **out = **in + } + if in.RootVolumeType != nil { + in, out := &in.RootVolumeType, &out.RootVolumeType + *out = new(string) + **out = **in + } + if in.SchedulingTask != nil { + in, out := &in.SchedulingTask, &out.SchedulingTask + *out = make([]SchedulingTaskObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ServiceAccount != nil { + in, out := &in.ServiceAccount, &out.ServiceAccount + *out = new(string) + **out = **in + } + if in.ShieldedInstanceConfig != nil { + in, out := &in.ShieldedInstanceConfig, &out.ShieldedInstanceConfig + *out = make([]ShieldedInstanceConfigObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.SourceImage != nil { + in, out := &in.SourceImage, &out.SourceImage + *out = new(string) + **out = **in + } + if in.Storage != nil { + in, out := &in.Storage, &out.Storage + *out = make([]StorageObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Strategy != nil { + in, out := &in.Strategy, &out.Strategy + *out = make([]StrategyObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *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.Taints != nil { + in, out := &in.Taints, &out.Taints + *out = make([]TaintsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.UpdatePolicy != nil { + in, out := &in.UpdatePolicy, &out.UpdatePolicy + *out = make([]UpdatePolicyObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OceanGkeVngObservation. +func (in *OceanGkeVngObservation) DeepCopy() *OceanGkeVngObservation { + if in == nil { + return nil + } + out := new(OceanGkeVngObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OceanGkeVngParameters) DeepCopyInto(out *OceanGkeVngParameters) { + *out = *in + if in.AutoscaleHeadrooms != nil { + in, out := &in.AutoscaleHeadrooms, &out.AutoscaleHeadrooms + *out = make([]AutoscaleHeadroomsParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.AutoscaleHeadroomsAutomatic != nil { + in, out := &in.AutoscaleHeadroomsAutomatic, &out.AutoscaleHeadroomsAutomatic + *out = make([]AutoscaleHeadroomsAutomaticParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.CreateOptions != nil { + in, out := &in.CreateOptions, &out.CreateOptions + *out = make([]CreateOptionsParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.InstanceTypes != nil { + in, out := &in.InstanceTypes, &out.InstanceTypes + *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.Labels != nil { + in, out := &in.Labels, &out.Labels + *out = make([]LabelsParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Metadata != nil { + in, out := &in.Metadata, &out.Metadata + *out = make([]MetadataParameters, 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 + } + if in.NetworkInterfaces != nil { + in, out := &in.NetworkInterfaces, &out.NetworkInterfaces + *out = make([]NetworkInterfacesParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.NodePoolName != nil { + in, out := &in.NodePoolName, &out.NodePoolName + *out = new(string) + **out = **in + } + if in.OceanID != nil { + in, out := &in.OceanID, &out.OceanID + *out = new(string) + **out = **in + } + if in.ResourceLimits != nil { + in, out := &in.ResourceLimits, &out.ResourceLimits + *out = make([]ResourceLimitsParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.RestrictScaleDown != nil { + in, out := &in.RestrictScaleDown, &out.RestrictScaleDown + *out = new(bool) + **out = **in + } + if in.RootVolumeSize != nil { + in, out := &in.RootVolumeSize, &out.RootVolumeSize + *out = new(float64) + **out = **in + } + if in.RootVolumeType != nil { + in, out := &in.RootVolumeType, &out.RootVolumeType + *out = new(string) + **out = **in + } + if in.SchedulingTask != nil { + in, out := &in.SchedulingTask, &out.SchedulingTask + *out = make([]SchedulingTaskParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ServiceAccount != nil { + in, out := &in.ServiceAccount, &out.ServiceAccount + *out = new(string) + **out = **in + } + if in.ShieldedInstanceConfig != nil { + in, out := &in.ShieldedInstanceConfig, &out.ShieldedInstanceConfig + *out = make([]ShieldedInstanceConfigParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.SourceImage != nil { + in, out := &in.SourceImage, &out.SourceImage + *out = new(string) + **out = **in + } + if in.Storage != nil { + in, out := &in.Storage, &out.Storage + *out = make([]StorageParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Strategy != nil { + in, out := &in.Strategy, &out.Strategy + *out = make([]StrategyParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *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.Taints != nil { + in, out := &in.Taints, &out.Taints + *out = make([]TaintsParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.UpdatePolicy != nil { + in, out := &in.UpdatePolicy, &out.UpdatePolicy + *out = make([]UpdatePolicyParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OceanGkeVngParameters. +func (in *OceanGkeVngParameters) DeepCopy() *OceanGkeVngParameters { + if in == nil { + return nil + } + out := new(OceanGkeVngParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OceanGkeVngSpec) DeepCopyInto(out *OceanGkeVngSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OceanGkeVngSpec. +func (in *OceanGkeVngSpec) DeepCopy() *OceanGkeVngSpec { + if in == nil { + return nil + } + out := new(OceanGkeVngSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OceanGkeVngStatus) DeepCopyInto(out *OceanGkeVngStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OceanGkeVngStatus. +func (in *OceanGkeVngStatus) DeepCopy() *OceanGkeVngStatus { + if in == nil { + return nil + } + out := new(OceanGkeVngStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceLimitsInitParameters) DeepCopyInto(out *ResourceLimitsInitParameters) { + *out = *in + if in.MaxInstanceCount != nil { + in, out := &in.MaxInstanceCount, &out.MaxInstanceCount + *out = new(float64) + **out = **in + } + if in.MinInstanceCount != nil { + in, out := &in.MinInstanceCount, &out.MinInstanceCount + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceLimitsInitParameters. +func (in *ResourceLimitsInitParameters) DeepCopy() *ResourceLimitsInitParameters { + if in == nil { + return nil + } + out := new(ResourceLimitsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceLimitsObservation) DeepCopyInto(out *ResourceLimitsObservation) { + *out = *in + if in.MaxInstanceCount != nil { + in, out := &in.MaxInstanceCount, &out.MaxInstanceCount + *out = new(float64) + **out = **in + } + if in.MinInstanceCount != nil { + in, out := &in.MinInstanceCount, &out.MinInstanceCount + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceLimitsObservation. +func (in *ResourceLimitsObservation) DeepCopy() *ResourceLimitsObservation { + if in == nil { + return nil + } + out := new(ResourceLimitsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceLimitsParameters) DeepCopyInto(out *ResourceLimitsParameters) { + *out = *in + if in.MaxInstanceCount != nil { + in, out := &in.MaxInstanceCount, &out.MaxInstanceCount + *out = new(float64) + **out = **in + } + if in.MinInstanceCount != nil { + in, out := &in.MinInstanceCount, &out.MinInstanceCount + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceLimitsParameters. +func (in *ResourceLimitsParameters) DeepCopy() *ResourceLimitsParameters { + if in == nil { + return nil + } + out := new(ResourceLimitsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RollConfigInitParameters) DeepCopyInto(out *RollConfigInitParameters) { + *out = *in + if in.BatchSizePercentage != nil { + in, out := &in.BatchSizePercentage, &out.BatchSizePercentage + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RollConfigInitParameters. +func (in *RollConfigInitParameters) DeepCopy() *RollConfigInitParameters { + if in == nil { + return nil + } + out := new(RollConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RollConfigObservation) DeepCopyInto(out *RollConfigObservation) { + *out = *in + if in.BatchSizePercentage != nil { + in, out := &in.BatchSizePercentage, &out.BatchSizePercentage + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RollConfigObservation. +func (in *RollConfigObservation) DeepCopy() *RollConfigObservation { + if in == nil { + return nil + } + out := new(RollConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RollConfigParameters) DeepCopyInto(out *RollConfigParameters) { + *out = *in + if in.BatchSizePercentage != nil { + in, out := &in.BatchSizePercentage, &out.BatchSizePercentage + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RollConfigParameters. +func (in *RollConfigParameters) DeepCopy() *RollConfigParameters { + if in == nil { + return nil + } + out := new(RollConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SchedulingTaskInitParameters) DeepCopyInto(out *SchedulingTaskInitParameters) { + *out = *in + if in.CronExpression != nil { + in, out := &in.CronExpression, &out.CronExpression + *out = new(string) + **out = **in + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.TaskHeadroom != nil { + in, out := &in.TaskHeadroom, &out.TaskHeadroom + *out = make([]TaskHeadroomInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.TaskType != nil { + in, out := &in.TaskType, &out.TaskType + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SchedulingTaskInitParameters. +func (in *SchedulingTaskInitParameters) DeepCopy() *SchedulingTaskInitParameters { + if in == nil { + return nil + } + out := new(SchedulingTaskInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SchedulingTaskObservation) DeepCopyInto(out *SchedulingTaskObservation) { + *out = *in + if in.CronExpression != nil { + in, out := &in.CronExpression, &out.CronExpression + *out = new(string) + **out = **in + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.TaskHeadroom != nil { + in, out := &in.TaskHeadroom, &out.TaskHeadroom + *out = make([]TaskHeadroomObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.TaskType != nil { + in, out := &in.TaskType, &out.TaskType + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SchedulingTaskObservation. +func (in *SchedulingTaskObservation) DeepCopy() *SchedulingTaskObservation { + if in == nil { + return nil + } + out := new(SchedulingTaskObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SchedulingTaskParameters) DeepCopyInto(out *SchedulingTaskParameters) { + *out = *in + if in.CronExpression != nil { + in, out := &in.CronExpression, &out.CronExpression + *out = new(string) + **out = **in + } + if in.IsEnabled != nil { + in, out := &in.IsEnabled, &out.IsEnabled + *out = new(bool) + **out = **in + } + if in.TaskHeadroom != nil { + in, out := &in.TaskHeadroom, &out.TaskHeadroom + *out = make([]TaskHeadroomParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.TaskType != nil { + in, out := &in.TaskType, &out.TaskType + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SchedulingTaskParameters. +func (in *SchedulingTaskParameters) DeepCopy() *SchedulingTaskParameters { + if in == nil { + return nil + } + out := new(SchedulingTaskParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ShieldedInstanceConfigInitParameters) DeepCopyInto(out *ShieldedInstanceConfigInitParameters) { + *out = *in + if in.EnableIntegrityMonitoring != nil { + in, out := &in.EnableIntegrityMonitoring, &out.EnableIntegrityMonitoring + *out = new(bool) + **out = **in + } + if in.EnableSecureBoot != nil { + in, out := &in.EnableSecureBoot, &out.EnableSecureBoot + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShieldedInstanceConfigInitParameters. +func (in *ShieldedInstanceConfigInitParameters) DeepCopy() *ShieldedInstanceConfigInitParameters { + if in == nil { + return nil + } + out := new(ShieldedInstanceConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ShieldedInstanceConfigObservation) DeepCopyInto(out *ShieldedInstanceConfigObservation) { + *out = *in + if in.EnableIntegrityMonitoring != nil { + in, out := &in.EnableIntegrityMonitoring, &out.EnableIntegrityMonitoring + *out = new(bool) + **out = **in + } + if in.EnableSecureBoot != nil { + in, out := &in.EnableSecureBoot, &out.EnableSecureBoot + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShieldedInstanceConfigObservation. +func (in *ShieldedInstanceConfigObservation) DeepCopy() *ShieldedInstanceConfigObservation { + if in == nil { + return nil + } + out := new(ShieldedInstanceConfigObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ShieldedInstanceConfigParameters) DeepCopyInto(out *ShieldedInstanceConfigParameters) { + *out = *in + if in.EnableIntegrityMonitoring != nil { + in, out := &in.EnableIntegrityMonitoring, &out.EnableIntegrityMonitoring + *out = new(bool) + **out = **in + } + if in.EnableSecureBoot != nil { + in, out := &in.EnableSecureBoot, &out.EnableSecureBoot + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShieldedInstanceConfigParameters. +func (in *ShieldedInstanceConfigParameters) DeepCopy() *ShieldedInstanceConfigParameters { + if in == nil { + return nil + } + out := new(ShieldedInstanceConfigParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StorageInitParameters) DeepCopyInto(out *StorageInitParameters) { + *out = *in + if in.LocalSsdCount != nil { + in, out := &in.LocalSsdCount, &out.LocalSsdCount + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageInitParameters. +func (in *StorageInitParameters) DeepCopy() *StorageInitParameters { + if in == nil { + return nil + } + out := new(StorageInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StorageObservation) DeepCopyInto(out *StorageObservation) { + *out = *in + if in.LocalSsdCount != nil { + in, out := &in.LocalSsdCount, &out.LocalSsdCount + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageObservation. +func (in *StorageObservation) DeepCopy() *StorageObservation { + if in == nil { + return nil + } + out := new(StorageObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StorageParameters) DeepCopyInto(out *StorageParameters) { + *out = *in + if in.LocalSsdCount != nil { + in, out := &in.LocalSsdCount, &out.LocalSsdCount + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageParameters. +func (in *StorageParameters) DeepCopy() *StorageParameters { + if in == nil { + return nil + } + out := new(StorageParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StrategyInitParameters) DeepCopyInto(out *StrategyInitParameters) { + *out = *in + if in.PreemptiblePercentage != nil { + in, out := &in.PreemptiblePercentage, &out.PreemptiblePercentage + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StrategyInitParameters. +func (in *StrategyInitParameters) DeepCopy() *StrategyInitParameters { + if in == nil { + return nil + } + out := new(StrategyInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StrategyObservation) DeepCopyInto(out *StrategyObservation) { + *out = *in + if in.PreemptiblePercentage != nil { + in, out := &in.PreemptiblePercentage, &out.PreemptiblePercentage + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StrategyObservation. +func (in *StrategyObservation) DeepCopy() *StrategyObservation { + if in == nil { + return nil + } + out := new(StrategyObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StrategyParameters) DeepCopyInto(out *StrategyParameters) { + *out = *in + if in.PreemptiblePercentage != nil { + in, out := &in.PreemptiblePercentage, &out.PreemptiblePercentage + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StrategyParameters. +func (in *StrategyParameters) DeepCopy() *StrategyParameters { + if in == nil { + return nil + } + out := new(StrategyParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TaintsInitParameters) DeepCopyInto(out *TaintsInitParameters) { + *out = *in + if in.Effect != nil { + in, out := &in.Effect, &out.Effect + *out = new(string) + **out = **in + } + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TaintsInitParameters. +func (in *TaintsInitParameters) DeepCopy() *TaintsInitParameters { + if in == nil { + return nil + } + out := new(TaintsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TaintsObservation) DeepCopyInto(out *TaintsObservation) { + *out = *in + if in.Effect != nil { + in, out := &in.Effect, &out.Effect + *out = new(string) + **out = **in + } + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TaintsObservation. +func (in *TaintsObservation) DeepCopy() *TaintsObservation { + if in == nil { + return nil + } + out := new(TaintsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TaintsParameters) DeepCopyInto(out *TaintsParameters) { + *out = *in + if in.Effect != nil { + in, out := &in.Effect, &out.Effect + *out = new(string) + **out = **in + } + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TaintsParameters. +func (in *TaintsParameters) DeepCopy() *TaintsParameters { + if in == nil { + return nil + } + out := new(TaintsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TaskHeadroomInitParameters) DeepCopyInto(out *TaskHeadroomInitParameters) { + *out = *in + if in.CPUPerUnit != nil { + in, out := &in.CPUPerUnit, &out.CPUPerUnit + *out = new(float64) + **out = **in + } + if in.GpuPerUnit != nil { + in, out := &in.GpuPerUnit, &out.GpuPerUnit + *out = new(float64) + **out = **in + } + if in.MemoryPerUnit != nil { + in, out := &in.MemoryPerUnit, &out.MemoryPerUnit + *out = new(float64) + **out = **in + } + if in.NumOfUnits != nil { + in, out := &in.NumOfUnits, &out.NumOfUnits + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TaskHeadroomInitParameters. +func (in *TaskHeadroomInitParameters) DeepCopy() *TaskHeadroomInitParameters { + if in == nil { + return nil + } + out := new(TaskHeadroomInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TaskHeadroomObservation) DeepCopyInto(out *TaskHeadroomObservation) { + *out = *in + if in.CPUPerUnit != nil { + in, out := &in.CPUPerUnit, &out.CPUPerUnit + *out = new(float64) + **out = **in + } + if in.GpuPerUnit != nil { + in, out := &in.GpuPerUnit, &out.GpuPerUnit + *out = new(float64) + **out = **in + } + if in.MemoryPerUnit != nil { + in, out := &in.MemoryPerUnit, &out.MemoryPerUnit + *out = new(float64) + **out = **in + } + if in.NumOfUnits != nil { + in, out := &in.NumOfUnits, &out.NumOfUnits + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TaskHeadroomObservation. +func (in *TaskHeadroomObservation) DeepCopy() *TaskHeadroomObservation { + if in == nil { + return nil + } + out := new(TaskHeadroomObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TaskHeadroomParameters) DeepCopyInto(out *TaskHeadroomParameters) { + *out = *in + if in.CPUPerUnit != nil { + in, out := &in.CPUPerUnit, &out.CPUPerUnit + *out = new(float64) + **out = **in + } + if in.GpuPerUnit != nil { + in, out := &in.GpuPerUnit, &out.GpuPerUnit + *out = new(float64) + **out = **in + } + if in.MemoryPerUnit != nil { + in, out := &in.MemoryPerUnit, &out.MemoryPerUnit + *out = new(float64) + **out = **in + } + if in.NumOfUnits != nil { + in, out := &in.NumOfUnits, &out.NumOfUnits + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TaskHeadroomParameters. +func (in *TaskHeadroomParameters) DeepCopy() *TaskHeadroomParameters { + if in == nil { + return nil + } + out := new(TaskHeadroomParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UpdatePolicyInitParameters) DeepCopyInto(out *UpdatePolicyInitParameters) { + *out = *in + if in.RollConfig != nil { + in, out := &in.RollConfig, &out.RollConfig + *out = make([]RollConfigInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ShouldRoll != nil { + in, out := &in.ShouldRoll, &out.ShouldRoll + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UpdatePolicyInitParameters. +func (in *UpdatePolicyInitParameters) DeepCopy() *UpdatePolicyInitParameters { + if in == nil { + return nil + } + out := new(UpdatePolicyInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UpdatePolicyObservation) DeepCopyInto(out *UpdatePolicyObservation) { + *out = *in + if in.RollConfig != nil { + in, out := &in.RollConfig, &out.RollConfig + *out = make([]RollConfigObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ShouldRoll != nil { + in, out := &in.ShouldRoll, &out.ShouldRoll + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UpdatePolicyObservation. +func (in *UpdatePolicyObservation) DeepCopy() *UpdatePolicyObservation { + if in == nil { + return nil + } + out := new(UpdatePolicyObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UpdatePolicyParameters) DeepCopyInto(out *UpdatePolicyParameters) { + *out = *in + if in.RollConfig != nil { + in, out := &in.RollConfig, &out.RollConfig + *out = make([]RollConfigParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ShouldRoll != nil { + in, out := &in.ShouldRoll, &out.ShouldRoll + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UpdatePolicyParameters. +func (in *UpdatePolicyParameters) DeepCopy() *UpdatePolicyParameters { + if in == nil { + return nil + } + out := new(UpdatePolicyParameters) + in.DeepCopyInto(out) + return out +} diff --git a/apis/oceangkevng/v1alpha1/zz_generated.managed.go b/apis/oceangkevng/v1alpha1/zz_generated.managed.go new file mode 100644 index 0000000..577aaa7 --- /dev/null +++ b/apis/oceangkevng/v1alpha1/zz_generated.managed.go @@ -0,0 +1,69 @@ +// SPDX-FileCopyrightText: 2024 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +// Code generated by angryjet. DO NOT EDIT. + +package v1alpha1 + +import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" + +// GetCondition of this OceanGkeVng. +func (mg *OceanGkeVng) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this OceanGkeVng. +func (mg *OceanGkeVng) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this OceanGkeVng. +func (mg *OceanGkeVng) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this OceanGkeVng. +func (mg *OceanGkeVng) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this OceanGkeVng. +func (mg *OceanGkeVng) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this OceanGkeVng. +func (mg *OceanGkeVng) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this OceanGkeVng. +func (mg *OceanGkeVng) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this OceanGkeVng. +func (mg *OceanGkeVng) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this OceanGkeVng. +func (mg *OceanGkeVng) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this OceanGkeVng. +func (mg *OceanGkeVng) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this OceanGkeVng. +func (mg *OceanGkeVng) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this OceanGkeVng. +func (mg *OceanGkeVng) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} diff --git a/apis/oceangkevng/v1alpha1/zz_generated.managedlist.go b/apis/oceangkevng/v1alpha1/zz_generated.managedlist.go new file mode 100644 index 0000000..d3eb8c5 --- /dev/null +++ b/apis/oceangkevng/v1alpha1/zz_generated.managedlist.go @@ -0,0 +1,18 @@ +// SPDX-FileCopyrightText: 2024 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +// Code generated by angryjet. DO NOT EDIT. + +package v1alpha1 + +import resource "github.com/crossplane/crossplane-runtime/pkg/resource" + +// GetItems of this OceanGkeVngList. +func (l *OceanGkeVngList) GetItems() []resource.Managed { + items := make([]resource.Managed, len(l.Items)) + for i := range l.Items { + items[i] = &l.Items[i] + } + return items +} diff --git a/apis/oceangkevng/v1alpha1/zz_groupversion_info.go b/apis/oceangkevng/v1alpha1/zz_groupversion_info.go new file mode 100755 index 0000000..118a096 --- /dev/null +++ b/apis/oceangkevng/v1alpha1/zz_groupversion_info.go @@ -0,0 +1,32 @@ +// SPDX-FileCopyrightText: 2024 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +// Code generated by upjet. DO NOT EDIT. + +// +kubebuilder:object:generate=true +// +groupName=oceangkevng.spot.upbound.io +// +versionName=v1alpha1 +package v1alpha1 + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +// Package type metadata. +const ( + CRDGroup = "oceangkevng.spot.upbound.io" + CRDVersion = "v1alpha1" +) + +var ( + // CRDGroupVersion is the API Group Version used to register the objects + CRDGroupVersion = schema.GroupVersion{Group: CRDGroup, Version: CRDVersion} + + // SchemeBuilder is used to add go types to the GroupVersionKind scheme + SchemeBuilder = &scheme.Builder{GroupVersion: CRDGroupVersion} + + // AddToScheme adds the types in this group-version to the given scheme. + AddToScheme = SchemeBuilder.AddToScheme +) diff --git a/apis/oceangkevng/v1alpha1/zz_oceangkevng_terraformed.go b/apis/oceangkevng/v1alpha1/zz_oceangkevng_terraformed.go new file mode 100755 index 0000000..ec5759e --- /dev/null +++ b/apis/oceangkevng/v1alpha1/zz_oceangkevng_terraformed.go @@ -0,0 +1,129 @@ +// SPDX-FileCopyrightText: 2024 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + "dario.cat/mergo" + "github.com/pkg/errors" + + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" +) + +// GetTerraformResourceType returns Terraform resource type for this OceanGkeVng +func (mg *OceanGkeVng) GetTerraformResourceType() string { + return "spotinst_ocean_gke_launch_spec" +} + +// GetConnectionDetailsMapping for this OceanGkeVng +func (tr *OceanGkeVng) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this OceanGkeVng +func (tr *OceanGkeVng) GetObservation() (map[string]any, error) { + o, err := json.TFParser.Marshal(tr.Status.AtProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(o, &base) +} + +// SetObservation for this OceanGkeVng +func (tr *OceanGkeVng) SetObservation(obs map[string]any) error { + p, err := json.TFParser.Marshal(obs) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) +} + +// GetID returns ID of underlying Terraform resource of this OceanGkeVng +func (tr *OceanGkeVng) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this OceanGkeVng +func (tr *OceanGkeVng) GetParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.ForProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// SetParameters for this OceanGkeVng +func (tr *OceanGkeVng) SetParameters(params map[string]any) error { + p, err := json.TFParser.Marshal(params) + if err != nil { + return err + } + return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) +} + +// GetInitParameters of this OceanGkeVng +func (tr *OceanGkeVng) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + +// GetInitParameters of this OceanGkeVng +func (tr *OceanGkeVng) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { + params, err := tr.GetParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get parameters for resource '%q'", tr.GetName()) + } + if !shouldMergeInitProvider { + return params, nil + } + + initParams, err := tr.GetInitParameters() + if err != nil { + return nil, errors.Wrapf(err, "cannot get init parameters for resource '%q'", tr.GetName()) + } + + // Note(lsviben): mergo.WithSliceDeepCopy is needed to merge the + // slices from the initProvider to forProvider. As it also sets + // overwrite to true, we need to set it back to false, we don't + // want to overwrite the forProvider fields with the initProvider + // fields. + err = mergo.Merge(¶ms, initParams, mergo.WithSliceDeepCopy, func(c *mergo.Config) { + c.Overwrite = false + }) + if err != nil { + return nil, errors.Wrapf(err, "cannot merge spec.initProvider and spec.forProvider parameters for resource '%q'", tr.GetName()) + } + + return params, nil +} + +// LateInitialize this OceanGkeVng using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *OceanGkeVng) LateInitialize(attrs []byte) (bool, error) { + params := &OceanGkeVngParameters{} + if err := json.TFParser.Unmarshal(attrs, params); err != nil { + return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") + } + opts := []resource.GenericLateInitializerOption{resource.WithZeroValueJSONOmitEmptyFilter(resource.CNameWildcard)} + + li := resource.NewGenericLateInitializer(opts...) + return li.LateInitialize(&tr.Spec.ForProvider, params) +} + +// GetTerraformSchemaVersion returns the associated Terraform schema version +func (tr *OceanGkeVng) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/oceangkevng/v1alpha1/zz_oceangkevng_types.go b/apis/oceangkevng/v1alpha1/zz_oceangkevng_types.go new file mode 100755 index 0000000..4ce1529 --- /dev/null +++ b/apis/oceangkevng/v1alpha1/zz_oceangkevng_types.go @@ -0,0 +1,845 @@ +// SPDX-FileCopyrightText: 2024 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +// Code generated by upjet. DO NOT EDIT. + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" +) + +type AccessConfigsInitParameters struct { + + // The launch specification name. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // The type of the access configuration. + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type AccessConfigsObservation struct { + + // The launch specification name. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // The type of the access configuration. + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type AccessConfigsParameters struct { + + // The launch specification name. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // The type of the access configuration. + // +kubebuilder:validation:Optional + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type AliasIPRangesInitParameters struct { + + // specify the IP address range in CIDR notation that can be used for the alias IP addresses associated with the imported node pool. + IPCidrRange *string `json:"ipCidrRange,omitempty" tf:"ip_cidr_range,omitempty"` + + // specify the IP address range for the subnet secondary IP range. + SubnetworkRangeName *string `json:"subnetworkRangeName,omitempty" tf:"subnetwork_range_name,omitempty"` +} + +type AliasIPRangesObservation struct { + + // specify the IP address range in CIDR notation that can be used for the alias IP addresses associated with the imported node pool. + IPCidrRange *string `json:"ipCidrRange,omitempty" tf:"ip_cidr_range,omitempty"` + + // specify the IP address range for the subnet secondary IP range. + SubnetworkRangeName *string `json:"subnetworkRangeName,omitempty" tf:"subnetwork_range_name,omitempty"` +} + +type AliasIPRangesParameters struct { + + // specify the IP address range in CIDR notation that can be used for the alias IP addresses associated with the imported node pool. + // +kubebuilder:validation:Optional + IPCidrRange *string `json:"ipCidrRange" tf:"ip_cidr_range,omitempty"` + + // specify the IP address range for the subnet secondary IP range. + // +kubebuilder:validation:Optional + SubnetworkRangeName *string `json:"subnetworkRangeName" tf:"subnetwork_range_name,omitempty"` +} + +type AutoscaleHeadroomsAutomaticInitParameters struct { + + // Number between 0-200 to control the headroom % of the specific Virtual Node Group. Effective when cluster.autoScaler.headroom.automatic.is_enabled = true is set on the Ocean cluster. + AutoHeadroomPercentage *float64 `json:"autoHeadroomPercentage,omitempty" tf:"auto_headroom_percentage,omitempty"` +} + +type AutoscaleHeadroomsAutomaticObservation struct { + + // Number between 0-200 to control the headroom % of the specific Virtual Node Group. Effective when cluster.autoScaler.headroom.automatic.is_enabled = true is set on the Ocean cluster. + AutoHeadroomPercentage *float64 `json:"autoHeadroomPercentage,omitempty" tf:"auto_headroom_percentage,omitempty"` +} + +type AutoscaleHeadroomsAutomaticParameters struct { + + // Number between 0-200 to control the headroom % of the specific Virtual Node Group. Effective when cluster.autoScaler.headroom.automatic.is_enabled = true is set on the Ocean cluster. + // +kubebuilder:validation:Optional + AutoHeadroomPercentage *float64 `json:"autoHeadroomPercentage,omitempty" tf:"auto_headroom_percentage,omitempty"` +} + +type AutoscaleHeadroomsInitParameters struct { + + // Optionally configure the number of CPUs to allocate for each headroom unit. CPUs are denoted in millicores, where 1000 millicores = 1 vCPU. + CPUPerUnit *float64 `json:"cpuPerUnit,omitempty" tf:"cpu_per_unit,omitempty"` + + // Optionally configure the number of GPUS to allocate for each headroom unit. + GpuPerUnit *float64 `json:"gpuPerUnit,omitempty" tf:"gpu_per_unit,omitempty"` + + // Optionally configure the amount of memory (MiB) to allocate for each headroom unit. + MemoryPerUnit *float64 `json:"memoryPerUnit,omitempty" tf:"memory_per_unit,omitempty"` + + // The number of units to retain as headroom, where each unit has the defined headroom CPU, memory and GPU. + NumOfUnits *float64 `json:"numOfUnits,omitempty" tf:"num_of_units,omitempty"` +} + +type AutoscaleHeadroomsObservation struct { + + // Optionally configure the number of CPUs to allocate for each headroom unit. CPUs are denoted in millicores, where 1000 millicores = 1 vCPU. + CPUPerUnit *float64 `json:"cpuPerUnit,omitempty" tf:"cpu_per_unit,omitempty"` + + // Optionally configure the number of GPUS to allocate for each headroom unit. + GpuPerUnit *float64 `json:"gpuPerUnit,omitempty" tf:"gpu_per_unit,omitempty"` + + // Optionally configure the amount of memory (MiB) to allocate for each headroom unit. + MemoryPerUnit *float64 `json:"memoryPerUnit,omitempty" tf:"memory_per_unit,omitempty"` + + // The number of units to retain as headroom, where each unit has the defined headroom CPU, memory and GPU. + NumOfUnits *float64 `json:"numOfUnits,omitempty" tf:"num_of_units,omitempty"` +} + +type AutoscaleHeadroomsParameters struct { + + // Optionally configure the number of CPUs to allocate for each headroom unit. CPUs are denoted in millicores, where 1000 millicores = 1 vCPU. + // +kubebuilder:validation:Optional + CPUPerUnit *float64 `json:"cpuPerUnit,omitempty" tf:"cpu_per_unit,omitempty"` + + // Optionally configure the number of GPUS to allocate for each headroom unit. + // +kubebuilder:validation:Optional + GpuPerUnit *float64 `json:"gpuPerUnit,omitempty" tf:"gpu_per_unit,omitempty"` + + // Optionally configure the amount of memory (MiB) to allocate for each headroom unit. + // +kubebuilder:validation:Optional + MemoryPerUnit *float64 `json:"memoryPerUnit,omitempty" tf:"memory_per_unit,omitempty"` + + // The number of units to retain as headroom, where each unit has the defined headroom CPU, memory and GPU. + // +kubebuilder:validation:Optional + NumOfUnits *float64 `json:"numOfUnits" tf:"num_of_units,omitempty"` +} + +type CreateOptionsInitParameters struct { + + // When set to an integer greater than 0, a corresponding amount of nodes will be launched from the created Virtual Node Group. + InitialNodes *float64 `json:"initialNodes,omitempty" tf:"initial_nodes,omitempty"` +} + +type CreateOptionsObservation struct { + + // When set to an integer greater than 0, a corresponding amount of nodes will be launched from the created Virtual Node Group. + InitialNodes *float64 `json:"initialNodes,omitempty" tf:"initial_nodes,omitempty"` +} + +type CreateOptionsParameters struct { + + // When set to an integer greater than 0, a corresponding amount of nodes will be launched from the created Virtual Node Group. + // +kubebuilder:validation:Optional + InitialNodes *float64 `json:"initialNodes,omitempty" tf:"initial_nodes,omitempty"` +} + +type LabelsInitParameters struct { + + // The metadata key. + Key *string `json:"key,omitempty" tf:"key,omitempty"` + + // The metadata value. + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +type LabelsObservation struct { + + // The metadata key. + Key *string `json:"key,omitempty" tf:"key,omitempty"` + + // The metadata value. + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +type LabelsParameters struct { + + // The metadata key. + // +kubebuilder:validation:Optional + Key *string `json:"key,omitempty" tf:"key,omitempty"` + + // The metadata value. + // +kubebuilder:validation:Optional + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +type MetadataInitParameters struct { + + // The metadata key. + Key *string `json:"key,omitempty" tf:"key,omitempty"` + + // The metadata value. + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +type MetadataObservation struct { + + // The metadata key. + Key *string `json:"key,omitempty" tf:"key,omitempty"` + + // The metadata value. + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +type MetadataParameters struct { + + // The metadata key. + // +kubebuilder:validation:Optional + Key *string `json:"key,omitempty" tf:"key,omitempty"` + + // The metadata value. + // +kubebuilder:validation:Optional + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +type NetworkInterfacesInitParameters struct { + + // The network protocol of the VNG. + AccessConfigs []AccessConfigsInitParameters `json:"accessConfigs,omitempty" tf:"access_configs,omitempty"` + + // use the imported node pool’s associated aliasIpRange to assign secondary IP addresses to the nodes. Cannot be changed after VNG creation. + AliasIPRanges []AliasIPRangesInitParameters `json:"aliasIpRanges,omitempty" tf:"alias_ip_ranges,omitempty"` + + // The name of the network. + Network *string `json:"network,omitempty" tf:"network,omitempty"` + + // Use a network resource from a different project. Set the project identifier to use its network resource. This parameter is relevant only if the network resource is in a different project. + ProjectID *string `json:"projectId,omitempty" tf:"project_id,omitempty"` +} + +type NetworkInterfacesObservation struct { + + // The network protocol of the VNG. + AccessConfigs []AccessConfigsObservation `json:"accessConfigs,omitempty" tf:"access_configs,omitempty"` + + // use the imported node pool’s associated aliasIpRange to assign secondary IP addresses to the nodes. Cannot be changed after VNG creation. + AliasIPRanges []AliasIPRangesObservation `json:"aliasIpRanges,omitempty" tf:"alias_ip_ranges,omitempty"` + + // The name of the network. + Network *string `json:"network,omitempty" tf:"network,omitempty"` + + // Use a network resource from a different project. Set the project identifier to use its network resource. This parameter is relevant only if the network resource is in a different project. + ProjectID *string `json:"projectId,omitempty" tf:"project_id,omitempty"` +} + +type NetworkInterfacesParameters struct { + + // The network protocol of the VNG. + // +kubebuilder:validation:Optional + AccessConfigs []AccessConfigsParameters `json:"accessConfigs,omitempty" tf:"access_configs,omitempty"` + + // use the imported node pool’s associated aliasIpRange to assign secondary IP addresses to the nodes. Cannot be changed after VNG creation. + // +kubebuilder:validation:Optional + AliasIPRanges []AliasIPRangesParameters `json:"aliasIpRanges,omitempty" tf:"alias_ip_ranges,omitempty"` + + // The name of the network. + // +kubebuilder:validation:Optional + Network *string `json:"network" tf:"network,omitempty"` + + // Use a network resource from a different project. Set the project identifier to use its network resource. This parameter is relevant only if the network resource is in a different project. + // +kubebuilder:validation:Optional + ProjectID *string `json:"projectId,omitempty" tf:"project_id,omitempty"` +} + +type OceanGkeVngInitParameters struct { + + // Set custom headroom per launch spec. provide list of headrooms object. + AutoscaleHeadrooms []AutoscaleHeadroomsInitParameters `json:"autoscaleHeadrooms,omitempty" tf:"autoscale_headrooms,omitempty"` + + // Set automatic headroom per launch spec. + AutoscaleHeadroomsAutomatic []AutoscaleHeadroomsAutomaticInitParameters `json:"autoscaleHeadroomsAutomatic,omitempty" tf:"autoscale_headrooms_automatic,omitempty"` + + CreateOptions []CreateOptionsInitParameters `json:"createOptions,omitempty" tf:"create_options,omitempty"` + + // List of supported machine types for the Launch Spec. + InstanceTypes []*string `json:"instanceTypes,omitempty" tf:"instance_types,omitempty"` + + // Optionally adds labels to instances launched in an Ocean cluster. + Labels []LabelsInitParameters `json:"labels,omitempty" tf:"labels,omitempty"` + + // Cluster's metadata. + Metadata []MetadataInitParameters `json:"metadata,omitempty" tf:"metadata,omitempty"` + + // The launch specification name. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // Settings for network interfaces. + NetworkInterfaces []NetworkInterfacesInitParameters `json:"networkInterfaces,omitempty" tf:"network_interfaces,omitempty"` + + // The node pool you wish to use in your Launch Spec. + NodePoolName *string `json:"nodePoolName,omitempty" tf:"node_pool_name,omitempty"` + + // The Ocean cluster ID. + OceanID *string `json:"oceanId,omitempty" tf:"ocean_id,omitempty"` + + // The Ocean virtual node group resource limits object. + ResourceLimits []ResourceLimitsInitParameters `json:"resourceLimits,omitempty" tf:"resource_limits,omitempty"` + + // Boolean. When set to true, VNG nodes will be treated as if all pods running have the restrict-scale-down label. Therefore, Ocean will not scale nodes down unless empty. + RestrictScaleDown *bool `json:"restrictScaleDown,omitempty" tf:"restrict_scale_down,omitempty"` + + // Root volume size (in GB). + RootVolumeSize *float64 `json:"rootVolumeSize,omitempty" tf:"root_volume_size,omitempty"` + + // Root volume disk type. Valid values: "pd-standard", "pd-ssd". + RootVolumeType *string `json:"rootVolumeType,omitempty" tf:"root_volume_type,omitempty"` + + // Used to define scheduled tasks such as a manual headroom update. + SchedulingTask []SchedulingTaskInitParameters `json:"schedulingTask,omitempty" tf:"scheduling_task,omitempty"` + + // The account used by applications running on the VM to call GCP APIs. + ServiceAccount *string `json:"serviceAccount,omitempty" tf:"service_account,omitempty"` + + // The Ocean shielded instance configuration object. + ShieldedInstanceConfig []ShieldedInstanceConfigInitParameters `json:"shieldedInstanceConfig,omitempty" tf:"shielded_instance_config,omitempty"` + + // Image URL. + SourceImage *string `json:"sourceImage,omitempty" tf:"source_image,omitempty"` + + // The Ocean virtual node group storage object. + Storage []StorageInitParameters `json:"storage,omitempty" tf:"storage,omitempty"` + + // The Ocean Launch Spec Strategy object. + Strategy []StrategyInitParameters `json:"strategy,omitempty" tf:"strategy,omitempty"` + + // Every node launched from this configuration will be tagged with those tags. Note: during creation some tags are automatically imported to the state file, it is required to manually add it to the template configuration + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` + + // Optionally adds labels to instances launched in an Ocean cluster. + Taints []TaintsInitParameters `json:"taints,omitempty" tf:"taints,omitempty"` + + UpdatePolicy []UpdatePolicyInitParameters `json:"updatePolicy,omitempty" tf:"update_policy,omitempty"` +} + +type OceanGkeVngObservation struct { + + // Set custom headroom per launch spec. provide list of headrooms object. + AutoscaleHeadrooms []AutoscaleHeadroomsObservation `json:"autoscaleHeadrooms,omitempty" tf:"autoscale_headrooms,omitempty"` + + // Set automatic headroom per launch spec. + AutoscaleHeadroomsAutomatic []AutoscaleHeadroomsAutomaticObservation `json:"autoscaleHeadroomsAutomatic,omitempty" tf:"autoscale_headrooms_automatic,omitempty"` + + CreateOptions []CreateOptionsObservation `json:"createOptions,omitempty" tf:"create_options,omitempty"` + + // The Spotinst LaunchSpec ID. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // List of supported machine types for the Launch Spec. + InstanceTypes []*string `json:"instanceTypes,omitempty" tf:"instance_types,omitempty"` + + // Optionally adds labels to instances launched in an Ocean cluster. + Labels []LabelsObservation `json:"labels,omitempty" tf:"labels,omitempty"` + + // Cluster's metadata. + Metadata []MetadataObservation `json:"metadata,omitempty" tf:"metadata,omitempty"` + + // The launch specification name. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // Settings for network interfaces. + NetworkInterfaces []NetworkInterfacesObservation `json:"networkInterfaces,omitempty" tf:"network_interfaces,omitempty"` + + // The node pool you wish to use in your Launch Spec. + NodePoolName *string `json:"nodePoolName,omitempty" tf:"node_pool_name,omitempty"` + + // The Ocean cluster ID. + OceanID *string `json:"oceanId,omitempty" tf:"ocean_id,omitempty"` + + // The Ocean virtual node group resource limits object. + ResourceLimits []ResourceLimitsObservation `json:"resourceLimits,omitempty" tf:"resource_limits,omitempty"` + + // Boolean. When set to true, VNG nodes will be treated as if all pods running have the restrict-scale-down label. Therefore, Ocean will not scale nodes down unless empty. + RestrictScaleDown *bool `json:"restrictScaleDown,omitempty" tf:"restrict_scale_down,omitempty"` + + // Root volume size (in GB). + RootVolumeSize *float64 `json:"rootVolumeSize,omitempty" tf:"root_volume_size,omitempty"` + + // Root volume disk type. Valid values: "pd-standard", "pd-ssd". + RootVolumeType *string `json:"rootVolumeType,omitempty" tf:"root_volume_type,omitempty"` + + // Used to define scheduled tasks such as a manual headroom update. + SchedulingTask []SchedulingTaskObservation `json:"schedulingTask,omitempty" tf:"scheduling_task,omitempty"` + + // The account used by applications running on the VM to call GCP APIs. + ServiceAccount *string `json:"serviceAccount,omitempty" tf:"service_account,omitempty"` + + // The Ocean shielded instance configuration object. + ShieldedInstanceConfig []ShieldedInstanceConfigObservation `json:"shieldedInstanceConfig,omitempty" tf:"shielded_instance_config,omitempty"` + + // Image URL. + SourceImage *string `json:"sourceImage,omitempty" tf:"source_image,omitempty"` + + // The Ocean virtual node group storage object. + Storage []StorageObservation `json:"storage,omitempty" tf:"storage,omitempty"` + + // The Ocean Launch Spec Strategy object. + Strategy []StrategyObservation `json:"strategy,omitempty" tf:"strategy,omitempty"` + + // Every node launched from this configuration will be tagged with those tags. Note: during creation some tags are automatically imported to the state file, it is required to manually add it to the template configuration + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` + + // Optionally adds labels to instances launched in an Ocean cluster. + Taints []TaintsObservation `json:"taints,omitempty" tf:"taints,omitempty"` + + UpdatePolicy []UpdatePolicyObservation `json:"updatePolicy,omitempty" tf:"update_policy,omitempty"` +} + +type OceanGkeVngParameters struct { + + // Set custom headroom per launch spec. provide list of headrooms object. + // +kubebuilder:validation:Optional + AutoscaleHeadrooms []AutoscaleHeadroomsParameters `json:"autoscaleHeadrooms,omitempty" tf:"autoscale_headrooms,omitempty"` + + // Set automatic headroom per launch spec. + // +kubebuilder:validation:Optional + AutoscaleHeadroomsAutomatic []AutoscaleHeadroomsAutomaticParameters `json:"autoscaleHeadroomsAutomatic,omitempty" tf:"autoscale_headrooms_automatic,omitempty"` + + // +kubebuilder:validation:Optional + CreateOptions []CreateOptionsParameters `json:"createOptions,omitempty" tf:"create_options,omitempty"` + + // List of supported machine types for the Launch Spec. + // +kubebuilder:validation:Optional + InstanceTypes []*string `json:"instanceTypes,omitempty" tf:"instance_types,omitempty"` + + // Optionally adds labels to instances launched in an Ocean cluster. + // +kubebuilder:validation:Optional + Labels []LabelsParameters `json:"labels,omitempty" tf:"labels,omitempty"` + + // Cluster's metadata. + // +kubebuilder:validation:Optional + Metadata []MetadataParameters `json:"metadata,omitempty" tf:"metadata,omitempty"` + + // The launch specification name. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // Settings for network interfaces. + // +kubebuilder:validation:Optional + NetworkInterfaces []NetworkInterfacesParameters `json:"networkInterfaces,omitempty" tf:"network_interfaces,omitempty"` + + // The node pool you wish to use in your Launch Spec. + // +kubebuilder:validation:Optional + NodePoolName *string `json:"nodePoolName,omitempty" tf:"node_pool_name,omitempty"` + + // The Ocean cluster ID. + // +kubebuilder:validation:Optional + OceanID *string `json:"oceanId,omitempty" tf:"ocean_id,omitempty"` + + // The Ocean virtual node group resource limits object. + // +kubebuilder:validation:Optional + ResourceLimits []ResourceLimitsParameters `json:"resourceLimits,omitempty" tf:"resource_limits,omitempty"` + + // Boolean. When set to true, VNG nodes will be treated as if all pods running have the restrict-scale-down label. Therefore, Ocean will not scale nodes down unless empty. + // +kubebuilder:validation:Optional + RestrictScaleDown *bool `json:"restrictScaleDown,omitempty" tf:"restrict_scale_down,omitempty"` + + // Root volume size (in GB). + // +kubebuilder:validation:Optional + RootVolumeSize *float64 `json:"rootVolumeSize,omitempty" tf:"root_volume_size,omitempty"` + + // Root volume disk type. Valid values: "pd-standard", "pd-ssd". + // +kubebuilder:validation:Optional + RootVolumeType *string `json:"rootVolumeType,omitempty" tf:"root_volume_type,omitempty"` + + // Used to define scheduled tasks such as a manual headroom update. + // +kubebuilder:validation:Optional + SchedulingTask []SchedulingTaskParameters `json:"schedulingTask,omitempty" tf:"scheduling_task,omitempty"` + + // The account used by applications running on the VM to call GCP APIs. + // +kubebuilder:validation:Optional + ServiceAccount *string `json:"serviceAccount,omitempty" tf:"service_account,omitempty"` + + // The Ocean shielded instance configuration object. + // +kubebuilder:validation:Optional + ShieldedInstanceConfig []ShieldedInstanceConfigParameters `json:"shieldedInstanceConfig,omitempty" tf:"shielded_instance_config,omitempty"` + + // Image URL. + // +kubebuilder:validation:Optional + SourceImage *string `json:"sourceImage,omitempty" tf:"source_image,omitempty"` + + // The Ocean virtual node group storage object. + // +kubebuilder:validation:Optional + Storage []StorageParameters `json:"storage,omitempty" tf:"storage,omitempty"` + + // The Ocean Launch Spec Strategy object. + // +kubebuilder:validation:Optional + Strategy []StrategyParameters `json:"strategy,omitempty" tf:"strategy,omitempty"` + + // Every node launched from this configuration will be tagged with those tags. Note: during creation some tags are automatically imported to the state file, it is required to manually add it to the template configuration + // +kubebuilder:validation:Optional + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` + + // Optionally adds labels to instances launched in an Ocean cluster. + // +kubebuilder:validation:Optional + Taints []TaintsParameters `json:"taints,omitempty" tf:"taints,omitempty"` + + // +kubebuilder:validation:Optional + UpdatePolicy []UpdatePolicyParameters `json:"updatePolicy,omitempty" tf:"update_policy,omitempty"` +} + +type ResourceLimitsInitParameters struct { + + // Option to set a maximum number of instances per virtual node group. Can be null. If set, the value must be greater than or equal to 0. + MaxInstanceCount *float64 `json:"maxInstanceCount,omitempty" tf:"max_instance_count,omitempty"` + + // Option to set a minimum number of instances per virtual node group. Can be null. If set, the value must be greater than or equal to 0. + MinInstanceCount *float64 `json:"minInstanceCount,omitempty" tf:"min_instance_count,omitempty"` +} + +type ResourceLimitsObservation struct { + + // Option to set a maximum number of instances per virtual node group. Can be null. If set, the value must be greater than or equal to 0. + MaxInstanceCount *float64 `json:"maxInstanceCount,omitempty" tf:"max_instance_count,omitempty"` + + // Option to set a minimum number of instances per virtual node group. Can be null. If set, the value must be greater than or equal to 0. + MinInstanceCount *float64 `json:"minInstanceCount,omitempty" tf:"min_instance_count,omitempty"` +} + +type ResourceLimitsParameters struct { + + // Option to set a maximum number of instances per virtual node group. Can be null. If set, the value must be greater than or equal to 0. + // +kubebuilder:validation:Optional + MaxInstanceCount *float64 `json:"maxInstanceCount,omitempty" tf:"max_instance_count,omitempty"` + + // Option to set a minimum number of instances per virtual node group. Can be null. If set, the value must be greater than or equal to 0. + // +kubebuilder:validation:Optional + MinInstanceCount *float64 `json:"minInstanceCount,omitempty" tf:"min_instance_count,omitempty"` +} + +type RollConfigInitParameters struct { + + // Sets the percentage of the instances to deploy in each batch. + BatchSizePercentage *float64 `json:"batchSizePercentage,omitempty" tf:"batch_size_percentage,omitempty"` +} + +type RollConfigObservation struct { + + // Sets the percentage of the instances to deploy in each batch. + BatchSizePercentage *float64 `json:"batchSizePercentage,omitempty" tf:"batch_size_percentage,omitempty"` +} + +type RollConfigParameters struct { + + // Sets the percentage of the instances to deploy in each batch. + // +kubebuilder:validation:Optional + BatchSizePercentage *float64 `json:"batchSizePercentage" tf:"batch_size_percentage,omitempty"` +} + +type SchedulingTaskInitParameters struct { + + // A valid cron expression. For example : " * * * * * ". The cron job runs in UTC time and is in Unix cron format. + CronExpression *string `json:"cronExpression,omitempty" tf:"cron_expression,omitempty"` + + // Describes whether the task is enabled. When true, the task runs. When false, it does not run. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // The config of this scheduled task. Depends on the value of taskType. + TaskHeadroom []TaskHeadroomInitParameters `json:"taskHeadroom,omitempty" tf:"task_headroom,omitempty"` + + // The activity that you are scheduling. Valid values: "manualHeadroomUpdate". + TaskType *string `json:"taskType,omitempty" tf:"task_type,omitempty"` +} + +type SchedulingTaskObservation struct { + + // A valid cron expression. For example : " * * * * * ". The cron job runs in UTC time and is in Unix cron format. + CronExpression *string `json:"cronExpression,omitempty" tf:"cron_expression,omitempty"` + + // Describes whether the task is enabled. When true, the task runs. When false, it does not run. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` + + // The config of this scheduled task. Depends on the value of taskType. + TaskHeadroom []TaskHeadroomObservation `json:"taskHeadroom,omitempty" tf:"task_headroom,omitempty"` + + // The activity that you are scheduling. Valid values: "manualHeadroomUpdate". + TaskType *string `json:"taskType,omitempty" tf:"task_type,omitempty"` +} + +type SchedulingTaskParameters struct { + + // A valid cron expression. For example : " * * * * * ". The cron job runs in UTC time and is in Unix cron format. + // +kubebuilder:validation:Optional + CronExpression *string `json:"cronExpression" tf:"cron_expression,omitempty"` + + // Describes whether the task is enabled. When true, the task runs. When false, it does not run. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled" tf:"is_enabled,omitempty"` + + // The config of this scheduled task. Depends on the value of taskType. + // +kubebuilder:validation:Optional + TaskHeadroom []TaskHeadroomParameters `json:"taskHeadroom,omitempty" tf:"task_headroom,omitempty"` + + // The activity that you are scheduling. Valid values: "manualHeadroomUpdate". + // +kubebuilder:validation:Optional + TaskType *string `json:"taskType" tf:"task_type,omitempty"` +} + +type ShieldedInstanceConfigInitParameters struct { + + // Boolean. Enable the integrity monitoring parameter on the GCP instances. + EnableIntegrityMonitoring *bool `json:"enableIntegrityMonitoring,omitempty" tf:"enable_integrity_monitoring,omitempty"` + + // Boolean. Enable the secure boot parameter on the GCP instances. + EnableSecureBoot *bool `json:"enableSecureBoot,omitempty" tf:"enable_secure_boot,omitempty"` +} + +type ShieldedInstanceConfigObservation struct { + + // Boolean. Enable the integrity monitoring parameter on the GCP instances. + EnableIntegrityMonitoring *bool `json:"enableIntegrityMonitoring,omitempty" tf:"enable_integrity_monitoring,omitempty"` + + // Boolean. Enable the secure boot parameter on the GCP instances. + EnableSecureBoot *bool `json:"enableSecureBoot,omitempty" tf:"enable_secure_boot,omitempty"` +} + +type ShieldedInstanceConfigParameters struct { + + // Boolean. Enable the integrity monitoring parameter on the GCP instances. + // +kubebuilder:validation:Optional + EnableIntegrityMonitoring *bool `json:"enableIntegrityMonitoring,omitempty" tf:"enable_integrity_monitoring,omitempty"` + + // Boolean. Enable the secure boot parameter on the GCP instances. + // +kubebuilder:validation:Optional + EnableSecureBoot *bool `json:"enableSecureBoot,omitempty" tf:"enable_secure_boot,omitempty"` +} + +type StorageInitParameters struct { + + // Defines the number of local SSDs to be attached per node for this VNG. + LocalSsdCount *float64 `json:"localSsdCount,omitempty" tf:"local_ssd_count,omitempty"` +} + +type StorageObservation struct { + + // Defines the number of local SSDs to be attached per node for this VNG. + LocalSsdCount *float64 `json:"localSsdCount,omitempty" tf:"local_ssd_count,omitempty"` +} + +type StorageParameters struct { + + // Defines the number of local SSDs to be attached per node for this VNG. + // +kubebuilder:validation:Optional + LocalSsdCount *float64 `json:"localSsdCount,omitempty" tf:"local_ssd_count,omitempty"` +} + +type StrategyInitParameters struct { + + // Defines the desired preemptible percentage for this launch specification. + PreemptiblePercentage *float64 `json:"preemptiblePercentage,omitempty" tf:"preemptible_percentage,omitempty"` +} + +type StrategyObservation struct { + + // Defines the desired preemptible percentage for this launch specification. + PreemptiblePercentage *float64 `json:"preemptiblePercentage,omitempty" tf:"preemptible_percentage,omitempty"` +} + +type StrategyParameters struct { + + // Defines the desired preemptible percentage for this launch specification. + // +kubebuilder:validation:Optional + PreemptiblePercentage *float64 `json:"preemptiblePercentage,omitempty" tf:"preemptible_percentage,omitempty"` +} + +type TaintsInitParameters struct { + + // The effect of the taint. Valid values: "NoSchedule", "PreferNoSchedule", "NoExecute". + Effect *string `json:"effect,omitempty" tf:"effect,omitempty"` + + // The metadata key. + Key *string `json:"key,omitempty" tf:"key,omitempty"` + + // The metadata value. + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +type TaintsObservation struct { + + // The effect of the taint. Valid values: "NoSchedule", "PreferNoSchedule", "NoExecute". + Effect *string `json:"effect,omitempty" tf:"effect,omitempty"` + + // The metadata key. + Key *string `json:"key,omitempty" tf:"key,omitempty"` + + // The metadata value. + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +type TaintsParameters struct { + + // The effect of the taint. Valid values: "NoSchedule", "PreferNoSchedule", "NoExecute". + // +kubebuilder:validation:Optional + Effect *string `json:"effect,omitempty" tf:"effect,omitempty"` + + // The metadata key. + // +kubebuilder:validation:Optional + Key *string `json:"key,omitempty" tf:"key,omitempty"` + + // The metadata value. + // +kubebuilder:validation:Optional + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +type TaskHeadroomInitParameters struct { + + // Optionally configure the number of CPUs to allocate for each headroom unit. CPUs are denoted in millicores, where 1000 millicores = 1 vCPU. + CPUPerUnit *float64 `json:"cpuPerUnit,omitempty" tf:"cpu_per_unit,omitempty"` + + // Optionally configure the number of GPUS to allocate for each headroom unit. + GpuPerUnit *float64 `json:"gpuPerUnit,omitempty" tf:"gpu_per_unit,omitempty"` + + // Optionally configure the amount of memory (MiB) to allocate for each headroom unit. + MemoryPerUnit *float64 `json:"memoryPerUnit,omitempty" tf:"memory_per_unit,omitempty"` + + // The number of units to retain as headroom, where each unit has the defined headroom CPU, memory and GPU. + NumOfUnits *float64 `json:"numOfUnits,omitempty" tf:"num_of_units,omitempty"` +} + +type TaskHeadroomObservation struct { + + // Optionally configure the number of CPUs to allocate for each headroom unit. CPUs are denoted in millicores, where 1000 millicores = 1 vCPU. + CPUPerUnit *float64 `json:"cpuPerUnit,omitempty" tf:"cpu_per_unit,omitempty"` + + // Optionally configure the number of GPUS to allocate for each headroom unit. + GpuPerUnit *float64 `json:"gpuPerUnit,omitempty" tf:"gpu_per_unit,omitempty"` + + // Optionally configure the amount of memory (MiB) to allocate for each headroom unit. + MemoryPerUnit *float64 `json:"memoryPerUnit,omitempty" tf:"memory_per_unit,omitempty"` + + // The number of units to retain as headroom, where each unit has the defined headroom CPU, memory and GPU. + NumOfUnits *float64 `json:"numOfUnits,omitempty" tf:"num_of_units,omitempty"` +} + +type TaskHeadroomParameters struct { + + // Optionally configure the number of CPUs to allocate for each headroom unit. CPUs are denoted in millicores, where 1000 millicores = 1 vCPU. + // +kubebuilder:validation:Optional + CPUPerUnit *float64 `json:"cpuPerUnit,omitempty" tf:"cpu_per_unit,omitempty"` + + // Optionally configure the number of GPUS to allocate for each headroom unit. + // +kubebuilder:validation:Optional + GpuPerUnit *float64 `json:"gpuPerUnit,omitempty" tf:"gpu_per_unit,omitempty"` + + // Optionally configure the amount of memory (MiB) to allocate for each headroom unit. + // +kubebuilder:validation:Optional + MemoryPerUnit *float64 `json:"memoryPerUnit,omitempty" tf:"memory_per_unit,omitempty"` + + // The number of units to retain as headroom, where each unit has the defined headroom CPU, memory and GPU. + // +kubebuilder:validation:Optional + NumOfUnits *float64 `json:"numOfUnits" tf:"num_of_units,omitempty"` +} + +type UpdatePolicyInitParameters struct { + + // Holds the roll configuration. + RollConfig []RollConfigInitParameters `json:"rollConfig,omitempty" tf:"roll_config,omitempty"` + + // Enables the roll. + ShouldRoll *bool `json:"shouldRoll,omitempty" tf:"should_roll,omitempty"` +} + +type UpdatePolicyObservation struct { + + // Holds the roll configuration. + RollConfig []RollConfigObservation `json:"rollConfig,omitempty" tf:"roll_config,omitempty"` + + // Enables the roll. + ShouldRoll *bool `json:"shouldRoll,omitempty" tf:"should_roll,omitempty"` +} + +type UpdatePolicyParameters struct { + + // Holds the roll configuration. + // +kubebuilder:validation:Optional + RollConfig []RollConfigParameters `json:"rollConfig,omitempty" tf:"roll_config,omitempty"` + + // Enables the roll. + // +kubebuilder:validation:Optional + ShouldRoll *bool `json:"shouldRoll" tf:"should_roll,omitempty"` +} + +// OceanGkeVngSpec defines the desired state of OceanGkeVng +type OceanGkeVngSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider OceanGkeVngParameters `json:"forProvider"` + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider OceanGkeVngInitParameters `json:"initProvider,omitempty"` +} + +// OceanGkeVngStatus defines the observed state of OceanGkeVng. +type OceanGkeVngStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider OceanGkeVngObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion + +// OceanGkeVng is the Schema for the OceanGkeVngs API. Provides a Spotinst Ocean Launch Spec resource using GKE. +// +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" +// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,spot} +type OceanGkeVng struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.oceanId) || (has(self.initProvider) && has(self.initProvider.oceanId))",message="spec.forProvider.oceanId is a required parameter" + Spec OceanGkeVngSpec `json:"spec"` + Status OceanGkeVngStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// OceanGkeVngList contains a list of OceanGkeVngs +type OceanGkeVngList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []OceanGkeVng `json:"items"` +} + +// Repository type metadata. +var ( + OceanGkeVng_Kind = "OceanGkeVng" + OceanGkeVng_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: OceanGkeVng_Kind}.String() + OceanGkeVng_KindAPIVersion = OceanGkeVng_Kind + "." + CRDGroupVersion.String() + OceanGkeVng_GroupVersionKind = CRDGroupVersion.WithKind(OceanGkeVng_Kind) +) + +func init() { + SchemeBuilder.Register(&OceanGkeVng{}, &OceanGkeVngList{}) +} diff --git a/apis/zz_register.go b/apis/zz_register.go index 4d6c248..a8b70a2 100755 --- a/apis/zz_register.go +++ b/apis/zz_register.go @@ -14,6 +14,8 @@ import ( v1alpha1oceanaksvng "github.com/spotinst/crossplane-provider-spot/apis/oceanaksvng/v1alpha1" v1alpha1oceanaws "github.com/spotinst/crossplane-provider-spot/apis/oceanaws/v1alpha1" v1alpha1oceanawslaunchspec "github.com/spotinst/crossplane-provider-spot/apis/oceanawslaunchspec/v1alpha1" + v1alpha1oceangke "github.com/spotinst/crossplane-provider-spot/apis/oceangke/v1alpha1" + v1alpha1oceangkevng "github.com/spotinst/crossplane-provider-spot/apis/oceangkevng/v1alpha1" v1alpha1oceanrightsizingrule "github.com/spotinst/crossplane-provider-spot/apis/oceanrightsizingrule/v1alpha1" v1alpha1apis "github.com/spotinst/crossplane-provider-spot/apis/v1alpha1" v1beta1 "github.com/spotinst/crossplane-provider-spot/apis/v1beta1" @@ -26,6 +28,8 @@ func init() { v1alpha1oceanaksvng.SchemeBuilder.AddToScheme, v1alpha1oceanaws.SchemeBuilder.AddToScheme, v1alpha1oceanawslaunchspec.SchemeBuilder.AddToScheme, + v1alpha1oceangke.SchemeBuilder.AddToScheme, + v1alpha1oceangkevng.SchemeBuilder.AddToScheme, v1alpha1oceanrightsizingrule.SchemeBuilder.AddToScheme, v1alpha1apis.SchemeBuilder.AddToScheme, v1beta1.SchemeBuilder.AddToScheme, diff --git a/config/external_name.go b/config/external_name.go index 3580cdd..93798d8 100644 --- a/config/external_name.go +++ b/config/external_name.go @@ -15,6 +15,8 @@ var ExternalNameConfigs = map[string]config.ExternalName{ "spotinst_ocean_aks_np": config.IdentifierFromProvider, "spotinst_ocean_aks_np_virtual_node_group": config.IdentifierFromProvider, "spotinst_ocean_right_sizing_rule": config.IdentifierFromProvider, + "spotinst_ocean_gke_import": config.IdentifierFromProvider, + "spotinst_ocean_gke_launch_spec": config.IdentifierFromProvider, } // ExternalNameConfigurations applies all external name configs listed in the diff --git a/config/oceangke/config.go b/config/oceangke/config.go new file mode 100644 index 0000000..8da17b8 --- /dev/null +++ b/config/oceangke/config.go @@ -0,0 +1,20 @@ +package oceangke + +/* +Copyright 2021 Upbound Inc. +*/ + +import ( + ujconfig "github.com/crossplane/upjet/pkg/config" +) + +// Configure configures the null group. +func Configure(p *ujconfig.Provider) { + p.AddResourceConfigurator("spotinst_ocean_gke_import", func(r *ujconfig.Resource) { + + // we need to override the default group that upjet generated for + // this resource, which would be "spotinst" + r.ShortGroup = "oceangke" + r.Kind = "OceanGke" + }) +} diff --git a/config/oceangkevng/config.go b/config/oceangkevng/config.go new file mode 100644 index 0000000..7be7363 --- /dev/null +++ b/config/oceangkevng/config.go @@ -0,0 +1,20 @@ +package oceangkevng + +/* +Copyright 2021 Upbound Inc. +*/ + +import ( + ujconfig "github.com/crossplane/upjet/pkg/config" +) + +// Configure configures the null group. +func Configure(p *ujconfig.Provider) { + p.AddResourceConfigurator("spotinst_ocean_gke_launch_spec", func(r *ujconfig.Resource) { + + // we need to override the default group that upjet generated for + // this resource, which would be "spotinst" + r.ShortGroup = "oceangkevng" + r.Kind = "OceanGkeVng" + }) +} diff --git a/config/provider-metadata.yaml b/config/provider-metadata.yaml index 2c115c2..2b897bc 100644 --- a/config/provider-metadata.yaml +++ b/config/provider-metadata.yaml @@ -2245,6 +2245,7 @@ resources: parameters_cluster_roll: '- (Optional) Set clusterRoll object' patch: '- (Optional, Default:false) When set to ''true'', the auto-update process will update the VNGs’ images with the latest security patches. either "patch" or "minorVersion" must be true.' region: '- (Required) The region the cluster will run in.' + reserved_enis: '- (Optional, Default: 0) Specifies the count of ENIs to reserve per instance type for scaling purposes.' resource: '- (Required) String. Resource type to increase volume size dynamically by. (Valid values: CPU)' resource_limits: '- (Optional) Optionally set upper and lower bounds on the resource usage of the cluster.' resource_tag_specification: '- (Optional) Specify which resources should be tagged with Virtual Node Group tags or Ocean tags. If tags are set on the VNG, the resources will be tagged with the VNG tags; otherwise, they will be tagged with the Ocean tags.' @@ -2417,6 +2418,7 @@ resources: "m4.large", "m4.xlarge" ], + "reserved_enis": 1, "resource_limits": [ { "max_instance_count": 4, @@ -2549,6 +2551,7 @@ resources: ocean_id: '- (Required) The ID of the Ocean cluster.' preferred_od_types: '- (Optional) A list of instance types. Takes the preferred types into consideration while maintaining a variety of machine types running for optimized distribution.' preferred_spot_types: '- (Optional) A list of instance types. Takes the preferred types into consideration while maintaining a variety of machine types running for optimized distribution.' + reserved_enis: '- (Optional, Default: 0) Specifies the count of ENIs to reserve per instance type for scaling purposes.' resource: '- (Required) String. Resource type to increase volume size dynamically by. (Valid values: CPU)' resource_limits: '- (Optional)' respect_pdb: '- (Optional, Default: false) During the roll, if the parameter is set to true we honor PDB during the instance replacement.' @@ -3022,6 +3025,21 @@ resources: "cluster_name": "example-cluster-name", "controller_cluster_id": "example-controller-123124", "desired_capacity": 0, + "filters": [ + { + "exclude_families": [ + "n2" + ], + "include_families": [ + "c2", + "c3" + ], + "max_memory_gib": 16, + "max_vcpu": 16, + "min_memory_gib": 8, + "min_vcpu": 2 + } + ], "location": "us-central1-a", "max_size": 2, "min_size": 0, @@ -3064,9 +3082,13 @@ resources: enable_integrity_monitoring: '- (Optional) Boolean. Enable the integrity monitoring parameter on the GCP instances.' enable_secure_boot: '- (Optional) Boolean. Enable the secure boot parameter on the GCP instances.' evaluation_periods: '- (Optional, Default: null) The number of evaluation periods that should accumulate before a scale down action takes place.' + exclude_families: '- (Optional) Types belonging to a family from the ExcludeFamilies will not be available for scaling (asterisk wildcard is also supported). For example, C* will exclude instance types from these families: c5, c4, c4a, etc.' + filters: '- (Optional) List of filters. The Instance types that match with all filters compose the Ocean''s whitelist parameter. Cannot be configured together with whitelist/blacklist.' gpu_per_unit: '- (Optional) How much GPU allocate for headroom unit.' headroom: '- (Optional) Spare resource capacity management enabling fast assignment of Pods without waiting for new resources to launch.' id: '- The Spotinst Ocean ID.' + include_families: '- (Optional) Types belonging to a family from the IncludeFamilies will be available for scaling (asterisk wildcard is also supported). For example, C* will include instance types from these families: c5, c4, c4a, etc.' + is_aggressive_scale_down_enabled: '- (Optional, Default: false) When set to ''true'', the Aggressive Scale Down feature is enabled.' is_auto_config: '- (Optional, Default: true) Automatically configure and optimize headroom resources.' is_enabled: |- - (Optional) Flag to enable / disable the shutdown hours. @@ -3074,12 +3096,14 @@ resources: launch_spec_ids: '- (Optional) List of Virtual Node Group identifiers to be rolled.' location: '- (Required) The zone the master cluster is located in.' location_type: '- (Optional) Sets which location the backend services will be active. Valid values: regional, global.' - max_memory_gib: '- (Optional) The maximum memory in GiB units that can be allocated to the cluster.' + max_memory_gib: '- (Optional) Maximum amount of Memory (GiB).' max_scale_down_percentage: '- (Optional) Would represent the maximum % to scale-down. Number between 1-100.' max_size: '- (Optional, Default: 1000) The upper limit of instances the cluster can scale up to.' - max_vcpu: '- (Optional) The maximum cpu in vCpu units that can be allocated to the cluster.' + max_vcpu: '- (Optional) Maximum number of vcpus available.' memory_per_unit: '- (Optional) Optionally configure the amount of memory (MiB) to allocate the headroom.' + min_memory_gib: '- (Optional) Minimum amount of Memory (GiB).' min_size: '- (Optional) The lower limit of instances the cluster can scale down to.' + min_vcpu: '- (Optional) Minimum number of vcpus available.' named_port: '- (Optional) Describes a named port and a list of ports.' num_of_units: '- (Optional) The number of units to retain as headroom, where each unit has the defined headroom CPU and memory.' port_name: '- (Required) The name of the port.' diff --git a/config/provider.go b/config/provider.go index 4d87446..2145a46 100644 --- a/config/provider.go +++ b/config/provider.go @@ -8,6 +8,9 @@ import ( // Note(turkenh): we are importing this to embed provider schema document _ "embed" + "github.com/spotinst/crossplane-provider-spot/config/oceangke" + "github.com/spotinst/crossplane-provider-spot/config/oceangkevng" + "github.com/spotinst/crossplane-provider-spot/config/oceanaks" "github.com/spotinst/crossplane-provider-spot/config/oceanaksvng" "github.com/spotinst/crossplane-provider-spot/config/oceanaws" @@ -45,6 +48,8 @@ func GetProvider() *ujconfig.Provider { oceanaks.Configure, oceanaksvng.Configure, oceanrightsizingrule.Configure, + oceangke.Configure, + oceangkevng.Configure, } { configure(pc) } diff --git a/config/schema.json b/config/schema.json index 59b2249..7519fa7 100644 --- a/config/schema.json +++ b/config/schema.json @@ -1 +1 @@ -{"format_version":"1.0","provider_schemas":{"registry.terraform.io/spotinst/spotinst":{"provider":{"version":0,"block":{"attributes":{"account":{"type":"string","description":"Spotinst Account ID","description_kind":"plain","optional":true},"enabled":{"type":"bool","description":"Enable or disable the Spotinst provider","description_kind":"plain","optional":true},"feature_flags":{"type":"string","description":"Spotinst SDK Feature Flags","description_kind":"plain","optional":true},"token":{"type":"string","description":"Spotinst Personal API Access Token","description_kind":"plain","optional":true}},"description_kind":"plain"}},"resource_schemas":{"spotinst_account":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"spotinst_account_aws":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"spotinst_credentials_aws":{"version":0,"block":{"attributes":{"account_id":{"type":"string","description_kind":"plain","required":true},"iamrole":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"spotinst_credentials_gcp":{"version":0,"block":{"attributes":{"account_id":{"type":"string","description_kind":"plain","required":true},"auth_provider_x509_cert_url":{"type":"string","description_kind":"plain","required":true},"auth_uri":{"type":"string","description_kind":"plain","required":true},"client_email":{"type":"string","description_kind":"plain","required":true},"client_id":{"type":"string","description_kind":"plain","required":true},"client_x509_cert_url":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"private_key":{"type":"string","description_kind":"plain","required":true},"private_key_id":{"type":"string","description_kind":"plain","required":true},"project_id":{"type":"string","description_kind":"plain","required":true},"token_uri":{"type":"string","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"spotinst_data_integration":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true},"status":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"s3":{"nesting_mode":"list","block":{"attributes":{"bucket_name":{"type":"string","description_kind":"plain","required":true},"subdir":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"spotinst_elastigroup_aws":{"version":0,"block":{"attributes":{"auto_healing":{"type":"bool","description_kind":"plain","optional":true},"availability_zones":{"type":["list","string"],"description_kind":"plain","optional":true},"block_devices_mode":{"type":"string","description_kind":"plain","optional":true},"capacity_unit":{"type":"string","description_kind":"plain","optional":true,"computed":true},"consider_od_pricing":{"type":"bool","description_kind":"plain","optional":true},"cpu_credits":{"type":"string","description_kind":"plain","optional":true},"description":{"type":"string","description_kind":"plain","optional":true},"desired_capacity":{"type":"number","description_kind":"plain","optional":true},"draining_timeout":{"type":"number","description_kind":"plain","optional":true,"computed":true},"ebs_optimized":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"elastic_ips":{"type":["list","string"],"description_kind":"plain","optional":true},"elastic_load_balancers":{"type":["list","string"],"description_kind":"plain","optional":true},"enable_monitoring":{"type":"bool","description_kind":"plain","optional":true},"fallback_to_ondemand":{"type":"bool","description_kind":"plain","required":true},"health_check_grace_period":{"type":"number","description_kind":"plain","optional":true},"health_check_type":{"type":"string","description_kind":"plain","optional":true},"health_check_unhealthy_duration_before_replacement":{"type":"number","description_kind":"plain","optional":true},"iam_instance_profile":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"image_id":{"type":"string","description_kind":"plain","optional":true},"immediate_od_recover_threshold":{"type":"number","description_kind":"plain","optional":true},"instance_types_ondemand":{"type":"string","description_kind":"plain","optional":true},"instance_types_preferred_spot":{"type":["list","string"],"description_kind":"plain","optional":true},"instance_types_spot":{"type":["list","string"],"description_kind":"plain","optional":true},"key_name":{"type":"string","description_kind":"plain","optional":true},"lifetime_period":{"type":"string","description_kind":"plain","optional":true},"max_size":{"type":"number","description_kind":"plain","optional":true,"computed":true},"min_size":{"type":"number","description_kind":"plain","optional":true,"computed":true},"minimum_instance_lifetime":{"type":"number","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"on_demand_types":{"type":["list","string"],"description_kind":"plain","optional":true},"ondemand_count":{"type":"number","description_kind":"plain","optional":true},"orientation":{"type":"string","description_kind":"plain","required":true},"persist_block_devices":{"type":"bool","description_kind":"plain","optional":true},"persist_private_ip":{"type":"bool","description_kind":"plain","optional":true},"persist_root_device":{"type":"bool","description_kind":"plain","optional":true},"placement_tenancy":{"type":"string","description_kind":"plain","optional":true},"preferred_availability_zones":{"type":["list","string"],"description_kind":"plain","optional":true},"private_ips":{"type":["list","string"],"description_kind":"plain","optional":true},"product":{"type":"string","description_kind":"plain","required":true},"region":{"type":"string","description_kind":"plain","optional":true},"restrict_single_az":{"type":"bool","description_kind":"plain","optional":true},"security_groups":{"type":["list","string"],"description_kind":"plain","required":true},"shutdown_script":{"type":"string","description_kind":"plain","optional":true},"spot_percentage":{"type":"number","description_kind":"plain","optional":true},"subnet_ids":{"type":["list","string"],"description_kind":"plain","optional":true},"target_group_arns":{"type":["list","string"],"description_kind":"plain","optional":true},"user_data":{"type":"string","description_kind":"plain","optional":true},"utilize_commitments":{"type":"bool","description_kind":"plain","optional":true},"utilize_reserved_instances":{"type":"bool","description_kind":"plain","optional":true},"wait_for_capacity":{"type":"number","description_kind":"plain","optional":true},"wait_for_capacity_timeout":{"type":"number","description_kind":"plain","optional":true}},"block_types":{"cpu_options":{"nesting_mode":"list","block":{"attributes":{"threads_per_core":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"ebs_block_device":{"nesting_mode":"set","block":{"attributes":{"delete_on_termination":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"device_name":{"type":"string","description_kind":"plain","required":true},"encrypted":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"iops":{"type":"number","description_kind":"plain","optional":true},"kms_key_id":{"type":"string","description_kind":"plain","optional":true},"snapshot_id":{"type":"string","description_kind":"plain","optional":true},"throughput":{"type":"number","description_kind":"plain","optional":true},"volume_size":{"type":"number","description_kind":"plain","optional":true},"volume_type":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"dynamic_iops":{"nesting_mode":"list","block":{"attributes":{"base_size":{"type":"number","description_kind":"plain","optional":true},"resource":{"type":"string","description_kind":"plain","optional":true},"size_per_resource_unit":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"dynamic_volume_size":{"nesting_mode":"list","block":{"attributes":{"base_size":{"type":"number","description_kind":"plain","optional":true},"resource":{"type":"string","description_kind":"plain","optional":true},"size_per_resource_unit":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"ephemeral_block_device":{"nesting_mode":"set","block":{"attributes":{"device_name":{"type":"string","description_kind":"plain","required":true},"virtual_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"images":{"nesting_mode":"list","block":{"block_types":{"image":{"nesting_mode":"set","block":{"attributes":{"id":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"}},"instance_types_weights":{"nesting_mode":"set","block":{"attributes":{"instance_type":{"type":"string","description_kind":"plain","required":true},"weight":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"}},"integration_beanstalk":{"nesting_mode":"list","block":{"attributes":{"environment_id":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"deployment_preferences":{"nesting_mode":"list","block":{"attributes":{"automatic_roll":{"type":"bool","description_kind":"plain","optional":true},"batch_size_percentage":{"type":"number","description_kind":"plain","optional":true},"grace_period":{"type":"number","description_kind":"plain","optional":true}},"block_types":{"strategy":{"nesting_mode":"list","block":{"attributes":{"action":{"type":"string","description_kind":"plain","optional":true},"should_drain_instances":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"managed_actions":{"nesting_mode":"list","block":{"block_types":{"platform_update":{"nesting_mode":"list","block":{"attributes":{"perform_at":{"type":"string","description_kind":"plain","optional":true},"time_window":{"type":"string","description_kind":"plain","optional":true},"update_level":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"integration_codedeploy":{"nesting_mode":"list","block":{"attributes":{"cleanup_on_failure":{"type":"bool","description_kind":"plain","required":true},"terminate_instance_on_failure":{"type":"bool","description_kind":"plain","required":true}},"block_types":{"deployment_groups":{"nesting_mode":"set","block":{"attributes":{"application_name":{"type":"string","description_kind":"plain","required":true},"deployment_group_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"max_items":1},"integration_docker_swarm":{"nesting_mode":"list","block":{"attributes":{"autoscale_cooldown":{"type":"number","description_kind":"plain","optional":true},"autoscale_is_enabled":{"type":"bool","description_kind":"plain","optional":true},"master_host":{"type":"string","description_kind":"plain","required":true},"master_port":{"type":"number","description_kind":"plain","required":true}},"block_types":{"autoscale_down":{"nesting_mode":"list","block":{"attributes":{"evaluation_periods":{"type":"number","description_kind":"plain","optional":true},"max_scale_down_percentage":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"autoscale_headroom":{"nesting_mode":"list","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"integration_ecs":{"nesting_mode":"list","block":{"attributes":{"autoscale_cooldown":{"type":"number","description_kind":"plain","optional":true},"autoscale_is_auto_config":{"type":"bool","description_kind":"plain","optional":true},"autoscale_is_enabled":{"type":"bool","description_kind":"plain","optional":true},"autoscale_scale_down_non_service_tasks":{"type":"bool","description_kind":"plain","optional":true},"cluster_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"autoscale_attributes":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"autoscale_down":{"nesting_mode":"list","block":{"attributes":{"evaluation_periods":{"type":"number","description_kind":"plain","optional":true},"max_scale_down_percentage":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"autoscale_headroom":{"nesting_mode":"list","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"batch":{"nesting_mode":"list","block":{"attributes":{"job_queue_names":{"type":["list","string"],"description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"integration_gitlab":{"nesting_mode":"list","block":{"block_types":{"runner":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"integration_kubernetes":{"nesting_mode":"list","block":{"attributes":{"api_server":{"type":"string","description_kind":"plain","optional":true},"autoscale_cooldown":{"type":"number","description_kind":"plain","optional":true},"autoscale_is_auto_config":{"type":"bool","description_kind":"plain","optional":true},"autoscale_is_enabled":{"type":"bool","description_kind":"plain","optional":true},"cluster_identifier":{"type":"string","description_kind":"plain","optional":true},"integration_mode":{"type":"string","description_kind":"plain","optional":true},"token":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"autoscale_down":{"nesting_mode":"list","block":{"attributes":{"evaluation_periods":{"type":"number","description_kind":"plain","optional":true},"max_scale_down_percentage":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"autoscale_headroom":{"nesting_mode":"list","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"autoscale_labels":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"integration_mesosphere":{"nesting_mode":"list","block":{"attributes":{"api_server":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"integration_nomad":{"nesting_mode":"list","block":{"attributes":{"acl_token":{"type":"string","description_kind":"plain","optional":true},"autoscale_cooldown":{"type":"number","description_kind":"plain","optional":true},"autoscale_is_enabled":{"type":"bool","description_kind":"plain","optional":true},"master_host":{"type":"string","description_kind":"plain","required":true},"master_port":{"type":"number","description_kind":"plain","required":true}},"block_types":{"autoscale_constraints":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"autoscale_down":{"nesting_mode":"list","block":{"attributes":{"evaluation_periods":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"autoscale_headroom":{"nesting_mode":"list","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"integration_rancher":{"nesting_mode":"list","block":{"attributes":{"access_key":{"type":"string","description_kind":"plain","required":true},"master_host":{"type":"string","description_kind":"plain","required":true},"secret_key":{"type":"string","description_kind":"plain","required":true},"version":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"integration_route53":{"nesting_mode":"list","block":{"block_types":{"domains":{"nesting_mode":"set","block":{"attributes":{"hosted_zone_id":{"type":"string","description_kind":"plain","required":true},"record_set_type":{"type":"string","description_kind":"plain","optional":true},"spotinst_acct_id":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"record_sets":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"use_public_dns":{"type":"bool","description_kind":"plain","optional":true},"use_public_ip":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"max_items":1},"itf":{"nesting_mode":"list","block":{"attributes":{"fixed_target_groups":{"type":"bool","description_kind":"plain","required":true},"migration_healthiness_threshold":{"type":"number","description_kind":"plain","optional":true},"weight_strategy":{"type":"string","description_kind":"plain","required":true}},"block_types":{"default_static_target_group":{"nesting_mode":"list","block":{"attributes":{"arn":{"type":"string","description_kind":"plain","required":true},"percentage":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"load_balancer":{"nesting_mode":"set","block":{"attributes":{"load_balancer_arn":{"type":"string","description_kind":"plain","required":true}},"block_types":{"listener_rule":{"nesting_mode":"set","block":{"attributes":{"rule_arn":{"type":"string","description_kind":"plain","required":true}},"block_types":{"static_target_group":{"nesting_mode":"list","block":{"attributes":{"arn":{"type":"string","description_kind":"plain","required":true},"percentage":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"min_items":1},"target_group_config":{"nesting_mode":"list","block":{"attributes":{"health_check_interval_seconds":{"type":"number","description_kind":"plain","optional":true},"health_check_path":{"type":"string","description_kind":"plain","required":true},"health_check_port":{"type":"string","description_kind":"plain","optional":true},"health_check_protocol":{"type":"string","description_kind":"plain","optional":true},"health_check_timeout_seconds":{"type":"number","description_kind":"plain","optional":true},"healthy_threshold_count":{"type":"number","description_kind":"plain","optional":true},"port":{"type":"number","description_kind":"plain","required":true},"protocol":{"type":"string","description_kind":"plain","required":true},"protocol_version":{"type":"string","description_kind":"plain","optional":true},"unhealthy_threshold_count":{"type":"number","description_kind":"plain","optional":true},"vpc_id":{"type":"string","description_kind":"plain","required":true}},"block_types":{"matcher":{"nesting_mode":"list","block":{"attributes":{"grpc_code":{"type":"string","description_kind":"plain","optional":true},"http_code":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"tags":{"nesting_mode":"set","block":{"attributes":{"tag_key":{"type":"string","description_kind":"plain","required":true},"tag_value":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"}},"logging":{"nesting_mode":"list","block":{"block_types":{"export":{"nesting_mode":"list","block":{"block_types":{"s3":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"metadata_options":{"nesting_mode":"list","block":{"attributes":{"http_put_response_hop_limit":{"type":"number","description_kind":"plain","optional":true},"http_tokens":{"type":"string","description_kind":"plain","required":true},"instance_metadata_tags":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"multiple_metrics":{"nesting_mode":"set","block":{"block_types":{"expressions":{"nesting_mode":"set","block":{"attributes":{"expression":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"metrics":{"nesting_mode":"set","block":{"attributes":{"extended_statistic":{"type":"string","description_kind":"plain","optional":true},"metric_name":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","required":true},"statistic":{"type":"string","description_kind":"plain","optional":true},"unit":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"dimensions":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"network_interface":{"nesting_mode":"set","block":{"attributes":{"associate_ipv6_address":{"type":"bool","description_kind":"plain","optional":true},"associate_public_ip_address":{"type":"bool","description_kind":"plain","optional":true},"delete_on_termination":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"description":{"type":"string","description_kind":"plain","optional":true},"device_index":{"type":"string","description_kind":"plain","required":true},"network_interface_id":{"type":"string","description_kind":"plain","optional":true},"private_ip_address":{"type":"string","description_kind":"plain","optional":true},"secondary_private_ip_address_count":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"resource_requirements":{"nesting_mode":"list","block":{"attributes":{"excluded_instance_families":{"type":["set","string"],"description_kind":"plain","optional":true},"excluded_instance_generations":{"type":["set","string"],"description_kind":"plain","optional":true},"excluded_instance_types":{"type":["set","string"],"description_kind":"plain","optional":true},"required_gpu_maximum":{"type":"number","description_kind":"plain","optional":true},"required_gpu_minimum":{"type":"number","description_kind":"plain","optional":true},"required_memory_maximum":{"type":"number","description_kind":"plain","required":true},"required_memory_minimum":{"type":"number","description_kind":"plain","required":true},"required_vcpu_maximum":{"type":"number","description_kind":"plain","required":true},"required_vcpu_minimum":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"}},"resource_tag_specification":{"nesting_mode":"list","block":{"attributes":{"should_tag_amis":{"type":"bool","description_kind":"plain","optional":true},"should_tag_enis":{"type":"bool","description_kind":"plain","optional":true},"should_tag_snapshots":{"type":"bool","description_kind":"plain","optional":true},"should_tag_volumes":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"}},"revert_to_spot":{"nesting_mode":"list","block":{"attributes":{"perform_at":{"type":"string","description_kind":"plain","required":true},"time_windows":{"type":["list","string"],"description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"scaling_down_policy":{"nesting_mode":"set","block":{"attributes":{"action_type":{"type":"string","description_kind":"plain","optional":true},"adjustment":{"type":"string","description_kind":"plain","optional":true},"cooldown":{"type":"number","description_kind":"plain","optional":true},"evaluation_periods":{"type":"number","description_kind":"plain","optional":true,"computed":true},"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"max_target_capacity":{"type":"string","description_kind":"plain","optional":true},"maximum":{"type":"string","description_kind":"plain","optional":true},"metric_name":{"type":"string","description_kind":"plain","required":true},"min_target_capacity":{"type":"string","description_kind":"plain","optional":true},"minimum":{"type":"string","description_kind":"plain","optional":true},"namespace":{"type":"string","description_kind":"plain","required":true},"operator":{"type":"string","description_kind":"plain","optional":true,"computed":true},"period":{"type":"number","description_kind":"plain","optional":true,"computed":true},"policy_name":{"type":"string","description_kind":"plain","required":true},"source":{"type":"string","description_kind":"plain","optional":true,"computed":true},"statistic":{"type":"string","description_kind":"plain","optional":true},"target":{"type":"string","description_kind":"plain","optional":true},"threshold":{"type":"number","description_kind":"plain","optional":true},"unit":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"dimensions":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"step_adjustments":{"nesting_mode":"set","block":{"attributes":{"threshold":{"type":"number","description_kind":"plain","required":true}},"block_types":{"action":{"nesting_mode":"set","block":{"attributes":{"adjustment":{"type":"string","description_kind":"plain","optional":true},"max_target_capacity":{"type":"string","description_kind":"plain","optional":true},"maximum":{"type":"string","description_kind":"plain","optional":true},"min_target_capacity":{"type":"string","description_kind":"plain","optional":true},"minimum":{"type":"string","description_kind":"plain","optional":true},"target":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1}},"description_kind":"plain"}}},"description_kind":"plain"}},"scaling_strategy":{"nesting_mode":"list","block":{"attributes":{"terminate_at_end_of_billing_hour":{"type":"bool","description_kind":"plain","optional":true},"termination_policy":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"scaling_target_policy":{"nesting_mode":"set","block":{"attributes":{"cooldown":{"type":"number","description_kind":"plain","optional":true},"evaluation_periods":{"type":"number","description_kind":"plain","optional":true},"max_capacity_per_scale":{"type":"string","description_kind":"plain","optional":true},"metric_name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","required":true},"period":{"type":"number","description_kind":"plain","optional":true},"policy_name":{"type":"string","description_kind":"plain","required":true},"predictive_mode":{"type":"string","description_kind":"plain","optional":true},"source":{"type":"string","description_kind":"plain","optional":true,"computed":true},"statistic":{"type":"string","description_kind":"plain","optional":true},"target":{"type":"number","description_kind":"plain","required":true},"unit":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"dimensions":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"scaling_up_policy":{"nesting_mode":"set","block":{"attributes":{"action_type":{"type":"string","description_kind":"plain","optional":true},"adjustment":{"type":"string","description_kind":"plain","optional":true},"cooldown":{"type":"number","description_kind":"plain","optional":true},"evaluation_periods":{"type":"number","description_kind":"plain","optional":true,"computed":true},"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"max_target_capacity":{"type":"string","description_kind":"plain","optional":true},"maximum":{"type":"string","description_kind":"plain","optional":true},"metric_name":{"type":"string","description_kind":"plain","required":true},"min_target_capacity":{"type":"string","description_kind":"plain","optional":true},"minimum":{"type":"string","description_kind":"plain","optional":true},"namespace":{"type":"string","description_kind":"plain","required":true},"operator":{"type":"string","description_kind":"plain","optional":true,"computed":true},"period":{"type":"number","description_kind":"plain","optional":true,"computed":true},"policy_name":{"type":"string","description_kind":"plain","required":true},"source":{"type":"string","description_kind":"plain","optional":true,"computed":true},"statistic":{"type":"string","description_kind":"plain","optional":true},"target":{"type":"string","description_kind":"plain","optional":true},"threshold":{"type":"number","description_kind":"plain","optional":true},"unit":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"dimensions":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"step_adjustments":{"nesting_mode":"set","block":{"attributes":{"threshold":{"type":"number","description_kind":"plain","required":true}},"block_types":{"action":{"nesting_mode":"set","block":{"attributes":{"adjustment":{"type":"string","description_kind":"plain","optional":true},"max_target_capacity":{"type":"string","description_kind":"plain","optional":true},"maximum":{"type":"string","description_kind":"plain","optional":true},"min_target_capacity":{"type":"string","description_kind":"plain","optional":true},"minimum":{"type":"string","description_kind":"plain","optional":true},"target":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1}},"description_kind":"plain"}}},"description_kind":"plain"}},"scheduled_task":{"nesting_mode":"set","block":{"attributes":{"adjustment":{"type":"string","description_kind":"plain","optional":true},"adjustment_percentage":{"type":"string","description_kind":"plain","optional":true},"batch_size_percentage":{"type":"string","description_kind":"plain","optional":true},"cron_expression":{"type":"string","description_kind":"plain","optional":true},"frequency":{"type":"string","description_kind":"plain","optional":true},"grace_period":{"type":"string","description_kind":"plain","optional":true},"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"max_capacity":{"type":"string","description_kind":"plain","optional":true},"min_capacity":{"type":"string","description_kind":"plain","optional":true},"scale_max_capacity":{"type":"string","description_kind":"plain","optional":true},"scale_min_capacity":{"type":"string","description_kind":"plain","optional":true},"scale_target_capacity":{"type":"string","description_kind":"plain","optional":true},"start_time":{"type":"string","description_kind":"plain","optional":true},"target_capacity":{"type":"string","description_kind":"plain","optional":true},"task_type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"signal":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"timeout":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"stateful_deallocation":{"nesting_mode":"list","block":{"attributes":{"should_delete_images":{"type":"bool","description_kind":"plain","optional":true},"should_delete_network_interfaces":{"type":"bool","description_kind":"plain","optional":true},"should_delete_snapshots":{"type":"bool","description_kind":"plain","optional":true},"should_delete_volumes":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"stateful_instance_action":{"nesting_mode":"list","block":{"attributes":{"stateful_instance_id":{"type":"string","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"tags":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","optional":true},"value":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"update_policy":{"nesting_mode":"list","block":{"attributes":{"auto_apply_tags":{"type":"bool","description_kind":"plain","optional":true},"should_resume_stateful":{"type":"bool","description_kind":"plain","required":true},"should_roll":{"type":"bool","description_kind":"plain","required":true}},"block_types":{"roll_config":{"nesting_mode":"list","block":{"attributes":{"batch_size_percentage":{"type":"number","description_kind":"plain","required":true},"grace_period":{"type":"number","description_kind":"plain","optional":true},"health_check_type":{"type":"string","description_kind":"plain","optional":true},"wait_for_roll_percentage":{"type":"number","description_kind":"plain","optional":true},"wait_for_roll_timeout":{"type":"number","description_kind":"plain","optional":true}},"block_types":{"strategy":{"nesting_mode":"list","block":{"attributes":{"action":{"type":"string","description_kind":"plain","required":true},"batch_min_healthy_percentage":{"type":"number","description_kind":"plain","optional":true},"should_drain_instances":{"type":"bool","description_kind":"plain","optional":true}},"block_types":{"on_failure":{"nesting_mode":"list","block":{"attributes":{"action_type":{"type":"string","description_kind":"plain","required":true},"batch_num":{"type":"number","description_kind":"plain","optional":true},"draining_timeout":{"type":"number","description_kind":"plain","optional":true},"should_decrement_target_capacity":{"type":"bool","description_kind":"plain","optional":true},"should_handle_all_batches":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"spotinst_elastigroup_aws_beanstalk":{"version":0,"block":{"attributes":{"beanstalk_environment_id":{"type":"string","description_kind":"plain","optional":true},"beanstalk_environment_name":{"type":"string","description_kind":"plain","optional":true},"desired_capacity":{"type":"number","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"instance_types_spot":{"type":["list","string"],"description_kind":"plain","required":true},"maintenance":{"type":"string","description_kind":"plain","optional":true},"max_size":{"type":"number","description_kind":"plain","required":true},"min_size":{"type":"number","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"product":{"type":"string","description_kind":"plain","required":true},"region":{"type":"string","description_kind":"plain","required":true}},"block_types":{"deployment_preferences":{"nesting_mode":"list","block":{"attributes":{"automatic_roll":{"type":"bool","description_kind":"plain","optional":true},"batch_size_percentage":{"type":"number","description_kind":"plain","optional":true},"grace_period":{"type":"number","description_kind":"plain","optional":true}},"block_types":{"strategy":{"nesting_mode":"list","block":{"attributes":{"action":{"type":"string","description_kind":"plain","optional":true},"should_drain_instances":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"managed_actions":{"nesting_mode":"list","block":{"block_types":{"platform_update":{"nesting_mode":"list","block":{"attributes":{"perform_at":{"type":"string","description_kind":"plain","optional":true},"time_window":{"type":"string","description_kind":"plain","optional":true},"update_level":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"scheduled_task":{"nesting_mode":"set","block":{"attributes":{"adjustment":{"type":"string","description_kind":"plain","optional":true},"adjustment_percentage":{"type":"string","description_kind":"plain","optional":true},"batch_size_percentage":{"type":"string","description_kind":"plain","optional":true},"cron_expression":{"type":"string","description_kind":"plain","optional":true},"frequency":{"type":"string","description_kind":"plain","optional":true},"grace_period":{"type":"string","description_kind":"plain","optional":true},"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"max_capacity":{"type":"string","description_kind":"plain","optional":true},"min_capacity":{"type":"string","description_kind":"plain","optional":true},"scale_max_capacity":{"type":"string","description_kind":"plain","optional":true},"scale_min_capacity":{"type":"string","description_kind":"plain","optional":true},"scale_target_capacity":{"type":"string","description_kind":"plain","optional":true},"start_time":{"type":"string","description_kind":"plain","optional":true},"target_capacity":{"type":"string","description_kind":"plain","optional":true},"task_type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spotinst_elastigroup_aws_suspension":{"version":0,"block":{"attributes":{"group_id":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"suspension":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"}},"spotinst_elastigroup_azure_v3":{"version":0,"block":{"attributes":{"availability_vs_cost":{"type":"number","description_kind":"plain","optional":true},"custom_data":{"type":"string","description_kind":"plain","optional":true},"description":{"type":"string","description_kind":"plain","optional":true},"desired_capacity":{"type":"number","description_kind":"plain","optional":true},"draining_timeout":{"type":"number","description_kind":"plain","optional":true,"computed":true},"fallback_to_on_demand":{"type":"bool","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"max_size":{"type":"number","description_kind":"plain","optional":true,"computed":true},"min_size":{"type":"number","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true},"on_demand_count":{"type":"number","description_kind":"plain","optional":true},"optimization_windows":{"type":["list","string"],"description_kind":"plain","optional":true},"os":{"type":"string","description_kind":"plain","required":true},"preferred_zones":{"type":["list","string"],"description_kind":"plain","optional":true},"region":{"type":"string","description_kind":"plain","required":true},"resource_group_name":{"type":"string","description_kind":"plain","required":true},"shutdown_script":{"type":"string","description_kind":"plain","optional":true},"spot_percentage":{"type":"number","description_kind":"plain","optional":true},"user_data":{"type":"string","description_kind":"plain","optional":true},"vm_name_prefix":{"type":"string","description_kind":"plain","optional":true},"zones":{"type":["list","string"],"description_kind":"plain","optional":true}},"block_types":{"boot_diagnostics":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description_kind":"plain","required":true},"storage_url":{"type":"string","description_kind":"plain","optional":true,"computed":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"capacity_reservation":{"nesting_mode":"list","block":{"attributes":{"should_utilize":{"type":"bool","description_kind":"plain","required":true},"utilization_strategy":{"type":"string","description_kind":"plain","required":true}},"block_types":{"capacity_reservation_groups":{"nesting_mode":"set","block":{"attributes":{"crg_name":{"type":"string","description_kind":"plain","required":true},"crg_resource_group_name":{"type":"string","description_kind":"plain","required":true},"crg_should_prioritize":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"data_disk":{"nesting_mode":"list","block":{"attributes":{"lun":{"type":"number","description_kind":"plain","required":true},"size_gb":{"type":"number","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"extensions":{"nesting_mode":"list","block":{"attributes":{"api_version":{"type":"string","description_kind":"plain","required":true},"enable_automatic_upgrade":{"type":"bool","description_kind":"plain","optional":true},"minor_version_auto_upgrade":{"type":"bool","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"protected_settings":{"type":["map","string"],"description_kind":"plain","optional":true,"computed":true},"public_settings":{"type":["map","string"],"description_kind":"plain","optional":true,"computed":true},"publisher":{"type":"string","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","required":true}},"block_types":{"protected_settings_from_key_vault":{"nesting_mode":"list","block":{"attributes":{"secret_url":{"type":"string","description_kind":"plain","required":true},"source_vault":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"health":{"nesting_mode":"list","block":{"attributes":{"auto_healing":{"type":"bool","description_kind":"plain","optional":true},"grace_period":{"type":"number","description_kind":"plain","optional":true},"health_check_types":{"type":["list","string"],"description_kind":"plain","optional":true},"unhealthy_duration":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"image":{"nesting_mode":"list","block":{"block_types":{"custom":{"nesting_mode":"list","block":{"attributes":{"image_name":{"type":"string","description_kind":"plain","required":true},"resource_group_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"gallery_image":{"nesting_mode":"list","block":{"attributes":{"gallery_name":{"type":"string","description_kind":"plain","required":true},"image_name":{"type":"string","description_kind":"plain","required":true},"resource_group_name":{"type":"string","description_kind":"plain","required":true},"spot_account_id":{"type":"string","description_kind":"plain","optional":true},"version":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"marketplace":{"nesting_mode":"list","block":{"attributes":{"offer":{"type":"string","description_kind":"plain","required":true},"publisher":{"type":"string","description_kind":"plain","required":true},"sku":{"type":"string","description_kind":"plain","required":true},"version":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"load_balancer":{"nesting_mode":"set","block":{"attributes":{"backend_pool_names":{"type":["list","string"],"description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"resource_group_name":{"type":"string","description_kind":"plain","required":true},"sku":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"login":{"nesting_mode":"list","block":{"attributes":{"password":{"type":"string","description_kind":"plain","optional":true},"ssh_public_key":{"type":"string","description_kind":"plain","optional":true},"user_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"managed_service_identity":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"resource_group_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"network":{"nesting_mode":"list","block":{"attributes":{"resource_group_name":{"type":"string","description_kind":"plain","required":true},"virtual_network_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"network_interfaces":{"nesting_mode":"list","block":{"attributes":{"assign_public_ip":{"type":"bool","description_kind":"plain","required":true},"enable_ip_forwarding":{"type":"bool","description_kind":"plain","optional":true},"is_primary":{"type":"bool","description_kind":"plain","required":true},"private_ip_addresses":{"type":["list","string"],"description_kind":"plain","optional":true},"public_ip_sku":{"type":"string","description_kind":"plain","optional":true},"subnet_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"additional_ip_configs":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"private_ip_version":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"application_security_group":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"resource_group_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"security_group":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","optional":true},"resource_group_name":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"min_items":1,"max_items":1},"os_disk":{"nesting_mode":"list","block":{"attributes":{"size_gb":{"type":"number","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"proximity_placement_groups":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"resource_group_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"revert_to_spot":{"nesting_mode":"list","block":{"attributes":{"perform_at":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"scaling_down_policy":{"nesting_mode":"list","block":{"attributes":{"cooldown":{"type":"number","description_kind":"plain","required":true},"evaluation_periods":{"type":"number","description_kind":"plain","required":true},"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"metric_name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","required":true},"operator":{"type":"string","description_kind":"plain","required":true},"period":{"type":"number","description_kind":"plain","required":true},"policy_name":{"type":"string","description_kind":"plain","required":true},"source":{"type":"string","description_kind":"plain","optional":true,"computed":true},"statistic":{"type":"string","description_kind":"plain","required":true},"threshold":{"type":"number","description_kind":"plain","required":true},"unit":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"action":{"nesting_mode":"list","block":{"attributes":{"adjustment":{"type":"string","description_kind":"plain","optional":true},"maximum":{"type":"string","description_kind":"plain","optional":true},"minimum":{"type":"string","description_kind":"plain","optional":true},"target":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"dimensions":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","optional":true},"value":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"scaling_up_policy":{"nesting_mode":"list","block":{"attributes":{"cooldown":{"type":"number","description_kind":"plain","required":true},"evaluation_periods":{"type":"number","description_kind":"plain","required":true},"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"metric_name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","required":true},"operator":{"type":"string","description_kind":"plain","required":true},"period":{"type":"number","description_kind":"plain","required":true},"policy_name":{"type":"string","description_kind":"plain","required":true},"source":{"type":"string","description_kind":"plain","optional":true,"computed":true},"statistic":{"type":"string","description_kind":"plain","required":true},"threshold":{"type":"number","description_kind":"plain","required":true},"unit":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"action":{"nesting_mode":"list","block":{"attributes":{"adjustment":{"type":"string","description_kind":"plain","optional":true},"maximum":{"type":"string","description_kind":"plain","optional":true},"minimum":{"type":"string","description_kind":"plain","optional":true},"target":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"dimensions":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","optional":true},"value":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"scheduling_task":{"nesting_mode":"list","block":{"attributes":{"adjustment":{"type":"string","description_kind":"plain","optional":true},"adjustment_percentage":{"type":"string","description_kind":"plain","optional":true},"batch_size_percentage":{"type":"string","description_kind":"plain","optional":true},"cron_expression":{"type":"string","description_kind":"plain","required":true},"grace_period":{"type":"string","description_kind":"plain","optional":true},"is_enabled":{"type":"bool","description_kind":"plain","required":true},"scale_max_capacity":{"type":"string","description_kind":"plain","optional":true},"scale_min_capacity":{"type":"string","description_kind":"plain","optional":true},"scale_target_capacity":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"secret":{"nesting_mode":"set","block":{"block_types":{"source_vault":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"resource_group_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1},"vault_certificates":{"nesting_mode":"list","block":{"attributes":{"certificate_store":{"type":"string","description_kind":"plain","required":true},"certificate_url":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"}},"security":{"nesting_mode":"list","block":{"attributes":{"confidential_os_disk_encryption":{"type":"bool","description_kind":"plain","optional":true},"secure_boot_enabled":{"type":"bool","description_kind":"plain","optional":true},"security_type":{"type":"string","description_kind":"plain","optional":true},"vtpm_enabled":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"signal":{"nesting_mode":"list","block":{"attributes":{"timeout":{"type":"number","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"tags":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"vm_sizes":{"nesting_mode":"list","block":{"attributes":{"od_sizes":{"type":["list","string"],"description_kind":"plain","required":true},"preferred_spot_sizes":{"type":["list","string"],"description_kind":"plain","optional":true},"spot_sizes":{"type":["list","string"],"description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1}},"description_kind":"plain"}},"spotinst_elastigroup_gcp":{"version":0,"block":{"attributes":{"auto_healing":{"type":"bool","description_kind":"plain","optional":true},"availability_zones":{"type":["list","string"],"description_kind":"plain","deprecated":true,"optional":true},"description":{"type":"string","description_kind":"plain","optional":true},"desired_capacity":{"type":"number","description_kind":"plain","required":true},"draining_timeout":{"type":"number","description_kind":"plain","optional":true},"fallback_to_ondemand":{"type":"bool","description_kind":"plain","optional":true},"health_check_grace_period":{"type":"number","description_kind":"plain","optional":true},"health_check_type":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"instance_name_prefix":{"type":"string","description_kind":"plain","optional":true},"instance_types_ondemand":{"type":"string","description_kind":"plain","optional":true},"instance_types_preemptible":{"type":["list","string"],"description_kind":"plain","optional":true},"ip_forwarding":{"type":"bool","description_kind":"plain","optional":true},"max_size":{"type":"number","description_kind":"plain","optional":true,"computed":true},"min_size":{"type":"number","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true},"ondemand_count":{"type":"number","description_kind":"plain","optional":true},"optimization_windows":{"type":["list","string"],"description_kind":"plain","optional":true},"preemptible_percentage":{"type":"number","description_kind":"plain","optional":true},"provisioning_model":{"type":"string","description_kind":"plain","optional":true},"service_account":{"type":"string","description_kind":"plain","optional":true},"shutdown_script":{"type":"string","description_kind":"plain","optional":true},"startup_script":{"type":"string","description_kind":"plain","optional":true},"tags":{"type":["list","string"],"description_kind":"plain","optional":true},"unhealthy_duration":{"type":"number","description_kind":"plain","optional":true}},"block_types":{"backend_services":{"nesting_mode":"set","block":{"attributes":{"location_type":{"type":"string","description_kind":"plain","optional":true},"scheme":{"type":"string","description_kind":"plain","optional":true},"service_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"named_ports":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"ports":{"type":["list","string"],"description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"disk":{"nesting_mode":"set","block":{"attributes":{"auto_delete":{"type":"bool","description_kind":"plain","optional":true},"boot":{"type":"bool","description_kind":"plain","optional":true},"device_name":{"type":"string","description_kind":"plain","optional":true},"interface":{"type":"string","description_kind":"plain","optional":true},"mode":{"type":"string","description_kind":"plain","optional":true},"source":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"initialize_params":{"nesting_mode":"set","block":{"attributes":{"disk_size_gb":{"type":"string","description_kind":"plain","optional":true},"disk_type":{"type":"string","description_kind":"plain","optional":true},"source_image":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"gpu":{"nesting_mode":"set","block":{"attributes":{"count":{"type":"number","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"instance_types_custom":{"nesting_mode":"list","block":{"attributes":{"memory_gib":{"type":"number","description_kind":"plain","required":true},"vcpu":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"}},"integration_docker_swarm":{"nesting_mode":"list","block":{"attributes":{"master_host":{"type":"string","description_kind":"plain","required":true},"master_port":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"integration_gke":{"nesting_mode":"list","block":{"attributes":{"auto_update":{"type":"bool","description_kind":"plain","optional":true},"autoscale_cooldown":{"type":"number","description_kind":"plain","optional":true},"autoscale_is_auto_config":{"type":"bool","description_kind":"plain","optional":true},"autoscale_is_enabled":{"type":"bool","description_kind":"plain","optional":true},"cluster_id":{"type":"string","description_kind":"plain","optional":true},"location":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"autoscale_down":{"nesting_mode":"list","block":{"attributes":{"evaluation_periods":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"autoscale_headroom":{"nesting_mode":"list","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"autoscale_labels":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"labels":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"metadata":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"network_interface":{"nesting_mode":"list","block":{"attributes":{"network":{"type":"string","description_kind":"plain","required":true}},"block_types":{"access_configs":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"alias_ip_ranges":{"nesting_mode":"set","block":{"attributes":{"ip_cidr_range":{"type":"string","description_kind":"plain","required":true},"subnetwork_range_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"revert_to_preemptible":{"nesting_mode":"list","block":{"attributes":{"perform_at":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"scaling_down_policy":{"nesting_mode":"set","block":{"attributes":{"action_type":{"type":"string","description_kind":"plain","optional":true},"adjustment":{"type":"number","description_kind":"plain","optional":true},"cooldown":{"type":"number","description_kind":"plain","optional":true,"computed":true},"evaluation_periods":{"type":"number","description_kind":"plain","optional":true,"computed":true},"metric_name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","required":true},"operator":{"type":"string","description_kind":"plain","optional":true,"computed":true},"period":{"type":"number","description_kind":"plain","optional":true,"computed":true},"policy_name":{"type":"string","description_kind":"plain","required":true},"source":{"type":"string","description_kind":"plain","optional":true,"computed":true},"statistic":{"type":"string","description_kind":"plain","optional":true,"computed":true},"threshold":{"type":"number","description_kind":"plain","required":true},"unit":{"type":"string","description_kind":"plain","required":true}},"block_types":{"dimensions":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"scaling_up_policy":{"nesting_mode":"set","block":{"attributes":{"action_type":{"type":"string","description_kind":"plain","optional":true},"adjustment":{"type":"number","description_kind":"plain","optional":true},"cooldown":{"type":"number","description_kind":"plain","optional":true,"computed":true},"evaluation_periods":{"type":"number","description_kind":"plain","optional":true,"computed":true},"metric_name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","required":true},"operator":{"type":"string","description_kind":"plain","optional":true,"computed":true},"period":{"type":"number","description_kind":"plain","optional":true,"computed":true},"policy_name":{"type":"string","description_kind":"plain","required":true},"source":{"type":"string","description_kind":"plain","optional":true,"computed":true},"statistic":{"type":"string","description_kind":"plain","optional":true,"computed":true},"threshold":{"type":"number","description_kind":"plain","required":true},"unit":{"type":"string","description_kind":"plain","required":true}},"block_types":{"dimensions":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"scheduled_task":{"nesting_mode":"set","block":{"attributes":{"cron_expression":{"type":"string","description_kind":"plain","optional":true},"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"max_capacity":{"type":"string","description_kind":"plain","optional":true},"min_capacity":{"type":"string","description_kind":"plain","optional":true},"target_capacity":{"type":"string","description_kind":"plain","optional":true},"task_type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"subnets":{"nesting_mode":"set","block":{"attributes":{"region":{"type":"string","description_kind":"plain","required":true},"subnet_names":{"type":["list","string"],"description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spotinst_elastigroup_gke":{"version":0,"block":{"attributes":{"cluster_id":{"type":"string","description_kind":"plain","deprecated":true,"optional":true},"cluster_zone_name":{"type":"string","description_kind":"plain","required":true},"desired_capacity":{"type":"number","description_kind":"plain","required":true},"draining_timeout":{"type":"number","description_kind":"plain","optional":true},"fallback_to_ondemand":{"type":"bool","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"instance_name_prefix":{"type":"string","description_kind":"plain","optional":true},"instance_types_ondemand":{"type":"string","description_kind":"plain","optional":true},"instance_types_preemptible":{"type":["list","string"],"description_kind":"plain","optional":true},"ip_forwarding":{"type":"bool","description_kind":"plain","optional":true},"max_size":{"type":"number","description_kind":"plain","optional":true,"computed":true},"min_size":{"type":"number","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true},"node_image":{"type":"string","description_kind":"plain","optional":true},"ondemand_count":{"type":"number","description_kind":"plain","optional":true},"optimization_windows":{"type":["list","string"],"description_kind":"plain","optional":true},"preemptible_percentage":{"type":"number","description_kind":"plain","optional":true},"provisioning_model":{"type":"string","description_kind":"plain","optional":true},"service_account":{"type":"string","description_kind":"plain","optional":true},"shutdown_script":{"type":"string","description_kind":"plain","optional":true},"startup_script":{"type":"string","description_kind":"plain","optional":true},"tags":{"type":["list","string"],"description_kind":"plain","optional":true}},"block_types":{"backend_services":{"nesting_mode":"set","block":{"attributes":{"location_type":{"type":"string","description_kind":"plain","optional":true},"scheme":{"type":"string","description_kind":"plain","optional":true},"service_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"named_ports":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"ports":{"type":["list","string"],"description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"disk":{"nesting_mode":"set","block":{"attributes":{"auto_delete":{"type":"bool","description_kind":"plain","optional":true},"boot":{"type":"bool","description_kind":"plain","optional":true},"device_name":{"type":"string","description_kind":"plain","optional":true},"interface":{"type":"string","description_kind":"plain","optional":true},"mode":{"type":"string","description_kind":"plain","optional":true},"source":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"initialize_params":{"nesting_mode":"set","block":{"attributes":{"disk_size_gb":{"type":"string","description_kind":"plain","optional":true},"disk_type":{"type":"string","description_kind":"plain","optional":true},"source_image":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"gpu":{"nesting_mode":"set","block":{"attributes":{"count":{"type":"number","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"instance_types_custom":{"nesting_mode":"list","block":{"attributes":{"memory_gib":{"type":"number","description_kind":"plain","required":true},"vcpu":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"}},"integration_docker_swarm":{"nesting_mode":"list","block":{"attributes":{"master_host":{"type":"string","description_kind":"plain","required":true},"master_port":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"integration_gke":{"nesting_mode":"list","block":{"attributes":{"auto_update":{"type":"bool","description_kind":"plain","optional":true},"autoscale_cooldown":{"type":"number","description_kind":"plain","optional":true},"autoscale_is_auto_config":{"type":"bool","description_kind":"plain","optional":true},"autoscale_is_enabled":{"type":"bool","description_kind":"plain","optional":true},"cluster_id":{"type":"string","description_kind":"plain","optional":true},"location":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"autoscale_down":{"nesting_mode":"list","block":{"attributes":{"evaluation_periods":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"autoscale_headroom":{"nesting_mode":"list","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"autoscale_labels":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"labels":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"metadata":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"network_interface":{"nesting_mode":"list","block":{"attributes":{"network":{"type":"string","description_kind":"plain","required":true}},"block_types":{"access_configs":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"alias_ip_ranges":{"nesting_mode":"set","block":{"attributes":{"ip_cidr_range":{"type":"string","description_kind":"plain","required":true},"subnetwork_range_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"revert_to_preemptible":{"nesting_mode":"list","block":{"attributes":{"perform_at":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"scaling_down_policy":{"nesting_mode":"set","block":{"attributes":{"action_type":{"type":"string","description_kind":"plain","optional":true},"adjustment":{"type":"number","description_kind":"plain","optional":true},"cooldown":{"type":"number","description_kind":"plain","optional":true,"computed":true},"evaluation_periods":{"type":"number","description_kind":"plain","optional":true,"computed":true},"metric_name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","required":true},"operator":{"type":"string","description_kind":"plain","optional":true,"computed":true},"period":{"type":"number","description_kind":"plain","optional":true,"computed":true},"policy_name":{"type":"string","description_kind":"plain","required":true},"source":{"type":"string","description_kind":"plain","optional":true,"computed":true},"statistic":{"type":"string","description_kind":"plain","optional":true,"computed":true},"threshold":{"type":"number","description_kind":"plain","required":true},"unit":{"type":"string","description_kind":"plain","required":true}},"block_types":{"dimensions":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"scaling_up_policy":{"nesting_mode":"set","block":{"attributes":{"action_type":{"type":"string","description_kind":"plain","optional":true},"adjustment":{"type":"number","description_kind":"plain","optional":true},"cooldown":{"type":"number","description_kind":"plain","optional":true,"computed":true},"evaluation_periods":{"type":"number","description_kind":"plain","optional":true,"computed":true},"metric_name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","required":true},"operator":{"type":"string","description_kind":"plain","optional":true,"computed":true},"period":{"type":"number","description_kind":"plain","optional":true,"computed":true},"policy_name":{"type":"string","description_kind":"plain","required":true},"source":{"type":"string","description_kind":"plain","optional":true,"computed":true},"statistic":{"type":"string","description_kind":"plain","optional":true,"computed":true},"threshold":{"type":"number","description_kind":"plain","required":true},"unit":{"type":"string","description_kind":"plain","required":true}},"block_types":{"dimensions":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"spotinst_health_check":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","optional":true},"proxy_address":{"type":"string","description_kind":"plain","required":true},"proxy_port":{"type":"number","description_kind":"plain","optional":true},"resource_id":{"type":"string","description_kind":"plain","required":true}},"block_types":{"check":{"nesting_mode":"list","block":{"attributes":{"end_point":{"type":"string","description_kind":"plain","optional":true},"endpoint":{"type":"string","description_kind":"plain","optional":true},"healthy":{"type":"number","description_kind":"plain","required":true},"interval":{"type":"number","description_kind":"plain","required":true},"port":{"type":"number","description_kind":"plain","required":true},"protocol":{"type":"string","description_kind":"plain","required":true},"time_out":{"type":"number","description_kind":"plain","optional":true},"timeout":{"type":"number","description_kind":"plain","optional":true},"unhealthy":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"spotinst_managed_instance_aws":{"version":0,"block":{"attributes":{"auto_healing":{"type":"bool","description_kind":"plain","optional":true},"block_devices_mode":{"type":"string","description_kind":"plain","optional":true},"cpu_credits":{"type":"string","description_kind":"plain","optional":true},"description":{"type":"string","description_kind":"plain","optional":true},"draining_timeout":{"type":"number","description_kind":"plain","optional":true},"ebs_optimized":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"elastic_ip":{"type":"string","description_kind":"plain","optional":true},"enable_monitoring":{"type":"bool","description_kind":"plain","optional":true},"fallback_to_ondemand":{"type":"bool","description_kind":"plain","optional":true},"grace_period":{"type":"number","description_kind":"plain","optional":true},"health_check_type":{"type":"string","description_kind":"plain","optional":true},"iam_instance_profile":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"image_id":{"type":"string","description_kind":"plain","required":true},"instance_types":{"type":["list","string"],"description_kind":"plain","required":true},"key_pair":{"type":"string","description_kind":"plain","optional":true},"life_cycle":{"type":"string","description_kind":"plain","optional":true},"minimum_instance_lifetime":{"type":"number","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"optimization_windows":{"type":["list","string"],"description_kind":"plain","optional":true},"orientation":{"type":"string","description_kind":"plain","optional":true},"persist_block_devices":{"type":"bool","description_kind":"plain","required":true},"persist_private_ip":{"type":"bool","description_kind":"plain","optional":true},"persist_root_device":{"type":"bool","description_kind":"plain","optional":true},"placement_tenancy":{"type":"string","description_kind":"plain","optional":true},"preferred_type":{"type":"string","description_kind":"plain","optional":true},"private_ip":{"type":"string","description_kind":"plain","optional":true},"product":{"type":"string","description_kind":"plain","required":true},"region":{"type":"string","description_kind":"plain","optional":true},"security_group_ids":{"type":["list","string"],"description_kind":"plain","optional":true},"shutdown_script":{"type":"string","description_kind":"plain","optional":true},"subnet_ids":{"type":["list","string"],"description_kind":"plain","required":true},"unhealthy_duration":{"type":"number","description_kind":"plain","optional":true},"user_data":{"type":"string","description_kind":"plain","optional":true},"utilize_reserved_instances":{"type":"bool","description_kind":"plain","optional":true},"vpc_id":{"type":"string","description_kind":"plain","required":true}},"block_types":{"block_device_mappings":{"nesting_mode":"list","block":{"attributes":{"device_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"ebs":{"nesting_mode":"list","block":{"attributes":{"delete_on_termination":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"encrypted":{"type":"bool","description_kind":"plain","optional":true},"iops":{"type":"number","description_kind":"plain","optional":true},"kms_key_id":{"type":"string","description_kind":"plain","optional":true},"snapshot_id":{"type":"string","description_kind":"plain","optional":true},"throughput":{"type":"number","description_kind":"plain","optional":true},"volume_size":{"type":"number","description_kind":"plain","optional":true},"volume_type":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"delete":{"nesting_mode":"list","block":{"attributes":{"ami_backup_should_delete_images":{"type":"bool","description_kind":"plain","optional":true},"deallocation_config_should_delete_images":{"type":"bool","description_kind":"plain","optional":true},"should_delete_network_interfaces":{"type":"bool","description_kind":"plain","optional":true},"should_delete_snapshots":{"type":"bool","description_kind":"plain","optional":true},"should_delete_volumes":{"type":"bool","description_kind":"plain","optional":true},"should_terminate_instance":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"}},"integration_route53":{"nesting_mode":"list","block":{"block_types":{"domains":{"nesting_mode":"set","block":{"attributes":{"hosted_zone_id":{"type":"string","description_kind":"plain","required":true},"record_set_type":{"type":"string","description_kind":"plain","optional":true},"spotinst_acct_id":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"record_sets":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"use_public_dns":{"type":"bool","description_kind":"plain","optional":true},"use_public_ip":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"max_items":1},"load_balancers":{"nesting_mode":"set","block":{"attributes":{"arn":{"type":"string","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"managed_instance_action":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"metadata_options":{"nesting_mode":"list","block":{"attributes":{"http_put_response_hop_limit":{"type":"number","description_kind":"plain","optional":true},"http_tokens":{"type":"string","description_kind":"plain","required":true},"instance_metadata_tags":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"network_interface":{"nesting_mode":"set","block":{"attributes":{"associate_ipv6_address":{"type":"bool","description_kind":"plain","optional":true},"associate_public_ip_address":{"type":"bool","description_kind":"plain","optional":true},"device_index":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"resource_tag_specification":{"nesting_mode":"list","block":{"attributes":{"should_tag_amis":{"type":"bool","description_kind":"plain","optional":true},"should_tag_enis":{"type":"bool","description_kind":"plain","optional":true},"should_tag_snapshots":{"type":"bool","description_kind":"plain","optional":true},"should_tag_volumes":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"}},"revert_to_spot":{"nesting_mode":"list","block":{"attributes":{"perform_at":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"scheduled_task":{"nesting_mode":"set","block":{"attributes":{"cron_expression":{"type":"string","description_kind":"plain","optional":true},"frequency":{"type":"string","description_kind":"plain","optional":true},"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"start_time":{"type":"string","description_kind":"plain","optional":true},"task_type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"tags":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","optional":true},"value":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spotinst_mrscaler_aws":{"version":0,"block":{"attributes":{"additional_info":{"type":"string","description_kind":"plain","optional":true},"additional_primary_security_groups":{"type":["list","string"],"description_kind":"plain","optional":true},"additional_replica_security_groups":{"type":["list","string"],"description_kind":"plain","optional":true},"availability_zones":{"type":["list","string"],"description_kind":"plain","optional":true},"cluster_id":{"type":"string","description_kind":"plain","optional":true},"core_desired_capacity":{"type":"number","description_kind":"plain","optional":true},"core_ebs_optimized":{"type":"bool","description_kind":"plain","optional":true},"core_instance_types":{"type":["list","string"],"description_kind":"plain","optional":true},"core_lifecycle":{"type":"string","description_kind":"plain","optional":true},"core_max_size":{"type":"number","description_kind":"plain","optional":true},"core_min_size":{"type":"number","description_kind":"plain","optional":true},"core_unit":{"type":"string","description_kind":"plain","optional":true},"custom_ami_id":{"type":"string","description_kind":"plain","optional":true},"description":{"type":"string","description_kind":"plain","optional":true},"ebs_root_volume_size":{"type":"number","description_kind":"plain","optional":true},"ec2_key_name":{"type":"string","description_kind":"plain","optional":true},"expose_cluster_id":{"type":"bool","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"job_flow_role":{"type":"string","description_kind":"plain","optional":true},"keep_job_flow_alive":{"type":"bool","description_kind":"plain","optional":true},"log_uri":{"type":"string","description_kind":"plain","optional":true},"managed_primary_security_group":{"type":"string","description_kind":"plain","optional":true},"managed_replica_security_group":{"type":"string","description_kind":"plain","optional":true},"master_ebs_optimized":{"type":"bool","description_kind":"plain","optional":true},"master_instance_types":{"type":["list","string"],"description_kind":"plain","optional":true},"master_lifecycle":{"type":"string","description_kind":"plain","optional":true},"master_target":{"type":"number","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"output_cluster_id":{"type":"string","description_kind":"plain","computed":true},"region":{"type":"string","description_kind":"plain","optional":true},"release_label":{"type":"string","description_kind":"plain","optional":true},"repo_upgrade_on_boot":{"type":"string","description_kind":"plain","optional":true},"retries":{"type":"number","description_kind":"plain","optional":true},"security_config":{"type":"string","description_kind":"plain","optional":true},"service_access_security_group":{"type":"string","description_kind":"plain","optional":true},"service_role":{"type":"string","description_kind":"plain","optional":true},"strategy":{"type":"string","description_kind":"plain","required":true},"task_desired_capacity":{"type":"number","description_kind":"plain","optional":true},"task_ebs_optimized":{"type":"bool","description_kind":"plain","optional":true},"task_instance_types":{"type":["list","string"],"description_kind":"plain","optional":true},"task_lifecycle":{"type":"string","description_kind":"plain","optional":true},"task_max_size":{"type":"number","description_kind":"plain","optional":true},"task_min_size":{"type":"number","description_kind":"plain","optional":true},"task_unit":{"type":"string","description_kind":"plain","optional":true},"termination_protected":{"type":"bool","description_kind":"plain","optional":true},"visible_to_all_users":{"type":"bool","description_kind":"plain","deprecated":true,"optional":true}},"block_types":{"applications":{"nesting_mode":"set","block":{"attributes":{"args":{"type":["list","string"],"description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"version":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"bootstrap_actions_file":{"nesting_mode":"set","block":{"attributes":{"bucket":{"type":"string","description_kind":"plain","required":true},"key":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"configurations_file":{"nesting_mode":"set","block":{"attributes":{"bucket":{"type":"string","description_kind":"plain","required":true},"key":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"core_ebs_block_device":{"nesting_mode":"set","block":{"attributes":{"iops":{"type":"number","description_kind":"plain","optional":true},"size_in_gb":{"type":"number","description_kind":"plain","required":true},"volume_type":{"type":"string","description_kind":"plain","required":true},"volumes_per_instance":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"core_scaling_down_policy":{"nesting_mode":"set","block":{"attributes":{"action_type":{"type":"string","description_kind":"plain","optional":true},"adjustment":{"type":"string","description_kind":"plain","optional":true},"cooldown":{"type":"number","description_kind":"plain","optional":true,"computed":true},"dimensions":{"type":["map","string"],"description_kind":"plain","optional":true},"evaluation_periods":{"type":"number","description_kind":"plain","optional":true,"computed":true},"max_target_capacity":{"type":"string","description_kind":"plain","optional":true},"maximum":{"type":"string","description_kind":"plain","optional":true},"metric_name":{"type":"string","description_kind":"plain","required":true},"min_target_capacity":{"type":"string","description_kind":"plain","optional":true},"minimum":{"type":"string","description_kind":"plain","optional":true},"namespace":{"type":"string","description_kind":"plain","required":true},"operator":{"type":"string","description_kind":"plain","optional":true,"computed":true},"period":{"type":"number","description_kind":"plain","optional":true,"computed":true},"policy_name":{"type":"string","description_kind":"plain","required":true},"statistic":{"type":"string","description_kind":"plain","optional":true,"computed":true},"target":{"type":"string","description_kind":"plain","optional":true},"threshold":{"type":"number","description_kind":"plain","required":true},"unit":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"core_scaling_up_policy":{"nesting_mode":"set","block":{"attributes":{"action_type":{"type":"string","description_kind":"plain","optional":true},"adjustment":{"type":"string","description_kind":"plain","optional":true},"cooldown":{"type":"number","description_kind":"plain","optional":true,"computed":true},"dimensions":{"type":["map","string"],"description_kind":"plain","optional":true},"evaluation_periods":{"type":"number","description_kind":"plain","optional":true,"computed":true},"max_target_capacity":{"type":"string","description_kind":"plain","optional":true},"maximum":{"type":"string","description_kind":"plain","optional":true},"metric_name":{"type":"string","description_kind":"plain","required":true},"min_target_capacity":{"type":"string","description_kind":"plain","optional":true},"minimum":{"type":"string","description_kind":"plain","optional":true},"namespace":{"type":"string","description_kind":"plain","required":true},"operator":{"type":"string","description_kind":"plain","optional":true,"computed":true},"period":{"type":"number","description_kind":"plain","optional":true,"computed":true},"policy_name":{"type":"string","description_kind":"plain","required":true},"statistic":{"type":"string","description_kind":"plain","optional":true,"computed":true},"target":{"type":"string","description_kind":"plain","optional":true},"threshold":{"type":"number","description_kind":"plain","required":true},"unit":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"instance_weights":{"nesting_mode":"set","block":{"attributes":{"instance_type":{"type":"string","description_kind":"plain","required":true},"weighted_capacity":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"}},"master_ebs_block_device":{"nesting_mode":"set","block":{"attributes":{"iops":{"type":"number","description_kind":"plain","optional":true},"size_in_gb":{"type":"number","description_kind":"plain","required":true},"volume_type":{"type":"string","description_kind":"plain","required":true},"volumes_per_instance":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"provisioning_timeout":{"nesting_mode":"list","block":{"attributes":{"timeout":{"type":"number","description_kind":"plain","required":true},"timeout_action":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"scheduled_task":{"nesting_mode":"set","block":{"attributes":{"cron":{"type":"string","description_kind":"plain","required":true},"desired_capacity":{"type":"string","description_kind":"plain","optional":true},"instance_group_type":{"type":"string","description_kind":"plain","required":true},"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"max_capacity":{"type":"string","description_kind":"plain","optional":true},"min_capacity":{"type":"string","description_kind":"plain","optional":true},"task_type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"steps_file":{"nesting_mode":"set","block":{"attributes":{"bucket":{"type":"string","description_kind":"plain","required":true},"key":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"tags":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"task_ebs_block_device":{"nesting_mode":"set","block":{"attributes":{"iops":{"type":"number","description_kind":"plain","optional":true},"size_in_gb":{"type":"number","description_kind":"plain","required":true},"volume_type":{"type":"string","description_kind":"plain","required":true},"volumes_per_instance":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"task_scaling_down_policy":{"nesting_mode":"set","block":{"attributes":{"action_type":{"type":"string","description_kind":"plain","optional":true},"adjustment":{"type":"string","description_kind":"plain","optional":true},"cooldown":{"type":"number","description_kind":"plain","optional":true,"computed":true},"dimensions":{"type":["map","string"],"description_kind":"plain","optional":true},"evaluation_periods":{"type":"number","description_kind":"plain","optional":true,"computed":true},"max_target_capacity":{"type":"string","description_kind":"plain","optional":true},"maximum":{"type":"string","description_kind":"plain","optional":true},"metric_name":{"type":"string","description_kind":"plain","required":true},"min_target_capacity":{"type":"string","description_kind":"plain","optional":true},"minimum":{"type":"string","description_kind":"plain","optional":true},"namespace":{"type":"string","description_kind":"plain","required":true},"operator":{"type":"string","description_kind":"plain","optional":true,"computed":true},"period":{"type":"number","description_kind":"plain","optional":true,"computed":true},"policy_name":{"type":"string","description_kind":"plain","required":true},"statistic":{"type":"string","description_kind":"plain","optional":true,"computed":true},"target":{"type":"string","description_kind":"plain","optional":true},"threshold":{"type":"number","description_kind":"plain","required":true},"unit":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"task_scaling_up_policy":{"nesting_mode":"set","block":{"attributes":{"action_type":{"type":"string","description_kind":"plain","optional":true},"adjustment":{"type":"string","description_kind":"plain","optional":true},"cooldown":{"type":"number","description_kind":"plain","optional":true,"computed":true},"dimensions":{"type":["map","string"],"description_kind":"plain","optional":true},"evaluation_periods":{"type":"number","description_kind":"plain","optional":true,"computed":true},"max_target_capacity":{"type":"string","description_kind":"plain","optional":true},"maximum":{"type":"string","description_kind":"plain","optional":true},"metric_name":{"type":"string","description_kind":"plain","required":true},"min_target_capacity":{"type":"string","description_kind":"plain","optional":true},"minimum":{"type":"string","description_kind":"plain","optional":true},"namespace":{"type":"string","description_kind":"plain","required":true},"operator":{"type":"string","description_kind":"plain","optional":true,"computed":true},"period":{"type":"number","description_kind":"plain","optional":true,"computed":true},"policy_name":{"type":"string","description_kind":"plain","required":true},"statistic":{"type":"string","description_kind":"plain","optional":true,"computed":true},"target":{"type":"string","description_kind":"plain","optional":true},"threshold":{"type":"number","description_kind":"plain","required":true},"unit":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"termination_policies":{"nesting_mode":"list","block":{"block_types":{"statements":{"nesting_mode":"list","block":{"attributes":{"evaluation_periods":{"type":"number","description_kind":"plain","optional":true},"metric_name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","required":true},"operator":{"type":"string","description_kind":"plain","optional":true},"period":{"type":"number","description_kind":"plain","optional":true},"statistic":{"type":"string","description_kind":"plain","optional":true},"threshold":{"type":"number","description_kind":"plain","required":true},"unit":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"}}},"description_kind":"plain"}},"spotinst_ocean_aks_np":{"version":0,"block":{"attributes":{"aks_cluster_name":{"type":"string","description_kind":"plain","required":true},"aks_infrastructure_resource_group_name":{"type":"string","description_kind":"plain","required":true},"aks_region":{"type":"string","description_kind":"plain","required":true},"aks_resource_group_name":{"type":"string","description_kind":"plain","required":true},"availability_zones":{"type":["list","string"],"description_kind":"plain","required":true},"controller_cluster_id":{"type":"string","description_kind":"plain","required":true},"enable_node_public_ip":{"type":"bool","description_kind":"plain","optional":true},"fallback_to_ondemand":{"type":"bool","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kubernetes_version":{"type":"string","description_kind":"plain","optional":true},"labels":{"type":["map","string"],"description_kind":"plain","optional":true},"max_count":{"type":"number","description_kind":"plain","optional":true},"max_pods_per_node":{"type":"number","description_kind":"plain","optional":true},"min_count":{"type":"number","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"os_disk_size_gb":{"type":"number","description_kind":"plain","optional":true},"os_disk_type":{"type":"string","description_kind":"plain","optional":true},"os_sku":{"type":"string","description_kind":"plain","optional":true},"os_type":{"type":"string","description_kind":"plain","optional":true},"pod_subnet_ids":{"type":["list","string"],"description_kind":"plain","optional":true},"spot_percentage":{"type":"number","description_kind":"plain","optional":true},"tags":{"type":["map","string"],"description_kind":"plain","optional":true},"vnet_subnet_ids":{"type":["list","string"],"description_kind":"plain","optional":true}},"block_types":{"autoscaler":{"nesting_mode":"list","block":{"attributes":{"autoscale_is_enabled":{"type":"bool","description_kind":"plain","optional":true}},"block_types":{"autoscale_down":{"nesting_mode":"list","block":{"attributes":{"max_scale_down_percentage":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"autoscale_headroom":{"nesting_mode":"list","block":{"block_types":{"automatic":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"percentage":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"resource_limits":{"nesting_mode":"list","block":{"attributes":{"max_memory_gib":{"type":"number","description_kind":"plain","optional":true},"max_vcpu":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"filters":{"nesting_mode":"list","block":{"attributes":{"accelerated_networking":{"type":"string","description_kind":"plain","optional":true},"architectures":{"type":["set","string"],"description_kind":"plain","optional":true},"disk_performance":{"type":"string","description_kind":"plain","optional":true},"exclude_series":{"type":["set","string"],"description_kind":"plain","optional":true},"gpu_types":{"type":["set","string"],"description_kind":"plain","optional":true},"max_gpu":{"type":"number","description_kind":"plain","optional":true},"max_memory_gib":{"type":"number","description_kind":"plain","optional":true},"max_vcpu":{"type":"number","description_kind":"plain","optional":true},"min_disk":{"type":"number","description_kind":"plain","optional":true},"min_gpu":{"type":"number","description_kind":"plain","optional":true},"min_memory_gib":{"type":"number","description_kind":"plain","optional":true},"min_nics":{"type":"number","description_kind":"plain","optional":true},"min_vcpu":{"type":"number","description_kind":"plain","optional":true},"series":{"type":["set","string"],"description_kind":"plain","optional":true},"vm_types":{"type":["set","string"],"description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"headrooms":{"nesting_mode":"set","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"gpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"health":{"nesting_mode":"list","block":{"attributes":{"grace_period":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"linux_os_config":{"nesting_mode":"list","block":{"block_types":{"sysctls":{"nesting_mode":"list","block":{"attributes":{"vm_max_map_count":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"scheduling":{"nesting_mode":"list","block":{"block_types":{"shutdown_hours":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"time_windows":{"type":["list","string"],"description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"tasks":{"nesting_mode":"list","block":{"attributes":{"cron_expression":{"type":"string","description_kind":"plain","required":true},"is_enabled":{"type":"bool","description_kind":"plain","required":true},"task_type":{"type":"string","description_kind":"plain","required":true}},"block_types":{"parameters":{"nesting_mode":"list","block":{"block_types":{"parameters_cluster_roll":{"nesting_mode":"list","block":{"attributes":{"batch_min_healthy_percentage":{"type":"number","description_kind":"plain","optional":true},"batch_size_percentage":{"type":"number","description_kind":"plain","optional":true},"comment":{"type":"string","description_kind":"plain","optional":true},"respect_pdb":{"type":"bool","description_kind":"plain","optional":true},"respect_restrict_scale_down":{"type":"bool","description_kind":"plain","optional":true},"vng_ids":{"type":["list","string"],"description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"taints":{"nesting_mode":"set","block":{"attributes":{"effect":{"type":"string","description_kind":"plain","required":true},"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"update_policy":{"nesting_mode":"list","block":{"attributes":{"conditioned_roll":{"type":"bool","description_kind":"plain","optional":true},"should_roll":{"type":"bool","description_kind":"plain","required":true}},"block_types":{"roll_config":{"nesting_mode":"list","block":{"attributes":{"batch_min_healthy_percentage":{"type":"number","description_kind":"plain","optional":true},"batch_size_percentage":{"type":"number","description_kind":"plain","optional":true},"comment":{"type":"string","description_kind":"plain","optional":true},"node_names":{"type":["list","string"],"description_kind":"plain","optional":true},"node_pool_names":{"type":["list","string"],"description_kind":"plain","optional":true},"respect_pdb":{"type":"bool","description_kind":"plain","optional":true},"respect_restrict_scale_down":{"type":"bool","description_kind":"plain","optional":true},"vng_ids":{"type":["list","string"],"description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"spotinst_ocean_aks_np_virtual_node_group":{"version":0,"block":{"attributes":{"availability_zones":{"type":["list","string"],"description_kind":"plain","optional":true},"enable_node_public_ip":{"type":"bool","description_kind":"plain","optional":true},"fallback_to_ondemand":{"type":"bool","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kubernetes_version":{"type":"string","description_kind":"plain","optional":true},"labels":{"type":["map","string"],"description_kind":"plain","optional":true},"max_count":{"type":"number","description_kind":"plain","optional":true},"max_pods_per_node":{"type":"number","description_kind":"plain","optional":true},"min_count":{"type":"number","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"ocean_id":{"type":"string","description_kind":"plain","required":true},"os_disk_size_gb":{"type":"number","description_kind":"plain","optional":true},"os_disk_type":{"type":"string","description_kind":"plain","optional":true},"os_sku":{"type":"string","description_kind":"plain","optional":true},"os_type":{"type":"string","description_kind":"plain","optional":true},"pod_subnet_ids":{"type":["list","string"],"description_kind":"plain","optional":true},"spot_percentage":{"type":"number","description_kind":"plain","optional":true},"tags":{"type":["map","string"],"description_kind":"plain","optional":true},"vnet_subnet_ids":{"type":["list","string"],"description_kind":"plain","optional":true}},"block_types":{"filters":{"nesting_mode":"list","block":{"attributes":{"accelerated_networking":{"type":"string","description_kind":"plain","optional":true},"architectures":{"type":["set","string"],"description_kind":"plain","optional":true},"disk_performance":{"type":"string","description_kind":"plain","optional":true},"exclude_series":{"type":["set","string"],"description_kind":"plain","optional":true},"gpu_types":{"type":["set","string"],"description_kind":"plain","optional":true},"max_gpu":{"type":"number","description_kind":"plain","optional":true},"max_memory_gib":{"type":"number","description_kind":"plain","optional":true},"max_vcpu":{"type":"number","description_kind":"plain","optional":true},"min_disk":{"type":"number","description_kind":"plain","optional":true},"min_gpu":{"type":"number","description_kind":"plain","optional":true},"min_memory_gib":{"type":"number","description_kind":"plain","optional":true},"min_nics":{"type":"number","description_kind":"plain","optional":true},"min_vcpu":{"type":"number","description_kind":"plain","optional":true},"series":{"type":["set","string"],"description_kind":"plain","optional":true},"vm_types":{"type":["set","string"],"description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"headrooms":{"nesting_mode":"set","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"gpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"linux_os_config":{"nesting_mode":"list","block":{"block_types":{"sysctls":{"nesting_mode":"list","block":{"attributes":{"vm_max_map_count":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"taints":{"nesting_mode":"set","block":{"attributes":{"effect":{"type":"string","description_kind":"plain","required":true},"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"update_policy":{"nesting_mode":"list","block":{"attributes":{"conditioned_roll":{"type":"bool","description_kind":"plain","optional":true},"should_roll":{"type":"bool","description_kind":"plain","required":true}},"block_types":{"roll_config":{"nesting_mode":"list","block":{"attributes":{"batch_min_healthy_percentage":{"type":"number","description_kind":"plain","optional":true},"batch_size_percentage":{"type":"number","description_kind":"plain","optional":true},"comment":{"type":"string","description_kind":"plain","optional":true},"node_names":{"type":["list","string"],"description_kind":"plain","optional":true},"node_pool_names":{"type":["list","string"],"description_kind":"plain","optional":true},"respect_pdb":{"type":"bool","description_kind":"plain","optional":true},"respect_restrict_scale_down":{"type":"bool","description_kind":"plain","optional":true},"vng_ids":{"type":["list","string"],"description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"spotinst_ocean_aws":{"version":0,"block":{"attributes":{"associate_ipv6_address":{"type":"bool","description_kind":"plain","optional":true},"associate_public_ip_address":{"type":"bool","description_kind":"plain","optional":true},"blacklist":{"type":["list","string"],"description_kind":"plain","optional":true},"controller_id":{"type":"string","description_kind":"plain","optional":true},"desired_capacity":{"type":"number","description_kind":"plain","optional":true,"computed":true},"draining_timeout":{"type":"number","description_kind":"plain","optional":true},"ebs_optimized":{"type":"bool","description_kind":"plain","optional":true},"fallback_to_ondemand":{"type":"bool","description_kind":"plain","optional":true},"grace_period":{"type":"number","description_kind":"plain","optional":true},"health_check_unhealthy_duration_before_replacement":{"type":"number","description_kind":"plain","optional":true},"iam_instance_profile":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"image_id":{"type":"string","description_kind":"plain","required":true},"key_name":{"type":"string","description_kind":"plain","optional":true},"max_size":{"type":"number","description_kind":"plain","optional":true},"min_size":{"type":"number","description_kind":"plain","optional":true,"computed":true},"monitoring":{"type":"bool","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","optional":true},"region":{"type":"string","description_kind":"plain","optional":true},"root_volume_size":{"type":"number","description_kind":"plain","optional":true},"security_groups":{"type":["list","string"],"description_kind":"plain","required":true},"spot_percentage":{"type":"number","description_kind":"plain","optional":true},"spread_nodes_by":{"type":"string","description_kind":"plain","optional":true},"subnet_ids":{"type":["list","string"],"description_kind":"plain","required":true},"use_as_template_only":{"type":"bool","description_kind":"plain","optional":true},"user_data":{"type":"string","description_kind":"plain","optional":true},"utilize_commitments":{"type":"bool","description_kind":"plain","optional":true},"utilize_reserved_instances":{"type":"bool","description_kind":"plain","optional":true},"whitelist":{"type":["list","string"],"description_kind":"plain","optional":true}},"block_types":{"attach_load_balancer":{"nesting_mode":"list","block":{"attributes":{"arn":{"type":"string","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"autoscaler":{"nesting_mode":"list","block":{"attributes":{"auto_headroom_percentage":{"type":"number","description_kind":"plain","optional":true},"autoscale_cooldown":{"type":"number","description_kind":"plain","optional":true},"autoscale_is_auto_config":{"type":"bool","description_kind":"plain","optional":true},"autoscale_is_enabled":{"type":"bool","description_kind":"plain","optional":true},"enable_automatic_and_manual_headroom":{"type":"bool","description_kind":"plain","optional":true},"extended_resource_definitions":{"type":["list","string"],"description_kind":"plain","optional":true}},"block_types":{"autoscale_down":{"nesting_mode":"list","block":{"attributes":{"evaluation_periods":{"type":"number","description_kind":"plain","optional":true},"is_aggressive_scale_down_enabled":{"type":"bool","description_kind":"plain","optional":true},"max_scale_down_percentage":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"autoscale_headroom":{"nesting_mode":"list","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"gpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"resource_limits":{"nesting_mode":"list","block":{"attributes":{"max_memory_gib":{"type":"number","description_kind":"plain","optional":true},"max_vcpu":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"block_device_mappings":{"nesting_mode":"list","block":{"attributes":{"device_name":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"ebs":{"nesting_mode":"list","block":{"attributes":{"delete_on_termination":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"encrypted":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"iops":{"type":"number","description_kind":"plain","optional":true},"kms_key_id":{"type":"string","description_kind":"plain","optional":true},"snapshot_id":{"type":"string","description_kind":"plain","optional":true},"throughput":{"type":"number","description_kind":"plain","optional":true},"volume_size":{"type":"number","description_kind":"plain","optional":true},"volume_type":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"dynamic_iops":{"nesting_mode":"list","block":{"attributes":{"base_size":{"type":"number","description_kind":"plain","required":true},"resource":{"type":"string","description_kind":"plain","required":true},"size_per_resource_unit":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"dynamic_volume_size":{"nesting_mode":"list","block":{"attributes":{"base_size":{"type":"number","description_kind":"plain","required":true},"resource":{"type":"string","description_kind":"plain","required":true},"size_per_resource_unit":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"cluster_orientation":{"nesting_mode":"list","block":{"attributes":{"availability_vs_cost":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"detach_load_balancer":{"nesting_mode":"list","block":{"attributes":{"arn":{"type":"string","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"filters":{"nesting_mode":"list","block":{"attributes":{"architectures":{"type":["set","string"],"description_kind":"plain","optional":true},"categories":{"type":["set","string"],"description_kind":"plain","optional":true},"disk_types":{"type":["set","string"],"description_kind":"plain","optional":true},"exclude_families":{"type":["set","string"],"description_kind":"plain","optional":true},"exclude_metal":{"type":"bool","description_kind":"plain","optional":true},"hypervisor":{"type":["set","string"],"description_kind":"plain","optional":true},"include_families":{"type":["set","string"],"description_kind":"plain","optional":true},"is_ena_supported":{"type":"string","description_kind":"plain","optional":true},"max_gpu":{"type":"number","description_kind":"plain","optional":true},"max_memory_gib":{"type":"number","description_kind":"plain","optional":true},"max_network_performance":{"type":"number","description_kind":"plain","optional":true},"max_vcpu":{"type":"number","description_kind":"plain","optional":true},"min_enis":{"type":"number","description_kind":"plain","optional":true},"min_gpu":{"type":"number","description_kind":"plain","optional":true},"min_memory_gib":{"type":"number","description_kind":"plain","optional":true},"min_network_performance":{"type":"number","description_kind":"plain","optional":true},"min_vcpu":{"type":"number","description_kind":"plain","optional":true},"root_device_types":{"type":["set","string"],"description_kind":"plain","optional":true},"virtualization_types":{"type":["set","string"],"description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"instance_metadata_options":{"nesting_mode":"list","block":{"attributes":{"http_put_response_hop_limit":{"type":"number","description_kind":"plain","optional":true},"http_tokens":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"load_balancers":{"nesting_mode":"list","block":{"attributes":{"arn":{"type":"string","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"logging":{"nesting_mode":"list","block":{"block_types":{"export":{"nesting_mode":"list","block":{"block_types":{"s3":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"resource_tag_specification":{"nesting_mode":"list","block":{"attributes":{"should_tag_volumes":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"}},"scheduled_task":{"nesting_mode":"list","block":{"block_types":{"shutdown_hours":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"time_windows":{"type":["list","string"],"description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"tasks":{"nesting_mode":"list","block":{"attributes":{"cron_expression":{"type":"string","description_kind":"plain","required":true},"is_enabled":{"type":"bool","description_kind":"plain","required":true},"task_type":{"type":"string","description_kind":"plain","required":true}},"block_types":{"parameters":{"nesting_mode":"list","block":{"block_types":{"ami_auto_update":{"nesting_mode":"list","block":{"attributes":{"apply_roll":{"type":"bool","description_kind":"plain","optional":true},"minor_version":{"type":"bool","description_kind":"plain","optional":true},"patch":{"type":"bool","description_kind":"plain","optional":true}},"block_types":{"ami_auto_update_cluster_roll":{"nesting_mode":"list","block":{"attributes":{"batch_min_healthy_percentage":{"type":"number","description_kind":"plain","optional":true},"batch_size_percentage":{"type":"number","description_kind":"plain","optional":true},"comment":{"type":"string","description_kind":"plain","optional":true},"respect_pdb":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"parameters_cluster_roll":{"nesting_mode":"list","block":{"attributes":{"batch_min_healthy_percentage":{"type":"number","description_kind":"plain","optional":true},"batch_size_percentage":{"type":"number","description_kind":"plain","optional":true},"comment":{"type":"string","description_kind":"plain","optional":true},"respect_pdb":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"tags":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"update_policy":{"nesting_mode":"list","block":{"attributes":{"auto_apply_tags":{"type":"bool","description_kind":"plain","optional":true},"conditioned_roll":{"type":"bool","description_kind":"plain","optional":true},"conditioned_roll_params":{"type":["list","string"],"description_kind":"plain","optional":true},"should_roll":{"type":"bool","description_kind":"plain","required":true}},"block_types":{"roll_config":{"nesting_mode":"list","block":{"attributes":{"batch_min_healthy_percentage":{"type":"number","description_kind":"plain","optional":true},"batch_size_percentage":{"type":"number","description_kind":"plain","required":true},"launch_spec_ids":{"type":["list","string"],"description_kind":"plain","optional":true},"respect_pdb":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"spotinst_ocean_aws_extended_resource_definition":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true},"resource_mapping":{"type":["map","string"],"description_kind":"plain","required":true}},"description_kind":"plain"}},"spotinst_ocean_aws_launch_spec":{"version":0,"block":{"attributes":{"associate_public_ip_address":{"type":"bool","description_kind":"plain","optional":true},"iam_instance_profile":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"image_id":{"type":"string","description_kind":"plain","optional":true},"instance_types":{"type":["list","string"],"description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","optional":true},"ocean_id":{"type":"string","description_kind":"plain","required":true},"preferred_od_types":{"type":["list","string"],"description_kind":"plain","optional":true},"preferred_spot_types":{"type":["list","string"],"description_kind":"plain","optional":true},"restrict_scale_down":{"type":"bool","description_kind":"plain","optional":true},"root_volume_size":{"type":"number","description_kind":"plain","optional":true},"security_groups":{"type":["list","string"],"description_kind":"plain","optional":true},"subnet_ids":{"type":["list","string"],"description_kind":"plain","optional":true},"user_data":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"autoscale_down":{"nesting_mode":"list","block":{"attributes":{"max_scale_down_percentage":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"autoscale_headrooms":{"nesting_mode":"set","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"gpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"}},"autoscale_headrooms_automatic":{"nesting_mode":"list","block":{"attributes":{"auto_headroom_percentage":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"block_device_mappings":{"nesting_mode":"list","block":{"attributes":{"device_name":{"type":"string","description_kind":"plain","optional":true},"no_device":{"type":"string","description_kind":"plain","optional":true},"virtual_name":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"ebs":{"nesting_mode":"list","block":{"attributes":{"delete_on_termination":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"encrypted":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"iops":{"type":"number","description_kind":"plain","optional":true},"kms_key_id":{"type":"string","description_kind":"plain","optional":true},"snapshot_id":{"type":"string","description_kind":"plain","optional":true},"throughput":{"type":"number","description_kind":"plain","optional":true},"volume_size":{"type":"number","description_kind":"plain","optional":true},"volume_type":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"dynamic_volume_size":{"nesting_mode":"list","block":{"attributes":{"base_size":{"type":"number","description_kind":"plain","required":true},"resource":{"type":"string","description_kind":"plain","required":true},"size_per_resource_unit":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"create_options":{"nesting_mode":"list","block":{"attributes":{"initial_nodes":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"delete_options":{"nesting_mode":"list","block":{"attributes":{"delete_nodes":{"type":"bool","description_kind":"plain","optional":true},"force_delete":{"type":"bool","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"elastic_ip_pool":{"nesting_mode":"set","block":{"block_types":{"tag_selector":{"nesting_mode":"list","block":{"attributes":{"tag_key":{"type":"string","description_kind":"plain","required":true},"tag_value":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"ephemeral_storage":{"nesting_mode":"list","block":{"attributes":{"ephemeral_storage_device_name":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"images":{"nesting_mode":"list","block":{"attributes":{"image_id":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"instance_metadata_options":{"nesting_mode":"list","block":{"attributes":{"http_put_response_hop_limit":{"type":"number","description_kind":"plain","optional":true},"http_tokens":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"instance_types_filters":{"nesting_mode":"list","block":{"attributes":{"categories":{"type":["set","string"],"description_kind":"plain","optional":true},"disk_types":{"type":["set","string"],"description_kind":"plain","optional":true},"exclude_families":{"type":["set","string"],"description_kind":"plain","optional":true},"exclude_metal":{"type":"bool","description_kind":"plain","optional":true},"hypervisor":{"type":["set","string"],"description_kind":"plain","optional":true},"include_families":{"type":["set","string"],"description_kind":"plain","optional":true},"is_ena_supported":{"type":"string","description_kind":"plain","optional":true},"max_gpu":{"type":"number","description_kind":"plain","optional":true},"max_memory_gib":{"type":"number","description_kind":"plain","optional":true},"max_network_performance":{"type":"number","description_kind":"plain","optional":true},"max_vcpu":{"type":"number","description_kind":"plain","optional":true},"min_enis":{"type":"number","description_kind":"plain","optional":true},"min_gpu":{"type":"number","description_kind":"plain","optional":true},"min_memory_gib":{"type":"number","description_kind":"plain","optional":true},"min_network_performance":{"type":"number","description_kind":"plain","optional":true},"min_vcpu":{"type":"number","description_kind":"plain","optional":true},"root_device_types":{"type":["set","string"],"description_kind":"plain","optional":true},"virtualization_types":{"type":["set","string"],"description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"labels":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"resource_limits":{"nesting_mode":"list","block":{"attributes":{"max_instance_count":{"type":"number","description_kind":"plain","optional":true},"min_instance_count":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"scheduling_shutdown_hours":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"time_windows":{"type":["list","string"],"description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"scheduling_task":{"nesting_mode":"set","block":{"attributes":{"cron_expression":{"type":"string","description_kind":"plain","required":true},"is_enabled":{"type":"bool","description_kind":"plain","required":true},"task_type":{"type":"string","description_kind":"plain","required":true}},"block_types":{"task_headroom":{"nesting_mode":"set","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"gpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"strategy":{"nesting_mode":"list","block":{"attributes":{"draining_timeout":{"type":"number","description_kind":"plain","optional":true},"spot_percentage":{"type":"number","description_kind":"plain","optional":true},"utilize_commitments":{"type":"bool","description_kind":"plain","optional":true},"utilize_reserved_instances":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"}},"tags":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"taints":{"nesting_mode":"set","block":{"attributes":{"effect":{"type":"string","description_kind":"plain","required":true},"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"update_policy":{"nesting_mode":"list","block":{"attributes":{"should_roll":{"type":"bool","description_kind":"plain","required":true}},"block_types":{"roll_config":{"nesting_mode":"list","block":{"attributes":{"batch_size_percentage":{"type":"number","description_kind":"plain","required":true},"respect_pdb":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"spotinst_ocean_ecs":{"version":0,"block":{"attributes":{"associate_public_ip_address":{"type":"bool","description_kind":"plain","optional":true},"blacklist":{"type":["list","string"],"description_kind":"plain","optional":true},"cluster_name":{"type":"string","description_kind":"plain","required":true},"desired_capacity":{"type":"number","description_kind":"plain","optional":true,"computed":true},"draining_timeout":{"type":"number","description_kind":"plain","optional":true},"ebs_optimized":{"type":"bool","description_kind":"plain","optional":true},"iam_instance_profile":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"image_id":{"type":"string","description_kind":"plain","required":true},"key_pair":{"type":"string","description_kind":"plain","optional":true},"max_size":{"type":"number","description_kind":"plain","optional":true,"computed":true},"min_size":{"type":"number","description_kind":"plain","optional":true,"computed":true},"monitoring":{"type":"bool","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"region":{"type":"string","description_kind":"plain","required":true},"security_group_ids":{"type":["list","string"],"description_kind":"plain","required":true},"spot_percentage":{"type":"number","description_kind":"plain","optional":true},"subnet_ids":{"type":["list","string"],"description_kind":"plain","required":true},"use_as_template_only":{"type":"bool","description_kind":"plain","optional":true},"user_data":{"type":"string","description_kind":"plain","optional":true},"utilize_commitments":{"type":"bool","description_kind":"plain","optional":true},"utilize_reserved_instances":{"type":"bool","description_kind":"plain","optional":true},"whitelist":{"type":["list","string"],"description_kind":"plain","optional":true}},"block_types":{"autoscaler":{"nesting_mode":"list","block":{"attributes":{"auto_headroom_percentage":{"type":"number","description_kind":"plain","optional":true},"cooldown":{"type":"number","description_kind":"plain","optional":true},"enable_automatic_and_manual_headroom":{"type":"bool","description_kind":"plain","optional":true},"is_auto_config":{"type":"bool","description_kind":"plain","optional":true},"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"should_scale_down_non_service_tasks":{"type":"bool","description_kind":"plain","optional":true}},"block_types":{"down":{"nesting_mode":"list","block":{"attributes":{"max_scale_down_percentage":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"headroom":{"nesting_mode":"list","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"resource_limits":{"nesting_mode":"list","block":{"attributes":{"max_memory_gib":{"type":"number","description_kind":"plain","optional":true},"max_vcpu":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"block_device_mappings":{"nesting_mode":"list","block":{"attributes":{"device_name":{"type":"string","description_kind":"plain","required":true},"no_device":{"type":"string","description_kind":"plain","optional":true},"virtual_name":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"ebs":{"nesting_mode":"list","block":{"attributes":{"delete_on_termination":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"encrypted":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"iops":{"type":"number","description_kind":"plain","optional":true},"kms_key_id":{"type":"string","description_kind":"plain","optional":true},"snapshot_id":{"type":"string","description_kind":"plain","optional":true},"throughput":{"type":"number","description_kind":"plain","optional":true},"volume_size":{"type":"number","description_kind":"plain","optional":true},"volume_type":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"dynamic_volume_size":{"nesting_mode":"list","block":{"attributes":{"base_size":{"type":"number","description_kind":"plain","required":true},"resource":{"type":"string","description_kind":"plain","required":true},"size_per_resource_unit":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"cluster_orientation":{"nesting_mode":"list","block":{"attributes":{"availability_vs_cost":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"filters":{"nesting_mode":"list","block":{"attributes":{"architectures":{"type":["set","string"],"description_kind":"plain","optional":true},"categories":{"type":["set","string"],"description_kind":"plain","optional":true},"disk_types":{"type":["set","string"],"description_kind":"plain","optional":true},"exclude_families":{"type":["set","string"],"description_kind":"plain","optional":true},"exclude_metal":{"type":"bool","description_kind":"plain","optional":true},"hypervisor":{"type":["set","string"],"description_kind":"plain","optional":true},"include_families":{"type":["set","string"],"description_kind":"plain","optional":true},"is_ena_supported":{"type":"string","description_kind":"plain","optional":true},"max_gpu":{"type":"number","description_kind":"plain","optional":true},"max_memory_gib":{"type":"number","description_kind":"plain","optional":true},"max_network_performance":{"type":"number","description_kind":"plain","optional":true},"max_vcpu":{"type":"number","description_kind":"plain","optional":true},"min_enis":{"type":"number","description_kind":"plain","optional":true},"min_gpu":{"type":"number","description_kind":"plain","optional":true},"min_memory_gib":{"type":"number","description_kind":"plain","optional":true},"min_network_performance":{"type":"number","description_kind":"plain","optional":true},"min_vcpu":{"type":"number","description_kind":"plain","optional":true},"root_device_types":{"type":["set","string"],"description_kind":"plain","optional":true},"virtualization_types":{"type":["set","string"],"description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"instance_metadata_options":{"nesting_mode":"list","block":{"attributes":{"http_put_response_hop_limit":{"type":"number","description_kind":"plain","optional":true},"http_tokens":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"logging":{"nesting_mode":"list","block":{"block_types":{"export":{"nesting_mode":"list","block":{"block_types":{"s3":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"optimize_images":{"nesting_mode":"list","block":{"attributes":{"perform_at":{"type":"string","description_kind":"plain","required":true},"should_optimize_ecs_ami":{"type":"bool","description_kind":"plain","required":true},"time_windows":{"type":["list","string"],"description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"scheduled_task":{"nesting_mode":"set","block":{"block_types":{"shutdown_hours":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"time_windows":{"type":["list","string"],"description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"tasks":{"nesting_mode":"list","block":{"attributes":{"cron_expression":{"type":"string","description_kind":"plain","required":true},"is_enabled":{"type":"bool","description_kind":"plain","required":true},"task_type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"tags":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"update_policy":{"nesting_mode":"list","block":{"attributes":{"auto_apply_tags":{"type":"bool","description_kind":"plain","optional":true},"conditioned_roll":{"type":"bool","description_kind":"plain","optional":true},"should_roll":{"type":"bool","description_kind":"plain","required":true}},"block_types":{"roll_config":{"nesting_mode":"list","block":{"attributes":{"batch_min_healthy_percentage":{"type":"number","description_kind":"plain","optional":true},"batch_size_percentage":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"spotinst_ocean_ecs_launch_spec":{"version":0,"block":{"attributes":{"iam_instance_profile":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"image_id":{"type":"string","description_kind":"plain","optional":true},"instance_types":{"type":["list","string"],"description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"ocean_id":{"type":"string","description_kind":"plain","required":true},"preferred_spot_types":{"type":["list","string"],"description_kind":"plain","optional":true},"restrict_scale_down":{"type":"bool","description_kind":"plain","optional":true},"security_group_ids":{"type":["list","string"],"description_kind":"plain","optional":true},"subnet_ids":{"type":["list","string"],"description_kind":"plain","optional":true},"user_data":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"attributes":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"autoscale_headrooms":{"nesting_mode":"set","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"}},"block_device_mappings":{"nesting_mode":"list","block":{"attributes":{"device_name":{"type":"string","description_kind":"plain","required":true},"no_device":{"type":"string","description_kind":"plain","optional":true},"virtual_name":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"ebs":{"nesting_mode":"list","block":{"attributes":{"delete_on_termination":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"encrypted":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"iops":{"type":"number","description_kind":"plain","optional":true},"kms_key_id":{"type":"string","description_kind":"plain","optional":true},"snapshot_id":{"type":"string","description_kind":"plain","optional":true},"throughput":{"type":"number","description_kind":"plain","optional":true},"volume_size":{"type":"number","description_kind":"plain","optional":true},"volume_type":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"dynamic_volume_size":{"nesting_mode":"list","block":{"attributes":{"base_size":{"type":"number","description_kind":"plain","required":true},"resource":{"type":"string","description_kind":"plain","required":true},"size_per_resource_unit":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"images":{"nesting_mode":"list","block":{"attributes":{"image_id":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"instance_metadata_options":{"nesting_mode":"list","block":{"attributes":{"http_put_response_hop_limit":{"type":"number","description_kind":"plain","optional":true},"http_tokens":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"scheduling_task":{"nesting_mode":"set","block":{"attributes":{"cron_expression":{"type":"string","description_kind":"plain","required":true},"is_enabled":{"type":"bool","description_kind":"plain","required":true},"task_type":{"type":"string","description_kind":"plain","required":true}},"block_types":{"task_headroom":{"nesting_mode":"set","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"strategy":{"nesting_mode":"set","block":{"attributes":{"spot_percentage":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"tags":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spotinst_ocean_gke_import":{"version":0,"block":{"attributes":{"blacklist":{"type":["list","string"],"description_kind":"plain","optional":true},"cluster_controller_id":{"type":"string","description_kind":"plain","computed":true},"cluster_name":{"type":"string","description_kind":"plain","required":true},"controller_cluster_id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"desired_capacity":{"type":"number","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"location":{"type":"string","description_kind":"plain","required":true},"max_size":{"type":"number","description_kind":"plain","optional":true,"computed":true},"min_size":{"type":"number","description_kind":"plain","optional":true,"computed":true},"root_volume_type":{"type":"string","description_kind":"plain","optional":true},"use_as_template_only":{"type":"bool","description_kind":"plain","optional":true},"whitelist":{"type":["list","string"],"description_kind":"plain","optional":true}},"block_types":{"autoscaler":{"nesting_mode":"list","block":{"attributes":{"auto_headroom_percentage":{"type":"number","description_kind":"plain","optional":true},"cooldown":{"type":"number","description_kind":"plain","optional":true},"enable_automatic_and_manual_headroom":{"type":"bool","description_kind":"plain","optional":true},"is_auto_config":{"type":"bool","description_kind":"plain","optional":true},"is_enabled":{"type":"bool","description_kind":"plain","optional":true}},"block_types":{"down":{"nesting_mode":"list","block":{"attributes":{"evaluation_periods":{"type":"number","description_kind":"plain","optional":true},"max_scale_down_percentage":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"headroom":{"nesting_mode":"list","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"gpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"resource_limits":{"nesting_mode":"list","block":{"attributes":{"max_memory_gib":{"type":"number","description_kind":"plain","optional":true},"max_vcpu":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"backend_services":{"nesting_mode":"set","block":{"attributes":{"location_type":{"type":"string","description_kind":"plain","optional":true},"scheme":{"type":"string","description_kind":"plain","optional":true},"service_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"named_ports":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"ports":{"type":["list","string"],"description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"scheduled_task":{"nesting_mode":"list","block":{"block_types":{"shutdown_hours":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"time_windows":{"type":["list","string"],"description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"tasks":{"nesting_mode":"list","block":{"attributes":{"cron_expression":{"type":"string","description_kind":"plain","required":true},"is_enabled":{"type":"bool","description_kind":"plain","required":true},"task_type":{"type":"string","description_kind":"plain","required":true}},"block_types":{"task_parameters":{"nesting_mode":"list","block":{"block_types":{"cluster_roll":{"nesting_mode":"list","block":{"attributes":{"batch_min_healthy_percentage":{"type":"number","description_kind":"plain","optional":true},"batch_size_percentage":{"type":"number","description_kind":"plain","optional":true},"comment":{"type":"string","description_kind":"plain","optional":true},"respect_pdb":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}}},"description_kind":"plain"}},"shielded_instance_config":{"nesting_mode":"list","block":{"attributes":{"enable_integrity_monitoring":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"enable_secure_boot":{"type":"bool","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"},"max_items":1},"strategy":{"nesting_mode":"list","block":{"attributes":{"draining_timeout":{"type":"number","description_kind":"plain","optional":true},"preemptible_percentage":{"type":"number","description_kind":"plain","optional":true},"provisioning_model":{"type":"string","description_kind":"plain","optional":true},"should_utilize_commitments":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"}},"update_policy":{"nesting_mode":"list","block":{"attributes":{"conditioned_roll":{"type":"bool","description_kind":"plain","optional":true},"should_roll":{"type":"bool","description_kind":"plain","required":true}},"block_types":{"roll_config":{"nesting_mode":"list","block":{"attributes":{"batch_min_healthy_percentage":{"type":"number","description_kind":"plain","optional":true},"batch_size_percentage":{"type":"number","description_kind":"plain","required":true},"launch_spec_ids":{"type":["list","string"],"description_kind":"plain","optional":true},"respect_pdb":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"spotinst_ocean_gke_launch_spec":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"instance_types":{"type":["list","string"],"description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","optional":true,"computed":true},"node_pool_name":{"type":"string","description_kind":"plain","optional":true},"ocean_id":{"type":"string","description_kind":"plain","required":true},"restrict_scale_down":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"root_volume_size":{"type":"number","description_kind":"plain","optional":true,"computed":true},"root_volume_type":{"type":"string","description_kind":"plain","optional":true,"computed":true},"service_account":{"type":"string","description_kind":"plain","optional":true,"computed":true},"source_image":{"type":"string","description_kind":"plain","optional":true,"computed":true},"tags":{"type":["list","string"],"description_kind":"plain","optional":true,"computed":true}},"block_types":{"autoscale_headrooms":{"nesting_mode":"set","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"gpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"}},"autoscale_headrooms_automatic":{"nesting_mode":"list","block":{"attributes":{"auto_headroom_percentage":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"create_options":{"nesting_mode":"list","block":{"attributes":{"initial_nodes":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"labels":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","optional":true,"computed":true},"value":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"metadata":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","optional":true,"computed":true},"value":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"network_interfaces":{"nesting_mode":"set","block":{"attributes":{"network":{"type":"string","description_kind":"plain","required":true},"project_id":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"access_configs":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"alias_ip_ranges":{"nesting_mode":"set","block":{"attributes":{"ip_cidr_range":{"type":"string","description_kind":"plain","required":true},"subnetwork_range_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"resource_limits":{"nesting_mode":"list","block":{"attributes":{"max_instance_count":{"type":"number","description_kind":"plain","optional":true},"min_instance_count":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"scheduling_task":{"nesting_mode":"set","block":{"attributes":{"cron_expression":{"type":"string","description_kind":"plain","required":true},"is_enabled":{"type":"bool","description_kind":"plain","required":true},"task_type":{"type":"string","description_kind":"plain","required":true}},"block_types":{"task_headroom":{"nesting_mode":"set","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"gpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"shielded_instance_config":{"nesting_mode":"set","block":{"attributes":{"enable_integrity_monitoring":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"enable_secure_boot":{"type":"bool","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"},"max_items":1},"storage":{"nesting_mode":"set","block":{"attributes":{"local_ssd_count":{"type":"number","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"},"max_items":1},"strategy":{"nesting_mode":"list","block":{"attributes":{"preemptible_percentage":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"taints":{"nesting_mode":"set","block":{"attributes":{"effect":{"type":"string","description_kind":"plain","optional":true,"computed":true},"key":{"type":"string","description_kind":"plain","optional":true,"computed":true},"value":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"update_policy":{"nesting_mode":"list","block":{"attributes":{"should_roll":{"type":"bool","description_kind":"plain","required":true}},"block_types":{"roll_config":{"nesting_mode":"list","block":{"attributes":{"batch_size_percentage":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"spotinst_ocean_gke_launch_spec_import":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"node_pool_name":{"type":"string","description_kind":"plain","required":true},"ocean_id":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"spotinst_ocean_right_sizing_rule":{"version":0,"block":{"attributes":{"exclude_preliminary_recommendations":{"type":"bool","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ocean_id":{"type":"string","description_kind":"plain","optional":true},"restart_replicas":{"type":"string","description_kind":"plain","optional":true},"rule_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"attach_workloads":{"nesting_mode":"set","block":{"block_types":{"namespaces":{"nesting_mode":"set","block":{"attributes":{"namespace_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"labels":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"workloads":{"nesting_mode":"set","block":{"attributes":{"regex_name":{"type":"string","description_kind":"plain","optional":true},"workload_name":{"type":"string","description_kind":"plain","optional":true},"workload_type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"}},"detach_workloads":{"nesting_mode":"set","block":{"block_types":{"namespaces":{"nesting_mode":"set","block":{"attributes":{"namespace_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"labels":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"workloads":{"nesting_mode":"set","block":{"attributes":{"regex_name":{"type":"string","description_kind":"plain","optional":true},"workload_name":{"type":"string","description_kind":"plain","optional":true},"workload_type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"}},"recommendation_application_boundaries":{"nesting_mode":"list","block":{"attributes":{"cpu_max":{"type":"number","description_kind":"plain","optional":true},"cpu_min":{"type":"number","description_kind":"plain","optional":true},"memory_max":{"type":"number","description_kind":"plain","optional":true},"memory_min":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"recommendation_application_hpa":{"nesting_mode":"set","block":{"attributes":{"allow_hpa_recommendations":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"}},"recommendation_application_intervals":{"nesting_mode":"set","block":{"attributes":{"repetition_basis":{"type":"string","description_kind":"plain","required":true}},"block_types":{"monthly_repetition_basis":{"nesting_mode":"set","block":{"attributes":{"interval_months":{"type":["list","number"],"description_kind":"plain","required":true},"week_of_the_month":{"type":["list","string"],"description_kind":"plain","required":true}},"block_types":{"weekly_repetition_basis":{"nesting_mode":"set","block":{"attributes":{"interval_days":{"type":["list","string"],"description_kind":"plain","required":true},"interval_hours_end_time":{"type":"string","description_kind":"plain","required":true},"interval_hours_start_time":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"weekly_repetition_basis":{"nesting_mode":"set","block":{"attributes":{"interval_days":{"type":["list","string"],"description_kind":"plain","required":true},"interval_hours_end_time":{"type":"string","description_kind":"plain","required":true},"interval_hours_start_time":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"min_items":1},"recommendation_application_min_threshold":{"nesting_mode":"set","block":{"attributes":{"cpu_percentage":{"type":"number","description_kind":"plain","optional":true},"memory_percentage":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"recommendation_application_overhead_values":{"nesting_mode":"set","block":{"attributes":{"cpu_percentage":{"type":"number","description_kind":"plain","optional":true},"memory_percentage":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spotinst_ocean_spark":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ocean_cluster_id":{"type":"string","description_kind":"plain","required":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"create_vngs":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"use_taints":{"type":"bool","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"},"max_items":1},"ingress":{"nesting_mode":"list","block":{"attributes":{"service_annotations":{"type":["map","string"],"description_kind":"plain","optional":true,"computed":true}},"block_types":{"controller":{"nesting_mode":"list","block":{"attributes":{"managed":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"custom_endpoint":{"nesting_mode":"list","block":{"attributes":{"address":{"type":"string","description_kind":"plain","optional":true},"enabled":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"load_balancer":{"nesting_mode":"list","block":{"attributes":{"managed":{"type":"bool","description_kind":"plain","optional":true},"service_annotations":{"type":["map","string"],"description_kind":"plain","optional":true},"target_group_arn":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"private_link":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description_kind":"plain","optional":true},"vpc_endpoint_service":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"log_collection":{"nesting_mode":"list","block":{"attributes":{"collect_app_logs":{"type":"bool","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"},"max_items":1},"spark":{"nesting_mode":"list","block":{"attributes":{"additional_app_namespaces":{"type":["set","string"],"description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"},"max_items":1},"webhook":{"nesting_mode":"list","block":{"attributes":{"host_network_ports":{"type":["list","number"],"description_kind":"plain","optional":true,"computed":true},"use_host_network":{"type":"bool","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"spotinst_ocean_spark_virtual_node_group":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ocean_spark_cluster_id":{"type":"string","description_kind":"plain","required":true},"virtual_node_group_id":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"spotinst_oceancd_rollout_spec":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"rollout_spec_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"failure_policy":{"nesting_mode":"list","block":{"attributes":{"action":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"spot_deployment":{"nesting_mode":"list","block":{"attributes":{"spot_deployment_cluster_id":{"type":"string","description_kind":"plain","optional":true},"spot_deployment_name":{"type":"string","description_kind":"plain","optional":true},"spot_deployment_namespace":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"spot_deployments":{"nesting_mode":"set","block":{"attributes":{"spot_deployments_cluster_id":{"type":"string","description_kind":"plain","optional":true},"spot_deployments_name":{"type":"string","description_kind":"plain","optional":true},"spot_deployments_namespace":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"strategy":{"nesting_mode":"list","block":{"attributes":{"strategy_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"args":{"nesting_mode":"set","block":{"attributes":{"arg_name":{"type":"string","description_kind":"plain","required":true},"arg_value":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"value_from":{"nesting_mode":"list","block":{"block_types":{"field_ref":{"nesting_mode":"list","block":{"attributes":{"field_path":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}}},"description_kind":"plain"},"min_items":1,"max_items":1},"traffic":{"nesting_mode":"list","block":{"attributes":{"canary_service":{"type":"string","description_kind":"plain","optional":true},"stable_service":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"alb":{"nesting_mode":"list","block":{"attributes":{"alb_annotation_prefix":{"type":"string","description_kind":"plain","optional":true},"alb_ingress":{"type":"string","description_kind":"plain","required":true},"alb_root_service":{"type":"string","description_kind":"plain","required":true},"service_port":{"type":"number","description_kind":"plain","required":true}},"block_types":{"stickiness_config":{"nesting_mode":"list","block":{"attributes":{"duration_seconds":{"type":"number","description_kind":"plain","optional":true},"enabled":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"ambassador":{"nesting_mode":"list","block":{"attributes":{"mappings":{"type":["list","string"],"description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"istio":{"nesting_mode":"list","block":{"block_types":{"destination_rule":{"nesting_mode":"list","block":{"attributes":{"canary_subset_name":{"type":"string","description_kind":"plain","required":true},"destination_rule_name":{"type":"string","description_kind":"plain","required":true},"stable_subset_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"virtual_services":{"nesting_mode":"set","block":{"attributes":{"virtual_service_name":{"type":"string","description_kind":"plain","required":true},"virtual_service_routes":{"type":["list","string"],"description_kind":"plain","optional":true}},"block_types":{"tls_routes":{"nesting_mode":"set","block":{"attributes":{"port":{"type":"number","description_kind":"plain","optional":true},"sni_hosts":{"type":["list","string"],"description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"max_items":1},"nginx":{"nesting_mode":"list","block":{"attributes":{"nginx_annotation_prefix":{"type":"string","description_kind":"plain","optional":true},"stable_ingress":{"type":"string","description_kind":"plain","required":true}},"block_types":{"additional_ingress_annotation":{"nesting_mode":"list","block":{"attributes":{"canary_by_header":{"type":"string","description_kind":"plain","optional":true},"key1":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"ping_pong":{"nesting_mode":"list","block":{"attributes":{"ping_service":{"type":"string","description_kind":"plain","required":true},"pong_service":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"smi":{"nesting_mode":"list","block":{"attributes":{"smi_root_service":{"type":"string","description_kind":"plain","optional":true},"traffic_split_name":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"spotinst_oceancd_strategy":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"strategy_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"canary":{"nesting_mode":"list","block":{"block_types":{"background_verification":{"nesting_mode":"list","block":{"attributes":{"template_names":{"type":["list","string"],"description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"steps":{"nesting_mode":"list","block":{"attributes":{"set_weight":{"type":"number","description_kind":"plain","optional":true},"step_name":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"pause":{"nesting_mode":"list","block":{"attributes":{"duration":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"set_canary_scale":{"nesting_mode":"list","block":{"attributes":{"match_traffic_weight":{"type":"bool","description_kind":"plain","optional":true},"replicas":{"type":"number","description_kind":"plain","optional":true},"weight":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"set_header_route":{"nesting_mode":"list","block":{"attributes":{"header_route_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"match":{"nesting_mode":"list","block":{"attributes":{"header_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"header_value":{"nesting_mode":"list","block":{"attributes":{"exact":{"type":"string","description_kind":"plain","optional":true},"prefix":{"type":"string","description_kind":"plain","optional":true},"regex":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"max_items":1},"verification":{"nesting_mode":"list","block":{"attributes":{"template_names":{"type":["list","string"],"description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"max_items":1},"rolling":{"nesting_mode":"list","block":{"block_types":{"steps":{"nesting_mode":"list","block":{"attributes":{"steps_name":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"pause":{"nesting_mode":"list","block":{"attributes":{"duration":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"verification":{"nesting_mode":"list","block":{"attributes":{"template_names":{"type":["list","string"],"description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"spotinst_oceancd_verification_provider":{"version":0,"block":{"attributes":{"cluster_ids":{"type":["list","string"],"description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"cloud_watch":{"nesting_mode":"list","block":{"attributes":{"iam_arn":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"datadog":{"nesting_mode":"list","block":{"attributes":{"address":{"type":"string","description_kind":"plain","required":true},"api_key":{"type":"string","description_kind":"plain","required":true},"app_key":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"jenkins":{"nesting_mode":"list","block":{"attributes":{"api_token":{"type":"string","description_kind":"plain","required":true},"base_url":{"type":"string","description_kind":"plain","required":true},"username":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"new_relic":{"nesting_mode":"list","block":{"attributes":{"account_id":{"type":"string","description_kind":"plain","required":true},"base_url_nerd_graph":{"type":"string","description_kind":"plain","optional":true},"base_url_rest":{"type":"string","description_kind":"plain","optional":true},"personal_api_key":{"type":"string","description_kind":"plain","required":true},"region":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"prometheus":{"nesting_mode":"list","block":{"attributes":{"address":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"spotinst_oceancd_verification_template":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"args":{"nesting_mode":"set","block":{"attributes":{"arg_name":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"value_from":{"nesting_mode":"list","block":{"block_types":{"secret_key_ref":{"nesting_mode":"list","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"metrics":{"nesting_mode":"set","block":{"attributes":{"consecutive_error_limit":{"type":"number","description_kind":"plain","optional":true},"count":{"type":"number","description_kind":"plain","optional":true},"dry_run":{"type":"bool","description_kind":"plain","optional":true},"failure_condition":{"type":"string","description_kind":"plain","optional":true},"failure_limit":{"type":"number","description_kind":"plain","optional":true},"initial_delay":{"type":"string","description_kind":"plain","optional":true},"interval":{"type":"string","description_kind":"plain","optional":true},"metrics_name":{"type":"string","description_kind":"plain","required":true},"success_condition":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"baseline":{"nesting_mode":"list","block":{"attributes":{"max_range":{"type":"number","description_kind":"plain","optional":true},"min_range":{"type":"number","description_kind":"plain","optional":true},"threshold":{"type":"string","description_kind":"plain","required":true}},"block_types":{"baseline_provider":{"nesting_mode":"list","block":{"block_types":{"datadog":{"nesting_mode":"list","block":{"attributes":{"datadog_query":{"type":"string","description_kind":"plain","required":true},"duration":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"new_relic":{"nesting_mode":"list","block":{"attributes":{"new_relic_query":{"type":"string","description_kind":"plain","required":true},"profile":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"prometheus":{"nesting_mode":"list","block":{"attributes":{"prometheus_query":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"max_items":1},"provider":{"nesting_mode":"list","block":{"block_types":{"cloud_watch":{"nesting_mode":"list","block":{"attributes":{"duration":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"metric_data_queries":{"nesting_mode":"set","block":{"attributes":{"expression":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","required":true},"label":{"type":"string","description_kind":"plain","optional":true},"period":{"type":"number","description_kind":"plain","optional":true},"return_data":{"type":"bool","description_kind":"plain","optional":true}},"block_types":{"metric_stat":{"nesting_mode":"list","block":{"attributes":{"metric_period":{"type":"number","description_kind":"plain","optional":true},"stat":{"type":"string","description_kind":"plain","optional":true},"unit":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"metric":{"nesting_mode":"list","block":{"attributes":{"metric_name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"dimensions":{"nesting_mode":"set","block":{"attributes":{"dimension_name":{"type":"string","description_kind":"plain","required":true},"dimension_value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"max_items":1},"datadog":{"nesting_mode":"list","block":{"attributes":{"datadog_query":{"type":"string","description_kind":"plain","optional":true},"duration":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"jenkins":{"nesting_mode":"list","block":{"attributes":{"jenkins_interval":{"type":"string","description_kind":"plain","required":true},"pipeline_name":{"type":"string","description_kind":"plain","required":true},"timeout":{"type":"string","description_kind":"plain","required":true},"tls_verification":{"type":"bool","description_kind":"plain","optional":true}},"block_types":{"jenkins_parameters":{"nesting_mode":"set","block":{"attributes":{"parameter_key":{"type":"string","description_kind":"plain","required":true},"parameter_value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"job":{"nesting_mode":"list","block":{"block_types":{"spec":{"nesting_mode":"list","block":{"attributes":{"backoff_limit":{"type":"number","description_kind":"plain","optional":true}},"block_types":{"job_template":{"nesting_mode":"list","block":{"block_types":{"template_spec":{"nesting_mode":"list","block":{"attributes":{"restart_policy":{"type":"string","description_kind":"plain","required":true}},"block_types":{"containers":{"nesting_mode":"set","block":{"attributes":{"command":{"type":["list","string"],"description_kind":"plain","required":true},"container_name":{"type":"string","description_kind":"plain","required":true},"image":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"max_items":1},"new_relic":{"nesting_mode":"list","block":{"attributes":{"new_relic_query":{"type":"string","description_kind":"plain","required":true},"profile":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"prometheus":{"nesting_mode":"list","block":{"attributes":{"prometheus_query":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"web":{"nesting_mode":"list","block":{"attributes":{"body":{"type":"string","description_kind":"plain","optional":true},"insecure":{"type":"bool","description_kind":"plain","optional":true},"json_path":{"type":"string","description_kind":"plain","optional":true},"method":{"type":"string","description_kind":"plain","optional":true},"timeout_seconds":{"type":"number","description_kind":"plain","optional":true},"url":{"type":"string","description_kind":"plain","required":true}},"block_types":{"web_header":{"nesting_mode":"set","block":{"attributes":{"web_header_key":{"type":"string","description_kind":"plain","required":true},"web_header_value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"}}},"description_kind":"plain"}},"spotinst_organization_policy":{"version":0,"block":{"attributes":{"description":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"policy_content":{"nesting_mode":"set","block":{"block_types":{"statements":{"nesting_mode":"set","block":{"attributes":{"actions":{"type":["list","string"],"description_kind":"plain","required":true},"effect":{"type":"string","description_kind":"plain","required":true},"resources":{"type":["list","string"],"description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"}},"spotinst_organization_programmatic_user":{"version":0,"block":{"attributes":{"description":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true},"user_group_ids":{"type":["list","string"],"description_kind":"plain","optional":true}},"block_types":{"accounts":{"nesting_mode":"set","block":{"attributes":{"account_id":{"type":"string","description_kind":"plain","required":true},"account_role":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"policies":{"nesting_mode":"set","block":{"attributes":{"policy_account_ids":{"type":["list","string"],"description_kind":"plain","optional":true},"policy_id":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spotinst_organization_user":{"version":0,"block":{"attributes":{"email":{"type":"string","description_kind":"plain","required":true},"first_name":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"last_name":{"type":"string","description_kind":"plain","required":true},"password":{"type":"string","description_kind":"plain","optional":true,"computed":true},"role":{"type":"string","description_kind":"plain","optional":true},"user_group_ids":{"type":["list","string"],"description_kind":"plain","optional":true}},"block_types":{"policies":{"nesting_mode":"set","block":{"attributes":{"policy_account_ids":{"type":["list","string"],"description_kind":"plain","required":true},"policy_id":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spotinst_organization_user_group":{"version":0,"block":{"attributes":{"description":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true},"user_ids":{"type":["list","string"],"description_kind":"plain","optional":true}},"block_types":{"policies":{"nesting_mode":"set","block":{"attributes":{"account_ids":{"type":["list","string"],"description_kind":"plain","required":true},"policy_id":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spotinst_stateful_node_azure":{"version":0,"block":{"attributes":{"custom_data":{"type":"string","description_kind":"plain","optional":true,"computed":true},"data_disks_persistence_mode":{"type":"string","description_kind":"plain","optional":true,"computed":true},"description":{"type":"string","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"license_type":{"type":"string","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"os":{"type":"string","description_kind":"plain","required":true},"os_disk_persistence_mode":{"type":"string","description_kind":"plain","optional":true,"computed":true},"preferred_zone":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description_kind":"plain","required":true},"resource_group_name":{"type":"string","description_kind":"plain","required":true},"should_persist_data_disks":{"type":"bool","description_kind":"plain","required":true},"should_persist_network":{"type":"bool","description_kind":"plain","required":true},"should_persist_os_disk":{"type":"bool","description_kind":"plain","required":true},"should_persist_vm":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"shutdown_script":{"type":"string","description_kind":"plain","optional":true,"computed":true},"user_data":{"type":"string","description_kind":"plain","optional":true,"computed":true},"vm_name":{"type":"string","description_kind":"plain","optional":true},"vm_name_prefix":{"type":"string","description_kind":"plain","optional":true},"zones":{"type":["list","string"],"description_kind":"plain","optional":true}},"block_types":{"attach_data_disk":{"nesting_mode":"list","block":{"attributes":{"data_disk_name":{"type":"string","description_kind":"plain","required":true},"data_disk_resource_group_name":{"type":"string","description_kind":"plain","required":true},"lun":{"type":"number","description_kind":"plain","optional":true},"size_gb":{"type":"number","description_kind":"plain","required":true},"storage_account_type":{"type":"string","description_kind":"plain","required":true},"zone":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"boot_diagnostics":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"storage_url":{"type":"string","description_kind":"plain","optional":true,"computed":true},"type":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"data_disk":{"nesting_mode":"list","block":{"attributes":{"lun":{"type":"number","description_kind":"plain","required":true},"size_gb":{"type":"number","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"delete":{"nesting_mode":"list","block":{"attributes":{"disk_should_deallocate":{"type":"bool","description_kind":"plain","required":true},"disk_ttl_in_hours":{"type":"number","description_kind":"plain","optional":true},"network_should_deallocate":{"type":"bool","description_kind":"plain","required":true},"network_ttl_in_hours":{"type":"number","description_kind":"plain","optional":true},"public_ip_should_deallocate":{"type":"bool","description_kind":"plain","required":true},"public_ip_ttl_in_hours":{"type":"number","description_kind":"plain","optional":true},"should_deregister_from_lb":{"type":"bool","description_kind":"plain","optional":true},"should_terminate_vm":{"type":"bool","description_kind":"plain","required":true},"snapshot_should_deallocate":{"type":"bool","description_kind":"plain","required":true},"snapshot_ttl_in_hours":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"detach_data_disk":{"nesting_mode":"list","block":{"attributes":{"data_disk_name":{"type":"string","description_kind":"plain","required":true},"data_disk_resource_group_name":{"type":"string","description_kind":"plain","required":true},"should_deallocate":{"type":"bool","description_kind":"plain","required":true},"ttl_in_hours":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"extension":{"nesting_mode":"set","block":{"attributes":{"api_version":{"type":"string","description_kind":"plain","required":true},"minor_version_auto_upgrade":{"type":"bool","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"protected_settings":{"type":["map","string"],"description_kind":"plain","optional":true,"computed":true},"public_settings":{"type":["map","string"],"description_kind":"plain","optional":true,"computed":true},"publisher":{"type":"string","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"health":{"nesting_mode":"list","block":{"attributes":{"auto_healing":{"type":"bool","description_kind":"plain","required":true},"grace_period":{"type":"number","description_kind":"plain","optional":true,"computed":true},"health_check_types":{"type":["list","string"],"description_kind":"plain","required":true},"unhealthy_duration":{"type":"number","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"},"max_items":1},"image":{"nesting_mode":"list","block":{"block_types":{"custom_image":{"nesting_mode":"list","block":{"attributes":{"custom_image_resource_group_name":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"gallery":{"nesting_mode":"list","block":{"attributes":{"gallery_name":{"type":"string","description_kind":"plain","required":true},"gallery_resource_group_name":{"type":"string","description_kind":"plain","required":true},"image_name":{"type":"string","description_kind":"plain","required":true},"spot_account_id":{"type":"string","description_kind":"plain","optional":true},"version_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"marketplace_image":{"nesting_mode":"list","block":{"attributes":{"offer":{"type":"string","description_kind":"plain","required":true},"publisher":{"type":"string","description_kind":"plain","required":true},"sku":{"type":"string","description_kind":"plain","required":true},"version":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"import_vm":{"nesting_mode":"list","block":{"attributes":{"draining_timeout":{"type":"number","description_kind":"plain","optional":true},"original_vm_name":{"type":"string","description_kind":"plain","required":true},"resource_group_name":{"type":"string","description_kind":"plain","required":true},"resources_retention_time":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"load_balancer":{"nesting_mode":"set","block":{"attributes":{"backend_pool_names":{"type":["list","string"],"description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"resource_group_name":{"type":"string","description_kind":"plain","required":true},"sku":{"type":"string","description_kind":"plain","optional":true,"computed":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"login":{"nesting_mode":"set","block":{"attributes":{"password":{"type":"string","description_kind":"plain","optional":true},"ssh_public_key":{"type":"string","description_kind":"plain","optional":true},"user_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"managed_service_identities":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"resource_group_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"network":{"nesting_mode":"list","block":{"attributes":{"network_resource_group_name":{"type":"string","description_kind":"plain","required":true},"virtual_network_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"network_interface":{"nesting_mode":"list","block":{"attributes":{"assign_public_ip":{"type":"bool","description_kind":"plain","optional":true},"enable_ip_forwarding":{"type":"bool","description_kind":"plain","optional":true},"is_primary":{"type":"bool","description_kind":"plain","required":true},"private_ip_addresses":{"type":["list","string"],"description_kind":"plain","optional":true},"public_ip_sku":{"type":"string","description_kind":"plain","optional":true},"subnet_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"additional_ip_configurations":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"private_ip_address_version":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"application_security_groups":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"network_resource_group_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"network_security_group":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","optional":true},"network_resource_group_name":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"public_ips":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"network_resource_group_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"max_items":1},"os_disk":{"nesting_mode":"set","block":{"attributes":{"caching":{"type":"string","description_kind":"plain","optional":true},"size_gb":{"type":"number","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"proximity_placement_groups":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"resource_group_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"scheduling_task":{"nesting_mode":"set","block":{"attributes":{"cron_expression":{"type":"string","description_kind":"plain","required":true},"is_enabled":{"type":"bool","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"secret":{"nesting_mode":"set","block":{"block_types":{"source_vault":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"resource_group_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1},"vault_certificates":{"nesting_mode":"list","block":{"attributes":{"certificate_store":{"type":"string","description_kind":"plain","optional":true},"certificate_url":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"}},"security":{"nesting_mode":"list","block":{"attributes":{"confidential_os_disk_encryption":{"type":"bool","description_kind":"plain","optional":true},"encryption_at_host":{"type":"bool","description_kind":"plain","optional":true},"secure_boot_enabled":{"type":"bool","description_kind":"plain","optional":true},"security_type":{"type":"string","description_kind":"plain","optional":true},"vtpm_enabled":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"signal":{"nesting_mode":"list","block":{"attributes":{"timeout":{"type":"number","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"strategy":{"nesting_mode":"list","block":{"attributes":{"availability_vs_cost":{"type":"number","description_kind":"plain","optional":true},"draining_timeout":{"type":"number","description_kind":"plain","optional":true,"computed":true},"fallback_to_on_demand":{"type":"bool","description_kind":"plain","required":true},"od_windows":{"type":["list","string"],"description_kind":"plain","optional":true},"optimization_windows":{"type":["list","string"],"description_kind":"plain","optional":true},"preferred_life_cycle":{"type":"string","description_kind":"plain","optional":true,"computed":true},"vm_admins":{"type":["list","string"],"description_kind":"plain","optional":true}},"block_types":{"capacity_reservation":{"nesting_mode":"set","block":{"attributes":{"should_utilize":{"type":"bool","description_kind":"plain","required":true},"utilization_strategy":{"type":"string","description_kind":"plain","required":true}},"block_types":{"capacity_reservation_groups":{"nesting_mode":"set","block":{"attributes":{"crg_name":{"type":"string","description_kind":"plain","required":true},"crg_resource_group_name":{"type":"string","description_kind":"plain","required":true},"crg_should_prioritize":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"revert_to_spot":{"nesting_mode":"list","block":{"attributes":{"perform_at":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"min_items":1,"max_items":1},"tag":{"nesting_mode":"set","block":{"attributes":{"tag_key":{"type":"string","description_kind":"plain","required":true},"tag_value":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"update_state":{"nesting_mode":"list","block":{"attributes":{"state":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"vm_sizes":{"nesting_mode":"list","block":{"attributes":{"od_sizes":{"type":["list","string"],"description_kind":"plain","required":true},"preferred_spot_sizes":{"type":["list","string"],"description_kind":"plain","optional":true},"spot_sizes":{"type":["list","string"],"description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1}},"description_kind":"plain"}},"spotinst_subscription":{"version":0,"block":{"attributes":{"endpoint":{"type":"string","description_kind":"plain","required":true},"event_type":{"type":"string","description_kind":"plain","required":true},"format":{"type":["map","string"],"description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"protocol":{"type":"string","description_kind":"plain","required":true},"resource_id":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}}}}} +{"format_version":"1.0","provider_schemas":{"registry.terraform.io/spotinst/spotinst":{"provider":{"version":0,"block":{"attributes":{"account":{"type":"string","description":"Spotinst Account ID","description_kind":"plain","optional":true},"enabled":{"type":"bool","description":"Enable or disable the Spotinst provider","description_kind":"plain","optional":true},"feature_flags":{"type":"string","description":"Spotinst SDK Feature Flags","description_kind":"plain","optional":true},"token":{"type":"string","description":"Spotinst Personal API Access Token","description_kind":"plain","optional":true}},"description_kind":"plain"}},"resource_schemas":{"spotinst_account":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"spotinst_account_aws":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"spotinst_credentials_aws":{"version":0,"block":{"attributes":{"account_id":{"type":"string","description_kind":"plain","required":true},"iamrole":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"spotinst_credentials_gcp":{"version":0,"block":{"attributes":{"account_id":{"type":"string","description_kind":"plain","required":true},"auth_provider_x509_cert_url":{"type":"string","description_kind":"plain","required":true},"auth_uri":{"type":"string","description_kind":"plain","required":true},"client_email":{"type":"string","description_kind":"plain","required":true},"client_id":{"type":"string","description_kind":"plain","required":true},"client_x509_cert_url":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"private_key":{"type":"string","description_kind":"plain","required":true},"private_key_id":{"type":"string","description_kind":"plain","required":true},"project_id":{"type":"string","description_kind":"plain","required":true},"token_uri":{"type":"string","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"spotinst_data_integration":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true},"status":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"s3":{"nesting_mode":"list","block":{"attributes":{"bucket_name":{"type":"string","description_kind":"plain","required":true},"subdir":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"spotinst_elastigroup_aws":{"version":0,"block":{"attributes":{"auto_healing":{"type":"bool","description_kind":"plain","optional":true},"availability_zones":{"type":["list","string"],"description_kind":"plain","optional":true},"block_devices_mode":{"type":"string","description_kind":"plain","optional":true},"capacity_unit":{"type":"string","description_kind":"plain","optional":true,"computed":true},"consider_od_pricing":{"type":"bool","description_kind":"plain","optional":true},"cpu_credits":{"type":"string","description_kind":"plain","optional":true},"description":{"type":"string","description_kind":"plain","optional":true},"desired_capacity":{"type":"number","description_kind":"plain","optional":true},"draining_timeout":{"type":"number","description_kind":"plain","optional":true,"computed":true},"ebs_optimized":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"elastic_ips":{"type":["list","string"],"description_kind":"plain","optional":true},"elastic_load_balancers":{"type":["list","string"],"description_kind":"plain","optional":true},"enable_monitoring":{"type":"bool","description_kind":"plain","optional":true},"fallback_to_ondemand":{"type":"bool","description_kind":"plain","required":true},"health_check_grace_period":{"type":"number","description_kind":"plain","optional":true},"health_check_type":{"type":"string","description_kind":"plain","optional":true},"health_check_unhealthy_duration_before_replacement":{"type":"number","description_kind":"plain","optional":true},"iam_instance_profile":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"image_id":{"type":"string","description_kind":"plain","optional":true},"immediate_od_recover_threshold":{"type":"number","description_kind":"plain","optional":true},"instance_types_ondemand":{"type":"string","description_kind":"plain","optional":true},"instance_types_preferred_spot":{"type":["list","string"],"description_kind":"plain","optional":true},"instance_types_spot":{"type":["list","string"],"description_kind":"plain","optional":true},"key_name":{"type":"string","description_kind":"plain","optional":true},"lifetime_period":{"type":"string","description_kind":"plain","optional":true},"max_size":{"type":"number","description_kind":"plain","optional":true,"computed":true},"min_size":{"type":"number","description_kind":"plain","optional":true,"computed":true},"minimum_instance_lifetime":{"type":"number","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"on_demand_types":{"type":["list","string"],"description_kind":"plain","optional":true},"ondemand_count":{"type":"number","description_kind":"plain","optional":true},"orientation":{"type":"string","description_kind":"plain","required":true},"persist_block_devices":{"type":"bool","description_kind":"plain","optional":true},"persist_private_ip":{"type":"bool","description_kind":"plain","optional":true},"persist_root_device":{"type":"bool","description_kind":"plain","optional":true},"placement_tenancy":{"type":"string","description_kind":"plain","optional":true},"preferred_availability_zones":{"type":["list","string"],"description_kind":"plain","optional":true},"private_ips":{"type":["list","string"],"description_kind":"plain","optional":true},"product":{"type":"string","description_kind":"plain","required":true},"region":{"type":"string","description_kind":"plain","optional":true},"restrict_single_az":{"type":"bool","description_kind":"plain","optional":true},"security_groups":{"type":["list","string"],"description_kind":"plain","required":true},"shutdown_script":{"type":"string","description_kind":"plain","optional":true},"spot_percentage":{"type":"number","description_kind":"plain","optional":true},"subnet_ids":{"type":["list","string"],"description_kind":"plain","optional":true},"target_group_arns":{"type":["list","string"],"description_kind":"plain","optional":true},"user_data":{"type":"string","description_kind":"plain","optional":true},"utilize_commitments":{"type":"bool","description_kind":"plain","optional":true},"utilize_reserved_instances":{"type":"bool","description_kind":"plain","optional":true},"wait_for_capacity":{"type":"number","description_kind":"plain","optional":true},"wait_for_capacity_timeout":{"type":"number","description_kind":"plain","optional":true}},"block_types":{"cpu_options":{"nesting_mode":"list","block":{"attributes":{"threads_per_core":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"ebs_block_device":{"nesting_mode":"set","block":{"attributes":{"delete_on_termination":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"device_name":{"type":"string","description_kind":"plain","required":true},"encrypted":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"iops":{"type":"number","description_kind":"plain","optional":true},"kms_key_id":{"type":"string","description_kind":"plain","optional":true},"snapshot_id":{"type":"string","description_kind":"plain","optional":true},"throughput":{"type":"number","description_kind":"plain","optional":true},"volume_size":{"type":"number","description_kind":"plain","optional":true},"volume_type":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"dynamic_iops":{"nesting_mode":"list","block":{"attributes":{"base_size":{"type":"number","description_kind":"plain","optional":true},"resource":{"type":"string","description_kind":"plain","optional":true},"size_per_resource_unit":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"dynamic_volume_size":{"nesting_mode":"list","block":{"attributes":{"base_size":{"type":"number","description_kind":"plain","optional":true},"resource":{"type":"string","description_kind":"plain","optional":true},"size_per_resource_unit":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"ephemeral_block_device":{"nesting_mode":"set","block":{"attributes":{"device_name":{"type":"string","description_kind":"plain","required":true},"virtual_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"images":{"nesting_mode":"list","block":{"block_types":{"image":{"nesting_mode":"set","block":{"attributes":{"id":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"}},"instance_types_weights":{"nesting_mode":"set","block":{"attributes":{"instance_type":{"type":"string","description_kind":"plain","required":true},"weight":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"}},"integration_beanstalk":{"nesting_mode":"list","block":{"attributes":{"environment_id":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"deployment_preferences":{"nesting_mode":"list","block":{"attributes":{"automatic_roll":{"type":"bool","description_kind":"plain","optional":true},"batch_size_percentage":{"type":"number","description_kind":"plain","optional":true},"grace_period":{"type":"number","description_kind":"plain","optional":true}},"block_types":{"strategy":{"nesting_mode":"list","block":{"attributes":{"action":{"type":"string","description_kind":"plain","optional":true},"should_drain_instances":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"managed_actions":{"nesting_mode":"list","block":{"block_types":{"platform_update":{"nesting_mode":"list","block":{"attributes":{"perform_at":{"type":"string","description_kind":"plain","optional":true},"time_window":{"type":"string","description_kind":"plain","optional":true},"update_level":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"integration_codedeploy":{"nesting_mode":"list","block":{"attributes":{"cleanup_on_failure":{"type":"bool","description_kind":"plain","required":true},"terminate_instance_on_failure":{"type":"bool","description_kind":"plain","required":true}},"block_types":{"deployment_groups":{"nesting_mode":"set","block":{"attributes":{"application_name":{"type":"string","description_kind":"plain","required":true},"deployment_group_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"max_items":1},"integration_docker_swarm":{"nesting_mode":"list","block":{"attributes":{"autoscale_cooldown":{"type":"number","description_kind":"plain","optional":true},"autoscale_is_enabled":{"type":"bool","description_kind":"plain","optional":true},"master_host":{"type":"string","description_kind":"plain","required":true},"master_port":{"type":"number","description_kind":"plain","required":true}},"block_types":{"autoscale_down":{"nesting_mode":"list","block":{"attributes":{"evaluation_periods":{"type":"number","description_kind":"plain","optional":true},"max_scale_down_percentage":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"autoscale_headroom":{"nesting_mode":"list","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"integration_ecs":{"nesting_mode":"list","block":{"attributes":{"autoscale_cooldown":{"type":"number","description_kind":"plain","optional":true},"autoscale_is_auto_config":{"type":"bool","description_kind":"plain","optional":true},"autoscale_is_enabled":{"type":"bool","description_kind":"plain","optional":true},"autoscale_scale_down_non_service_tasks":{"type":"bool","description_kind":"plain","optional":true},"cluster_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"autoscale_attributes":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"autoscale_down":{"nesting_mode":"list","block":{"attributes":{"evaluation_periods":{"type":"number","description_kind":"plain","optional":true},"max_scale_down_percentage":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"autoscale_headroom":{"nesting_mode":"list","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"batch":{"nesting_mode":"list","block":{"attributes":{"job_queue_names":{"type":["list","string"],"description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"integration_gitlab":{"nesting_mode":"list","block":{"block_types":{"runner":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"integration_kubernetes":{"nesting_mode":"list","block":{"attributes":{"api_server":{"type":"string","description_kind":"plain","optional":true},"autoscale_cooldown":{"type":"number","description_kind":"plain","optional":true},"autoscale_is_auto_config":{"type":"bool","description_kind":"plain","optional":true},"autoscale_is_enabled":{"type":"bool","description_kind":"plain","optional":true},"cluster_identifier":{"type":"string","description_kind":"plain","optional":true},"integration_mode":{"type":"string","description_kind":"plain","optional":true},"token":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"autoscale_down":{"nesting_mode":"list","block":{"attributes":{"evaluation_periods":{"type":"number","description_kind":"plain","optional":true},"max_scale_down_percentage":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"autoscale_headroom":{"nesting_mode":"list","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"autoscale_labels":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"integration_mesosphere":{"nesting_mode":"list","block":{"attributes":{"api_server":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"integration_nomad":{"nesting_mode":"list","block":{"attributes":{"acl_token":{"type":"string","description_kind":"plain","optional":true},"autoscale_cooldown":{"type":"number","description_kind":"plain","optional":true},"autoscale_is_enabled":{"type":"bool","description_kind":"plain","optional":true},"master_host":{"type":"string","description_kind":"plain","required":true},"master_port":{"type":"number","description_kind":"plain","required":true}},"block_types":{"autoscale_constraints":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"autoscale_down":{"nesting_mode":"list","block":{"attributes":{"evaluation_periods":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"autoscale_headroom":{"nesting_mode":"list","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"integration_rancher":{"nesting_mode":"list","block":{"attributes":{"access_key":{"type":"string","description_kind":"plain","required":true},"master_host":{"type":"string","description_kind":"plain","required":true},"secret_key":{"type":"string","description_kind":"plain","required":true},"version":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"integration_route53":{"nesting_mode":"list","block":{"block_types":{"domains":{"nesting_mode":"set","block":{"attributes":{"hosted_zone_id":{"type":"string","description_kind":"plain","required":true},"record_set_type":{"type":"string","description_kind":"plain","optional":true},"spotinst_acct_id":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"record_sets":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"use_public_dns":{"type":"bool","description_kind":"plain","optional":true},"use_public_ip":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"max_items":1},"itf":{"nesting_mode":"list","block":{"attributes":{"fixed_target_groups":{"type":"bool","description_kind":"plain","required":true},"migration_healthiness_threshold":{"type":"number","description_kind":"plain","optional":true},"weight_strategy":{"type":"string","description_kind":"plain","required":true}},"block_types":{"default_static_target_group":{"nesting_mode":"list","block":{"attributes":{"arn":{"type":"string","description_kind":"plain","required":true},"percentage":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"load_balancer":{"nesting_mode":"set","block":{"attributes":{"load_balancer_arn":{"type":"string","description_kind":"plain","required":true}},"block_types":{"listener_rule":{"nesting_mode":"set","block":{"attributes":{"rule_arn":{"type":"string","description_kind":"plain","required":true}},"block_types":{"static_target_group":{"nesting_mode":"list","block":{"attributes":{"arn":{"type":"string","description_kind":"plain","required":true},"percentage":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"min_items":1},"target_group_config":{"nesting_mode":"list","block":{"attributes":{"health_check_interval_seconds":{"type":"number","description_kind":"plain","optional":true},"health_check_path":{"type":"string","description_kind":"plain","required":true},"health_check_port":{"type":"string","description_kind":"plain","optional":true},"health_check_protocol":{"type":"string","description_kind":"plain","optional":true},"health_check_timeout_seconds":{"type":"number","description_kind":"plain","optional":true},"healthy_threshold_count":{"type":"number","description_kind":"plain","optional":true},"port":{"type":"number","description_kind":"plain","required":true},"protocol":{"type":"string","description_kind":"plain","required":true},"protocol_version":{"type":"string","description_kind":"plain","optional":true},"unhealthy_threshold_count":{"type":"number","description_kind":"plain","optional":true},"vpc_id":{"type":"string","description_kind":"plain","required":true}},"block_types":{"matcher":{"nesting_mode":"list","block":{"attributes":{"grpc_code":{"type":"string","description_kind":"plain","optional":true},"http_code":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"tags":{"nesting_mode":"set","block":{"attributes":{"tag_key":{"type":"string","description_kind":"plain","required":true},"tag_value":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"}},"logging":{"nesting_mode":"list","block":{"block_types":{"export":{"nesting_mode":"list","block":{"block_types":{"s3":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"metadata_options":{"nesting_mode":"list","block":{"attributes":{"http_put_response_hop_limit":{"type":"number","description_kind":"plain","optional":true},"http_tokens":{"type":"string","description_kind":"plain","required":true},"instance_metadata_tags":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"multiple_metrics":{"nesting_mode":"set","block":{"block_types":{"expressions":{"nesting_mode":"set","block":{"attributes":{"expression":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"metrics":{"nesting_mode":"set","block":{"attributes":{"extended_statistic":{"type":"string","description_kind":"plain","optional":true},"metric_name":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","required":true},"statistic":{"type":"string","description_kind":"plain","optional":true},"unit":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"dimensions":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"network_interface":{"nesting_mode":"set","block":{"attributes":{"associate_ipv6_address":{"type":"bool","description_kind":"plain","optional":true},"associate_public_ip_address":{"type":"bool","description_kind":"plain","optional":true},"delete_on_termination":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"description":{"type":"string","description_kind":"plain","optional":true},"device_index":{"type":"string","description_kind":"plain","required":true},"network_interface_id":{"type":"string","description_kind":"plain","optional":true},"private_ip_address":{"type":"string","description_kind":"plain","optional":true},"secondary_private_ip_address_count":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"resource_requirements":{"nesting_mode":"list","block":{"attributes":{"excluded_instance_families":{"type":["set","string"],"description_kind":"plain","optional":true},"excluded_instance_generations":{"type":["set","string"],"description_kind":"plain","optional":true},"excluded_instance_types":{"type":["set","string"],"description_kind":"plain","optional":true},"required_gpu_maximum":{"type":"number","description_kind":"plain","optional":true},"required_gpu_minimum":{"type":"number","description_kind":"plain","optional":true},"required_memory_maximum":{"type":"number","description_kind":"plain","required":true},"required_memory_minimum":{"type":"number","description_kind":"plain","required":true},"required_vcpu_maximum":{"type":"number","description_kind":"plain","required":true},"required_vcpu_minimum":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"}},"resource_tag_specification":{"nesting_mode":"list","block":{"attributes":{"should_tag_amis":{"type":"bool","description_kind":"plain","optional":true},"should_tag_enis":{"type":"bool","description_kind":"plain","optional":true},"should_tag_snapshots":{"type":"bool","description_kind":"plain","optional":true},"should_tag_volumes":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"}},"revert_to_spot":{"nesting_mode":"list","block":{"attributes":{"perform_at":{"type":"string","description_kind":"plain","required":true},"time_windows":{"type":["list","string"],"description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"scaling_down_policy":{"nesting_mode":"set","block":{"attributes":{"action_type":{"type":"string","description_kind":"plain","optional":true},"adjustment":{"type":"string","description_kind":"plain","optional":true},"cooldown":{"type":"number","description_kind":"plain","optional":true},"evaluation_periods":{"type":"number","description_kind":"plain","optional":true,"computed":true},"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"max_target_capacity":{"type":"string","description_kind":"plain","optional":true},"maximum":{"type":"string","description_kind":"plain","optional":true},"metric_name":{"type":"string","description_kind":"plain","required":true},"min_target_capacity":{"type":"string","description_kind":"plain","optional":true},"minimum":{"type":"string","description_kind":"plain","optional":true},"namespace":{"type":"string","description_kind":"plain","required":true},"operator":{"type":"string","description_kind":"plain","optional":true,"computed":true},"period":{"type":"number","description_kind":"plain","optional":true,"computed":true},"policy_name":{"type":"string","description_kind":"plain","required":true},"source":{"type":"string","description_kind":"plain","optional":true,"computed":true},"statistic":{"type":"string","description_kind":"plain","optional":true},"target":{"type":"string","description_kind":"plain","optional":true},"threshold":{"type":"number","description_kind":"plain","optional":true},"unit":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"dimensions":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"step_adjustments":{"nesting_mode":"set","block":{"attributes":{"threshold":{"type":"number","description_kind":"plain","required":true}},"block_types":{"action":{"nesting_mode":"set","block":{"attributes":{"adjustment":{"type":"string","description_kind":"plain","optional":true},"max_target_capacity":{"type":"string","description_kind":"plain","optional":true},"maximum":{"type":"string","description_kind":"plain","optional":true},"min_target_capacity":{"type":"string","description_kind":"plain","optional":true},"minimum":{"type":"string","description_kind":"plain","optional":true},"target":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1}},"description_kind":"plain"}}},"description_kind":"plain"}},"scaling_strategy":{"nesting_mode":"list","block":{"attributes":{"terminate_at_end_of_billing_hour":{"type":"bool","description_kind":"plain","optional":true},"termination_policy":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"scaling_target_policy":{"nesting_mode":"set","block":{"attributes":{"cooldown":{"type":"number","description_kind":"plain","optional":true},"evaluation_periods":{"type":"number","description_kind":"plain","optional":true},"max_capacity_per_scale":{"type":"string","description_kind":"plain","optional":true},"metric_name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","required":true},"period":{"type":"number","description_kind":"plain","optional":true},"policy_name":{"type":"string","description_kind":"plain","required":true},"predictive_mode":{"type":"string","description_kind":"plain","optional":true},"source":{"type":"string","description_kind":"plain","optional":true,"computed":true},"statistic":{"type":"string","description_kind":"plain","optional":true},"target":{"type":"number","description_kind":"plain","required":true},"unit":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"dimensions":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"scaling_up_policy":{"nesting_mode":"set","block":{"attributes":{"action_type":{"type":"string","description_kind":"plain","optional":true},"adjustment":{"type":"string","description_kind":"plain","optional":true},"cooldown":{"type":"number","description_kind":"plain","optional":true},"evaluation_periods":{"type":"number","description_kind":"plain","optional":true,"computed":true},"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"max_target_capacity":{"type":"string","description_kind":"plain","optional":true},"maximum":{"type":"string","description_kind":"plain","optional":true},"metric_name":{"type":"string","description_kind":"plain","required":true},"min_target_capacity":{"type":"string","description_kind":"plain","optional":true},"minimum":{"type":"string","description_kind":"plain","optional":true},"namespace":{"type":"string","description_kind":"plain","required":true},"operator":{"type":"string","description_kind":"plain","optional":true,"computed":true},"period":{"type":"number","description_kind":"plain","optional":true,"computed":true},"policy_name":{"type":"string","description_kind":"plain","required":true},"source":{"type":"string","description_kind":"plain","optional":true,"computed":true},"statistic":{"type":"string","description_kind":"plain","optional":true},"target":{"type":"string","description_kind":"plain","optional":true},"threshold":{"type":"number","description_kind":"plain","optional":true},"unit":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"dimensions":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"step_adjustments":{"nesting_mode":"set","block":{"attributes":{"threshold":{"type":"number","description_kind":"plain","required":true}},"block_types":{"action":{"nesting_mode":"set","block":{"attributes":{"adjustment":{"type":"string","description_kind":"plain","optional":true},"max_target_capacity":{"type":"string","description_kind":"plain","optional":true},"maximum":{"type":"string","description_kind":"plain","optional":true},"min_target_capacity":{"type":"string","description_kind":"plain","optional":true},"minimum":{"type":"string","description_kind":"plain","optional":true},"target":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1}},"description_kind":"plain"}}},"description_kind":"plain"}},"scheduled_task":{"nesting_mode":"set","block":{"attributes":{"adjustment":{"type":"string","description_kind":"plain","optional":true},"adjustment_percentage":{"type":"string","description_kind":"plain","optional":true},"batch_size_percentage":{"type":"string","description_kind":"plain","optional":true},"cron_expression":{"type":"string","description_kind":"plain","optional":true},"frequency":{"type":"string","description_kind":"plain","optional":true},"grace_period":{"type":"string","description_kind":"plain","optional":true},"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"max_capacity":{"type":"string","description_kind":"plain","optional":true},"min_capacity":{"type":"string","description_kind":"plain","optional":true},"scale_max_capacity":{"type":"string","description_kind":"plain","optional":true},"scale_min_capacity":{"type":"string","description_kind":"plain","optional":true},"scale_target_capacity":{"type":"string","description_kind":"plain","optional":true},"start_time":{"type":"string","description_kind":"plain","optional":true},"target_capacity":{"type":"string","description_kind":"plain","optional":true},"task_type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"signal":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"timeout":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"stateful_deallocation":{"nesting_mode":"list","block":{"attributes":{"should_delete_images":{"type":"bool","description_kind":"plain","optional":true},"should_delete_network_interfaces":{"type":"bool","description_kind":"plain","optional":true},"should_delete_snapshots":{"type":"bool","description_kind":"plain","optional":true},"should_delete_volumes":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"stateful_instance_action":{"nesting_mode":"list","block":{"attributes":{"stateful_instance_id":{"type":"string","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"tags":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","optional":true},"value":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"update_policy":{"nesting_mode":"list","block":{"attributes":{"auto_apply_tags":{"type":"bool","description_kind":"plain","optional":true},"should_resume_stateful":{"type":"bool","description_kind":"plain","required":true},"should_roll":{"type":"bool","description_kind":"plain","required":true}},"block_types":{"roll_config":{"nesting_mode":"list","block":{"attributes":{"batch_size_percentage":{"type":"number","description_kind":"plain","required":true},"grace_period":{"type":"number","description_kind":"plain","optional":true},"health_check_type":{"type":"string","description_kind":"plain","optional":true},"wait_for_roll_percentage":{"type":"number","description_kind":"plain","optional":true},"wait_for_roll_timeout":{"type":"number","description_kind":"plain","optional":true}},"block_types":{"strategy":{"nesting_mode":"list","block":{"attributes":{"action":{"type":"string","description_kind":"plain","required":true},"batch_min_healthy_percentage":{"type":"number","description_kind":"plain","optional":true},"should_drain_instances":{"type":"bool","description_kind":"plain","optional":true}},"block_types":{"on_failure":{"nesting_mode":"list","block":{"attributes":{"action_type":{"type":"string","description_kind":"plain","required":true},"batch_num":{"type":"number","description_kind":"plain","optional":true},"draining_timeout":{"type":"number","description_kind":"plain","optional":true},"should_decrement_target_capacity":{"type":"bool","description_kind":"plain","optional":true},"should_handle_all_batches":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"spotinst_elastigroup_aws_beanstalk":{"version":0,"block":{"attributes":{"beanstalk_environment_id":{"type":"string","description_kind":"plain","optional":true},"beanstalk_environment_name":{"type":"string","description_kind":"plain","optional":true},"desired_capacity":{"type":"number","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"instance_types_spot":{"type":["list","string"],"description_kind":"plain","required":true},"maintenance":{"type":"string","description_kind":"plain","optional":true},"max_size":{"type":"number","description_kind":"plain","required":true},"min_size":{"type":"number","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"product":{"type":"string","description_kind":"plain","required":true},"region":{"type":"string","description_kind":"plain","required":true}},"block_types":{"deployment_preferences":{"nesting_mode":"list","block":{"attributes":{"automatic_roll":{"type":"bool","description_kind":"plain","optional":true},"batch_size_percentage":{"type":"number","description_kind":"plain","optional":true},"grace_period":{"type":"number","description_kind":"plain","optional":true}},"block_types":{"strategy":{"nesting_mode":"list","block":{"attributes":{"action":{"type":"string","description_kind":"plain","optional":true},"should_drain_instances":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"managed_actions":{"nesting_mode":"list","block":{"block_types":{"platform_update":{"nesting_mode":"list","block":{"attributes":{"perform_at":{"type":"string","description_kind":"plain","optional":true},"time_window":{"type":"string","description_kind":"plain","optional":true},"update_level":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"scheduled_task":{"nesting_mode":"set","block":{"attributes":{"adjustment":{"type":"string","description_kind":"plain","optional":true},"adjustment_percentage":{"type":"string","description_kind":"plain","optional":true},"batch_size_percentage":{"type":"string","description_kind":"plain","optional":true},"cron_expression":{"type":"string","description_kind":"plain","optional":true},"frequency":{"type":"string","description_kind":"plain","optional":true},"grace_period":{"type":"string","description_kind":"plain","optional":true},"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"max_capacity":{"type":"string","description_kind":"plain","optional":true},"min_capacity":{"type":"string","description_kind":"plain","optional":true},"scale_max_capacity":{"type":"string","description_kind":"plain","optional":true},"scale_min_capacity":{"type":"string","description_kind":"plain","optional":true},"scale_target_capacity":{"type":"string","description_kind":"plain","optional":true},"start_time":{"type":"string","description_kind":"plain","optional":true},"target_capacity":{"type":"string","description_kind":"plain","optional":true},"task_type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spotinst_elastigroup_aws_suspension":{"version":0,"block":{"attributes":{"group_id":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"suspension":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"}},"spotinst_elastigroup_azure_v3":{"version":0,"block":{"attributes":{"availability_vs_cost":{"type":"number","description_kind":"plain","optional":true},"custom_data":{"type":"string","description_kind":"plain","optional":true},"description":{"type":"string","description_kind":"plain","optional":true},"desired_capacity":{"type":"number","description_kind":"plain","optional":true},"draining_timeout":{"type":"number","description_kind":"plain","optional":true,"computed":true},"fallback_to_on_demand":{"type":"bool","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"max_size":{"type":"number","description_kind":"plain","optional":true,"computed":true},"min_size":{"type":"number","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true},"on_demand_count":{"type":"number","description_kind":"plain","optional":true},"optimization_windows":{"type":["list","string"],"description_kind":"plain","optional":true},"os":{"type":"string","description_kind":"plain","required":true},"preferred_zones":{"type":["list","string"],"description_kind":"plain","optional":true},"region":{"type":"string","description_kind":"plain","required":true},"resource_group_name":{"type":"string","description_kind":"plain","required":true},"shutdown_script":{"type":"string","description_kind":"plain","optional":true},"spot_percentage":{"type":"number","description_kind":"plain","optional":true},"user_data":{"type":"string","description_kind":"plain","optional":true},"vm_name_prefix":{"type":"string","description_kind":"plain","optional":true},"zones":{"type":["list","string"],"description_kind":"plain","optional":true}},"block_types":{"boot_diagnostics":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description_kind":"plain","required":true},"storage_url":{"type":"string","description_kind":"plain","optional":true,"computed":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"capacity_reservation":{"nesting_mode":"list","block":{"attributes":{"should_utilize":{"type":"bool","description_kind":"plain","required":true},"utilization_strategy":{"type":"string","description_kind":"plain","required":true}},"block_types":{"capacity_reservation_groups":{"nesting_mode":"set","block":{"attributes":{"crg_name":{"type":"string","description_kind":"plain","required":true},"crg_resource_group_name":{"type":"string","description_kind":"plain","required":true},"crg_should_prioritize":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"data_disk":{"nesting_mode":"list","block":{"attributes":{"lun":{"type":"number","description_kind":"plain","required":true},"size_gb":{"type":"number","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"extensions":{"nesting_mode":"list","block":{"attributes":{"api_version":{"type":"string","description_kind":"plain","required":true},"enable_automatic_upgrade":{"type":"bool","description_kind":"plain","optional":true},"minor_version_auto_upgrade":{"type":"bool","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"protected_settings":{"type":["map","string"],"description_kind":"plain","optional":true,"computed":true},"public_settings":{"type":["map","string"],"description_kind":"plain","optional":true,"computed":true},"publisher":{"type":"string","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","required":true}},"block_types":{"protected_settings_from_key_vault":{"nesting_mode":"list","block":{"attributes":{"secret_url":{"type":"string","description_kind":"plain","required":true},"source_vault":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"health":{"nesting_mode":"list","block":{"attributes":{"auto_healing":{"type":"bool","description_kind":"plain","optional":true},"grace_period":{"type":"number","description_kind":"plain","optional":true},"health_check_types":{"type":["list","string"],"description_kind":"plain","optional":true},"unhealthy_duration":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"image":{"nesting_mode":"list","block":{"block_types":{"custom":{"nesting_mode":"list","block":{"attributes":{"image_name":{"type":"string","description_kind":"plain","required":true},"resource_group_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"gallery_image":{"nesting_mode":"list","block":{"attributes":{"gallery_name":{"type":"string","description_kind":"plain","required":true},"image_name":{"type":"string","description_kind":"plain","required":true},"resource_group_name":{"type":"string","description_kind":"plain","required":true},"spot_account_id":{"type":"string","description_kind":"plain","optional":true},"version":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"marketplace":{"nesting_mode":"list","block":{"attributes":{"offer":{"type":"string","description_kind":"plain","required":true},"publisher":{"type":"string","description_kind":"plain","required":true},"sku":{"type":"string","description_kind":"plain","required":true},"version":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"load_balancer":{"nesting_mode":"set","block":{"attributes":{"backend_pool_names":{"type":["list","string"],"description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"resource_group_name":{"type":"string","description_kind":"plain","required":true},"sku":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"login":{"nesting_mode":"list","block":{"attributes":{"password":{"type":"string","description_kind":"plain","optional":true},"ssh_public_key":{"type":"string","description_kind":"plain","optional":true},"user_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"managed_service_identity":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"resource_group_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"network":{"nesting_mode":"list","block":{"attributes":{"resource_group_name":{"type":"string","description_kind":"plain","required":true},"virtual_network_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"network_interfaces":{"nesting_mode":"list","block":{"attributes":{"assign_public_ip":{"type":"bool","description_kind":"plain","required":true},"enable_ip_forwarding":{"type":"bool","description_kind":"plain","optional":true},"is_primary":{"type":"bool","description_kind":"plain","required":true},"private_ip_addresses":{"type":["list","string"],"description_kind":"plain","optional":true},"public_ip_sku":{"type":"string","description_kind":"plain","optional":true},"subnet_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"additional_ip_configs":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"private_ip_version":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"application_security_group":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"resource_group_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"security_group":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","optional":true},"resource_group_name":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"min_items":1,"max_items":1},"os_disk":{"nesting_mode":"list","block":{"attributes":{"size_gb":{"type":"number","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"proximity_placement_groups":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"resource_group_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"revert_to_spot":{"nesting_mode":"list","block":{"attributes":{"perform_at":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"scaling_down_policy":{"nesting_mode":"list","block":{"attributes":{"cooldown":{"type":"number","description_kind":"plain","required":true},"evaluation_periods":{"type":"number","description_kind":"plain","required":true},"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"metric_name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","required":true},"operator":{"type":"string","description_kind":"plain","required":true},"period":{"type":"number","description_kind":"plain","required":true},"policy_name":{"type":"string","description_kind":"plain","required":true},"source":{"type":"string","description_kind":"plain","optional":true,"computed":true},"statistic":{"type":"string","description_kind":"plain","required":true},"threshold":{"type":"number","description_kind":"plain","required":true},"unit":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"action":{"nesting_mode":"list","block":{"attributes":{"adjustment":{"type":"string","description_kind":"plain","optional":true},"maximum":{"type":"string","description_kind":"plain","optional":true},"minimum":{"type":"string","description_kind":"plain","optional":true},"target":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"dimensions":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","optional":true},"value":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"scaling_up_policy":{"nesting_mode":"list","block":{"attributes":{"cooldown":{"type":"number","description_kind":"plain","required":true},"evaluation_periods":{"type":"number","description_kind":"plain","required":true},"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"metric_name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","required":true},"operator":{"type":"string","description_kind":"plain","required":true},"period":{"type":"number","description_kind":"plain","required":true},"policy_name":{"type":"string","description_kind":"plain","required":true},"source":{"type":"string","description_kind":"plain","optional":true,"computed":true},"statistic":{"type":"string","description_kind":"plain","required":true},"threshold":{"type":"number","description_kind":"plain","required":true},"unit":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"action":{"nesting_mode":"list","block":{"attributes":{"adjustment":{"type":"string","description_kind":"plain","optional":true},"maximum":{"type":"string","description_kind":"plain","optional":true},"minimum":{"type":"string","description_kind":"plain","optional":true},"target":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"dimensions":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","optional":true},"value":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"scheduling_task":{"nesting_mode":"list","block":{"attributes":{"adjustment":{"type":"string","description_kind":"plain","optional":true},"adjustment_percentage":{"type":"string","description_kind":"plain","optional":true},"batch_size_percentage":{"type":"string","description_kind":"plain","optional":true},"cron_expression":{"type":"string","description_kind":"plain","required":true},"grace_period":{"type":"string","description_kind":"plain","optional":true},"is_enabled":{"type":"bool","description_kind":"plain","required":true},"scale_max_capacity":{"type":"string","description_kind":"plain","optional":true},"scale_min_capacity":{"type":"string","description_kind":"plain","optional":true},"scale_target_capacity":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"secret":{"nesting_mode":"set","block":{"block_types":{"source_vault":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"resource_group_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1},"vault_certificates":{"nesting_mode":"list","block":{"attributes":{"certificate_store":{"type":"string","description_kind":"plain","required":true},"certificate_url":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"}},"security":{"nesting_mode":"list","block":{"attributes":{"confidential_os_disk_encryption":{"type":"bool","description_kind":"plain","optional":true},"secure_boot_enabled":{"type":"bool","description_kind":"plain","optional":true},"security_type":{"type":"string","description_kind":"plain","optional":true},"vtpm_enabled":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"signal":{"nesting_mode":"list","block":{"attributes":{"timeout":{"type":"number","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"tags":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"vm_sizes":{"nesting_mode":"list","block":{"attributes":{"od_sizes":{"type":["list","string"],"description_kind":"plain","required":true},"preferred_spot_sizes":{"type":["list","string"],"description_kind":"plain","optional":true},"spot_sizes":{"type":["list","string"],"description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1}},"description_kind":"plain"}},"spotinst_elastigroup_gcp":{"version":0,"block":{"attributes":{"auto_healing":{"type":"bool","description_kind":"plain","optional":true},"availability_zones":{"type":["list","string"],"description_kind":"plain","deprecated":true,"optional":true},"description":{"type":"string","description_kind":"plain","optional":true},"desired_capacity":{"type":"number","description_kind":"plain","required":true},"draining_timeout":{"type":"number","description_kind":"plain","optional":true},"fallback_to_ondemand":{"type":"bool","description_kind":"plain","optional":true},"health_check_grace_period":{"type":"number","description_kind":"plain","optional":true},"health_check_type":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"instance_name_prefix":{"type":"string","description_kind":"plain","optional":true},"instance_types_ondemand":{"type":"string","description_kind":"plain","optional":true},"instance_types_preemptible":{"type":["list","string"],"description_kind":"plain","optional":true},"ip_forwarding":{"type":"bool","description_kind":"plain","optional":true},"max_size":{"type":"number","description_kind":"plain","optional":true,"computed":true},"min_size":{"type":"number","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true},"ondemand_count":{"type":"number","description_kind":"plain","optional":true},"optimization_windows":{"type":["list","string"],"description_kind":"plain","optional":true},"preemptible_percentage":{"type":"number","description_kind":"plain","optional":true},"provisioning_model":{"type":"string","description_kind":"plain","optional":true},"service_account":{"type":"string","description_kind":"plain","optional":true},"shutdown_script":{"type":"string","description_kind":"plain","optional":true},"startup_script":{"type":"string","description_kind":"plain","optional":true},"tags":{"type":["list","string"],"description_kind":"plain","optional":true},"unhealthy_duration":{"type":"number","description_kind":"plain","optional":true}},"block_types":{"backend_services":{"nesting_mode":"set","block":{"attributes":{"location_type":{"type":"string","description_kind":"plain","optional":true},"scheme":{"type":"string","description_kind":"plain","optional":true},"service_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"named_ports":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"ports":{"type":["list","string"],"description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"disk":{"nesting_mode":"set","block":{"attributes":{"auto_delete":{"type":"bool","description_kind":"plain","optional":true},"boot":{"type":"bool","description_kind":"plain","optional":true},"device_name":{"type":"string","description_kind":"plain","optional":true},"interface":{"type":"string","description_kind":"plain","optional":true},"mode":{"type":"string","description_kind":"plain","optional":true},"source":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"initialize_params":{"nesting_mode":"set","block":{"attributes":{"disk_size_gb":{"type":"string","description_kind":"plain","optional":true},"disk_type":{"type":"string","description_kind":"plain","optional":true},"source_image":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"gpu":{"nesting_mode":"set","block":{"attributes":{"count":{"type":"number","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"instance_types_custom":{"nesting_mode":"list","block":{"attributes":{"memory_gib":{"type":"number","description_kind":"plain","required":true},"vcpu":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"}},"integration_docker_swarm":{"nesting_mode":"list","block":{"attributes":{"master_host":{"type":"string","description_kind":"plain","required":true},"master_port":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"integration_gke":{"nesting_mode":"list","block":{"attributes":{"auto_update":{"type":"bool","description_kind":"plain","optional":true},"autoscale_cooldown":{"type":"number","description_kind":"plain","optional":true},"autoscale_is_auto_config":{"type":"bool","description_kind":"plain","optional":true},"autoscale_is_enabled":{"type":"bool","description_kind":"plain","optional":true},"cluster_id":{"type":"string","description_kind":"plain","optional":true},"location":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"autoscale_down":{"nesting_mode":"list","block":{"attributes":{"evaluation_periods":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"autoscale_headroom":{"nesting_mode":"list","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"autoscale_labels":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"labels":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"metadata":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"network_interface":{"nesting_mode":"list","block":{"attributes":{"network":{"type":"string","description_kind":"plain","required":true}},"block_types":{"access_configs":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"alias_ip_ranges":{"nesting_mode":"set","block":{"attributes":{"ip_cidr_range":{"type":"string","description_kind":"plain","required":true},"subnetwork_range_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"revert_to_preemptible":{"nesting_mode":"list","block":{"attributes":{"perform_at":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"scaling_down_policy":{"nesting_mode":"set","block":{"attributes":{"action_type":{"type":"string","description_kind":"plain","optional":true},"adjustment":{"type":"number","description_kind":"plain","optional":true},"cooldown":{"type":"number","description_kind":"plain","optional":true,"computed":true},"evaluation_periods":{"type":"number","description_kind":"plain","optional":true,"computed":true},"metric_name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","required":true},"operator":{"type":"string","description_kind":"plain","optional":true,"computed":true},"period":{"type":"number","description_kind":"plain","optional":true,"computed":true},"policy_name":{"type":"string","description_kind":"plain","required":true},"source":{"type":"string","description_kind":"plain","optional":true,"computed":true},"statistic":{"type":"string","description_kind":"plain","optional":true,"computed":true},"threshold":{"type":"number","description_kind":"plain","required":true},"unit":{"type":"string","description_kind":"plain","required":true}},"block_types":{"dimensions":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"scaling_up_policy":{"nesting_mode":"set","block":{"attributes":{"action_type":{"type":"string","description_kind":"plain","optional":true},"adjustment":{"type":"number","description_kind":"plain","optional":true},"cooldown":{"type":"number","description_kind":"plain","optional":true,"computed":true},"evaluation_periods":{"type":"number","description_kind":"plain","optional":true,"computed":true},"metric_name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","required":true},"operator":{"type":"string","description_kind":"plain","optional":true,"computed":true},"period":{"type":"number","description_kind":"plain","optional":true,"computed":true},"policy_name":{"type":"string","description_kind":"plain","required":true},"source":{"type":"string","description_kind":"plain","optional":true,"computed":true},"statistic":{"type":"string","description_kind":"plain","optional":true,"computed":true},"threshold":{"type":"number","description_kind":"plain","required":true},"unit":{"type":"string","description_kind":"plain","required":true}},"block_types":{"dimensions":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"scheduled_task":{"nesting_mode":"set","block":{"attributes":{"cron_expression":{"type":"string","description_kind":"plain","optional":true},"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"max_capacity":{"type":"string","description_kind":"plain","optional":true},"min_capacity":{"type":"string","description_kind":"plain","optional":true},"target_capacity":{"type":"string","description_kind":"plain","optional":true},"task_type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"subnets":{"nesting_mode":"set","block":{"attributes":{"region":{"type":"string","description_kind":"plain","required":true},"subnet_names":{"type":["list","string"],"description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spotinst_elastigroup_gke":{"version":0,"block":{"attributes":{"cluster_id":{"type":"string","description_kind":"plain","deprecated":true,"optional":true},"cluster_zone_name":{"type":"string","description_kind":"plain","required":true},"desired_capacity":{"type":"number","description_kind":"plain","required":true},"draining_timeout":{"type":"number","description_kind":"plain","optional":true},"fallback_to_ondemand":{"type":"bool","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"instance_name_prefix":{"type":"string","description_kind":"plain","optional":true},"instance_types_ondemand":{"type":"string","description_kind":"plain","optional":true},"instance_types_preemptible":{"type":["list","string"],"description_kind":"plain","optional":true},"ip_forwarding":{"type":"bool","description_kind":"plain","optional":true},"max_size":{"type":"number","description_kind":"plain","optional":true,"computed":true},"min_size":{"type":"number","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true},"node_image":{"type":"string","description_kind":"plain","optional":true},"ondemand_count":{"type":"number","description_kind":"plain","optional":true},"optimization_windows":{"type":["list","string"],"description_kind":"plain","optional":true},"preemptible_percentage":{"type":"number","description_kind":"plain","optional":true},"provisioning_model":{"type":"string","description_kind":"plain","optional":true},"service_account":{"type":"string","description_kind":"plain","optional":true},"shutdown_script":{"type":"string","description_kind":"plain","optional":true},"startup_script":{"type":"string","description_kind":"plain","optional":true},"tags":{"type":["list","string"],"description_kind":"plain","optional":true}},"block_types":{"backend_services":{"nesting_mode":"set","block":{"attributes":{"location_type":{"type":"string","description_kind":"plain","optional":true},"scheme":{"type":"string","description_kind":"plain","optional":true},"service_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"named_ports":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"ports":{"type":["list","string"],"description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"disk":{"nesting_mode":"set","block":{"attributes":{"auto_delete":{"type":"bool","description_kind":"plain","optional":true},"boot":{"type":"bool","description_kind":"plain","optional":true},"device_name":{"type":"string","description_kind":"plain","optional":true},"interface":{"type":"string","description_kind":"plain","optional":true},"mode":{"type":"string","description_kind":"plain","optional":true},"source":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"initialize_params":{"nesting_mode":"set","block":{"attributes":{"disk_size_gb":{"type":"string","description_kind":"plain","optional":true},"disk_type":{"type":"string","description_kind":"plain","optional":true},"source_image":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"gpu":{"nesting_mode":"set","block":{"attributes":{"count":{"type":"number","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"instance_types_custom":{"nesting_mode":"list","block":{"attributes":{"memory_gib":{"type":"number","description_kind":"plain","required":true},"vcpu":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"}},"integration_docker_swarm":{"nesting_mode":"list","block":{"attributes":{"master_host":{"type":"string","description_kind":"plain","required":true},"master_port":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"integration_gke":{"nesting_mode":"list","block":{"attributes":{"auto_update":{"type":"bool","description_kind":"plain","optional":true},"autoscale_cooldown":{"type":"number","description_kind":"plain","optional":true},"autoscale_is_auto_config":{"type":"bool","description_kind":"plain","optional":true},"autoscale_is_enabled":{"type":"bool","description_kind":"plain","optional":true},"cluster_id":{"type":"string","description_kind":"plain","optional":true},"location":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"autoscale_down":{"nesting_mode":"list","block":{"attributes":{"evaluation_periods":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"autoscale_headroom":{"nesting_mode":"list","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"autoscale_labels":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"labels":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"metadata":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"network_interface":{"nesting_mode":"list","block":{"attributes":{"network":{"type":"string","description_kind":"plain","required":true}},"block_types":{"access_configs":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"alias_ip_ranges":{"nesting_mode":"set","block":{"attributes":{"ip_cidr_range":{"type":"string","description_kind":"plain","required":true},"subnetwork_range_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"revert_to_preemptible":{"nesting_mode":"list","block":{"attributes":{"perform_at":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"scaling_down_policy":{"nesting_mode":"set","block":{"attributes":{"action_type":{"type":"string","description_kind":"plain","optional":true},"adjustment":{"type":"number","description_kind":"plain","optional":true},"cooldown":{"type":"number","description_kind":"plain","optional":true,"computed":true},"evaluation_periods":{"type":"number","description_kind":"plain","optional":true,"computed":true},"metric_name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","required":true},"operator":{"type":"string","description_kind":"plain","optional":true,"computed":true},"period":{"type":"number","description_kind":"plain","optional":true,"computed":true},"policy_name":{"type":"string","description_kind":"plain","required":true},"source":{"type":"string","description_kind":"plain","optional":true,"computed":true},"statistic":{"type":"string","description_kind":"plain","optional":true,"computed":true},"threshold":{"type":"number","description_kind":"plain","required":true},"unit":{"type":"string","description_kind":"plain","required":true}},"block_types":{"dimensions":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"scaling_up_policy":{"nesting_mode":"set","block":{"attributes":{"action_type":{"type":"string","description_kind":"plain","optional":true},"adjustment":{"type":"number","description_kind":"plain","optional":true},"cooldown":{"type":"number","description_kind":"plain","optional":true,"computed":true},"evaluation_periods":{"type":"number","description_kind":"plain","optional":true,"computed":true},"metric_name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","required":true},"operator":{"type":"string","description_kind":"plain","optional":true,"computed":true},"period":{"type":"number","description_kind":"plain","optional":true,"computed":true},"policy_name":{"type":"string","description_kind":"plain","required":true},"source":{"type":"string","description_kind":"plain","optional":true,"computed":true},"statistic":{"type":"string","description_kind":"plain","optional":true,"computed":true},"threshold":{"type":"number","description_kind":"plain","required":true},"unit":{"type":"string","description_kind":"plain","required":true}},"block_types":{"dimensions":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"spotinst_health_check":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","optional":true},"proxy_address":{"type":"string","description_kind":"plain","required":true},"proxy_port":{"type":"number","description_kind":"plain","optional":true},"resource_id":{"type":"string","description_kind":"plain","required":true}},"block_types":{"check":{"nesting_mode":"list","block":{"attributes":{"end_point":{"type":"string","description_kind":"plain","optional":true},"endpoint":{"type":"string","description_kind":"plain","optional":true},"healthy":{"type":"number","description_kind":"plain","required":true},"interval":{"type":"number","description_kind":"plain","required":true},"port":{"type":"number","description_kind":"plain","required":true},"protocol":{"type":"string","description_kind":"plain","required":true},"time_out":{"type":"number","description_kind":"plain","optional":true},"timeout":{"type":"number","description_kind":"plain","optional":true},"unhealthy":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"spotinst_managed_instance_aws":{"version":0,"block":{"attributes":{"auto_healing":{"type":"bool","description_kind":"plain","optional":true},"block_devices_mode":{"type":"string","description_kind":"plain","optional":true},"cpu_credits":{"type":"string","description_kind":"plain","optional":true},"description":{"type":"string","description_kind":"plain","optional":true},"draining_timeout":{"type":"number","description_kind":"plain","optional":true},"ebs_optimized":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"elastic_ip":{"type":"string","description_kind":"plain","optional":true},"enable_monitoring":{"type":"bool","description_kind":"plain","optional":true},"fallback_to_ondemand":{"type":"bool","description_kind":"plain","optional":true},"grace_period":{"type":"number","description_kind":"plain","optional":true},"health_check_type":{"type":"string","description_kind":"plain","optional":true},"iam_instance_profile":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"image_id":{"type":"string","description_kind":"plain","required":true},"instance_types":{"type":["list","string"],"description_kind":"plain","required":true},"key_pair":{"type":"string","description_kind":"plain","optional":true},"life_cycle":{"type":"string","description_kind":"plain","optional":true},"minimum_instance_lifetime":{"type":"number","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"optimization_windows":{"type":["list","string"],"description_kind":"plain","optional":true},"orientation":{"type":"string","description_kind":"plain","optional":true},"persist_block_devices":{"type":"bool","description_kind":"plain","required":true},"persist_private_ip":{"type":"bool","description_kind":"plain","optional":true},"persist_root_device":{"type":"bool","description_kind":"plain","optional":true},"placement_tenancy":{"type":"string","description_kind":"plain","optional":true},"preferred_type":{"type":"string","description_kind":"plain","optional":true},"private_ip":{"type":"string","description_kind":"plain","optional":true},"product":{"type":"string","description_kind":"plain","required":true},"region":{"type":"string","description_kind":"plain","optional":true},"security_group_ids":{"type":["list","string"],"description_kind":"plain","optional":true},"shutdown_script":{"type":"string","description_kind":"plain","optional":true},"subnet_ids":{"type":["list","string"],"description_kind":"plain","required":true},"unhealthy_duration":{"type":"number","description_kind":"plain","optional":true},"user_data":{"type":"string","description_kind":"plain","optional":true},"utilize_reserved_instances":{"type":"bool","description_kind":"plain","optional":true},"vpc_id":{"type":"string","description_kind":"plain","required":true}},"block_types":{"block_device_mappings":{"nesting_mode":"list","block":{"attributes":{"device_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"ebs":{"nesting_mode":"list","block":{"attributes":{"delete_on_termination":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"encrypted":{"type":"bool","description_kind":"plain","optional":true},"iops":{"type":"number","description_kind":"plain","optional":true},"kms_key_id":{"type":"string","description_kind":"plain","optional":true},"snapshot_id":{"type":"string","description_kind":"plain","optional":true},"throughput":{"type":"number","description_kind":"plain","optional":true},"volume_size":{"type":"number","description_kind":"plain","optional":true},"volume_type":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"delete":{"nesting_mode":"list","block":{"attributes":{"ami_backup_should_delete_images":{"type":"bool","description_kind":"plain","optional":true},"deallocation_config_should_delete_images":{"type":"bool","description_kind":"plain","optional":true},"should_delete_network_interfaces":{"type":"bool","description_kind":"plain","optional":true},"should_delete_snapshots":{"type":"bool","description_kind":"plain","optional":true},"should_delete_volumes":{"type":"bool","description_kind":"plain","optional":true},"should_terminate_instance":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"}},"integration_route53":{"nesting_mode":"list","block":{"block_types":{"domains":{"nesting_mode":"set","block":{"attributes":{"hosted_zone_id":{"type":"string","description_kind":"plain","required":true},"record_set_type":{"type":"string","description_kind":"plain","optional":true},"spotinst_acct_id":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"record_sets":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"use_public_dns":{"type":"bool","description_kind":"plain","optional":true},"use_public_ip":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"max_items":1},"load_balancers":{"nesting_mode":"set","block":{"attributes":{"arn":{"type":"string","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"managed_instance_action":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"metadata_options":{"nesting_mode":"list","block":{"attributes":{"http_put_response_hop_limit":{"type":"number","description_kind":"plain","optional":true},"http_tokens":{"type":"string","description_kind":"plain","required":true},"instance_metadata_tags":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"network_interface":{"nesting_mode":"set","block":{"attributes":{"associate_ipv6_address":{"type":"bool","description_kind":"plain","optional":true},"associate_public_ip_address":{"type":"bool","description_kind":"plain","optional":true},"device_index":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"resource_tag_specification":{"nesting_mode":"list","block":{"attributes":{"should_tag_amis":{"type":"bool","description_kind":"plain","optional":true},"should_tag_enis":{"type":"bool","description_kind":"plain","optional":true},"should_tag_snapshots":{"type":"bool","description_kind":"plain","optional":true},"should_tag_volumes":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"}},"revert_to_spot":{"nesting_mode":"list","block":{"attributes":{"perform_at":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"scheduled_task":{"nesting_mode":"set","block":{"attributes":{"cron_expression":{"type":"string","description_kind":"plain","optional":true},"frequency":{"type":"string","description_kind":"plain","optional":true},"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"start_time":{"type":"string","description_kind":"plain","optional":true},"task_type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"tags":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","optional":true},"value":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spotinst_mrscaler_aws":{"version":0,"block":{"attributes":{"additional_info":{"type":"string","description_kind":"plain","optional":true},"additional_primary_security_groups":{"type":["list","string"],"description_kind":"plain","optional":true},"additional_replica_security_groups":{"type":["list","string"],"description_kind":"plain","optional":true},"availability_zones":{"type":["list","string"],"description_kind":"plain","optional":true},"cluster_id":{"type":"string","description_kind":"plain","optional":true},"core_desired_capacity":{"type":"number","description_kind":"plain","optional":true},"core_ebs_optimized":{"type":"bool","description_kind":"plain","optional":true},"core_instance_types":{"type":["list","string"],"description_kind":"plain","optional":true},"core_lifecycle":{"type":"string","description_kind":"plain","optional":true},"core_max_size":{"type":"number","description_kind":"plain","optional":true},"core_min_size":{"type":"number","description_kind":"plain","optional":true},"core_unit":{"type":"string","description_kind":"plain","optional":true},"custom_ami_id":{"type":"string","description_kind":"plain","optional":true},"description":{"type":"string","description_kind":"plain","optional":true},"ebs_root_volume_size":{"type":"number","description_kind":"plain","optional":true},"ec2_key_name":{"type":"string","description_kind":"plain","optional":true},"expose_cluster_id":{"type":"bool","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"job_flow_role":{"type":"string","description_kind":"plain","optional":true},"keep_job_flow_alive":{"type":"bool","description_kind":"plain","optional":true},"log_uri":{"type":"string","description_kind":"plain","optional":true},"managed_primary_security_group":{"type":"string","description_kind":"plain","optional":true},"managed_replica_security_group":{"type":"string","description_kind":"plain","optional":true},"master_ebs_optimized":{"type":"bool","description_kind":"plain","optional":true},"master_instance_types":{"type":["list","string"],"description_kind":"plain","optional":true},"master_lifecycle":{"type":"string","description_kind":"plain","optional":true},"master_target":{"type":"number","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"output_cluster_id":{"type":"string","description_kind":"plain","computed":true},"region":{"type":"string","description_kind":"plain","optional":true},"release_label":{"type":"string","description_kind":"plain","optional":true},"repo_upgrade_on_boot":{"type":"string","description_kind":"plain","optional":true},"retries":{"type":"number","description_kind":"plain","optional":true},"security_config":{"type":"string","description_kind":"plain","optional":true},"service_access_security_group":{"type":"string","description_kind":"plain","optional":true},"service_role":{"type":"string","description_kind":"plain","optional":true},"strategy":{"type":"string","description_kind":"plain","required":true},"task_desired_capacity":{"type":"number","description_kind":"plain","optional":true},"task_ebs_optimized":{"type":"bool","description_kind":"plain","optional":true},"task_instance_types":{"type":["list","string"],"description_kind":"plain","optional":true},"task_lifecycle":{"type":"string","description_kind":"plain","optional":true},"task_max_size":{"type":"number","description_kind":"plain","optional":true},"task_min_size":{"type":"number","description_kind":"plain","optional":true},"task_unit":{"type":"string","description_kind":"plain","optional":true},"termination_protected":{"type":"bool","description_kind":"plain","optional":true},"visible_to_all_users":{"type":"bool","description_kind":"plain","deprecated":true,"optional":true}},"block_types":{"applications":{"nesting_mode":"set","block":{"attributes":{"args":{"type":["list","string"],"description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"version":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"bootstrap_actions_file":{"nesting_mode":"set","block":{"attributes":{"bucket":{"type":"string","description_kind":"plain","required":true},"key":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"configurations_file":{"nesting_mode":"set","block":{"attributes":{"bucket":{"type":"string","description_kind":"plain","required":true},"key":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"core_ebs_block_device":{"nesting_mode":"set","block":{"attributes":{"iops":{"type":"number","description_kind":"plain","optional":true},"size_in_gb":{"type":"number","description_kind":"plain","required":true},"volume_type":{"type":"string","description_kind":"plain","required":true},"volumes_per_instance":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"core_scaling_down_policy":{"nesting_mode":"set","block":{"attributes":{"action_type":{"type":"string","description_kind":"plain","optional":true},"adjustment":{"type":"string","description_kind":"plain","optional":true},"cooldown":{"type":"number","description_kind":"plain","optional":true,"computed":true},"dimensions":{"type":["map","string"],"description_kind":"plain","optional":true},"evaluation_periods":{"type":"number","description_kind":"plain","optional":true,"computed":true},"max_target_capacity":{"type":"string","description_kind":"plain","optional":true},"maximum":{"type":"string","description_kind":"plain","optional":true},"metric_name":{"type":"string","description_kind":"plain","required":true},"min_target_capacity":{"type":"string","description_kind":"plain","optional":true},"minimum":{"type":"string","description_kind":"plain","optional":true},"namespace":{"type":"string","description_kind":"plain","required":true},"operator":{"type":"string","description_kind":"plain","optional":true,"computed":true},"period":{"type":"number","description_kind":"plain","optional":true,"computed":true},"policy_name":{"type":"string","description_kind":"plain","required":true},"statistic":{"type":"string","description_kind":"plain","optional":true,"computed":true},"target":{"type":"string","description_kind":"plain","optional":true},"threshold":{"type":"number","description_kind":"plain","required":true},"unit":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"core_scaling_up_policy":{"nesting_mode":"set","block":{"attributes":{"action_type":{"type":"string","description_kind":"plain","optional":true},"adjustment":{"type":"string","description_kind":"plain","optional":true},"cooldown":{"type":"number","description_kind":"plain","optional":true,"computed":true},"dimensions":{"type":["map","string"],"description_kind":"plain","optional":true},"evaluation_periods":{"type":"number","description_kind":"plain","optional":true,"computed":true},"max_target_capacity":{"type":"string","description_kind":"plain","optional":true},"maximum":{"type":"string","description_kind":"plain","optional":true},"metric_name":{"type":"string","description_kind":"plain","required":true},"min_target_capacity":{"type":"string","description_kind":"plain","optional":true},"minimum":{"type":"string","description_kind":"plain","optional":true},"namespace":{"type":"string","description_kind":"plain","required":true},"operator":{"type":"string","description_kind":"plain","optional":true,"computed":true},"period":{"type":"number","description_kind":"plain","optional":true,"computed":true},"policy_name":{"type":"string","description_kind":"plain","required":true},"statistic":{"type":"string","description_kind":"plain","optional":true,"computed":true},"target":{"type":"string","description_kind":"plain","optional":true},"threshold":{"type":"number","description_kind":"plain","required":true},"unit":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"instance_weights":{"nesting_mode":"set","block":{"attributes":{"instance_type":{"type":"string","description_kind":"plain","required":true},"weighted_capacity":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"}},"master_ebs_block_device":{"nesting_mode":"set","block":{"attributes":{"iops":{"type":"number","description_kind":"plain","optional":true},"size_in_gb":{"type":"number","description_kind":"plain","required":true},"volume_type":{"type":"string","description_kind":"plain","required":true},"volumes_per_instance":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"provisioning_timeout":{"nesting_mode":"list","block":{"attributes":{"timeout":{"type":"number","description_kind":"plain","required":true},"timeout_action":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"scheduled_task":{"nesting_mode":"set","block":{"attributes":{"cron":{"type":"string","description_kind":"plain","required":true},"desired_capacity":{"type":"string","description_kind":"plain","optional":true},"instance_group_type":{"type":"string","description_kind":"plain","required":true},"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"max_capacity":{"type":"string","description_kind":"plain","optional":true},"min_capacity":{"type":"string","description_kind":"plain","optional":true},"task_type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"steps_file":{"nesting_mode":"set","block":{"attributes":{"bucket":{"type":"string","description_kind":"plain","required":true},"key":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"tags":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"task_ebs_block_device":{"nesting_mode":"set","block":{"attributes":{"iops":{"type":"number","description_kind":"plain","optional":true},"size_in_gb":{"type":"number","description_kind":"plain","required":true},"volume_type":{"type":"string","description_kind":"plain","required":true},"volumes_per_instance":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"task_scaling_down_policy":{"nesting_mode":"set","block":{"attributes":{"action_type":{"type":"string","description_kind":"plain","optional":true},"adjustment":{"type":"string","description_kind":"plain","optional":true},"cooldown":{"type":"number","description_kind":"plain","optional":true,"computed":true},"dimensions":{"type":["map","string"],"description_kind":"plain","optional":true},"evaluation_periods":{"type":"number","description_kind":"plain","optional":true,"computed":true},"max_target_capacity":{"type":"string","description_kind":"plain","optional":true},"maximum":{"type":"string","description_kind":"plain","optional":true},"metric_name":{"type":"string","description_kind":"plain","required":true},"min_target_capacity":{"type":"string","description_kind":"plain","optional":true},"minimum":{"type":"string","description_kind":"plain","optional":true},"namespace":{"type":"string","description_kind":"plain","required":true},"operator":{"type":"string","description_kind":"plain","optional":true,"computed":true},"period":{"type":"number","description_kind":"plain","optional":true,"computed":true},"policy_name":{"type":"string","description_kind":"plain","required":true},"statistic":{"type":"string","description_kind":"plain","optional":true,"computed":true},"target":{"type":"string","description_kind":"plain","optional":true},"threshold":{"type":"number","description_kind":"plain","required":true},"unit":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"task_scaling_up_policy":{"nesting_mode":"set","block":{"attributes":{"action_type":{"type":"string","description_kind":"plain","optional":true},"adjustment":{"type":"string","description_kind":"plain","optional":true},"cooldown":{"type":"number","description_kind":"plain","optional":true,"computed":true},"dimensions":{"type":["map","string"],"description_kind":"plain","optional":true},"evaluation_periods":{"type":"number","description_kind":"plain","optional":true,"computed":true},"max_target_capacity":{"type":"string","description_kind":"plain","optional":true},"maximum":{"type":"string","description_kind":"plain","optional":true},"metric_name":{"type":"string","description_kind":"plain","required":true},"min_target_capacity":{"type":"string","description_kind":"plain","optional":true},"minimum":{"type":"string","description_kind":"plain","optional":true},"namespace":{"type":"string","description_kind":"plain","required":true},"operator":{"type":"string","description_kind":"plain","optional":true,"computed":true},"period":{"type":"number","description_kind":"plain","optional":true,"computed":true},"policy_name":{"type":"string","description_kind":"plain","required":true},"statistic":{"type":"string","description_kind":"plain","optional":true,"computed":true},"target":{"type":"string","description_kind":"plain","optional":true},"threshold":{"type":"number","description_kind":"plain","required":true},"unit":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"termination_policies":{"nesting_mode":"list","block":{"block_types":{"statements":{"nesting_mode":"list","block":{"attributes":{"evaluation_periods":{"type":"number","description_kind":"plain","optional":true},"metric_name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","required":true},"operator":{"type":"string","description_kind":"plain","optional":true},"period":{"type":"number","description_kind":"plain","optional":true},"statistic":{"type":"string","description_kind":"plain","optional":true},"threshold":{"type":"number","description_kind":"plain","required":true},"unit":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"}}},"description_kind":"plain"}},"spotinst_ocean_aks_np":{"version":0,"block":{"attributes":{"aks_cluster_name":{"type":"string","description_kind":"plain","required":true},"aks_infrastructure_resource_group_name":{"type":"string","description_kind":"plain","required":true},"aks_region":{"type":"string","description_kind":"plain","required":true},"aks_resource_group_name":{"type":"string","description_kind":"plain","required":true},"availability_zones":{"type":["list","string"],"description_kind":"plain","required":true},"controller_cluster_id":{"type":"string","description_kind":"plain","required":true},"enable_node_public_ip":{"type":"bool","description_kind":"plain","optional":true},"fallback_to_ondemand":{"type":"bool","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kubernetes_version":{"type":"string","description_kind":"plain","optional":true},"labels":{"type":["map","string"],"description_kind":"plain","optional":true},"max_count":{"type":"number","description_kind":"plain","optional":true},"max_pods_per_node":{"type":"number","description_kind":"plain","optional":true},"min_count":{"type":"number","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"os_disk_size_gb":{"type":"number","description_kind":"plain","optional":true},"os_disk_type":{"type":"string","description_kind":"plain","optional":true},"os_sku":{"type":"string","description_kind":"plain","optional":true},"os_type":{"type":"string","description_kind":"plain","optional":true},"pod_subnet_ids":{"type":["list","string"],"description_kind":"plain","optional":true},"spot_percentage":{"type":"number","description_kind":"plain","optional":true},"tags":{"type":["map","string"],"description_kind":"plain","optional":true},"vnet_subnet_ids":{"type":["list","string"],"description_kind":"plain","optional":true}},"block_types":{"autoscaler":{"nesting_mode":"list","block":{"attributes":{"autoscale_is_enabled":{"type":"bool","description_kind":"plain","optional":true}},"block_types":{"autoscale_down":{"nesting_mode":"list","block":{"attributes":{"max_scale_down_percentage":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"autoscale_headroom":{"nesting_mode":"list","block":{"block_types":{"automatic":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"percentage":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"resource_limits":{"nesting_mode":"list","block":{"attributes":{"max_memory_gib":{"type":"number","description_kind":"plain","optional":true},"max_vcpu":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"filters":{"nesting_mode":"list","block":{"attributes":{"accelerated_networking":{"type":"string","description_kind":"plain","optional":true},"architectures":{"type":["set","string"],"description_kind":"plain","optional":true},"disk_performance":{"type":"string","description_kind":"plain","optional":true},"exclude_series":{"type":["set","string"],"description_kind":"plain","optional":true},"gpu_types":{"type":["set","string"],"description_kind":"plain","optional":true},"max_gpu":{"type":"number","description_kind":"plain","optional":true},"max_memory_gib":{"type":"number","description_kind":"plain","optional":true},"max_vcpu":{"type":"number","description_kind":"plain","optional":true},"min_disk":{"type":"number","description_kind":"plain","optional":true},"min_gpu":{"type":"number","description_kind":"plain","optional":true},"min_memory_gib":{"type":"number","description_kind":"plain","optional":true},"min_nics":{"type":"number","description_kind":"plain","optional":true},"min_vcpu":{"type":"number","description_kind":"plain","optional":true},"series":{"type":["set","string"],"description_kind":"plain","optional":true},"vm_types":{"type":["set","string"],"description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"headrooms":{"nesting_mode":"set","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"gpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"health":{"nesting_mode":"list","block":{"attributes":{"grace_period":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"linux_os_config":{"nesting_mode":"list","block":{"block_types":{"sysctls":{"nesting_mode":"list","block":{"attributes":{"vm_max_map_count":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"scheduling":{"nesting_mode":"list","block":{"block_types":{"shutdown_hours":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"time_windows":{"type":["list","string"],"description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"tasks":{"nesting_mode":"list","block":{"attributes":{"cron_expression":{"type":"string","description_kind":"plain","required":true},"is_enabled":{"type":"bool","description_kind":"plain","required":true},"task_type":{"type":"string","description_kind":"plain","required":true}},"block_types":{"parameters":{"nesting_mode":"list","block":{"block_types":{"parameters_cluster_roll":{"nesting_mode":"list","block":{"attributes":{"batch_min_healthy_percentage":{"type":"number","description_kind":"plain","optional":true},"batch_size_percentage":{"type":"number","description_kind":"plain","optional":true},"comment":{"type":"string","description_kind":"plain","optional":true},"respect_pdb":{"type":"bool","description_kind":"plain","optional":true},"respect_restrict_scale_down":{"type":"bool","description_kind":"plain","optional":true},"vng_ids":{"type":["list","string"],"description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"taints":{"nesting_mode":"set","block":{"attributes":{"effect":{"type":"string","description_kind":"plain","required":true},"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"update_policy":{"nesting_mode":"list","block":{"attributes":{"conditioned_roll":{"type":"bool","description_kind":"plain","optional":true},"should_roll":{"type":"bool","description_kind":"plain","required":true}},"block_types":{"roll_config":{"nesting_mode":"list","block":{"attributes":{"batch_min_healthy_percentage":{"type":"number","description_kind":"plain","optional":true},"batch_size_percentage":{"type":"number","description_kind":"plain","optional":true},"comment":{"type":"string","description_kind":"plain","optional":true},"node_names":{"type":["list","string"],"description_kind":"plain","optional":true},"node_pool_names":{"type":["list","string"],"description_kind":"plain","optional":true},"respect_pdb":{"type":"bool","description_kind":"plain","optional":true},"respect_restrict_scale_down":{"type":"bool","description_kind":"plain","optional":true},"vng_ids":{"type":["list","string"],"description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"spotinst_ocean_aks_np_virtual_node_group":{"version":0,"block":{"attributes":{"availability_zones":{"type":["list","string"],"description_kind":"plain","optional":true},"enable_node_public_ip":{"type":"bool","description_kind":"plain","optional":true},"fallback_to_ondemand":{"type":"bool","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kubernetes_version":{"type":"string","description_kind":"plain","optional":true},"labels":{"type":["map","string"],"description_kind":"plain","optional":true},"max_count":{"type":"number","description_kind":"plain","optional":true},"max_pods_per_node":{"type":"number","description_kind":"plain","optional":true},"min_count":{"type":"number","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"ocean_id":{"type":"string","description_kind":"plain","required":true},"os_disk_size_gb":{"type":"number","description_kind":"plain","optional":true},"os_disk_type":{"type":"string","description_kind":"plain","optional":true},"os_sku":{"type":"string","description_kind":"plain","optional":true},"os_type":{"type":"string","description_kind":"plain","optional":true},"pod_subnet_ids":{"type":["list","string"],"description_kind":"plain","optional":true},"spot_percentage":{"type":"number","description_kind":"plain","optional":true},"tags":{"type":["map","string"],"description_kind":"plain","optional":true},"vnet_subnet_ids":{"type":["list","string"],"description_kind":"plain","optional":true}},"block_types":{"filters":{"nesting_mode":"list","block":{"attributes":{"accelerated_networking":{"type":"string","description_kind":"plain","optional":true},"architectures":{"type":["set","string"],"description_kind":"plain","optional":true},"disk_performance":{"type":"string","description_kind":"plain","optional":true},"exclude_series":{"type":["set","string"],"description_kind":"plain","optional":true},"gpu_types":{"type":["set","string"],"description_kind":"plain","optional":true},"max_gpu":{"type":"number","description_kind":"plain","optional":true},"max_memory_gib":{"type":"number","description_kind":"plain","optional":true},"max_vcpu":{"type":"number","description_kind":"plain","optional":true},"min_disk":{"type":"number","description_kind":"plain","optional":true},"min_gpu":{"type":"number","description_kind":"plain","optional":true},"min_memory_gib":{"type":"number","description_kind":"plain","optional":true},"min_nics":{"type":"number","description_kind":"plain","optional":true},"min_vcpu":{"type":"number","description_kind":"plain","optional":true},"series":{"type":["set","string"],"description_kind":"plain","optional":true},"vm_types":{"type":["set","string"],"description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"headrooms":{"nesting_mode":"set","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"gpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"linux_os_config":{"nesting_mode":"list","block":{"block_types":{"sysctls":{"nesting_mode":"list","block":{"attributes":{"vm_max_map_count":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"taints":{"nesting_mode":"set","block":{"attributes":{"effect":{"type":"string","description_kind":"plain","required":true},"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"update_policy":{"nesting_mode":"list","block":{"attributes":{"conditioned_roll":{"type":"bool","description_kind":"plain","optional":true},"should_roll":{"type":"bool","description_kind":"plain","required":true}},"block_types":{"roll_config":{"nesting_mode":"list","block":{"attributes":{"batch_min_healthy_percentage":{"type":"number","description_kind":"plain","optional":true},"batch_size_percentage":{"type":"number","description_kind":"plain","optional":true},"comment":{"type":"string","description_kind":"plain","optional":true},"node_names":{"type":["list","string"],"description_kind":"plain","optional":true},"node_pool_names":{"type":["list","string"],"description_kind":"plain","optional":true},"respect_pdb":{"type":"bool","description_kind":"plain","optional":true},"respect_restrict_scale_down":{"type":"bool","description_kind":"plain","optional":true},"vng_ids":{"type":["list","string"],"description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"spotinst_ocean_aws":{"version":0,"block":{"attributes":{"associate_ipv6_address":{"type":"bool","description_kind":"plain","optional":true},"associate_public_ip_address":{"type":"bool","description_kind":"plain","optional":true},"blacklist":{"type":["list","string"],"description_kind":"plain","optional":true},"controller_id":{"type":"string","description_kind":"plain","optional":true},"desired_capacity":{"type":"number","description_kind":"plain","optional":true,"computed":true},"draining_timeout":{"type":"number","description_kind":"plain","optional":true},"ebs_optimized":{"type":"bool","description_kind":"plain","optional":true},"fallback_to_ondemand":{"type":"bool","description_kind":"plain","optional":true},"grace_period":{"type":"number","description_kind":"plain","optional":true},"health_check_unhealthy_duration_before_replacement":{"type":"number","description_kind":"plain","optional":true},"iam_instance_profile":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"image_id":{"type":"string","description_kind":"plain","required":true},"key_name":{"type":"string","description_kind":"plain","optional":true},"max_size":{"type":"number","description_kind":"plain","optional":true},"min_size":{"type":"number","description_kind":"plain","optional":true,"computed":true},"monitoring":{"type":"bool","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","optional":true},"region":{"type":"string","description_kind":"plain","optional":true},"reserved_enis":{"type":"number","description_kind":"plain","optional":true},"root_volume_size":{"type":"number","description_kind":"plain","optional":true},"security_groups":{"type":["list","string"],"description_kind":"plain","required":true},"spot_percentage":{"type":"number","description_kind":"plain","optional":true},"spread_nodes_by":{"type":"string","description_kind":"plain","optional":true},"subnet_ids":{"type":["list","string"],"description_kind":"plain","required":true},"use_as_template_only":{"type":"bool","description_kind":"plain","optional":true},"user_data":{"type":"string","description_kind":"plain","optional":true},"utilize_commitments":{"type":"bool","description_kind":"plain","optional":true},"utilize_reserved_instances":{"type":"bool","description_kind":"plain","optional":true},"whitelist":{"type":["list","string"],"description_kind":"plain","optional":true}},"block_types":{"attach_load_balancer":{"nesting_mode":"list","block":{"attributes":{"arn":{"type":"string","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"autoscaler":{"nesting_mode":"list","block":{"attributes":{"auto_headroom_percentage":{"type":"number","description_kind":"plain","optional":true},"autoscale_cooldown":{"type":"number","description_kind":"plain","optional":true},"autoscale_is_auto_config":{"type":"bool","description_kind":"plain","optional":true},"autoscale_is_enabled":{"type":"bool","description_kind":"plain","optional":true},"enable_automatic_and_manual_headroom":{"type":"bool","description_kind":"plain","optional":true},"extended_resource_definitions":{"type":["list","string"],"description_kind":"plain","optional":true}},"block_types":{"autoscale_down":{"nesting_mode":"list","block":{"attributes":{"evaluation_periods":{"type":"number","description_kind":"plain","optional":true},"is_aggressive_scale_down_enabled":{"type":"bool","description_kind":"plain","optional":true},"max_scale_down_percentage":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"autoscale_headroom":{"nesting_mode":"list","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"gpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"resource_limits":{"nesting_mode":"list","block":{"attributes":{"max_memory_gib":{"type":"number","description_kind":"plain","optional":true},"max_vcpu":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"block_device_mappings":{"nesting_mode":"list","block":{"attributes":{"device_name":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"ebs":{"nesting_mode":"list","block":{"attributes":{"delete_on_termination":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"encrypted":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"iops":{"type":"number","description_kind":"plain","optional":true},"kms_key_id":{"type":"string","description_kind":"plain","optional":true},"snapshot_id":{"type":"string","description_kind":"plain","optional":true},"throughput":{"type":"number","description_kind":"plain","optional":true},"volume_size":{"type":"number","description_kind":"plain","optional":true},"volume_type":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"dynamic_iops":{"nesting_mode":"list","block":{"attributes":{"base_size":{"type":"number","description_kind":"plain","required":true},"resource":{"type":"string","description_kind":"plain","required":true},"size_per_resource_unit":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"dynamic_volume_size":{"nesting_mode":"list","block":{"attributes":{"base_size":{"type":"number","description_kind":"plain","required":true},"resource":{"type":"string","description_kind":"plain","required":true},"size_per_resource_unit":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"cluster_orientation":{"nesting_mode":"list","block":{"attributes":{"availability_vs_cost":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"detach_load_balancer":{"nesting_mode":"list","block":{"attributes":{"arn":{"type":"string","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"filters":{"nesting_mode":"list","block":{"attributes":{"architectures":{"type":["set","string"],"description_kind":"plain","optional":true},"categories":{"type":["set","string"],"description_kind":"plain","optional":true},"disk_types":{"type":["set","string"],"description_kind":"plain","optional":true},"exclude_families":{"type":["set","string"],"description_kind":"plain","optional":true},"exclude_metal":{"type":"bool","description_kind":"plain","optional":true},"hypervisor":{"type":["set","string"],"description_kind":"plain","optional":true},"include_families":{"type":["set","string"],"description_kind":"plain","optional":true},"is_ena_supported":{"type":"string","description_kind":"plain","optional":true},"max_gpu":{"type":"number","description_kind":"plain","optional":true},"max_memory_gib":{"type":"number","description_kind":"plain","optional":true},"max_network_performance":{"type":"number","description_kind":"plain","optional":true},"max_vcpu":{"type":"number","description_kind":"plain","optional":true},"min_enis":{"type":"number","description_kind":"plain","optional":true},"min_gpu":{"type":"number","description_kind":"plain","optional":true},"min_memory_gib":{"type":"number","description_kind":"plain","optional":true},"min_network_performance":{"type":"number","description_kind":"plain","optional":true},"min_vcpu":{"type":"number","description_kind":"plain","optional":true},"root_device_types":{"type":["set","string"],"description_kind":"plain","optional":true},"virtualization_types":{"type":["set","string"],"description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"instance_metadata_options":{"nesting_mode":"list","block":{"attributes":{"http_put_response_hop_limit":{"type":"number","description_kind":"plain","optional":true},"http_tokens":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"load_balancers":{"nesting_mode":"list","block":{"attributes":{"arn":{"type":"string","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"logging":{"nesting_mode":"list","block":{"block_types":{"export":{"nesting_mode":"list","block":{"block_types":{"s3":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"resource_tag_specification":{"nesting_mode":"list","block":{"attributes":{"should_tag_volumes":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"}},"scheduled_task":{"nesting_mode":"list","block":{"block_types":{"shutdown_hours":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"time_windows":{"type":["list","string"],"description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"tasks":{"nesting_mode":"list","block":{"attributes":{"cron_expression":{"type":"string","description_kind":"plain","required":true},"is_enabled":{"type":"bool","description_kind":"plain","required":true},"task_type":{"type":"string","description_kind":"plain","required":true}},"block_types":{"parameters":{"nesting_mode":"list","block":{"block_types":{"ami_auto_update":{"nesting_mode":"list","block":{"attributes":{"apply_roll":{"type":"bool","description_kind":"plain","optional":true},"minor_version":{"type":"bool","description_kind":"plain","optional":true},"patch":{"type":"bool","description_kind":"plain","optional":true}},"block_types":{"ami_auto_update_cluster_roll":{"nesting_mode":"list","block":{"attributes":{"batch_min_healthy_percentage":{"type":"number","description_kind":"plain","optional":true},"batch_size_percentage":{"type":"number","description_kind":"plain","optional":true},"comment":{"type":"string","description_kind":"plain","optional":true},"respect_pdb":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"parameters_cluster_roll":{"nesting_mode":"list","block":{"attributes":{"batch_min_healthy_percentage":{"type":"number","description_kind":"plain","optional":true},"batch_size_percentage":{"type":"number","description_kind":"plain","optional":true},"comment":{"type":"string","description_kind":"plain","optional":true},"respect_pdb":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"tags":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"update_policy":{"nesting_mode":"list","block":{"attributes":{"auto_apply_tags":{"type":"bool","description_kind":"plain","optional":true},"conditioned_roll":{"type":"bool","description_kind":"plain","optional":true},"conditioned_roll_params":{"type":["list","string"],"description_kind":"plain","optional":true},"should_roll":{"type":"bool","description_kind":"plain","required":true}},"block_types":{"roll_config":{"nesting_mode":"list","block":{"attributes":{"batch_min_healthy_percentage":{"type":"number","description_kind":"plain","optional":true},"batch_size_percentage":{"type":"number","description_kind":"plain","required":true},"launch_spec_ids":{"type":["list","string"],"description_kind":"plain","optional":true},"respect_pdb":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"spotinst_ocean_aws_extended_resource_definition":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true},"resource_mapping":{"type":["map","string"],"description_kind":"plain","required":true}},"description_kind":"plain"}},"spotinst_ocean_aws_launch_spec":{"version":0,"block":{"attributes":{"associate_public_ip_address":{"type":"bool","description_kind":"plain","optional":true},"iam_instance_profile":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"image_id":{"type":"string","description_kind":"plain","optional":true},"instance_types":{"type":["list","string"],"description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","optional":true},"ocean_id":{"type":"string","description_kind":"plain","required":true},"preferred_od_types":{"type":["list","string"],"description_kind":"plain","optional":true},"preferred_spot_types":{"type":["list","string"],"description_kind":"plain","optional":true},"reserved_enis":{"type":"number","description_kind":"plain","optional":true},"restrict_scale_down":{"type":"bool","description_kind":"plain","optional":true},"root_volume_size":{"type":"number","description_kind":"plain","optional":true},"security_groups":{"type":["list","string"],"description_kind":"plain","optional":true},"subnet_ids":{"type":["list","string"],"description_kind":"plain","optional":true},"user_data":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"autoscale_down":{"nesting_mode":"list","block":{"attributes":{"max_scale_down_percentage":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"autoscale_headrooms":{"nesting_mode":"set","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"gpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"}},"autoscale_headrooms_automatic":{"nesting_mode":"list","block":{"attributes":{"auto_headroom_percentage":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"block_device_mappings":{"nesting_mode":"list","block":{"attributes":{"device_name":{"type":"string","description_kind":"plain","optional":true},"no_device":{"type":"string","description_kind":"plain","optional":true},"virtual_name":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"ebs":{"nesting_mode":"list","block":{"attributes":{"delete_on_termination":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"encrypted":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"iops":{"type":"number","description_kind":"plain","optional":true},"kms_key_id":{"type":"string","description_kind":"plain","optional":true},"snapshot_id":{"type":"string","description_kind":"plain","optional":true},"throughput":{"type":"number","description_kind":"plain","optional":true},"volume_size":{"type":"number","description_kind":"plain","optional":true},"volume_type":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"dynamic_volume_size":{"nesting_mode":"list","block":{"attributes":{"base_size":{"type":"number","description_kind":"plain","required":true},"resource":{"type":"string","description_kind":"plain","required":true},"size_per_resource_unit":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"create_options":{"nesting_mode":"list","block":{"attributes":{"initial_nodes":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"delete_options":{"nesting_mode":"list","block":{"attributes":{"delete_nodes":{"type":"bool","description_kind":"plain","optional":true},"force_delete":{"type":"bool","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"elastic_ip_pool":{"nesting_mode":"set","block":{"block_types":{"tag_selector":{"nesting_mode":"list","block":{"attributes":{"tag_key":{"type":"string","description_kind":"plain","required":true},"tag_value":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"ephemeral_storage":{"nesting_mode":"list","block":{"attributes":{"ephemeral_storage_device_name":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"images":{"nesting_mode":"list","block":{"attributes":{"image_id":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"instance_metadata_options":{"nesting_mode":"list","block":{"attributes":{"http_put_response_hop_limit":{"type":"number","description_kind":"plain","optional":true},"http_tokens":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"instance_types_filters":{"nesting_mode":"list","block":{"attributes":{"categories":{"type":["set","string"],"description_kind":"plain","optional":true},"disk_types":{"type":["set","string"],"description_kind":"plain","optional":true},"exclude_families":{"type":["set","string"],"description_kind":"plain","optional":true},"exclude_metal":{"type":"bool","description_kind":"plain","optional":true},"hypervisor":{"type":["set","string"],"description_kind":"plain","optional":true},"include_families":{"type":["set","string"],"description_kind":"plain","optional":true},"is_ena_supported":{"type":"string","description_kind":"plain","optional":true},"max_gpu":{"type":"number","description_kind":"plain","optional":true},"max_memory_gib":{"type":"number","description_kind":"plain","optional":true},"max_network_performance":{"type":"number","description_kind":"plain","optional":true},"max_vcpu":{"type":"number","description_kind":"plain","optional":true},"min_enis":{"type":"number","description_kind":"plain","optional":true},"min_gpu":{"type":"number","description_kind":"plain","optional":true},"min_memory_gib":{"type":"number","description_kind":"plain","optional":true},"min_network_performance":{"type":"number","description_kind":"plain","optional":true},"min_vcpu":{"type":"number","description_kind":"plain","optional":true},"root_device_types":{"type":["set","string"],"description_kind":"plain","optional":true},"virtualization_types":{"type":["set","string"],"description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"labels":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"resource_limits":{"nesting_mode":"list","block":{"attributes":{"max_instance_count":{"type":"number","description_kind":"plain","optional":true},"min_instance_count":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"scheduling_shutdown_hours":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"time_windows":{"type":["list","string"],"description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"scheduling_task":{"nesting_mode":"set","block":{"attributes":{"cron_expression":{"type":"string","description_kind":"plain","required":true},"is_enabled":{"type":"bool","description_kind":"plain","required":true},"task_type":{"type":"string","description_kind":"plain","required":true}},"block_types":{"task_headroom":{"nesting_mode":"set","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"gpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"strategy":{"nesting_mode":"list","block":{"attributes":{"draining_timeout":{"type":"number","description_kind":"plain","optional":true},"spot_percentage":{"type":"number","description_kind":"plain","optional":true},"utilize_commitments":{"type":"bool","description_kind":"plain","optional":true},"utilize_reserved_instances":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"}},"tags":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"taints":{"nesting_mode":"set","block":{"attributes":{"effect":{"type":"string","description_kind":"plain","required":true},"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"update_policy":{"nesting_mode":"list","block":{"attributes":{"should_roll":{"type":"bool","description_kind":"plain","required":true}},"block_types":{"roll_config":{"nesting_mode":"list","block":{"attributes":{"batch_size_percentage":{"type":"number","description_kind":"plain","required":true},"respect_pdb":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"spotinst_ocean_ecs":{"version":0,"block":{"attributes":{"associate_public_ip_address":{"type":"bool","description_kind":"plain","optional":true},"blacklist":{"type":["list","string"],"description_kind":"plain","optional":true},"cluster_name":{"type":"string","description_kind":"plain","required":true},"desired_capacity":{"type":"number","description_kind":"plain","optional":true,"computed":true},"draining_timeout":{"type":"number","description_kind":"plain","optional":true},"ebs_optimized":{"type":"bool","description_kind":"plain","optional":true},"iam_instance_profile":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"image_id":{"type":"string","description_kind":"plain","required":true},"key_pair":{"type":"string","description_kind":"plain","optional":true},"max_size":{"type":"number","description_kind":"plain","optional":true,"computed":true},"min_size":{"type":"number","description_kind":"plain","optional":true,"computed":true},"monitoring":{"type":"bool","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"region":{"type":"string","description_kind":"plain","required":true},"security_group_ids":{"type":["list","string"],"description_kind":"plain","required":true},"spot_percentage":{"type":"number","description_kind":"plain","optional":true},"subnet_ids":{"type":["list","string"],"description_kind":"plain","required":true},"use_as_template_only":{"type":"bool","description_kind":"plain","optional":true},"user_data":{"type":"string","description_kind":"plain","optional":true},"utilize_commitments":{"type":"bool","description_kind":"plain","optional":true},"utilize_reserved_instances":{"type":"bool","description_kind":"plain","optional":true},"whitelist":{"type":["list","string"],"description_kind":"plain","optional":true}},"block_types":{"autoscaler":{"nesting_mode":"list","block":{"attributes":{"auto_headroom_percentage":{"type":"number","description_kind":"plain","optional":true},"cooldown":{"type":"number","description_kind":"plain","optional":true},"enable_automatic_and_manual_headroom":{"type":"bool","description_kind":"plain","optional":true},"is_auto_config":{"type":"bool","description_kind":"plain","optional":true},"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"should_scale_down_non_service_tasks":{"type":"bool","description_kind":"plain","optional":true}},"block_types":{"down":{"nesting_mode":"list","block":{"attributes":{"max_scale_down_percentage":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"headroom":{"nesting_mode":"list","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"resource_limits":{"nesting_mode":"list","block":{"attributes":{"max_memory_gib":{"type":"number","description_kind":"plain","optional":true},"max_vcpu":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"block_device_mappings":{"nesting_mode":"list","block":{"attributes":{"device_name":{"type":"string","description_kind":"plain","required":true},"no_device":{"type":"string","description_kind":"plain","optional":true},"virtual_name":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"ebs":{"nesting_mode":"list","block":{"attributes":{"delete_on_termination":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"encrypted":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"iops":{"type":"number","description_kind":"plain","optional":true},"kms_key_id":{"type":"string","description_kind":"plain","optional":true},"snapshot_id":{"type":"string","description_kind":"plain","optional":true},"throughput":{"type":"number","description_kind":"plain","optional":true},"volume_size":{"type":"number","description_kind":"plain","optional":true},"volume_type":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"dynamic_volume_size":{"nesting_mode":"list","block":{"attributes":{"base_size":{"type":"number","description_kind":"plain","required":true},"resource":{"type":"string","description_kind":"plain","required":true},"size_per_resource_unit":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"cluster_orientation":{"nesting_mode":"list","block":{"attributes":{"availability_vs_cost":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"filters":{"nesting_mode":"list","block":{"attributes":{"architectures":{"type":["set","string"],"description_kind":"plain","optional":true},"categories":{"type":["set","string"],"description_kind":"plain","optional":true},"disk_types":{"type":["set","string"],"description_kind":"plain","optional":true},"exclude_families":{"type":["set","string"],"description_kind":"plain","optional":true},"exclude_metal":{"type":"bool","description_kind":"plain","optional":true},"hypervisor":{"type":["set","string"],"description_kind":"plain","optional":true},"include_families":{"type":["set","string"],"description_kind":"plain","optional":true},"is_ena_supported":{"type":"string","description_kind":"plain","optional":true},"max_gpu":{"type":"number","description_kind":"plain","optional":true},"max_memory_gib":{"type":"number","description_kind":"plain","optional":true},"max_network_performance":{"type":"number","description_kind":"plain","optional":true},"max_vcpu":{"type":"number","description_kind":"plain","optional":true},"min_enis":{"type":"number","description_kind":"plain","optional":true},"min_gpu":{"type":"number","description_kind":"plain","optional":true},"min_memory_gib":{"type":"number","description_kind":"plain","optional":true},"min_network_performance":{"type":"number","description_kind":"plain","optional":true},"min_vcpu":{"type":"number","description_kind":"plain","optional":true},"root_device_types":{"type":["set","string"],"description_kind":"plain","optional":true},"virtualization_types":{"type":["set","string"],"description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"instance_metadata_options":{"nesting_mode":"list","block":{"attributes":{"http_put_response_hop_limit":{"type":"number","description_kind":"plain","optional":true},"http_tokens":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"logging":{"nesting_mode":"list","block":{"block_types":{"export":{"nesting_mode":"list","block":{"block_types":{"s3":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"optimize_images":{"nesting_mode":"list","block":{"attributes":{"perform_at":{"type":"string","description_kind":"plain","required":true},"should_optimize_ecs_ami":{"type":"bool","description_kind":"plain","required":true},"time_windows":{"type":["list","string"],"description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"scheduled_task":{"nesting_mode":"set","block":{"block_types":{"shutdown_hours":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"time_windows":{"type":["list","string"],"description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"tasks":{"nesting_mode":"list","block":{"attributes":{"cron_expression":{"type":"string","description_kind":"plain","required":true},"is_enabled":{"type":"bool","description_kind":"plain","required":true},"task_type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"tags":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"update_policy":{"nesting_mode":"list","block":{"attributes":{"auto_apply_tags":{"type":"bool","description_kind":"plain","optional":true},"conditioned_roll":{"type":"bool","description_kind":"plain","optional":true},"should_roll":{"type":"bool","description_kind":"plain","required":true}},"block_types":{"roll_config":{"nesting_mode":"list","block":{"attributes":{"batch_min_healthy_percentage":{"type":"number","description_kind":"plain","optional":true},"batch_size_percentage":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"spotinst_ocean_ecs_launch_spec":{"version":0,"block":{"attributes":{"iam_instance_profile":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"image_id":{"type":"string","description_kind":"plain","optional":true},"instance_types":{"type":["list","string"],"description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"ocean_id":{"type":"string","description_kind":"plain","required":true},"preferred_spot_types":{"type":["list","string"],"description_kind":"plain","optional":true},"restrict_scale_down":{"type":"bool","description_kind":"plain","optional":true},"security_group_ids":{"type":["list","string"],"description_kind":"plain","optional":true},"subnet_ids":{"type":["list","string"],"description_kind":"plain","optional":true},"user_data":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"attributes":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"autoscale_headrooms":{"nesting_mode":"set","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"}},"block_device_mappings":{"nesting_mode":"list","block":{"attributes":{"device_name":{"type":"string","description_kind":"plain","required":true},"no_device":{"type":"string","description_kind":"plain","optional":true},"virtual_name":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"ebs":{"nesting_mode":"list","block":{"attributes":{"delete_on_termination":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"encrypted":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"iops":{"type":"number","description_kind":"plain","optional":true},"kms_key_id":{"type":"string","description_kind":"plain","optional":true},"snapshot_id":{"type":"string","description_kind":"plain","optional":true},"throughput":{"type":"number","description_kind":"plain","optional":true},"volume_size":{"type":"number","description_kind":"plain","optional":true},"volume_type":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"dynamic_volume_size":{"nesting_mode":"list","block":{"attributes":{"base_size":{"type":"number","description_kind":"plain","required":true},"resource":{"type":"string","description_kind":"plain","required":true},"size_per_resource_unit":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"images":{"nesting_mode":"list","block":{"attributes":{"image_id":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"instance_metadata_options":{"nesting_mode":"list","block":{"attributes":{"http_put_response_hop_limit":{"type":"number","description_kind":"plain","optional":true},"http_tokens":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"scheduling_task":{"nesting_mode":"set","block":{"attributes":{"cron_expression":{"type":"string","description_kind":"plain","required":true},"is_enabled":{"type":"bool","description_kind":"plain","required":true},"task_type":{"type":"string","description_kind":"plain","required":true}},"block_types":{"task_headroom":{"nesting_mode":"set","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"strategy":{"nesting_mode":"set","block":{"attributes":{"spot_percentage":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"tags":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spotinst_ocean_gke_import":{"version":0,"block":{"attributes":{"blacklist":{"type":["list","string"],"description_kind":"plain","optional":true},"cluster_controller_id":{"type":"string","description_kind":"plain","computed":true},"cluster_name":{"type":"string","description_kind":"plain","required":true},"controller_cluster_id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"desired_capacity":{"type":"number","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"location":{"type":"string","description_kind":"plain","required":true},"max_size":{"type":"number","description_kind":"plain","optional":true},"min_size":{"type":"number","description_kind":"plain","optional":true},"root_volume_type":{"type":"string","description_kind":"plain","optional":true},"use_as_template_only":{"type":"bool","description_kind":"plain","optional":true},"whitelist":{"type":["list","string"],"description_kind":"plain","optional":true}},"block_types":{"autoscaler":{"nesting_mode":"list","block":{"attributes":{"auto_headroom_percentage":{"type":"number","description_kind":"plain","optional":true},"cooldown":{"type":"number","description_kind":"plain","optional":true},"enable_automatic_and_manual_headroom":{"type":"bool","description_kind":"plain","optional":true},"is_auto_config":{"type":"bool","description_kind":"plain","optional":true},"is_enabled":{"type":"bool","description_kind":"plain","optional":true}},"block_types":{"down":{"nesting_mode":"list","block":{"attributes":{"evaluation_periods":{"type":"number","description_kind":"plain","optional":true},"is_aggressive_scale_down_enabled":{"type":"bool","description_kind":"plain","optional":true},"max_scale_down_percentage":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"headroom":{"nesting_mode":"list","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"gpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"resource_limits":{"nesting_mode":"list","block":{"attributes":{"max_memory_gib":{"type":"number","description_kind":"plain","optional":true},"max_vcpu":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"backend_services":{"nesting_mode":"set","block":{"attributes":{"location_type":{"type":"string","description_kind":"plain","optional":true},"scheme":{"type":"string","description_kind":"plain","optional":true},"service_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"named_ports":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"ports":{"type":["list","string"],"description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"filters":{"nesting_mode":"list","block":{"attributes":{"exclude_families":{"type":["set","string"],"description_kind":"plain","optional":true},"include_families":{"type":["set","string"],"description_kind":"plain","optional":true},"max_memory_gib":{"type":"number","description_kind":"plain","optional":true},"max_vcpu":{"type":"number","description_kind":"plain","optional":true},"min_memory_gib":{"type":"number","description_kind":"plain","optional":true},"min_vcpu":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"scheduled_task":{"nesting_mode":"list","block":{"block_types":{"shutdown_hours":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"time_windows":{"type":["list","string"],"description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"tasks":{"nesting_mode":"list","block":{"attributes":{"cron_expression":{"type":"string","description_kind":"plain","required":true},"is_enabled":{"type":"bool","description_kind":"plain","required":true},"task_type":{"type":"string","description_kind":"plain","required":true}},"block_types":{"task_parameters":{"nesting_mode":"list","block":{"block_types":{"cluster_roll":{"nesting_mode":"list","block":{"attributes":{"batch_min_healthy_percentage":{"type":"number","description_kind":"plain","optional":true},"batch_size_percentage":{"type":"number","description_kind":"plain","optional":true},"comment":{"type":"string","description_kind":"plain","optional":true},"respect_pdb":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}}},"description_kind":"plain"}},"shielded_instance_config":{"nesting_mode":"list","block":{"attributes":{"enable_integrity_monitoring":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"enable_secure_boot":{"type":"bool","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"},"max_items":1},"strategy":{"nesting_mode":"list","block":{"attributes":{"draining_timeout":{"type":"number","description_kind":"plain","optional":true},"preemptible_percentage":{"type":"number","description_kind":"plain","optional":true},"provisioning_model":{"type":"string","description_kind":"plain","optional":true},"should_utilize_commitments":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"}},"update_policy":{"nesting_mode":"list","block":{"attributes":{"conditioned_roll":{"type":"bool","description_kind":"plain","optional":true},"should_roll":{"type":"bool","description_kind":"plain","required":true}},"block_types":{"roll_config":{"nesting_mode":"list","block":{"attributes":{"batch_min_healthy_percentage":{"type":"number","description_kind":"plain","optional":true},"batch_size_percentage":{"type":"number","description_kind":"plain","required":true},"launch_spec_ids":{"type":["list","string"],"description_kind":"plain","optional":true},"respect_pdb":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"spotinst_ocean_gke_launch_spec":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"instance_types":{"type":["list","string"],"description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","optional":true,"computed":true},"node_pool_name":{"type":"string","description_kind":"plain","optional":true},"ocean_id":{"type":"string","description_kind":"plain","required":true},"restrict_scale_down":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"root_volume_size":{"type":"number","description_kind":"plain","optional":true,"computed":true},"root_volume_type":{"type":"string","description_kind":"plain","optional":true,"computed":true},"service_account":{"type":"string","description_kind":"plain","optional":true,"computed":true},"source_image":{"type":"string","description_kind":"plain","optional":true,"computed":true},"tags":{"type":["list","string"],"description_kind":"plain","optional":true,"computed":true}},"block_types":{"autoscale_headrooms":{"nesting_mode":"set","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"gpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"}},"autoscale_headrooms_automatic":{"nesting_mode":"list","block":{"attributes":{"auto_headroom_percentage":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"create_options":{"nesting_mode":"list","block":{"attributes":{"initial_nodes":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"labels":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","optional":true,"computed":true},"value":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"metadata":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","optional":true,"computed":true},"value":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"network_interfaces":{"nesting_mode":"set","block":{"attributes":{"network":{"type":"string","description_kind":"plain","required":true},"project_id":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"access_configs":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"alias_ip_ranges":{"nesting_mode":"set","block":{"attributes":{"ip_cidr_range":{"type":"string","description_kind":"plain","required":true},"subnetwork_range_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"resource_limits":{"nesting_mode":"list","block":{"attributes":{"max_instance_count":{"type":"number","description_kind":"plain","optional":true},"min_instance_count":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"scheduling_task":{"nesting_mode":"set","block":{"attributes":{"cron_expression":{"type":"string","description_kind":"plain","required":true},"is_enabled":{"type":"bool","description_kind":"plain","required":true},"task_type":{"type":"string","description_kind":"plain","required":true}},"block_types":{"task_headroom":{"nesting_mode":"set","block":{"attributes":{"cpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"gpu_per_unit":{"type":"number","description_kind":"plain","optional":true},"memory_per_unit":{"type":"number","description_kind":"plain","optional":true},"num_of_units":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"shielded_instance_config":{"nesting_mode":"set","block":{"attributes":{"enable_integrity_monitoring":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"enable_secure_boot":{"type":"bool","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"},"max_items":1},"storage":{"nesting_mode":"set","block":{"attributes":{"local_ssd_count":{"type":"number","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"},"max_items":1},"strategy":{"nesting_mode":"list","block":{"attributes":{"preemptible_percentage":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"taints":{"nesting_mode":"set","block":{"attributes":{"effect":{"type":"string","description_kind":"plain","optional":true,"computed":true},"key":{"type":"string","description_kind":"plain","optional":true,"computed":true},"value":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"update_policy":{"nesting_mode":"list","block":{"attributes":{"should_roll":{"type":"bool","description_kind":"plain","required":true}},"block_types":{"roll_config":{"nesting_mode":"list","block":{"attributes":{"batch_size_percentage":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"spotinst_ocean_gke_launch_spec_import":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"node_pool_name":{"type":"string","description_kind":"plain","required":true},"ocean_id":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"spotinst_ocean_right_sizing_rule":{"version":0,"block":{"attributes":{"exclude_preliminary_recommendations":{"type":"bool","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ocean_id":{"type":"string","description_kind":"plain","optional":true},"restart_replicas":{"type":"string","description_kind":"plain","optional":true},"rule_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"attach_workloads":{"nesting_mode":"set","block":{"block_types":{"namespaces":{"nesting_mode":"set","block":{"attributes":{"namespace_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"labels":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"workloads":{"nesting_mode":"set","block":{"attributes":{"regex_name":{"type":"string","description_kind":"plain","optional":true},"workload_name":{"type":"string","description_kind":"plain","optional":true},"workload_type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"}},"detach_workloads":{"nesting_mode":"set","block":{"block_types":{"namespaces":{"nesting_mode":"set","block":{"attributes":{"namespace_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"labels":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"workloads":{"nesting_mode":"set","block":{"attributes":{"regex_name":{"type":"string","description_kind":"plain","optional":true},"workload_name":{"type":"string","description_kind":"plain","optional":true},"workload_type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"}},"recommendation_application_boundaries":{"nesting_mode":"list","block":{"attributes":{"cpu_max":{"type":"number","description_kind":"plain","optional":true},"cpu_min":{"type":"number","description_kind":"plain","optional":true},"memory_max":{"type":"number","description_kind":"plain","optional":true},"memory_min":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"recommendation_application_hpa":{"nesting_mode":"set","block":{"attributes":{"allow_hpa_recommendations":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"}},"recommendation_application_intervals":{"nesting_mode":"set","block":{"attributes":{"repetition_basis":{"type":"string","description_kind":"plain","required":true}},"block_types":{"monthly_repetition_basis":{"nesting_mode":"set","block":{"attributes":{"interval_months":{"type":["list","number"],"description_kind":"plain","required":true},"week_of_the_month":{"type":["list","string"],"description_kind":"plain","required":true}},"block_types":{"weekly_repetition_basis":{"nesting_mode":"set","block":{"attributes":{"interval_days":{"type":["list","string"],"description_kind":"plain","required":true},"interval_hours_end_time":{"type":"string","description_kind":"plain","required":true},"interval_hours_start_time":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"weekly_repetition_basis":{"nesting_mode":"set","block":{"attributes":{"interval_days":{"type":["list","string"],"description_kind":"plain","required":true},"interval_hours_end_time":{"type":"string","description_kind":"plain","required":true},"interval_hours_start_time":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"min_items":1},"recommendation_application_min_threshold":{"nesting_mode":"set","block":{"attributes":{"cpu_percentage":{"type":"number","description_kind":"plain","optional":true},"memory_percentage":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"recommendation_application_overhead_values":{"nesting_mode":"set","block":{"attributes":{"cpu_percentage":{"type":"number","description_kind":"plain","optional":true},"memory_percentage":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spotinst_ocean_spark":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ocean_cluster_id":{"type":"string","description_kind":"plain","required":true}},"block_types":{"compute":{"nesting_mode":"list","block":{"attributes":{"create_vngs":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"use_taints":{"type":"bool","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"},"max_items":1},"ingress":{"nesting_mode":"list","block":{"attributes":{"service_annotations":{"type":["map","string"],"description_kind":"plain","optional":true,"computed":true}},"block_types":{"controller":{"nesting_mode":"list","block":{"attributes":{"managed":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"custom_endpoint":{"nesting_mode":"list","block":{"attributes":{"address":{"type":"string","description_kind":"plain","optional":true},"enabled":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"load_balancer":{"nesting_mode":"list","block":{"attributes":{"managed":{"type":"bool","description_kind":"plain","optional":true},"service_annotations":{"type":["map","string"],"description_kind":"plain","optional":true},"target_group_arn":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"private_link":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description_kind":"plain","optional":true},"vpc_endpoint_service":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"log_collection":{"nesting_mode":"list","block":{"attributes":{"collect_app_logs":{"type":"bool","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"},"max_items":1},"spark":{"nesting_mode":"list","block":{"attributes":{"additional_app_namespaces":{"type":["set","string"],"description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"},"max_items":1},"webhook":{"nesting_mode":"list","block":{"attributes":{"host_network_ports":{"type":["list","number"],"description_kind":"plain","optional":true,"computed":true},"use_host_network":{"type":"bool","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"spotinst_ocean_spark_virtual_node_group":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ocean_spark_cluster_id":{"type":"string","description_kind":"plain","required":true},"virtual_node_group_id":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"spotinst_oceancd_rollout_spec":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"rollout_spec_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"failure_policy":{"nesting_mode":"list","block":{"attributes":{"action":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"spot_deployment":{"nesting_mode":"list","block":{"attributes":{"spot_deployment_cluster_id":{"type":"string","description_kind":"plain","optional":true},"spot_deployment_name":{"type":"string","description_kind":"plain","optional":true},"spot_deployment_namespace":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"spot_deployments":{"nesting_mode":"set","block":{"attributes":{"spot_deployments_cluster_id":{"type":"string","description_kind":"plain","optional":true},"spot_deployments_name":{"type":"string","description_kind":"plain","optional":true},"spot_deployments_namespace":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"strategy":{"nesting_mode":"list","block":{"attributes":{"strategy_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"args":{"nesting_mode":"set","block":{"attributes":{"arg_name":{"type":"string","description_kind":"plain","required":true},"arg_value":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"value_from":{"nesting_mode":"list","block":{"block_types":{"field_ref":{"nesting_mode":"list","block":{"attributes":{"field_path":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}}},"description_kind":"plain"},"min_items":1,"max_items":1},"traffic":{"nesting_mode":"list","block":{"attributes":{"canary_service":{"type":"string","description_kind":"plain","optional":true},"stable_service":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"alb":{"nesting_mode":"list","block":{"attributes":{"alb_annotation_prefix":{"type":"string","description_kind":"plain","optional":true},"alb_ingress":{"type":"string","description_kind":"plain","required":true},"alb_root_service":{"type":"string","description_kind":"plain","required":true},"service_port":{"type":"number","description_kind":"plain","required":true}},"block_types":{"stickiness_config":{"nesting_mode":"list","block":{"attributes":{"duration_seconds":{"type":"number","description_kind":"plain","optional":true},"enabled":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"ambassador":{"nesting_mode":"list","block":{"attributes":{"mappings":{"type":["list","string"],"description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"istio":{"nesting_mode":"list","block":{"block_types":{"destination_rule":{"nesting_mode":"list","block":{"attributes":{"canary_subset_name":{"type":"string","description_kind":"plain","required":true},"destination_rule_name":{"type":"string","description_kind":"plain","required":true},"stable_subset_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"virtual_services":{"nesting_mode":"set","block":{"attributes":{"virtual_service_name":{"type":"string","description_kind":"plain","required":true},"virtual_service_routes":{"type":["list","string"],"description_kind":"plain","optional":true}},"block_types":{"tls_routes":{"nesting_mode":"set","block":{"attributes":{"port":{"type":"number","description_kind":"plain","optional":true},"sni_hosts":{"type":["list","string"],"description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"max_items":1},"nginx":{"nesting_mode":"list","block":{"attributes":{"nginx_annotation_prefix":{"type":"string","description_kind":"plain","optional":true},"stable_ingress":{"type":"string","description_kind":"plain","required":true}},"block_types":{"additional_ingress_annotation":{"nesting_mode":"list","block":{"attributes":{"canary_by_header":{"type":"string","description_kind":"plain","optional":true},"key1":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"ping_pong":{"nesting_mode":"list","block":{"attributes":{"ping_service":{"type":"string","description_kind":"plain","required":true},"pong_service":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"smi":{"nesting_mode":"list","block":{"attributes":{"smi_root_service":{"type":"string","description_kind":"plain","optional":true},"traffic_split_name":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"spotinst_oceancd_strategy":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"strategy_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"canary":{"nesting_mode":"list","block":{"block_types":{"background_verification":{"nesting_mode":"list","block":{"attributes":{"template_names":{"type":["list","string"],"description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"steps":{"nesting_mode":"list","block":{"attributes":{"set_weight":{"type":"number","description_kind":"plain","optional":true},"step_name":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"pause":{"nesting_mode":"list","block":{"attributes":{"duration":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"set_canary_scale":{"nesting_mode":"list","block":{"attributes":{"match_traffic_weight":{"type":"bool","description_kind":"plain","optional":true},"replicas":{"type":"number","description_kind":"plain","optional":true},"weight":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"set_header_route":{"nesting_mode":"list","block":{"attributes":{"header_route_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"match":{"nesting_mode":"list","block":{"attributes":{"header_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"header_value":{"nesting_mode":"list","block":{"attributes":{"exact":{"type":"string","description_kind":"plain","optional":true},"prefix":{"type":"string","description_kind":"plain","optional":true},"regex":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"max_items":1},"verification":{"nesting_mode":"list","block":{"attributes":{"template_names":{"type":["list","string"],"description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"max_items":1},"rolling":{"nesting_mode":"list","block":{"block_types":{"steps":{"nesting_mode":"list","block":{"attributes":{"steps_name":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"pause":{"nesting_mode":"list","block":{"attributes":{"duration":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"verification":{"nesting_mode":"list","block":{"attributes":{"template_names":{"type":["list","string"],"description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"spotinst_oceancd_verification_provider":{"version":0,"block":{"attributes":{"cluster_ids":{"type":["list","string"],"description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"cloud_watch":{"nesting_mode":"list","block":{"attributes":{"iam_arn":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"datadog":{"nesting_mode":"list","block":{"attributes":{"address":{"type":"string","description_kind":"plain","required":true},"api_key":{"type":"string","description_kind":"plain","required":true},"app_key":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"jenkins":{"nesting_mode":"list","block":{"attributes":{"api_token":{"type":"string","description_kind":"plain","required":true},"base_url":{"type":"string","description_kind":"plain","required":true},"username":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"new_relic":{"nesting_mode":"list","block":{"attributes":{"account_id":{"type":"string","description_kind":"plain","required":true},"base_url_nerd_graph":{"type":"string","description_kind":"plain","optional":true},"base_url_rest":{"type":"string","description_kind":"plain","optional":true},"personal_api_key":{"type":"string","description_kind":"plain","required":true},"region":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"prometheus":{"nesting_mode":"list","block":{"attributes":{"address":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"spotinst_oceancd_verification_template":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"args":{"nesting_mode":"set","block":{"attributes":{"arg_name":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"value_from":{"nesting_mode":"list","block":{"block_types":{"secret_key_ref":{"nesting_mode":"list","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"metrics":{"nesting_mode":"set","block":{"attributes":{"consecutive_error_limit":{"type":"number","description_kind":"plain","optional":true},"count":{"type":"number","description_kind":"plain","optional":true},"dry_run":{"type":"bool","description_kind":"plain","optional":true},"failure_condition":{"type":"string","description_kind":"plain","optional":true},"failure_limit":{"type":"number","description_kind":"plain","optional":true},"initial_delay":{"type":"string","description_kind":"plain","optional":true},"interval":{"type":"string","description_kind":"plain","optional":true},"metrics_name":{"type":"string","description_kind":"plain","required":true},"success_condition":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"baseline":{"nesting_mode":"list","block":{"attributes":{"max_range":{"type":"number","description_kind":"plain","optional":true},"min_range":{"type":"number","description_kind":"plain","optional":true},"threshold":{"type":"string","description_kind":"plain","required":true}},"block_types":{"baseline_provider":{"nesting_mode":"list","block":{"block_types":{"datadog":{"nesting_mode":"list","block":{"attributes":{"datadog_query":{"type":"string","description_kind":"plain","required":true},"duration":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"new_relic":{"nesting_mode":"list","block":{"attributes":{"new_relic_query":{"type":"string","description_kind":"plain","required":true},"profile":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"prometheus":{"nesting_mode":"list","block":{"attributes":{"prometheus_query":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"max_items":1},"provider":{"nesting_mode":"list","block":{"block_types":{"cloud_watch":{"nesting_mode":"list","block":{"attributes":{"duration":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"metric_data_queries":{"nesting_mode":"set","block":{"attributes":{"expression":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","required":true},"label":{"type":"string","description_kind":"plain","optional":true},"period":{"type":"number","description_kind":"plain","optional":true},"return_data":{"type":"bool","description_kind":"plain","optional":true}},"block_types":{"metric_stat":{"nesting_mode":"list","block":{"attributes":{"metric_period":{"type":"number","description_kind":"plain","optional":true},"stat":{"type":"string","description_kind":"plain","optional":true},"unit":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"metric":{"nesting_mode":"list","block":{"attributes":{"metric_name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"dimensions":{"nesting_mode":"set","block":{"attributes":{"dimension_name":{"type":"string","description_kind":"plain","required":true},"dimension_value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"max_items":1},"datadog":{"nesting_mode":"list","block":{"attributes":{"datadog_query":{"type":"string","description_kind":"plain","optional":true},"duration":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"jenkins":{"nesting_mode":"list","block":{"attributes":{"jenkins_interval":{"type":"string","description_kind":"plain","required":true},"pipeline_name":{"type":"string","description_kind":"plain","required":true},"timeout":{"type":"string","description_kind":"plain","required":true},"tls_verification":{"type":"bool","description_kind":"plain","optional":true}},"block_types":{"jenkins_parameters":{"nesting_mode":"set","block":{"attributes":{"parameter_key":{"type":"string","description_kind":"plain","required":true},"parameter_value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"max_items":1},"job":{"nesting_mode":"list","block":{"block_types":{"spec":{"nesting_mode":"list","block":{"attributes":{"backoff_limit":{"type":"number","description_kind":"plain","optional":true}},"block_types":{"job_template":{"nesting_mode":"list","block":{"block_types":{"template_spec":{"nesting_mode":"list","block":{"attributes":{"restart_policy":{"type":"string","description_kind":"plain","required":true}},"block_types":{"containers":{"nesting_mode":"set","block":{"attributes":{"command":{"type":["list","string"],"description_kind":"plain","required":true},"container_name":{"type":"string","description_kind":"plain","required":true},"image":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"max_items":1},"new_relic":{"nesting_mode":"list","block":{"attributes":{"new_relic_query":{"type":"string","description_kind":"plain","required":true},"profile":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"prometheus":{"nesting_mode":"list","block":{"attributes":{"prometheus_query":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"web":{"nesting_mode":"list","block":{"attributes":{"body":{"type":"string","description_kind":"plain","optional":true},"insecure":{"type":"bool","description_kind":"plain","optional":true},"json_path":{"type":"string","description_kind":"plain","optional":true},"method":{"type":"string","description_kind":"plain","optional":true},"timeout_seconds":{"type":"number","description_kind":"plain","optional":true},"url":{"type":"string","description_kind":"plain","required":true}},"block_types":{"web_header":{"nesting_mode":"set","block":{"attributes":{"web_header_key":{"type":"string","description_kind":"plain","required":true},"web_header_value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"}}},"description_kind":"plain"}},"spotinst_organization_policy":{"version":0,"block":{"attributes":{"description":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"policy_content":{"nesting_mode":"set","block":{"block_types":{"statements":{"nesting_mode":"set","block":{"attributes":{"actions":{"type":["list","string"],"description_kind":"plain","required":true},"effect":{"type":"string","description_kind":"plain","required":true},"resources":{"type":["list","string"],"description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"}},"spotinst_organization_programmatic_user":{"version":0,"block":{"attributes":{"description":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true},"user_group_ids":{"type":["list","string"],"description_kind":"plain","optional":true}},"block_types":{"accounts":{"nesting_mode":"set","block":{"attributes":{"account_id":{"type":"string","description_kind":"plain","required":true},"account_role":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"policies":{"nesting_mode":"set","block":{"attributes":{"policy_account_ids":{"type":["list","string"],"description_kind":"plain","optional":true},"policy_id":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spotinst_organization_user":{"version":0,"block":{"attributes":{"email":{"type":"string","description_kind":"plain","required":true},"first_name":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"last_name":{"type":"string","description_kind":"plain","required":true},"password":{"type":"string","description_kind":"plain","optional":true,"computed":true},"role":{"type":"string","description_kind":"plain","optional":true},"user_group_ids":{"type":["list","string"],"description_kind":"plain","optional":true}},"block_types":{"policies":{"nesting_mode":"set","block":{"attributes":{"policy_account_ids":{"type":["list","string"],"description_kind":"plain","required":true},"policy_id":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spotinst_organization_user_group":{"version":0,"block":{"attributes":{"description":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true},"user_ids":{"type":["list","string"],"description_kind":"plain","optional":true}},"block_types":{"policies":{"nesting_mode":"set","block":{"attributes":{"account_ids":{"type":["list","string"],"description_kind":"plain","required":true},"policy_id":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spotinst_stateful_node_azure":{"version":0,"block":{"attributes":{"custom_data":{"type":"string","description_kind":"plain","optional":true,"computed":true},"data_disks_persistence_mode":{"type":"string","description_kind":"plain","optional":true,"computed":true},"description":{"type":"string","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"license_type":{"type":"string","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"os":{"type":"string","description_kind":"plain","required":true},"os_disk_persistence_mode":{"type":"string","description_kind":"plain","optional":true,"computed":true},"preferred_zone":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description_kind":"plain","required":true},"resource_group_name":{"type":"string","description_kind":"plain","required":true},"should_persist_data_disks":{"type":"bool","description_kind":"plain","required":true},"should_persist_network":{"type":"bool","description_kind":"plain","required":true},"should_persist_os_disk":{"type":"bool","description_kind":"plain","required":true},"should_persist_vm":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"shutdown_script":{"type":"string","description_kind":"plain","optional":true,"computed":true},"user_data":{"type":"string","description_kind":"plain","optional":true,"computed":true},"vm_name":{"type":"string","description_kind":"plain","optional":true},"vm_name_prefix":{"type":"string","description_kind":"plain","optional":true},"zones":{"type":["list","string"],"description_kind":"plain","optional":true}},"block_types":{"attach_data_disk":{"nesting_mode":"list","block":{"attributes":{"data_disk_name":{"type":"string","description_kind":"plain","required":true},"data_disk_resource_group_name":{"type":"string","description_kind":"plain","required":true},"lun":{"type":"number","description_kind":"plain","optional":true},"size_gb":{"type":"number","description_kind":"plain","required":true},"storage_account_type":{"type":"string","description_kind":"plain","required":true},"zone":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"boot_diagnostics":{"nesting_mode":"list","block":{"attributes":{"is_enabled":{"type":"bool","description_kind":"plain","optional":true,"computed":true},"storage_url":{"type":"string","description_kind":"plain","optional":true,"computed":true},"type":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"data_disk":{"nesting_mode":"list","block":{"attributes":{"lun":{"type":"number","description_kind":"plain","required":true},"size_gb":{"type":"number","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"delete":{"nesting_mode":"list","block":{"attributes":{"disk_should_deallocate":{"type":"bool","description_kind":"plain","required":true},"disk_ttl_in_hours":{"type":"number","description_kind":"plain","optional":true},"network_should_deallocate":{"type":"bool","description_kind":"plain","required":true},"network_ttl_in_hours":{"type":"number","description_kind":"plain","optional":true},"public_ip_should_deallocate":{"type":"bool","description_kind":"plain","required":true},"public_ip_ttl_in_hours":{"type":"number","description_kind":"plain","optional":true},"should_deregister_from_lb":{"type":"bool","description_kind":"plain","optional":true},"should_terminate_vm":{"type":"bool","description_kind":"plain","required":true},"snapshot_should_deallocate":{"type":"bool","description_kind":"plain","required":true},"snapshot_ttl_in_hours":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"detach_data_disk":{"nesting_mode":"list","block":{"attributes":{"data_disk_name":{"type":"string","description_kind":"plain","required":true},"data_disk_resource_group_name":{"type":"string","description_kind":"plain","required":true},"should_deallocate":{"type":"bool","description_kind":"plain","required":true},"ttl_in_hours":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"extension":{"nesting_mode":"set","block":{"attributes":{"api_version":{"type":"string","description_kind":"plain","required":true},"minor_version_auto_upgrade":{"type":"bool","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"protected_settings":{"type":["map","string"],"description_kind":"plain","optional":true,"computed":true},"public_settings":{"type":["map","string"],"description_kind":"plain","optional":true,"computed":true},"publisher":{"type":"string","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"health":{"nesting_mode":"list","block":{"attributes":{"auto_healing":{"type":"bool","description_kind":"plain","required":true},"grace_period":{"type":"number","description_kind":"plain","optional":true,"computed":true},"health_check_types":{"type":["list","string"],"description_kind":"plain","required":true},"unhealthy_duration":{"type":"number","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"},"max_items":1},"image":{"nesting_mode":"list","block":{"block_types":{"custom_image":{"nesting_mode":"list","block":{"attributes":{"custom_image_resource_group_name":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"gallery":{"nesting_mode":"list","block":{"attributes":{"gallery_name":{"type":"string","description_kind":"plain","required":true},"gallery_resource_group_name":{"type":"string","description_kind":"plain","required":true},"image_name":{"type":"string","description_kind":"plain","required":true},"spot_account_id":{"type":"string","description_kind":"plain","optional":true},"version_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"marketplace_image":{"nesting_mode":"list","block":{"attributes":{"offer":{"type":"string","description_kind":"plain","required":true},"publisher":{"type":"string","description_kind":"plain","required":true},"sku":{"type":"string","description_kind":"plain","required":true},"version":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"import_vm":{"nesting_mode":"list","block":{"attributes":{"draining_timeout":{"type":"number","description_kind":"plain","optional":true},"original_vm_name":{"type":"string","description_kind":"plain","required":true},"resource_group_name":{"type":"string","description_kind":"plain","required":true},"resources_retention_time":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"load_balancer":{"nesting_mode":"set","block":{"attributes":{"backend_pool_names":{"type":["list","string"],"description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"resource_group_name":{"type":"string","description_kind":"plain","required":true},"sku":{"type":"string","description_kind":"plain","optional":true,"computed":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"login":{"nesting_mode":"set","block":{"attributes":{"password":{"type":"string","description_kind":"plain","optional":true},"ssh_public_key":{"type":"string","description_kind":"plain","optional":true},"user_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"managed_service_identities":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"resource_group_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"network":{"nesting_mode":"list","block":{"attributes":{"network_resource_group_name":{"type":"string","description_kind":"plain","required":true},"virtual_network_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"network_interface":{"nesting_mode":"list","block":{"attributes":{"assign_public_ip":{"type":"bool","description_kind":"plain","optional":true},"enable_ip_forwarding":{"type":"bool","description_kind":"plain","optional":true},"is_primary":{"type":"bool","description_kind":"plain","required":true},"private_ip_addresses":{"type":["list","string"],"description_kind":"plain","optional":true},"public_ip_sku":{"type":"string","description_kind":"plain","optional":true},"subnet_name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"additional_ip_configurations":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"private_ip_address_version":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"application_security_groups":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"network_resource_group_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"network_security_group":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","optional":true},"network_resource_group_name":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"public_ips":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"network_resource_group_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"},"max_items":1},"os_disk":{"nesting_mode":"set","block":{"attributes":{"caching":{"type":"string","description_kind":"plain","optional":true},"size_gb":{"type":"number","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"proximity_placement_groups":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"resource_group_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"scheduling_task":{"nesting_mode":"set","block":{"attributes":{"cron_expression":{"type":"string","description_kind":"plain","required":true},"is_enabled":{"type":"bool","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"secret":{"nesting_mode":"set","block":{"block_types":{"source_vault":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"resource_group_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1},"vault_certificates":{"nesting_mode":"list","block":{"attributes":{"certificate_store":{"type":"string","description_kind":"plain","optional":true},"certificate_url":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"}},"security":{"nesting_mode":"list","block":{"attributes":{"confidential_os_disk_encryption":{"type":"bool","description_kind":"plain","optional":true},"encryption_at_host":{"type":"bool","description_kind":"plain","optional":true},"secure_boot_enabled":{"type":"bool","description_kind":"plain","optional":true},"security_type":{"type":"string","description_kind":"plain","optional":true},"vtpm_enabled":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"signal":{"nesting_mode":"list","block":{"attributes":{"timeout":{"type":"number","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"strategy":{"nesting_mode":"list","block":{"attributes":{"availability_vs_cost":{"type":"number","description_kind":"plain","optional":true},"draining_timeout":{"type":"number","description_kind":"plain","optional":true,"computed":true},"fallback_to_on_demand":{"type":"bool","description_kind":"plain","required":true},"od_windows":{"type":["list","string"],"description_kind":"plain","optional":true},"optimization_windows":{"type":["list","string"],"description_kind":"plain","optional":true},"preferred_life_cycle":{"type":"string","description_kind":"plain","optional":true,"computed":true},"vm_admins":{"type":["list","string"],"description_kind":"plain","optional":true}},"block_types":{"capacity_reservation":{"nesting_mode":"set","block":{"attributes":{"should_utilize":{"type":"bool","description_kind":"plain","required":true},"utilization_strategy":{"type":"string","description_kind":"plain","required":true}},"block_types":{"capacity_reservation_groups":{"nesting_mode":"set","block":{"attributes":{"crg_name":{"type":"string","description_kind":"plain","required":true},"crg_resource_group_name":{"type":"string","description_kind":"plain","required":true},"crg_should_prioritize":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"revert_to_spot":{"nesting_mode":"list","block":{"attributes":{"perform_at":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"},"min_items":1,"max_items":1},"tag":{"nesting_mode":"set","block":{"attributes":{"tag_key":{"type":"string","description_kind":"plain","required":true},"tag_value":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"update_state":{"nesting_mode":"list","block":{"attributes":{"state":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"vm_sizes":{"nesting_mode":"list","block":{"attributes":{"od_sizes":{"type":["list","string"],"description_kind":"plain","required":true},"preferred_spot_sizes":{"type":["list","string"],"description_kind":"plain","optional":true},"spot_sizes":{"type":["list","string"],"description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1}},"description_kind":"plain"}},"spotinst_subscription":{"version":0,"block":{"attributes":{"endpoint":{"type":"string","description_kind":"plain","required":true},"event_type":{"type":"string","description_kind":"plain","required":true},"format":{"type":["map","string"],"description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"protocol":{"type":"string","description_kind":"plain","required":true},"resource_id":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}}}}} diff --git a/examples-generated/oceanawslaunchspec/v1alpha1/oceanawslaunchspec.yaml b/examples-generated/oceanawslaunchspec/v1alpha1/oceanawslaunchspec.yaml index a0f6b61..6783a0b 100644 --- a/examples-generated/oceanawslaunchspec/v1alpha1/oceanawslaunchspec.yaml +++ b/examples-generated/oceanawslaunchspec/v1alpha1/oceanawslaunchspec.yaml @@ -65,6 +65,7 @@ spec: preferredSpotTypes: - m4.large - m4.xlarge + reservedEnis: 1 resourceLimits: - maxInstanceCount: 4 minInstanceCount: 0 diff --git a/examples-generated/oceangke/v1alpha1/oceangke.yaml b/examples-generated/oceangke/v1alpha1/oceangke.yaml new file mode 100644 index 0000000..d2413ec --- /dev/null +++ b/examples-generated/oceangke/v1alpha1/oceangke.yaml @@ -0,0 +1,43 @@ +apiVersion: oceangke.spot.upbound.io/v1alpha1 +kind: OceanGke +metadata: + annotations: + meta.upbound.io/example-id: oceangke/v1alpha1/oceangke + labels: + testing.upbound.io/example-name: example + name: example +spec: + forProvider: + backendServices: + - locationType: regional + namedPorts: + - name: http + ports: + - 80 + - 8080 + scheme: INTERNAL + serviceName: example-backend-service + clusterName: example-cluster-name + controllerClusterId: example-controller-123124 + desiredCapacity: 0 + filters: + - excludeFamilies: + - n2 + includeFamilies: + - c2 + - c3 + maxMemoryGib: 16 + maxVcpu: 16 + minMemoryGib: 8 + minVcpu: 2 + location: us-central1-a + maxSize: 2 + minSize: 0 + rootVolumeType: pd-ssd + shieldedInstanceConfig: + - enableIntegrityMonitoring: true + enableSecureBoot: true + useAsTemplateOnly: false + whitelist: + - n1-standard-1 + - n1-standard-2 diff --git a/examples-generated/oceangkevng/v1alpha1/oceangkevng.yaml b/examples-generated/oceangkevng/v1alpha1/oceangkevng.yaml new file mode 100644 index 0000000..1e4d5dd --- /dev/null +++ b/examples-generated/oceangkevng/v1alpha1/oceangkevng.yaml @@ -0,0 +1,70 @@ +apiVersion: oceangkevng.spot.upbound.io/v1alpha1 +kind: OceanGkeVng +metadata: + annotations: + meta.upbound.io/example-id: oceangkevng/v1alpha1/oceangkevng + labels: + testing.upbound.io/example-name: example + name: example +spec: + forProvider: + autoscaleHeadrooms: + - cpuPerUnit: 1000 + gpuPerUnit: 0 + memoryPerUnit: 2048 + numOfUnits: 5 + autoscaleHeadroomsAutomatic: + - autoHeadroomPercentage: 5 + createOptions: + - initialNodes: 1 + instanceTypes: + - n1-standard-1, n1-standard-2 + labels: + - key: labelKey + value: labelVal + metadata: + - key: gci-update-strategy + value: update_disabled + name: specialty.nodes.spotk8s.com + networkInterfaces: + - accessConfigs: + - name: external-nat-vng + type: ONE_TO_ONE_NAT + aliasIpRanges: + - ipCidrRange: /25 + subnetworkRangeName: gke-test-native-vpc-pods-123456-vng + network: test-vng-network + projectId: test-vng-network-project + nodePoolName: default-pool + oceanId: o-123456 + resourceLimits: + - maxInstanceCount: 3 + minInstanceCount: 0 + restrictScaleDown: true + rootVolumeSize: 10 + rootVolumeType: pd-standard + schedulingTask: + - cronExpression: 0 1 * * * + isEnabled: true + taskHeadroom: + - cpuPerUnit: 1000 + gpuPerUnit: 0 + memoryPerUnit: 2048 + numOfUnits: 5 + taskType: manualHeadroomUpdate + serviceAccount: default + shieldedInstanceConfig: + - enableIntegrityMonitoring: true + enableSecureBoot: false + sourceImage: image + storage: + - localSsdCount: 5 + strategy: + - preemptiblePercentage: 30 + tags: + - tag1 + - tag2 + taints: + - effect: taintEffect + key: taintKey + value: taintVal diff --git a/examples/oceangke/oceangke.yaml b/examples/oceangke/oceangke.yaml new file mode 100644 index 0000000..7512400 --- /dev/null +++ b/examples/oceangke/oceangke.yaml @@ -0,0 +1,26 @@ +apiVersion: oceangke.spot.upbound.io/v1alpha1 +kind: OceanGke +metadata: + annotations: + meta.upbound.io/example-id: oceangke/v1alpha1/oceangke + labels: + testing.upbound.io/example-name: example + name: example +spec: + forProvider: + clusterName: clusterName + controllerClusterId: controllerClusterId + location: us-east1-b + minSize: 1 + desiredCapacity: 1 + maxSize: 2 + rootVolumeType: pd-ssd + shieldedInstanceConfig: + - enableIntegrityMonitoring: true + enableSecureBoot: true + useAsTemplateOnly: false + whitelist: + - n1-standard-1 + - n1-standard-2 + providerConfigRef: + name: default \ No newline at end of file diff --git a/examples/oceangkevng/oceangkevng.yaml b/examples/oceangkevng/oceangkevng.yaml new file mode 100644 index 0000000..3cbe10f --- /dev/null +++ b/examples/oceangkevng/oceangkevng.yaml @@ -0,0 +1,25 @@ +apiVersion: oceangkevng.spot.upbound.io/v1alpha1 +kind: OceanGkeVng +metadata: + annotations: + meta.upbound.io/example-id: oceangkevng/v1alpha1/oceangkevng + labels: + testing.upbound.io/example-name: example + name: example +spec: + forProvider: + name: test-vng + oceanId: o-123456 + resourceLimits: + - maxInstanceCount: 2 + minInstanceCount: 1 + restrictScaleDown: true + rootVolumeSize: 10 + metadata: + - key: gci-update-strategy + value: update_disabled + sourceImage: "image" + strategy: + - preemptiblePercentage: 30 + providerConfigRef: + name: default \ No newline at end of file diff --git a/internal/controller/oceangke/oceangke/zz_controller.go b/internal/controller/oceangke/oceangke/zz_controller.go new file mode 100755 index 0000000..ac032f9 --- /dev/null +++ b/internal/controller/oceangke/oceangke/zz_controller.go @@ -0,0 +1,87 @@ +// SPDX-FileCopyrightText: 2024 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +// Code generated by upjet. DO NOT EDIT. + +package oceangke + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/spotinst/crossplane-provider-spot/apis/oceangke/v1alpha1" + features "github.com/spotinst/crossplane-provider-spot/internal/features" +) + +// Setup adds a controller that reconciles OceanGke managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.OceanGke_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.OceanGke_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.OceanGke_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["spotinst_ocean_gke_import"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } + + // register webhooks for the kind v1alpha1.OceanGke + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.OceanGke{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.OceanGke") + } + } + + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1alpha1.OceanGkeList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1alpha1.OceanGkeList") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.OceanGke_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.OceanGke{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/oceangkevng/oceangkevng/zz_controller.go b/internal/controller/oceangkevng/oceangkevng/zz_controller.go new file mode 100755 index 0000000..ee57222 --- /dev/null +++ b/internal/controller/oceangkevng/oceangkevng/zz_controller.go @@ -0,0 +1,87 @@ +// SPDX-FileCopyrightText: 2024 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + +// Code generated by upjet. DO NOT EDIT. + +package oceangkevng + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/spotinst/crossplane-provider-spot/apis/oceangkevng/v1alpha1" + features "github.com/spotinst/crossplane-provider-spot/internal/features" +) + +// Setup adds a controller that reconciles OceanGkeVng managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.OceanGkeVng_GroupVersionKind.String()) + var initializers managed.InitializerChain + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) + } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.OceanGkeVng_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.OceanGkeVng_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["spotinst_ocean_gke_launch_spec"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), + )), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(terraform.NewWorkspaceFinalizer(o.WorkspaceStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), + managed.WithTimeout(3 * time.Minute), + managed.WithInitializers(initializers), + managed.WithConnectionPublishers(cps...), + managed.WithPollInterval(o.PollInterval), + } + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { + opts = append(opts, managed.WithManagementPolicies()) + } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } + + // register webhooks for the kind v1alpha1.OceanGkeVng + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1alpha1.OceanGkeVng{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.OceanGkeVng") + } + } + + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1alpha1.OceanGkeVngList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1alpha1.OceanGkeVngList") + } + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.OceanGkeVng_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.OceanGkeVng{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/zz_setup.go b/internal/controller/zz_setup.go index 4f410b2..fd880d8 100755 --- a/internal/controller/zz_setup.go +++ b/internal/controller/zz_setup.go @@ -13,6 +13,8 @@ import ( oceanaksvng "github.com/spotinst/crossplane-provider-spot/internal/controller/oceanaksvng/oceanaksvng" oceanaws "github.com/spotinst/crossplane-provider-spot/internal/controller/oceanaws/oceanaws" oceanawslaunchspec "github.com/spotinst/crossplane-provider-spot/internal/controller/oceanawslaunchspec/oceanawslaunchspec" + oceangke "github.com/spotinst/crossplane-provider-spot/internal/controller/oceangke/oceangke" + oceangkevng "github.com/spotinst/crossplane-provider-spot/internal/controller/oceangkevng/oceangkevng" oceanrightsizingrule "github.com/spotinst/crossplane-provider-spot/internal/controller/oceanrightsizingrule/oceanrightsizingrule" providerconfig "github.com/spotinst/crossplane-provider-spot/internal/controller/providerconfig" ) @@ -25,6 +27,8 @@ func Setup(mgr ctrl.Manager, o controller.Options) error { oceanaksvng.Setup, oceanaws.Setup, oceanawslaunchspec.Setup, + oceangke.Setup, + oceangkevng.Setup, oceanrightsizingrule.Setup, providerconfig.Setup, } { diff --git a/package/crds/oceanaws.spot.upbound.io_oceanaws.yaml b/package/crds/oceanaws.spot.upbound.io_oceanaws.yaml index cb5a013..ed0d64d 100644 --- a/package/crds/oceanaws.spot.upbound.io_oceanaws.yaml +++ b/package/crds/oceanaws.spot.upbound.io_oceanaws.yaml @@ -531,6 +531,10 @@ spec: region: description: The region the cluster will run in. type: string + reservedEnis: + description: Specifies the count of ENIs to reserve per instance + type for scaling purposes. + type: number resourceTagSpecification: description: Specify which resources should be tagged with Virtual Node Group tags or Ocean tags. If tags are set on the VNG, the @@ -1288,6 +1292,10 @@ spec: region: description: The region the cluster will run in. type: string + reservedEnis: + description: Specifies the count of ENIs to reserve per instance + type for scaling purposes. + type: number resourceTagSpecification: description: Specify which resources should be tagged with Virtual Node Group tags or Ocean tags. If tags are set on the VNG, the @@ -2221,6 +2229,10 @@ spec: region: description: The region the cluster will run in. type: string + reservedEnis: + description: Specifies the count of ENIs to reserve per instance + type for scaling purposes. + type: number resourceTagSpecification: description: Specify which resources should be tagged with Virtual Node Group tags or Ocean tags. If tags are set on the VNG, the diff --git a/package/crds/oceanawslaunchspec.spot.upbound.io_oceanawslaunchspecs.yaml b/package/crds/oceanawslaunchspec.spot.upbound.io_oceanawslaunchspecs.yaml index 048ea39..cee99bc 100644 --- a/package/crds/oceanawslaunchspec.spot.upbound.io_oceanawslaunchspecs.yaml +++ b/package/crds/oceanawslaunchspec.spot.upbound.io_oceanawslaunchspecs.yaml @@ -440,6 +440,10 @@ spec: items: type: string type: array + reservedEnis: + description: Specifies the count of ENIs to reserve per instance + type for scaling purposes. + type: number resourceLimits: items: properties: @@ -999,6 +1003,10 @@ spec: items: type: string type: array + reservedEnis: + description: Specifies the count of ENIs to reserve per instance + type for scaling purposes. + type: number resourceLimits: items: properties: @@ -1725,6 +1733,10 @@ spec: items: type: string type: array + reservedEnis: + description: Specifies the count of ENIs to reserve per instance + type for scaling purposes. + type: number resourceLimits: items: properties: diff --git a/package/crds/oceangke.spot.upbound.io_oceangkes.yaml b/package/crds/oceangke.spot.upbound.io_oceangkes.yaml new file mode 100644 index 0000000..92009c5 --- /dev/null +++ b/package/crds/oceangke.spot.upbound.io_oceangkes.yaml @@ -0,0 +1,1431 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.14.0 + name: oceangkes.oceangke.spot.upbound.io +spec: + group: oceangke.spot.upbound.io + names: + categories: + - crossplane + - managed + - spot + kind: OceanGke + listKind: OceanGkeList + plural: oceangkes + singular: oceangke + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: OceanGke is the Schema for the OceanGkes API. Provides a Spotinst + Ocean resource using gke. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: OceanGkeSpec defines the desired state of OceanGke + properties: + deletionPolicy: + default: Delete + description: |- + DeletionPolicy specifies what will happen to the underlying external + when this managed resource is deleted - either "Delete" or "Orphan" the + external resource. + This field is planned to be deprecated in favor of the ManagementPolicies + field in a future release. Currently, both could be set independently and + non-default values would be honored if the feature flag is enabled. + See the design doc for more information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + autoscaler: + description: The Ocean Kubernetes Autoscaler object. + items: + properties: + autoHeadroomPercentage: + description: Optionally set the auto headroom percentage, + set a number between 0-200 to control the headroom % from + the cluster. Relevant when isAutoConfig=true. + type: number + cooldown: + description: Cooldown period between scaling actions. + type: number + down: + description: Auto Scaling scale down operations. + items: + properties: + evaluationPeriods: + description: The number of evaluation periods that + should accumulate before a scale down action takes + place. + type: number + isAggressiveScaleDownEnabled: + description: When set to 'true', the Aggressive Scale + Down feature is enabled. + type: boolean + maxScaleDownPercentage: + description: Would represent the maximum % to scale-down. + Number between 1-100. + type: number + type: object + type: array + enableAutomaticAndManualHeadroom: + description: enables automatic and manual headroom to work + in parallel. When set to false, automatic headroom overrides + all other headroom definitions manually configured, whether + they are at cluster or VNG level. + type: boolean + headroom: + description: Spare resource capacity management enabling + fast assignment of Pods without waiting for new resources + to launch. + items: + properties: + cpuPerUnit: + description: Optionally configure the number of CPUs + to allocate the headroom. CPUs are denoted in millicores, + where 1000 millicores = 1 vCPU. + type: number + gpuPerUnit: + description: How much GPU allocate for headroom unit. + type: number + memoryPerUnit: + description: Optionally configure the amount of memory + (MiB) to allocate the headroom. + type: number + numOfUnits: + description: The number of units to retain as headroom, + where each unit has the defined headroom CPU and + memory. + type: number + type: object + type: array + isAutoConfig: + description: Automatically configure and optimize headroom + resources. + type: boolean + isEnabled: + description: |- + Flag to enable / disable the shutdown hours. + Example: true + type: boolean + resourceLimits: + description: Optionally set upper and lower bounds on the + resource usage of the cluster. + items: + properties: + maxMemoryGib: + description: Maximum amount of Memory (GiB). + type: number + maxVcpu: + description: Maximum number of vcpus available. + type: number + type: object + type: array + type: object + type: array + backendServices: + description: Describes the backend service configurations. + items: + properties: + locationType: + description: 'Sets which location the backend services will + be active. Valid values: regional, global.' + type: string + namedPorts: + description: A list of ports. + items: + properties: + name: + type: string + ports: + description: A list of ports. + items: + type: string + type: array + type: object + type: array + scheme: + description: 'Use when location_type is regional. Set the + traffic for the backend service to either between the + instances in the vpc or to traffic from the internet. + Valid values: INTERNAL, EXTERNAL.' + type: string + serviceName: + description: The name of the backend service. + type: string + type: object + type: array + blacklist: + description: Instance types to avoid launching in the Ocean cluster. + Cannot be configured if whitelist list is configured. + items: + type: string + type: array + clusterName: + description: The GKE cluster name. + type: string + controllerClusterId: + description: A unique identifier used for connecting the Ocean + SaaS platform and the Kubernetes cluster. Typically, the cluster + name is used as its identifier. + type: string + desiredCapacity: + description: The number of instances to launch and maintain in + the cluster. + type: number + filters: + description: List of filters. The Instance types that match with + all filters compose the Ocean's whitelist parameter. Cannot + be configured together with whitelist/blacklist. + items: + properties: + excludeFamilies: + description: 'Types belonging to a family from the ExcludeFamilies + will not be available for scaling (asterisk wildcard is + also supported). For example, C* will exclude instance + types from these families: c5, c4, c4a, etc.' + items: + type: string + type: array + x-kubernetes-list-type: set + includeFamilies: + description: 'Types belonging to a family from the IncludeFamilies + will be available for scaling (asterisk wildcard is also + supported). For example, C* will include instance types + from these families: c5, c4, c4a, etc.' + items: + type: string + type: array + x-kubernetes-list-type: set + maxMemoryGib: + description: Maximum amount of Memory (GiB). + type: number + maxVcpu: + description: Maximum number of vcpus available. + type: number + minMemoryGib: + description: Minimum amount of Memory (GiB). + type: number + minVcpu: + description: Minimum number of vcpus available. + type: number + type: object + type: array + location: + description: The zone the master cluster is located in. + type: string + maxSize: + description: The upper limit of instances the cluster can scale + up to. + type: number + minSize: + description: The lower limit of instances the cluster can scale + down to. + type: number + rootVolumeType: + description: The root volume disk type. + type: string + scheduledTask: + description: Set scheduling object. + items: + properties: + shutdownHours: + description: Set shutdown hours for cluster object. + items: + properties: + isEnabled: + description: |- + Flag to enable / disable the shutdown hours. + Example: true + type: boolean + timeWindows: + description: |- + Set time windows for shutdown hours. specify a list of 'timeWindows' with at least one time window Each string is in the format of - ddd:hh:mm-ddd:hh:mm ddd = day of week = Sun | Mon | Tue | Wed | Thu | Fri | Sat hh = hour 24 = 0 -23 mm = minute = 0 - 59. Time windows should not overlap. required on cluster.scheduling.isEnabled = true. API Times are in UTC + Example: Fri:15:30-Wed:14:30 + items: + type: string + type: array + type: object + type: array + tasks: + description: The scheduling tasks for the cluster. + items: + properties: + cronExpression: + description: |- + A valid cron expression. For example : " * * * * * ".The cron is running in UTC time zone and is in Unix cron format Cron Expression Validator Script. Only one of ‘frequency’ or ‘cronExpression’ should be used at a time. Required for cluster.scheduling.tasks object + Example: 0 1 * * * + type: string + isEnabled: + description: |- + Flag to enable / disable the shutdown hours. + Example: true + type: boolean + taskParameters: + description: The scheduling parameters for the cluster. + items: + properties: + clusterRoll: + description: The cluster roll parameters for + the cluster. + items: + properties: + batchMinHealthyPercentage: + description: Indicates the threshold of + minimum healthy instances in single + batch. If the amount of healthy instances + in single batch is under the threshold, + the cluster roll will fail. If exists, + the parameter value will be in range + of 1-100. In case of null as value, + the default value in the backend will + be 50%. Value of param should represent + the number in percentage (%) of the + batch. + type: number + batchSizePercentage: + description: |- + Value in % to set size of batch in roll. Valid values are 0-100 + Example: 20. + type: number + comment: + description: Add a comment description + for the roll. The comment is limited + to 256 chars. + type: string + respectPdb: + description: During the roll, if the parameter + is set to true we honor PDB during the + instance replacement. + type: boolean + type: object + type: array + type: object + type: array + taskType: + description: 'Valid values: "clusterRoll". Required + for cluster.scheduling.tasks object.' + type: string + type: object + type: array + type: object + type: array + shieldedInstanceConfig: + description: The Ocean shielded instance configuration object. + items: + properties: + enableIntegrityMonitoring: + description: Boolean. Enable the integrity monitoring parameter + on the GCP instances. + type: boolean + enableSecureBoot: + description: Boolean. Enable the secure boot parameter on + the GCP instances. + type: boolean + type: object + type: array + strategy: + description: Strategy object. + items: + properties: + drainingTimeout: + description: The draining timeout (in seconds) before terminating + the instance. + type: number + preemptiblePercentage: + description: Defines the desired preemptible percentage + for the cluster. + type: number + provisioningModel: + description: 'Define the provisioning model of the launched + instances. Valid values: SPOT, PREEMPTIBLE.' + type: string + shouldUtilizeCommitments: + description: Enable committed use discounts utilization. + type: boolean + type: object + type: array + updatePolicy: + items: + properties: + conditionedRoll: + description: Spot will perform a cluster Roll in accordance + with a relevant modification of the cluster’s settings. + When set to true , only specific changes in the cluster’s + configuration will trigger a cluster roll (such as AMI, + Key Pair, user data, instance types, load balancers, etc). + type: boolean + rollConfig: + description: Holds the roll configuration. + items: + properties: + batchMinHealthyPercentage: + description: Indicates the threshold of minimum healthy + instances in single batch. If the amount of healthy + instances in single batch is under the threshold, + the cluster roll will fail. If exists, the parameter + value will be in range of 1-100. In case of null + as value, the default value in the backend will + be 50%. Value of param should represent the number + in percentage (%) of the batch. + type: number + batchSizePercentage: + description: |- + Value in % to set size of batch in roll. Valid values are 0-100 + Example: 20. + type: number + launchSpecIds: + description: List of Virtual Node Group identifiers + to be rolled. + items: + type: string + type: array + respectPdb: + description: During the roll, if the parameter is + set to true we honor PDB during the instance replacement. + type: boolean + type: object + type: array + shouldRoll: + description: Enables the roll. + type: boolean + type: object + type: array + useAsTemplateOnly: + description: launch specification defined on the Ocean object + will function only as a template for virtual node groups. + type: boolean + whitelist: + description: Instance types allowed in the Ocean cluster. Cannot + be configured if blacklist list is configured. + items: + type: string + type: array + type: object + initProvider: + description: |- + THIS IS A BETA FIELD. It will be honored + unless the Management Policies feature flag is disabled. + InitProvider holds the same fields as ForProvider, with the exception + of Identifier and other resource reference fields. The fields that are + in InitProvider are merged into ForProvider when the resource is created. + The same fields are also added to the terraform ignore_changes hook, to + avoid updating them after creation. This is useful for fields that are + required on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, like an + autoscaler. + properties: + autoscaler: + description: The Ocean Kubernetes Autoscaler object. + items: + properties: + autoHeadroomPercentage: + description: Optionally set the auto headroom percentage, + set a number between 0-200 to control the headroom % from + the cluster. Relevant when isAutoConfig=true. + type: number + cooldown: + description: Cooldown period between scaling actions. + type: number + down: + description: Auto Scaling scale down operations. + items: + properties: + evaluationPeriods: + description: The number of evaluation periods that + should accumulate before a scale down action takes + place. + type: number + isAggressiveScaleDownEnabled: + description: When set to 'true', the Aggressive Scale + Down feature is enabled. + type: boolean + maxScaleDownPercentage: + description: Would represent the maximum % to scale-down. + Number between 1-100. + type: number + type: object + type: array + enableAutomaticAndManualHeadroom: + description: enables automatic and manual headroom to work + in parallel. When set to false, automatic headroom overrides + all other headroom definitions manually configured, whether + they are at cluster or VNG level. + type: boolean + headroom: + description: Spare resource capacity management enabling + fast assignment of Pods without waiting for new resources + to launch. + items: + properties: + cpuPerUnit: + description: Optionally configure the number of CPUs + to allocate the headroom. CPUs are denoted in millicores, + where 1000 millicores = 1 vCPU. + type: number + gpuPerUnit: + description: How much GPU allocate for headroom unit. + type: number + memoryPerUnit: + description: Optionally configure the amount of memory + (MiB) to allocate the headroom. + type: number + numOfUnits: + description: The number of units to retain as headroom, + where each unit has the defined headroom CPU and + memory. + type: number + type: object + type: array + isAutoConfig: + description: Automatically configure and optimize headroom + resources. + type: boolean + isEnabled: + description: |- + Flag to enable / disable the shutdown hours. + Example: true + type: boolean + resourceLimits: + description: Optionally set upper and lower bounds on the + resource usage of the cluster. + items: + properties: + maxMemoryGib: + description: Maximum amount of Memory (GiB). + type: number + maxVcpu: + description: Maximum number of vcpus available. + type: number + type: object + type: array + type: object + type: array + backendServices: + description: Describes the backend service configurations. + items: + properties: + locationType: + description: 'Sets which location the backend services will + be active. Valid values: regional, global.' + type: string + namedPorts: + description: A list of ports. + items: + properties: + name: + type: string + ports: + description: A list of ports. + items: + type: string + type: array + type: object + type: array + scheme: + description: 'Use when location_type is regional. Set the + traffic for the backend service to either between the + instances in the vpc or to traffic from the internet. + Valid values: INTERNAL, EXTERNAL.' + type: string + serviceName: + description: The name of the backend service. + type: string + type: object + type: array + blacklist: + description: Instance types to avoid launching in the Ocean cluster. + Cannot be configured if whitelist list is configured. + items: + type: string + type: array + clusterName: + description: The GKE cluster name. + type: string + controllerClusterId: + description: A unique identifier used for connecting the Ocean + SaaS platform and the Kubernetes cluster. Typically, the cluster + name is used as its identifier. + type: string + desiredCapacity: + description: The number of instances to launch and maintain in + the cluster. + type: number + filters: + description: List of filters. The Instance types that match with + all filters compose the Ocean's whitelist parameter. Cannot + be configured together with whitelist/blacklist. + items: + properties: + excludeFamilies: + description: 'Types belonging to a family from the ExcludeFamilies + will not be available for scaling (asterisk wildcard is + also supported). For example, C* will exclude instance + types from these families: c5, c4, c4a, etc.' + items: + type: string + type: array + x-kubernetes-list-type: set + includeFamilies: + description: 'Types belonging to a family from the IncludeFamilies + will be available for scaling (asterisk wildcard is also + supported). For example, C* will include instance types + from these families: c5, c4, c4a, etc.' + items: + type: string + type: array + x-kubernetes-list-type: set + maxMemoryGib: + description: Maximum amount of Memory (GiB). + type: number + maxVcpu: + description: Maximum number of vcpus available. + type: number + minMemoryGib: + description: Minimum amount of Memory (GiB). + type: number + minVcpu: + description: Minimum number of vcpus available. + type: number + type: object + type: array + location: + description: The zone the master cluster is located in. + type: string + maxSize: + description: The upper limit of instances the cluster can scale + up to. + type: number + minSize: + description: The lower limit of instances the cluster can scale + down to. + type: number + rootVolumeType: + description: The root volume disk type. + type: string + scheduledTask: + description: Set scheduling object. + items: + properties: + shutdownHours: + description: Set shutdown hours for cluster object. + items: + properties: + isEnabled: + description: |- + Flag to enable / disable the shutdown hours. + Example: true + type: boolean + timeWindows: + description: |- + Set time windows for shutdown hours. specify a list of 'timeWindows' with at least one time window Each string is in the format of - ddd:hh:mm-ddd:hh:mm ddd = day of week = Sun | Mon | Tue | Wed | Thu | Fri | Sat hh = hour 24 = 0 -23 mm = minute = 0 - 59. Time windows should not overlap. required on cluster.scheduling.isEnabled = true. API Times are in UTC + Example: Fri:15:30-Wed:14:30 + items: + type: string + type: array + type: object + type: array + tasks: + description: The scheduling tasks for the cluster. + items: + properties: + cronExpression: + description: |- + A valid cron expression. For example : " * * * * * ".The cron is running in UTC time zone and is in Unix cron format Cron Expression Validator Script. Only one of ‘frequency’ or ‘cronExpression’ should be used at a time. Required for cluster.scheduling.tasks object + Example: 0 1 * * * + type: string + isEnabled: + description: |- + Flag to enable / disable the shutdown hours. + Example: true + type: boolean + taskParameters: + description: The scheduling parameters for the cluster. + items: + properties: + clusterRoll: + description: The cluster roll parameters for + the cluster. + items: + properties: + batchMinHealthyPercentage: + description: Indicates the threshold of + minimum healthy instances in single + batch. If the amount of healthy instances + in single batch is under the threshold, + the cluster roll will fail. If exists, + the parameter value will be in range + of 1-100. In case of null as value, + the default value in the backend will + be 50%. Value of param should represent + the number in percentage (%) of the + batch. + type: number + batchSizePercentage: + description: |- + Value in % to set size of batch in roll. Valid values are 0-100 + Example: 20. + type: number + comment: + description: Add a comment description + for the roll. The comment is limited + to 256 chars. + type: string + respectPdb: + description: During the roll, if the parameter + is set to true we honor PDB during the + instance replacement. + type: boolean + type: object + type: array + type: object + type: array + taskType: + description: 'Valid values: "clusterRoll". Required + for cluster.scheduling.tasks object.' + type: string + type: object + type: array + type: object + type: array + shieldedInstanceConfig: + description: The Ocean shielded instance configuration object. + items: + properties: + enableIntegrityMonitoring: + description: Boolean. Enable the integrity monitoring parameter + on the GCP instances. + type: boolean + enableSecureBoot: + description: Boolean. Enable the secure boot parameter on + the GCP instances. + type: boolean + type: object + type: array + strategy: + description: Strategy object. + items: + properties: + drainingTimeout: + description: The draining timeout (in seconds) before terminating + the instance. + type: number + preemptiblePercentage: + description: Defines the desired preemptible percentage + for the cluster. + type: number + provisioningModel: + description: 'Define the provisioning model of the launched + instances. Valid values: SPOT, PREEMPTIBLE.' + type: string + shouldUtilizeCommitments: + description: Enable committed use discounts utilization. + type: boolean + type: object + type: array + updatePolicy: + items: + properties: + conditionedRoll: + description: Spot will perform a cluster Roll in accordance + with a relevant modification of the cluster’s settings. + When set to true , only specific changes in the cluster’s + configuration will trigger a cluster roll (such as AMI, + Key Pair, user data, instance types, load balancers, etc). + type: boolean + rollConfig: + description: Holds the roll configuration. + items: + properties: + batchMinHealthyPercentage: + description: Indicates the threshold of minimum healthy + instances in single batch. If the amount of healthy + instances in single batch is under the threshold, + the cluster roll will fail. If exists, the parameter + value will be in range of 1-100. In case of null + as value, the default value in the backend will + be 50%. Value of param should represent the number + in percentage (%) of the batch. + type: number + batchSizePercentage: + description: |- + Value in % to set size of batch in roll. Valid values are 0-100 + Example: 20. + type: number + launchSpecIds: + description: List of Virtual Node Group identifiers + to be rolled. + items: + type: string + type: array + respectPdb: + description: During the roll, if the parameter is + set to true we honor PDB during the instance replacement. + type: boolean + type: object + type: array + shouldRoll: + description: Enables the roll. + type: boolean + type: object + type: array + useAsTemplateOnly: + description: launch specification defined on the Ocean object + will function only as a template for virtual node groups. + type: boolean + whitelist: + description: Instance types allowed in the Ocean cluster. Cannot + be configured if blacklist list is configured. + items: + type: string + type: array + type: object + managementPolicies: + default: + - '*' + description: |- + THIS IS A BETA FIELD. It is on by default but can be opted out + through a Crossplane feature flag. + ManagementPolicies specify the array of actions Crossplane is allowed to + take on the managed and external resources. + This field is planned to replace the DeletionPolicy field in a future + release. Currently, both could be set independently and non-default + values would be honored if the feature flag is enabled. If both are + custom, the DeletionPolicy field will be ignored. + See the design doc for more information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md + items: + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: |- + ProviderConfigReference specifies how the provider that will be used to + create, observe, update, and delete this managed resource should be + configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: |- + Resolution specifies whether resolution of this reference is required. + The default is 'Required', which means the reconcile will fail if the + reference cannot be resolved. 'Optional' means this reference will be + a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: |- + Resolve specifies when this reference should be resolved. The default + is 'IfNotPresent', which will attempt to resolve the reference only when + the corresponding field is not present. Use 'Always' to resolve the + reference on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: |- + PublishConnectionDetailsTo specifies the connection secret config which + contains a name, metadata and a reference to secret store config to + which any connection details for this managed resource should be written. + Connection details frequently include the endpoint, username, + and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: |- + Resolution specifies whether resolution of this reference is required. + The default is 'Required', which means the reconcile will fail if the + reference cannot be resolved. 'Optional' means this reference will be + a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: |- + Resolve specifies when this reference should be resolved. The default + is 'IfNotPresent', which will attempt to resolve the reference only when + the corresponding field is not present. Use 'Always' to resolve the + reference on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: |- + Annotations are the annotations to be added to connection secret. + - For Kubernetes secrets, this will be used as "metadata.annotations". + - It is up to Secret Store implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: |- + Labels are the labels/tags to be added to connection secret. + - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store types. + type: object + type: + description: |- + Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: |- + WriteConnectionSecretToReference specifies the namespace and name of a + Secret to which any connection details for this managed resource should + be written. Connection details frequently include the endpoint, username, + and password required to connect to the managed resource. + This field is planned to be replaced in a future release in favor of + PublishConnectionDetailsTo. Currently, both could be set independently + and connection details would be published to both without affecting + each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.clusterName is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.clusterName) + || (has(self.initProvider) && has(self.initProvider.clusterName))' + - message: spec.forProvider.location is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.location) + || (has(self.initProvider) && has(self.initProvider.location))' + status: + description: OceanGkeStatus defines the observed state of OceanGke. + properties: + atProvider: + properties: + autoscaler: + description: The Ocean Kubernetes Autoscaler object. + items: + properties: + autoHeadroomPercentage: + description: Optionally set the auto headroom percentage, + set a number between 0-200 to control the headroom % from + the cluster. Relevant when isAutoConfig=true. + type: number + cooldown: + description: Cooldown period between scaling actions. + type: number + down: + description: Auto Scaling scale down operations. + items: + properties: + evaluationPeriods: + description: The number of evaluation periods that + should accumulate before a scale down action takes + place. + type: number + isAggressiveScaleDownEnabled: + description: When set to 'true', the Aggressive Scale + Down feature is enabled. + type: boolean + maxScaleDownPercentage: + description: Would represent the maximum % to scale-down. + Number between 1-100. + type: number + type: object + type: array + enableAutomaticAndManualHeadroom: + description: enables automatic and manual headroom to work + in parallel. When set to false, automatic headroom overrides + all other headroom definitions manually configured, whether + they are at cluster or VNG level. + type: boolean + headroom: + description: Spare resource capacity management enabling + fast assignment of Pods without waiting for new resources + to launch. + items: + properties: + cpuPerUnit: + description: Optionally configure the number of CPUs + to allocate the headroom. CPUs are denoted in millicores, + where 1000 millicores = 1 vCPU. + type: number + gpuPerUnit: + description: How much GPU allocate for headroom unit. + type: number + memoryPerUnit: + description: Optionally configure the amount of memory + (MiB) to allocate the headroom. + type: number + numOfUnits: + description: The number of units to retain as headroom, + where each unit has the defined headroom CPU and + memory. + type: number + type: object + type: array + isAutoConfig: + description: Automatically configure and optimize headroom + resources. + type: boolean + isEnabled: + description: |- + Flag to enable / disable the shutdown hours. + Example: true + type: boolean + resourceLimits: + description: Optionally set upper and lower bounds on the + resource usage of the cluster. + items: + properties: + maxMemoryGib: + description: Maximum amount of Memory (GiB). + type: number + maxVcpu: + description: Maximum number of vcpus available. + type: number + type: object + type: array + type: object + type: array + backendServices: + description: Describes the backend service configurations. + items: + properties: + locationType: + description: 'Sets which location the backend services will + be active. Valid values: regional, global.' + type: string + namedPorts: + description: A list of ports. + items: + properties: + name: + type: string + ports: + description: A list of ports. + items: + type: string + type: array + type: object + type: array + scheme: + description: 'Use when location_type is regional. Set the + traffic for the backend service to either between the + instances in the vpc or to traffic from the internet. + Valid values: INTERNAL, EXTERNAL.' + type: string + serviceName: + description: The name of the backend service. + type: string + type: object + type: array + blacklist: + description: Instance types to avoid launching in the Ocean cluster. + Cannot be configured if whitelist list is configured. + items: + type: string + type: array + clusterControllerId: + description: The Spotinst Ocean ID. + type: string + clusterName: + description: The GKE cluster name. + type: string + controllerClusterId: + description: A unique identifier used for connecting the Ocean + SaaS platform and the Kubernetes cluster. Typically, the cluster + name is used as its identifier. + type: string + desiredCapacity: + description: The number of instances to launch and maintain in + the cluster. + type: number + filters: + description: List of filters. The Instance types that match with + all filters compose the Ocean's whitelist parameter. Cannot + be configured together with whitelist/blacklist. + items: + properties: + excludeFamilies: + description: 'Types belonging to a family from the ExcludeFamilies + will not be available for scaling (asterisk wildcard is + also supported). For example, C* will exclude instance + types from these families: c5, c4, c4a, etc.' + items: + type: string + type: array + x-kubernetes-list-type: set + includeFamilies: + description: 'Types belonging to a family from the IncludeFamilies + will be available for scaling (asterisk wildcard is also + supported). For example, C* will include instance types + from these families: c5, c4, c4a, etc.' + items: + type: string + type: array + x-kubernetes-list-type: set + maxMemoryGib: + description: Maximum amount of Memory (GiB). + type: number + maxVcpu: + description: Maximum number of vcpus available. + type: number + minMemoryGib: + description: Minimum amount of Memory (GiB). + type: number + minVcpu: + description: Minimum number of vcpus available. + type: number + type: object + type: array + id: + description: The Spotinst Ocean ID. + type: string + location: + description: The zone the master cluster is located in. + type: string + maxSize: + description: The upper limit of instances the cluster can scale + up to. + type: number + minSize: + description: The lower limit of instances the cluster can scale + down to. + type: number + rootVolumeType: + description: The root volume disk type. + type: string + scheduledTask: + description: Set scheduling object. + items: + properties: + shutdownHours: + description: Set shutdown hours for cluster object. + items: + properties: + isEnabled: + description: |- + Flag to enable / disable the shutdown hours. + Example: true + type: boolean + timeWindows: + description: |- + Set time windows for shutdown hours. specify a list of 'timeWindows' with at least one time window Each string is in the format of - ddd:hh:mm-ddd:hh:mm ddd = day of week = Sun | Mon | Tue | Wed | Thu | Fri | Sat hh = hour 24 = 0 -23 mm = minute = 0 - 59. Time windows should not overlap. required on cluster.scheduling.isEnabled = true. API Times are in UTC + Example: Fri:15:30-Wed:14:30 + items: + type: string + type: array + type: object + type: array + tasks: + description: The scheduling tasks for the cluster. + items: + properties: + cronExpression: + description: |- + A valid cron expression. For example : " * * * * * ".The cron is running in UTC time zone and is in Unix cron format Cron Expression Validator Script. Only one of ‘frequency’ or ‘cronExpression’ should be used at a time. Required for cluster.scheduling.tasks object + Example: 0 1 * * * + type: string + isEnabled: + description: |- + Flag to enable / disable the shutdown hours. + Example: true + type: boolean + taskParameters: + description: The scheduling parameters for the cluster. + items: + properties: + clusterRoll: + description: The cluster roll parameters for + the cluster. + items: + properties: + batchMinHealthyPercentage: + description: Indicates the threshold of + minimum healthy instances in single + batch. If the amount of healthy instances + in single batch is under the threshold, + the cluster roll will fail. If exists, + the parameter value will be in range + of 1-100. In case of null as value, + the default value in the backend will + be 50%. Value of param should represent + the number in percentage (%) of the + batch. + type: number + batchSizePercentage: + description: |- + Value in % to set size of batch in roll. Valid values are 0-100 + Example: 20. + type: number + comment: + description: Add a comment description + for the roll. The comment is limited + to 256 chars. + type: string + respectPdb: + description: During the roll, if the parameter + is set to true we honor PDB during the + instance replacement. + type: boolean + type: object + type: array + type: object + type: array + taskType: + description: 'Valid values: "clusterRoll". Required + for cluster.scheduling.tasks object.' + type: string + type: object + type: array + type: object + type: array + shieldedInstanceConfig: + description: The Ocean shielded instance configuration object. + items: + properties: + enableIntegrityMonitoring: + description: Boolean. Enable the integrity monitoring parameter + on the GCP instances. + type: boolean + enableSecureBoot: + description: Boolean. Enable the secure boot parameter on + the GCP instances. + type: boolean + type: object + type: array + strategy: + description: Strategy object. + items: + properties: + drainingTimeout: + description: The draining timeout (in seconds) before terminating + the instance. + type: number + preemptiblePercentage: + description: Defines the desired preemptible percentage + for the cluster. + type: number + provisioningModel: + description: 'Define the provisioning model of the launched + instances. Valid values: SPOT, PREEMPTIBLE.' + type: string + shouldUtilizeCommitments: + description: Enable committed use discounts utilization. + type: boolean + type: object + type: array + updatePolicy: + items: + properties: + conditionedRoll: + description: Spot will perform a cluster Roll in accordance + with a relevant modification of the cluster’s settings. + When set to true , only specific changes in the cluster’s + configuration will trigger a cluster roll (such as AMI, + Key Pair, user data, instance types, load balancers, etc). + type: boolean + rollConfig: + description: Holds the roll configuration. + items: + properties: + batchMinHealthyPercentage: + description: Indicates the threshold of minimum healthy + instances in single batch. If the amount of healthy + instances in single batch is under the threshold, + the cluster roll will fail. If exists, the parameter + value will be in range of 1-100. In case of null + as value, the default value in the backend will + be 50%. Value of param should represent the number + in percentage (%) of the batch. + type: number + batchSizePercentage: + description: |- + Value in % to set size of batch in roll. Valid values are 0-100 + Example: 20. + type: number + launchSpecIds: + description: List of Virtual Node Group identifiers + to be rolled. + items: + type: string + type: array + respectPdb: + description: During the roll, if the parameter is + set to true we honor PDB during the instance replacement. + type: boolean + type: object + type: array + shouldRoll: + description: Enables the roll. + type: boolean + type: object + type: array + useAsTemplateOnly: + description: launch specification defined on the Ocean object + will function only as a template for virtual node groups. + type: boolean + whitelist: + description: Instance types allowed in the Ocean cluster. Cannot + be configured if blacklist list is configured. + items: + type: string + type: array + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: |- + LastTransitionTime is the last time this condition transitioned from one + status to another. + format: date-time + type: string + message: + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. + type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: |- + Type of this condition. At most one of each condition type may apply to + a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/oceangkevng.spot.upbound.io_oceangkevngs.yaml b/package/crds/oceangkevng.spot.upbound.io_oceangkevngs.yaml new file mode 100644 index 0000000..f256aa4 --- /dev/null +++ b/package/crds/oceangkevng.spot.upbound.io_oceangkevngs.yaml @@ -0,0 +1,1190 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.14.0 + name: oceangkevngs.oceangkevng.spot.upbound.io +spec: + group: oceangkevng.spot.upbound.io + names: + categories: + - crossplane + - managed + - spot + kind: OceanGkeVng + listKind: OceanGkeVngList + plural: oceangkevngs + singular: oceangkevng + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: OceanGkeVng is the Schema for the OceanGkeVngs API. Provides + a Spotinst Ocean Launch Spec resource using GKE. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: OceanGkeVngSpec defines the desired state of OceanGkeVng + properties: + deletionPolicy: + default: Delete + description: |- + DeletionPolicy specifies what will happen to the underlying external + when this managed resource is deleted - either "Delete" or "Orphan" the + external resource. + This field is planned to be deprecated in favor of the ManagementPolicies + field in a future release. Currently, both could be set independently and + non-default values would be honored if the feature flag is enabled. + See the design doc for more information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + autoscaleHeadrooms: + description: Set custom headroom per launch spec. provide list + of headrooms object. + items: + properties: + cpuPerUnit: + description: Optionally configure the number of CPUs to + allocate for each headroom unit. CPUs are denoted in millicores, + where 1000 millicores = 1 vCPU. + type: number + gpuPerUnit: + description: Optionally configure the number of GPUS to + allocate for each headroom unit. + type: number + memoryPerUnit: + description: Optionally configure the amount of memory (MiB) + to allocate for each headroom unit. + type: number + numOfUnits: + description: The number of units to retain as headroom, + where each unit has the defined headroom CPU, memory and + GPU. + type: number + type: object + type: array + autoscaleHeadroomsAutomatic: + description: Set automatic headroom per launch spec. + items: + properties: + autoHeadroomPercentage: + description: Number between 0-200 to control the headroom + % of the specific Virtual Node Group. Effective when cluster.autoScaler.headroom.automatic.is_enabled + = true is set on the Ocean cluster. + type: number + type: object + type: array + createOptions: + items: + properties: + initialNodes: + description: When set to an integer greater than 0, a corresponding + amount of nodes will be launched from the created Virtual + Node Group. + type: number + type: object + type: array + instanceTypes: + description: List of supported machine types for the Launch Spec. + items: + type: string + type: array + labels: + description: Optionally adds labels to instances launched in an + Ocean cluster. + items: + properties: + key: + description: The metadata key. + type: string + value: + description: The metadata value. + type: string + type: object + type: array + metadata: + description: Cluster's metadata. + items: + properties: + key: + description: The metadata key. + type: string + value: + description: The metadata value. + type: string + type: object + type: array + name: + description: The launch specification name. + type: string + networkInterfaces: + description: Settings for network interfaces. + items: + properties: + accessConfigs: + description: The network protocol of the VNG. + items: + properties: + name: + description: The launch specification name. + type: string + type: + description: The type of the access configuration. + type: string + type: object + type: array + aliasIpRanges: + description: use the imported node pool’s associated aliasIpRange + to assign secondary IP addresses to the nodes. Cannot + be changed after VNG creation. + items: + properties: + ipCidrRange: + description: specify the IP address range in CIDR + notation that can be used for the alias IP addresses + associated with the imported node pool. + type: string + subnetworkRangeName: + description: specify the IP address range for the + subnet secondary IP range. + type: string + type: object + type: array + network: + description: The name of the network. + type: string + projectId: + description: Use a network resource from a different project. + Set the project identifier to use its network resource. + This parameter is relevant only if the network resource + is in a different project. + type: string + type: object + type: array + nodePoolName: + description: The node pool you wish to use in your Launch Spec. + type: string + oceanId: + description: The Ocean cluster ID. + type: string + resourceLimits: + description: The Ocean virtual node group resource limits object. + items: + properties: + maxInstanceCount: + description: Option to set a maximum number of instances + per virtual node group. Can be null. If set, the value + must be greater than or equal to 0. + type: number + minInstanceCount: + description: Option to set a minimum number of instances + per virtual node group. Can be null. If set, the value + must be greater than or equal to 0. + type: number + type: object + type: array + restrictScaleDown: + description: Boolean. When set to true, VNG nodes will be treated + as if all pods running have the restrict-scale-down label. Therefore, + Ocean will not scale nodes down unless empty. + type: boolean + rootVolumeSize: + description: Root volume size (in GB). + type: number + rootVolumeType: + description: 'Root volume disk type. Valid values: "pd-standard", + "pd-ssd".' + type: string + schedulingTask: + description: Used to define scheduled tasks such as a manual headroom + update. + items: + properties: + cronExpression: + description: 'A valid cron expression. For example : " * + * * * * ". The cron job runs in UTC time and is in Unix + cron format.' + type: string + isEnabled: + description: Describes whether the task is enabled. When + true, the task runs. When false, it does not run. + type: boolean + taskHeadroom: + description: The config of this scheduled task. Depends + on the value of taskType. + items: + properties: + cpuPerUnit: + description: Optionally configure the number of CPUs + to allocate for each headroom unit. CPUs are denoted + in millicores, where 1000 millicores = 1 vCPU. + type: number + gpuPerUnit: + description: Optionally configure the number of GPUS + to allocate for each headroom unit. + type: number + memoryPerUnit: + description: Optionally configure the amount of memory + (MiB) to allocate for each headroom unit. + type: number + numOfUnits: + description: The number of units to retain as headroom, + where each unit has the defined headroom CPU, memory + and GPU. + type: number + type: object + type: array + taskType: + description: 'The activity that you are scheduling. Valid + values: "manualHeadroomUpdate".' + type: string + type: object + type: array + serviceAccount: + description: The account used by applications running on the VM + to call GCP APIs. + type: string + shieldedInstanceConfig: + description: The Ocean shielded instance configuration object. + items: + properties: + enableIntegrityMonitoring: + description: Boolean. Enable the integrity monitoring parameter + on the GCP instances. + type: boolean + enableSecureBoot: + description: Boolean. Enable the secure boot parameter on + the GCP instances. + type: boolean + type: object + type: array + sourceImage: + description: Image URL. + type: string + storage: + description: The Ocean virtual node group storage object. + items: + properties: + localSsdCount: + description: Defines the number of local SSDs to be attached + per node for this VNG. + type: number + type: object + type: array + strategy: + description: The Ocean Launch Spec Strategy object. + items: + properties: + preemptiblePercentage: + description: Defines the desired preemptible percentage + for this launch specification. + type: number + type: object + type: array + tags: + description: 'Every node launched from this configuration will + be tagged with those tags. Note: during creation some tags are + automatically imported to the state file, it is required to + manually add it to the template configuration' + items: + type: string + type: array + taints: + description: Optionally adds labels to instances launched in an + Ocean cluster. + items: + properties: + effect: + description: 'The effect of the taint. Valid values: "NoSchedule", + "PreferNoSchedule", "NoExecute".' + type: string + key: + description: The metadata key. + type: string + value: + description: The metadata value. + type: string + type: object + type: array + updatePolicy: + items: + properties: + rollConfig: + description: Holds the roll configuration. + items: + properties: + batchSizePercentage: + description: Sets the percentage of the instances + to deploy in each batch. + type: number + type: object + type: array + shouldRoll: + description: Enables the roll. + type: boolean + type: object + type: array + type: object + initProvider: + description: |- + THIS IS A BETA FIELD. It will be honored + unless the Management Policies feature flag is disabled. + InitProvider holds the same fields as ForProvider, with the exception + of Identifier and other resource reference fields. The fields that are + in InitProvider are merged into ForProvider when the resource is created. + The same fields are also added to the terraform ignore_changes hook, to + avoid updating them after creation. This is useful for fields that are + required on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, like an + autoscaler. + properties: + autoscaleHeadrooms: + description: Set custom headroom per launch spec. provide list + of headrooms object. + items: + properties: + cpuPerUnit: + description: Optionally configure the number of CPUs to + allocate for each headroom unit. CPUs are denoted in millicores, + where 1000 millicores = 1 vCPU. + type: number + gpuPerUnit: + description: Optionally configure the number of GPUS to + allocate for each headroom unit. + type: number + memoryPerUnit: + description: Optionally configure the amount of memory (MiB) + to allocate for each headroom unit. + type: number + numOfUnits: + description: The number of units to retain as headroom, + where each unit has the defined headroom CPU, memory and + GPU. + type: number + type: object + type: array + autoscaleHeadroomsAutomatic: + description: Set automatic headroom per launch spec. + items: + properties: + autoHeadroomPercentage: + description: Number between 0-200 to control the headroom + % of the specific Virtual Node Group. Effective when cluster.autoScaler.headroom.automatic.is_enabled + = true is set on the Ocean cluster. + type: number + type: object + type: array + createOptions: + items: + properties: + initialNodes: + description: When set to an integer greater than 0, a corresponding + amount of nodes will be launched from the created Virtual + Node Group. + type: number + type: object + type: array + instanceTypes: + description: List of supported machine types for the Launch Spec. + items: + type: string + type: array + labels: + description: Optionally adds labels to instances launched in an + Ocean cluster. + items: + properties: + key: + description: The metadata key. + type: string + value: + description: The metadata value. + type: string + type: object + type: array + metadata: + description: Cluster's metadata. + items: + properties: + key: + description: The metadata key. + type: string + value: + description: The metadata value. + type: string + type: object + type: array + name: + description: The launch specification name. + type: string + networkInterfaces: + description: Settings for network interfaces. + items: + properties: + accessConfigs: + description: The network protocol of the VNG. + items: + properties: + name: + description: The launch specification name. + type: string + type: + description: The type of the access configuration. + type: string + type: object + type: array + aliasIpRanges: + description: use the imported node pool’s associated aliasIpRange + to assign secondary IP addresses to the nodes. Cannot + be changed after VNG creation. + items: + properties: + ipCidrRange: + description: specify the IP address range in CIDR + notation that can be used for the alias IP addresses + associated with the imported node pool. + type: string + subnetworkRangeName: + description: specify the IP address range for the + subnet secondary IP range. + type: string + type: object + type: array + network: + description: The name of the network. + type: string + projectId: + description: Use a network resource from a different project. + Set the project identifier to use its network resource. + This parameter is relevant only if the network resource + is in a different project. + type: string + type: object + type: array + nodePoolName: + description: The node pool you wish to use in your Launch Spec. + type: string + oceanId: + description: The Ocean cluster ID. + type: string + resourceLimits: + description: The Ocean virtual node group resource limits object. + items: + properties: + maxInstanceCount: + description: Option to set a maximum number of instances + per virtual node group. Can be null. If set, the value + must be greater than or equal to 0. + type: number + minInstanceCount: + description: Option to set a minimum number of instances + per virtual node group. Can be null. If set, the value + must be greater than or equal to 0. + type: number + type: object + type: array + restrictScaleDown: + description: Boolean. When set to true, VNG nodes will be treated + as if all pods running have the restrict-scale-down label. Therefore, + Ocean will not scale nodes down unless empty. + type: boolean + rootVolumeSize: + description: Root volume size (in GB). + type: number + rootVolumeType: + description: 'Root volume disk type. Valid values: "pd-standard", + "pd-ssd".' + type: string + schedulingTask: + description: Used to define scheduled tasks such as a manual headroom + update. + items: + properties: + cronExpression: + description: 'A valid cron expression. For example : " * + * * * * ". The cron job runs in UTC time and is in Unix + cron format.' + type: string + isEnabled: + description: Describes whether the task is enabled. When + true, the task runs. When false, it does not run. + type: boolean + taskHeadroom: + description: The config of this scheduled task. Depends + on the value of taskType. + items: + properties: + cpuPerUnit: + description: Optionally configure the number of CPUs + to allocate for each headroom unit. CPUs are denoted + in millicores, where 1000 millicores = 1 vCPU. + type: number + gpuPerUnit: + description: Optionally configure the number of GPUS + to allocate for each headroom unit. + type: number + memoryPerUnit: + description: Optionally configure the amount of memory + (MiB) to allocate for each headroom unit. + type: number + numOfUnits: + description: The number of units to retain as headroom, + where each unit has the defined headroom CPU, memory + and GPU. + type: number + type: object + type: array + taskType: + description: 'The activity that you are scheduling. Valid + values: "manualHeadroomUpdate".' + type: string + type: object + type: array + serviceAccount: + description: The account used by applications running on the VM + to call GCP APIs. + type: string + shieldedInstanceConfig: + description: The Ocean shielded instance configuration object. + items: + properties: + enableIntegrityMonitoring: + description: Boolean. Enable the integrity monitoring parameter + on the GCP instances. + type: boolean + enableSecureBoot: + description: Boolean. Enable the secure boot parameter on + the GCP instances. + type: boolean + type: object + type: array + sourceImage: + description: Image URL. + type: string + storage: + description: The Ocean virtual node group storage object. + items: + properties: + localSsdCount: + description: Defines the number of local SSDs to be attached + per node for this VNG. + type: number + type: object + type: array + strategy: + description: The Ocean Launch Spec Strategy object. + items: + properties: + preemptiblePercentage: + description: Defines the desired preemptible percentage + for this launch specification. + type: number + type: object + type: array + tags: + description: 'Every node launched from this configuration will + be tagged with those tags. Note: during creation some tags are + automatically imported to the state file, it is required to + manually add it to the template configuration' + items: + type: string + type: array + taints: + description: Optionally adds labels to instances launched in an + Ocean cluster. + items: + properties: + effect: + description: 'The effect of the taint. Valid values: "NoSchedule", + "PreferNoSchedule", "NoExecute".' + type: string + key: + description: The metadata key. + type: string + value: + description: The metadata value. + type: string + type: object + type: array + updatePolicy: + items: + properties: + rollConfig: + description: Holds the roll configuration. + items: + properties: + batchSizePercentage: + description: Sets the percentage of the instances + to deploy in each batch. + type: number + type: object + type: array + shouldRoll: + description: Enables the roll. + type: boolean + type: object + type: array + type: object + managementPolicies: + default: + - '*' + description: |- + THIS IS A BETA FIELD. It is on by default but can be opted out + through a Crossplane feature flag. + ManagementPolicies specify the array of actions Crossplane is allowed to + take on the managed and external resources. + This field is planned to replace the DeletionPolicy field in a future + release. Currently, both could be set independently and non-default + values would be honored if the feature flag is enabled. If both are + custom, the DeletionPolicy field will be ignored. + See the design doc for more information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md + items: + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array + providerConfigRef: + default: + name: default + description: |- + ProviderConfigReference specifies how the provider that will be used to + create, observe, update, and delete this managed resource should be + configured. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: |- + Resolution specifies whether resolution of this reference is required. + The default is 'Required', which means the reconcile will fail if the + reference cannot be resolved. 'Optional' means this reference will be + a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: |- + Resolve specifies when this reference should be resolved. The default + is 'IfNotPresent', which will attempt to resolve the reference only when + the corresponding field is not present. Use 'Always' to resolve the + reference on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + publishConnectionDetailsTo: + description: |- + PublishConnectionDetailsTo specifies the connection secret config which + contains a name, metadata and a reference to secret store config to + which any connection details for this managed resource should be written. + Connection details frequently include the endpoint, username, + and password required to connect to the managed resource. + properties: + configRef: + default: + name: default + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: |- + Resolution specifies whether resolution of this reference is required. + The default is 'Required', which means the reconcile will fail if the + reference cannot be resolved. 'Optional' means this reference will be + a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: |- + Resolve specifies when this reference should be resolved. The default + is 'IfNotPresent', which will attempt to resolve the reference only when + the corresponding field is not present. Use 'Always' to resolve the + reference on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + metadata: + description: Metadata is the metadata for connection secret. + properties: + annotations: + additionalProperties: + type: string + description: |- + Annotations are the annotations to be added to connection secret. + - For Kubernetes secrets, this will be used as "metadata.annotations". + - It is up to Secret Store implementation for others store types. + type: object + labels: + additionalProperties: + type: string + description: |- + Labels are the labels/tags to be added to connection secret. + - For Kubernetes secrets, this will be used as "metadata.labels". + - It is up to Secret Store implementation for others store types. + type: object + type: + description: |- + Type is the SecretType for the connection secret. + - Only valid for Kubernetes Secret Stores. + type: string + type: object + name: + description: Name is the name of the connection secret. + type: string + required: + - name + type: object + writeConnectionSecretToRef: + description: |- + WriteConnectionSecretToReference specifies the namespace and name of a + Secret to which any connection details for this managed resource should + be written. Connection details frequently include the endpoint, username, + and password required to connect to the managed resource. + This field is planned to be replaced in a future release in favor of + PublishConnectionDetailsTo. Currently, both could be set independently + and connection details would be published to both without affecting + each other. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + required: + - forProvider + type: object + x-kubernetes-validations: + - message: spec.forProvider.oceanId is a required parameter + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.oceanId) + || (has(self.initProvider) && has(self.initProvider.oceanId))' + status: + description: OceanGkeVngStatus defines the observed state of OceanGkeVng. + properties: + atProvider: + properties: + autoscaleHeadrooms: + description: Set custom headroom per launch spec. provide list + of headrooms object. + items: + properties: + cpuPerUnit: + description: Optionally configure the number of CPUs to + allocate for each headroom unit. CPUs are denoted in millicores, + where 1000 millicores = 1 vCPU. + type: number + gpuPerUnit: + description: Optionally configure the number of GPUS to + allocate for each headroom unit. + type: number + memoryPerUnit: + description: Optionally configure the amount of memory (MiB) + to allocate for each headroom unit. + type: number + numOfUnits: + description: The number of units to retain as headroom, + where each unit has the defined headroom CPU, memory and + GPU. + type: number + type: object + type: array + autoscaleHeadroomsAutomatic: + description: Set automatic headroom per launch spec. + items: + properties: + autoHeadroomPercentage: + description: Number between 0-200 to control the headroom + % of the specific Virtual Node Group. Effective when cluster.autoScaler.headroom.automatic.is_enabled + = true is set on the Ocean cluster. + type: number + type: object + type: array + createOptions: + items: + properties: + initialNodes: + description: When set to an integer greater than 0, a corresponding + amount of nodes will be launched from the created Virtual + Node Group. + type: number + type: object + type: array + id: + description: The Spotinst LaunchSpec ID. + type: string + instanceTypes: + description: List of supported machine types for the Launch Spec. + items: + type: string + type: array + labels: + description: Optionally adds labels to instances launched in an + Ocean cluster. + items: + properties: + key: + description: The metadata key. + type: string + value: + description: The metadata value. + type: string + type: object + type: array + metadata: + description: Cluster's metadata. + items: + properties: + key: + description: The metadata key. + type: string + value: + description: The metadata value. + type: string + type: object + type: array + name: + description: The launch specification name. + type: string + networkInterfaces: + description: Settings for network interfaces. + items: + properties: + accessConfigs: + description: The network protocol of the VNG. + items: + properties: + name: + description: The launch specification name. + type: string + type: + description: The type of the access configuration. + type: string + type: object + type: array + aliasIpRanges: + description: use the imported node pool’s associated aliasIpRange + to assign secondary IP addresses to the nodes. Cannot + be changed after VNG creation. + items: + properties: + ipCidrRange: + description: specify the IP address range in CIDR + notation that can be used for the alias IP addresses + associated with the imported node pool. + type: string + subnetworkRangeName: + description: specify the IP address range for the + subnet secondary IP range. + type: string + type: object + type: array + network: + description: The name of the network. + type: string + projectId: + description: Use a network resource from a different project. + Set the project identifier to use its network resource. + This parameter is relevant only if the network resource + is in a different project. + type: string + type: object + type: array + nodePoolName: + description: The node pool you wish to use in your Launch Spec. + type: string + oceanId: + description: The Ocean cluster ID. + type: string + resourceLimits: + description: The Ocean virtual node group resource limits object. + items: + properties: + maxInstanceCount: + description: Option to set a maximum number of instances + per virtual node group. Can be null. If set, the value + must be greater than or equal to 0. + type: number + minInstanceCount: + description: Option to set a minimum number of instances + per virtual node group. Can be null. If set, the value + must be greater than or equal to 0. + type: number + type: object + type: array + restrictScaleDown: + description: Boolean. When set to true, VNG nodes will be treated + as if all pods running have the restrict-scale-down label. Therefore, + Ocean will not scale nodes down unless empty. + type: boolean + rootVolumeSize: + description: Root volume size (in GB). + type: number + rootVolumeType: + description: 'Root volume disk type. Valid values: "pd-standard", + "pd-ssd".' + type: string + schedulingTask: + description: Used to define scheduled tasks such as a manual headroom + update. + items: + properties: + cronExpression: + description: 'A valid cron expression. For example : " * + * * * * ". The cron job runs in UTC time and is in Unix + cron format.' + type: string + isEnabled: + description: Describes whether the task is enabled. When + true, the task runs. When false, it does not run. + type: boolean + taskHeadroom: + description: The config of this scheduled task. Depends + on the value of taskType. + items: + properties: + cpuPerUnit: + description: Optionally configure the number of CPUs + to allocate for each headroom unit. CPUs are denoted + in millicores, where 1000 millicores = 1 vCPU. + type: number + gpuPerUnit: + description: Optionally configure the number of GPUS + to allocate for each headroom unit. + type: number + memoryPerUnit: + description: Optionally configure the amount of memory + (MiB) to allocate for each headroom unit. + type: number + numOfUnits: + description: The number of units to retain as headroom, + where each unit has the defined headroom CPU, memory + and GPU. + type: number + type: object + type: array + taskType: + description: 'The activity that you are scheduling. Valid + values: "manualHeadroomUpdate".' + type: string + type: object + type: array + serviceAccount: + description: The account used by applications running on the VM + to call GCP APIs. + type: string + shieldedInstanceConfig: + description: The Ocean shielded instance configuration object. + items: + properties: + enableIntegrityMonitoring: + description: Boolean. Enable the integrity monitoring parameter + on the GCP instances. + type: boolean + enableSecureBoot: + description: Boolean. Enable the secure boot parameter on + the GCP instances. + type: boolean + type: object + type: array + sourceImage: + description: Image URL. + type: string + storage: + description: The Ocean virtual node group storage object. + items: + properties: + localSsdCount: + description: Defines the number of local SSDs to be attached + per node for this VNG. + type: number + type: object + type: array + strategy: + description: The Ocean Launch Spec Strategy object. + items: + properties: + preemptiblePercentage: + description: Defines the desired preemptible percentage + for this launch specification. + type: number + type: object + type: array + tags: + description: 'Every node launched from this configuration will + be tagged with those tags. Note: during creation some tags are + automatically imported to the state file, it is required to + manually add it to the template configuration' + items: + type: string + type: array + taints: + description: Optionally adds labels to instances launched in an + Ocean cluster. + items: + properties: + effect: + description: 'The effect of the taint. Valid values: "NoSchedule", + "PreferNoSchedule", "NoExecute".' + type: string + key: + description: The metadata key. + type: string + value: + description: The metadata value. + type: string + type: object + type: array + updatePolicy: + items: + properties: + rollConfig: + description: Holds the roll configuration. + items: + properties: + batchSizePercentage: + description: Sets the percentage of the instances + to deploy in each batch. + type: number + type: object + type: array + shouldRoll: + description: Enables the roll. + type: boolean + type: object + type: array + type: object + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: |- + LastTransitionTime is the last time this condition transitioned from one + status to another. + format: date-time + type: string + message: + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. + type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + reason: + description: A Reason for this condition's last transition from + one status to another. + type: string + status: + description: Status of this condition; is it currently True, + False, or Unknown? + type: string + type: + description: |- + Type of this condition. At most one of each condition type may apply to + a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {}