diff --git a/Makefile b/Makefile index 5b6e7cf..d3a48bd 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,7 @@ export TERRAFORM_VERSION := 1.3.3 export TERRAFORM_PROVIDER_SOURCE := spectrocloud/spectrocloud export TERRAFORM_PROVIDER_REPO := https://github.com/spectrocloud/terraform-provider-spectrocloud -export TERRAFORM_PROVIDER_VERSION := 0.11.0 +export TERRAFORM_PROVIDER_VERSION := 0.12.0 export TERRAFORM_PROVIDER_DOWNLOAD_NAME := terraform-provider-spectrocloud export TERRAFORM_NATIVE_PROVIDER_BINARY := terraform-provider-spectrocloud_$(TERRAFORM_PROVIDER_VERSION) export TERRAFORM_DOCS_PATH := docs/resources diff --git a/apis/addon/v1alpha1/zz_deployment_types.go b/apis/addon/v1alpha1/zz_deployment_types.go index 8a2b55b..ee616b4 100755 --- a/apis/addon/v1alpha1/zz_deployment_types.go +++ b/apis/addon/v1alpha1/zz_deployment_types.go @@ -14,10 +14,14 @@ import ( ) type ClusterProfileObservation struct { + + // +kubebuilder:validation:Optional + Pack []PackObservation `json:"pack,omitempty" tf:"pack,omitempty"` } type ClusterProfileParameters struct { + // The ID of the cluster profile. // +kubebuilder:validation:Required ID *string `json:"id" tf:"id,omitempty"` @@ -26,6 +30,10 @@ type ClusterProfileParameters struct { } type DeploymentObservation struct { + + // +kubebuilder:validation:Optional + ClusterProfile []ClusterProfileObservation `json:"clusterProfile,omitempty" tf:"cluster_profile,omitempty"` + ID *string `json:"id,omitempty" tf:"id,omitempty"` } @@ -42,18 +50,24 @@ type DeploymentParameters struct { } type ManifestObservation struct { + UID *string `json:"uid,omitempty" tf:"uid,omitempty"` } type ManifestParameters struct { + // The content of the manifest. The content is the YAML content of the manifest. // +kubebuilder:validation:Required Content *string `json:"content" tf:"content,omitempty"` + // The name of the manifest. The name must be unique within the pack. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` } type PackObservation struct { + + // +kubebuilder:validation:Optional + Manifest []ManifestObservation `json:"manifest,omitempty" tf:"manifest,omitempty"` } type PackParameters struct { @@ -61,23 +75,28 @@ type PackParameters struct { // +kubebuilder:validation:Optional Manifest []ManifestParameters `json:"manifest,omitempty" tf:"manifest,omitempty"` + // The name of the pack. The name must be unique within the cluster profile. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // The registry UID of the pack. The registry UID is the unique identifier of the registry. // +kubebuilder:validation:Optional RegistryUID *string `json:"registryUid,omitempty" tf:"registry_uid,omitempty"` + // The tag of the pack. The tag is the version of the pack. // +kubebuilder:validation:Optional Tag *string `json:"tag,omitempty" tf:"tag,omitempty"` + // The type of the pack. The default value is `spectro`. // +kubebuilder:validation:Optional Type *string `json:"type,omitempty" tf:"type,omitempty"` // +kubebuilder:validation:Optional UID *string `json:"uid,omitempty" tf:"uid,omitempty"` - // +kubebuilder:validation:Optional - Values *string `json:"values,omitempty" tf:"values,omitempty"` + // The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. + // +kubebuilder:validation:Required + Values *string `json:"values" tf:"values,omitempty"` } // DeploymentSpec defines the desired state of Deployment diff --git a/apis/addon/v1alpha1/zz_generated.deepcopy.go b/apis/addon/v1alpha1/zz_generated.deepcopy.go index 25e6367..01bcb81 100644 --- a/apis/addon/v1alpha1/zz_generated.deepcopy.go +++ b/apis/addon/v1alpha1/zz_generated.deepcopy.go @@ -16,6 +16,13 @@ import ( // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ClusterProfileObservation) DeepCopyInto(out *ClusterProfileObservation) { *out = *in + if in.Pack != nil { + in, out := &in.Pack, &out.Pack + *out = make([]PackObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterProfileObservation. @@ -117,6 +124,13 @@ func (in *DeploymentList) DeepCopyObject() runtime.Object { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *DeploymentObservation) DeepCopyInto(out *DeploymentObservation) { *out = *in + if in.ClusterProfile != nil { + in, out := &in.ClusterProfile, &out.ClusterProfile + *out = make([]ClusterProfileObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.ID != nil { in, out := &in.ID, &out.ID *out = new(string) @@ -203,6 +217,11 @@ func (in *DeploymentStatus) DeepCopy() *DeploymentStatus { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ManifestObservation) DeepCopyInto(out *ManifestObservation) { *out = *in + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManifestObservation. @@ -243,6 +262,13 @@ func (in *ManifestParameters) DeepCopy() *ManifestParameters { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *PackObservation) DeepCopyInto(out *PackObservation) { *out = *in + if in.Manifest != nil { + in, out := &in.Manifest, &out.Manifest + *out = make([]ManifestObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PackObservation. diff --git a/apis/cloudaccount/v1alpha1/zz_generated.deepcopy.go b/apis/cloudaccount/v1alpha1/zz_generated.deepcopy.go index 763ce3b..f65814e 100644 --- a/apis/cloudaccount/v1alpha1/zz_generated.deepcopy.go +++ b/apis/cloudaccount/v1alpha1/zz_generated.deepcopy.go @@ -889,3 +889,157 @@ func (in *TencentStatus) DeepCopy() *TencentStatus { in.DeepCopyInto(out) return out } + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Vsphere) DeepCopyInto(out *Vsphere) { + *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 Vsphere. +func (in *Vsphere) DeepCopy() *Vsphere { + if in == nil { + return nil + } + out := new(Vsphere) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Vsphere) 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 *VsphereList) DeepCopyInto(out *VsphereList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Vsphere, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VsphereList. +func (in *VsphereList) DeepCopy() *VsphereList { + if in == nil { + return nil + } + out := new(VsphereList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *VsphereList) 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 *VsphereObservation) DeepCopyInto(out *VsphereObservation) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VsphereObservation. +func (in *VsphereObservation) DeepCopy() *VsphereObservation { + if in == nil { + return nil + } + out := new(VsphereObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VsphereParameters) DeepCopyInto(out *VsphereParameters) { + *out = *in + if in.Context != nil { + in, out := &in.Context, &out.Context + *out = new(string) + **out = **in + } + if in.PrivateCloudGatewayID != nil { + in, out := &in.PrivateCloudGatewayID, &out.PrivateCloudGatewayID + *out = new(string) + **out = **in + } + if in.VsphereIgnoreInsecureError != nil { + in, out := &in.VsphereIgnoreInsecureError, &out.VsphereIgnoreInsecureError + *out = new(bool) + **out = **in + } + out.VspherePasswordSecretRef = in.VspherePasswordSecretRef + if in.VsphereUsername != nil { + in, out := &in.VsphereUsername, &out.VsphereUsername + *out = new(string) + **out = **in + } + if in.VsphereVcenter != nil { + in, out := &in.VsphereVcenter, &out.VsphereVcenter + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VsphereParameters. +func (in *VsphereParameters) DeepCopy() *VsphereParameters { + if in == nil { + return nil + } + out := new(VsphereParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VsphereSpec) DeepCopyInto(out *VsphereSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VsphereSpec. +func (in *VsphereSpec) DeepCopy() *VsphereSpec { + if in == nil { + return nil + } + out := new(VsphereSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VsphereStatus) DeepCopyInto(out *VsphereStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VsphereStatus. +func (in *VsphereStatus) DeepCopy() *VsphereStatus { + if in == nil { + return nil + } + out := new(VsphereStatus) + in.DeepCopyInto(out) + return out +} diff --git a/apis/cloudaccount/v1alpha1/zz_generated.managed.go b/apis/cloudaccount/v1alpha1/zz_generated.managed.go index ad6a0b1..7064013 100644 --- a/apis/cloudaccount/v1alpha1/zz_generated.managed.go +++ b/apis/cloudaccount/v1alpha1/zz_generated.managed.go @@ -402,3 +402,69 @@ func (mg *Tencent) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetail func (mg *Tencent) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { mg.Spec.WriteConnectionSecretToReference = r } + +// GetCondition of this Vsphere. +func (mg *Vsphere) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this Vsphere. +func (mg *Vsphere) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetProviderConfigReference of this Vsphere. +func (mg *Vsphere) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +/* +GetProviderReference of this Vsphere. +Deprecated: Use GetProviderConfigReference. +*/ +func (mg *Vsphere) GetProviderReference() *xpv1.Reference { + return mg.Spec.ProviderReference +} + +// GetPublishConnectionDetailsTo of this Vsphere. +func (mg *Vsphere) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this Vsphere. +func (mg *Vsphere) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this Vsphere. +func (mg *Vsphere) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this Vsphere. +func (mg *Vsphere) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetProviderConfigReference of this Vsphere. +func (mg *Vsphere) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +/* +SetProviderReference of this Vsphere. +Deprecated: Use SetProviderConfigReference. +*/ +func (mg *Vsphere) SetProviderReference(r *xpv1.Reference) { + mg.Spec.ProviderReference = r +} + +// SetPublishConnectionDetailsTo of this Vsphere. +func (mg *Vsphere) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this Vsphere. +func (mg *Vsphere) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} diff --git a/apis/cloudaccount/v1alpha1/zz_generated.managedlist.go b/apis/cloudaccount/v1alpha1/zz_generated.managedlist.go index 59a64ae..0f1f0df 100644 --- a/apis/cloudaccount/v1alpha1/zz_generated.managedlist.go +++ b/apis/cloudaccount/v1alpha1/zz_generated.managedlist.go @@ -60,3 +60,12 @@ func (l *TencentList) GetItems() []resource.Managed { } return items } + +// GetItems of this VsphereList. +func (l *VsphereList) 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/cloudaccount/v1alpha1/zz_generated_terraformed.go b/apis/cloudaccount/v1alpha1/zz_generated_terraformed.go index f3dfa90..51aa0b0 100755 --- a/apis/cloudaccount/v1alpha1/zz_generated_terraformed.go +++ b/apis/cloudaccount/v1alpha1/zz_generated_terraformed.go @@ -456,3 +456,77 @@ func (tr *Tencent) LateInitialize(attrs []byte) (bool, error) { func (tr *Tencent) GetTerraformSchemaVersion() int { return 0 } + +// GetTerraformResourceType returns Terraform resource type for this Vsphere +func (mg *Vsphere) GetTerraformResourceType() string { + return "spectrocloud_cloudaccount_vsphere" +} + +// GetConnectionDetailsMapping for this Vsphere +func (tr *Vsphere) GetConnectionDetailsMapping() map[string]string { + return map[string]string{"vsphere_password": "spec.forProvider.vspherePasswordSecretRef"} +} + +// GetObservation of this Vsphere +func (tr *Vsphere) 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 Vsphere +func (tr *Vsphere) 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 Vsphere +func (tr *Vsphere) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this Vsphere +func (tr *Vsphere) 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 Vsphere +func (tr *Vsphere) 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) +} + +// LateInitialize this Vsphere using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *Vsphere) LateInitialize(attrs []byte) (bool, error) { + params := &VsphereParameters{} + 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 *Vsphere) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/cloudaccount/v1alpha1/zz_vsphere_types.go b/apis/cloudaccount/v1alpha1/zz_vsphere_types.go new file mode 100755 index 0000000..8b75fa6 --- /dev/null +++ b/apis/cloudaccount/v1alpha1/zz_vsphere_types.go @@ -0,0 +1,94 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// 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 VsphereObservation struct { + ID *string `json:"id,omitempty" tf:"id,omitempty"` +} + +type VsphereParameters struct { + + // Context of the cloud account. This can be either project or tenant. If not specified, the default value is project. + // +kubebuilder:validation:Optional + Context *string `json:"context,omitempty" tf:"context,omitempty"` + + // ID of the private cloud gateway. This is the ID of the private cloud gateway that is used to connect to the vSphere cloud. + // +kubebuilder:validation:Required + PrivateCloudGatewayID *string `json:"privateCloudGatewayId" tf:"private_cloud_gateway_id,omitempty"` + + // Ignore insecure error. This is a boolean value that indicates whether to ignore the insecure error or not. If not specified, the default value is false. + // +kubebuilder:validation:Optional + VsphereIgnoreInsecureError *bool `json:"vsphereIgnoreInsecureError,omitempty" tf:"vsphere_ignore_insecure_error,omitempty"` + + // Password of the vSphere cloud. This is the password of the vSphere cloud that is used to connect to the vSphere cloud. + // +kubebuilder:validation:Required + VspherePasswordSecretRef v1.SecretKeySelector `json:"vspherePasswordSecretRef" tf:"-"` + + // Username of the vSphere cloud. This is the username of the vSphere cloud that is used to connect to the vSphere cloud. + // +kubebuilder:validation:Required + VsphereUsername *string `json:"vsphereUsername" tf:"vsphere_username,omitempty"` + + // vCenter server address. This is the address of the vCenter server that is used to connect to the vSphere cloud. + // +kubebuilder:validation:Required + VsphereVcenter *string `json:"vsphereVcenter" tf:"vsphere_vcenter,omitempty"` +} + +// VsphereSpec defines the desired state of Vsphere +type VsphereSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider VsphereParameters `json:"forProvider"` +} + +// VsphereStatus defines the observed state of Vsphere. +type VsphereStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider VsphereObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true + +// Vsphere is the Schema for the Vspheres API. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].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:subresource:status +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,palette} +type Vsphere struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec VsphereSpec `json:"spec"` + Status VsphereStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// VsphereList contains a list of Vspheres +type VsphereList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Vsphere `json:"items"` +} + +// Repository type metadata. +var ( + Vsphere_Kind = "Vsphere" + Vsphere_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: Vsphere_Kind}.String() + Vsphere_KindAPIVersion = Vsphere_Kind + "." + CRDGroupVersion.String() + Vsphere_GroupVersionKind = CRDGroupVersion.WithKind(Vsphere_Kind) +) + +func init() { + SchemeBuilder.Register(&Vsphere{}, &VsphereList{}) +} diff --git a/apis/cluster/v1alpha1/zz_aks_types.go b/apis/cluster/v1alpha1/zz_aks_types.go index 4a2c460..5037657 100755 --- a/apis/cluster/v1alpha1/zz_aks_types.go +++ b/apis/cluster/v1alpha1/zz_aks_types.go @@ -14,33 +14,21 @@ import ( ) type AksObservation struct { + + // ID of the cloud config used for the cluster. This cloud config must be of type `azure`. CloudConfigID *string `json:"cloudConfigId,omitempty" tf:"cloud_config_id,omitempty"` + // +kubebuilder:validation:Optional + ClusterProfile []ClusterProfileObservation `json:"clusterProfile,omitempty" tf:"cluster_profile,omitempty"` + ID *string `json:"id,omitempty" tf:"id,omitempty"` + // Kubeconfig for the cluster. This can be used to connect to the cluster using `kubectl`. Kubeconfig *string `json:"kubeconfig,omitempty" tf:"kubeconfig,omitempty"` LocationConfig []LocationConfigObservation `json:"locationConfig,omitempty" tf:"location_config,omitempty"` } -type AksPackObservation struct { -} - -type AksPackParameters struct { - - // +kubebuilder:validation:Required - Name *string `json:"name" tf:"name,omitempty"` - - // +kubebuilder:validation:Optional - RegistryUID *string `json:"registryUid,omitempty" tf:"registry_uid,omitempty"` - - // +kubebuilder:validation:Required - Tag *string `json:"tag" tf:"tag,omitempty"` - - // +kubebuilder:validation:Required - Values *string `json:"values" tf:"values,omitempty"` -} - type AksParameters struct { // +kubebuilder:validation:Optional @@ -70,24 +58,26 @@ type AksParameters struct { // +kubebuilder:validation:Optional Namespaces []NamespacesParameters `json:"namespaces,omitempty" tf:"namespaces,omitempty"` + // The date and time after which to patch the cluster. Prefix the time value with the respective RFC. Ex: `RFC3339: 2006-01-02T15:04:05Z07:00` // +kubebuilder:validation:Optional OsPatchAfter *string `json:"osPatchAfter,omitempty" tf:"os_patch_after,omitempty"` + // Whether to apply OS patch on boot. Default is `false`. // +kubebuilder:validation:Optional OsPatchOnBoot *bool `json:"osPatchOnBoot,omitempty" tf:"os_patch_on_boot,omitempty"` + // The cron schedule for OS patching. This must be in the form of cron syntax. Ex: `0 0 * * *`. // +kubebuilder:validation:Optional OsPatchSchedule *string `json:"osPatchSchedule,omitempty" tf:"os_patch_schedule,omitempty"` - // +kubebuilder:validation:Optional - Pack []AksPackParameters `json:"pack,omitempty" tf:"pack,omitempty"` - // +kubebuilder:validation:Optional ScanPolicy []ScanPolicyParameters `json:"scanPolicy,omitempty" tf:"scan_policy,omitempty"` + // If `true`, the cluster will be created asynchronously. Default value is `false`. // +kubebuilder:validation:Optional SkipCompletion *bool `json:"skipCompletion,omitempty" tf:"skip_completion,omitempty"` + // A list of tags to be applied to the cluster. Tags must be in the form of `key:value`. // +kubebuilder:validation:Optional Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` } @@ -97,24 +87,39 @@ type BackupPolicyObservation struct { type BackupPolicyParameters struct { + // The ID of the backup location to use for the backup. // +kubebuilder:validation:Required BackupLocationID *string `json:"backupLocationId" tf:"backup_location_id,omitempty"` + // The list of cluster UIDs to include in the backup. If `include_all_clusters` is set to `true`, then all clusters will be included. + // +kubebuilder:validation:Optional + ClusterUids []*string `json:"clusterUids,omitempty" tf:"cluster_uids,omitempty"` + + // The number of hours after which the backup will be deleted. For example, if the expiry is set to 24, the backup will be deleted after 24 hours. // +kubebuilder:validation:Required ExpiryInHour *float64 `json:"expiryInHour" tf:"expiry_in_hour,omitempty"` + // Whether to include all clusters in the backup. If set to false, only the clusters specified in `cluster_uids` will be included. + // +kubebuilder:validation:Optional + IncludeAllClusters *bool `json:"includeAllClusters,omitempty" tf:"include_all_clusters,omitempty"` + + // Whether to include the cluster resources in the backup. If set to false, only the cluster configuration and disks will be backed up. // +kubebuilder:validation:Optional IncludeClusterResources *bool `json:"includeClusterResources,omitempty" tf:"include_cluster_resources,omitempty"` + // Whether to include the disks in the backup. If set to false, only the cluster configuration will be backed up. // +kubebuilder:validation:Optional IncludeDisks *bool `json:"includeDisks,omitempty" tf:"include_disks,omitempty"` + // The list of Kubernetes namespaces to include in the backup. If not specified, all namespaces will be included. // +kubebuilder:validation:Optional Namespaces []*string `json:"namespaces,omitempty" tf:"namespaces,omitempty"` + // Prefix for the backup name. The backup name will be of the format --. // +kubebuilder:validation:Required Prefix *string `json:"prefix" tf:"prefix,omitempty"` + // The schedule for the backup. The schedule is specified in cron format. For example, to run the backup every day at 1:00 AM, the schedule should be set to `0 1 * * *`. // +kubebuilder:validation:Required Schedule *string `json:"schedule" tf:"schedule,omitempty"` } @@ -153,10 +158,14 @@ type CloudConfigParameters struct { } type ClusterProfileObservation struct { + + // +kubebuilder:validation:Optional + Pack []PackObservation `json:"pack,omitempty" tf:"pack,omitempty"` } type ClusterProfileParameters struct { + // The ID of the cluster profile. // +kubebuilder:validation:Required ID *string `json:"id" tf:"id,omitempty"` @@ -169,15 +178,18 @@ type ClusterRbacBindingObservation struct { type ClusterRbacBindingParameters struct { + // The Kubernetes namespace of the RBAC binding. Required if 'type' is set to 'RoleBinding'. // +kubebuilder:validation:Optional Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` + // The role of the RBAC binding. Required if 'type' is set to 'RoleBinding'. // +kubebuilder:validation:Optional Role map[string]*string `json:"role,omitempty" tf:"role,omitempty"` // +kubebuilder:validation:Optional Subjects []SubjectsParameters `json:"subjects,omitempty" tf:"subjects,omitempty"` + // The type of the RBAC binding. Can be one of the following values: `RoleBinding`, or `ClusterRoleBinding`. // +kubebuilder:validation:Required Type *string `json:"type" tf:"type,omitempty"` } @@ -229,6 +241,7 @@ type MachinePoolParameters struct { // +kubebuilder:validation:Optional AdditionalLabels map[string]*string `json:"additionalLabels,omitempty" tf:"additional_labels,omitempty"` + // Number of nodes in the machine pool. // +kubebuilder:validation:Required Count *float64 `json:"count" tf:"count,omitempty"` @@ -256,18 +269,22 @@ type MachinePoolParameters struct { // +kubebuilder:validation:Optional Taints []TaintsParameters `json:"taints,omitempty" tf:"taints,omitempty"` + // Update strategy for the machine pool. Valid values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`. // +kubebuilder:validation:Optional UpdateStrategy *string `json:"updateStrategy,omitempty" tf:"update_strategy,omitempty"` } type ManifestObservation struct { + UID *string `json:"uid,omitempty" tf:"uid,omitempty"` } type ManifestParameters struct { + // The content of the manifest. The content is the YAML content of the manifest. // +kubebuilder:validation:Required Content *string `json:"content" tf:"content,omitempty"` + // The name of the manifest. The name must be unique within the pack. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` } @@ -277,14 +294,23 @@ type NamespacesObservation struct { type NamespacesParameters struct { + // List of images to disallow for the namespace. For example, `['nginx:latest', 'redis:latest']` + // +kubebuilder:validation:Optional + ImagesBlacklist []*string `json:"imagesBlacklist,omitempty" tf:"images_blacklist,omitempty"` + + // Name of the namespace. This is the name of the Kubernetes namespace in the cluster. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // Resource allocation for the namespace. This is a map containing the resource type and the resource value. For example, `{cpu_cores: '2', memory_MiB: '2048'}` // +kubebuilder:validation:Required ResourceAllocation map[string]*string `json:"resourceAllocation" tf:"resource_allocation,omitempty"` } type PackObservation struct { + + // +kubebuilder:validation:Optional + Manifest []ManifestObservation `json:"manifest,omitempty" tf:"manifest,omitempty"` } type PackParameters struct { @@ -292,18 +318,26 @@ type PackParameters struct { // +kubebuilder:validation:Optional Manifest []ManifestParameters `json:"manifest,omitempty" tf:"manifest,omitempty"` + // The name of the pack. The name must be unique within the cluster profile. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // The registry UID of the pack. The registry UID is the unique identifier of the registry. // +kubebuilder:validation:Optional RegistryUID *string `json:"registryUid,omitempty" tf:"registry_uid,omitempty"` + // The tag of the pack. The tag is the version of the pack. // +kubebuilder:validation:Optional Tag *string `json:"tag,omitempty" tf:"tag,omitempty"` + // The type of the pack. The default value is `spectro`. // +kubebuilder:validation:Optional Type *string `json:"type,omitempty" tf:"type,omitempty"` + // +kubebuilder:validation:Optional + UID *string `json:"uid,omitempty" tf:"uid,omitempty"` + + // The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. // +kubebuilder:validation:Required Values *string `json:"values" tf:"values,omitempty"` } @@ -313,12 +347,15 @@ type ScanPolicyObservation struct { type ScanPolicyParameters struct { + // The schedule for configuration scan. // +kubebuilder:validation:Required ConfigurationScanSchedule *string `json:"configurationScanSchedule" tf:"configuration_scan_schedule,omitempty"` + // The schedule for conformance scan. // +kubebuilder:validation:Required ConformanceScanSchedule *string `json:"conformanceScanSchedule" tf:"conformance_scan_schedule,omitempty"` + // The schedule for penetration scan. // +kubebuilder:validation:Required PenetrationScanSchedule *string `json:"penetrationScanSchedule" tf:"penetration_scan_schedule,omitempty"` } @@ -328,12 +365,15 @@ type SubjectsObservation struct { type SubjectsParameters struct { + // The name of the subject. Required if 'type' is set to 'User' or 'Group'. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // The Kubernetes namespace of the subject. Required if 'type' is set to 'ServiceAccount'. // +kubebuilder:validation:Optional Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` + // The type of the subject. Can be one of the following values: `User`, `Group`, or `ServiceAccount`. // +kubebuilder:validation:Required Type *string `json:"type" tf:"type,omitempty"` } @@ -343,12 +383,15 @@ type TaintsObservation struct { type TaintsParameters struct { + // The effect of the taint. Allowed values are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`. // +kubebuilder:validation:Required Effect *string `json:"effect" tf:"effect,omitempty"` + // The key of the taint. // +kubebuilder:validation:Required Key *string `json:"key" tf:"key,omitempty"` + // The value of the taint. // +kubebuilder:validation:Required Value *string `json:"value" tf:"value,omitempty"` } diff --git a/apis/cluster/v1alpha1/zz_aws_types.go b/apis/cluster/v1alpha1/zz_aws_types.go index 98ea90e..2b18cea 100755 --- a/apis/cluster/v1alpha1/zz_aws_types.go +++ b/apis/cluster/v1alpha1/zz_aws_types.go @@ -18,24 +18,39 @@ type AwsBackupPolicyObservation struct { type AwsBackupPolicyParameters struct { + // The ID of the backup location to use for the backup. // +kubebuilder:validation:Required BackupLocationID *string `json:"backupLocationId" tf:"backup_location_id,omitempty"` + // The list of cluster UIDs to include in the backup. If `include_all_clusters` is set to `true`, then all clusters will be included. + // +kubebuilder:validation:Optional + ClusterUids []*string `json:"clusterUids,omitempty" tf:"cluster_uids,omitempty"` + + // The number of hours after which the backup will be deleted. For example, if the expiry is set to 24, the backup will be deleted after 24 hours. // +kubebuilder:validation:Required ExpiryInHour *float64 `json:"expiryInHour" tf:"expiry_in_hour,omitempty"` + // Whether to include all clusters in the backup. If set to false, only the clusters specified in `cluster_uids` will be included. + // +kubebuilder:validation:Optional + IncludeAllClusters *bool `json:"includeAllClusters,omitempty" tf:"include_all_clusters,omitempty"` + + // Whether to include the cluster resources in the backup. If set to false, only the cluster configuration and disks will be backed up. // +kubebuilder:validation:Optional IncludeClusterResources *bool `json:"includeClusterResources,omitempty" tf:"include_cluster_resources,omitempty"` + // Whether to include the disks in the backup. If set to false, only the cluster configuration will be backed up. // +kubebuilder:validation:Optional IncludeDisks *bool `json:"includeDisks,omitempty" tf:"include_disks,omitempty"` + // The list of Kubernetes namespaces to include in the backup. If not specified, all namespaces will be included. // +kubebuilder:validation:Optional Namespaces []*string `json:"namespaces,omitempty" tf:"namespaces,omitempty"` + // Prefix for the backup name. The backup name will be of the format --. // +kubebuilder:validation:Required Prefix *string `json:"prefix" tf:"prefix,omitempty"` + // The schedule for the backup. The schedule is specified in cron format. For example, to run the backup every day at 1:00 AM, the schedule should be set to `0 1 * * *`. // +kubebuilder:validation:Required Schedule *string `json:"schedule" tf:"schedule,omitempty"` } @@ -56,10 +71,14 @@ type AwsCloudConfigParameters struct { } type AwsClusterProfileObservation struct { + + // +kubebuilder:validation:Optional + Pack []ClusterProfilePackObservation `json:"pack,omitempty" tf:"pack,omitempty"` } type AwsClusterProfileParameters struct { + // The ID of the cluster profile. // +kubebuilder:validation:Required ID *string `json:"id" tf:"id,omitempty"` @@ -72,15 +91,18 @@ type AwsClusterRbacBindingObservation struct { type AwsClusterRbacBindingParameters struct { + // The Kubernetes namespace of the RBAC binding. Required if 'type' is set to 'RoleBinding'. // +kubebuilder:validation:Optional Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` + // The role of the RBAC binding. Required if 'type' is set to 'RoleBinding'. // +kubebuilder:validation:Optional Role map[string]*string `json:"role,omitempty" tf:"role,omitempty"` // +kubebuilder:validation:Optional Subjects []ClusterRbacBindingSubjectsParameters `json:"subjects,omitempty" tf:"subjects,omitempty"` + // The type of the RBAC binding. Can be one of the following values: `RoleBinding`, or `ClusterRoleBinding`. // +kubebuilder:validation:Required Type *string `json:"type" tf:"type,omitempty"` } @@ -144,12 +166,15 @@ type AwsMachinePoolParameters struct { // +kubebuilder:validation:Optional CapacityType *string `json:"capacityType,omitempty" tf:"capacity_type,omitempty"` + // Whether this machine pool is a control plane. Defaults to `false`. // +kubebuilder:validation:Optional ControlPlane *bool `json:"controlPlane,omitempty" tf:"control_plane,omitempty"` + // Whether this machine pool is a control plane and a worker. Defaults to `false`. // +kubebuilder:validation:Optional ControlPlaneAsWorker *bool `json:"controlPlaneAsWorker,omitempty" tf:"control_plane_as_worker,omitempty"` + // Number of nodes in the machine pool. // +kubebuilder:validation:Required Count *float64 `json:"count" tf:"count,omitempty"` @@ -168,6 +193,7 @@ type AwsMachinePoolParameters struct { // +kubebuilder:validation:Optional Taints []MachinePoolTaintsParameters `json:"taints,omitempty" tf:"taints,omitempty"` + // Update strategy for the machine pool. Valid values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`. // +kubebuilder:validation:Optional UpdateStrategy *string `json:"updateStrategy,omitempty" tf:"update_strategy,omitempty"` } @@ -177,41 +203,35 @@ type AwsNamespacesObservation struct { type AwsNamespacesParameters struct { + // List of images to disallow for the namespace. For example, `['nginx:latest', 'redis:latest']` + // +kubebuilder:validation:Optional + ImagesBlacklist []*string `json:"imagesBlacklist,omitempty" tf:"images_blacklist,omitempty"` + + // Name of the namespace. This is the name of the Kubernetes namespace in the cluster. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // Resource allocation for the namespace. This is a map containing the resource type and the resource value. For example, `{cpu_cores: '2', memory_MiB: '2048'}` // +kubebuilder:validation:Required ResourceAllocation map[string]*string `json:"resourceAllocation" tf:"resource_allocation,omitempty"` } type AwsObservation struct { + + // ID of the cloud config used for the cluster. This cloud config must be of type `azure`. CloudConfigID *string `json:"cloudConfigId,omitempty" tf:"cloud_config_id,omitempty"` + // +kubebuilder:validation:Optional + ClusterProfile []AwsClusterProfileObservation `json:"clusterProfile,omitempty" tf:"cluster_profile,omitempty"` + ID *string `json:"id,omitempty" tf:"id,omitempty"` + // Kubeconfig for the cluster. This can be used to connect to the cluster using `kubectl`. Kubeconfig *string `json:"kubeconfig,omitempty" tf:"kubeconfig,omitempty"` LocationConfig []AwsLocationConfigObservation `json:"locationConfig,omitempty" tf:"location_config,omitempty"` } -type AwsPackObservation struct { -} - -type AwsPackParameters struct { - - // +kubebuilder:validation:Required - Name *string `json:"name" tf:"name,omitempty"` - - // +kubebuilder:validation:Optional - RegistryUID *string `json:"registryUid,omitempty" tf:"registry_uid,omitempty"` - - // +kubebuilder:validation:Required - Tag *string `json:"tag" tf:"tag,omitempty"` - - // +kubebuilder:validation:Required - Values *string `json:"values" tf:"values,omitempty"` -} - type AwsParameters struct { // +kubebuilder:validation:Optional @@ -229,9 +249,6 @@ type AwsParameters struct { // +kubebuilder:validation:Optional ClusterProfile []AwsClusterProfileParameters `json:"clusterProfile,omitempty" tf:"cluster_profile,omitempty"` - // +kubebuilder:validation:Optional - ClusterProfileID *string `json:"clusterProfileId,omitempty" tf:"cluster_profile_id,omitempty"` - // +kubebuilder:validation:Optional ClusterRbacBinding []AwsClusterRbacBindingParameters `json:"clusterRbacBinding,omitempty" tf:"cluster_rbac_binding,omitempty"` @@ -244,24 +261,26 @@ type AwsParameters struct { // +kubebuilder:validation:Optional Namespaces []AwsNamespacesParameters `json:"namespaces,omitempty" tf:"namespaces,omitempty"` + // Date and time after which to patch cluster `RFC3339: 2006-01-02T15:04:05Z07:00` // +kubebuilder:validation:Optional OsPatchAfter *string `json:"osPatchAfter,omitempty" tf:"os_patch_after,omitempty"` + // Whether to apply OS patch on boot. Default is `false`. // +kubebuilder:validation:Optional OsPatchOnBoot *bool `json:"osPatchOnBoot,omitempty" tf:"os_patch_on_boot,omitempty"` + // The cron schedule for OS patching. This must be in the form of cron syntax. Ex: `0 0 * * *`. // +kubebuilder:validation:Optional OsPatchSchedule *string `json:"osPatchSchedule,omitempty" tf:"os_patch_schedule,omitempty"` - // +kubebuilder:validation:Optional - Pack []AwsPackParameters `json:"pack,omitempty" tf:"pack,omitempty"` - // +kubebuilder:validation:Optional ScanPolicy []AwsScanPolicyParameters `json:"scanPolicy,omitempty" tf:"scan_policy,omitempty"` + // If `true`, the cluster will be created asynchronously. Default value is `false`. // +kubebuilder:validation:Optional SkipCompletion *bool `json:"skipCompletion,omitempty" tf:"skip_completion,omitempty"` + // A list of tags to be applied to the cluster. Tags must be in the form of `key:value`. // +kubebuilder:validation:Optional Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` } @@ -271,17 +290,23 @@ type AwsScanPolicyObservation struct { type AwsScanPolicyParameters struct { + // The schedule for configuration scan. // +kubebuilder:validation:Required ConfigurationScanSchedule *string `json:"configurationScanSchedule" tf:"configuration_scan_schedule,omitempty"` + // The schedule for conformance scan. // +kubebuilder:validation:Required ConformanceScanSchedule *string `json:"conformanceScanSchedule" tf:"conformance_scan_schedule,omitempty"` + // The schedule for penetration scan. // +kubebuilder:validation:Required PenetrationScanSchedule *string `json:"penetrationScanSchedule" tf:"penetration_scan_schedule,omitempty"` } type ClusterProfilePackObservation struct { + + // +kubebuilder:validation:Optional + Manifest []PackManifestObservation `json:"manifest,omitempty" tf:"manifest,omitempty"` } type ClusterProfilePackParameters struct { @@ -289,18 +314,26 @@ type ClusterProfilePackParameters struct { // +kubebuilder:validation:Optional Manifest []PackManifestParameters `json:"manifest,omitempty" tf:"manifest,omitempty"` + // The name of the pack. The name must be unique within the cluster profile. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // The registry UID of the pack. The registry UID is the unique identifier of the registry. // +kubebuilder:validation:Optional RegistryUID *string `json:"registryUid,omitempty" tf:"registry_uid,omitempty"` + // The tag of the pack. The tag is the version of the pack. // +kubebuilder:validation:Optional Tag *string `json:"tag,omitempty" tf:"tag,omitempty"` + // The type of the pack. The default value is `spectro`. // +kubebuilder:validation:Optional Type *string `json:"type,omitempty" tf:"type,omitempty"` + // +kubebuilder:validation:Optional + UID *string `json:"uid,omitempty" tf:"uid,omitempty"` + + // The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. // +kubebuilder:validation:Required Values *string `json:"values" tf:"values,omitempty"` } @@ -310,12 +343,15 @@ type ClusterRbacBindingSubjectsObservation struct { type ClusterRbacBindingSubjectsParameters struct { + // The name of the subject. Required if 'type' is set to 'User' or 'Group'. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // The Kubernetes namespace of the subject. Required if 'type' is set to 'ServiceAccount'. // +kubebuilder:validation:Optional Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` + // The type of the subject. Can be one of the following values: `User`, `Group`, or `ServiceAccount`. // +kubebuilder:validation:Required Type *string `json:"type" tf:"type,omitempty"` } @@ -325,24 +361,30 @@ type MachinePoolTaintsObservation struct { type MachinePoolTaintsParameters struct { + // The effect of the taint. Allowed values are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`. // +kubebuilder:validation:Required Effect *string `json:"effect" tf:"effect,omitempty"` + // The key of the taint. // +kubebuilder:validation:Required Key *string `json:"key" tf:"key,omitempty"` + // The value of the taint. // +kubebuilder:validation:Required Value *string `json:"value" tf:"value,omitempty"` } type PackManifestObservation struct { + UID *string `json:"uid,omitempty" tf:"uid,omitempty"` } type PackManifestParameters struct { + // The content of the manifest. The content is the YAML content of the manifest. // +kubebuilder:validation:Required Content *string `json:"content" tf:"content,omitempty"` + // The name of the manifest. The name must be unique within the pack. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` } diff --git a/apis/cluster/v1alpha1/zz_azure_types.go b/apis/cluster/v1alpha1/zz_azure_types.go index 33472cf..ff97983 100755 --- a/apis/cluster/v1alpha1/zz_azure_types.go +++ b/apis/cluster/v1alpha1/zz_azure_types.go @@ -18,24 +18,39 @@ type AzureBackupPolicyObservation struct { type AzureBackupPolicyParameters struct { + // The ID of the backup location to use for the backup. // +kubebuilder:validation:Required BackupLocationID *string `json:"backupLocationId" tf:"backup_location_id,omitempty"` + // The list of cluster UIDs to include in the backup. If `include_all_clusters` is set to `true`, then all clusters will be included. + // +kubebuilder:validation:Optional + ClusterUids []*string `json:"clusterUids,omitempty" tf:"cluster_uids,omitempty"` + + // The number of hours after which the backup will be deleted. For example, if the expiry is set to 24, the backup will be deleted after 24 hours. // +kubebuilder:validation:Required ExpiryInHour *float64 `json:"expiryInHour" tf:"expiry_in_hour,omitempty"` + // Whether to include all clusters in the backup. If set to false, only the clusters specified in `cluster_uids` will be included. + // +kubebuilder:validation:Optional + IncludeAllClusters *bool `json:"includeAllClusters,omitempty" tf:"include_all_clusters,omitempty"` + + // Whether to include the cluster resources in the backup. If set to false, only the cluster configuration and disks will be backed up. // +kubebuilder:validation:Optional IncludeClusterResources *bool `json:"includeClusterResources,omitempty" tf:"include_cluster_resources,omitempty"` + // Whether to include the disks in the backup. If set to false, only the cluster configuration will be backed up. // +kubebuilder:validation:Optional IncludeDisks *bool `json:"includeDisks,omitempty" tf:"include_disks,omitempty"` + // The list of Kubernetes namespaces to include in the backup. If not specified, all namespaces will be included. // +kubebuilder:validation:Optional Namespaces []*string `json:"namespaces,omitempty" tf:"namespaces,omitempty"` + // Prefix for the backup name. The backup name will be of the format --. // +kubebuilder:validation:Required Prefix *string `json:"prefix" tf:"prefix,omitempty"` + // The schedule for the backup. The schedule is specified in cron format. For example, to run the backup every day at 1:00 AM, the schedule should be set to `0 1 * * *`. // +kubebuilder:validation:Required Schedule *string `json:"schedule" tf:"schedule,omitempty"` } @@ -45,23 +60,33 @@ type AzureCloudConfigObservation struct { type AzureCloudConfigParameters struct { + // Azure region. This can be found in the Azure portal under `Resource groups`. // +kubebuilder:validation:Required Region *string `json:"region" tf:"region,omitempty"` + // Azure resource group. This can be found in the Azure portal under `Resource groups`. // +kubebuilder:validation:Required ResourceGroup *string `json:"resourceGroup" tf:"resource_group,omitempty"` + // SSH key to be used for the cluster nodes. // +kubebuilder:validation:Required SSHKey *string `json:"sshKey" tf:"ssh_key,omitempty"` + // Azure subscription ID. This can be found in the Azure portal under `Subscriptions`. // +kubebuilder:validation:Required SubscriptionID *string `json:"subscriptionId" tf:"subscription_id,omitempty"` } type AzureClusterProfileObservation struct { + + // +kubebuilder:validation:Optional + Pack []AzureClusterProfilePackObservation `json:"pack,omitempty" tf:"pack,omitempty"` } type AzureClusterProfilePackObservation struct { + + // +kubebuilder:validation:Optional + Manifest []ClusterProfilePackManifestObservation `json:"manifest,omitempty" tf:"manifest,omitempty"` } type AzureClusterProfilePackParameters struct { @@ -69,24 +94,33 @@ type AzureClusterProfilePackParameters struct { // +kubebuilder:validation:Optional Manifest []ClusterProfilePackManifestParameters `json:"manifest,omitempty" tf:"manifest,omitempty"` + // The name of the pack. The name must be unique within the cluster profile. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // The registry UID of the pack. The registry UID is the unique identifier of the registry. // +kubebuilder:validation:Optional RegistryUID *string `json:"registryUid,omitempty" tf:"registry_uid,omitempty"` + // The tag of the pack. The tag is the version of the pack. // +kubebuilder:validation:Optional Tag *string `json:"tag,omitempty" tf:"tag,omitempty"` + // The type of the pack. The default value is `spectro`. // +kubebuilder:validation:Optional Type *string `json:"type,omitempty" tf:"type,omitempty"` + // +kubebuilder:validation:Optional + UID *string `json:"uid,omitempty" tf:"uid,omitempty"` + + // The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. // +kubebuilder:validation:Required Values *string `json:"values" tf:"values,omitempty"` } type AzureClusterProfileParameters struct { + // The ID of the cluster profile. // +kubebuilder:validation:Required ID *string `json:"id" tf:"id,omitempty"` @@ -99,15 +133,18 @@ type AzureClusterRbacBindingObservation struct { type AzureClusterRbacBindingParameters struct { + // The Kubernetes namespace of the RBAC binding. Required if 'type' is set to 'RoleBinding'. // +kubebuilder:validation:Optional Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` + // The role of the RBAC binding. Required if 'type' is set to 'RoleBinding'. // +kubebuilder:validation:Optional Role map[string]*string `json:"role,omitempty" tf:"role,omitempty"` // +kubebuilder:validation:Optional Subjects []AzureClusterRbacBindingSubjectsParameters `json:"subjects,omitempty" tf:"subjects,omitempty"` + // The type of the RBAC binding. Can be one of the following values: `RoleBinding`, or `ClusterRoleBinding`. // +kubebuilder:validation:Required Type *string `json:"type" tf:"type,omitempty"` } @@ -117,12 +154,15 @@ type AzureClusterRbacBindingSubjectsObservation struct { type AzureClusterRbacBindingSubjectsParameters struct { + // The name of the subject. Required if 'type' is set to 'User' or 'Group'. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // The Kubernetes namespace of the subject. Required if 'type' is set to 'ServiceAccount'. // +kubebuilder:validation:Optional Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` + // The type of the subject. Can be one of the following values: `User`, `Group`, or `ServiceAccount`. // +kubebuilder:validation:Required Type *string `json:"type" tf:"type,omitempty"` } @@ -174,36 +214,46 @@ type AzureMachinePoolParameters struct { // +kubebuilder:validation:Optional AdditionalLabels map[string]*string `json:"additionalLabels,omitempty" tf:"additional_labels,omitempty"` + // Availability zones for the machine pool. // +kubebuilder:validation:Required Azs []*string `json:"azs" tf:"azs,omitempty"` + // Whether this machine pool is a control plane. Defaults to `false`. // +kubebuilder:validation:Optional ControlPlane *bool `json:"controlPlane,omitempty" tf:"control_plane,omitempty"` + // Whether this machine pool is a control plane and a worker. Defaults to `false`. // +kubebuilder:validation:Optional ControlPlaneAsWorker *bool `json:"controlPlaneAsWorker,omitempty" tf:"control_plane_as_worker,omitempty"` + // Number of nodes in the machine pool. // +kubebuilder:validation:Required Count *float64 `json:"count" tf:"count,omitempty"` + // Disk configuration for the machine pool. // +kubebuilder:validation:Optional Disk []DiskParameters `json:"disk,omitempty" tf:"disk,omitempty"` + // Azure instance type from the Azure portal. // +kubebuilder:validation:Required InstanceType *string `json:"instanceType" tf:"instance_type,omitempty"` - // +kubebuilder:validation:Required - IsSystemNodePool *bool `json:"isSystemNodePool" tf:"is_system_node_pool,omitempty"` + // Whether this machine pool is a system node pool. Default value is `false'. + // +kubebuilder:validation:Optional + IsSystemNodePool *bool `json:"isSystemNodePool,omitempty" tf:"is_system_node_pool,omitempty"` + // Name of the machine pool. This must be unique within the cluster. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // Operating system type for the machine pool. Valid values are `Linux` and `Windows`. Defaults to `Linux`. // +kubebuilder:validation:Optional OsType *string `json:"osType,omitempty" tf:"os_type,omitempty"` // +kubebuilder:validation:Optional Taints []AzureMachinePoolTaintsParameters `json:"taints,omitempty" tf:"taints,omitempty"` + // Update strategy for the machine pool. Valid values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`. // +kubebuilder:validation:Optional UpdateStrategy *string `json:"updateStrategy,omitempty" tf:"update_strategy,omitempty"` } @@ -213,12 +263,15 @@ type AzureMachinePoolTaintsObservation struct { type AzureMachinePoolTaintsParameters struct { + // The effect of the taint. Allowed values are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`. // +kubebuilder:validation:Required Effect *string `json:"effect" tf:"effect,omitempty"` + // The key of the taint. // +kubebuilder:validation:Required Key *string `json:"key" tf:"key,omitempty"` + // The value of the taint. // +kubebuilder:validation:Required Value *string `json:"value" tf:"value,omitempty"` } @@ -228,49 +281,45 @@ type AzureNamespacesObservation struct { type AzureNamespacesParameters struct { + // List of images to disallow for the namespace. For example, `['nginx:latest', 'redis:latest']` + // +kubebuilder:validation:Optional + ImagesBlacklist []*string `json:"imagesBlacklist,omitempty" tf:"images_blacklist,omitempty"` + + // Name of the namespace. This is the name of the Kubernetes namespace in the cluster. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // Resource allocation for the namespace. This is a map containing the resource type and the resource value. For example, `{cpu_cores: '2', memory_MiB: '2048'}` // +kubebuilder:validation:Required ResourceAllocation map[string]*string `json:"resourceAllocation" tf:"resource_allocation,omitempty"` } type AzureObservation struct { + + // ID of the cloud config used for the cluster. This cloud config must be of type `azure`. CloudConfigID *string `json:"cloudConfigId,omitempty" tf:"cloud_config_id,omitempty"` + // +kubebuilder:validation:Optional + ClusterProfile []AzureClusterProfileObservation `json:"clusterProfile,omitempty" tf:"cluster_profile,omitempty"` + ID *string `json:"id,omitempty" tf:"id,omitempty"` + // Kubeconfig for the cluster. This can be used to connect to the cluster using `kubectl`. Kubeconfig *string `json:"kubeconfig,omitempty" tf:"kubeconfig,omitempty"` LocationConfig []AzureLocationConfigObservation `json:"locationConfig,omitempty" tf:"location_config,omitempty"` } -type AzurePackObservation struct { -} - -type AzurePackParameters struct { - - // +kubebuilder:validation:Required - Name *string `json:"name" tf:"name,omitempty"` - - // +kubebuilder:validation:Optional - RegistryUID *string `json:"registryUid,omitempty" tf:"registry_uid,omitempty"` - - // +kubebuilder:validation:Required - Tag *string `json:"tag" tf:"tag,omitempty"` - - // +kubebuilder:validation:Required - Values *string `json:"values" tf:"values,omitempty"` -} - type AzureParameters struct { + // Apply setting for the cluster. This can be set to `on_create` or `on_update`. // +kubebuilder:validation:Optional ApplySetting *string `json:"applySetting,omitempty" tf:"apply_setting,omitempty"` // +kubebuilder:validation:Optional BackupPolicy []AzureBackupPolicyParameters `json:"backupPolicy,omitempty" tf:"backup_policy,omitempty"` + // ID of the cloud account to be used for the cluster. This cloud account must be of type `azure`. // +kubebuilder:validation:Required CloudAccountID *string `json:"cloudAccountId" tf:"cloud_account_id,omitempty"` @@ -292,24 +341,26 @@ type AzureParameters struct { // +kubebuilder:validation:Optional Namespaces []AzureNamespacesParameters `json:"namespaces,omitempty" tf:"namespaces,omitempty"` + // Date and time after which to patch cluster `RFC3339: 2006-01-02T15:04:05Z07:00` // +kubebuilder:validation:Optional OsPatchAfter *string `json:"osPatchAfter,omitempty" tf:"os_patch_after,omitempty"` + // Whether to apply OS patch on boot. Default is `false`. // +kubebuilder:validation:Optional OsPatchOnBoot *bool `json:"osPatchOnBoot,omitempty" tf:"os_patch_on_boot,omitempty"` + // Cron schedule for OS patching. This must be in the form of `0 0 * * *`. // +kubebuilder:validation:Optional OsPatchSchedule *string `json:"osPatchSchedule,omitempty" tf:"os_patch_schedule,omitempty"` - // +kubebuilder:validation:Optional - Pack []AzurePackParameters `json:"pack,omitempty" tf:"pack,omitempty"` - // +kubebuilder:validation:Optional ScanPolicy []AzureScanPolicyParameters `json:"scanPolicy,omitempty" tf:"scan_policy,omitempty"` + // If `true`, the cluster will be created asynchronously. Default value is `false`. // +kubebuilder:validation:Optional SkipCompletion *bool `json:"skipCompletion,omitempty" tf:"skip_completion,omitempty"` + // A list of tags to be applied to the cluster. Tags must be in the form of `key:value`. // +kubebuilder:validation:Optional Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` } @@ -319,24 +370,30 @@ type AzureScanPolicyObservation struct { type AzureScanPolicyParameters struct { + // The schedule for configuration scan. // +kubebuilder:validation:Required ConfigurationScanSchedule *string `json:"configurationScanSchedule" tf:"configuration_scan_schedule,omitempty"` + // The schedule for conformance scan. // +kubebuilder:validation:Required ConformanceScanSchedule *string `json:"conformanceScanSchedule" tf:"conformance_scan_schedule,omitempty"` + // The schedule for penetration scan. // +kubebuilder:validation:Required PenetrationScanSchedule *string `json:"penetrationScanSchedule" tf:"penetration_scan_schedule,omitempty"` } type ClusterProfilePackManifestObservation struct { + UID *string `json:"uid,omitempty" tf:"uid,omitempty"` } type ClusterProfilePackManifestParameters struct { + // The content of the manifest. The content is the YAML content of the manifest. // +kubebuilder:validation:Required Content *string `json:"content" tf:"content,omitempty"` + // The name of the manifest. The name must be unique within the pack. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` } @@ -346,9 +403,11 @@ type DiskObservation struct { type DiskParameters struct { + // Size of the disk in GB. // +kubebuilder:validation:Required SizeGb *float64 `json:"sizeGb" tf:"size_gb,omitempty"` + // Type of the disk. Valid values are `Standard_LRS`, `StandardSSD_LRS`, `Premium_LRS`. // +kubebuilder:validation:Required Type *string `json:"type" tf:"type,omitempty"` } diff --git a/apis/cluster/v1alpha1/zz_edge_types.go b/apis/cluster/v1alpha1/zz_edge_types.go index 2bede0c..1cd0944 100755 --- a/apis/cluster/v1alpha1/zz_edge_types.go +++ b/apis/cluster/v1alpha1/zz_edge_types.go @@ -18,24 +18,39 @@ type EdgeBackupPolicyObservation struct { type EdgeBackupPolicyParameters struct { + // The ID of the backup location to use for the backup. // +kubebuilder:validation:Required BackupLocationID *string `json:"backupLocationId" tf:"backup_location_id,omitempty"` + // The list of cluster UIDs to include in the backup. If `include_all_clusters` is set to `true`, then all clusters will be included. + // +kubebuilder:validation:Optional + ClusterUids []*string `json:"clusterUids,omitempty" tf:"cluster_uids,omitempty"` + + // The number of hours after which the backup will be deleted. For example, if the expiry is set to 24, the backup will be deleted after 24 hours. // +kubebuilder:validation:Required ExpiryInHour *float64 `json:"expiryInHour" tf:"expiry_in_hour,omitempty"` + // Whether to include all clusters in the backup. If set to false, only the clusters specified in `cluster_uids` will be included. + // +kubebuilder:validation:Optional + IncludeAllClusters *bool `json:"includeAllClusters,omitempty" tf:"include_all_clusters,omitempty"` + + // Whether to include the cluster resources in the backup. If set to false, only the cluster configuration and disks will be backed up. // +kubebuilder:validation:Optional IncludeClusterResources *bool `json:"includeClusterResources,omitempty" tf:"include_cluster_resources,omitempty"` + // Whether to include the disks in the backup. If set to false, only the cluster configuration will be backed up. // +kubebuilder:validation:Optional IncludeDisks *bool `json:"includeDisks,omitempty" tf:"include_disks,omitempty"` + // The list of Kubernetes namespaces to include in the backup. If not specified, all namespaces will be included. // +kubebuilder:validation:Optional Namespaces []*string `json:"namespaces,omitempty" tf:"namespaces,omitempty"` + // Prefix for the backup name. The backup name will be of the format --. // +kubebuilder:validation:Required Prefix *string `json:"prefix" tf:"prefix,omitempty"` + // The schedule for the backup. The schedule is specified in cron format. For example, to run the backup every day at 1:00 AM, the schedule should be set to `0 1 * * *`. // +kubebuilder:validation:Required Schedule *string `json:"schedule" tf:"schedule,omitempty"` } @@ -50,21 +65,30 @@ type EdgeCloudConfigParameters struct { } type EdgeClusterProfileObservation struct { + + // +kubebuilder:validation:Optional + Pack []EdgeClusterProfilePackObservation `json:"pack,omitempty" tf:"pack,omitempty"` } type EdgeClusterProfilePackManifestObservation struct { + UID *string `json:"uid,omitempty" tf:"uid,omitempty"` } type EdgeClusterProfilePackManifestParameters struct { + // The content of the manifest. The content is the YAML content of the manifest. // +kubebuilder:validation:Required Content *string `json:"content" tf:"content,omitempty"` + // The name of the manifest. The name must be unique within the pack. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` } type EdgeClusterProfilePackObservation struct { + + // +kubebuilder:validation:Optional + Manifest []EdgeClusterProfilePackManifestObservation `json:"manifest,omitempty" tf:"manifest,omitempty"` } type EdgeClusterProfilePackParameters struct { @@ -72,24 +96,33 @@ type EdgeClusterProfilePackParameters struct { // +kubebuilder:validation:Optional Manifest []EdgeClusterProfilePackManifestParameters `json:"manifest,omitempty" tf:"manifest,omitempty"` + // The name of the pack. The name must be unique within the cluster profile. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // The registry UID of the pack. The registry UID is the unique identifier of the registry. // +kubebuilder:validation:Optional RegistryUID *string `json:"registryUid,omitempty" tf:"registry_uid,omitempty"` - // +kubebuilder:validation:Required - Tag *string `json:"tag" tf:"tag,omitempty"` + // The tag of the pack. The tag is the version of the pack. + // +kubebuilder:validation:Optional + Tag *string `json:"tag,omitempty" tf:"tag,omitempty"` + // The type of the pack. The default value is `spectro`. // +kubebuilder:validation:Optional Type *string `json:"type,omitempty" tf:"type,omitempty"` + // +kubebuilder:validation:Optional + UID *string `json:"uid,omitempty" tf:"uid,omitempty"` + + // The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. // +kubebuilder:validation:Required Values *string `json:"values" tf:"values,omitempty"` } type EdgeClusterProfileParameters struct { + // The ID of the cluster profile. // +kubebuilder:validation:Required ID *string `json:"id" tf:"id,omitempty"` @@ -102,15 +135,18 @@ type EdgeClusterRbacBindingObservation struct { type EdgeClusterRbacBindingParameters struct { + // The Kubernetes namespace of the RBAC binding. Required if 'type' is set to 'RoleBinding'. // +kubebuilder:validation:Optional Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` + // The role of the RBAC binding. Required if 'type' is set to 'RoleBinding'. // +kubebuilder:validation:Optional Role map[string]*string `json:"role,omitempty" tf:"role,omitempty"` // +kubebuilder:validation:Optional Subjects []EdgeClusterRbacBindingSubjectsParameters `json:"subjects,omitempty" tf:"subjects,omitempty"` + // The type of the RBAC binding. Can be one of the following values: `RoleBinding`, or `ClusterRoleBinding`. // +kubebuilder:validation:Required Type *string `json:"type" tf:"type,omitempty"` } @@ -120,12 +156,15 @@ type EdgeClusterRbacBindingSubjectsObservation struct { type EdgeClusterRbacBindingSubjectsParameters struct { + // The name of the subject. Required if 'type' is set to 'User' or 'Group'. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // The Kubernetes namespace of the subject. Required if 'type' is set to 'ServiceAccount'. // +kubebuilder:validation:Optional Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` + // The type of the subject. Can be one of the following values: `User`, `Group`, or `ServiceAccount`. // +kubebuilder:validation:Required Type *string `json:"type" tf:"type,omitempty"` } @@ -190,12 +229,15 @@ type EdgeMachinePoolParameters struct { // +kubebuilder:validation:Optional AdditionalLabels map[string]*string `json:"additionalLabels,omitempty" tf:"additional_labels,omitempty"` + // Whether this machine pool is a control plane. Defaults to `false`. // +kubebuilder:validation:Optional ControlPlane *bool `json:"controlPlane,omitempty" tf:"control_plane,omitempty"` + // Whether this machine pool is a control plane and a worker. Defaults to `false`. // +kubebuilder:validation:Optional ControlPlaneAsWorker *bool `json:"controlPlaneAsWorker,omitempty" tf:"control_plane_as_worker,omitempty"` + // Number of nodes in the machine pool. // +kubebuilder:validation:Required Count *float64 `json:"count" tf:"count,omitempty"` @@ -208,6 +250,7 @@ type EdgeMachinePoolParameters struct { // +kubebuilder:validation:Optional Taints []EdgeMachinePoolTaintsParameters `json:"taints,omitempty" tf:"taints,omitempty"` + // Update strategy for the machine pool. Valid values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`. // +kubebuilder:validation:Optional UpdateStrategy *string `json:"updateStrategy,omitempty" tf:"update_strategy,omitempty"` } @@ -217,12 +260,15 @@ type EdgeMachinePoolTaintsObservation struct { type EdgeMachinePoolTaintsParameters struct { + // The effect of the taint. Allowed values are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`. // +kubebuilder:validation:Required Effect *string `json:"effect" tf:"effect,omitempty"` + // The key of the taint. // +kubebuilder:validation:Required Key *string `json:"key" tf:"key,omitempty"` + // The value of the taint. // +kubebuilder:validation:Required Value *string `json:"value" tf:"value,omitempty"` } @@ -232,37 +278,31 @@ type EdgeNamespacesObservation struct { type EdgeNamespacesParameters struct { + // List of images to disallow for the namespace. For example, `['nginx:latest', 'redis:latest']` + // +kubebuilder:validation:Optional + ImagesBlacklist []*string `json:"imagesBlacklist,omitempty" tf:"images_blacklist,omitempty"` + + // Name of the namespace. This is the name of the Kubernetes namespace in the cluster. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // Resource allocation for the namespace. This is a map containing the resource type and the resource value. For example, `{cpu_cores: '2', memory_MiB: '2048'}` // +kubebuilder:validation:Required ResourceAllocation map[string]*string `json:"resourceAllocation" tf:"resource_allocation,omitempty"` } type EdgeObservation struct { - CloudConfigID *string `json:"cloudConfigId,omitempty" tf:"cloud_config_id,omitempty"` - - ID *string `json:"id,omitempty" tf:"id,omitempty"` - Kubeconfig *string `json:"kubeconfig,omitempty" tf:"kubeconfig,omitempty"` -} - -type EdgePackObservation struct { -} - -type EdgePackParameters struct { - - // +kubebuilder:validation:Required - Name *string `json:"name" tf:"name,omitempty"` + // ID of the cloud config used for the cluster. This cloud config must be of type `azure`. + CloudConfigID *string `json:"cloudConfigId,omitempty" tf:"cloud_config_id,omitempty"` // +kubebuilder:validation:Optional - RegistryUID *string `json:"registryUid,omitempty" tf:"registry_uid,omitempty"` + ClusterProfile []EdgeClusterProfileObservation `json:"clusterProfile,omitempty" tf:"cluster_profile,omitempty"` - // +kubebuilder:validation:Required - Tag *string `json:"tag" tf:"tag,omitempty"` + ID *string `json:"id,omitempty" tf:"id,omitempty"` - // +kubebuilder:validation:Required - Values *string `json:"values" tf:"values,omitempty"` + // Kubeconfig for the cluster. This can be used to connect to the cluster using `kubectl`. + Kubeconfig *string `json:"kubeconfig,omitempty" tf:"kubeconfig,omitempty"` } type EdgeParameters struct { @@ -297,24 +337,26 @@ type EdgeParameters struct { // +kubebuilder:validation:Optional Namespaces []EdgeNamespacesParameters `json:"namespaces,omitempty" tf:"namespaces,omitempty"` + // Date and time after which to patch cluster `RFC3339: 2006-01-02T15:04:05Z07:00` // +kubebuilder:validation:Optional OsPatchAfter *string `json:"osPatchAfter,omitempty" tf:"os_patch_after,omitempty"` + // Whether to apply OS patch on boot. Default is `false`. // +kubebuilder:validation:Optional OsPatchOnBoot *bool `json:"osPatchOnBoot,omitempty" tf:"os_patch_on_boot,omitempty"` + // The cron schedule for OS patching. This must be in the form of cron syntax. Ex: `0 0 * * *`. // +kubebuilder:validation:Optional OsPatchSchedule *string `json:"osPatchSchedule,omitempty" tf:"os_patch_schedule,omitempty"` - // +kubebuilder:validation:Optional - Pack []EdgePackParameters `json:"pack,omitempty" tf:"pack,omitempty"` - // +kubebuilder:validation:Optional ScanPolicy []EdgeScanPolicyParameters `json:"scanPolicy,omitempty" tf:"scan_policy,omitempty"` + // If `true`, the cluster will be created asynchronously. Default value is `false`. // +kubebuilder:validation:Optional SkipCompletion *bool `json:"skipCompletion,omitempty" tf:"skip_completion,omitempty"` + // A list of tags to be applied to the cluster. Tags must be in the form of `key:value`. // +kubebuilder:validation:Optional Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` } @@ -324,12 +366,15 @@ type EdgeScanPolicyObservation struct { type EdgeScanPolicyParameters struct { + // The schedule for configuration scan. // +kubebuilder:validation:Required ConfigurationScanSchedule *string `json:"configurationScanSchedule" tf:"configuration_scan_schedule,omitempty"` + // The schedule for conformance scan. // +kubebuilder:validation:Required ConformanceScanSchedule *string `json:"conformanceScanSchedule" tf:"conformance_scan_schedule,omitempty"` + // The schedule for penetration scan. // +kubebuilder:validation:Required PenetrationScanSchedule *string `json:"penetrationScanSchedule" tf:"penetration_scan_schedule,omitempty"` } diff --git a/apis/cluster/v1alpha1/zz_edgenative_types.go b/apis/cluster/v1alpha1/zz_edgenative_types.go index 5f9001e..ec6867a 100755 --- a/apis/cluster/v1alpha1/zz_edgenative_types.go +++ b/apis/cluster/v1alpha1/zz_edgenative_types.go @@ -18,24 +18,39 @@ type EdgeNativeBackupPolicyObservation struct { type EdgeNativeBackupPolicyParameters struct { + // The ID of the backup location to use for the backup. // +kubebuilder:validation:Required BackupLocationID *string `json:"backupLocationId" tf:"backup_location_id,omitempty"` + // The list of cluster UIDs to include in the backup. If `include_all_clusters` is set to `true`, then all clusters will be included. + // +kubebuilder:validation:Optional + ClusterUids []*string `json:"clusterUids,omitempty" tf:"cluster_uids,omitempty"` + + // The number of hours after which the backup will be deleted. For example, if the expiry is set to 24, the backup will be deleted after 24 hours. // +kubebuilder:validation:Required ExpiryInHour *float64 `json:"expiryInHour" tf:"expiry_in_hour,omitempty"` + // Whether to include all clusters in the backup. If set to false, only the clusters specified in `cluster_uids` will be included. + // +kubebuilder:validation:Optional + IncludeAllClusters *bool `json:"includeAllClusters,omitempty" tf:"include_all_clusters,omitempty"` + + // Whether to include the cluster resources in the backup. If set to false, only the cluster configuration and disks will be backed up. // +kubebuilder:validation:Optional IncludeClusterResources *bool `json:"includeClusterResources,omitempty" tf:"include_cluster_resources,omitempty"` + // Whether to include the disks in the backup. If set to false, only the cluster configuration will be backed up. // +kubebuilder:validation:Optional IncludeDisks *bool `json:"includeDisks,omitempty" tf:"include_disks,omitempty"` + // The list of Kubernetes namespaces to include in the backup. If not specified, all namespaces will be included. // +kubebuilder:validation:Optional Namespaces []*string `json:"namespaces,omitempty" tf:"namespaces,omitempty"` + // Prefix for the backup name. The backup name will be of the format --. // +kubebuilder:validation:Required Prefix *string `json:"prefix" tf:"prefix,omitempty"` + // The schedule for the backup. The schedule is specified in cron format. For example, to run the backup every day at 1:00 AM, the schedule should be set to `0 1 * * *`. // +kubebuilder:validation:Required Schedule *string `json:"schedule" tf:"schedule,omitempty"` } @@ -56,21 +71,30 @@ type EdgeNativeCloudConfigParameters struct { } type EdgeNativeClusterProfileObservation struct { + + // +kubebuilder:validation:Optional + Pack []EdgeNativeClusterProfilePackObservation `json:"pack,omitempty" tf:"pack,omitempty"` } type EdgeNativeClusterProfilePackManifestObservation struct { + UID *string `json:"uid,omitempty" tf:"uid,omitempty"` } type EdgeNativeClusterProfilePackManifestParameters struct { + // The content of the manifest. The content is the YAML content of the manifest. // +kubebuilder:validation:Required Content *string `json:"content" tf:"content,omitempty"` + // The name of the manifest. The name must be unique within the pack. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` } type EdgeNativeClusterProfilePackObservation struct { + + // +kubebuilder:validation:Optional + Manifest []EdgeNativeClusterProfilePackManifestObservation `json:"manifest,omitempty" tf:"manifest,omitempty"` } type EdgeNativeClusterProfilePackParameters struct { @@ -78,32 +102,38 @@ type EdgeNativeClusterProfilePackParameters struct { // +kubebuilder:validation:Optional Manifest []EdgeNativeClusterProfilePackManifestParameters `json:"manifest,omitempty" tf:"manifest,omitempty"` + // The name of the pack. The name must be unique within the cluster profile. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // The registry UID of the pack. The registry UID is the unique identifier of the registry. // +kubebuilder:validation:Optional RegistryUID *string `json:"registryUid,omitempty" tf:"registry_uid,omitempty"` - // +kubebuilder:validation:Required - Tag *string `json:"tag" tf:"tag,omitempty"` + // The tag of the pack. The tag is the version of the pack. + // +kubebuilder:validation:Optional + Tag *string `json:"tag,omitempty" tf:"tag,omitempty"` + // The type of the pack. The default value is `spectro`. // +kubebuilder:validation:Optional Type *string `json:"type,omitempty" tf:"type,omitempty"` + // +kubebuilder:validation:Optional + UID *string `json:"uid,omitempty" tf:"uid,omitempty"` + + // The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. // +kubebuilder:validation:Required Values *string `json:"values" tf:"values,omitempty"` } type EdgeNativeClusterProfileParameters struct { + // The ID of the cluster profile. // +kubebuilder:validation:Required ID *string `json:"id" tf:"id,omitempty"` // +kubebuilder:validation:Optional Pack []EdgeNativeClusterProfilePackParameters `json:"pack,omitempty" tf:"pack,omitempty"` - - // +kubebuilder:validation:Optional - Type *string `json:"type,omitempty" tf:"type,omitempty"` } type EdgeNativeClusterRbacBindingObservation struct { @@ -111,15 +141,18 @@ type EdgeNativeClusterRbacBindingObservation struct { type EdgeNativeClusterRbacBindingParameters struct { + // The Kubernetes namespace of the RBAC binding. Required if 'type' is set to 'RoleBinding'. // +kubebuilder:validation:Optional Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` + // The role of the RBAC binding. Required if 'type' is set to 'RoleBinding'. // +kubebuilder:validation:Optional Role map[string]*string `json:"role,omitempty" tf:"role,omitempty"` // +kubebuilder:validation:Optional Subjects []EdgeNativeClusterRbacBindingSubjectsParameters `json:"subjects,omitempty" tf:"subjects,omitempty"` + // The type of the RBAC binding. Can be one of the following values: `RoleBinding`, or `ClusterRoleBinding`. // +kubebuilder:validation:Required Type *string `json:"type" tf:"type,omitempty"` } @@ -129,12 +162,15 @@ type EdgeNativeClusterRbacBindingSubjectsObservation struct { type EdgeNativeClusterRbacBindingSubjectsParameters struct { + // The name of the subject. Required if 'type' is set to 'User' or 'Group'. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // The Kubernetes namespace of the subject. Required if 'type' is set to 'ServiceAccount'. // +kubebuilder:validation:Optional Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` + // The type of the subject. Can be one of the following values: `User`, `Group`, or `ServiceAccount`. // +kubebuilder:validation:Required Type *string `json:"type" tf:"type,omitempty"` } @@ -199,9 +235,11 @@ type EdgeNativeMachinePoolParameters struct { // +kubebuilder:validation:Optional AdditionalLabels map[string]*string `json:"additionalLabels,omitempty" tf:"additional_labels,omitempty"` + // Whether this machine pool is a control plane. Defaults to `false`. // +kubebuilder:validation:Optional ControlPlane *bool `json:"controlPlane,omitempty" tf:"control_plane,omitempty"` + // Whether this machine pool is a control plane and a worker. Defaults to `false`. // +kubebuilder:validation:Optional ControlPlaneAsWorker *bool `json:"controlPlaneAsWorker,omitempty" tf:"control_plane_as_worker,omitempty"` @@ -214,6 +252,7 @@ type EdgeNativeMachinePoolParameters struct { // +kubebuilder:validation:Optional Taints []EdgeNativeMachinePoolTaintsParameters `json:"taints,omitempty" tf:"taints,omitempty"` + // Update strategy for the machine pool. Valid values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`. // +kubebuilder:validation:Optional UpdateStrategy *string `json:"updateStrategy,omitempty" tf:"update_strategy,omitempty"` } @@ -223,12 +262,15 @@ type EdgeNativeMachinePoolTaintsObservation struct { type EdgeNativeMachinePoolTaintsParameters struct { + // The effect of the taint. Allowed values are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`. // +kubebuilder:validation:Required Effect *string `json:"effect" tf:"effect,omitempty"` + // The key of the taint. // +kubebuilder:validation:Required Key *string `json:"key" tf:"key,omitempty"` + // The value of the taint. // +kubebuilder:validation:Required Value *string `json:"value" tf:"value,omitempty"` } @@ -238,37 +280,31 @@ type EdgeNativeNamespacesObservation struct { type EdgeNativeNamespacesParameters struct { + // List of images to disallow for the namespace. For example, `['nginx:latest', 'redis:latest']` + // +kubebuilder:validation:Optional + ImagesBlacklist []*string `json:"imagesBlacklist,omitempty" tf:"images_blacklist,omitempty"` + + // Name of the namespace. This is the name of the Kubernetes namespace in the cluster. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // Resource allocation for the namespace. This is a map containing the resource type and the resource value. For example, `{cpu_cores: '2', memory_MiB: '2048'}` // +kubebuilder:validation:Required ResourceAllocation map[string]*string `json:"resourceAllocation" tf:"resource_allocation,omitempty"` } type EdgeNativeObservation struct { - CloudConfigID *string `json:"cloudConfigId,omitempty" tf:"cloud_config_id,omitempty"` - ID *string `json:"id,omitempty" tf:"id,omitempty"` - - Kubeconfig *string `json:"kubeconfig,omitempty" tf:"kubeconfig,omitempty"` -} - -type EdgeNativePackObservation struct { -} - -type EdgeNativePackParameters struct { - - // +kubebuilder:validation:Required - Name *string `json:"name" tf:"name,omitempty"` + // ID of the cloud config used for the cluster. This cloud config must be of type `azure`. + CloudConfigID *string `json:"cloudConfigId,omitempty" tf:"cloud_config_id,omitempty"` // +kubebuilder:validation:Optional - RegistryUID *string `json:"registryUid,omitempty" tf:"registry_uid,omitempty"` + ClusterProfile []EdgeNativeClusterProfileObservation `json:"clusterProfile,omitempty" tf:"cluster_profile,omitempty"` - // +kubebuilder:validation:Required - Tag *string `json:"tag" tf:"tag,omitempty"` + ID *string `json:"id,omitempty" tf:"id,omitempty"` - // +kubebuilder:validation:Required - Values *string `json:"values" tf:"values,omitempty"` + // Kubeconfig for the cluster. This can be used to connect to the cluster using `kubectl`. + Kubeconfig *string `json:"kubeconfig,omitempty" tf:"kubeconfig,omitempty"` } type EdgeNativeParameters struct { @@ -303,24 +339,26 @@ type EdgeNativeParameters struct { // +kubebuilder:validation:Optional Namespaces []EdgeNativeNamespacesParameters `json:"namespaces,omitempty" tf:"namespaces,omitempty"` + // Date and time after which to patch cluster `RFC3339: 2006-01-02T15:04:05Z07:00` // +kubebuilder:validation:Optional OsPatchAfter *string `json:"osPatchAfter,omitempty" tf:"os_patch_after,omitempty"` + // Whether to apply OS patch on boot. Default is `false`. // +kubebuilder:validation:Optional OsPatchOnBoot *bool `json:"osPatchOnBoot,omitempty" tf:"os_patch_on_boot,omitempty"` + // The cron schedule for OS patching. This must be in the form of cron syntax. Ex: `0 0 * * *`. // +kubebuilder:validation:Optional OsPatchSchedule *string `json:"osPatchSchedule,omitempty" tf:"os_patch_schedule,omitempty"` - // +kubebuilder:validation:Optional - Pack []EdgeNativePackParameters `json:"pack,omitempty" tf:"pack,omitempty"` - // +kubebuilder:validation:Optional ScanPolicy []EdgeNativeScanPolicyParameters `json:"scanPolicy,omitempty" tf:"scan_policy,omitempty"` + // If `true`, the cluster will be created asynchronously. Default value is `false`. // +kubebuilder:validation:Optional SkipCompletion *bool `json:"skipCompletion,omitempty" tf:"skip_completion,omitempty"` + // A list of tags to be applied to the cluster. Tags must be in the form of `key:value`. // +kubebuilder:validation:Optional Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` } @@ -330,12 +368,15 @@ type EdgeNativeScanPolicyObservation struct { type EdgeNativeScanPolicyParameters struct { + // The schedule for configuration scan. // +kubebuilder:validation:Required ConfigurationScanSchedule *string `json:"configurationScanSchedule" tf:"configuration_scan_schedule,omitempty"` + // The schedule for conformance scan. // +kubebuilder:validation:Required ConformanceScanSchedule *string `json:"conformanceScanSchedule" tf:"conformance_scan_schedule,omitempty"` + // The schedule for penetration scan. // +kubebuilder:validation:Required PenetrationScanSchedule *string `json:"penetrationScanSchedule" tf:"penetration_scan_schedule,omitempty"` } diff --git a/apis/cluster/v1alpha1/zz_edgevsphere_types.go b/apis/cluster/v1alpha1/zz_edgevsphere_types.go index e01577d..74f87f0 100755 --- a/apis/cluster/v1alpha1/zz_edgevsphere_types.go +++ b/apis/cluster/v1alpha1/zz_edgevsphere_types.go @@ -18,24 +18,39 @@ type EdgeVsphereBackupPolicyObservation struct { type EdgeVsphereBackupPolicyParameters struct { + // The ID of the backup location to use for the backup. // +kubebuilder:validation:Required BackupLocationID *string `json:"backupLocationId" tf:"backup_location_id,omitempty"` + // The list of cluster UIDs to include in the backup. If `include_all_clusters` is set to `true`, then all clusters will be included. + // +kubebuilder:validation:Optional + ClusterUids []*string `json:"clusterUids,omitempty" tf:"cluster_uids,omitempty"` + + // The number of hours after which the backup will be deleted. For example, if the expiry is set to 24, the backup will be deleted after 24 hours. // +kubebuilder:validation:Required ExpiryInHour *float64 `json:"expiryInHour" tf:"expiry_in_hour,omitempty"` + // Whether to include all clusters in the backup. If set to false, only the clusters specified in `cluster_uids` will be included. + // +kubebuilder:validation:Optional + IncludeAllClusters *bool `json:"includeAllClusters,omitempty" tf:"include_all_clusters,omitempty"` + + // Whether to include the cluster resources in the backup. If set to false, only the cluster configuration and disks will be backed up. // +kubebuilder:validation:Optional IncludeClusterResources *bool `json:"includeClusterResources,omitempty" tf:"include_cluster_resources,omitempty"` + // Whether to include the disks in the backup. If set to false, only the cluster configuration will be backed up. // +kubebuilder:validation:Optional IncludeDisks *bool `json:"includeDisks,omitempty" tf:"include_disks,omitempty"` + // The list of Kubernetes namespaces to include in the backup. If not specified, all namespaces will be included. // +kubebuilder:validation:Optional Namespaces []*string `json:"namespaces,omitempty" tf:"namespaces,omitempty"` + // Prefix for the backup name. The backup name will be of the format --. // +kubebuilder:validation:Required Prefix *string `json:"prefix" tf:"prefix,omitempty"` + // The schedule for the backup. The schedule is specified in cron format. For example, to run the backup every day at 1:00 AM, the schedule should be set to `0 1 * * *`. // +kubebuilder:validation:Required Schedule *string `json:"schedule" tf:"schedule,omitempty"` } @@ -71,21 +86,30 @@ type EdgeVsphereCloudConfigParameters struct { } type EdgeVsphereClusterProfileObservation struct { + + // +kubebuilder:validation:Optional + Pack []EdgeVsphereClusterProfilePackObservation `json:"pack,omitempty" tf:"pack,omitempty"` } type EdgeVsphereClusterProfilePackManifestObservation struct { + UID *string `json:"uid,omitempty" tf:"uid,omitempty"` } type EdgeVsphereClusterProfilePackManifestParameters struct { + // The content of the manifest. The content is the YAML content of the manifest. // +kubebuilder:validation:Required Content *string `json:"content" tf:"content,omitempty"` + // The name of the manifest. The name must be unique within the pack. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` } type EdgeVsphereClusterProfilePackObservation struct { + + // +kubebuilder:validation:Optional + Manifest []EdgeVsphereClusterProfilePackManifestObservation `json:"manifest,omitempty" tf:"manifest,omitempty"` } type EdgeVsphereClusterProfilePackParameters struct { @@ -93,24 +117,33 @@ type EdgeVsphereClusterProfilePackParameters struct { // +kubebuilder:validation:Optional Manifest []EdgeVsphereClusterProfilePackManifestParameters `json:"manifest,omitempty" tf:"manifest,omitempty"` + // The name of the pack. The name must be unique within the cluster profile. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // The registry UID of the pack. The registry UID is the unique identifier of the registry. // +kubebuilder:validation:Optional RegistryUID *string `json:"registryUid,omitempty" tf:"registry_uid,omitempty"` - // +kubebuilder:validation:Required - Tag *string `json:"tag" tf:"tag,omitempty"` + // The tag of the pack. The tag is the version of the pack. + // +kubebuilder:validation:Optional + Tag *string `json:"tag,omitempty" tf:"tag,omitempty"` + // The type of the pack. The default value is `spectro`. // +kubebuilder:validation:Optional Type *string `json:"type,omitempty" tf:"type,omitempty"` + // +kubebuilder:validation:Optional + UID *string `json:"uid,omitempty" tf:"uid,omitempty"` + + // The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. // +kubebuilder:validation:Required Values *string `json:"values" tf:"values,omitempty"` } type EdgeVsphereClusterProfileParameters struct { + // The ID of the cluster profile. // +kubebuilder:validation:Required ID *string `json:"id" tf:"id,omitempty"` @@ -123,15 +156,18 @@ type EdgeVsphereClusterRbacBindingObservation struct { type EdgeVsphereClusterRbacBindingParameters struct { + // The Kubernetes namespace of the RBAC binding. Required if 'type' is set to 'RoleBinding'. // +kubebuilder:validation:Optional Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` + // The role of the RBAC binding. Required if 'type' is set to 'RoleBinding'. // +kubebuilder:validation:Optional Role map[string]*string `json:"role,omitempty" tf:"role,omitempty"` // +kubebuilder:validation:Optional Subjects []EdgeVsphereClusterRbacBindingSubjectsParameters `json:"subjects,omitempty" tf:"subjects,omitempty"` + // The type of the RBAC binding. Can be one of the following values: `RoleBinding`, or `ClusterRoleBinding`. // +kubebuilder:validation:Required Type *string `json:"type" tf:"type,omitempty"` } @@ -141,12 +177,15 @@ type EdgeVsphereClusterRbacBindingSubjectsObservation struct { type EdgeVsphereClusterRbacBindingSubjectsParameters struct { + // The name of the subject. Required if 'type' is set to 'User' or 'Group'. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // The Kubernetes namespace of the subject. Required if 'type' is set to 'ServiceAccount'. // +kubebuilder:validation:Optional Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` + // The type of the subject. Can be one of the following values: `User`, `Group`, or `ServiceAccount`. // +kubebuilder:validation:Required Type *string `json:"type" tf:"type,omitempty"` } @@ -214,12 +253,15 @@ type EdgeVsphereMachinePoolParameters struct { // +kubebuilder:validation:Optional AdditionalLabels map[string]*string `json:"additionalLabels,omitempty" tf:"additional_labels,omitempty"` + // Whether this machine pool is a control plane. Defaults to `false`. // +kubebuilder:validation:Optional ControlPlane *bool `json:"controlPlane,omitempty" tf:"control_plane,omitempty"` + // Whether this machine pool is a control plane and a worker. Defaults to `false`. // +kubebuilder:validation:Optional ControlPlaneAsWorker *bool `json:"controlPlaneAsWorker,omitempty" tf:"control_plane_as_worker,omitempty"` + // Number of nodes in the machine pool. // +kubebuilder:validation:Required Count *float64 `json:"count" tf:"count,omitempty"` @@ -235,6 +277,7 @@ type EdgeVsphereMachinePoolParameters struct { // +kubebuilder:validation:Optional Taints []EdgeVsphereMachinePoolTaintsParameters `json:"taints,omitempty" tf:"taints,omitempty"` + // Update strategy for the machine pool. Valid values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`. // +kubebuilder:validation:Optional UpdateStrategy *string `json:"updateStrategy,omitempty" tf:"update_strategy,omitempty"` } @@ -244,12 +287,15 @@ type EdgeVsphereMachinePoolTaintsObservation struct { type EdgeVsphereMachinePoolTaintsParameters struct { + // The effect of the taint. Allowed values are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`. // +kubebuilder:validation:Required Effect *string `json:"effect" tf:"effect,omitempty"` + // The key of the taint. // +kubebuilder:validation:Required Key *string `json:"key" tf:"key,omitempty"` + // The value of the taint. // +kubebuilder:validation:Required Value *string `json:"value" tf:"value,omitempty"` } @@ -259,42 +305,36 @@ type EdgeVsphereNamespacesObservation struct { type EdgeVsphereNamespacesParameters struct { + // List of images to disallow for the namespace. For example, `['nginx:latest', 'redis:latest']` + // +kubebuilder:validation:Optional + ImagesBlacklist []*string `json:"imagesBlacklist,omitempty" tf:"images_blacklist,omitempty"` + + // Name of the namespace. This is the name of the Kubernetes namespace in the cluster. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // Resource allocation for the namespace. This is a map containing the resource type and the resource value. For example, `{cpu_cores: '2', memory_MiB: '2048'}` // +kubebuilder:validation:Required ResourceAllocation map[string]*string `json:"resourceAllocation" tf:"resource_allocation,omitempty"` } type EdgeVsphereObservation struct { + + // ID of the cloud config used for the cluster. This cloud config must be of type `azure`. CloudConfigID *string `json:"cloudConfigId,omitempty" tf:"cloud_config_id,omitempty"` + // +kubebuilder:validation:Optional + ClusterProfile []EdgeVsphereClusterProfileObservation `json:"clusterProfile,omitempty" tf:"cluster_profile,omitempty"` + ID *string `json:"id,omitempty" tf:"id,omitempty"` + // Kubeconfig for the cluster. This can be used to connect to the cluster using `kubectl`. Kubeconfig *string `json:"kubeconfig,omitempty" tf:"kubeconfig,omitempty"` // +kubebuilder:validation:Required MachinePool []EdgeVsphereMachinePoolObservation `json:"machinePool,omitempty" tf:"machine_pool,omitempty"` } -type EdgeVspherePackObservation struct { -} - -type EdgeVspherePackParameters struct { - - // +kubebuilder:validation:Required - Name *string `json:"name" tf:"name,omitempty"` - - // +kubebuilder:validation:Optional - RegistryUID *string `json:"registryUid,omitempty" tf:"registry_uid,omitempty"` - - // +kubebuilder:validation:Required - Tag *string `json:"tag" tf:"tag,omitempty"` - - // +kubebuilder:validation:Required - Values *string `json:"values" tf:"values,omitempty"` -} - type EdgeVsphereParameters struct { // +kubebuilder:validation:Optional @@ -324,24 +364,26 @@ type EdgeVsphereParameters struct { // +kubebuilder:validation:Optional Namespaces []EdgeVsphereNamespacesParameters `json:"namespaces,omitempty" tf:"namespaces,omitempty"` + // Date and time after which to patch cluster `RFC3339: 2006-01-02T15:04:05Z07:00` // +kubebuilder:validation:Optional OsPatchAfter *string `json:"osPatchAfter,omitempty" tf:"os_patch_after,omitempty"` + // Whether to apply OS patch on boot. Default is `false`. // +kubebuilder:validation:Optional OsPatchOnBoot *bool `json:"osPatchOnBoot,omitempty" tf:"os_patch_on_boot,omitempty"` + // Cron schedule for OS patching. This must be in the form of `0 0 * * *`. // +kubebuilder:validation:Optional OsPatchSchedule *string `json:"osPatchSchedule,omitempty" tf:"os_patch_schedule,omitempty"` - // +kubebuilder:validation:Optional - Pack []EdgeVspherePackParameters `json:"pack,omitempty" tf:"pack,omitempty"` - // +kubebuilder:validation:Optional ScanPolicy []EdgeVsphereScanPolicyParameters `json:"scanPolicy,omitempty" tf:"scan_policy,omitempty"` + // If `true`, the cluster will be created asynchronously. Default value is `false`. // +kubebuilder:validation:Optional SkipCompletion *bool `json:"skipCompletion,omitempty" tf:"skip_completion,omitempty"` + // A list of tags to be applied to the cluster. Tags must be in the form of `key:value`. // +kubebuilder:validation:Optional Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` } @@ -351,12 +393,15 @@ type EdgeVsphereScanPolicyObservation struct { type EdgeVsphereScanPolicyParameters struct { + // The schedule for configuration scan. // +kubebuilder:validation:Required ConfigurationScanSchedule *string `json:"configurationScanSchedule" tf:"configuration_scan_schedule,omitempty"` + // The schedule for conformance scan. // +kubebuilder:validation:Required ConformanceScanSchedule *string `json:"conformanceScanSchedule" tf:"conformance_scan_schedule,omitempty"` + // The schedule for penetration scan. // +kubebuilder:validation:Required PenetrationScanSchedule *string `json:"penetrationScanSchedule" tf:"penetration_scan_schedule,omitempty"` } diff --git a/apis/cluster/v1alpha1/zz_eks_types.go b/apis/cluster/v1alpha1/zz_eks_types.go index 5492d18..8fc53f4 100755 --- a/apis/cluster/v1alpha1/zz_eks_types.go +++ b/apis/cluster/v1alpha1/zz_eks_types.go @@ -18,25 +18,39 @@ type EksBackupPolicyObservation struct { type EksBackupPolicyParameters struct { + // The ID of the backup location to use for the backup. // +kubebuilder:validation:Required BackupLocationID *string `json:"backupLocationId" tf:"backup_location_id,omitempty"` + // The list of cluster UIDs to include in the backup. If `include_all_clusters` is set to `true`, then all clusters will be included. + // +kubebuilder:validation:Optional + ClusterUids []*string `json:"clusterUids,omitempty" tf:"cluster_uids,omitempty"` + + // The number of hours after which the backup will be deleted. For example, if the expiry is set to 24, the backup will be deleted after 24 hours. // +kubebuilder:validation:Required ExpiryInHour *float64 `json:"expiryInHour" tf:"expiry_in_hour,omitempty"` + // Whether to include all clusters in the backup. If set to false, only the clusters specified in `cluster_uids` will be included. + // +kubebuilder:validation:Optional + IncludeAllClusters *bool `json:"includeAllClusters,omitempty" tf:"include_all_clusters,omitempty"` + + // Whether to include the cluster resources in the backup. If set to false, only the cluster configuration and disks will be backed up. // +kubebuilder:validation:Optional IncludeClusterResources *bool `json:"includeClusterResources,omitempty" tf:"include_cluster_resources,omitempty"` + // Whether to include the disks in the backup. If set to false, only the cluster configuration will be backed up. // +kubebuilder:validation:Optional IncludeDisks *bool `json:"includeDisks,omitempty" tf:"include_disks,omitempty"` - // Provide namespaces that need to be backed up. If left empty then all the Namespaces will be backed up. + // The list of Kubernetes namespaces to include in the backup. If not specified, all namespaces will be included. // +kubebuilder:validation:Optional Namespaces []*string `json:"namespaces,omitempty" tf:"namespaces,omitempty"` + // Prefix for the backup name. The backup name will be of the format --. // +kubebuilder:validation:Required Prefix *string `json:"prefix" tf:"prefix,omitempty"` + // The schedule for the backup. The schedule is specified in cron format. For example, to run the backup every day at 1:00 AM, the schedule should be set to `0 1 * * *`. // +kubebuilder:validation:Required Schedule *string `json:"schedule" tf:"schedule,omitempty"` } @@ -74,21 +88,30 @@ type EksCloudConfigParameters struct { } type EksClusterProfileObservation struct { + + // +kubebuilder:validation:Optional + Pack []EksClusterProfilePackObservation `json:"pack,omitempty" tf:"pack,omitempty"` } type EksClusterProfilePackManifestObservation struct { + UID *string `json:"uid,omitempty" tf:"uid,omitempty"` } type EksClusterProfilePackManifestParameters struct { + // The content of the manifest. The content is the YAML content of the manifest. // +kubebuilder:validation:Required Content *string `json:"content" tf:"content,omitempty"` + // The name of the manifest. The name must be unique within the pack. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` } type EksClusterProfilePackObservation struct { + + // +kubebuilder:validation:Optional + Manifest []EksClusterProfilePackManifestObservation `json:"manifest,omitempty" tf:"manifest,omitempty"` } type EksClusterProfilePackParameters struct { @@ -96,24 +119,33 @@ type EksClusterProfilePackParameters struct { // +kubebuilder:validation:Optional Manifest []EksClusterProfilePackManifestParameters `json:"manifest,omitempty" tf:"manifest,omitempty"` + // The name of the pack. The name must be unique within the cluster profile. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // The registry UID of the pack. The registry UID is the unique identifier of the registry. // +kubebuilder:validation:Optional RegistryUID *string `json:"registryUid,omitempty" tf:"registry_uid,omitempty"` + // The tag of the pack. The tag is the version of the pack. // +kubebuilder:validation:Optional Tag *string `json:"tag,omitempty" tf:"tag,omitempty"` + // The type of the pack. The default value is `spectro`. // +kubebuilder:validation:Optional Type *string `json:"type,omitempty" tf:"type,omitempty"` // +kubebuilder:validation:Optional - Values *string `json:"values,omitempty" tf:"values,omitempty"` + UID *string `json:"uid,omitempty" tf:"uid,omitempty"` + + // The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. + // +kubebuilder:validation:Required + Values *string `json:"values" tf:"values,omitempty"` } type EksClusterProfileParameters struct { + // The ID of the cluster profile. // +kubebuilder:validation:Required ID *string `json:"id" tf:"id,omitempty"` @@ -126,15 +158,18 @@ type EksClusterRbacBindingObservation struct { type EksClusterRbacBindingParameters struct { + // The Kubernetes namespace of the RBAC binding. Required if 'type' is set to 'RoleBinding'. // +kubebuilder:validation:Optional Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` + // The role of the RBAC binding. Required if 'type' is set to 'RoleBinding'. // +kubebuilder:validation:Optional Role map[string]*string `json:"role,omitempty" tf:"role,omitempty"` // +kubebuilder:validation:Optional Subjects []EksClusterRbacBindingSubjectsParameters `json:"subjects,omitempty" tf:"subjects,omitempty"` + // The type of the RBAC binding. Can be one of the following values: `RoleBinding`, or `ClusterRoleBinding`. // +kubebuilder:validation:Required Type *string `json:"type" tf:"type,omitempty"` } @@ -144,13 +179,15 @@ type EksClusterRbacBindingSubjectsObservation struct { type EksClusterRbacBindingSubjectsParameters struct { + // The name of the subject. Required if 'type' is set to 'User' or 'Group'. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // The Kubernetes namespace of the subject. Required if 'type' is set to 'ServiceAccount'. // +kubebuilder:validation:Optional Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` - // Available types: `Users`, `Groups`, Service Account + // The type of the subject. Can be one of the following values: `User`, `Group`, or `ServiceAccount`. // +kubebuilder:validation:Required Type *string `json:"type" tf:"type,omitempty"` } @@ -212,6 +249,7 @@ type EksMachinePoolParameters struct { // +kubebuilder:validation:Optional CapacityType *string `json:"capacityType,omitempty" tf:"capacity_type,omitempty"` + // Number of nodes in the machine pool. // +kubebuilder:validation:Required Count *float64 `json:"count" tf:"count,omitempty"` @@ -236,6 +274,7 @@ type EksMachinePoolParameters struct { // +kubebuilder:validation:Optional Taints []EksMachinePoolTaintsParameters `json:"taints,omitempty" tf:"taints,omitempty"` + // Update strategy for the machine pool. Valid values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`. // +kubebuilder:validation:Optional UpdateStrategy *string `json:"updateStrategy,omitempty" tf:"update_strategy,omitempty"` } @@ -245,12 +284,15 @@ type EksMachinePoolTaintsObservation struct { type EksMachinePoolTaintsParameters struct { + // The effect of the taint. Allowed values are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`. // +kubebuilder:validation:Required Effect *string `json:"effect" tf:"effect,omitempty"` + // The key of the taint. // +kubebuilder:validation:Required Key *string `json:"key" tf:"key,omitempty"` + // The value of the taint. // +kubebuilder:validation:Required Value *string `json:"value" tf:"value,omitempty"` } @@ -260,41 +302,35 @@ type EksNamespacesObservation struct { type EksNamespacesParameters struct { + // List of images to disallow for the namespace. For example, `['nginx:latest', 'redis:latest']` + // +kubebuilder:validation:Optional + ImagesBlacklist []*string `json:"imagesBlacklist,omitempty" tf:"images_blacklist,omitempty"` + + // Name of the namespace. This is the name of the Kubernetes namespace in the cluster. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // Resource allocation for the namespace. This is a map containing the resource type and the resource value. For example, `{cpu_cores: '2', memory_MiB: '2048'}` // +kubebuilder:validation:Required ResourceAllocation map[string]*string `json:"resourceAllocation" tf:"resource_allocation,omitempty"` } type EksObservation struct { + + // ID of the cloud config used for the cluster. This cloud config must be of type `azure`. CloudConfigID *string `json:"cloudConfigId,omitempty" tf:"cloud_config_id,omitempty"` + // +kubebuilder:validation:Optional + ClusterProfile []EksClusterProfileObservation `json:"clusterProfile,omitempty" tf:"cluster_profile,omitempty"` + ID *string `json:"id,omitempty" tf:"id,omitempty"` + // Kubeconfig for the cluster. This can be used to connect to the cluster using `kubectl`. Kubeconfig *string `json:"kubeconfig,omitempty" tf:"kubeconfig,omitempty"` LocationConfig []EksLocationConfigObservation `json:"locationConfig,omitempty" tf:"location_config,omitempty"` } -type EksPackObservation struct { -} - -type EksPackParameters struct { - - // +kubebuilder:validation:Required - Name *string `json:"name" tf:"name,omitempty"` - - // +kubebuilder:validation:Optional - RegistryUID *string `json:"registryUid,omitempty" tf:"registry_uid,omitempty"` - - // +kubebuilder:validation:Required - Tag *string `json:"tag" tf:"tag,omitempty"` - - // +kubebuilder:validation:Required - Values *string `json:"values" tf:"values,omitempty"` -} - type EksParameters struct { // +kubebuilder:validation:Optional @@ -303,19 +339,17 @@ type EksParameters struct { // +kubebuilder:validation:Optional BackupPolicy []EksBackupPolicyParameters `json:"backupPolicy,omitempty" tf:"backup_policy,omitempty"` + // The AWS cloud account id to use for this cluster. // +kubebuilder:validation:Required CloudAccountID *string `json:"cloudAccountId" tf:"cloud_account_id,omitempty"` + // The AWS environment configuration settings such as network parameters and encryption parameters that apply to this cluster. // +kubebuilder:validation:Required CloudConfig []EksCloudConfigParameters `json:"cloudConfig" tf:"cloud_config,omitempty"` // +kubebuilder:validation:Optional ClusterProfile []EksClusterProfileParameters `json:"clusterProfile,omitempty" tf:"cluster_profile,omitempty"` - // +kubebuilder:validation:Optional - ClusterProfileID *string `json:"clusterProfileId,omitempty" tf:"cluster_profile_id,omitempty"` - - // A Cluster Role binding defines the permissions defined across a cluster. // +kubebuilder:validation:Optional ClusterRbacBinding []EksClusterRbacBindingParameters `json:"clusterRbacBinding,omitempty" tf:"cluster_rbac_binding,omitempty"` @@ -328,30 +362,33 @@ type EksParameters struct { // +kubebuilder:validation:Optional HostConfig []EksHostConfigParameters `json:"hostConfig,omitempty" tf:"host_config,omitempty"` + // The machine pool configuration for the cluster. // +kubebuilder:validation:Required MachinePool []EksMachinePoolParameters `json:"machinePool" tf:"machine_pool,omitempty"` // +kubebuilder:validation:Optional Namespaces []EksNamespacesParameters `json:"namespaces,omitempty" tf:"namespaces,omitempty"` + // Date and time after which to patch cluster `RFC3339: 2006-01-02T15:04:05Z07:00` // +kubebuilder:validation:Optional OsPatchAfter *string `json:"osPatchAfter,omitempty" tf:"os_patch_after,omitempty"` + // Whether to apply OS patch on boot. Default is `false`. // +kubebuilder:validation:Optional OsPatchOnBoot *bool `json:"osPatchOnBoot,omitempty" tf:"os_patch_on_boot,omitempty"` + // Cron schedule for OS patching. This must be in the form of `0 0 * * *`. // +kubebuilder:validation:Optional OsPatchSchedule *string `json:"osPatchSchedule,omitempty" tf:"os_patch_schedule,omitempty"` - // +kubebuilder:validation:Optional - Pack []EksPackParameters `json:"pack,omitempty" tf:"pack,omitempty"` - // +kubebuilder:validation:Optional ScanPolicy []EksScanPolicyParameters `json:"scanPolicy,omitempty" tf:"scan_policy,omitempty"` + // If `true`, the cluster will be created asynchronously. Default value is `false`. // +kubebuilder:validation:Optional SkipCompletion *bool `json:"skipCompletion,omitempty" tf:"skip_completion,omitempty"` + // A list of tags to be applied to the cluster. Tags must be in the form of `key:value`. // +kubebuilder:validation:Optional Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` } @@ -361,12 +398,15 @@ type EksScanPolicyObservation struct { type EksScanPolicyParameters struct { + // The schedule for configuration scan. // +kubebuilder:validation:Required ConfigurationScanSchedule *string `json:"configurationScanSchedule" tf:"configuration_scan_schedule,omitempty"` + // The schedule for conformance scan. // +kubebuilder:validation:Required ConformanceScanSchedule *string `json:"conformanceScanSchedule" tf:"conformance_scan_schedule,omitempty"` + // The schedule for penetration scan. // +kubebuilder:validation:Required PenetrationScanSchedule *string `json:"penetrationScanSchedule" tf:"penetration_scan_schedule,omitempty"` } diff --git a/apis/cluster/v1alpha1/zz_gcp_types.go b/apis/cluster/v1alpha1/zz_gcp_types.go index f417d1c..7b15877 100755 --- a/apis/cluster/v1alpha1/zz_gcp_types.go +++ b/apis/cluster/v1alpha1/zz_gcp_types.go @@ -18,24 +18,39 @@ type GCPBackupPolicyObservation struct { type GCPBackupPolicyParameters struct { + // The ID of the backup location to use for the backup. // +kubebuilder:validation:Required BackupLocationID *string `json:"backupLocationId" tf:"backup_location_id,omitempty"` + // The list of cluster UIDs to include in the backup. If `include_all_clusters` is set to `true`, then all clusters will be included. + // +kubebuilder:validation:Optional + ClusterUids []*string `json:"clusterUids,omitempty" tf:"cluster_uids,omitempty"` + + // The number of hours after which the backup will be deleted. For example, if the expiry is set to 24, the backup will be deleted after 24 hours. // +kubebuilder:validation:Required ExpiryInHour *float64 `json:"expiryInHour" tf:"expiry_in_hour,omitempty"` + // Whether to include all clusters in the backup. If set to false, only the clusters specified in `cluster_uids` will be included. + // +kubebuilder:validation:Optional + IncludeAllClusters *bool `json:"includeAllClusters,omitempty" tf:"include_all_clusters,omitempty"` + + // Whether to include the cluster resources in the backup. If set to false, only the cluster configuration and disks will be backed up. // +kubebuilder:validation:Optional IncludeClusterResources *bool `json:"includeClusterResources,omitempty" tf:"include_cluster_resources,omitempty"` + // Whether to include the disks in the backup. If set to false, only the cluster configuration will be backed up. // +kubebuilder:validation:Optional IncludeDisks *bool `json:"includeDisks,omitempty" tf:"include_disks,omitempty"` + // The list of Kubernetes namespaces to include in the backup. If not specified, all namespaces will be included. // +kubebuilder:validation:Optional Namespaces []*string `json:"namespaces,omitempty" tf:"namespaces,omitempty"` + // Prefix for the backup name. The backup name will be of the format --. // +kubebuilder:validation:Required Prefix *string `json:"prefix" tf:"prefix,omitempty"` + // The schedule for the backup. The schedule is specified in cron format. For example, to run the backup every day at 1:00 AM, the schedule should be set to `0 1 * * *`. // +kubebuilder:validation:Required Schedule *string `json:"schedule" tf:"schedule,omitempty"` } @@ -56,21 +71,30 @@ type GCPCloudConfigParameters struct { } type GCPClusterProfileObservation struct { + + // +kubebuilder:validation:Optional + Pack []GCPClusterProfilePackObservation `json:"pack,omitempty" tf:"pack,omitempty"` } type GCPClusterProfilePackManifestObservation struct { + UID *string `json:"uid,omitempty" tf:"uid,omitempty"` } type GCPClusterProfilePackManifestParameters struct { + // The content of the manifest. The content is the YAML content of the manifest. // +kubebuilder:validation:Required Content *string `json:"content" tf:"content,omitempty"` + // The name of the manifest. The name must be unique within the pack. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` } type GCPClusterProfilePackObservation struct { + + // +kubebuilder:validation:Optional + Manifest []GCPClusterProfilePackManifestObservation `json:"manifest,omitempty" tf:"manifest,omitempty"` } type GCPClusterProfilePackParameters struct { @@ -78,24 +102,33 @@ type GCPClusterProfilePackParameters struct { // +kubebuilder:validation:Optional Manifest []GCPClusterProfilePackManifestParameters `json:"manifest,omitempty" tf:"manifest,omitempty"` + // The name of the pack. The name must be unique within the cluster profile. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // The registry UID of the pack. The registry UID is the unique identifier of the registry. // +kubebuilder:validation:Optional RegistryUID *string `json:"registryUid,omitempty" tf:"registry_uid,omitempty"` + // The tag of the pack. The tag is the version of the pack. // +kubebuilder:validation:Optional Tag *string `json:"tag,omitempty" tf:"tag,omitempty"` + // The type of the pack. The default value is `spectro`. // +kubebuilder:validation:Optional Type *string `json:"type,omitempty" tf:"type,omitempty"` + // +kubebuilder:validation:Optional + UID *string `json:"uid,omitempty" tf:"uid,omitempty"` + + // The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. // +kubebuilder:validation:Required Values *string `json:"values" tf:"values,omitempty"` } type GCPClusterProfileParameters struct { + // The ID of the cluster profile. // +kubebuilder:validation:Required ID *string `json:"id" tf:"id,omitempty"` @@ -108,15 +141,18 @@ type GCPClusterRbacBindingObservation struct { type GCPClusterRbacBindingParameters struct { + // The Kubernetes namespace of the RBAC binding. Required if 'type' is set to 'RoleBinding'. // +kubebuilder:validation:Optional Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` + // The role of the RBAC binding. Required if 'type' is set to 'RoleBinding'. // +kubebuilder:validation:Optional Role map[string]*string `json:"role,omitempty" tf:"role,omitempty"` // +kubebuilder:validation:Optional Subjects []GCPClusterRbacBindingSubjectsParameters `json:"subjects,omitempty" tf:"subjects,omitempty"` + // The type of the RBAC binding. Can be one of the following values: `RoleBinding`, or `ClusterRoleBinding`. // +kubebuilder:validation:Required Type *string `json:"type" tf:"type,omitempty"` } @@ -126,12 +162,15 @@ type GCPClusterRbacBindingSubjectsObservation struct { type GCPClusterRbacBindingSubjectsParameters struct { + // The name of the subject. Required if 'type' is set to 'User' or 'Group'. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // The Kubernetes namespace of the subject. Required if 'type' is set to 'ServiceAccount'. // +kubebuilder:validation:Optional Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` + // The type of the subject. Can be one of the following values: `User`, `Group`, or `ServiceAccount`. // +kubebuilder:validation:Required Type *string `json:"type" tf:"type,omitempty"` } @@ -186,12 +225,15 @@ type GCPMachinePoolParameters struct { // +kubebuilder:validation:Required Azs []*string `json:"azs" tf:"azs,omitempty"` + // Whether this machine pool is a control plane. Defaults to `false`. // +kubebuilder:validation:Optional ControlPlane *bool `json:"controlPlane,omitempty" tf:"control_plane,omitempty"` + // Whether this machine pool is a control plane and a worker. Defaults to `false`. // +kubebuilder:validation:Optional ControlPlaneAsWorker *bool `json:"controlPlaneAsWorker,omitempty" tf:"control_plane_as_worker,omitempty"` + // Number of nodes in the machine pool. // +kubebuilder:validation:Required Count *float64 `json:"count" tf:"count,omitempty"` @@ -207,6 +249,7 @@ type GCPMachinePoolParameters struct { // +kubebuilder:validation:Optional Taints []GCPMachinePoolTaintsParameters `json:"taints,omitempty" tf:"taints,omitempty"` + // Update strategy for the machine pool. Valid values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`. // +kubebuilder:validation:Optional UpdateStrategy *string `json:"updateStrategy,omitempty" tf:"update_strategy,omitempty"` } @@ -216,12 +259,15 @@ type GCPMachinePoolTaintsObservation struct { type GCPMachinePoolTaintsParameters struct { + // The effect of the taint. Allowed values are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`. // +kubebuilder:validation:Required Effect *string `json:"effect" tf:"effect,omitempty"` + // The key of the taint. // +kubebuilder:validation:Required Key *string `json:"key" tf:"key,omitempty"` + // The value of the taint. // +kubebuilder:validation:Required Value *string `json:"value" tf:"value,omitempty"` } @@ -231,41 +277,35 @@ type GCPNamespacesObservation struct { type GCPNamespacesParameters struct { + // List of images to disallow for the namespace. For example, `['nginx:latest', 'redis:latest']` + // +kubebuilder:validation:Optional + ImagesBlacklist []*string `json:"imagesBlacklist,omitempty" tf:"images_blacklist,omitempty"` + + // Name of the namespace. This is the name of the Kubernetes namespace in the cluster. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // Resource allocation for the namespace. This is a map containing the resource type and the resource value. For example, `{cpu_cores: '2', memory_MiB: '2048'}` // +kubebuilder:validation:Required ResourceAllocation map[string]*string `json:"resourceAllocation" tf:"resource_allocation,omitempty"` } type GCPObservation struct { + + // ID of the cloud config used for the cluster. This cloud config must be of type `azure`. CloudConfigID *string `json:"cloudConfigId,omitempty" tf:"cloud_config_id,omitempty"` + // +kubebuilder:validation:Optional + ClusterProfile []GCPClusterProfileObservation `json:"clusterProfile,omitempty" tf:"cluster_profile,omitempty"` + ID *string `json:"id,omitempty" tf:"id,omitempty"` + // Kubeconfig for the cluster. This can be used to connect to the cluster using `kubectl`. Kubeconfig *string `json:"kubeconfig,omitempty" tf:"kubeconfig,omitempty"` LocationConfig []GCPLocationConfigObservation `json:"locationConfig,omitempty" tf:"location_config,omitempty"` } -type GCPPackObservation struct { -} - -type GCPPackParameters struct { - - // +kubebuilder:validation:Required - Name *string `json:"name" tf:"name,omitempty"` - - // +kubebuilder:validation:Optional - RegistryUID *string `json:"registryUid,omitempty" tf:"registry_uid,omitempty"` - - // +kubebuilder:validation:Required - Tag *string `json:"tag" tf:"tag,omitempty"` - - // +kubebuilder:validation:Required - Values *string `json:"values" tf:"values,omitempty"` -} - type GCPParameters struct { // +kubebuilder:validation:Optional @@ -295,24 +335,26 @@ type GCPParameters struct { // +kubebuilder:validation:Optional Namespaces []GCPNamespacesParameters `json:"namespaces,omitempty" tf:"namespaces,omitempty"` + // Date and time after which to patch cluster `RFC3339: 2006-01-02T15:04:05Z07:00` // +kubebuilder:validation:Optional OsPatchAfter *string `json:"osPatchAfter,omitempty" tf:"os_patch_after,omitempty"` + // Whether to apply OS patch on boot. Default is `false`. // +kubebuilder:validation:Optional OsPatchOnBoot *bool `json:"osPatchOnBoot,omitempty" tf:"os_patch_on_boot,omitempty"` + // Cron schedule for OS patching. This must be in the form of `0 0 * * *`. // +kubebuilder:validation:Optional OsPatchSchedule *string `json:"osPatchSchedule,omitempty" tf:"os_patch_schedule,omitempty"` - // +kubebuilder:validation:Optional - Pack []GCPPackParameters `json:"pack,omitempty" tf:"pack,omitempty"` - // +kubebuilder:validation:Optional ScanPolicy []GCPScanPolicyParameters `json:"scanPolicy,omitempty" tf:"scan_policy,omitempty"` + // If `true`, the cluster will be created asynchronously. Default value is `false`. // +kubebuilder:validation:Optional SkipCompletion *bool `json:"skipCompletion,omitempty" tf:"skip_completion,omitempty"` + // A list of tags to be applied to the cluster. Tags must be in the form of `key:value`. // +kubebuilder:validation:Optional Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` } @@ -322,12 +364,15 @@ type GCPScanPolicyObservation struct { type GCPScanPolicyParameters struct { + // The schedule for configuration scan. // +kubebuilder:validation:Required ConfigurationScanSchedule *string `json:"configurationScanSchedule" tf:"configuration_scan_schedule,omitempty"` + // The schedule for conformance scan. // +kubebuilder:validation:Required ConformanceScanSchedule *string `json:"conformanceScanSchedule" tf:"conformance_scan_schedule,omitempty"` + // The schedule for penetration scan. // +kubebuilder:validation:Required PenetrationScanSchedule *string `json:"penetrationScanSchedule" tf:"penetration_scan_schedule,omitempty"` } diff --git a/apis/cluster/v1alpha1/zz_generated.deepcopy.go b/apis/cluster/v1alpha1/zz_generated.deepcopy.go index db47742..c41f03f 100644 --- a/apis/cluster/v1alpha1/zz_generated.deepcopy.go +++ b/apis/cluster/v1alpha1/zz_generated.deepcopy.go @@ -80,6 +80,13 @@ func (in *AksObservation) DeepCopyInto(out *AksObservation) { *out = new(string) **out = **in } + if in.ClusterProfile != nil { + in, out := &in.ClusterProfile, &out.ClusterProfile + *out = make([]ClusterProfileObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.ID != nil { in, out := &in.ID, &out.ID *out = new(string) @@ -109,56 +116,6 @@ func (in *AksObservation) DeepCopy() *AksObservation { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *AksPackObservation) DeepCopyInto(out *AksPackObservation) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AksPackObservation. -func (in *AksPackObservation) DeepCopy() *AksPackObservation { - if in == nil { - return nil - } - out := new(AksPackObservation) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *AksPackParameters) DeepCopyInto(out *AksPackParameters) { - *out = *in - if in.Name != nil { - in, out := &in.Name, &out.Name - *out = new(string) - **out = **in - } - if in.RegistryUID != nil { - in, out := &in.RegistryUID, &out.RegistryUID - *out = new(string) - **out = **in - } - if in.Tag != nil { - in, out := &in.Tag, &out.Tag - *out = new(string) - **out = **in - } - if in.Values != nil { - in, out := &in.Values, &out.Values - *out = new(string) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AksPackParameters. -func (in *AksPackParameters) DeepCopy() *AksPackParameters { - if in == nil { - return nil - } - out := new(AksPackParameters) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *AksParameters) DeepCopyInto(out *AksParameters) { *out = *in @@ -236,13 +193,6 @@ func (in *AksParameters) DeepCopyInto(out *AksParameters) { *out = new(string) **out = **in } - if in.Pack != nil { - in, out := &in.Pack, &out.Pack - *out = make([]AksPackParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } if in.ScanPolicy != nil { in, out := &in.ScanPolicy, &out.ScanPolicy *out = make([]ScanPolicyParameters, len(*in)) @@ -402,11 +352,27 @@ func (in *AwsBackupPolicyParameters) DeepCopyInto(out *AwsBackupPolicyParameters *out = new(string) **out = **in } + if in.ClusterUids != nil { + in, out := &in.ClusterUids, &out.ClusterUids + *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.ExpiryInHour != nil { in, out := &in.ExpiryInHour, &out.ExpiryInHour *out = new(float64) **out = **in } + if in.IncludeAllClusters != nil { + in, out := &in.IncludeAllClusters, &out.IncludeAllClusters + *out = new(bool) + **out = **in + } if in.IncludeClusterResources != nil { in, out := &in.IncludeClusterResources, &out.IncludeClusterResources *out = new(bool) @@ -498,6 +464,13 @@ func (in *AwsCloudConfigParameters) DeepCopy() *AwsCloudConfigParameters { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *AwsClusterProfileObservation) DeepCopyInto(out *AwsClusterProfileObservation) { *out = *in + if in.Pack != nil { + in, out := &in.Pack, &out.Pack + *out = make([]ClusterProfilePackObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AwsClusterProfileObservation. @@ -882,6 +855,17 @@ func (in *AwsNamespacesObservation) DeepCopy() *AwsNamespacesObservation { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *AwsNamespacesParameters) DeepCopyInto(out *AwsNamespacesParameters) { *out = *in + if in.ImagesBlacklist != nil { + in, out := &in.ImagesBlacklist, &out.ImagesBlacklist + *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.Name != nil { in, out := &in.Name, &out.Name *out = new(string) @@ -922,6 +906,13 @@ func (in *AwsObservation) DeepCopyInto(out *AwsObservation) { *out = new(string) **out = **in } + if in.ClusterProfile != nil { + in, out := &in.ClusterProfile, &out.ClusterProfile + *out = make([]AwsClusterProfileObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.ID != nil { in, out := &in.ID, &out.ID *out = new(string) @@ -951,56 +942,6 @@ func (in *AwsObservation) DeepCopy() *AwsObservation { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *AwsPackObservation) DeepCopyInto(out *AwsPackObservation) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AwsPackObservation. -func (in *AwsPackObservation) DeepCopy() *AwsPackObservation { - if in == nil { - return nil - } - out := new(AwsPackObservation) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *AwsPackParameters) DeepCopyInto(out *AwsPackParameters) { - *out = *in - if in.Name != nil { - in, out := &in.Name, &out.Name - *out = new(string) - **out = **in - } - if in.RegistryUID != nil { - in, out := &in.RegistryUID, &out.RegistryUID - *out = new(string) - **out = **in - } - if in.Tag != nil { - in, out := &in.Tag, &out.Tag - *out = new(string) - **out = **in - } - if in.Values != nil { - in, out := &in.Values, &out.Values - *out = new(string) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AwsPackParameters. -func (in *AwsPackParameters) DeepCopy() *AwsPackParameters { - if in == nil { - return nil - } - out := new(AwsPackParameters) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *AwsParameters) DeepCopyInto(out *AwsParameters) { *out = *in @@ -1035,11 +976,6 @@ func (in *AwsParameters) DeepCopyInto(out *AwsParameters) { (*in)[i].DeepCopyInto(&(*out)[i]) } } - if in.ClusterProfileID != nil { - in, out := &in.ClusterProfileID, &out.ClusterProfileID - *out = new(string) - **out = **in - } if in.ClusterRbacBinding != nil { in, out := &in.ClusterRbacBinding, &out.ClusterRbacBinding *out = make([]AwsClusterRbacBindingParameters, len(*in)) @@ -1083,13 +1019,6 @@ func (in *AwsParameters) DeepCopyInto(out *AwsParameters) { *out = new(string) **out = **in } - if in.Pack != nil { - in, out := &in.Pack, &out.Pack - *out = make([]AwsPackParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } if in.ScanPolicy != nil { in, out := &in.ScanPolicy, &out.ScanPolicy *out = make([]AwsScanPolicyParameters, len(*in)) @@ -1254,11 +1183,27 @@ func (in *AzureBackupPolicyParameters) DeepCopyInto(out *AzureBackupPolicyParame *out = new(string) **out = **in } + if in.ClusterUids != nil { + in, out := &in.ClusterUids, &out.ClusterUids + *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.ExpiryInHour != nil { in, out := &in.ExpiryInHour, &out.ExpiryInHour *out = new(float64) **out = **in } + if in.IncludeAllClusters != nil { + in, out := &in.IncludeAllClusters, &out.IncludeAllClusters + *out = new(bool) + **out = **in + } if in.IncludeClusterResources != nil { in, out := &in.IncludeClusterResources, &out.IncludeClusterResources *out = new(bool) @@ -1355,6 +1300,13 @@ func (in *AzureCloudConfigParameters) DeepCopy() *AzureCloudConfigParameters { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *AzureClusterProfileObservation) DeepCopyInto(out *AzureClusterProfileObservation) { *out = *in + if in.Pack != nil { + in, out := &in.Pack, &out.Pack + *out = make([]AzureClusterProfilePackObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AzureClusterProfileObservation. @@ -1370,6 +1322,13 @@ func (in *AzureClusterProfileObservation) DeepCopy() *AzureClusterProfileObserva // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *AzureClusterProfilePackObservation) DeepCopyInto(out *AzureClusterProfilePackObservation) { *out = *in + if in.Manifest != nil { + in, out := &in.Manifest, &out.Manifest + *out = make([]ClusterProfilePackManifestObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AzureClusterProfilePackObservation. @@ -1412,6 +1371,11 @@ func (in *AzureClusterProfilePackParameters) DeepCopyInto(out *AzureClusterProfi *out = new(string) **out = **in } + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(string) + **out = **in + } if in.Values != nil { in, out := &in.Values, &out.Values *out = new(string) @@ -1878,6 +1842,17 @@ func (in *AzureNamespacesObservation) DeepCopy() *AzureNamespacesObservation { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *AzureNamespacesParameters) DeepCopyInto(out *AzureNamespacesParameters) { *out = *in + if in.ImagesBlacklist != nil { + in, out := &in.ImagesBlacklist, &out.ImagesBlacklist + *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.Name != nil { in, out := &in.Name, &out.Name *out = new(string) @@ -1918,6 +1893,13 @@ func (in *AzureObservation) DeepCopyInto(out *AzureObservation) { *out = new(string) **out = **in } + if in.ClusterProfile != nil { + in, out := &in.ClusterProfile, &out.ClusterProfile + *out = make([]AzureClusterProfileObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.ID != nil { in, out := &in.ID, &out.ID *out = new(string) @@ -1947,56 +1929,6 @@ func (in *AzureObservation) DeepCopy() *AzureObservation { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *AzurePackObservation) DeepCopyInto(out *AzurePackObservation) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AzurePackObservation. -func (in *AzurePackObservation) DeepCopy() *AzurePackObservation { - if in == nil { - return nil - } - out := new(AzurePackObservation) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *AzurePackParameters) DeepCopyInto(out *AzurePackParameters) { - *out = *in - if in.Name != nil { - in, out := &in.Name, &out.Name - *out = new(string) - **out = **in - } - if in.RegistryUID != nil { - in, out := &in.RegistryUID, &out.RegistryUID - *out = new(string) - **out = **in - } - if in.Tag != nil { - in, out := &in.Tag, &out.Tag - *out = new(string) - **out = **in - } - if in.Values != nil { - in, out := &in.Values, &out.Values - *out = new(string) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AzurePackParameters. -func (in *AzurePackParameters) DeepCopy() *AzurePackParameters { - if in == nil { - return nil - } - out := new(AzurePackParameters) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *AzureParameters) DeepCopyInto(out *AzureParameters) { *out = *in @@ -2074,13 +2006,6 @@ func (in *AzureParameters) DeepCopyInto(out *AzureParameters) { *out = new(string) **out = **in } - if in.Pack != nil { - in, out := &in.Pack, &out.Pack - *out = make([]AzurePackParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } if in.ScanPolicy != nil { in, out := &in.ScanPolicy, &out.ScanPolicy *out = make([]AzureScanPolicyParameters, len(*in)) @@ -2218,11 +2143,27 @@ func (in *BackupPolicyParameters) DeepCopyInto(out *BackupPolicyParameters) { *out = new(string) **out = **in } + if in.ClusterUids != nil { + in, out := &in.ClusterUids, &out.ClusterUids + *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.ExpiryInHour != nil { in, out := &in.ExpiryInHour, &out.ExpiryInHour *out = new(float64) **out = **in } + if in.IncludeAllClusters != nil { + in, out := &in.IncludeAllClusters, &out.IncludeAllClusters + *out = new(bool) + **out = **in + } if in.IncludeClusterResources != nil { in, out := &in.IncludeClusterResources, &out.IncludeClusterResources *out = new(bool) @@ -2344,6 +2285,13 @@ func (in *CloudConfigParameters) DeepCopy() *CloudConfigParameters { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ClusterProfileObservation) DeepCopyInto(out *ClusterProfileObservation) { *out = *in + if in.Pack != nil { + in, out := &in.Pack, &out.Pack + *out = make([]PackObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterProfileObservation. @@ -2359,6 +2307,11 @@ func (in *ClusterProfileObservation) DeepCopy() *ClusterProfileObservation { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ClusterProfilePackManifestObservation) DeepCopyInto(out *ClusterProfilePackManifestObservation) { *out = *in + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterProfilePackManifestObservation. @@ -2399,9 +2352,16 @@ func (in *ClusterProfilePackManifestParameters) DeepCopy() *ClusterProfilePackMa // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ClusterProfilePackObservation) DeepCopyInto(out *ClusterProfilePackObservation) { *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterProfilePackObservation. + if in.Manifest != nil { + in, out := &in.Manifest, &out.Manifest + *out = make([]PackManifestObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterProfilePackObservation. func (in *ClusterProfilePackObservation) DeepCopy() *ClusterProfilePackObservation { if in == nil { return nil @@ -2441,6 +2401,11 @@ func (in *ClusterProfilePackParameters) DeepCopyInto(out *ClusterProfilePackPara *out = new(string) **out = **in } + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(string) + **out = **in + } if in.Values != nil { in, out := &in.Values, &out.Values *out = new(string) @@ -2782,11 +2747,27 @@ func (in *EdgeBackupPolicyParameters) DeepCopyInto(out *EdgeBackupPolicyParamete *out = new(string) **out = **in } + if in.ClusterUids != nil { + in, out := &in.ClusterUids, &out.ClusterUids + *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.ExpiryInHour != nil { in, out := &in.ExpiryInHour, &out.ExpiryInHour *out = new(float64) **out = **in } + if in.IncludeAllClusters != nil { + in, out := &in.IncludeAllClusters, &out.IncludeAllClusters + *out = new(bool) + **out = **in + } if in.IncludeClusterResources != nil { in, out := &in.IncludeClusterResources, &out.IncludeClusterResources *out = new(bool) @@ -2868,6 +2849,13 @@ func (in *EdgeCloudConfigParameters) DeepCopy() *EdgeCloudConfigParameters { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *EdgeClusterProfileObservation) DeepCopyInto(out *EdgeClusterProfileObservation) { *out = *in + if in.Pack != nil { + in, out := &in.Pack, &out.Pack + *out = make([]EdgeClusterProfilePackObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EdgeClusterProfileObservation. @@ -2883,6 +2871,11 @@ func (in *EdgeClusterProfileObservation) DeepCopy() *EdgeClusterProfileObservati // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *EdgeClusterProfilePackManifestObservation) DeepCopyInto(out *EdgeClusterProfilePackManifestObservation) { *out = *in + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EdgeClusterProfilePackManifestObservation. @@ -2923,6 +2916,13 @@ func (in *EdgeClusterProfilePackManifestParameters) DeepCopy() *EdgeClusterProfi // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *EdgeClusterProfilePackObservation) DeepCopyInto(out *EdgeClusterProfilePackObservation) { *out = *in + if in.Manifest != nil { + in, out := &in.Manifest, &out.Manifest + *out = make([]EdgeClusterProfilePackManifestObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EdgeClusterProfilePackObservation. @@ -2965,6 +2965,11 @@ func (in *EdgeClusterProfilePackParameters) DeepCopyInto(out *EdgeClusterProfile *out = new(string) **out = **in } + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(string) + **out = **in + } if in.Values != nil { in, out := &in.Values, &out.Values *out = new(string) @@ -3405,6 +3410,17 @@ func (in *EdgeNamespacesObservation) DeepCopy() *EdgeNamespacesObservation { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *EdgeNamespacesParameters) DeepCopyInto(out *EdgeNamespacesParameters) { *out = *in + if in.ImagesBlacklist != nil { + in, out := &in.ImagesBlacklist, &out.ImagesBlacklist + *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.Name != nil { in, out := &in.Name, &out.Name *out = new(string) @@ -3487,11 +3503,27 @@ func (in *EdgeNativeBackupPolicyParameters) DeepCopyInto(out *EdgeNativeBackupPo *out = new(string) **out = **in } + if in.ClusterUids != nil { + in, out := &in.ClusterUids, &out.ClusterUids + *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.ExpiryInHour != nil { in, out := &in.ExpiryInHour, &out.ExpiryInHour *out = new(float64) **out = **in } + if in.IncludeAllClusters != nil { + in, out := &in.IncludeAllClusters, &out.IncludeAllClusters + *out = new(bool) + **out = **in + } if in.IncludeClusterResources != nil { in, out := &in.IncludeClusterResources, &out.IncludeClusterResources *out = new(bool) @@ -3589,6 +3621,13 @@ func (in *EdgeNativeCloudConfigParameters) DeepCopy() *EdgeNativeCloudConfigPara // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *EdgeNativeClusterProfileObservation) DeepCopyInto(out *EdgeNativeClusterProfileObservation) { *out = *in + if in.Pack != nil { + in, out := &in.Pack, &out.Pack + *out = make([]EdgeNativeClusterProfilePackObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EdgeNativeClusterProfileObservation. @@ -3604,6 +3643,11 @@ func (in *EdgeNativeClusterProfileObservation) DeepCopy() *EdgeNativeClusterProf // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *EdgeNativeClusterProfilePackManifestObservation) DeepCopyInto(out *EdgeNativeClusterProfilePackManifestObservation) { *out = *in + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EdgeNativeClusterProfilePackManifestObservation. @@ -3644,6 +3688,13 @@ func (in *EdgeNativeClusterProfilePackManifestParameters) DeepCopy() *EdgeNative // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *EdgeNativeClusterProfilePackObservation) DeepCopyInto(out *EdgeNativeClusterProfilePackObservation) { *out = *in + if in.Manifest != nil { + in, out := &in.Manifest, &out.Manifest + *out = make([]EdgeNativeClusterProfilePackManifestObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EdgeNativeClusterProfilePackObservation. @@ -3686,6 +3737,11 @@ func (in *EdgeNativeClusterProfilePackParameters) DeepCopyInto(out *EdgeNativeCl *out = new(string) **out = **in } + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(string) + **out = **in + } if in.Values != nil { in, out := &in.Values, &out.Values *out = new(string) @@ -3718,11 +3774,6 @@ func (in *EdgeNativeClusterProfileParameters) DeepCopyInto(out *EdgeNativeCluste (*in)[i].DeepCopyInto(&(*out)[i]) } } - 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 EdgeNativeClusterProfileParameters. @@ -4130,6 +4181,17 @@ func (in *EdgeNativeNamespacesObservation) DeepCopy() *EdgeNativeNamespacesObser // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *EdgeNativeNamespacesParameters) DeepCopyInto(out *EdgeNativeNamespacesParameters) { *out = *in + if in.ImagesBlacklist != nil { + in, out := &in.ImagesBlacklist, &out.ImagesBlacklist + *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.Name != nil { in, out := &in.Name, &out.Name *out = new(string) @@ -4170,6 +4232,13 @@ func (in *EdgeNativeObservation) DeepCopyInto(out *EdgeNativeObservation) { *out = new(string) **out = **in } + if in.ClusterProfile != nil { + in, out := &in.ClusterProfile, &out.ClusterProfile + *out = make([]EdgeNativeClusterProfileObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.ID != nil { in, out := &in.ID, &out.ID *out = new(string) @@ -4192,56 +4261,6 @@ func (in *EdgeNativeObservation) DeepCopy() *EdgeNativeObservation { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *EdgeNativePackObservation) DeepCopyInto(out *EdgeNativePackObservation) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EdgeNativePackObservation. -func (in *EdgeNativePackObservation) DeepCopy() *EdgeNativePackObservation { - if in == nil { - return nil - } - out := new(EdgeNativePackObservation) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *EdgeNativePackParameters) DeepCopyInto(out *EdgeNativePackParameters) { - *out = *in - if in.Name != nil { - in, out := &in.Name, &out.Name - *out = new(string) - **out = **in - } - if in.RegistryUID != nil { - in, out := &in.RegistryUID, &out.RegistryUID - *out = new(string) - **out = **in - } - if in.Tag != nil { - in, out := &in.Tag, &out.Tag - *out = new(string) - **out = **in - } - if in.Values != nil { - in, out := &in.Values, &out.Values - *out = new(string) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EdgeNativePackParameters. -func (in *EdgeNativePackParameters) DeepCopy() *EdgeNativePackParameters { - if in == nil { - return nil - } - out := new(EdgeNativePackParameters) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *EdgeNativeParameters) DeepCopyInto(out *EdgeNativeParameters) { *out = *in @@ -4326,13 +4345,6 @@ func (in *EdgeNativeParameters) DeepCopyInto(out *EdgeNativeParameters) { *out = new(string) **out = **in } - if in.Pack != nil { - in, out := &in.Pack, &out.Pack - *out = make([]EdgeNativePackParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } if in.ScanPolicy != nil { in, out := &in.ScanPolicy, &out.ScanPolicy *out = make([]EdgeNativeScanPolicyParameters, len(*in)) @@ -4455,6 +4467,13 @@ func (in *EdgeObservation) DeepCopyInto(out *EdgeObservation) { *out = new(string) **out = **in } + if in.ClusterProfile != nil { + in, out := &in.ClusterProfile, &out.ClusterProfile + *out = make([]EdgeClusterProfileObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.ID != nil { in, out := &in.ID, &out.ID *out = new(string) @@ -4477,56 +4496,6 @@ func (in *EdgeObservation) DeepCopy() *EdgeObservation { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *EdgePackObservation) DeepCopyInto(out *EdgePackObservation) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EdgePackObservation. -func (in *EdgePackObservation) DeepCopy() *EdgePackObservation { - if in == nil { - return nil - } - out := new(EdgePackObservation) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *EdgePackParameters) DeepCopyInto(out *EdgePackParameters) { - *out = *in - if in.Name != nil { - in, out := &in.Name, &out.Name - *out = new(string) - **out = **in - } - if in.RegistryUID != nil { - in, out := &in.RegistryUID, &out.RegistryUID - *out = new(string) - **out = **in - } - if in.Tag != nil { - in, out := &in.Tag, &out.Tag - *out = new(string) - **out = **in - } - if in.Values != nil { - in, out := &in.Values, &out.Values - *out = new(string) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EdgePackParameters. -func (in *EdgePackParameters) DeepCopy() *EdgePackParameters { - if in == nil { - return nil - } - out := new(EdgePackParameters) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *EdgeParameters) DeepCopyInto(out *EdgeParameters) { *out = *in @@ -4611,13 +4580,6 @@ func (in *EdgeParameters) DeepCopyInto(out *EdgeParameters) { *out = new(string) **out = **in } - if in.Pack != nil { - in, out := &in.Pack, &out.Pack - *out = make([]EdgePackParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } if in.ScanPolicy != nil { in, out := &in.ScanPolicy, &out.ScanPolicy *out = make([]EdgeScanPolicyParameters, len(*in)) @@ -4782,11 +4744,27 @@ func (in *EdgeVsphereBackupPolicyParameters) DeepCopyInto(out *EdgeVsphereBackup *out = new(string) **out = **in } + if in.ClusterUids != nil { + in, out := &in.ClusterUids, &out.ClusterUids + *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.ExpiryInHour != nil { in, out := &in.ExpiryInHour, &out.ExpiryInHour *out = new(float64) **out = **in } + if in.IncludeAllClusters != nil { + in, out := &in.IncludeAllClusters, &out.IncludeAllClusters + *out = new(bool) + **out = **in + } if in.IncludeClusterResources != nil { in, out := &in.IncludeClusterResources, &out.IncludeClusterResources *out = new(bool) @@ -4903,6 +4881,13 @@ func (in *EdgeVsphereCloudConfigParameters) DeepCopy() *EdgeVsphereCloudConfigPa // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *EdgeVsphereClusterProfileObservation) DeepCopyInto(out *EdgeVsphereClusterProfileObservation) { *out = *in + if in.Pack != nil { + in, out := &in.Pack, &out.Pack + *out = make([]EdgeVsphereClusterProfilePackObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EdgeVsphereClusterProfileObservation. @@ -4918,6 +4903,11 @@ func (in *EdgeVsphereClusterProfileObservation) DeepCopy() *EdgeVsphereClusterPr // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *EdgeVsphereClusterProfilePackManifestObservation) DeepCopyInto(out *EdgeVsphereClusterProfilePackManifestObservation) { *out = *in + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EdgeVsphereClusterProfilePackManifestObservation. @@ -4958,6 +4948,13 @@ func (in *EdgeVsphereClusterProfilePackManifestParameters) DeepCopy() *EdgeVsphe // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *EdgeVsphereClusterProfilePackObservation) DeepCopyInto(out *EdgeVsphereClusterProfilePackObservation) { *out = *in + if in.Manifest != nil { + in, out := &in.Manifest, &out.Manifest + *out = make([]EdgeVsphereClusterProfilePackManifestObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EdgeVsphereClusterProfilePackObservation. @@ -5000,6 +4997,11 @@ func (in *EdgeVsphereClusterProfilePackParameters) DeepCopyInto(out *EdgeVsphere *out = new(string) **out = **in } + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(string) + **out = **in + } if in.Values != nil { in, out := &in.Values, &out.Values *out = new(string) @@ -5454,6 +5456,17 @@ func (in *EdgeVsphereNamespacesObservation) DeepCopy() *EdgeVsphereNamespacesObs // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *EdgeVsphereNamespacesParameters) DeepCopyInto(out *EdgeVsphereNamespacesParameters) { *out = *in + if in.ImagesBlacklist != nil { + in, out := &in.ImagesBlacklist, &out.ImagesBlacklist + *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.Name != nil { in, out := &in.Name, &out.Name *out = new(string) @@ -5494,81 +5507,38 @@ func (in *EdgeVsphereObservation) DeepCopyInto(out *EdgeVsphereObservation) { *out = new(string) **out = **in } - if in.ID != nil { - in, out := &in.ID, &out.ID - *out = new(string) - **out = **in - } - if in.Kubeconfig != nil { - in, out := &in.Kubeconfig, &out.Kubeconfig - *out = new(string) - **out = **in - } - if in.MachinePool != nil { - in, out := &in.MachinePool, &out.MachinePool - *out = make([]EdgeVsphereMachinePoolObservation, len(*in)) + if in.ClusterProfile != nil { + in, out := &in.ClusterProfile, &out.ClusterProfile + *out = make([]EdgeVsphereClusterProfileObservation, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EdgeVsphereObservation. -func (in *EdgeVsphereObservation) DeepCopy() *EdgeVsphereObservation { - if in == nil { - return nil - } - out := new(EdgeVsphereObservation) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *EdgeVspherePackObservation) DeepCopyInto(out *EdgeVspherePackObservation) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EdgeVspherePackObservation. -func (in *EdgeVspherePackObservation) DeepCopy() *EdgeVspherePackObservation { - if in == nil { - return nil - } - out := new(EdgeVspherePackObservation) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *EdgeVspherePackParameters) DeepCopyInto(out *EdgeVspherePackParameters) { - *out = *in - if in.Name != nil { - in, out := &in.Name, &out.Name - *out = new(string) - **out = **in - } - if in.RegistryUID != nil { - in, out := &in.RegistryUID, &out.RegistryUID - *out = new(string) - **out = **in - } - if in.Tag != nil { - in, out := &in.Tag, &out.Tag + if in.ID != nil { + in, out := &in.ID, &out.ID *out = new(string) **out = **in } - if in.Values != nil { - in, out := &in.Values, &out.Values + if in.Kubeconfig != nil { + in, out := &in.Kubeconfig, &out.Kubeconfig *out = new(string) **out = **in } + if in.MachinePool != nil { + in, out := &in.MachinePool, &out.MachinePool + *out = make([]EdgeVsphereMachinePoolObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EdgeVspherePackParameters. -func (in *EdgeVspherePackParameters) DeepCopy() *EdgeVspherePackParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EdgeVsphereObservation. +func (in *EdgeVsphereObservation) DeepCopy() *EdgeVsphereObservation { if in == nil { return nil } - out := new(EdgeVspherePackParameters) + out := new(EdgeVsphereObservation) in.DeepCopyInto(out) return out } @@ -5652,13 +5622,6 @@ func (in *EdgeVsphereParameters) DeepCopyInto(out *EdgeVsphereParameters) { *out = new(string) **out = **in } - if in.Pack != nil { - in, out := &in.Pack, &out.Pack - *out = make([]EdgeVspherePackParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } if in.ScanPolicy != nil { in, out := &in.ScanPolicy, &out.ScanPolicy *out = make([]EdgeVsphereScanPolicyParameters, len(*in)) @@ -5823,11 +5786,27 @@ func (in *EksBackupPolicyParameters) DeepCopyInto(out *EksBackupPolicyParameters *out = new(string) **out = **in } + if in.ClusterUids != nil { + in, out := &in.ClusterUids, &out.ClusterUids + *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.ExpiryInHour != nil { in, out := &in.ExpiryInHour, &out.ExpiryInHour *out = new(float64) **out = **in } + if in.IncludeAllClusters != nil { + in, out := &in.IncludeAllClusters, &out.IncludeAllClusters + *out = new(bool) + **out = **in + } if in.IncludeClusterResources != nil { in, out := &in.IncludeClusterResources, &out.IncludeClusterResources *out = new(bool) @@ -5966,6 +5945,13 @@ func (in *EksCloudConfigParameters) DeepCopy() *EksCloudConfigParameters { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *EksClusterProfileObservation) DeepCopyInto(out *EksClusterProfileObservation) { *out = *in + if in.Pack != nil { + in, out := &in.Pack, &out.Pack + *out = make([]EksClusterProfilePackObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EksClusterProfileObservation. @@ -5981,6 +5967,11 @@ func (in *EksClusterProfileObservation) DeepCopy() *EksClusterProfileObservation // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *EksClusterProfilePackManifestObservation) DeepCopyInto(out *EksClusterProfilePackManifestObservation) { *out = *in + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EksClusterProfilePackManifestObservation. @@ -6021,6 +6012,13 @@ func (in *EksClusterProfilePackManifestParameters) DeepCopy() *EksClusterProfile // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *EksClusterProfilePackObservation) DeepCopyInto(out *EksClusterProfilePackObservation) { *out = *in + if in.Manifest != nil { + in, out := &in.Manifest, &out.Manifest + *out = make([]EksClusterProfilePackManifestObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EksClusterProfilePackObservation. @@ -6063,6 +6061,11 @@ func (in *EksClusterProfilePackParameters) DeepCopyInto(out *EksClusterProfilePa *out = new(string) **out = **in } + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(string) + **out = **in + } if in.Values != nil { in, out := &in.Values, &out.Values *out = new(string) @@ -6542,6 +6545,17 @@ func (in *EksNamespacesObservation) DeepCopy() *EksNamespacesObservation { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *EksNamespacesParameters) DeepCopyInto(out *EksNamespacesParameters) { *out = *in + if in.ImagesBlacklist != nil { + in, out := &in.ImagesBlacklist, &out.ImagesBlacklist + *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.Name != nil { in, out := &in.Name, &out.Name *out = new(string) @@ -6582,6 +6596,13 @@ func (in *EksObservation) DeepCopyInto(out *EksObservation) { *out = new(string) **out = **in } + if in.ClusterProfile != nil { + in, out := &in.ClusterProfile, &out.ClusterProfile + *out = make([]EksClusterProfileObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.ID != nil { in, out := &in.ID, &out.ID *out = new(string) @@ -6611,56 +6632,6 @@ func (in *EksObservation) DeepCopy() *EksObservation { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *EksPackObservation) DeepCopyInto(out *EksPackObservation) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EksPackObservation. -func (in *EksPackObservation) DeepCopy() *EksPackObservation { - if in == nil { - return nil - } - out := new(EksPackObservation) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *EksPackParameters) DeepCopyInto(out *EksPackParameters) { - *out = *in - if in.Name != nil { - in, out := &in.Name, &out.Name - *out = new(string) - **out = **in - } - if in.RegistryUID != nil { - in, out := &in.RegistryUID, &out.RegistryUID - *out = new(string) - **out = **in - } - if in.Tag != nil { - in, out := &in.Tag, &out.Tag - *out = new(string) - **out = **in - } - if in.Values != nil { - in, out := &in.Values, &out.Values - *out = new(string) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EksPackParameters. -func (in *EksPackParameters) DeepCopy() *EksPackParameters { - if in == nil { - return nil - } - out := new(EksPackParameters) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *EksParameters) DeepCopyInto(out *EksParameters) { *out = *in @@ -6695,11 +6666,6 @@ func (in *EksParameters) DeepCopyInto(out *EksParameters) { (*in)[i].DeepCopyInto(&(*out)[i]) } } - if in.ClusterProfileID != nil { - in, out := &in.ClusterProfileID, &out.ClusterProfileID - *out = new(string) - **out = **in - } if in.ClusterRbacBinding != nil { in, out := &in.ClusterRbacBinding, &out.ClusterRbacBinding *out = make([]EksClusterRbacBindingParameters, len(*in)) @@ -6755,13 +6721,6 @@ func (in *EksParameters) DeepCopyInto(out *EksParameters) { *out = new(string) **out = **in } - if in.Pack != nil { - in, out := &in.Pack, &out.Pack - *out = make([]EksPackParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } if in.ScanPolicy != nil { in, out := &in.ScanPolicy, &out.ScanPolicy *out = make([]EksScanPolicyParameters, len(*in)) @@ -6994,11 +6953,27 @@ func (in *GCPBackupPolicyParameters) DeepCopyInto(out *GCPBackupPolicyParameters *out = new(string) **out = **in } + if in.ClusterUids != nil { + in, out := &in.ClusterUids, &out.ClusterUids + *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.ExpiryInHour != nil { in, out := &in.ExpiryInHour, &out.ExpiryInHour *out = new(float64) **out = **in } + if in.IncludeAllClusters != nil { + in, out := &in.IncludeAllClusters, &out.IncludeAllClusters + *out = new(bool) + **out = **in + } if in.IncludeClusterResources != nil { in, out := &in.IncludeClusterResources, &out.IncludeClusterResources *out = new(bool) @@ -7090,6 +7065,13 @@ func (in *GCPCloudConfigParameters) DeepCopy() *GCPCloudConfigParameters { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *GCPClusterProfileObservation) DeepCopyInto(out *GCPClusterProfileObservation) { *out = *in + if in.Pack != nil { + in, out := &in.Pack, &out.Pack + *out = make([]GCPClusterProfilePackObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPClusterProfileObservation. @@ -7105,6 +7087,11 @@ func (in *GCPClusterProfileObservation) DeepCopy() *GCPClusterProfileObservation // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *GCPClusterProfilePackManifestObservation) DeepCopyInto(out *GCPClusterProfilePackManifestObservation) { *out = *in + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPClusterProfilePackManifestObservation. @@ -7145,6 +7132,13 @@ func (in *GCPClusterProfilePackManifestParameters) DeepCopy() *GCPClusterProfile // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *GCPClusterProfilePackObservation) DeepCopyInto(out *GCPClusterProfilePackObservation) { *out = *in + if in.Manifest != nil { + in, out := &in.Manifest, &out.Manifest + *out = make([]GCPClusterProfilePackManifestObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPClusterProfilePackObservation. @@ -7187,6 +7181,11 @@ func (in *GCPClusterProfilePackParameters) DeepCopyInto(out *GCPClusterProfilePa *out = new(string) **out = **in } + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(string) + **out = **in + } if in.Values != nil { in, out := &in.Values, &out.Values *out = new(string) @@ -7641,6 +7640,17 @@ func (in *GCPNamespacesObservation) DeepCopy() *GCPNamespacesObservation { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *GCPNamespacesParameters) DeepCopyInto(out *GCPNamespacesParameters) { *out = *in + if in.ImagesBlacklist != nil { + in, out := &in.ImagesBlacklist, &out.ImagesBlacklist + *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.Name != nil { in, out := &in.Name, &out.Name *out = new(string) @@ -7681,6 +7691,13 @@ func (in *GCPObservation) DeepCopyInto(out *GCPObservation) { *out = new(string) **out = **in } + if in.ClusterProfile != nil { + in, out := &in.ClusterProfile, &out.ClusterProfile + *out = make([]GCPClusterProfileObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.ID != nil { in, out := &in.ID, &out.ID *out = new(string) @@ -7710,56 +7727,6 @@ func (in *GCPObservation) DeepCopy() *GCPObservation { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *GCPPackObservation) DeepCopyInto(out *GCPPackObservation) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPPackObservation. -func (in *GCPPackObservation) DeepCopy() *GCPPackObservation { - if in == nil { - return nil - } - out := new(GCPPackObservation) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *GCPPackParameters) DeepCopyInto(out *GCPPackParameters) { - *out = *in - if in.Name != nil { - in, out := &in.Name, &out.Name - *out = new(string) - **out = **in - } - if in.RegistryUID != nil { - in, out := &in.RegistryUID, &out.RegistryUID - *out = new(string) - **out = **in - } - if in.Tag != nil { - in, out := &in.Tag, &out.Tag - *out = new(string) - **out = **in - } - if in.Values != nil { - in, out := &in.Values, &out.Values - *out = new(string) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPPackParameters. -func (in *GCPPackParameters) DeepCopy() *GCPPackParameters { - if in == nil { - return nil - } - out := new(GCPPackParameters) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *GCPParameters) DeepCopyInto(out *GCPParameters) { *out = *in @@ -7837,13 +7804,6 @@ func (in *GCPParameters) DeepCopyInto(out *GCPParameters) { *out = new(string) **out = **in } - if in.Pack != nil { - in, out := &in.Pack, &out.Pack - *out = make([]GCPPackParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } if in.ScanPolicy != nil { in, out := &in.ScanPolicy, &out.ScanPolicy *out = make([]GCPScanPolicyParameters, len(*in)) @@ -8321,11 +8281,27 @@ func (in *LibvirtBackupPolicyParameters) DeepCopyInto(out *LibvirtBackupPolicyPa *out = new(string) **out = **in } + if in.ClusterUids != nil { + in, out := &in.ClusterUids, &out.ClusterUids + *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.ExpiryInHour != nil { in, out := &in.ExpiryInHour, &out.ExpiryInHour *out = new(float64) **out = **in } + if in.IncludeAllClusters != nil { + in, out := &in.IncludeAllClusters, &out.IncludeAllClusters + *out = new(bool) + **out = **in + } if in.IncludeClusterResources != nil { in, out := &in.IncludeClusterResources, &out.IncludeClusterResources *out = new(bool) @@ -8423,6 +8399,13 @@ func (in *LibvirtCloudConfigParameters) DeepCopy() *LibvirtCloudConfigParameters // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *LibvirtClusterProfileObservation) DeepCopyInto(out *LibvirtClusterProfileObservation) { *out = *in + if in.Pack != nil { + in, out := &in.Pack, &out.Pack + *out = make([]LibvirtClusterProfilePackObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LibvirtClusterProfileObservation. @@ -8438,6 +8421,11 @@ func (in *LibvirtClusterProfileObservation) DeepCopy() *LibvirtClusterProfileObs // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *LibvirtClusterProfilePackManifestObservation) DeepCopyInto(out *LibvirtClusterProfilePackManifestObservation) { *out = *in + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LibvirtClusterProfilePackManifestObservation. @@ -8478,6 +8466,13 @@ func (in *LibvirtClusterProfilePackManifestParameters) DeepCopy() *LibvirtCluste // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *LibvirtClusterProfilePackObservation) DeepCopyInto(out *LibvirtClusterProfilePackObservation) { *out = *in + if in.Manifest != nil { + in, out := &in.Manifest, &out.Manifest + *out = make([]LibvirtClusterProfilePackManifestObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LibvirtClusterProfilePackObservation. @@ -8520,6 +8515,11 @@ func (in *LibvirtClusterProfilePackParameters) DeepCopyInto(out *LibvirtClusterP *out = new(string) **out = **in } + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(string) + **out = **in + } if in.Values != nil { in, out := &in.Values, &out.Values *out = new(string) @@ -8552,11 +8552,6 @@ func (in *LibvirtClusterProfileParameters) DeepCopyInto(out *LibvirtClusterProfi (*in)[i].DeepCopyInto(&(*out)[i]) } } - 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 LibvirtClusterProfileParameters. @@ -8972,6 +8967,17 @@ func (in *LibvirtNamespacesObservation) DeepCopy() *LibvirtNamespacesObservation // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *LibvirtNamespacesParameters) DeepCopyInto(out *LibvirtNamespacesParameters) { *out = *in + if in.ImagesBlacklist != nil { + in, out := &in.ImagesBlacklist, &out.ImagesBlacklist + *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.Name != nil { in, out := &in.Name, &out.Name *out = new(string) @@ -9012,6 +9018,13 @@ func (in *LibvirtObservation) DeepCopyInto(out *LibvirtObservation) { *out = new(string) **out = **in } + if in.ClusterProfile != nil { + in, out := &in.ClusterProfile, &out.ClusterProfile + *out = make([]LibvirtClusterProfileObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.ID != nil { in, out := &in.ID, &out.ID *out = new(string) @@ -9034,56 +9047,6 @@ func (in *LibvirtObservation) DeepCopy() *LibvirtObservation { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *LibvirtPackObservation) DeepCopyInto(out *LibvirtPackObservation) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LibvirtPackObservation. -func (in *LibvirtPackObservation) DeepCopy() *LibvirtPackObservation { - if in == nil { - return nil - } - out := new(LibvirtPackObservation) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *LibvirtPackParameters) DeepCopyInto(out *LibvirtPackParameters) { - *out = *in - if in.Name != nil { - in, out := &in.Name, &out.Name - *out = new(string) - **out = **in - } - if in.RegistryUID != nil { - in, out := &in.RegistryUID, &out.RegistryUID - *out = new(string) - **out = **in - } - if in.Tag != nil { - in, out := &in.Tag, &out.Tag - *out = new(string) - **out = **in - } - if in.Values != nil { - in, out := &in.Values, &out.Values - *out = new(string) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LibvirtPackParameters. -func (in *LibvirtPackParameters) DeepCopy() *LibvirtPackParameters { - if in == nil { - return nil - } - out := new(LibvirtPackParameters) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *LibvirtParameters) DeepCopyInto(out *LibvirtParameters) { *out = *in @@ -9168,13 +9131,6 @@ func (in *LibvirtParameters) DeepCopyInto(out *LibvirtParameters) { *out = new(string) **out = **in } - if in.Pack != nil { - in, out := &in.Pack, &out.Pack - *out = make([]LibvirtPackParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } if in.ScanPolicy != nil { in, out := &in.ScanPolicy, &out.ScanPolicy *out = make([]LibvirtScanPolicyParameters, len(*in)) @@ -9399,11 +9355,27 @@ func (in *MaasBackupPolicyParameters) DeepCopyInto(out *MaasBackupPolicyParamete *out = new(string) **out = **in } + if in.ClusterUids != nil { + in, out := &in.ClusterUids, &out.ClusterUids + *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.ExpiryInHour != nil { in, out := &in.ExpiryInHour, &out.ExpiryInHour *out = new(float64) **out = **in } + if in.IncludeAllClusters != nil { + in, out := &in.IncludeAllClusters, &out.IncludeAllClusters + *out = new(bool) + **out = **in + } if in.IncludeClusterResources != nil { in, out := &in.IncludeClusterResources, &out.IncludeClusterResources *out = new(bool) @@ -9485,6 +9457,13 @@ func (in *MaasCloudConfigParameters) DeepCopy() *MaasCloudConfigParameters { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *MaasClusterProfileObservation) DeepCopyInto(out *MaasClusterProfileObservation) { *out = *in + if in.Pack != nil { + in, out := &in.Pack, &out.Pack + *out = make([]MaasClusterProfilePackObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MaasClusterProfileObservation. @@ -9500,6 +9479,11 @@ func (in *MaasClusterProfileObservation) DeepCopy() *MaasClusterProfileObservati // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *MaasClusterProfilePackManifestObservation) DeepCopyInto(out *MaasClusterProfilePackManifestObservation) { *out = *in + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MaasClusterProfilePackManifestObservation. @@ -9540,6 +9524,13 @@ func (in *MaasClusterProfilePackManifestParameters) DeepCopy() *MaasClusterProfi // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *MaasClusterProfilePackObservation) DeepCopyInto(out *MaasClusterProfilePackObservation) { *out = *in + if in.Manifest != nil { + in, out := &in.Manifest, &out.Manifest + *out = make([]MaasClusterProfilePackManifestObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MaasClusterProfilePackObservation. @@ -9582,6 +9573,11 @@ func (in *MaasClusterProfilePackParameters) DeepCopyInto(out *MaasClusterProfile *out = new(string) **out = **in } + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(string) + **out = **in + } if in.Values != nil { in, out := &in.Values, &out.Values *out = new(string) @@ -10087,6 +10083,17 @@ func (in *MaasNamespacesObservation) DeepCopy() *MaasNamespacesObservation { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *MaasNamespacesParameters) DeepCopyInto(out *MaasNamespacesParameters) { *out = *in + if in.ImagesBlacklist != nil { + in, out := &in.ImagesBlacklist, &out.ImagesBlacklist + *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.Name != nil { in, out := &in.Name, &out.Name *out = new(string) @@ -10127,6 +10134,13 @@ func (in *MaasObservation) DeepCopyInto(out *MaasObservation) { *out = new(string) **out = **in } + if in.ClusterProfile != nil { + in, out := &in.ClusterProfile, &out.ClusterProfile + *out = make([]MaasClusterProfileObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.ID != nil { in, out := &in.ID, &out.ID *out = new(string) @@ -10156,56 +10170,6 @@ func (in *MaasObservation) DeepCopy() *MaasObservation { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *MaasPackObservation) DeepCopyInto(out *MaasPackObservation) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MaasPackObservation. -func (in *MaasPackObservation) DeepCopy() *MaasPackObservation { - if in == nil { - return nil - } - out := new(MaasPackObservation) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *MaasPackParameters) DeepCopyInto(out *MaasPackParameters) { - *out = *in - if in.Name != nil { - in, out := &in.Name, &out.Name - *out = new(string) - **out = **in - } - if in.RegistryUID != nil { - in, out := &in.RegistryUID, &out.RegistryUID - *out = new(string) - **out = **in - } - if in.Tag != nil { - in, out := &in.Tag, &out.Tag - *out = new(string) - **out = **in - } - if in.Values != nil { - in, out := &in.Values, &out.Values - *out = new(string) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MaasPackParameters. -func (in *MaasPackParameters) DeepCopy() *MaasPackParameters { - if in == nil { - return nil - } - out := new(MaasPackParameters) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *MaasParameters) DeepCopyInto(out *MaasParameters) { *out = *in @@ -10290,13 +10254,6 @@ func (in *MaasParameters) DeepCopyInto(out *MaasParameters) { *out = new(string) **out = **in } - if in.Pack != nil { - in, out := &in.Pack, &out.Pack - *out = make([]MaasPackParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } if in.ScanPolicy != nil { in, out := &in.ScanPolicy, &out.ScanPolicy *out = make([]MaasScanPolicyParameters, len(*in)) @@ -10730,6 +10687,11 @@ func (in *MachinePoolTaintsParameters) DeepCopy() *MachinePoolTaintsParameters { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ManifestObservation) DeepCopyInto(out *ManifestObservation) { *out = *in + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManifestObservation. @@ -10785,6 +10747,17 @@ func (in *NamespacesObservation) DeepCopy() *NamespacesObservation { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *NamespacesParameters) DeepCopyInto(out *NamespacesParameters) { *out = *in + if in.ImagesBlacklist != nil { + in, out := &in.ImagesBlacklist, &out.ImagesBlacklist + *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.Name != nil { in, out := &in.Name, &out.Name *out = new(string) @@ -10867,11 +10840,27 @@ func (in *OpenstackBackupPolicyParameters) DeepCopyInto(out *OpenstackBackupPoli *out = new(string) **out = **in } + if in.ClusterUids != nil { + in, out := &in.ClusterUids, &out.ClusterUids + *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.ExpiryInHour != nil { in, out := &in.ExpiryInHour, &out.ExpiryInHour *out = new(float64) **out = **in } + if in.IncludeAllClusters != nil { + in, out := &in.IncludeAllClusters, &out.IncludeAllClusters + *out = new(bool) + **out = **in + } if in.IncludeClusterResources != nil { in, out := &in.IncludeClusterResources, &out.IncludeClusterResources *out = new(bool) @@ -10994,6 +10983,13 @@ func (in *OpenstackCloudConfigParameters) DeepCopy() *OpenstackCloudConfigParame // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *OpenstackClusterProfileObservation) DeepCopyInto(out *OpenstackClusterProfileObservation) { *out = *in + if in.Pack != nil { + in, out := &in.Pack, &out.Pack + *out = make([]OpenstackClusterProfilePackObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenstackClusterProfileObservation. @@ -11009,6 +11005,11 @@ func (in *OpenstackClusterProfileObservation) DeepCopy() *OpenstackClusterProfil // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *OpenstackClusterProfilePackManifestObservation) DeepCopyInto(out *OpenstackClusterProfilePackManifestObservation) { *out = *in + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenstackClusterProfilePackManifestObservation. @@ -11049,6 +11050,13 @@ func (in *OpenstackClusterProfilePackManifestParameters) DeepCopy() *OpenstackCl // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *OpenstackClusterProfilePackObservation) DeepCopyInto(out *OpenstackClusterProfilePackObservation) { *out = *in + if in.Manifest != nil { + in, out := &in.Manifest, &out.Manifest + *out = make([]OpenstackClusterProfilePackManifestObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenstackClusterProfilePackObservation. @@ -11091,6 +11099,11 @@ func (in *OpenstackClusterProfilePackParameters) DeepCopyInto(out *OpenstackClus *out = new(string) **out = **in } + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(string) + **out = **in + } if in.Values != nil { in, out := &in.Values, &out.Values *out = new(string) @@ -11545,6 +11558,17 @@ func (in *OpenstackNamespacesObservation) DeepCopy() *OpenstackNamespacesObserva // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *OpenstackNamespacesParameters) DeepCopyInto(out *OpenstackNamespacesParameters) { *out = *in + if in.ImagesBlacklist != nil { + in, out := &in.ImagesBlacklist, &out.ImagesBlacklist + *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.Name != nil { in, out := &in.Name, &out.Name *out = new(string) @@ -11562,97 +11586,54 @@ func (in *OpenstackNamespacesParameters) DeepCopyInto(out *OpenstackNamespacesPa *out = new(string) **out = **in } - (*out)[key] = outVal - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenstackNamespacesParameters. -func (in *OpenstackNamespacesParameters) DeepCopy() *OpenstackNamespacesParameters { - if in == nil { - return nil - } - out := new(OpenstackNamespacesParameters) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *OpenstackObservation) DeepCopyInto(out *OpenstackObservation) { - *out = *in - if in.CloudConfigID != nil { - in, out := &in.CloudConfigID, &out.CloudConfigID - *out = new(string) - **out = **in - } - if in.ID != nil { - in, out := &in.ID, &out.ID - *out = new(string) - **out = **in - } - if in.Kubeconfig != nil { - in, out := &in.Kubeconfig, &out.Kubeconfig - *out = new(string) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenstackObservation. -func (in *OpenstackObservation) DeepCopy() *OpenstackObservation { - if in == nil { - return nil + (*out)[key] = outVal + } } - out := new(OpenstackObservation) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *OpenstackPackObservation) DeepCopyInto(out *OpenstackPackObservation) { - *out = *in } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenstackPackObservation. -func (in *OpenstackPackObservation) DeepCopy() *OpenstackPackObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenstackNamespacesParameters. +func (in *OpenstackNamespacesParameters) DeepCopy() *OpenstackNamespacesParameters { if in == nil { return nil } - out := new(OpenstackPackObservation) + out := new(OpenstackNamespacesParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *OpenstackPackParameters) DeepCopyInto(out *OpenstackPackParameters) { +func (in *OpenstackObservation) DeepCopyInto(out *OpenstackObservation) { *out = *in - if in.Name != nil { - in, out := &in.Name, &out.Name + if in.CloudConfigID != nil { + in, out := &in.CloudConfigID, &out.CloudConfigID *out = new(string) **out = **in } - if in.RegistryUID != nil { - in, out := &in.RegistryUID, &out.RegistryUID - *out = new(string) - **out = **in + if in.ClusterProfile != nil { + in, out := &in.ClusterProfile, &out.ClusterProfile + *out = make([]OpenstackClusterProfileObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } } - if in.Tag != nil { - in, out := &in.Tag, &out.Tag + if in.ID != nil { + in, out := &in.ID, &out.ID *out = new(string) **out = **in } - if in.Values != nil { - in, out := &in.Values, &out.Values + if in.Kubeconfig != nil { + in, out := &in.Kubeconfig, &out.Kubeconfig *out = new(string) **out = **in } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenstackPackParameters. -func (in *OpenstackPackParameters) DeepCopy() *OpenstackPackParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenstackObservation. +func (in *OpenstackObservation) DeepCopy() *OpenstackObservation { if in == nil { return nil } - out := new(OpenstackPackParameters) + out := new(OpenstackObservation) in.DeepCopyInto(out) return out } @@ -11741,13 +11722,6 @@ func (in *OpenstackParameters) DeepCopyInto(out *OpenstackParameters) { *out = new(string) **out = **in } - if in.Pack != nil { - in, out := &in.Pack, &out.Pack - *out = make([]OpenstackPackParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } if in.ScanPolicy != nil { in, out := &in.ScanPolicy, &out.ScanPolicy *out = make([]OpenstackScanPolicyParameters, len(*in)) @@ -11865,6 +11839,11 @@ func (in *OpenstackStatus) DeepCopy() *OpenstackStatus { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *PackManifestObservation) DeepCopyInto(out *PackManifestObservation) { *out = *in + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PackManifestObservation. @@ -11905,6 +11884,13 @@ func (in *PackManifestParameters) DeepCopy() *PackManifestParameters { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *PackObservation) DeepCopyInto(out *PackObservation) { *out = *in + if in.Manifest != nil { + in, out := &in.Manifest, &out.Manifest + *out = make([]ManifestObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PackObservation. @@ -11947,6 +11933,11 @@ func (in *PackParameters) DeepCopyInto(out *PackParameters) { *out = new(string) **out = **in } + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(string) + **out = **in + } if in.Values != nil { in, out := &in.Values, &out.Values *out = new(string) @@ -12591,11 +12582,27 @@ func (in *TkeBackupPolicyParameters) DeepCopyInto(out *TkeBackupPolicyParameters *out = new(string) **out = **in } + if in.ClusterUids != nil { + in, out := &in.ClusterUids, &out.ClusterUids + *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.ExpiryInHour != nil { in, out := &in.ExpiryInHour, &out.ExpiryInHour *out = new(float64) **out = **in } + if in.IncludeAllClusters != nil { + in, out := &in.IncludeAllClusters, &out.IncludeAllClusters + *out = new(bool) + **out = **in + } if in.IncludeClusterResources != nil { in, out := &in.IncludeClusterResources, &out.IncludeClusterResources *out = new(bool) @@ -12729,6 +12736,13 @@ func (in *TkeCloudConfigParameters) DeepCopy() *TkeCloudConfigParameters { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *TkeClusterProfileObservation) DeepCopyInto(out *TkeClusterProfileObservation) { *out = *in + if in.Pack != nil { + in, out := &in.Pack, &out.Pack + *out = make([]TkeClusterProfilePackObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TkeClusterProfileObservation. @@ -12744,6 +12758,11 @@ func (in *TkeClusterProfileObservation) DeepCopy() *TkeClusterProfileObservation // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *TkeClusterProfilePackManifestObservation) DeepCopyInto(out *TkeClusterProfilePackManifestObservation) { *out = *in + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TkeClusterProfilePackManifestObservation. @@ -12784,6 +12803,13 @@ func (in *TkeClusterProfilePackManifestParameters) DeepCopy() *TkeClusterProfile // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *TkeClusterProfilePackObservation) DeepCopyInto(out *TkeClusterProfilePackObservation) { *out = *in + if in.Manifest != nil { + in, out := &in.Manifest, &out.Manifest + *out = make([]TkeClusterProfilePackManifestObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TkeClusterProfilePackObservation. @@ -12826,6 +12852,11 @@ func (in *TkeClusterProfilePackParameters) DeepCopyInto(out *TkeClusterProfilePa *out = new(string) **out = **in } + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(string) + **out = **in + } if in.Values != nil { in, out := &in.Values, &out.Values *out = new(string) @@ -13305,6 +13336,17 @@ func (in *TkeNamespacesObservation) DeepCopy() *TkeNamespacesObservation { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *TkeNamespacesParameters) DeepCopyInto(out *TkeNamespacesParameters) { *out = *in + if in.ImagesBlacklist != nil { + in, out := &in.ImagesBlacklist, &out.ImagesBlacklist + *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.Name != nil { in, out := &in.Name, &out.Name *out = new(string) @@ -13345,6 +13387,13 @@ func (in *TkeObservation) DeepCopyInto(out *TkeObservation) { *out = new(string) **out = **in } + if in.ClusterProfile != nil { + in, out := &in.ClusterProfile, &out.ClusterProfile + *out = make([]TkeClusterProfileObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.ID != nil { in, out := &in.ID, &out.ID *out = new(string) @@ -13374,56 +13423,6 @@ func (in *TkeObservation) DeepCopy() *TkeObservation { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *TkePackObservation) DeepCopyInto(out *TkePackObservation) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TkePackObservation. -func (in *TkePackObservation) DeepCopy() *TkePackObservation { - if in == nil { - return nil - } - out := new(TkePackObservation) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *TkePackParameters) DeepCopyInto(out *TkePackParameters) { - *out = *in - if in.Name != nil { - in, out := &in.Name, &out.Name - *out = new(string) - **out = **in - } - if in.RegistryUID != nil { - in, out := &in.RegistryUID, &out.RegistryUID - *out = new(string) - **out = **in - } - if in.Tag != nil { - in, out := &in.Tag, &out.Tag - *out = new(string) - **out = **in - } - if in.Values != nil { - in, out := &in.Values, &out.Values - *out = new(string) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TkePackParameters. -func (in *TkePackParameters) DeepCopy() *TkePackParameters { - if in == nil { - return nil - } - out := new(TkePackParameters) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *TkeParameters) DeepCopyInto(out *TkeParameters) { *out = *in @@ -13486,13 +13485,6 @@ func (in *TkeParameters) DeepCopyInto(out *TkeParameters) { (*in)[i].DeepCopyInto(&(*out)[i]) } } - if in.Pack != nil { - in, out := &in.Pack, &out.Pack - *out = make([]TkePackParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } if in.ScanPolicy != nil { in, out := &in.ScanPolicy, &out.ScanPolicy *out = make([]TkeScanPolicyParameters, len(*in)) @@ -13657,11 +13649,27 @@ func (in *VsphereBackupPolicyParameters) DeepCopyInto(out *VsphereBackupPolicyPa *out = new(string) **out = **in } + if in.ClusterUids != nil { + in, out := &in.ClusterUids, &out.ClusterUids + *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.ExpiryInHour != nil { in, out := &in.ExpiryInHour, &out.ExpiryInHour *out = new(float64) **out = **in } + if in.IncludeAllClusters != nil { + in, out := &in.IncludeAllClusters, &out.IncludeAllClusters + *out = new(bool) + **out = **in + } if in.IncludeClusterResources != nil { in, out := &in.IncludeClusterResources, &out.IncludeClusterResources *out = new(bool) @@ -13773,6 +13781,13 @@ func (in *VsphereCloudConfigParameters) DeepCopy() *VsphereCloudConfigParameters // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *VsphereClusterProfileObservation) DeepCopyInto(out *VsphereClusterProfileObservation) { *out = *in + if in.Pack != nil { + in, out := &in.Pack, &out.Pack + *out = make([]VsphereClusterProfilePackObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VsphereClusterProfileObservation. @@ -13788,6 +13803,11 @@ func (in *VsphereClusterProfileObservation) DeepCopy() *VsphereClusterProfileObs // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *VsphereClusterProfilePackManifestObservation) DeepCopyInto(out *VsphereClusterProfilePackManifestObservation) { *out = *in + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VsphereClusterProfilePackManifestObservation. @@ -13828,6 +13848,13 @@ func (in *VsphereClusterProfilePackManifestParameters) DeepCopy() *VsphereCluste // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *VsphereClusterProfilePackObservation) DeepCopyInto(out *VsphereClusterProfilePackObservation) { *out = *in + if in.Manifest != nil { + in, out := &in.Manifest, &out.Manifest + *out = make([]VsphereClusterProfilePackManifestObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VsphereClusterProfilePackObservation. @@ -13870,6 +13897,11 @@ func (in *VsphereClusterProfilePackParameters) DeepCopyInto(out *VsphereClusterP *out = new(string) **out = **in } + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(string) + **out = **in + } if in.Values != nil { in, out := &in.Values, &out.Values *out = new(string) @@ -14429,6 +14461,17 @@ func (in *VsphereNamespacesObservation) DeepCopy() *VsphereNamespacesObservation // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *VsphereNamespacesParameters) DeepCopyInto(out *VsphereNamespacesParameters) { *out = *in + if in.ImagesBlacklist != nil { + in, out := &in.ImagesBlacklist, &out.ImagesBlacklist + *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.Name != nil { in, out := &in.Name, &out.Name *out = new(string) @@ -14469,6 +14512,13 @@ func (in *VsphereObservation) DeepCopyInto(out *VsphereObservation) { *out = new(string) **out = **in } + if in.ClusterProfile != nil { + in, out := &in.ClusterProfile, &out.ClusterProfile + *out = make([]VsphereClusterProfileObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.ID != nil { in, out := &in.ID, &out.ID *out = new(string) @@ -14498,56 +14548,6 @@ func (in *VsphereObservation) DeepCopy() *VsphereObservation { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *VspherePackObservation) DeepCopyInto(out *VspherePackObservation) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VspherePackObservation. -func (in *VspherePackObservation) DeepCopy() *VspherePackObservation { - if in == nil { - return nil - } - out := new(VspherePackObservation) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *VspherePackParameters) DeepCopyInto(out *VspherePackParameters) { - *out = *in - if in.Name != nil { - in, out := &in.Name, &out.Name - *out = new(string) - **out = **in - } - if in.RegistryUID != nil { - in, out := &in.RegistryUID, &out.RegistryUID - *out = new(string) - **out = **in - } - if in.Tag != nil { - in, out := &in.Tag, &out.Tag - *out = new(string) - **out = **in - } - if in.Values != nil { - in, out := &in.Values, &out.Values - *out = new(string) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VspherePackParameters. -func (in *VspherePackParameters) DeepCopy() *VspherePackParameters { - if in == nil { - return nil - } - out := new(VspherePackParameters) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *VsphereParameters) DeepCopyInto(out *VsphereParameters) { *out = *in @@ -14582,11 +14582,6 @@ func (in *VsphereParameters) DeepCopyInto(out *VsphereParameters) { (*in)[i].DeepCopyInto(&(*out)[i]) } } - if in.ClusterProfileID != nil { - in, out := &in.ClusterProfileID, &out.ClusterProfileID - *out = new(string) - **out = **in - } if in.ClusterRbacBinding != nil { in, out := &in.ClusterRbacBinding, &out.ClusterRbacBinding *out = make([]VsphereClusterRbacBindingParameters, len(*in)) @@ -14637,13 +14632,6 @@ func (in *VsphereParameters) DeepCopyInto(out *VsphereParameters) { *out = new(string) **out = **in } - if in.Pack != nil { - in, out := &in.Pack, &out.Pack - *out = make([]VspherePackParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } if in.ScanPolicy != nil { in, out := &in.ScanPolicy, &out.ScanPolicy *out = make([]VsphereScanPolicyParameters, len(*in)) diff --git a/apis/cluster/v1alpha1/zz_libvirt_types.go b/apis/cluster/v1alpha1/zz_libvirt_types.go index 3c44f56..d100381 100755 --- a/apis/cluster/v1alpha1/zz_libvirt_types.go +++ b/apis/cluster/v1alpha1/zz_libvirt_types.go @@ -48,24 +48,39 @@ type LibvirtBackupPolicyObservation struct { type LibvirtBackupPolicyParameters struct { + // The ID of the backup location to use for the backup. // +kubebuilder:validation:Required BackupLocationID *string `json:"backupLocationId" tf:"backup_location_id,omitempty"` + // The list of cluster UIDs to include in the backup. If `include_all_clusters` is set to `true`, then all clusters will be included. + // +kubebuilder:validation:Optional + ClusterUids []*string `json:"clusterUids,omitempty" tf:"cluster_uids,omitempty"` + + // The number of hours after which the backup will be deleted. For example, if the expiry is set to 24, the backup will be deleted after 24 hours. // +kubebuilder:validation:Required ExpiryInHour *float64 `json:"expiryInHour" tf:"expiry_in_hour,omitempty"` + // Whether to include all clusters in the backup. If set to false, only the clusters specified in `cluster_uids` will be included. + // +kubebuilder:validation:Optional + IncludeAllClusters *bool `json:"includeAllClusters,omitempty" tf:"include_all_clusters,omitempty"` + + // Whether to include the cluster resources in the backup. If set to false, only the cluster configuration and disks will be backed up. // +kubebuilder:validation:Optional IncludeClusterResources *bool `json:"includeClusterResources,omitempty" tf:"include_cluster_resources,omitempty"` + // Whether to include the disks in the backup. If set to false, only the cluster configuration will be backed up. // +kubebuilder:validation:Optional IncludeDisks *bool `json:"includeDisks,omitempty" tf:"include_disks,omitempty"` + // The list of Kubernetes namespaces to include in the backup. If not specified, all namespaces will be included. // +kubebuilder:validation:Optional Namespaces []*string `json:"namespaces,omitempty" tf:"namespaces,omitempty"` + // Prefix for the backup name. The backup name will be of the format --. // +kubebuilder:validation:Required Prefix *string `json:"prefix" tf:"prefix,omitempty"` + // The schedule for the backup. The schedule is specified in cron format. For example, to run the backup every day at 1:00 AM, the schedule should be set to `0 1 * * *`. // +kubebuilder:validation:Required Schedule *string `json:"schedule" tf:"schedule,omitempty"` } @@ -86,21 +101,30 @@ type LibvirtCloudConfigParameters struct { } type LibvirtClusterProfileObservation struct { + + // +kubebuilder:validation:Optional + Pack []LibvirtClusterProfilePackObservation `json:"pack,omitempty" tf:"pack,omitempty"` } type LibvirtClusterProfilePackManifestObservation struct { + UID *string `json:"uid,omitempty" tf:"uid,omitempty"` } type LibvirtClusterProfilePackManifestParameters struct { + // The content of the manifest. The content is the YAML content of the manifest. // +kubebuilder:validation:Required Content *string `json:"content" tf:"content,omitempty"` + // The name of the manifest. The name must be unique within the pack. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` } type LibvirtClusterProfilePackObservation struct { + + // +kubebuilder:validation:Optional + Manifest []LibvirtClusterProfilePackManifestObservation `json:"manifest,omitempty" tf:"manifest,omitempty"` } type LibvirtClusterProfilePackParameters struct { @@ -108,32 +132,38 @@ type LibvirtClusterProfilePackParameters struct { // +kubebuilder:validation:Optional Manifest []LibvirtClusterProfilePackManifestParameters `json:"manifest,omitempty" tf:"manifest,omitempty"` + // The name of the pack. The name must be unique within the cluster profile. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // The registry UID of the pack. The registry UID is the unique identifier of the registry. // +kubebuilder:validation:Optional RegistryUID *string `json:"registryUid,omitempty" tf:"registry_uid,omitempty"` - // +kubebuilder:validation:Required - Tag *string `json:"tag" tf:"tag,omitempty"` + // The tag of the pack. The tag is the version of the pack. + // +kubebuilder:validation:Optional + Tag *string `json:"tag,omitempty" tf:"tag,omitempty"` + // The type of the pack. The default value is `spectro`. // +kubebuilder:validation:Optional Type *string `json:"type,omitempty" tf:"type,omitempty"` + // +kubebuilder:validation:Optional + UID *string `json:"uid,omitempty" tf:"uid,omitempty"` + + // The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. // +kubebuilder:validation:Required Values *string `json:"values" tf:"values,omitempty"` } type LibvirtClusterProfileParameters struct { + // The ID of the cluster profile. // +kubebuilder:validation:Required ID *string `json:"id" tf:"id,omitempty"` // +kubebuilder:validation:Optional Pack []LibvirtClusterProfilePackParameters `json:"pack,omitempty" tf:"pack,omitempty"` - - // +kubebuilder:validation:Optional - Type *string `json:"type,omitempty" tf:"type,omitempty"` } type LibvirtClusterRbacBindingObservation struct { @@ -141,15 +171,18 @@ type LibvirtClusterRbacBindingObservation struct { type LibvirtClusterRbacBindingParameters struct { + // The Kubernetes namespace of the RBAC binding. Required if 'type' is set to 'RoleBinding'. // +kubebuilder:validation:Optional Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` + // The role of the RBAC binding. Required if 'type' is set to 'RoleBinding'. // +kubebuilder:validation:Optional Role map[string]*string `json:"role,omitempty" tf:"role,omitempty"` // +kubebuilder:validation:Optional Subjects []LibvirtClusterRbacBindingSubjectsParameters `json:"subjects,omitempty" tf:"subjects,omitempty"` + // The type of the RBAC binding. Can be one of the following values: `RoleBinding`, or `ClusterRoleBinding`. // +kubebuilder:validation:Required Type *string `json:"type" tf:"type,omitempty"` } @@ -159,12 +192,15 @@ type LibvirtClusterRbacBindingSubjectsObservation struct { type LibvirtClusterRbacBindingSubjectsParameters struct { + // The name of the subject. Required if 'type' is set to 'User' or 'Group'. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // The Kubernetes namespace of the subject. Required if 'type' is set to 'ServiceAccount'. // +kubebuilder:validation:Optional Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` + // The type of the subject. Can be one of the following values: `User`, `Group`, or `ServiceAccount`. // +kubebuilder:validation:Required Type *string `json:"type" tf:"type,omitempty"` } @@ -229,12 +265,15 @@ type LibvirtMachinePoolParameters struct { // +kubebuilder:validation:Optional AdditionalLabels map[string]*string `json:"additionalLabels,omitempty" tf:"additional_labels,omitempty"` + // Whether this machine pool is a control plane. Defaults to `false`. // +kubebuilder:validation:Optional ControlPlane *bool `json:"controlPlane,omitempty" tf:"control_plane,omitempty"` + // Whether this machine pool is a control plane and a worker. Defaults to `false`. // +kubebuilder:validation:Optional ControlPlaneAsWorker *bool `json:"controlPlaneAsWorker,omitempty" tf:"control_plane_as_worker,omitempty"` + // Number of nodes in the machine pool. // +kubebuilder:validation:Required Count *float64 `json:"count" tf:"count,omitempty"` @@ -250,6 +289,7 @@ type LibvirtMachinePoolParameters struct { // +kubebuilder:validation:Optional Taints []LibvirtMachinePoolTaintsParameters `json:"taints,omitempty" tf:"taints,omitempty"` + // Update strategy for the machine pool. Valid values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`. // +kubebuilder:validation:Optional UpdateStrategy *string `json:"updateStrategy,omitempty" tf:"update_strategy,omitempty"` } @@ -259,12 +299,15 @@ type LibvirtMachinePoolTaintsObservation struct { type LibvirtMachinePoolTaintsParameters struct { + // The effect of the taint. Allowed values are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`. // +kubebuilder:validation:Required Effect *string `json:"effect" tf:"effect,omitempty"` + // The key of the taint. // +kubebuilder:validation:Required Key *string `json:"key" tf:"key,omitempty"` + // The value of the taint. // +kubebuilder:validation:Required Value *string `json:"value" tf:"value,omitempty"` } @@ -274,37 +317,31 @@ type LibvirtNamespacesObservation struct { type LibvirtNamespacesParameters struct { + // List of images to disallow for the namespace. For example, `['nginx:latest', 'redis:latest']` + // +kubebuilder:validation:Optional + ImagesBlacklist []*string `json:"imagesBlacklist,omitempty" tf:"images_blacklist,omitempty"` + + // Name of the namespace. This is the name of the Kubernetes namespace in the cluster. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // Resource allocation for the namespace. This is a map containing the resource type and the resource value. For example, `{cpu_cores: '2', memory_MiB: '2048'}` // +kubebuilder:validation:Required ResourceAllocation map[string]*string `json:"resourceAllocation" tf:"resource_allocation,omitempty"` } type LibvirtObservation struct { - CloudConfigID *string `json:"cloudConfigId,omitempty" tf:"cloud_config_id,omitempty"` - ID *string `json:"id,omitempty" tf:"id,omitempty"` - - Kubeconfig *string `json:"kubeconfig,omitempty" tf:"kubeconfig,omitempty"` -} - -type LibvirtPackObservation struct { -} - -type LibvirtPackParameters struct { - - // +kubebuilder:validation:Required - Name *string `json:"name" tf:"name,omitempty"` + // ID of the cloud config used for the cluster. This cloud config must be of type `azure`. + CloudConfigID *string `json:"cloudConfigId,omitempty" tf:"cloud_config_id,omitempty"` // +kubebuilder:validation:Optional - RegistryUID *string `json:"registryUid,omitempty" tf:"registry_uid,omitempty"` + ClusterProfile []LibvirtClusterProfileObservation `json:"clusterProfile,omitempty" tf:"cluster_profile,omitempty"` - // +kubebuilder:validation:Required - Tag *string `json:"tag" tf:"tag,omitempty"` + ID *string `json:"id,omitempty" tf:"id,omitempty"` - // +kubebuilder:validation:Required - Values *string `json:"values" tf:"values,omitempty"` + // Kubeconfig for the cluster. This can be used to connect to the cluster using `kubectl`. + Kubeconfig *string `json:"kubeconfig,omitempty" tf:"kubeconfig,omitempty"` } type LibvirtParameters struct { @@ -339,24 +376,26 @@ type LibvirtParameters struct { // +kubebuilder:validation:Optional Namespaces []LibvirtNamespacesParameters `json:"namespaces,omitempty" tf:"namespaces,omitempty"` + // Date and time after which to patch cluster `RFC3339: 2006-01-02T15:04:05Z07:00` // +kubebuilder:validation:Optional OsPatchAfter *string `json:"osPatchAfter,omitempty" tf:"os_patch_after,omitempty"` + // Whether to apply OS patch on boot. Default is `false`. // +kubebuilder:validation:Optional OsPatchOnBoot *bool `json:"osPatchOnBoot,omitempty" tf:"os_patch_on_boot,omitempty"` + // Cron schedule for OS patching. This must be in the form of `0 0 * * *`. // +kubebuilder:validation:Optional OsPatchSchedule *string `json:"osPatchSchedule,omitempty" tf:"os_patch_schedule,omitempty"` - // +kubebuilder:validation:Optional - Pack []LibvirtPackParameters `json:"pack,omitempty" tf:"pack,omitempty"` - // +kubebuilder:validation:Optional ScanPolicy []LibvirtScanPolicyParameters `json:"scanPolicy,omitempty" tf:"scan_policy,omitempty"` + // If `true`, the cluster will be created asynchronously. Default value is `false`. // +kubebuilder:validation:Optional SkipCompletion *bool `json:"skipCompletion,omitempty" tf:"skip_completion,omitempty"` + // A list of tags to be applied to the cluster. Tags must be in the form of `key:value`. // +kubebuilder:validation:Optional Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` } @@ -366,12 +405,15 @@ type LibvirtScanPolicyObservation struct { type LibvirtScanPolicyParameters struct { + // The schedule for configuration scan. // +kubebuilder:validation:Required ConfigurationScanSchedule *string `json:"configurationScanSchedule" tf:"configuration_scan_schedule,omitempty"` + // The schedule for conformance scan. // +kubebuilder:validation:Required ConformanceScanSchedule *string `json:"conformanceScanSchedule" tf:"conformance_scan_schedule,omitempty"` + // The schedule for penetration scan. // +kubebuilder:validation:Required PenetrationScanSchedule *string `json:"penetrationScanSchedule" tf:"penetration_scan_schedule,omitempty"` } diff --git a/apis/cluster/v1alpha1/zz_maas_types.go b/apis/cluster/v1alpha1/zz_maas_types.go index a16461f..8bd978e 100755 --- a/apis/cluster/v1alpha1/zz_maas_types.go +++ b/apis/cluster/v1alpha1/zz_maas_types.go @@ -18,24 +18,39 @@ type MaasBackupPolicyObservation struct { type MaasBackupPolicyParameters struct { + // The ID of the backup location to use for the backup. // +kubebuilder:validation:Required BackupLocationID *string `json:"backupLocationId" tf:"backup_location_id,omitempty"` + // The list of cluster UIDs to include in the backup. If `include_all_clusters` is set to `true`, then all clusters will be included. + // +kubebuilder:validation:Optional + ClusterUids []*string `json:"clusterUids,omitempty" tf:"cluster_uids,omitempty"` + + // The number of hours after which the backup will be deleted. For example, if the expiry is set to 24, the backup will be deleted after 24 hours. // +kubebuilder:validation:Required ExpiryInHour *float64 `json:"expiryInHour" tf:"expiry_in_hour,omitempty"` + // Whether to include all clusters in the backup. If set to false, only the clusters specified in `cluster_uids` will be included. + // +kubebuilder:validation:Optional + IncludeAllClusters *bool `json:"includeAllClusters,omitempty" tf:"include_all_clusters,omitempty"` + + // Whether to include the cluster resources in the backup. If set to false, only the cluster configuration and disks will be backed up. // +kubebuilder:validation:Optional IncludeClusterResources *bool `json:"includeClusterResources,omitempty" tf:"include_cluster_resources,omitempty"` + // Whether to include the disks in the backup. If set to false, only the cluster configuration will be backed up. // +kubebuilder:validation:Optional IncludeDisks *bool `json:"includeDisks,omitempty" tf:"include_disks,omitempty"` + // The list of Kubernetes namespaces to include in the backup. If not specified, all namespaces will be included. // +kubebuilder:validation:Optional Namespaces []*string `json:"namespaces,omitempty" tf:"namespaces,omitempty"` + // Prefix for the backup name. The backup name will be of the format --. // +kubebuilder:validation:Required Prefix *string `json:"prefix" tf:"prefix,omitempty"` + // The schedule for the backup. The schedule is specified in cron format. For example, to run the backup every day at 1:00 AM, the schedule should be set to `0 1 * * *`. // +kubebuilder:validation:Required Schedule *string `json:"schedule" tf:"schedule,omitempty"` } @@ -50,21 +65,30 @@ type MaasCloudConfigParameters struct { } type MaasClusterProfileObservation struct { + + // +kubebuilder:validation:Optional + Pack []MaasClusterProfilePackObservation `json:"pack,omitempty" tf:"pack,omitempty"` } type MaasClusterProfilePackManifestObservation struct { + UID *string `json:"uid,omitempty" tf:"uid,omitempty"` } type MaasClusterProfilePackManifestParameters struct { + // The content of the manifest. The content is the YAML content of the manifest. // +kubebuilder:validation:Required Content *string `json:"content" tf:"content,omitempty"` + // The name of the manifest. The name must be unique within the pack. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` } type MaasClusterProfilePackObservation struct { + + // +kubebuilder:validation:Optional + Manifest []MaasClusterProfilePackManifestObservation `json:"manifest,omitempty" tf:"manifest,omitempty"` } type MaasClusterProfilePackParameters struct { @@ -72,24 +96,33 @@ type MaasClusterProfilePackParameters struct { // +kubebuilder:validation:Optional Manifest []MaasClusterProfilePackManifestParameters `json:"manifest,omitempty" tf:"manifest,omitempty"` + // The name of the pack. The name must be unique within the cluster profile. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // The registry UID of the pack. The registry UID is the unique identifier of the registry. // +kubebuilder:validation:Optional RegistryUID *string `json:"registryUid,omitempty" tf:"registry_uid,omitempty"` + // The tag of the pack. The tag is the version of the pack. // +kubebuilder:validation:Optional Tag *string `json:"tag,omitempty" tf:"tag,omitempty"` + // The type of the pack. The default value is `spectro`. // +kubebuilder:validation:Optional Type *string `json:"type,omitempty" tf:"type,omitempty"` + // +kubebuilder:validation:Optional + UID *string `json:"uid,omitempty" tf:"uid,omitempty"` + + // The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. // +kubebuilder:validation:Required Values *string `json:"values" tf:"values,omitempty"` } type MaasClusterProfileParameters struct { + // The ID of the cluster profile. // +kubebuilder:validation:Required ID *string `json:"id" tf:"id,omitempty"` @@ -102,15 +135,18 @@ type MaasClusterRbacBindingObservation struct { type MaasClusterRbacBindingParameters struct { + // The Kubernetes namespace of the RBAC binding. Required if 'type' is set to 'RoleBinding'. // +kubebuilder:validation:Optional Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` + // The role of the RBAC binding. Required if 'type' is set to 'RoleBinding'. // +kubebuilder:validation:Optional Role map[string]*string `json:"role,omitempty" tf:"role,omitempty"` // +kubebuilder:validation:Optional Subjects []MaasClusterRbacBindingSubjectsParameters `json:"subjects,omitempty" tf:"subjects,omitempty"` + // The type of the RBAC binding. Can be one of the following values: `RoleBinding`, or `ClusterRoleBinding`. // +kubebuilder:validation:Required Type *string `json:"type" tf:"type,omitempty"` } @@ -120,12 +156,15 @@ type MaasClusterRbacBindingSubjectsObservation struct { type MaasClusterRbacBindingSubjectsParameters struct { + // The name of the subject. Required if 'type' is set to 'User' or 'Group'. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // The Kubernetes namespace of the subject. Required if 'type' is set to 'ServiceAccount'. // +kubebuilder:validation:Optional Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` + // The type of the subject. Can be one of the following values: `User`, `Group`, or `ServiceAccount`. // +kubebuilder:validation:Required Type *string `json:"type" tf:"type,omitempty"` } @@ -208,12 +247,15 @@ type MaasMachinePoolParameters struct { // +kubebuilder:validation:Required Azs []*string `json:"azs" tf:"azs,omitempty"` + // Whether this machine pool is a control plane. Defaults to `false`. // +kubebuilder:validation:Optional ControlPlane *bool `json:"controlPlane,omitempty" tf:"control_plane,omitempty"` + // Whether this machine pool is a control plane and a worker. Defaults to `false`. // +kubebuilder:validation:Optional ControlPlaneAsWorker *bool `json:"controlPlaneAsWorker,omitempty" tf:"control_plane_as_worker,omitempty"` + // Number of nodes in the machine pool. // +kubebuilder:validation:Required Count *float64 `json:"count" tf:"count,omitempty"` @@ -229,6 +271,7 @@ type MaasMachinePoolParameters struct { // +kubebuilder:validation:Optional Taints []MaasMachinePoolTaintsParameters `json:"taints,omitempty" tf:"taints,omitempty"` + // Update strategy for the machine pool. Valid values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`. // +kubebuilder:validation:Optional UpdateStrategy *string `json:"updateStrategy,omitempty" tf:"update_strategy,omitempty"` } @@ -238,12 +281,15 @@ type MaasMachinePoolTaintsObservation struct { type MaasMachinePoolTaintsParameters struct { + // The effect of the taint. Allowed values are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`. // +kubebuilder:validation:Required Effect *string `json:"effect" tf:"effect,omitempty"` + // The key of the taint. // +kubebuilder:validation:Required Key *string `json:"key" tf:"key,omitempty"` + // The value of the taint. // +kubebuilder:validation:Required Value *string `json:"value" tf:"value,omitempty"` } @@ -253,42 +299,36 @@ type MaasNamespacesObservation struct { type MaasNamespacesParameters struct { + // List of images to disallow for the namespace. For example, `['nginx:latest', 'redis:latest']` + // +kubebuilder:validation:Optional + ImagesBlacklist []*string `json:"imagesBlacklist,omitempty" tf:"images_blacklist,omitempty"` + + // Name of the namespace. This is the name of the Kubernetes namespace in the cluster. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // Resource allocation for the namespace. This is a map containing the resource type and the resource value. For example, `{cpu_cores: '2', memory_MiB: '2048'}` // +kubebuilder:validation:Required ResourceAllocation map[string]*string `json:"resourceAllocation" tf:"resource_allocation,omitempty"` } type MaasObservation struct { + + // ID of the cloud config used for the cluster. This cloud config must be of type `azure`. CloudConfigID *string `json:"cloudConfigId,omitempty" tf:"cloud_config_id,omitempty"` + // +kubebuilder:validation:Optional + ClusterProfile []MaasClusterProfileObservation `json:"clusterProfile,omitempty" tf:"cluster_profile,omitempty"` + ID *string `json:"id,omitempty" tf:"id,omitempty"` + // Kubeconfig for the cluster. This can be used to connect to the cluster using `kubectl`. Kubeconfig *string `json:"kubeconfig,omitempty" tf:"kubeconfig,omitempty"` // +kubebuilder:validation:Required MachinePool []MaasMachinePoolObservation `json:"machinePool,omitempty" tf:"machine_pool,omitempty"` } -type MaasPackObservation struct { -} - -type MaasPackParameters struct { - - // +kubebuilder:validation:Required - Name *string `json:"name" tf:"name,omitempty"` - - // +kubebuilder:validation:Optional - RegistryUID *string `json:"registryUid,omitempty" tf:"registry_uid,omitempty"` - - // +kubebuilder:validation:Required - Tag *string `json:"tag" tf:"tag,omitempty"` - - // +kubebuilder:validation:Required - Values *string `json:"values" tf:"values,omitempty"` -} - type MaasParameters struct { // +kubebuilder:validation:Optional @@ -321,24 +361,26 @@ type MaasParameters struct { // +kubebuilder:validation:Optional Namespaces []MaasNamespacesParameters `json:"namespaces,omitempty" tf:"namespaces,omitempty"` + // The date and time after which to patch the cluster. Prefix the time value with the respective RFC. Ex: `RFC3339: 2006-01-02T15:04:05Z07:00` // +kubebuilder:validation:Optional OsPatchAfter *string `json:"osPatchAfter,omitempty" tf:"os_patch_after,omitempty"` + // Whether to apply OS patch on boot. Default is `false`. // +kubebuilder:validation:Optional OsPatchOnBoot *bool `json:"osPatchOnBoot,omitempty" tf:"os_patch_on_boot,omitempty"` + // Cron schedule for OS patching. This must be in the form of `0 0 * * *`. // +kubebuilder:validation:Optional OsPatchSchedule *string `json:"osPatchSchedule,omitempty" tf:"os_patch_schedule,omitempty"` - // +kubebuilder:validation:Optional - Pack []MaasPackParameters `json:"pack,omitempty" tf:"pack,omitempty"` - // +kubebuilder:validation:Optional ScanPolicy []MaasScanPolicyParameters `json:"scanPolicy,omitempty" tf:"scan_policy,omitempty"` + // If `true`, the cluster will be created asynchronously. Default value is `false`. // +kubebuilder:validation:Optional SkipCompletion *bool `json:"skipCompletion,omitempty" tf:"skip_completion,omitempty"` + // A list of tags to be applied to the cluster. Tags must be in the form of `key:value`. // +kubebuilder:validation:Optional Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` } @@ -348,12 +390,15 @@ type MaasScanPolicyObservation struct { type MaasScanPolicyParameters struct { + // The schedule for configuration scan. // +kubebuilder:validation:Required ConfigurationScanSchedule *string `json:"configurationScanSchedule" tf:"configuration_scan_schedule,omitempty"` + // The schedule for conformance scan. // +kubebuilder:validation:Required ConformanceScanSchedule *string `json:"conformanceScanSchedule" tf:"conformance_scan_schedule,omitempty"` + // The schedule for penetration scan. // +kubebuilder:validation:Required PenetrationScanSchedule *string `json:"penetrationScanSchedule" tf:"penetration_scan_schedule,omitempty"` } diff --git a/apis/cluster/v1alpha1/zz_openstack_types.go b/apis/cluster/v1alpha1/zz_openstack_types.go index 7828b42..7a78553 100755 --- a/apis/cluster/v1alpha1/zz_openstack_types.go +++ b/apis/cluster/v1alpha1/zz_openstack_types.go @@ -18,24 +18,39 @@ type OpenstackBackupPolicyObservation struct { type OpenstackBackupPolicyParameters struct { + // The ID of the backup location to use for the backup. // +kubebuilder:validation:Required BackupLocationID *string `json:"backupLocationId" tf:"backup_location_id,omitempty"` + // The list of cluster UIDs to include in the backup. If `include_all_clusters` is set to `true`, then all clusters will be included. + // +kubebuilder:validation:Optional + ClusterUids []*string `json:"clusterUids,omitempty" tf:"cluster_uids,omitempty"` + + // The number of hours after which the backup will be deleted. For example, if the expiry is set to 24, the backup will be deleted after 24 hours. // +kubebuilder:validation:Required ExpiryInHour *float64 `json:"expiryInHour" tf:"expiry_in_hour,omitempty"` + // Whether to include all clusters in the backup. If set to false, only the clusters specified in `cluster_uids` will be included. + // +kubebuilder:validation:Optional + IncludeAllClusters *bool `json:"includeAllClusters,omitempty" tf:"include_all_clusters,omitempty"` + + // Whether to include the cluster resources in the backup. If set to false, only the cluster configuration and disks will be backed up. // +kubebuilder:validation:Optional IncludeClusterResources *bool `json:"includeClusterResources,omitempty" tf:"include_cluster_resources,omitempty"` + // Whether to include the disks in the backup. If set to false, only the cluster configuration will be backed up. // +kubebuilder:validation:Optional IncludeDisks *bool `json:"includeDisks,omitempty" tf:"include_disks,omitempty"` + // The list of Kubernetes namespaces to include in the backup. If not specified, all namespaces will be included. // +kubebuilder:validation:Optional Namespaces []*string `json:"namespaces,omitempty" tf:"namespaces,omitempty"` + // Prefix for the backup name. The backup name will be of the format --. // +kubebuilder:validation:Required Prefix *string `json:"prefix" tf:"prefix,omitempty"` + // The schedule for the backup. The schedule is specified in cron format. For example, to run the backup every day at 1:00 AM, the schedule should be set to `0 1 * * *`. // +kubebuilder:validation:Required Schedule *string `json:"schedule" tf:"schedule,omitempty"` } @@ -71,21 +86,30 @@ type OpenstackCloudConfigParameters struct { } type OpenstackClusterProfileObservation struct { + + // +kubebuilder:validation:Optional + Pack []OpenstackClusterProfilePackObservation `json:"pack,omitempty" tf:"pack,omitempty"` } type OpenstackClusterProfilePackManifestObservation struct { + UID *string `json:"uid,omitempty" tf:"uid,omitempty"` } type OpenstackClusterProfilePackManifestParameters struct { + // The content of the manifest. The content is the YAML content of the manifest. // +kubebuilder:validation:Required Content *string `json:"content" tf:"content,omitempty"` + // The name of the manifest. The name must be unique within the pack. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` } type OpenstackClusterProfilePackObservation struct { + + // +kubebuilder:validation:Optional + Manifest []OpenstackClusterProfilePackManifestObservation `json:"manifest,omitempty" tf:"manifest,omitempty"` } type OpenstackClusterProfilePackParameters struct { @@ -93,24 +117,33 @@ type OpenstackClusterProfilePackParameters struct { // +kubebuilder:validation:Optional Manifest []OpenstackClusterProfilePackManifestParameters `json:"manifest,omitempty" tf:"manifest,omitempty"` + // The name of the pack. The name must be unique within the cluster profile. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // The registry UID of the pack. The registry UID is the unique identifier of the registry. // +kubebuilder:validation:Optional RegistryUID *string `json:"registryUid,omitempty" tf:"registry_uid,omitempty"` + // The tag of the pack. The tag is the version of the pack. // +kubebuilder:validation:Optional Tag *string `json:"tag,omitempty" tf:"tag,omitempty"` + // The type of the pack. The default value is `spectro`. // +kubebuilder:validation:Optional Type *string `json:"type,omitempty" tf:"type,omitempty"` + // +kubebuilder:validation:Optional + UID *string `json:"uid,omitempty" tf:"uid,omitempty"` + + // The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. // +kubebuilder:validation:Required Values *string `json:"values" tf:"values,omitempty"` } type OpenstackClusterProfileParameters struct { + // The ID of the cluster profile. // +kubebuilder:validation:Required ID *string `json:"id" tf:"id,omitempty"` @@ -123,15 +156,18 @@ type OpenstackClusterRbacBindingObservation struct { type OpenstackClusterRbacBindingParameters struct { + // The Kubernetes namespace of the RBAC binding. Required if 'type' is set to 'RoleBinding'. // +kubebuilder:validation:Optional Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` + // The role of the RBAC binding. Required if 'type' is set to 'RoleBinding'. // +kubebuilder:validation:Optional Role map[string]*string `json:"role,omitempty" tf:"role,omitempty"` // +kubebuilder:validation:Optional Subjects []OpenstackClusterRbacBindingSubjectsParameters `json:"subjects,omitempty" tf:"subjects,omitempty"` + // The type of the RBAC binding. Can be one of the following values: `RoleBinding`, or `ClusterRoleBinding`. // +kubebuilder:validation:Required Type *string `json:"type" tf:"type,omitempty"` } @@ -141,12 +177,15 @@ type OpenstackClusterRbacBindingSubjectsObservation struct { type OpenstackClusterRbacBindingSubjectsParameters struct { + // The name of the subject. Required if 'type' is set to 'User' or 'Group'. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // The Kubernetes namespace of the subject. Required if 'type' is set to 'ServiceAccount'. // +kubebuilder:validation:Optional Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` + // The type of the subject. Can be one of the following values: `User`, `Group`, or `ServiceAccount`. // +kubebuilder:validation:Required Type *string `json:"type" tf:"type,omitempty"` } @@ -214,12 +253,15 @@ type OpenstackMachinePoolParameters struct { // +kubebuilder:validation:Optional Azs []*string `json:"azs,omitempty" tf:"azs,omitempty"` + // Whether this machine pool is a control plane. Defaults to `false`. // +kubebuilder:validation:Optional ControlPlane *bool `json:"controlPlane,omitempty" tf:"control_plane,omitempty"` + // Whether this machine pool is a control plane and a worker. Defaults to `false`. // +kubebuilder:validation:Optional ControlPlaneAsWorker *bool `json:"controlPlaneAsWorker,omitempty" tf:"control_plane_as_worker,omitempty"` + // Number of nodes in the machine pool. // +kubebuilder:validation:Required Count *float64 `json:"count" tf:"count,omitempty"` @@ -235,6 +277,7 @@ type OpenstackMachinePoolParameters struct { // +kubebuilder:validation:Optional Taints []OpenstackMachinePoolTaintsParameters `json:"taints,omitempty" tf:"taints,omitempty"` + // Update strategy for the machine pool. Valid values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`. // +kubebuilder:validation:Optional UpdateStrategy *string `json:"updateStrategy,omitempty" tf:"update_strategy,omitempty"` } @@ -244,12 +287,15 @@ type OpenstackMachinePoolTaintsObservation struct { type OpenstackMachinePoolTaintsParameters struct { + // The effect of the taint. Allowed values are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`. // +kubebuilder:validation:Required Effect *string `json:"effect" tf:"effect,omitempty"` + // The key of the taint. // +kubebuilder:validation:Required Key *string `json:"key" tf:"key,omitempty"` + // The value of the taint. // +kubebuilder:validation:Required Value *string `json:"value" tf:"value,omitempty"` } @@ -259,37 +305,31 @@ type OpenstackNamespacesObservation struct { type OpenstackNamespacesParameters struct { + // List of images to disallow for the namespace. For example, `['nginx:latest', 'redis:latest']` + // +kubebuilder:validation:Optional + ImagesBlacklist []*string `json:"imagesBlacklist,omitempty" tf:"images_blacklist,omitempty"` + + // Name of the namespace. This is the name of the Kubernetes namespace in the cluster. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // Resource allocation for the namespace. This is a map containing the resource type and the resource value. For example, `{cpu_cores: '2', memory_MiB: '2048'}` // +kubebuilder:validation:Required ResourceAllocation map[string]*string `json:"resourceAllocation" tf:"resource_allocation,omitempty"` } type OpenstackObservation struct { - CloudConfigID *string `json:"cloudConfigId,omitempty" tf:"cloud_config_id,omitempty"` - - ID *string `json:"id,omitempty" tf:"id,omitempty"` - - Kubeconfig *string `json:"kubeconfig,omitempty" tf:"kubeconfig,omitempty"` -} - -type OpenstackPackObservation struct { -} -type OpenstackPackParameters struct { - - // +kubebuilder:validation:Required - Name *string `json:"name" tf:"name,omitempty"` + // ID of the cloud config used for the cluster. This cloud config must be of type `azure`. + CloudConfigID *string `json:"cloudConfigId,omitempty" tf:"cloud_config_id,omitempty"` // +kubebuilder:validation:Optional - RegistryUID *string `json:"registryUid,omitempty" tf:"registry_uid,omitempty"` + ClusterProfile []OpenstackClusterProfileObservation `json:"clusterProfile,omitempty" tf:"cluster_profile,omitempty"` - // +kubebuilder:validation:Required - Tag *string `json:"tag" tf:"tag,omitempty"` + ID *string `json:"id,omitempty" tf:"id,omitempty"` - // +kubebuilder:validation:Required - Values *string `json:"values" tf:"values,omitempty"` + // Kubeconfig for the cluster. This can be used to connect to the cluster using `kubectl`. + Kubeconfig *string `json:"kubeconfig,omitempty" tf:"kubeconfig,omitempty"` } type OpenstackParameters struct { @@ -324,24 +364,26 @@ type OpenstackParameters struct { // +kubebuilder:validation:Optional Namespaces []OpenstackNamespacesParameters `json:"namespaces,omitempty" tf:"namespaces,omitempty"` + // The date and time after which to patch the cluster. Prefix the time value with the respective RFC. Ex: `RFC3339: 2006-01-02T15:04:05Z07:00` // +kubebuilder:validation:Optional OsPatchAfter *string `json:"osPatchAfter,omitempty" tf:"os_patch_after,omitempty"` + // Whether to apply OS patch on boot. Default is `false`. // +kubebuilder:validation:Optional OsPatchOnBoot *bool `json:"osPatchOnBoot,omitempty" tf:"os_patch_on_boot,omitempty"` + // Cron schedule for OS patching. This must be in the form of `0 0 * * *`. // +kubebuilder:validation:Optional OsPatchSchedule *string `json:"osPatchSchedule,omitempty" tf:"os_patch_schedule,omitempty"` - // +kubebuilder:validation:Optional - Pack []OpenstackPackParameters `json:"pack,omitempty" tf:"pack,omitempty"` - // +kubebuilder:validation:Optional ScanPolicy []OpenstackScanPolicyParameters `json:"scanPolicy,omitempty" tf:"scan_policy,omitempty"` + // If `true`, the cluster will be created asynchronously. Default value is `false`. // +kubebuilder:validation:Optional SkipCompletion *bool `json:"skipCompletion,omitempty" tf:"skip_completion,omitempty"` + // A list of tags to be applied to the cluster. Tags must be in the form of `key:value`. // +kubebuilder:validation:Optional Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` } @@ -351,12 +393,15 @@ type OpenstackScanPolicyObservation struct { type OpenstackScanPolicyParameters struct { + // The schedule for configuration scan. // +kubebuilder:validation:Required ConfigurationScanSchedule *string `json:"configurationScanSchedule" tf:"configuration_scan_schedule,omitempty"` + // The schedule for conformance scan. // +kubebuilder:validation:Required ConformanceScanSchedule *string `json:"conformanceScanSchedule" tf:"conformance_scan_schedule,omitempty"` + // The schedule for penetration scan. // +kubebuilder:validation:Required PenetrationScanSchedule *string `json:"penetrationScanSchedule" tf:"penetration_scan_schedule,omitempty"` } diff --git a/apis/cluster/v1alpha1/zz_profile_types.go b/apis/cluster/v1alpha1/zz_profile_types.go index bcfe7cc..5aa2a4d 100755 --- a/apis/cluster/v1alpha1/zz_profile_types.go +++ b/apis/cluster/v1alpha1/zz_profile_types.go @@ -16,7 +16,7 @@ import ( type ProfileObservation struct { ID *string `json:"id,omitempty" tf:"id,omitempty"` - // +kubebuilder:validation:Required + // +kubebuilder:validation:Optional Pack []ProfilePackObservation `json:"pack,omitempty" tf:"pack,omitempty"` } @@ -26,9 +26,11 @@ type ProfilePackManifestObservation struct { type ProfilePackManifestParameters struct { + // The content of the manifest. The content is the YAML content of the manifest. // +kubebuilder:validation:Required Content *string `json:"content" tf:"content,omitempty"` + // The name of the manifest. The name must be unique within the pack. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` } @@ -44,23 +46,28 @@ type ProfilePackParameters struct { // +kubebuilder:validation:Optional Manifest []ProfilePackManifestParameters `json:"manifest,omitempty" tf:"manifest,omitempty"` + // The name of the pack. The name must be unique within the cluster profile. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // The registry UID of the pack. The registry UID is the unique identifier of the registry. // +kubebuilder:validation:Optional RegistryUID *string `json:"registryUid,omitempty" tf:"registry_uid,omitempty"` + // The tag of the pack. The tag is the version of the pack. // +kubebuilder:validation:Optional Tag *string `json:"tag,omitempty" tf:"tag,omitempty"` + // The type of the pack. The default value is `spectro`. // +kubebuilder:validation:Optional Type *string `json:"type,omitempty" tf:"type,omitempty"` // +kubebuilder:validation:Optional UID *string `json:"uid,omitempty" tf:"uid,omitempty"` - // +kubebuilder:validation:Optional - Values *string `json:"values,omitempty" tf:"values,omitempty"` + // The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. + // +kubebuilder:validation:Required + Values *string `json:"values" tf:"values,omitempty"` } type ProfileParameters struct { @@ -74,9 +81,10 @@ type ProfileParameters struct { // +kubebuilder:validation:Optional Description *string `json:"description,omitempty" tf:"description,omitempty"` - // +kubebuilder:validation:Required - Pack []ProfilePackParameters `json:"pack" tf:"pack,omitempty"` + // +kubebuilder:validation:Optional + Pack []ProfilePackParameters `json:"pack,omitempty" tf:"pack,omitempty"` + // A list of tags to be applied to the cluster. Tags must be in the form of `key:value`. // +kubebuilder:validation:Optional Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` diff --git a/apis/cluster/v1alpha1/zz_tke_types.go b/apis/cluster/v1alpha1/zz_tke_types.go index fb530ea..7d00d11 100755 --- a/apis/cluster/v1alpha1/zz_tke_types.go +++ b/apis/cluster/v1alpha1/zz_tke_types.go @@ -18,24 +18,39 @@ type TkeBackupPolicyObservation struct { type TkeBackupPolicyParameters struct { + // The ID of the backup location to use for the backup. // +kubebuilder:validation:Required BackupLocationID *string `json:"backupLocationId" tf:"backup_location_id,omitempty"` + // The list of cluster UIDs to include in the backup. If `include_all_clusters` is set to `true`, then all clusters will be included. + // +kubebuilder:validation:Optional + ClusterUids []*string `json:"clusterUids,omitempty" tf:"cluster_uids,omitempty"` + + // The number of hours after which the backup will be deleted. For example, if the expiry is set to 24, the backup will be deleted after 24 hours. // +kubebuilder:validation:Required ExpiryInHour *float64 `json:"expiryInHour" tf:"expiry_in_hour,omitempty"` + // Whether to include all clusters in the backup. If set to false, only the clusters specified in `cluster_uids` will be included. + // +kubebuilder:validation:Optional + IncludeAllClusters *bool `json:"includeAllClusters,omitempty" tf:"include_all_clusters,omitempty"` + + // Whether to include the cluster resources in the backup. If set to false, only the cluster configuration and disks will be backed up. // +kubebuilder:validation:Optional IncludeClusterResources *bool `json:"includeClusterResources,omitempty" tf:"include_cluster_resources,omitempty"` + // Whether to include the disks in the backup. If set to false, only the cluster configuration will be backed up. // +kubebuilder:validation:Optional IncludeDisks *bool `json:"includeDisks,omitempty" tf:"include_disks,omitempty"` + // The list of Kubernetes namespaces to include in the backup. If not specified, all namespaces will be included. // +kubebuilder:validation:Optional Namespaces []*string `json:"namespaces,omitempty" tf:"namespaces,omitempty"` + // Prefix for the backup name. The backup name will be of the format --. // +kubebuilder:validation:Required Prefix *string `json:"prefix" tf:"prefix,omitempty"` + // The schedule for the backup. The schedule is specified in cron format. For example, to run the backup every day at 1:00 AM, the schedule should be set to `0 1 * * *`. // +kubebuilder:validation:Required Schedule *string `json:"schedule" tf:"schedule,omitempty"` } @@ -68,21 +83,30 @@ type TkeCloudConfigParameters struct { } type TkeClusterProfileObservation struct { + + // +kubebuilder:validation:Optional + Pack []TkeClusterProfilePackObservation `json:"pack,omitempty" tf:"pack,omitempty"` } type TkeClusterProfilePackManifestObservation struct { + UID *string `json:"uid,omitempty" tf:"uid,omitempty"` } type TkeClusterProfilePackManifestParameters struct { + // The content of the manifest. The content is the YAML content of the manifest. // +kubebuilder:validation:Required Content *string `json:"content" tf:"content,omitempty"` + // The name of the manifest. The name must be unique within the pack. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` } type TkeClusterProfilePackObservation struct { + + // +kubebuilder:validation:Optional + Manifest []TkeClusterProfilePackManifestObservation `json:"manifest,omitempty" tf:"manifest,omitempty"` } type TkeClusterProfilePackParameters struct { @@ -90,24 +114,33 @@ type TkeClusterProfilePackParameters struct { // +kubebuilder:validation:Optional Manifest []TkeClusterProfilePackManifestParameters `json:"manifest,omitempty" tf:"manifest,omitempty"` + // The name of the pack. The name must be unique within the cluster profile. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // The registry UID of the pack. The registry UID is the unique identifier of the registry. // +kubebuilder:validation:Optional RegistryUID *string `json:"registryUid,omitempty" tf:"registry_uid,omitempty"` + // The tag of the pack. The tag is the version of the pack. // +kubebuilder:validation:Optional Tag *string `json:"tag,omitempty" tf:"tag,omitempty"` + // The type of the pack. The default value is `spectro`. // +kubebuilder:validation:Optional Type *string `json:"type,omitempty" tf:"type,omitempty"` // +kubebuilder:validation:Optional - Values *string `json:"values,omitempty" tf:"values,omitempty"` + UID *string `json:"uid,omitempty" tf:"uid,omitempty"` + + // The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. + // +kubebuilder:validation:Required + Values *string `json:"values" tf:"values,omitempty"` } type TkeClusterProfileParameters struct { + // The ID of the cluster profile. // +kubebuilder:validation:Required ID *string `json:"id" tf:"id,omitempty"` @@ -120,15 +153,18 @@ type TkeClusterRbacBindingObservation struct { type TkeClusterRbacBindingParameters struct { + // The Kubernetes namespace of the RBAC binding. Required if 'type' is set to 'RoleBinding'. // +kubebuilder:validation:Optional Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` + // The role of the RBAC binding. Required if 'type' is set to 'RoleBinding'. // +kubebuilder:validation:Optional Role map[string]*string `json:"role,omitempty" tf:"role,omitempty"` // +kubebuilder:validation:Optional Subjects []TkeClusterRbacBindingSubjectsParameters `json:"subjects,omitempty" tf:"subjects,omitempty"` + // The type of the RBAC binding. Can be one of the following values: `RoleBinding`, or `ClusterRoleBinding`. // +kubebuilder:validation:Required Type *string `json:"type" tf:"type,omitempty"` } @@ -138,12 +174,15 @@ type TkeClusterRbacBindingSubjectsObservation struct { type TkeClusterRbacBindingSubjectsParameters struct { + // The name of the subject. Required if 'type' is set to 'User' or 'Group'. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // The Kubernetes namespace of the subject. Required if 'type' is set to 'ServiceAccount'. // +kubebuilder:validation:Optional Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` + // The type of the subject. Can be one of the following values: `User`, `Group`, or `ServiceAccount`. // +kubebuilder:validation:Required Type *string `json:"type" tf:"type,omitempty"` } @@ -204,6 +243,7 @@ type TkeMachinePoolParameters struct { // +kubebuilder:validation:Optional CapacityType *string `json:"capacityType,omitempty" tf:"capacity_type,omitempty"` + // Number of nodes in the machine pool. // +kubebuilder:validation:Required Count *float64 `json:"count" tf:"count,omitempty"` @@ -228,6 +268,7 @@ type TkeMachinePoolParameters struct { // +kubebuilder:validation:Optional Taints []TkeMachinePoolTaintsParameters `json:"taints,omitempty" tf:"taints,omitempty"` + // Update strategy for the machine pool. Valid values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`. // +kubebuilder:validation:Optional UpdateStrategy *string `json:"updateStrategy,omitempty" tf:"update_strategy,omitempty"` } @@ -237,12 +278,15 @@ type TkeMachinePoolTaintsObservation struct { type TkeMachinePoolTaintsParameters struct { + // The effect of the taint. Allowed values are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`. // +kubebuilder:validation:Required Effect *string `json:"effect" tf:"effect,omitempty"` + // The key of the taint. // +kubebuilder:validation:Required Key *string `json:"key" tf:"key,omitempty"` + // The value of the taint. // +kubebuilder:validation:Required Value *string `json:"value" tf:"value,omitempty"` } @@ -252,41 +296,35 @@ type TkeNamespacesObservation struct { type TkeNamespacesParameters struct { + // List of images to disallow for the namespace. For example, `['nginx:latest', 'redis:latest']` + // +kubebuilder:validation:Optional + ImagesBlacklist []*string `json:"imagesBlacklist,omitempty" tf:"images_blacklist,omitempty"` + + // Name of the namespace. This is the name of the Kubernetes namespace in the cluster. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // Resource allocation for the namespace. This is a map containing the resource type and the resource value. For example, `{cpu_cores: '2', memory_MiB: '2048'}` // +kubebuilder:validation:Required ResourceAllocation map[string]*string `json:"resourceAllocation" tf:"resource_allocation,omitempty"` } type TkeObservation struct { + + // ID of the cloud config used for the cluster. This cloud config must be of type `azure`. CloudConfigID *string `json:"cloudConfigId,omitempty" tf:"cloud_config_id,omitempty"` + // +kubebuilder:validation:Optional + ClusterProfile []TkeClusterProfileObservation `json:"clusterProfile,omitempty" tf:"cluster_profile,omitempty"` + ID *string `json:"id,omitempty" tf:"id,omitempty"` + // Kubeconfig for the cluster. This can be used to connect to the cluster using `kubectl`. Kubeconfig *string `json:"kubeconfig,omitempty" tf:"kubeconfig,omitempty"` LocationConfig []TkeLocationConfigObservation `json:"locationConfig,omitempty" tf:"location_config,omitempty"` } -type TkePackObservation struct { -} - -type TkePackParameters struct { - - // +kubebuilder:validation:Required - Name *string `json:"name" tf:"name,omitempty"` - - // +kubebuilder:validation:Optional - RegistryUID *string `json:"registryUid,omitempty" tf:"registry_uid,omitempty"` - - // +kubebuilder:validation:Required - Tag *string `json:"tag" tf:"tag,omitempty"` - - // +kubebuilder:validation:Required - Values *string `json:"values" tf:"values,omitempty"` -} - type TkeParameters struct { // +kubebuilder:validation:Optional @@ -316,15 +354,14 @@ type TkeParameters struct { // +kubebuilder:validation:Optional Namespaces []TkeNamespacesParameters `json:"namespaces,omitempty" tf:"namespaces,omitempty"` - // +kubebuilder:validation:Optional - Pack []TkePackParameters `json:"pack,omitempty" tf:"pack,omitempty"` - // +kubebuilder:validation:Optional ScanPolicy []TkeScanPolicyParameters `json:"scanPolicy,omitempty" tf:"scan_policy,omitempty"` + // If `true`, the cluster will be created asynchronously. Default value is `false`. // +kubebuilder:validation:Optional SkipCompletion *bool `json:"skipCompletion,omitempty" tf:"skip_completion,omitempty"` + // A list of tags to be applied to the cluster. Tags must be in the form of `key:value`. // +kubebuilder:validation:Optional Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` } @@ -334,12 +371,15 @@ type TkeScanPolicyObservation struct { type TkeScanPolicyParameters struct { + // The schedule for configuration scan. // +kubebuilder:validation:Required ConfigurationScanSchedule *string `json:"configurationScanSchedule" tf:"configuration_scan_schedule,omitempty"` + // The schedule for conformance scan. // +kubebuilder:validation:Required ConformanceScanSchedule *string `json:"conformanceScanSchedule" tf:"conformance_scan_schedule,omitempty"` + // The schedule for penetration scan. // +kubebuilder:validation:Required PenetrationScanSchedule *string `json:"penetrationScanSchedule" tf:"penetration_scan_schedule,omitempty"` } diff --git a/apis/cluster/v1alpha1/zz_vsphere_types.go b/apis/cluster/v1alpha1/zz_vsphere_types.go index 0cf4947..7feb396 100755 --- a/apis/cluster/v1alpha1/zz_vsphere_types.go +++ b/apis/cluster/v1alpha1/zz_vsphere_types.go @@ -18,24 +18,39 @@ type VsphereBackupPolicyObservation struct { type VsphereBackupPolicyParameters struct { + // The ID of the backup location to use for the backup. // +kubebuilder:validation:Required BackupLocationID *string `json:"backupLocationId" tf:"backup_location_id,omitempty"` + // The list of cluster UIDs to include in the backup. If `include_all_clusters` is set to `true`, then all clusters will be included. + // +kubebuilder:validation:Optional + ClusterUids []*string `json:"clusterUids,omitempty" tf:"cluster_uids,omitempty"` + + // The number of hours after which the backup will be deleted. For example, if the expiry is set to 24, the backup will be deleted after 24 hours. // +kubebuilder:validation:Required ExpiryInHour *float64 `json:"expiryInHour" tf:"expiry_in_hour,omitempty"` + // Whether to include all clusters in the backup. If set to false, only the clusters specified in `cluster_uids` will be included. + // +kubebuilder:validation:Optional + IncludeAllClusters *bool `json:"includeAllClusters,omitempty" tf:"include_all_clusters,omitempty"` + + // Whether to include the cluster resources in the backup. If set to false, only the cluster configuration and disks will be backed up. // +kubebuilder:validation:Optional IncludeClusterResources *bool `json:"includeClusterResources,omitempty" tf:"include_cluster_resources,omitempty"` + // Whether to include the disks in the backup. If set to false, only the cluster configuration will be backed up. // +kubebuilder:validation:Optional IncludeDisks *bool `json:"includeDisks,omitempty" tf:"include_disks,omitempty"` + // The list of Kubernetes namespaces to include in the backup. If not specified, all namespaces will be included. // +kubebuilder:validation:Optional Namespaces []*string `json:"namespaces,omitempty" tf:"namespaces,omitempty"` + // Prefix for the backup name. The backup name will be of the format --. // +kubebuilder:validation:Required Prefix *string `json:"prefix" tf:"prefix,omitempty"` + // The schedule for the backup. The schedule is specified in cron format. For example, to run the backup every day at 1:00 AM, the schedule should be set to `0 1 * * *`. // +kubebuilder:validation:Required Schedule *string `json:"schedule" tf:"schedule,omitempty"` } @@ -45,44 +60,60 @@ type VsphereCloudConfigObservation struct { type VsphereCloudConfigParameters struct { + // The name of the datacenter in vSphere. This is the name of the datacenter as it appears in vSphere. // +kubebuilder:validation:Required Datacenter *string `json:"datacenter" tf:"datacenter,omitempty"` + // The name of the folder in vSphere. This is the name of the folder as it appears in vSphere. // +kubebuilder:validation:Required Folder *string `json:"folder" tf:"folder,omitempty"` + // The name of the image template folder in vSphere. This is the name of the folder as it appears in vSphere. // +kubebuilder:validation:Optional ImageTemplateFolder *string `json:"imageTemplateFolder,omitempty" tf:"image_template_folder,omitempty"` + // The search domain to use for the cluster in case of DHCP. // +kubebuilder:validation:Optional NetworkSearchDomain *string `json:"networkSearchDomain,omitempty" tf:"network_search_domain,omitempty"` + // The type of network to use for the cluster. This can be `VIP` or `DDNS`. // +kubebuilder:validation:Optional NetworkType *string `json:"networkType,omitempty" tf:"network_type,omitempty"` + // The SSH key to be used for the cluster. This is the public key that will be used to access the cluster. // +kubebuilder:validation:Required SSHKey *string `json:"sshKey" tf:"ssh_key,omitempty"` + // Whether to use static IP addresses for the cluster. If `true`, the cluster will use static IP addresses. If `false`, the cluster will use DDNS. Default is `false`. // +kubebuilder:validation:Optional StaticIP *bool `json:"staticIp,omitempty" tf:"static_ip,omitempty"` } type VsphereClusterProfileObservation struct { + + // +kubebuilder:validation:Optional + Pack []VsphereClusterProfilePackObservation `json:"pack,omitempty" tf:"pack,omitempty"` } type VsphereClusterProfilePackManifestObservation struct { + UID *string `json:"uid,omitempty" tf:"uid,omitempty"` } type VsphereClusterProfilePackManifestParameters struct { + // The content of the manifest. The content is the YAML content of the manifest. // +kubebuilder:validation:Required Content *string `json:"content" tf:"content,omitempty"` + // The name of the manifest. The name must be unique within the pack. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` } type VsphereClusterProfilePackObservation struct { + + // +kubebuilder:validation:Optional + Manifest []VsphereClusterProfilePackManifestObservation `json:"manifest,omitempty" tf:"manifest,omitempty"` } type VsphereClusterProfilePackParameters struct { @@ -90,24 +121,33 @@ type VsphereClusterProfilePackParameters struct { // +kubebuilder:validation:Optional Manifest []VsphereClusterProfilePackManifestParameters `json:"manifest,omitempty" tf:"manifest,omitempty"` + // The name of the pack. The name must be unique within the cluster profile. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // The registry UID of the pack. The registry UID is the unique identifier of the registry. // +kubebuilder:validation:Optional RegistryUID *string `json:"registryUid,omitempty" tf:"registry_uid,omitempty"` + // The tag of the pack. The tag is the version of the pack. // +kubebuilder:validation:Optional Tag *string `json:"tag,omitempty" tf:"tag,omitempty"` + // The type of the pack. The default value is `spectro`. // +kubebuilder:validation:Optional Type *string `json:"type,omitempty" tf:"type,omitempty"` + // +kubebuilder:validation:Optional + UID *string `json:"uid,omitempty" tf:"uid,omitempty"` + + // The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. // +kubebuilder:validation:Required Values *string `json:"values" tf:"values,omitempty"` } type VsphereClusterProfileParameters struct { + // The ID of the cluster profile. // +kubebuilder:validation:Required ID *string `json:"id" tf:"id,omitempty"` @@ -120,15 +160,18 @@ type VsphereClusterRbacBindingObservation struct { type VsphereClusterRbacBindingParameters struct { + // The Kubernetes namespace of the RBAC binding. Required if 'type' is set to 'RoleBinding'. // +kubebuilder:validation:Optional Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` + // The role of the RBAC binding. Required if 'type' is set to 'RoleBinding'. // +kubebuilder:validation:Optional Role map[string]*string `json:"role,omitempty" tf:"role,omitempty"` // +kubebuilder:validation:Optional Subjects []VsphereClusterRbacBindingSubjectsParameters `json:"subjects,omitempty" tf:"subjects,omitempty"` + // The type of the RBAC binding. Can be one of the following values: `RoleBinding`, or `ClusterRoleBinding`. // +kubebuilder:validation:Required Type *string `json:"type" tf:"type,omitempty"` } @@ -138,12 +181,15 @@ type VsphereClusterRbacBindingSubjectsObservation struct { type VsphereClusterRbacBindingSubjectsParameters struct { + // The name of the subject. Required if 'type' is set to 'User' or 'Group'. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // The Kubernetes namespace of the subject. Required if 'type' is set to 'ServiceAccount'. // +kubebuilder:validation:Optional Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` + // The type of the subject. Can be one of the following values: `User`, `Group`, or `ServiceAccount`. // +kubebuilder:validation:Required Type *string `json:"type" tf:"type,omitempty"` } @@ -205,12 +251,15 @@ type VsphereMachinePoolInstanceTypeObservation struct { type VsphereMachinePoolInstanceTypeParameters struct { + // The number of CPUs. // +kubebuilder:validation:Required CPU *float64 `json:"cpu" tf:"cpu,omitempty"` + // The size of the disk in GB. // +kubebuilder:validation:Required DiskSizeGb *float64 `json:"diskSizeGb" tf:"disk_size_gb,omitempty"` + // The amount of memory in MB. // +kubebuilder:validation:Required MemoryMb *float64 `json:"memoryMb" tf:"memory_mb,omitempty"` } @@ -226,18 +275,22 @@ type VsphereMachinePoolParameters struct { // +kubebuilder:validation:Optional AdditionalLabels map[string]*string `json:"additionalLabels,omitempty" tf:"additional_labels,omitempty"` + // Whether this machine pool is a control plane. Defaults to `false`. // +kubebuilder:validation:Optional ControlPlane *bool `json:"controlPlane,omitempty" tf:"control_plane,omitempty"` + // Whether this machine pool is a control plane and a worker. Defaults to `false`. // +kubebuilder:validation:Optional ControlPlaneAsWorker *bool `json:"controlPlaneAsWorker,omitempty" tf:"control_plane_as_worker,omitempty"` + // Number of nodes in the machine pool. // +kubebuilder:validation:Required Count *float64 `json:"count" tf:"count,omitempty"` // +kubebuilder:validation:Required InstanceType []VsphereMachinePoolInstanceTypeParameters `json:"instanceType" tf:"instance_type,omitempty"` + // The name of the machine pool. This is used to identify the machine pool in the cluster. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` @@ -247,6 +300,7 @@ type VsphereMachinePoolParameters struct { // +kubebuilder:validation:Optional Taints []VsphereMachinePoolTaintsParameters `json:"taints,omitempty" tf:"taints,omitempty"` + // Update strategy for the machine pool. Valid values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`. // +kubebuilder:validation:Optional UpdateStrategy *string `json:"updateStrategy,omitempty" tf:"update_strategy,omitempty"` } @@ -257,18 +311,23 @@ type VsphereMachinePoolPlacementObservation struct { type VsphereMachinePoolPlacementParameters struct { + // The name of the cluster to use for the machine pool. As it appears in the vSphere. // +kubebuilder:validation:Required Cluster *string `json:"cluster" tf:"cluster,omitempty"` + // The name of the datastore to use for the machine pool. As it appears in the vSphere. // +kubebuilder:validation:Required Datastore *string `json:"datastore" tf:"datastore,omitempty"` + // The name of the network to use for the machine pool. As it appears in the vSphere. // +kubebuilder:validation:Required Network *string `json:"network" tf:"network,omitempty"` + // The name of the resource pool to use for the machine pool. As it appears in the vSphere. // +kubebuilder:validation:Required ResourcePool *string `json:"resourcePool" tf:"resource_pool,omitempty"` + // The ID of the static IP pool to use for the machine pool in case of static cluster placement. // +kubebuilder:validation:Optional StaticIPPoolID *string `json:"staticIpPoolId,omitempty" tf:"static_ip_pool_id,omitempty"` } @@ -278,12 +337,15 @@ type VsphereMachinePoolTaintsObservation struct { type VsphereMachinePoolTaintsParameters struct { + // The effect of the taint. Allowed values are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`. // +kubebuilder:validation:Required Effect *string `json:"effect" tf:"effect,omitempty"` + // The key of the taint. // +kubebuilder:validation:Required Key *string `json:"key" tf:"key,omitempty"` + // The value of the taint. // +kubebuilder:validation:Required Value *string `json:"value" tf:"value,omitempty"` } @@ -293,50 +355,46 @@ type VsphereNamespacesObservation struct { type VsphereNamespacesParameters struct { + // List of images to disallow for the namespace. For example, `['nginx:latest', 'redis:latest']` + // +kubebuilder:validation:Optional + ImagesBlacklist []*string `json:"imagesBlacklist,omitempty" tf:"images_blacklist,omitempty"` + + // Name of the namespace. This is the name of the Kubernetes namespace in the cluster. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // Resource allocation for the namespace. This is a map containing the resource type and the resource value. For example, `{cpu_cores: '2', memory_MiB: '2048'}` // +kubebuilder:validation:Required ResourceAllocation map[string]*string `json:"resourceAllocation" tf:"resource_allocation,omitempty"` } type VsphereObservation struct { + + // ID of the cloud config used for the cluster. This cloud config must be of type `azure`. CloudConfigID *string `json:"cloudConfigId,omitempty" tf:"cloud_config_id,omitempty"` + // +kubebuilder:validation:Optional + ClusterProfile []VsphereClusterProfileObservation `json:"clusterProfile,omitempty" tf:"cluster_profile,omitempty"` + ID *string `json:"id,omitempty" tf:"id,omitempty"` + // Kubeconfig for the cluster. This can be used to connect to the cluster using `kubectl`. Kubeconfig *string `json:"kubeconfig,omitempty" tf:"kubeconfig,omitempty"` // +kubebuilder:validation:Required MachinePool []VsphereMachinePoolObservation `json:"machinePool,omitempty" tf:"machine_pool,omitempty"` } -type VspherePackObservation struct { -} - -type VspherePackParameters struct { - - // +kubebuilder:validation:Required - Name *string `json:"name" tf:"name,omitempty"` - - // +kubebuilder:validation:Optional - RegistryUID *string `json:"registryUid,omitempty" tf:"registry_uid,omitempty"` - - // +kubebuilder:validation:Required - Tag *string `json:"tag" tf:"tag,omitempty"` - - // +kubebuilder:validation:Required - Values *string `json:"values" tf:"values,omitempty"` -} - type VsphereParameters struct { + // The setting to apply the cluster profile. `DownloadAndInstall` will download and install packs in one action. `DownloadAndInstallLater` will only download artifact and postpone install for later. Default value is `DownloadAndInstall`. // +kubebuilder:validation:Optional ApplySetting *string `json:"applySetting,omitempty" tf:"apply_setting,omitempty"` // +kubebuilder:validation:Optional BackupPolicy []VsphereBackupPolicyParameters `json:"backupPolicy,omitempty" tf:"backup_policy,omitempty"` + // ID of the cloud account to be used for the cluster. This cloud account must be of type `vsphere`. // +kubebuilder:validation:Required CloudAccountID *string `json:"cloudAccountId" tf:"cloud_account_id,omitempty"` @@ -346,9 +404,6 @@ type VsphereParameters struct { // +kubebuilder:validation:Optional ClusterProfile []VsphereClusterProfileParameters `json:"clusterProfile,omitempty" tf:"cluster_profile,omitempty"` - // +kubebuilder:validation:Optional - ClusterProfileID *string `json:"clusterProfileId,omitempty" tf:"cluster_profile_id,omitempty"` - // +kubebuilder:validation:Optional ClusterRbacBinding []VsphereClusterRbacBindingParameters `json:"clusterRbacBinding,omitempty" tf:"cluster_rbac_binding,omitempty"` @@ -364,24 +419,26 @@ type VsphereParameters struct { // +kubebuilder:validation:Optional Namespaces []VsphereNamespacesParameters `json:"namespaces,omitempty" tf:"namespaces,omitempty"` + // The date and time after which to patch the cluster. Prefix the time value with the respective RFC. Ex: `RFC3339: 2006-01-02T15:04:05Z07:00` // +kubebuilder:validation:Optional OsPatchAfter *string `json:"osPatchAfter,omitempty" tf:"os_patch_after,omitempty"` + // Whether to apply OS patch on boot. Default is `false`. // +kubebuilder:validation:Optional OsPatchOnBoot *bool `json:"osPatchOnBoot,omitempty" tf:"os_patch_on_boot,omitempty"` + // The cron schedule for OS patching. This must be in the form of cron syntax. Ex: `0 0 * * *`. // +kubebuilder:validation:Optional OsPatchSchedule *string `json:"osPatchSchedule,omitempty" tf:"os_patch_schedule,omitempty"` - // +kubebuilder:validation:Optional - Pack []VspherePackParameters `json:"pack,omitempty" tf:"pack,omitempty"` - // +kubebuilder:validation:Optional ScanPolicy []VsphereScanPolicyParameters `json:"scanPolicy,omitempty" tf:"scan_policy,omitempty"` + // If `true`, the cluster will be created asynchronously. Default value is `false`. // +kubebuilder:validation:Optional SkipCompletion *bool `json:"skipCompletion,omitempty" tf:"skip_completion,omitempty"` + // A list of tags to be applied to the cluster. Tags must be in the form of `key:value`. // +kubebuilder:validation:Optional Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` } @@ -391,12 +448,15 @@ type VsphereScanPolicyObservation struct { type VsphereScanPolicyParameters struct { + // The schedule for configuration scan. // +kubebuilder:validation:Required ConfigurationScanSchedule *string `json:"configurationScanSchedule" tf:"configuration_scan_schedule,omitempty"` + // The schedule for conformance scan. // +kubebuilder:validation:Required ConformanceScanSchedule *string `json:"conformanceScanSchedule" tf:"conformance_scan_schedule,omitempty"` + // The schedule for penetration scan. // +kubebuilder:validation:Required PenetrationScanSchedule *string `json:"penetrationScanSchedule" tf:"penetration_scan_schedule,omitempty"` } diff --git a/apis/spectrocloud/v1alpha1/zz_macro_types.go b/apis/spectrocloud/v1alpha1/zz_macro_types.go index adba992..ee111d4 100755 --- a/apis/spectrocloud/v1alpha1/zz_macro_types.go +++ b/apis/spectrocloud/v1alpha1/zz_macro_types.go @@ -19,11 +19,13 @@ type MacroObservation struct { type MacroParameters struct { + // The Spectro Cloud project name. // +kubebuilder:validation:Optional Project *string `json:"project,omitempty" tf:"project,omitempty"` - // +kubebuilder:validation:Optional - Value *string `json:"value,omitempty" tf:"value,omitempty"` + // The value that the macro or service output variable will contain. + // +kubebuilder:validation:Required + Value *string `json:"value" tf:"value,omitempty"` } // MacroSpec defines the desired state of Macro diff --git a/apis/spectrocloud/v1alpha1/zz_workspace_types.go b/apis/spectrocloud/v1alpha1/zz_workspace_types.go index 27ba77a..18d032d 100755 --- a/apis/spectrocloud/v1alpha1/zz_workspace_types.go +++ b/apis/spectrocloud/v1alpha1/zz_workspace_types.go @@ -18,30 +18,39 @@ type BackupPolicyObservation struct { type BackupPolicyParameters struct { + // The ID of the backup location to use for the backup. // +kubebuilder:validation:Required BackupLocationID *string `json:"backupLocationId" tf:"backup_location_id,omitempty"` + // The list of cluster UIDs to include in the backup. If `include_all_clusters` is set to `true`, then all clusters will be included. // +kubebuilder:validation:Optional ClusterUids []*string `json:"clusterUids,omitempty" tf:"cluster_uids,omitempty"` + // The number of hours after which the backup will be deleted. For example, if the expiry is set to 24, the backup will be deleted after 24 hours. // +kubebuilder:validation:Required ExpiryInHour *float64 `json:"expiryInHour" tf:"expiry_in_hour,omitempty"` + // Whether to include all clusters in the backup. If set to false, only the clusters specified in `cluster_uids` will be included. // +kubebuilder:validation:Optional IncludeAllClusters *bool `json:"includeAllClusters,omitempty" tf:"include_all_clusters,omitempty"` + // Whether to include the cluster resources in the backup. If set to false, only the cluster configuration and disks will be backed up. // +kubebuilder:validation:Optional IncludeClusterResources *bool `json:"includeClusterResources,omitempty" tf:"include_cluster_resources,omitempty"` + // Whether to include the disks in the backup. If set to false, only the cluster configuration will be backed up. // +kubebuilder:validation:Optional IncludeDisks *bool `json:"includeDisks,omitempty" tf:"include_disks,omitempty"` + // The list of Kubernetes namespaces to include in the backup. If not specified, all namespaces will be included. // +kubebuilder:validation:Optional Namespaces []*string `json:"namespaces,omitempty" tf:"namespaces,omitempty"` + // Prefix for the backup name. The backup name will be of the format --. // +kubebuilder:validation:Required Prefix *string `json:"prefix" tf:"prefix,omitempty"` + // The schedule for the backup. The schedule is specified in cron format. For example, to run the backup every day at 1:00 AM, the schedule should be set to `0 1 * * *`. // +kubebuilder:validation:Required Schedule *string `json:"schedule" tf:"schedule,omitempty"` } @@ -51,15 +60,18 @@ type ClusterRbacBindingObservation struct { type ClusterRbacBindingParameters struct { + // The Kubernetes namespace of the RBAC binding. Required if 'type' is set to 'RoleBinding'. // +kubebuilder:validation:Optional Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` + // The role of the RBAC binding. Required if 'type' is set to 'RoleBinding'. // +kubebuilder:validation:Optional Role map[string]*string `json:"role,omitempty" tf:"role,omitempty"` // +kubebuilder:validation:Optional Subjects []SubjectsParameters `json:"subjects,omitempty" tf:"subjects,omitempty"` + // The type of the RBAC binding. Can be one of the following values: `RoleBinding`, or `ClusterRoleBinding`. // +kubebuilder:validation:Required Type *string `json:"type" tf:"type,omitempty"` } @@ -78,12 +90,15 @@ type NamespacesObservation struct { type NamespacesParameters struct { + // List of images to disallow for the namespace. For example, `['nginx:latest', 'redis:latest']` // +kubebuilder:validation:Optional ImagesBlacklist []*string `json:"imagesBlacklist,omitempty" tf:"images_blacklist,omitempty"` + // Name of the namespace. This is the name of the Kubernetes namespace in the cluster. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // Resource allocation for the namespace. This is a map containing the resource type and the resource value. For example, `{cpu_cores: '2', memory_MiB: '2048'}` // +kubebuilder:validation:Required ResourceAllocation map[string]*string `json:"resourceAllocation" tf:"resource_allocation,omitempty"` } @@ -93,12 +108,15 @@ type SubjectsObservation struct { type SubjectsParameters struct { + // The name of the subject. Required if 'type' is set to 'User' or 'Group'. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // The Kubernetes namespace of the subject. Required if 'type' is set to 'ServiceAccount'. // +kubebuilder:validation:Optional Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` + // The type of the subject. Can be one of the following values: `User`, `Group`, or `ServiceAccount`. // +kubebuilder:validation:Required Type *string `json:"type" tf:"type,omitempty"` } diff --git a/apis/virtual/v1alpha1/zz_cluster_types.go b/apis/virtual/v1alpha1/zz_cluster_types.go index ac12616..bc4f072 100755 --- a/apis/virtual/v1alpha1/zz_cluster_types.go +++ b/apis/virtual/v1alpha1/zz_cluster_types.go @@ -18,24 +18,39 @@ type BackupPolicyObservation struct { type BackupPolicyParameters struct { + // The ID of the backup location to use for the backup. // +kubebuilder:validation:Required BackupLocationID *string `json:"backupLocationId" tf:"backup_location_id,omitempty"` + // The list of cluster UIDs to include in the backup. If `include_all_clusters` is set to `true`, then all clusters will be included. + // +kubebuilder:validation:Optional + ClusterUids []*string `json:"clusterUids,omitempty" tf:"cluster_uids,omitempty"` + + // The number of hours after which the backup will be deleted. For example, if the expiry is set to 24, the backup will be deleted after 24 hours. // +kubebuilder:validation:Required ExpiryInHour *float64 `json:"expiryInHour" tf:"expiry_in_hour,omitempty"` + // Whether to include all clusters in the backup. If set to false, only the clusters specified in `cluster_uids` will be included. + // +kubebuilder:validation:Optional + IncludeAllClusters *bool `json:"includeAllClusters,omitempty" tf:"include_all_clusters,omitempty"` + + // Whether to include the cluster resources in the backup. If set to false, only the cluster configuration and disks will be backed up. // +kubebuilder:validation:Optional IncludeClusterResources *bool `json:"includeClusterResources,omitempty" tf:"include_cluster_resources,omitempty"` + // Whether to include the disks in the backup. If set to false, only the cluster configuration will be backed up. // +kubebuilder:validation:Optional IncludeDisks *bool `json:"includeDisks,omitempty" tf:"include_disks,omitempty"` + // The list of Kubernetes namespaces to include in the backup. If not specified, all namespaces will be included. // +kubebuilder:validation:Optional Namespaces []*string `json:"namespaces,omitempty" tf:"namespaces,omitempty"` + // Prefix for the backup name. The backup name will be of the format --. // +kubebuilder:validation:Required Prefix *string `json:"prefix" tf:"prefix,omitempty"` + // The schedule for the backup. The schedule is specified in cron format. For example, to run the backup every day at 1:00 AM, the schedule should be set to `0 1 * * *`. // +kubebuilder:validation:Required Schedule *string `json:"schedule" tf:"schedule,omitempty"` } @@ -62,33 +77,21 @@ type CloudConfigParameters struct { } type ClusterObservation struct { + + // ID of the cloud config used for the cluster. This cloud config must be of type `azure`. CloudConfigID *string `json:"cloudConfigId,omitempty" tf:"cloud_config_id,omitempty"` + // +kubebuilder:validation:Optional + ClusterProfile []ClusterProfileObservation `json:"clusterProfile,omitempty" tf:"cluster_profile,omitempty"` + ID *string `json:"id,omitempty" tf:"id,omitempty"` + // Kubeconfig for the cluster. This can be used to connect to the cluster using `kubectl`. Kubeconfig *string `json:"kubeconfig,omitempty" tf:"kubeconfig,omitempty"` LocationConfig []LocationConfigObservation `json:"locationConfig,omitempty" tf:"location_config,omitempty"` } -type ClusterPackObservation struct { -} - -type ClusterPackParameters struct { - - // +kubebuilder:validation:Required - Name *string `json:"name" tf:"name,omitempty"` - - // +kubebuilder:validation:Optional - RegistryUID *string `json:"registryUid,omitempty" tf:"registry_uid,omitempty"` - - // +kubebuilder:validation:Required - Tag *string `json:"tag" tf:"tag,omitempty"` - - // +kubebuilder:validation:Required - Values *string `json:"values" tf:"values,omitempty"` -} - type ClusterParameters struct { // +kubebuilder:validation:Optional @@ -115,17 +118,21 @@ type ClusterParameters struct { // +kubebuilder:validation:Optional Namespaces []NamespacesParameters `json:"namespaces,omitempty" tf:"namespaces,omitempty"` + // The date and time after which to patch the cluster. Prefix the time value with the respective RFC. Ex: `RFC3339: 2006-01-02T15:04:05Z07:00` // +kubebuilder:validation:Optional OsPatchAfter *string `json:"osPatchAfter,omitempty" tf:"os_patch_after,omitempty"` + // Whether to apply OS patch on boot. Default is `false`. // +kubebuilder:validation:Optional OsPatchOnBoot *bool `json:"osPatchOnBoot,omitempty" tf:"os_patch_on_boot,omitempty"` + // Cron schedule for OS patching. This must be in the form of `0 0 * * *`. // +kubebuilder:validation:Optional OsPatchSchedule *string `json:"osPatchSchedule,omitempty" tf:"os_patch_schedule,omitempty"` + // To pause and resume cluster state. Set to true to pause running cluster & false to resume it. // +kubebuilder:validation:Optional - Pack []ClusterPackParameters `json:"pack,omitempty" tf:"pack,omitempty"` + PauseCluster *bool `json:"pauseCluster,omitempty" tf:"pause_cluster,omitempty"` // +kubebuilder:validation:Optional Resources []ResourcesParameters `json:"resources,omitempty" tf:"resources,omitempty"` @@ -133,18 +140,24 @@ type ClusterParameters struct { // +kubebuilder:validation:Optional ScanPolicy []ScanPolicyParameters `json:"scanPolicy,omitempty" tf:"scan_policy,omitempty"` + // If `true`, the cluster will be created asynchronously. Default value is `false`. // +kubebuilder:validation:Optional SkipCompletion *bool `json:"skipCompletion,omitempty" tf:"skip_completion,omitempty"` + // A list of tags to be applied to the cluster. Tags must be in the form of `key:value`. // +kubebuilder:validation:Optional Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` } type ClusterProfileObservation struct { + + // +kubebuilder:validation:Optional + Pack []PackObservation `json:"pack,omitempty" tf:"pack,omitempty"` } type ClusterProfileParameters struct { + // The ID of the cluster profile. // +kubebuilder:validation:Required ID *string `json:"id" tf:"id,omitempty"` @@ -157,15 +170,18 @@ type ClusterRbacBindingObservation struct { type ClusterRbacBindingParameters struct { + // The Kubernetes namespace of the RBAC binding. Required if 'type' is set to 'RoleBinding'. // +kubebuilder:validation:Optional Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` + // The role of the RBAC binding. Required if 'type' is set to 'RoleBinding'. // +kubebuilder:validation:Optional Role map[string]*string `json:"role,omitempty" tf:"role,omitempty"` // +kubebuilder:validation:Optional Subjects []SubjectsParameters `json:"subjects,omitempty" tf:"subjects,omitempty"` + // The type of the RBAC binding. Can be one of the following values: `RoleBinding`, or `ClusterRoleBinding`. // +kubebuilder:validation:Required Type *string `json:"type" tf:"type,omitempty"` } @@ -188,13 +204,16 @@ type LocationConfigParameters struct { } type ManifestObservation struct { + UID *string `json:"uid,omitempty" tf:"uid,omitempty"` } type ManifestParameters struct { + // The content of the manifest. The content is the YAML content of the manifest. // +kubebuilder:validation:Required Content *string `json:"content" tf:"content,omitempty"` + // The name of the manifest. The name must be unique within the pack. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` } @@ -204,14 +223,23 @@ type NamespacesObservation struct { type NamespacesParameters struct { + // List of images to disallow for the namespace. For example, `['nginx:latest', 'redis:latest']` + // +kubebuilder:validation:Optional + ImagesBlacklist []*string `json:"imagesBlacklist,omitempty" tf:"images_blacklist,omitempty"` + + // Name of the namespace. This is the name of the Kubernetes namespace in the cluster. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // Resource allocation for the namespace. This is a map containing the resource type and the resource value. For example, `{cpu_cores: '2', memory_MiB: '2048'}` // +kubebuilder:validation:Required ResourceAllocation map[string]*string `json:"resourceAllocation" tf:"resource_allocation,omitempty"` } type PackObservation struct { + + // +kubebuilder:validation:Optional + Manifest []ManifestObservation `json:"manifest,omitempty" tf:"manifest,omitempty"` } type PackParameters struct { @@ -219,18 +247,26 @@ type PackParameters struct { // +kubebuilder:validation:Optional Manifest []ManifestParameters `json:"manifest,omitempty" tf:"manifest,omitempty"` + // The name of the pack. The name must be unique within the cluster profile. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // The registry UID of the pack. The registry UID is the unique identifier of the registry. // +kubebuilder:validation:Optional RegistryUID *string `json:"registryUid,omitempty" tf:"registry_uid,omitempty"` + // The tag of the pack. The tag is the version of the pack. // +kubebuilder:validation:Optional Tag *string `json:"tag,omitempty" tf:"tag,omitempty"` + // The type of the pack. The default value is `spectro`. // +kubebuilder:validation:Optional Type *string `json:"type,omitempty" tf:"type,omitempty"` + // +kubebuilder:validation:Optional + UID *string `json:"uid,omitempty" tf:"uid,omitempty"` + + // The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. // +kubebuilder:validation:Required Values *string `json:"values" tf:"values,omitempty"` } @@ -264,12 +300,15 @@ type ScanPolicyObservation struct { type ScanPolicyParameters struct { + // The schedule for configuration scan. // +kubebuilder:validation:Required ConfigurationScanSchedule *string `json:"configurationScanSchedule" tf:"configuration_scan_schedule,omitempty"` + // The schedule for conformance scan. // +kubebuilder:validation:Required ConformanceScanSchedule *string `json:"conformanceScanSchedule" tf:"conformance_scan_schedule,omitempty"` + // The schedule for penetration scan. // +kubebuilder:validation:Required PenetrationScanSchedule *string `json:"penetrationScanSchedule" tf:"penetration_scan_schedule,omitempty"` } @@ -279,12 +318,15 @@ type SubjectsObservation struct { type SubjectsParameters struct { + // The name of the subject. Required if 'type' is set to 'User' or 'Group'. // +kubebuilder:validation:Required Name *string `json:"name" tf:"name,omitempty"` + // The Kubernetes namespace of the subject. Required if 'type' is set to 'ServiceAccount'. // +kubebuilder:validation:Optional Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` + // The type of the subject. Can be one of the following values: `User`, `Group`, or `ServiceAccount`. // +kubebuilder:validation:Required Type *string `json:"type" tf:"type,omitempty"` } diff --git a/apis/virtual/v1alpha1/zz_generated.deepcopy.go b/apis/virtual/v1alpha1/zz_generated.deepcopy.go index 71f96eb..865b3cc 100644 --- a/apis/virtual/v1alpha1/zz_generated.deepcopy.go +++ b/apis/virtual/v1alpha1/zz_generated.deepcopy.go @@ -36,11 +36,27 @@ func (in *BackupPolicyParameters) DeepCopyInto(out *BackupPolicyParameters) { *out = new(string) **out = **in } + if in.ClusterUids != nil { + in, out := &in.ClusterUids, &out.ClusterUids + *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.ExpiryInHour != nil { in, out := &in.ExpiryInHour, &out.ExpiryInHour *out = new(float64) **out = **in } + if in.IncludeAllClusters != nil { + in, out := &in.IncludeAllClusters, &out.IncludeAllClusters + *out = new(bool) + **out = **in + } if in.IncludeClusterResources != nil { in, out := &in.IncludeClusterResources, &out.IncludeClusterResources *out = new(bool) @@ -139,6 +155,41 @@ func (in *CloudConfigParameters) DeepCopy() *CloudConfigParameters { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CloudInitNoCloudObservation) DeepCopyInto(out *CloudInitNoCloudObservation) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CloudInitNoCloudObservation. +func (in *CloudInitNoCloudObservation) DeepCopy() *CloudInitNoCloudObservation { + if in == nil { + return nil + } + out := new(CloudInitNoCloudObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CloudInitNoCloudParameters) DeepCopyInto(out *CloudInitNoCloudParameters) { + *out = *in + if in.UserData != nil { + in, out := &in.UserData, &out.UserData + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CloudInitNoCloudParameters. +func (in *CloudInitNoCloudParameters) DeepCopy() *CloudInitNoCloudParameters { + if in == nil { + return nil + } + out := new(CloudInitNoCloudParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Cluster) DeepCopyInto(out *Cluster) { *out = *in @@ -206,6 +257,13 @@ func (in *ClusterObservation) DeepCopyInto(out *ClusterObservation) { *out = new(string) **out = **in } + if in.ClusterProfile != nil { + in, out := &in.ClusterProfile, &out.ClusterProfile + *out = make([]ClusterProfileObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.ID != nil { in, out := &in.ID, &out.ID *out = new(string) @@ -235,56 +293,6 @@ func (in *ClusterObservation) DeepCopy() *ClusterObservation { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ClusterPackObservation) DeepCopyInto(out *ClusterPackObservation) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterPackObservation. -func (in *ClusterPackObservation) DeepCopy() *ClusterPackObservation { - if in == nil { - return nil - } - out := new(ClusterPackObservation) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ClusterPackParameters) DeepCopyInto(out *ClusterPackParameters) { - *out = *in - if in.Name != nil { - in, out := &in.Name, &out.Name - *out = new(string) - **out = **in - } - if in.RegistryUID != nil { - in, out := &in.RegistryUID, &out.RegistryUID - *out = new(string) - **out = **in - } - if in.Tag != nil { - in, out := &in.Tag, &out.Tag - *out = new(string) - **out = **in - } - if in.Values != nil { - in, out := &in.Values, &out.Values - *out = new(string) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterPackParameters. -func (in *ClusterPackParameters) DeepCopy() *ClusterPackParameters { - if in == nil { - return nil - } - out := new(ClusterPackParameters) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ClusterParameters) DeepCopyInto(out *ClusterParameters) { *out = *in @@ -353,12 +361,10 @@ func (in *ClusterParameters) DeepCopyInto(out *ClusterParameters) { *out = new(string) **out = **in } - if in.Pack != nil { - in, out := &in.Pack, &out.Pack - *out = make([]ClusterPackParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + if in.PauseCluster != nil { + in, out := &in.PauseCluster, &out.PauseCluster + *out = new(bool) + **out = **in } if in.Resources != nil { in, out := &in.Resources, &out.Resources @@ -405,6 +411,13 @@ func (in *ClusterParameters) DeepCopy() *ClusterParameters { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ClusterProfileObservation) DeepCopyInto(out *ClusterProfileObservation) { *out = *in + if in.Pack != nil { + in, out := &in.Pack, &out.Pack + *out = make([]PackObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterProfileObservation. @@ -540,6 +553,160 @@ func (in *ClusterStatus) DeepCopy() *ClusterStatus { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ContainerDiskObservation) DeepCopyInto(out *ContainerDiskObservation) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerDiskObservation. +func (in *ContainerDiskObservation) DeepCopy() *ContainerDiskObservation { + if in == nil { + return nil + } + out := new(ContainerDiskObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ContainerDiskParameters) DeepCopyInto(out *ContainerDiskParameters) { + *out = *in + if in.ImageURL != nil { + in, out := &in.ImageURL, &out.ImageURL + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerDiskParameters. +func (in *ContainerDiskParameters) DeepCopy() *ContainerDiskParameters { + if in == nil { + return nil + } + out := new(ContainerDiskParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DevicesObservation) DeepCopyInto(out *DevicesObservation) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DevicesObservation. +func (in *DevicesObservation) DeepCopy() *DevicesObservation { + if in == nil { + return nil + } + out := new(DevicesObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DevicesParameters) DeepCopyInto(out *DevicesParameters) { + *out = *in + if in.Disk != nil { + in, out := &in.Disk, &out.Disk + *out = make([]DiskParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Interface != nil { + in, out := &in.Interface, &out.Interface + *out = make([]InterfaceParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DevicesParameters. +func (in *DevicesParameters) DeepCopy() *DevicesParameters { + if in == nil { + return nil + } + out := new(DevicesParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DiskObservation) DeepCopyInto(out *DiskObservation) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DiskObservation. +func (in *DiskObservation) DeepCopy() *DiskObservation { + if in == nil { + return nil + } + out := new(DiskObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DiskParameters) DeepCopyInto(out *DiskParameters) { + *out = *in + if in.Bus != nil { + in, out := &in.Bus, &out.Bus + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DiskParameters. +func (in *DiskParameters) DeepCopy() *DiskParameters { + if in == nil { + return nil + } + out := new(DiskParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *InterfaceObservation) DeepCopyInto(out *InterfaceObservation) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InterfaceObservation. +func (in *InterfaceObservation) DeepCopy() *InterfaceObservation { + if in == nil { + return nil + } + out := new(InterfaceObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *InterfaceParameters) DeepCopyInto(out *InterfaceParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InterfaceParameters. +func (in *InterfaceParameters) DeepCopy() *InterfaceParameters { + if in == nil { + return nil + } + out := new(InterfaceParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *LocationConfigObservation) DeepCopyInto(out *LocationConfigObservation) { *out = *in @@ -600,9 +767,239 @@ func (in *LocationConfigParameters) DeepCopy() *LocationConfigParameters { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Machine) DeepCopyInto(out *Machine) { + *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 Machine. +func (in *Machine) DeepCopy() *Machine { + if in == nil { + return nil + } + out := new(Machine) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Machine) 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 *MachineList) DeepCopyInto(out *MachineList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Machine, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineList. +func (in *MachineList) DeepCopy() *MachineList { + if in == nil { + return nil + } + out := new(MachineList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *MachineList) 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 *MachineObservation) DeepCopyInto(out *MachineObservation) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineObservation. +func (in *MachineObservation) DeepCopy() *MachineObservation { + if in == nil { + return nil + } + out := new(MachineObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MachineParameters) DeepCopyInto(out *MachineParameters) { + *out = *in + if in.Annotations != nil { + in, out := &in.Annotations, &out.Annotations + *out = make(map[string]*string, len(*in)) + for key, val := range *in { + var outVal *string + if val == nil { + (*out)[key] = nil + } else { + in, out := &val, &outVal + *out = new(string) + **out = **in + } + (*out)[key] = outVal + } + } + if in.BaseVMName != nil { + in, out := &in.BaseVMName, &out.BaseVMName + *out = new(string) + **out = **in + } + if in.CPUCores != nil { + in, out := &in.CPUCores, &out.CPUCores + *out = new(float64) + **out = **in + } + if in.CloudInitUserData != nil { + in, out := &in.CloudInitUserData, &out.CloudInitUserData + *out = new(string) + **out = **in + } + if in.ClusterUID != nil { + in, out := &in.ClusterUID, &out.ClusterUID + *out = new(string) + **out = **in + } + if in.Devices != nil { + in, out := &in.Devices, &out.Devices + *out = make([]DevicesParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ImageURL != nil { + in, out := &in.ImageURL, &out.ImageURL + *out = new(string) + **out = **in + } + if in.Labels != nil { + in, out := &in.Labels, &out.Labels + *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.Memory != nil { + in, out := &in.Memory, &out.Memory + *out = new(string) + **out = **in + } + if in.Namespace != nil { + in, out := &in.Namespace, &out.Namespace + *out = new(string) + **out = **in + } + if in.NetworkSpec != nil { + in, out := &in.NetworkSpec, &out.NetworkSpec + *out = make([]NetworkSpecParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.RunOnLaunch != nil { + in, out := &in.RunOnLaunch, &out.RunOnLaunch + *out = new(bool) + **out = **in + } + if in.VMAction != nil { + in, out := &in.VMAction, &out.VMAction + *out = new(string) + **out = **in + } + if in.VMState != nil { + in, out := &in.VMState, &out.VMState + *out = new(string) + **out = **in + } + if in.VolumeSpec != nil { + in, out := &in.VolumeSpec, &out.VolumeSpec + *out = make([]VolumeSpecParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineParameters. +func (in *MachineParameters) DeepCopy() *MachineParameters { + if in == nil { + return nil + } + out := new(MachineParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MachineSpec) DeepCopyInto(out *MachineSpec) { + *out = *in + in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) + in.ForProvider.DeepCopyInto(&out.ForProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineSpec. +func (in *MachineSpec) DeepCopy() *MachineSpec { + if in == nil { + return nil + } + out := new(MachineSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MachineStatus) DeepCopyInto(out *MachineStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineStatus. +func (in *MachineStatus) DeepCopy() *MachineStatus { + if in == nil { + return nil + } + out := new(MachineStatus) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ManifestObservation) DeepCopyInto(out *ManifestObservation) { *out = *in + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManifestObservation. @@ -658,6 +1055,17 @@ func (in *NamespacesObservation) DeepCopy() *NamespacesObservation { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *NamespacesParameters) DeepCopyInto(out *NamespacesParameters) { *out = *in + if in.ImagesBlacklist != nil { + in, out := &in.ImagesBlacklist, &out.ImagesBlacklist + *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.Name != nil { in, out := &in.Name, &out.Name *out = new(string) @@ -690,9 +1098,88 @@ func (in *NamespacesParameters) DeepCopy() *NamespacesParameters { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkObservation) DeepCopyInto(out *NetworkObservation) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkObservation. +func (in *NetworkObservation) DeepCopy() *NetworkObservation { + if in == nil { + return nil + } + out := new(NetworkObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkParameters) DeepCopyInto(out *NetworkParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkParameters. +func (in *NetworkParameters) DeepCopy() *NetworkParameters { + if in == nil { + return nil + } + out := new(NetworkParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkSpecObservation) DeepCopyInto(out *NetworkSpecObservation) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkSpecObservation. +func (in *NetworkSpecObservation) DeepCopy() *NetworkSpecObservation { + if in == nil { + return nil + } + out := new(NetworkSpecObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkSpecParameters) DeepCopyInto(out *NetworkSpecParameters) { + *out = *in + if in.Network != nil { + in, out := &in.Network, &out.Network + *out = make([]NetworkParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkSpecParameters. +func (in *NetworkSpecParameters) DeepCopy() *NetworkSpecParameters { + if in == nil { + return nil + } + out := new(NetworkSpecParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *PackObservation) DeepCopyInto(out *PackObservation) { *out = *in + if in.Manifest != nil { + in, out := &in.Manifest, &out.Manifest + *out = make([]ManifestObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PackObservation. @@ -735,6 +1222,11 @@ func (in *PackParameters) DeepCopyInto(out *PackParameters) { *out = new(string) **out = **in } + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(string) + **out = **in + } if in.Values != nil { in, out := &in.Values, &out.Values *out = new(string) @@ -901,3 +1393,89 @@ func (in *SubjectsParameters) DeepCopy() *SubjectsParameters { in.DeepCopyInto(out) return out } + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VolumeObservation) DeepCopyInto(out *VolumeObservation) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeObservation. +func (in *VolumeObservation) DeepCopy() *VolumeObservation { + if in == nil { + return nil + } + out := new(VolumeObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VolumeParameters) DeepCopyInto(out *VolumeParameters) { + *out = *in + if in.CloudInitNoCloud != nil { + in, out := &in.CloudInitNoCloud, &out.CloudInitNoCloud + *out = make([]CloudInitNoCloudParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ContainerDisk != nil { + in, out := &in.ContainerDisk, &out.ContainerDisk + *out = make([]ContainerDiskParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeParameters. +func (in *VolumeParameters) DeepCopy() *VolumeParameters { + if in == nil { + return nil + } + out := new(VolumeParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VolumeSpecObservation) DeepCopyInto(out *VolumeSpecObservation) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeSpecObservation. +func (in *VolumeSpecObservation) DeepCopy() *VolumeSpecObservation { + if in == nil { + return nil + } + out := new(VolumeSpecObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VolumeSpecParameters) DeepCopyInto(out *VolumeSpecParameters) { + *out = *in + if in.Volume != nil { + in, out := &in.Volume, &out.Volume + *out = make([]VolumeParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeSpecParameters. +func (in *VolumeSpecParameters) DeepCopy() *VolumeSpecParameters { + if in == nil { + return nil + } + out := new(VolumeSpecParameters) + in.DeepCopyInto(out) + return out +} diff --git a/apis/virtual/v1alpha1/zz_generated.managed.go b/apis/virtual/v1alpha1/zz_generated.managed.go index cb9a75e..ca7b925 100644 --- a/apis/virtual/v1alpha1/zz_generated.managed.go +++ b/apis/virtual/v1alpha1/zz_generated.managed.go @@ -72,3 +72,69 @@ func (mg *Cluster) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetail func (mg *Cluster) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { mg.Spec.WriteConnectionSecretToReference = r } + +// GetCondition of this Machine. +func (mg *Machine) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this Machine. +func (mg *Machine) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetProviderConfigReference of this Machine. +func (mg *Machine) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +/* +GetProviderReference of this Machine. +Deprecated: Use GetProviderConfigReference. +*/ +func (mg *Machine) GetProviderReference() *xpv1.Reference { + return mg.Spec.ProviderReference +} + +// GetPublishConnectionDetailsTo of this Machine. +func (mg *Machine) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this Machine. +func (mg *Machine) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this Machine. +func (mg *Machine) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this Machine. +func (mg *Machine) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetProviderConfigReference of this Machine. +func (mg *Machine) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +/* +SetProviderReference of this Machine. +Deprecated: Use SetProviderConfigReference. +*/ +func (mg *Machine) SetProviderReference(r *xpv1.Reference) { + mg.Spec.ProviderReference = r +} + +// SetPublishConnectionDetailsTo of this Machine. +func (mg *Machine) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this Machine. +func (mg *Machine) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} diff --git a/apis/virtual/v1alpha1/zz_generated.managedlist.go b/apis/virtual/v1alpha1/zz_generated.managedlist.go index a35003e..3670a83 100644 --- a/apis/virtual/v1alpha1/zz_generated.managedlist.go +++ b/apis/virtual/v1alpha1/zz_generated.managedlist.go @@ -15,3 +15,12 @@ func (l *ClusterList) GetItems() []resource.Managed { } return items } + +// GetItems of this MachineList. +func (l *MachineList) 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/virtual/v1alpha1/zz_generated_terraformed.go b/apis/virtual/v1alpha1/zz_generated_terraformed.go index ec6f84f..d2a67f7 100755 --- a/apis/virtual/v1alpha1/zz_generated_terraformed.go +++ b/apis/virtual/v1alpha1/zz_generated_terraformed.go @@ -86,3 +86,77 @@ func (tr *Cluster) LateInitialize(attrs []byte) (bool, error) { func (tr *Cluster) GetTerraformSchemaVersion() int { return 2 } + +// GetTerraformResourceType returns Terraform resource type for this Machine +func (mg *Machine) GetTerraformResourceType() string { + return "spectrocloud_virtual_machine" +} + +// GetConnectionDetailsMapping for this Machine +func (tr *Machine) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this Machine +func (tr *Machine) 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 Machine +func (tr *Machine) 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 Machine +func (tr *Machine) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this Machine +func (tr *Machine) 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 Machine +func (tr *Machine) 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) +} + +// LateInitialize this Machine using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *Machine) LateInitialize(attrs []byte) (bool, error) { + params := &MachineParameters{} + 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 *Machine) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/virtual/v1alpha1/zz_machine_types.go b/apis/virtual/v1alpha1/zz_machine_types.go new file mode 100755 index 0000000..df4152e --- /dev/null +++ b/apis/virtual/v1alpha1/zz_machine_types.go @@ -0,0 +1,235 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// 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 CloudInitNoCloudObservation struct { +} + +type CloudInitNoCloudParameters struct { + + // The user data to use for the cloud-init no cloud disk. This can be a local file path, a remote URL, or a registry URL. + // +kubebuilder:validation:Required + UserData *string `json:"userData" tf:"user_data,omitempty"` +} + +type ContainerDiskObservation struct { +} + +type ContainerDiskParameters struct { + + // The URL of the container image to use as the disk. This can be a local file path, a remote URL, or a registry URL. + // +kubebuilder:validation:Required + ImageURL *string `json:"imageUrl" tf:"image_url,omitempty"` +} + +type DevicesObservation struct { +} + +type DevicesParameters struct { + + // +kubebuilder:validation:Required + Disk []DiskParameters `json:"disk" tf:"disk,omitempty"` + + // +kubebuilder:validation:Required + Interface []InterfaceParameters `json:"interface" tf:"interface,omitempty"` +} + +type DiskObservation struct { +} + +type DiskParameters struct { + + // The bus type of the disk. This is the name that will be used to identify the disk in the guest OS. + // +kubebuilder:validation:Required + Bus *string `json:"bus" tf:"bus,omitempty"` + + // The name of the disk. This is the name that will be used to identify the disk in the guest OS. + // +kubebuilder:validation:Required + Name *string `json:"name" tf:"name,omitempty"` +} + +type InterfaceObservation struct { +} + +type InterfaceParameters struct { + + // The name of the interface. This is the name that will be used to identify the device interface in the guest OS. + // +kubebuilder:validation:Required + Name *string `json:"name" tf:"name,omitempty"` +} + +type MachineObservation struct { + ID *string `json:"id,omitempty" tf:"id,omitempty"` +} + +type MachineParameters struct { + + // The annotations of the virtual machine. + // +kubebuilder:validation:Optional + Annotations map[string]*string `json:"annotations,omitempty" tf:"annotations,omitempty"` + + // The name of the source virtual machine that a clone will be created of. + // +kubebuilder:validation:Optional + BaseVMName *string `json:"baseVmName,omitempty" tf:"base_vm_name,omitempty"` + + // The number of CPU cores to be allocated to the virtual machine. Default value is `1`. + // +kubebuilder:validation:Optional + CPUCores *float64 `json:"cpuCores,omitempty" tf:"cpu_cores,omitempty"` + + // The cloud-init user data to be used for the virtual machine. Default value is `#cloud-config + // ssh_pwauth: True + // chpasswd: { expire: False } + // password: spectro + // disable_root: false + // `. + // +kubebuilder:validation:Optional + CloudInitUserData *string `json:"cloudInitUserData,omitempty" tf:"cloud_init_user_data,omitempty"` + + // The cluster UID to which the virtual machine belongs to. + // +kubebuilder:validation:Required + ClusterUID *string `json:"clusterUid" tf:"cluster_uid,omitempty"` + + // +kubebuilder:validation:Optional + Devices []DevicesParameters `json:"devices,omitempty" tf:"devices,omitempty"` + + // The URL of the VM template image to be used for the virtual machine. + // +kubebuilder:validation:Optional + ImageURL *string `json:"imageUrl,omitempty" tf:"image_url,omitempty"` + + // The labels of the virtual machine. + // +kubebuilder:validation:Optional + Labels []*string `json:"labels,omitempty" tf:"labels,omitempty"` + + // The amount of memory to be allocated to the virtual machine. Default value is `2G`. + // +kubebuilder:validation:Optional + Memory *string `json:"memory,omitempty" tf:"memory,omitempty"` + + // The namespace of the virtual machine. + // +kubebuilder:validation:Required + Namespace *string `json:"namespace" tf:"namespace,omitempty"` + + // +kubebuilder:validation:Optional + NetworkSpec []NetworkSpecParameters `json:"networkSpec,omitempty" tf:"network_spec,omitempty"` + + // If set to `true`, the virtual machine will be started when the cluster is launched. Default value is `true`. + // +kubebuilder:validation:Optional + RunOnLaunch *bool `json:"runOnLaunch,omitempty" tf:"run_on_launch,omitempty"` + + // The action to be performed on the virtual machine. Valid values are: `start`, `stop`, `restart`, `pause`, `resume`, `migrate`. Default value is `start`. + // +kubebuilder:validation:Optional + VMAction *string `json:"vmAction,omitempty" tf:"vm_action,omitempty"` + + // The state of the virtual machine. The virtual machine can be in one of the following states: `running`, `stopped`, `paused`, `migrating`, `error`, `unknown`. + // +kubebuilder:validation:Optional + VMState *string `json:"vmState,omitempty" tf:"vm_state,omitempty"` + + // The volume specification for the virtual machine. + // +kubebuilder:validation:Optional + VolumeSpec []VolumeSpecParameters `json:"volumeSpec,omitempty" tf:"volume_spec,omitempty"` +} + +type NetworkObservation struct { +} + +type NetworkParameters struct { + + // The name of the network to be attached to the virtual machine. + // +kubebuilder:validation:Required + Name *string `json:"name" tf:"name,omitempty"` +} + +type NetworkSpecObservation struct { +} + +type NetworkSpecParameters struct { + + // The network specification for the virtual machine. + // +kubebuilder:validation:Optional + Network []NetworkParameters `json:"network,omitempty" tf:"network,omitempty"` +} + +type VolumeObservation struct { +} + +type VolumeParameters struct { + + // Used to specify a cloud-init `noCloud` image. The image is expected to contain a disk image in a supported format. The disk image is extracted from the cloud-init `noCloud `image and used as the disk for the VM + // +kubebuilder:validation:Optional + CloudInitNoCloud []CloudInitNoCloudParameters `json:"cloudInitNoCloud,omitempty" tf:"cloud_init_no_cloud,omitempty"` + + // A container disk is a disk that is backed by a container image. The container image is expected to contain a disk image in a supported format. The disk image is extracted from the container image and used as the disk for the VM. + // +kubebuilder:validation:Optional + ContainerDisk []ContainerDiskParameters `json:"containerDisk,omitempty" tf:"container_disk,omitempty"` + + // +kubebuilder:validation:Required + Name *string `json:"name" tf:"name,omitempty"` +} + +type VolumeSpecObservation struct { +} + +type VolumeSpecParameters struct { + + // +kubebuilder:validation:Optional + Volume []VolumeParameters `json:"volume,omitempty" tf:"volume,omitempty"` +} + +// MachineSpec defines the desired state of Machine +type MachineSpec struct { + v1.ResourceSpec `json:",inline"` + ForProvider MachineParameters `json:"forProvider"` +} + +// MachineStatus defines the observed state of Machine. +type MachineStatus struct { + v1.ResourceStatus `json:",inline"` + AtProvider MachineObservation `json:"atProvider,omitempty"` +} + +// +kubebuilder:object:root=true + +// Machine is the Schema for the Machines API. +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].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:subresource:status +// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,palette} +type Machine struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec MachineSpec `json:"spec"` + Status MachineStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// MachineList contains a list of Machines +type MachineList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Machine `json:"items"` +} + +// Repository type metadata. +var ( + Machine_Kind = "Machine" + Machine_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: Machine_Kind}.String() + Machine_KindAPIVersion = Machine_Kind + "." + CRDGroupVersion.String() + Machine_GroupVersionKind = CRDGroupVersion.WithKind(Machine_Kind) +) + +func init() { + SchemeBuilder.Register(&Machine{}, &MachineList{}) +} diff --git a/config/schema.json b/config/schema.json index 1fe5582..fb55068 100644 --- a/config/schema.json +++ b/config/schema.json @@ -1 +1 @@ -{"format_version":"1.0","provider_schemas":{"registry.terraform.io/spectrocloud/spectrocloud":{"provider":{"version":0,"block":{"attributes":{"api_key":{"type":"string","description":"The Spectro Cloud API key. Can also be set with the `SPECTROCLOUD_API_KEY` environment variable.","description_kind":"plain","optional":true,"sensitive":true},"host":{"type":"string","description":"The Spectro Cloud API host url. Can also be set with the `SPECTROCLOUD_HOST` environment variable. Defaults to https://api.spectrocloud.com","description_kind":"plain","optional":true},"ignore_insecure_tls_error":{"type":"bool","description":"Ignore insecure TLS errors for Spectro Cloud API endpoints. Defaults to false.","description_kind":"plain","optional":true},"password":{"type":"string","description":"The Spectro Cloud user password. Can also be set with the `SPECTROCLOUD_PASSWORD` environment variable.","description_kind":"plain","optional":true,"sensitive":true},"project_name":{"type":"string","description":"The Spectro Cloud project name.","description_kind":"plain","optional":true},"retry_attempts":{"type":"number","description":"Number of retry attempts. Can also be set with the `SPECTROCLOUD_RETRY_ATTEMPTS` environment variable. Defaults to 10.","description_kind":"plain","optional":true},"trace":{"type":"bool","description":"Enable HTTP request tracing. Can also be set with the `SPECTROCLOUD_TRACE` environment variable. To enable Terraform debug logging, set `TF_LOG=DEBUG`. Visit the Terraform documentation to learn more about Terraform [debugging](https://developer.hashicorp.com/terraform/plugin/log/managing).","description_kind":"plain","optional":true},"username":{"type":"string","description":"The Spectro Cloud username. Can also be set with the `SPECTROCLOUD_USERNAME` environment variable.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"resource_schemas":{"spectrocloud_addon_deployment":{"version":2,"block":{"attributes":{"apply_setting":{"type":"string","description_kind":"plain","optional":true},"cluster_uid":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"cluster_profile":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description_kind":"plain","required":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"registry_uid":{"type":"string","description_kind":"plain","optional":true},"tag":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","optional":true},"uid":{"type":"string","description_kind":"plain","optional":true,"computed":true},"values":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_alert":{"version":2,"block":{"attributes":{"alert_all_users":{"type":"bool","description_kind":"plain","optional":true},"component":{"type":"string","description_kind":"plain","required":true},"created_by":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"identifiers":{"type":["set","string"],"description_kind":"plain","optional":true},"is_active":{"type":"bool","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","required":true}},"block_types":{"http":{"nesting_mode":"list","block":{"attributes":{"body":{"type":"string","description_kind":"plain","required":true},"headers":{"type":["map","string"],"description_kind":"plain","optional":true},"method":{"type":"string","description_kind":"plain","required":true},"url":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"status":{"nesting_mode":"list","block":{"attributes":{"is_succeeded":{"type":"bool","description_kind":"plain","optional":true},"message":{"type":"string","description_kind":"plain","optional":true},"time":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_appliance":{"version":2,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"pairing_key":{"type":"string","description_kind":"plain","optional":true},"tags":{"type":["map","string"],"description_kind":"plain","optional":true},"uid":{"type":"string","description_kind":"plain","required":true},"wait":{"type":"bool","description_kind":"plain","optional":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_application":{"version":2,"block":{"attributes":{"application_profile_uid":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true},"tags":{"type":["set","string"],"description_kind":"plain","optional":true}},"block_types":{"config":{"nesting_mode":"list","block":{"attributes":{"cluster_group_uid":{"type":"string","description_kind":"plain","optional":true},"cluster_name":{"type":"string","description_kind":"plain","optional":true},"cluster_uid":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"limits":{"nesting_mode":"list","block":{"attributes":{"cpu":{"type":"number","description_kind":"plain","optional":true},"memory":{"type":"number","description_kind":"plain","optional":true},"storage":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_application_profile":{"version":0,"block":{"attributes":{"cloud":{"type":"string","description":"The cloud provider the profile is eligible for. Default value is `all`.","description_kind":"plain","optional":true},"context":{"type":"string","description":"Context of the profile. Allowed values are `project`, `cluster`, or `namespace`. Default value is `project`.","description_kind":"plain","optional":true},"description":{"type":"string","description":"Description of the profile.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the application profile","description_kind":"plain","required":true},"tags":{"type":["set","string"],"description":"A list of tags to be applied to the application profile. Tags must be in the form of `key:value`.","description_kind":"plain","optional":true},"version":{"type":"string","description":"Version of the profile. Default value is 1.0.0.","description_kind":"plain","optional":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"install_order":{"type":"number","description":"The installation priority order of the app profile. The order of priority goes from lowest number to highest number. For example, a value of `-3` would be installed before an app profile with a higher number value. No upper and lower limits exist, and you may specify positive and negative integers. The default value is `0`. ","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the specified pack.","description_kind":"plain","required":true},"properties":{"type":["map","string"],"description":"The various properties required by different database tiers eg: `databaseName` and `databaseVolumeSize` size for Redis etc.","description_kind":"plain","optional":true},"registry_uid":{"type":"string","description":"The unique id of the registry to be used for the pack.","description_kind":"plain","optional":true,"computed":true},"source_app_tier":{"type":"string","description":"The unique id of the pack to be used as the source for the pack.","description_kind":"plain","optional":true},"tag":{"type":"string","description":"The identifier or version to label the pack.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of Pack. Allowed values are `container`, `helm`, `manifest`, or `operator-instance`.","description_kind":"plain","optional":true},"uid":{"type":"string","description":"The unique id of the pack. This is a computed field and is not required to be set.","description_kind":"plain","optional":true,"computed":true},"values":{"type":"string","description":"The values to be used for the pack. This is a stringified JSON object.","description_kind":"plain","optional":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description":"The content of the manifest.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the manifest.","description_kind":"plain","required":true},"uid":{"type":"string","description_kind":"plain","computed":true}},"description":"The manifest of the pack.","description_kind":"plain"}}},"description":"A list of packs to be applied to the application profile.","description_kind":"plain"},"min_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Provisions an Application Profile. App Profiles are templates created with preconfigured services. You can create as many profiles as required, with multiple tiers serving different functionalities per use case.","description_kind":"plain"}},"spectrocloud_backup_storage_location":{"version":2,"block":{"attributes":{"bucket_name":{"type":"string","description_kind":"plain","required":true},"ca_cert":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_default":{"type":"bool","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"region":{"type":"string","description_kind":"plain","required":true}},"block_types":{"s3":{"nesting_mode":"list","block":{"attributes":{"access_key":{"type":"string","description_kind":"plain","optional":true},"arn":{"type":"string","description_kind":"plain","optional":true},"credential_type":{"type":"string","description_kind":"plain","required":true},"external_id":{"type":"string","description_kind":"plain","optional":true},"s3_force_path_style":{"type":"bool","description_kind":"plain","optional":true},"s3_url":{"type":"string","description_kind":"plain","optional":true},"secret_key":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_cloudaccount_aws":{"version":0,"block":{"attributes":{"arn":{"type":"string","description_kind":"plain","optional":true},"aws_access_key":{"type":"string","description_kind":"plain","optional":true},"aws_secret_key":{"type":"string","description_kind":"plain","optional":true,"sensitive":true},"context":{"type":"string","description_kind":"plain","optional":true},"external_id":{"type":"string","description_kind":"plain","optional":true,"sensitive":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"spectrocloud_cloudaccount_azure":{"version":0,"block":{"attributes":{"azure_client_id":{"type":"string","description_kind":"plain","required":true},"azure_client_secret":{"type":"string","description_kind":"plain","required":true,"sensitive":true},"azure_tenant_id":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"spectrocloud_cloudaccount_gcp":{"version":0,"block":{"attributes":{"gcp_json_credentials":{"type":"string","description_kind":"plain","required":true,"sensitive":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"spectrocloud_cloudaccount_maas":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"maas_api_endpoint":{"type":"string","description_kind":"plain","optional":true},"maas_api_key":{"type":"string","description_kind":"plain","optional":true,"sensitive":true},"name":{"type":"string","description_kind":"plain","required":true},"private_cloud_gateway_id":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"spectrocloud_cloudaccount_openstack":{"version":0,"block":{"attributes":{"ca_certificate":{"type":"string","description_kind":"plain","optional":true},"default_domain":{"type":"string","description_kind":"plain","required":true},"default_project":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"identity_endpoint":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"openstack_allow_insecure":{"type":"bool","description_kind":"plain","optional":true},"openstack_password":{"type":"string","description_kind":"plain","required":true,"sensitive":true},"openstack_username":{"type":"string","description_kind":"plain","required":true},"parent_region":{"type":"string","description_kind":"plain","required":true},"private_cloud_gateway_id":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"spectrocloud_cloudaccount_tencent":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true},"tencent_secret_id":{"type":"string","description_kind":"plain","optional":true},"tencent_secret_key":{"type":"string","description_kind":"plain","optional":true,"sensitive":true}},"description_kind":"plain"}},"spectrocloud_cluster_aks":{"version":2,"block":{"attributes":{"apply_setting":{"type":"string","description_kind":"plain","optional":true},"cloud_account_id":{"type":"string","description_kind":"plain","required":true},"cloud_config_id":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kubeconfig":{"type":"string","description_kind":"plain","computed":true},"location_config":{"type":["list",["object",{"country_code":"string","country_name":"string","latitude":"number","longitude":"number","region_code":"string","region_name":"string"}]],"description_kind":"plain","computed":true},"name":{"type":"string","description_kind":"plain","required":true},"os_patch_after":{"type":"string","description_kind":"plain","optional":true},"os_patch_on_boot":{"type":"bool","description_kind":"plain","optional":true},"os_patch_schedule":{"type":"string","description_kind":"plain","optional":true},"skip_completion":{"type":"bool","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description_kind":"plain","optional":true}},"block_types":{"backup_policy":{"nesting_mode":"list","block":{"attributes":{"backup_location_id":{"type":"string","description_kind":"plain","required":true},"expiry_in_hour":{"type":"number","description_kind":"plain","required":true},"include_cluster_resources":{"type":"bool","description_kind":"plain","optional":true},"include_disks":{"type":"bool","description_kind":"plain","optional":true},"namespaces":{"type":["set","string"],"description_kind":"plain","optional":true},"prefix":{"type":"string","description_kind":"plain","required":true},"schedule":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"cloud_config":{"nesting_mode":"list","block":{"attributes":{"region":{"type":"string","description_kind":"plain","required":true},"resource_group":{"type":"string","description_kind":"plain","required":true},"ssh_key":{"type":"string","description_kind":"plain","required":true},"subscription_id":{"type":"string","description_kind":"plain","required":true},"vnet_cidr_block":{"type":"string","description_kind":"plain","optional":true},"vnet_name":{"type":"string","description_kind":"plain","optional":true},"vnet_resource_group":{"type":"string","description_kind":"plain","optional":true},"worker_cidr":{"type":"string","description_kind":"plain","optional":true},"worker_subnet_name":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"cluster_profile":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description_kind":"plain","required":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"registry_uid":{"type":"string","description_kind":"plain","optional":true},"tag":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","optional":true},"values":{"type":"string","description_kind":"plain","required":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"cluster_rbac_binding":{"nesting_mode":"list","block":{"attributes":{"namespace":{"type":"string","description_kind":"plain","optional":true},"role":{"type":["map","string"],"description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"block_types":{"subjects":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"host_config":{"nesting_mode":"list","block":{"attributes":{"external_traffic_policy":{"type":"string","description":"The external traffic policy for the cluster.","description_kind":"plain","optional":true},"host_endpoint_type":{"type":"string","description":"The type of endpoint for the cluster. Can be either 'Ingress' or 'LoadBalancer'. The default is 'Ingress'.","description_kind":"plain","optional":true},"ingress_host":{"type":"string","description":"The host for the Ingress endpoint. Required if 'host_endpoint_type' is set to 'Ingress'.","description_kind":"plain","optional":true},"load_balancer_source_ranges":{"type":"string","description":"The source ranges for the load balancer. Required if 'host_endpoint_type' is set to 'LoadBalancer'.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"machine_pool":{"nesting_mode":"list","block":{"attributes":{"additional_labels":{"type":["map","string"],"description_kind":"plain","optional":true},"count":{"type":"number","description_kind":"plain","required":true},"disk_size_gb":{"type":"number","description_kind":"plain","required":true},"instance_type":{"type":"string","description_kind":"plain","required":true},"is_system_node_pool":{"type":"bool","description_kind":"plain","required":true},"max":{"type":"number","description_kind":"plain","optional":true},"min":{"type":"number","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"storage_account_type":{"type":"string","description_kind":"plain","required":true},"update_strategy":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"taints":{"nesting_mode":"list","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"}}},"description_kind":"plain"},"min_items":1},"namespaces":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"resource_allocation":{"type":["map","string"],"description_kind":"plain","required":true}},"description_kind":"plain"}},"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"registry_uid":{"type":"string","description_kind":"plain","optional":true},"tag":{"type":"string","description_kind":"plain","required":true},"values":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"scan_policy":{"nesting_mode":"list","block":{"attributes":{"configuration_scan_schedule":{"type":"string","description_kind":"plain","required":true},"conformance_scan_schedule":{"type":"string","description_kind":"plain","required":true},"penetration_scan_schedule":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_cluster_aws":{"version":2,"block":{"attributes":{"apply_setting":{"type":"string","description_kind":"plain","optional":true},"cloud_account_id":{"type":"string","description_kind":"plain","required":true},"cloud_config_id":{"type":"string","description_kind":"plain","computed":true},"cluster_profile_id":{"type":"string","description_kind":"plain","deprecated":true,"optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kubeconfig":{"type":"string","description_kind":"plain","computed":true},"location_config":{"type":["list",["object",{"country_code":"string","country_name":"string","latitude":"number","longitude":"number","region_code":"string","region_name":"string"}]],"description_kind":"plain","computed":true},"name":{"type":"string","description_kind":"plain","required":true},"os_patch_after":{"type":"string","description_kind":"plain","optional":true},"os_patch_on_boot":{"type":"bool","description_kind":"plain","optional":true},"os_patch_schedule":{"type":"string","description_kind":"plain","optional":true},"skip_completion":{"type":"bool","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description_kind":"plain","optional":true}},"block_types":{"backup_policy":{"nesting_mode":"list","block":{"attributes":{"backup_location_id":{"type":"string","description_kind":"plain","required":true},"expiry_in_hour":{"type":"number","description_kind":"plain","required":true},"include_cluster_resources":{"type":"bool","description_kind":"plain","optional":true},"include_disks":{"type":"bool","description_kind":"plain","optional":true},"namespaces":{"type":["set","string"],"description_kind":"plain","optional":true},"prefix":{"type":"string","description_kind":"plain","required":true},"schedule":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"cloud_config":{"nesting_mode":"list","block":{"attributes":{"region":{"type":"string","description_kind":"plain","required":true},"ssh_key_name":{"type":"string","description_kind":"plain","required":true},"vpc_id":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"cluster_profile":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description_kind":"plain","required":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"registry_uid":{"type":"string","description_kind":"plain","optional":true},"tag":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","optional":true},"values":{"type":"string","description_kind":"plain","required":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"cluster_rbac_binding":{"nesting_mode":"list","block":{"attributes":{"namespace":{"type":"string","description_kind":"plain","optional":true},"role":{"type":["map","string"],"description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"block_types":{"subjects":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"host_config":{"nesting_mode":"list","block":{"attributes":{"external_traffic_policy":{"type":"string","description":"The external traffic policy for the cluster.","description_kind":"plain","optional":true},"host_endpoint_type":{"type":"string","description":"The type of endpoint for the cluster. Can be either 'Ingress' or 'LoadBalancer'. The default is 'Ingress'.","description_kind":"plain","optional":true},"ingress_host":{"type":"string","description":"The host for the Ingress endpoint. Required if 'host_endpoint_type' is set to 'Ingress'.","description_kind":"plain","optional":true},"load_balancer_source_ranges":{"type":"string","description":"The source ranges for the load balancer. Required if 'host_endpoint_type' is set to 'LoadBalancer'.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"machine_pool":{"nesting_mode":"set","block":{"attributes":{"additional_labels":{"type":["map","string"],"description_kind":"plain","optional":true},"az_subnets":{"type":["map","string"],"description":"Mutually exclusive with `azs`. Use `az_subnets` for Static provisioning.","description_kind":"plain","optional":true},"azs":{"type":["set","string"],"description":"Mutually exclusive with `az_subnets`. Use `azs` for Dynamic provisioning.","description_kind":"plain","optional":true},"capacity_type":{"type":"string","description":"Capacity type is an instance type, can be 'on-demand' or 'spot'. Defaults to 'on-demand'.","description_kind":"plain","optional":true},"control_plane":{"type":"bool","description_kind":"plain","optional":true},"control_plane_as_worker":{"type":"bool","description_kind":"plain","optional":true},"count":{"type":"number","description_kind":"plain","required":true},"disk_size_gb":{"type":"number","description_kind":"plain","optional":true},"instance_type":{"type":"string","description_kind":"plain","required":true},"max_price":{"type":"string","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"update_strategy":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"taints":{"nesting_mode":"list","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"}}},"description_kind":"plain"},"min_items":1},"namespaces":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"resource_allocation":{"type":["map","string"],"description_kind":"plain","required":true}},"description_kind":"plain"}},"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"registry_uid":{"type":"string","description_kind":"plain","optional":true},"tag":{"type":"string","description_kind":"plain","required":true},"values":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"scan_policy":{"nesting_mode":"list","block":{"attributes":{"configuration_scan_schedule":{"type":"string","description_kind":"plain","required":true},"conformance_scan_schedule":{"type":"string","description_kind":"plain","required":true},"penetration_scan_schedule":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_cluster_azure":{"version":0,"block":{"attributes":{"apply_setting":{"type":"string","description_kind":"plain","optional":true},"cloud_account_id":{"type":"string","description_kind":"plain","required":true},"cloud_config_id":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kubeconfig":{"type":"string","description_kind":"plain","computed":true},"location_config":{"type":["list",["object",{"country_code":"string","country_name":"string","latitude":"number","longitude":"number","region_code":"string","region_name":"string"}]],"description_kind":"plain","computed":true},"name":{"type":"string","description_kind":"plain","required":true},"os_patch_after":{"type":"string","description_kind":"plain","optional":true},"os_patch_on_boot":{"type":"bool","description_kind":"plain","optional":true},"os_patch_schedule":{"type":"string","description_kind":"plain","optional":true},"skip_completion":{"type":"bool","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description_kind":"plain","optional":true}},"block_types":{"backup_policy":{"nesting_mode":"list","block":{"attributes":{"backup_location_id":{"type":"string","description_kind":"plain","required":true},"expiry_in_hour":{"type":"number","description_kind":"plain","required":true},"include_cluster_resources":{"type":"bool","description_kind":"plain","optional":true},"include_disks":{"type":"bool","description_kind":"plain","optional":true},"namespaces":{"type":["set","string"],"description_kind":"plain","optional":true},"prefix":{"type":"string","description_kind":"plain","required":true},"schedule":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"cloud_config":{"nesting_mode":"list","block":{"attributes":{"region":{"type":"string","description_kind":"plain","required":true},"resource_group":{"type":"string","description_kind":"plain","required":true},"ssh_key":{"type":"string","description_kind":"plain","required":true},"subscription_id":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"cluster_profile":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description_kind":"plain","required":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"registry_uid":{"type":"string","description_kind":"plain","optional":true},"tag":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","optional":true},"values":{"type":"string","description_kind":"plain","required":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"cluster_rbac_binding":{"nesting_mode":"list","block":{"attributes":{"namespace":{"type":"string","description_kind":"plain","optional":true},"role":{"type":["map","string"],"description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"block_types":{"subjects":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"host_config":{"nesting_mode":"list","block":{"attributes":{"external_traffic_policy":{"type":"string","description":"The external traffic policy for the cluster.","description_kind":"plain","optional":true},"host_endpoint_type":{"type":"string","description":"The type of endpoint for the cluster. Can be either 'Ingress' or 'LoadBalancer'. The default is 'Ingress'.","description_kind":"plain","optional":true},"ingress_host":{"type":"string","description":"The host for the Ingress endpoint. Required if 'host_endpoint_type' is set to 'Ingress'.","description_kind":"plain","optional":true},"load_balancer_source_ranges":{"type":"string","description":"The source ranges for the load balancer. Required if 'host_endpoint_type' is set to 'LoadBalancer'.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"machine_pool":{"nesting_mode":"set","block":{"attributes":{"additional_labels":{"type":["map","string"],"description_kind":"plain","optional":true},"azs":{"type":["set","string"],"description_kind":"plain","required":true},"control_plane":{"type":"bool","description_kind":"plain","optional":true},"control_plane_as_worker":{"type":"bool","description_kind":"plain","optional":true},"count":{"type":"number","description_kind":"plain","required":true},"instance_type":{"type":"string","description_kind":"plain","required":true},"is_system_node_pool":{"type":"bool","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"os_type":{"type":"string","description_kind":"plain","optional":true},"update_strategy":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"disk":{"nesting_mode":"list","block":{"attributes":{"size_gb":{"type":"number","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"taints":{"nesting_mode":"list","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"}}},"description_kind":"plain"},"min_items":1},"namespaces":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"resource_allocation":{"type":["map","string"],"description_kind":"plain","required":true}},"description_kind":"plain"}},"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"registry_uid":{"type":"string","description_kind":"plain","optional":true},"tag":{"type":"string","description_kind":"plain","required":true},"values":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"scan_policy":{"nesting_mode":"list","block":{"attributes":{"configuration_scan_schedule":{"type":"string","description_kind":"plain","required":true},"conformance_scan_schedule":{"type":"string","description_kind":"plain","required":true},"penetration_scan_schedule":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_cluster_edge":{"version":2,"block":{"attributes":{"apply_setting":{"type":"string","description_kind":"plain","optional":true},"cloud_account_id":{"type":"string","description_kind":"plain","optional":true},"cloud_config_id":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kubeconfig":{"type":"string","description_kind":"plain","computed":true},"name":{"type":"string","description_kind":"plain","required":true},"os_patch_after":{"type":"string","description_kind":"plain","optional":true},"os_patch_on_boot":{"type":"bool","description_kind":"plain","optional":true},"os_patch_schedule":{"type":"string","description_kind":"plain","optional":true},"skip_completion":{"type":"bool","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description_kind":"plain","optional":true}},"block_types":{"backup_policy":{"nesting_mode":"list","block":{"attributes":{"backup_location_id":{"type":"string","description_kind":"plain","required":true},"expiry_in_hour":{"type":"number","description_kind":"plain","required":true},"include_cluster_resources":{"type":"bool","description_kind":"plain","optional":true},"include_disks":{"type":"bool","description_kind":"plain","optional":true},"namespaces":{"type":["set","string"],"description_kind":"plain","optional":true},"prefix":{"type":"string","description_kind":"plain","required":true},"schedule":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"cloud_config":{"nesting_mode":"list","block":{"attributes":{"ssh_key":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"cluster_profile":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description_kind":"plain","required":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"registry_uid":{"type":"string","description_kind":"plain","optional":true},"tag":{"type":"string","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","optional":true},"values":{"type":"string","description_kind":"plain","required":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"cluster_rbac_binding":{"nesting_mode":"list","block":{"attributes":{"namespace":{"type":"string","description_kind":"plain","optional":true},"role":{"type":["map","string"],"description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"block_types":{"subjects":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"host_config":{"nesting_mode":"list","block":{"attributes":{"external_traffic_policy":{"type":"string","description":"The external traffic policy for the cluster.","description_kind":"plain","optional":true},"host_endpoint_type":{"type":"string","description":"The type of endpoint for the cluster. Can be either 'Ingress' or 'LoadBalancer'. The default is 'Ingress'.","description_kind":"plain","optional":true},"ingress_host":{"type":"string","description":"The host for the Ingress endpoint. Required if 'host_endpoint_type' is set to 'Ingress'.","description_kind":"plain","optional":true},"load_balancer_source_ranges":{"type":"string","description":"The source ranges for the load balancer. Required if 'host_endpoint_type' is set to 'LoadBalancer'.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"location_config":{"nesting_mode":"list","block":{"attributes":{"country_code":{"type":"string","description":"The country code of the country the cluster is located in.","description_kind":"plain","optional":true},"country_name":{"type":"string","description":"The name of the country.","description_kind":"plain","optional":true},"latitude":{"type":"number","description":"The latitude coordinates value.","description_kind":"plain","required":true},"longitude":{"type":"number","description":"The longitude coordinates value.","description_kind":"plain","required":true},"region_code":{"type":"string","description":"The region code of where the cluster is located in.","description_kind":"plain","optional":true},"region_name":{"type":"string","description":"The name of the region.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"machine_pool":{"nesting_mode":"set","block":{"attributes":{"additional_labels":{"type":["map","string"],"description_kind":"plain","optional":true},"control_plane":{"type":"bool","description_kind":"plain","optional":true},"control_plane_as_worker":{"type":"bool","description_kind":"plain","optional":true},"count":{"type":"number","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"update_strategy":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"placements":{"nesting_mode":"list","block":{"attributes":{"appliance_id":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1},"taints":{"nesting_mode":"list","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"}}},"description_kind":"plain"},"min_items":1},"namespaces":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"resource_allocation":{"type":["map","string"],"description_kind":"plain","required":true}},"description_kind":"plain"}},"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"registry_uid":{"type":"string","description_kind":"plain","optional":true},"tag":{"type":"string","description_kind":"plain","required":true},"values":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"scan_policy":{"nesting_mode":"list","block":{"attributes":{"configuration_scan_schedule":{"type":"string","description_kind":"plain","required":true},"conformance_scan_schedule":{"type":"string","description_kind":"plain","required":true},"penetration_scan_schedule":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_cluster_edge_native":{"version":2,"block":{"attributes":{"apply_setting":{"type":"string","description_kind":"plain","optional":true},"cloud_account_id":{"type":"string","description_kind":"plain","optional":true},"cloud_config_id":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kubeconfig":{"type":"string","description_kind":"plain","computed":true},"name":{"type":"string","description_kind":"plain","required":true},"os_patch_after":{"type":"string","description_kind":"plain","optional":true},"os_patch_on_boot":{"type":"bool","description_kind":"plain","optional":true},"os_patch_schedule":{"type":"string","description_kind":"plain","optional":true},"skip_completion":{"type":"bool","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description_kind":"plain","optional":true}},"block_types":{"backup_policy":{"nesting_mode":"list","block":{"attributes":{"backup_location_id":{"type":"string","description_kind":"plain","required":true},"expiry_in_hour":{"type":"number","description_kind":"plain","required":true},"include_cluster_resources":{"type":"bool","description_kind":"plain","optional":true},"include_disks":{"type":"bool","description_kind":"plain","optional":true},"namespaces":{"type":["set","string"],"description_kind":"plain","optional":true},"prefix":{"type":"string","description_kind":"plain","required":true},"schedule":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"cloud_config":{"nesting_mode":"list","block":{"attributes":{"ntp_servers":{"type":["set","string"],"description_kind":"plain","optional":true},"ssh_key":{"type":"string","description_kind":"plain","required":true},"vip":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"cluster_profile":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"registry_uid":{"type":"string","description_kind":"plain","optional":true},"tag":{"type":"string","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","optional":true},"values":{"type":"string","description_kind":"plain","required":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"cluster_rbac_binding":{"nesting_mode":"list","block":{"attributes":{"namespace":{"type":"string","description_kind":"plain","optional":true},"role":{"type":["map","string"],"description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"block_types":{"subjects":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"host_config":{"nesting_mode":"list","block":{"attributes":{"external_traffic_policy":{"type":"string","description":"The external traffic policy for the cluster.","description_kind":"plain","optional":true},"host_endpoint_type":{"type":"string","description":"The type of endpoint for the cluster. Can be either 'Ingress' or 'LoadBalancer'. The default is 'Ingress'.","description_kind":"plain","optional":true},"ingress_host":{"type":"string","description":"The host for the Ingress endpoint. Required if 'host_endpoint_type' is set to 'Ingress'.","description_kind":"plain","optional":true},"load_balancer_source_ranges":{"type":"string","description":"The source ranges for the load balancer. Required if 'host_endpoint_type' is set to 'LoadBalancer'.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"location_config":{"nesting_mode":"list","block":{"attributes":{"country_code":{"type":"string","description":"The country code of the country the cluster is located in.","description_kind":"plain","optional":true},"country_name":{"type":"string","description":"The name of the country.","description_kind":"plain","optional":true},"latitude":{"type":"number","description":"The latitude coordinates value.","description_kind":"plain","required":true},"longitude":{"type":"number","description":"The longitude coordinates value.","description_kind":"plain","required":true},"region_code":{"type":"string","description":"The region code of where the cluster is located in.","description_kind":"plain","optional":true},"region_name":{"type":"string","description":"The name of the region.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"machine_pool":{"nesting_mode":"set","block":{"attributes":{"additional_labels":{"type":["map","string"],"description_kind":"plain","optional":true},"control_plane":{"type":"bool","description_kind":"plain","optional":true},"control_plane_as_worker":{"type":"bool","description_kind":"plain","optional":true},"host_uids":{"type":["list","string"],"description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"update_strategy":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"taints":{"nesting_mode":"list","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"}}},"description_kind":"plain"},"min_items":1},"namespaces":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"resource_allocation":{"type":["map","string"],"description_kind":"plain","required":true}},"description_kind":"plain"}},"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"registry_uid":{"type":"string","description_kind":"plain","optional":true},"tag":{"type":"string","description_kind":"plain","required":true},"values":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"scan_policy":{"nesting_mode":"list","block":{"attributes":{"configuration_scan_schedule":{"type":"string","description_kind":"plain","required":true},"conformance_scan_schedule":{"type":"string","description_kind":"plain","required":true},"penetration_scan_schedule":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_cluster_edge_vsphere":{"version":0,"block":{"attributes":{"cloud_config_id":{"type":"string","description_kind":"plain","computed":true},"edge_host_uid":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kubeconfig":{"type":"string","description_kind":"plain","computed":true},"name":{"type":"string","description_kind":"plain","required":true},"os_patch_after":{"type":"string","description_kind":"plain","optional":true},"os_patch_on_boot":{"type":"bool","description_kind":"plain","optional":true},"os_patch_schedule":{"type":"string","description_kind":"plain","optional":true},"skip_completion":{"type":"bool","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description_kind":"plain","optional":true}},"block_types":{"backup_policy":{"nesting_mode":"list","block":{"attributes":{"backup_location_id":{"type":"string","description_kind":"plain","required":true},"expiry_in_hour":{"type":"number","description_kind":"plain","required":true},"include_cluster_resources":{"type":"bool","description_kind":"plain","optional":true},"include_disks":{"type":"bool","description_kind":"plain","optional":true},"namespaces":{"type":["set","string"],"description_kind":"plain","optional":true},"prefix":{"type":"string","description_kind":"plain","required":true},"schedule":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"cloud_config":{"nesting_mode":"list","block":{"attributes":{"datacenter":{"type":"string","description_kind":"plain","required":true},"folder":{"type":"string","description_kind":"plain","required":true},"image_template_folder":{"type":"string","description_kind":"plain","optional":true},"network_search_domain":{"type":"string","description_kind":"plain","optional":true},"network_type":{"type":"string","description_kind":"plain","optional":true},"ssh_key":{"type":"string","description_kind":"plain","optional":true},"static_ip":{"type":"bool","description_kind":"plain","optional":true},"vip":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"cluster_profile":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description_kind":"plain","required":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"registry_uid":{"type":"string","description_kind":"plain","optional":true},"tag":{"type":"string","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","optional":true},"values":{"type":"string","description_kind":"plain","required":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"cluster_rbac_binding":{"nesting_mode":"list","block":{"attributes":{"namespace":{"type":"string","description_kind":"plain","optional":true},"role":{"type":["map","string"],"description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"block_types":{"subjects":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"host_config":{"nesting_mode":"list","block":{"attributes":{"external_traffic_policy":{"type":"string","description":"The external traffic policy for the cluster.","description_kind":"plain","optional":true},"host_endpoint_type":{"type":"string","description":"The type of endpoint for the cluster. Can be either 'Ingress' or 'LoadBalancer'. The default is 'Ingress'.","description_kind":"plain","optional":true},"ingress_host":{"type":"string","description":"The host for the Ingress endpoint. Required if 'host_endpoint_type' is set to 'Ingress'.","description_kind":"plain","optional":true},"load_balancer_source_ranges":{"type":"string","description":"The source ranges for the load balancer. Required if 'host_endpoint_type' is set to 'LoadBalancer'.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"location_config":{"nesting_mode":"list","block":{"attributes":{"country_code":{"type":"string","description":"The country code of the country the cluster is located in.","description_kind":"plain","optional":true},"country_name":{"type":"string","description":"The name of the country.","description_kind":"plain","optional":true},"latitude":{"type":"number","description":"The latitude coordinates value.","description_kind":"plain","required":true},"longitude":{"type":"number","description":"The longitude coordinates value.","description_kind":"plain","required":true},"region_code":{"type":"string","description":"The region code of where the cluster is located in.","description_kind":"plain","optional":true},"region_name":{"type":"string","description":"The name of the region.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"machine_pool":{"nesting_mode":"list","block":{"attributes":{"additional_labels":{"type":["map","string"],"description_kind":"plain","optional":true},"control_plane":{"type":"bool","description_kind":"plain","optional":true},"control_plane_as_worker":{"type":"bool","description_kind":"plain","optional":true},"count":{"type":"number","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"update_strategy":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"instance_type":{"nesting_mode":"list","block":{"attributes":{"cpu":{"type":"number","description_kind":"plain","required":true},"disk_size_gb":{"type":"number","description_kind":"plain","required":true},"memory_mb":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"placement":{"nesting_mode":"list","block":{"attributes":{"cluster":{"type":"string","description_kind":"plain","required":true},"datastore":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","computed":true},"network":{"type":"string","description_kind":"plain","required":true},"resource_pool":{"type":"string","description_kind":"plain","required":true},"static_ip_pool_id":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1},"taints":{"nesting_mode":"list","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"}}},"description_kind":"plain"},"min_items":1},"namespaces":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"resource_allocation":{"type":["map","string"],"description_kind":"plain","required":true}},"description_kind":"plain"}},"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"registry_uid":{"type":"string","description_kind":"plain","optional":true},"tag":{"type":"string","description_kind":"plain","required":true},"values":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"scan_policy":{"nesting_mode":"list","block":{"attributes":{"configuration_scan_schedule":{"type":"string","description_kind":"plain","required":true},"conformance_scan_schedule":{"type":"string","description_kind":"plain","required":true},"penetration_scan_schedule":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_cluster_eks":{"version":2,"block":{"attributes":{"apply_setting":{"type":"string","description_kind":"plain","optional":true},"cloud_account_id":{"type":"string","description_kind":"plain","required":true},"cloud_config_id":{"type":"string","description_kind":"plain","computed":true},"cluster_profile_id":{"type":"string","description_kind":"plain","deprecated":true,"optional":true},"context":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kubeconfig":{"type":"string","description_kind":"plain","computed":true},"location_config":{"type":["list",["object",{"country_code":"string","country_name":"string","latitude":"number","longitude":"number","region_code":"string","region_name":"string"}]],"description_kind":"plain","computed":true},"name":{"type":"string","description_kind":"plain","required":true},"os_patch_after":{"type":"string","description_kind":"plain","optional":true},"os_patch_on_boot":{"type":"bool","description_kind":"plain","optional":true},"os_patch_schedule":{"type":"string","description_kind":"plain","optional":true},"skip_completion":{"type":"bool","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description_kind":"plain","optional":true}},"block_types":{"backup_policy":{"nesting_mode":"list","block":{"attributes":{"backup_location_id":{"type":"string","description_kind":"plain","required":true},"expiry_in_hour":{"type":"number","description_kind":"plain","required":true},"include_cluster_resources":{"type":"bool","description_kind":"plain","optional":true},"include_disks":{"type":"bool","description_kind":"plain","optional":true},"namespaces":{"type":["set","string"],"description":"Provide namespaces that need to be backed up. If left empty then all the Namespaces will be backed up.","description_kind":"plain","optional":true},"prefix":{"type":"string","description_kind":"plain","required":true},"schedule":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"cloud_config":{"nesting_mode":"list","block":{"attributes":{"az_subnets":{"type":["map","string"],"description":"Mutually exclusive with `azs`. Use for Static provisioning.","description_kind":"plain","optional":true},"azs":{"type":["list","string"],"description":"Mutually exclusive with `az_subnets`. Use for Dynamic provisioning.","description_kind":"plain","optional":true},"encryption_config_arn":{"type":"string","description_kind":"plain","optional":true},"endpoint_access":{"type":"string","description_kind":"plain","optional":true},"public_access_cidrs":{"type":["set","string"],"description_kind":"plain","optional":true},"region":{"type":"string","description_kind":"plain","required":true},"ssh_key_name":{"type":"string","description_kind":"plain","optional":true},"vpc_id":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"cluster_profile":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description_kind":"plain","required":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"registry_uid":{"type":"string","description_kind":"plain","optional":true},"tag":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","optional":true},"values":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"cluster_rbac_binding":{"nesting_mode":"list","block":{"attributes":{"namespace":{"type":"string","description_kind":"plain","optional":true},"role":{"type":["map","string"],"description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"block_types":{"subjects":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description":"Available types: `Users`, `Groups`, Service Account","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description":"A Cluster Role binding defines the permissions defined across a cluster.","description_kind":"plain"}},"fargate_profile":{"nesting_mode":"list","block":{"attributes":{"additional_tags":{"type":["map","string"],"description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"subnets":{"type":["list","string"],"description_kind":"plain","optional":true}},"block_types":{"selector":{"nesting_mode":"list","block":{"attributes":{"labels":{"type":["map","string"],"description_kind":"plain","optional":true},"namespace":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"}},"host_config":{"nesting_mode":"list","block":{"attributes":{"external_traffic_policy":{"type":"string","description":"The external traffic policy for the cluster.","description_kind":"plain","optional":true},"host_endpoint_type":{"type":"string","description":"The type of endpoint for the cluster. Can be either 'Ingress' or 'LoadBalancer'. The default is 'Ingress'.","description_kind":"plain","optional":true},"ingress_host":{"type":"string","description":"The host for the Ingress endpoint. Required if 'host_endpoint_type' is set to 'Ingress'.","description_kind":"plain","optional":true},"load_balancer_source_ranges":{"type":"string","description":"The source ranges for the load balancer. Required if 'host_endpoint_type' is set to 'LoadBalancer'.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"machine_pool":{"nesting_mode":"list","block":{"attributes":{"additional_labels":{"type":["map","string"],"description_kind":"plain","optional":true},"az_subnets":{"type":["map","string"],"description_kind":"plain","optional":true},"azs":{"type":["list","string"],"description_kind":"plain","optional":true},"capacity_type":{"type":"string","description":"Capacity type is an instance type, can be 'on-demand' or 'spot'. Defaults to 'on-demand'.","description_kind":"plain","optional":true},"count":{"type":"number","description_kind":"plain","required":true},"disk_size_gb":{"type":"number","description_kind":"plain","required":true},"instance_type":{"type":"string","description_kind":"plain","required":true},"max":{"type":"number","description_kind":"plain","optional":true},"max_price":{"type":"string","description_kind":"plain","optional":true},"min":{"type":"number","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"update_strategy":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"taints":{"nesting_mode":"list","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"}}},"description_kind":"plain"},"min_items":1},"namespaces":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"resource_allocation":{"type":["map","string"],"description_kind":"plain","required":true}},"description_kind":"plain"}},"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"registry_uid":{"type":"string","description_kind":"plain","optional":true},"tag":{"type":"string","description_kind":"plain","required":true},"values":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"scan_policy":{"nesting_mode":"list","block":{"attributes":{"configuration_scan_schedule":{"type":"string","description_kind":"plain","required":true},"conformance_scan_schedule":{"type":"string","description_kind":"plain","required":true},"penetration_scan_schedule":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_cluster_gcp":{"version":2,"block":{"attributes":{"apply_setting":{"type":"string","description_kind":"plain","optional":true},"cloud_account_id":{"type":"string","description_kind":"plain","required":true},"cloud_config_id":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kubeconfig":{"type":"string","description_kind":"plain","computed":true},"location_config":{"type":["list",["object",{"country_code":"string","country_name":"string","latitude":"number","longitude":"number","region_code":"string","region_name":"string"}]],"description_kind":"plain","computed":true},"name":{"type":"string","description_kind":"plain","required":true},"os_patch_after":{"type":"string","description_kind":"plain","optional":true},"os_patch_on_boot":{"type":"bool","description_kind":"plain","optional":true},"os_patch_schedule":{"type":"string","description_kind":"plain","optional":true},"skip_completion":{"type":"bool","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description_kind":"plain","optional":true}},"block_types":{"backup_policy":{"nesting_mode":"list","block":{"attributes":{"backup_location_id":{"type":"string","description_kind":"plain","required":true},"expiry_in_hour":{"type":"number","description_kind":"plain","required":true},"include_cluster_resources":{"type":"bool","description_kind":"plain","optional":true},"include_disks":{"type":"bool","description_kind":"plain","optional":true},"namespaces":{"type":["set","string"],"description_kind":"plain","optional":true},"prefix":{"type":"string","description_kind":"plain","required":true},"schedule":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"cloud_config":{"nesting_mode":"list","block":{"attributes":{"network":{"type":"string","description_kind":"plain","optional":true},"project":{"type":"string","description_kind":"plain","required":true},"region":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"cluster_profile":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description_kind":"plain","required":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"registry_uid":{"type":"string","description_kind":"plain","optional":true},"tag":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","optional":true},"values":{"type":"string","description_kind":"plain","required":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"cluster_rbac_binding":{"nesting_mode":"list","block":{"attributes":{"namespace":{"type":"string","description_kind":"plain","optional":true},"role":{"type":["map","string"],"description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"block_types":{"subjects":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"host_config":{"nesting_mode":"list","block":{"attributes":{"external_traffic_policy":{"type":"string","description":"The external traffic policy for the cluster.","description_kind":"plain","optional":true},"host_endpoint_type":{"type":"string","description":"The type of endpoint for the cluster. Can be either 'Ingress' or 'LoadBalancer'. The default is 'Ingress'.","description_kind":"plain","optional":true},"ingress_host":{"type":"string","description":"The host for the Ingress endpoint. Required if 'host_endpoint_type' is set to 'Ingress'.","description_kind":"plain","optional":true},"load_balancer_source_ranges":{"type":"string","description":"The source ranges for the load balancer. Required if 'host_endpoint_type' is set to 'LoadBalancer'.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"machine_pool":{"nesting_mode":"set","block":{"attributes":{"additional_labels":{"type":["map","string"],"description_kind":"plain","optional":true},"azs":{"type":["set","string"],"description_kind":"plain","required":true},"control_plane":{"type":"bool","description_kind":"plain","optional":true},"control_plane_as_worker":{"type":"bool","description_kind":"plain","optional":true},"count":{"type":"number","description_kind":"plain","required":true},"disk_size_gb":{"type":"number","description_kind":"plain","optional":true},"instance_type":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"update_strategy":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"taints":{"nesting_mode":"list","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"}}},"description_kind":"plain"},"min_items":1},"namespaces":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"resource_allocation":{"type":["map","string"],"description_kind":"plain","required":true}},"description_kind":"plain"}},"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"registry_uid":{"type":"string","description_kind":"plain","optional":true},"tag":{"type":"string","description_kind":"plain","required":true},"values":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"scan_policy":{"nesting_mode":"list","block":{"attributes":{"configuration_scan_schedule":{"type":"string","description_kind":"plain","required":true},"conformance_scan_schedule":{"type":"string","description_kind":"plain","required":true},"penetration_scan_schedule":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_cluster_group":{"version":2,"block":{"attributes":{"context":{"type":"string","description":"The context of the Cluster group. Allowed values are 'project' or 'tenant'. Defaults to 'tenant'.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the cluster group","description_kind":"plain","required":true},"tags":{"type":["set","string"],"description":"A list of tags to be applied to the cluster group. Tags must be in the form of `key:value`.","description_kind":"plain","optional":true}},"block_types":{"clusters":{"nesting_mode":"list","block":{"attributes":{"cluster_uid":{"type":"string","description":"The UID of the host cluster.","description_kind":"plain","required":true},"host_dns":{"type":"string","description":"The host DNS wildcard for the cluster. i.e. `*.dev` or `*test.com`","description_kind":"plain","optional":true}},"description":"A list of clusters to include in the cluster group.","description_kind":"plain"}},"config":{"nesting_mode":"list","block":{"attributes":{"cpu_millicore":{"type":"number","description":"The CPU limit in millicores.","description_kind":"plain","optional":true},"host_endpoint_type":{"type":"string","description":"The host endpoint type. Allowed values are 'Ingress' or 'LoadBalancer'. Defaults to 'Ingress'.","description_kind":"plain","optional":true},"memory_in_mb":{"type":"number","description":"The memory limit in megabytes (MB).","description_kind":"plain","optional":true},"oversubscription_percent":{"type":"number","description":"The allowed oversubscription percentage.","description_kind":"plain","optional":true},"storage_in_gb":{"type":"number","description":"The storage limit in gigabytes (GB).","description_kind":"plain","optional":true},"values":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_cluster_import":{"version":2,"block":{"attributes":{"cloud":{"type":"string","description_kind":"plain","required":true},"cloud_config_id":{"type":"string","description_kind":"plain","computed":true},"cluster_import_manifest":{"type":"string","description_kind":"plain","computed":true},"cluster_import_manifest_apply_command":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true},"tags":{"type":["set","string"],"description_kind":"plain","optional":true}},"block_types":{"cluster_profile":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description_kind":"plain","required":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"registry_uid":{"type":"string","description_kind":"plain","optional":true},"tag":{"type":"string","description_kind":"plain","required":true},"values":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_cluster_libvirt":{"version":2,"block":{"attributes":{"apply_setting":{"type":"string","description_kind":"plain","optional":true},"cloud_account_id":{"type":"string","description_kind":"plain","optional":true},"cloud_config_id":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kubeconfig":{"type":"string","description_kind":"plain","computed":true},"name":{"type":"string","description_kind":"plain","required":true},"os_patch_after":{"type":"string","description_kind":"plain","optional":true},"os_patch_on_boot":{"type":"bool","description_kind":"plain","optional":true},"os_patch_schedule":{"type":"string","description_kind":"plain","optional":true},"skip_completion":{"type":"bool","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description_kind":"plain","optional":true}},"block_types":{"backup_policy":{"nesting_mode":"list","block":{"attributes":{"backup_location_id":{"type":"string","description_kind":"plain","required":true},"expiry_in_hour":{"type":"number","description_kind":"plain","required":true},"include_cluster_resources":{"type":"bool","description_kind":"plain","optional":true},"include_disks":{"type":"bool","description_kind":"plain","optional":true},"namespaces":{"type":["set","string"],"description_kind":"plain","optional":true},"prefix":{"type":"string","description_kind":"plain","required":true},"schedule":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"cloud_config":{"nesting_mode":"list","block":{"attributes":{"ntp_servers":{"type":["set","string"],"description_kind":"plain","optional":true},"ssh_key":{"type":"string","description_kind":"plain","required":true},"vip":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"cluster_profile":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"registry_uid":{"type":"string","description_kind":"plain","optional":true},"tag":{"type":"string","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","optional":true},"values":{"type":"string","description_kind":"plain","required":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"cluster_rbac_binding":{"nesting_mode":"list","block":{"attributes":{"namespace":{"type":"string","description_kind":"plain","optional":true},"role":{"type":["map","string"],"description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"block_types":{"subjects":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"host_config":{"nesting_mode":"list","block":{"attributes":{"external_traffic_policy":{"type":"string","description":"The external traffic policy for the cluster.","description_kind":"plain","optional":true},"host_endpoint_type":{"type":"string","description":"The type of endpoint for the cluster. Can be either 'Ingress' or 'LoadBalancer'. The default is 'Ingress'.","description_kind":"plain","optional":true},"ingress_host":{"type":"string","description":"The host for the Ingress endpoint. Required if 'host_endpoint_type' is set to 'Ingress'.","description_kind":"plain","optional":true},"load_balancer_source_ranges":{"type":"string","description":"The source ranges for the load balancer. Required if 'host_endpoint_type' is set to 'LoadBalancer'.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"location_config":{"nesting_mode":"list","block":{"attributes":{"country_code":{"type":"string","description":"The country code of the country the cluster is located in.","description_kind":"plain","optional":true},"country_name":{"type":"string","description":"The name of the country.","description_kind":"plain","optional":true},"latitude":{"type":"number","description":"The latitude coordinates value.","description_kind":"plain","required":true},"longitude":{"type":"number","description":"The longitude coordinates value.","description_kind":"plain","required":true},"region_code":{"type":"string","description":"The region code of where the cluster is located in.","description_kind":"plain","optional":true},"region_name":{"type":"string","description":"The name of the region.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"machine_pool":{"nesting_mode":"list","block":{"attributes":{"additional_labels":{"type":["map","string"],"description_kind":"plain","optional":true},"control_plane":{"type":"bool","description_kind":"plain","optional":true},"control_plane_as_worker":{"type":"bool","description_kind":"plain","optional":true},"count":{"type":"number","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"update_strategy":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"instance_type":{"nesting_mode":"list","block":{"attributes":{"cache_passthrough":{"type":"bool","description_kind":"plain","optional":true},"cpu":{"type":"number","description_kind":"plain","required":true},"cpus_sets":{"type":"string","description_kind":"plain","optional":true},"disk_size_gb":{"type":"number","description_kind":"plain","required":true},"memory_mb":{"type":"number","description_kind":"plain","required":true}},"block_types":{"attached_disks":{"nesting_mode":"list","block":{"attributes":{"managed":{"type":"bool","description_kind":"plain","optional":true},"size_in_gb":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"}},"gpu_config":{"nesting_mode":"list","block":{"attributes":{"addresses":{"type":["map","string"],"description_kind":"plain","optional":true},"device_model":{"type":"string","description_kind":"plain","required":true},"num_gpus":{"type":"number","description_kind":"plain","required":true},"vendor":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"min_items":1,"max_items":1},"placements":{"nesting_mode":"list","block":{"attributes":{"appliance_id":{"type":"string","description_kind":"plain","required":true},"data_storage_pool":{"type":"string","description_kind":"plain","required":true},"image_storage_pool":{"type":"string","description_kind":"plain","required":true},"network":{"type":"string","description_kind":"plain","optional":true},"network_names":{"type":"string","description_kind":"plain","required":true},"network_type":{"type":"string","description_kind":"plain","required":true},"target_storage_pool":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1},"taints":{"nesting_mode":"list","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"}}},"description_kind":"plain"},"min_items":1},"namespaces":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"resource_allocation":{"type":["map","string"],"description_kind":"plain","required":true}},"description_kind":"plain"}},"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"registry_uid":{"type":"string","description_kind":"plain","optional":true},"tag":{"type":"string","description_kind":"plain","required":true},"values":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"scan_policy":{"nesting_mode":"list","block":{"attributes":{"configuration_scan_schedule":{"type":"string","description_kind":"plain","required":true},"conformance_scan_schedule":{"type":"string","description_kind":"plain","required":true},"penetration_scan_schedule":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_cluster_maas":{"version":2,"block":{"attributes":{"apply_setting":{"type":"string","description_kind":"plain","optional":true},"cloud_account_id":{"type":"string","description_kind":"plain","optional":true},"cloud_config_id":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kubeconfig":{"type":"string","description_kind":"plain","computed":true},"name":{"type":"string","description_kind":"plain","required":true},"os_patch_after":{"type":"string","description_kind":"plain","optional":true},"os_patch_on_boot":{"type":"bool","description_kind":"plain","optional":true},"os_patch_schedule":{"type":"string","description_kind":"plain","optional":true},"skip_completion":{"type":"bool","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description_kind":"plain","optional":true}},"block_types":{"backup_policy":{"nesting_mode":"list","block":{"attributes":{"backup_location_id":{"type":"string","description_kind":"plain","required":true},"expiry_in_hour":{"type":"number","description_kind":"plain","required":true},"include_cluster_resources":{"type":"bool","description_kind":"plain","optional":true},"include_disks":{"type":"bool","description_kind":"plain","optional":true},"namespaces":{"type":["set","string"],"description_kind":"plain","optional":true},"prefix":{"type":"string","description_kind":"plain","required":true},"schedule":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"cloud_config":{"nesting_mode":"list","block":{"attributes":{"domain":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"cluster_profile":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description_kind":"plain","required":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"registry_uid":{"type":"string","description_kind":"plain","optional":true},"tag":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","optional":true},"values":{"type":"string","description_kind":"plain","required":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"cluster_rbac_binding":{"nesting_mode":"list","block":{"attributes":{"namespace":{"type":"string","description_kind":"plain","optional":true},"role":{"type":["map","string"],"description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"block_types":{"subjects":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"host_config":{"nesting_mode":"list","block":{"attributes":{"external_traffic_policy":{"type":"string","description":"The external traffic policy for the cluster.","description_kind":"plain","optional":true},"host_endpoint_type":{"type":"string","description":"The type of endpoint for the cluster. Can be either 'Ingress' or 'LoadBalancer'. The default is 'Ingress'.","description_kind":"plain","optional":true},"ingress_host":{"type":"string","description":"The host for the Ingress endpoint. Required if 'host_endpoint_type' is set to 'Ingress'.","description_kind":"plain","optional":true},"load_balancer_source_ranges":{"type":"string","description":"The source ranges for the load balancer. Required if 'host_endpoint_type' is set to 'LoadBalancer'.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"location_config":{"nesting_mode":"list","block":{"attributes":{"country_code":{"type":"string","description":"The country code of the country the cluster is located in.","description_kind":"plain","optional":true},"country_name":{"type":"string","description":"The name of the country.","description_kind":"plain","optional":true},"latitude":{"type":"number","description":"The latitude coordinates value.","description_kind":"plain","required":true},"longitude":{"type":"number","description":"The longitude coordinates value.","description_kind":"plain","required":true},"region_code":{"type":"string","description":"The region code of where the cluster is located in.","description_kind":"plain","optional":true},"region_name":{"type":"string","description":"The name of the region.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"machine_pool":{"nesting_mode":"set","block":{"attributes":{"additional_labels":{"type":["map","string"],"description_kind":"plain","optional":true},"azs":{"type":["set","string"],"description_kind":"plain","required":true},"control_plane":{"type":"bool","description_kind":"plain","optional":true},"control_plane_as_worker":{"type":"bool","description_kind":"plain","optional":true},"count":{"type":"number","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"update_strategy":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"instance_type":{"nesting_mode":"list","block":{"attributes":{"min_cpu":{"type":"number","description_kind":"plain","required":true},"min_memory_mb":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"placement":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description_kind":"plain","computed":true},"resource_pool":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1},"taints":{"nesting_mode":"list","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"}}},"description_kind":"plain"},"min_items":1},"namespaces":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"resource_allocation":{"type":["map","string"],"description_kind":"plain","required":true}},"description_kind":"plain"}},"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"registry_uid":{"type":"string","description_kind":"plain","optional":true},"tag":{"type":"string","description_kind":"plain","required":true},"values":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"scan_policy":{"nesting_mode":"list","block":{"attributes":{"configuration_scan_schedule":{"type":"string","description_kind":"plain","required":true},"conformance_scan_schedule":{"type":"string","description_kind":"plain","required":true},"penetration_scan_schedule":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_cluster_openstack":{"version":0,"block":{"attributes":{"apply_setting":{"type":"string","description_kind":"plain","optional":true},"cloud_account_id":{"type":"string","description_kind":"plain","required":true},"cloud_config_id":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kubeconfig":{"type":"string","description_kind":"plain","computed":true},"name":{"type":"string","description_kind":"plain","required":true},"os_patch_after":{"type":"string","description_kind":"plain","optional":true},"os_patch_on_boot":{"type":"bool","description_kind":"plain","optional":true},"os_patch_schedule":{"type":"string","description_kind":"plain","optional":true},"skip_completion":{"type":"bool","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description_kind":"plain","optional":true}},"block_types":{"backup_policy":{"nesting_mode":"list","block":{"attributes":{"backup_location_id":{"type":"string","description_kind":"plain","required":true},"expiry_in_hour":{"type":"number","description_kind":"plain","required":true},"include_cluster_resources":{"type":"bool","description_kind":"plain","optional":true},"include_disks":{"type":"bool","description_kind":"plain","optional":true},"namespaces":{"type":["set","string"],"description_kind":"plain","optional":true},"prefix":{"type":"string","description_kind":"plain","required":true},"schedule":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"cloud_config":{"nesting_mode":"list","block":{"attributes":{"dns_servers":{"type":["set","string"],"description_kind":"plain","required":true},"domain":{"type":"string","description_kind":"plain","required":true},"network_id":{"type":"string","description_kind":"plain","optional":true},"project":{"type":"string","description_kind":"plain","required":true},"region":{"type":"string","description_kind":"plain","required":true},"ssh_key":{"type":"string","description_kind":"plain","required":true},"subnet_cidr":{"type":"string","description_kind":"plain","required":true},"subnet_id":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"cluster_profile":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description_kind":"plain","required":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"registry_uid":{"type":"string","description_kind":"plain","optional":true},"tag":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","optional":true},"values":{"type":"string","description_kind":"plain","required":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"cluster_rbac_binding":{"nesting_mode":"list","block":{"attributes":{"namespace":{"type":"string","description_kind":"plain","optional":true},"role":{"type":["map","string"],"description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"block_types":{"subjects":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"host_config":{"nesting_mode":"list","block":{"attributes":{"external_traffic_policy":{"type":"string","description":"The external traffic policy for the cluster.","description_kind":"plain","optional":true},"host_endpoint_type":{"type":"string","description":"The type of endpoint for the cluster. Can be either 'Ingress' or 'LoadBalancer'. The default is 'Ingress'.","description_kind":"plain","optional":true},"ingress_host":{"type":"string","description":"The host for the Ingress endpoint. Required if 'host_endpoint_type' is set to 'Ingress'.","description_kind":"plain","optional":true},"load_balancer_source_ranges":{"type":"string","description":"The source ranges for the load balancer. Required if 'host_endpoint_type' is set to 'LoadBalancer'.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"location_config":{"nesting_mode":"list","block":{"attributes":{"country_code":{"type":"string","description":"The country code of the country the cluster is located in.","description_kind":"plain","optional":true},"country_name":{"type":"string","description":"The name of the country.","description_kind":"plain","optional":true},"latitude":{"type":"number","description":"The latitude coordinates value.","description_kind":"plain","required":true},"longitude":{"type":"number","description":"The longitude coordinates value.","description_kind":"plain","required":true},"region_code":{"type":"string","description":"The region code of where the cluster is located in.","description_kind":"plain","optional":true},"region_name":{"type":"string","description":"The name of the region.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"machine_pool":{"nesting_mode":"list","block":{"attributes":{"additional_labels":{"type":["map","string"],"description_kind":"plain","optional":true},"azs":{"type":["set","string"],"description_kind":"plain","optional":true},"control_plane":{"type":"bool","description_kind":"plain","optional":true},"control_plane_as_worker":{"type":"bool","description_kind":"plain","optional":true},"count":{"type":"number","description_kind":"plain","required":true},"instance_type":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"subnet_id":{"type":"string","description_kind":"plain","optional":true},"update_strategy":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"taints":{"nesting_mode":"list","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"}}},"description_kind":"plain"},"min_items":1},"namespaces":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"resource_allocation":{"type":["map","string"],"description_kind":"plain","required":true}},"description_kind":"plain"}},"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"registry_uid":{"type":"string","description_kind":"plain","optional":true},"tag":{"type":"string","description_kind":"plain","required":true},"values":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"scan_policy":{"nesting_mode":"list","block":{"attributes":{"configuration_scan_schedule":{"type":"string","description_kind":"plain","required":true},"conformance_scan_schedule":{"type":"string","description_kind":"plain","required":true},"penetration_scan_schedule":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_cluster_profile":{"version":0,"block":{"attributes":{"cloud":{"type":"string","description_kind":"plain","optional":true},"context":{"type":"string","description_kind":"plain","optional":true},"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},"tags":{"type":["set","string"],"description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","optional":true},"version":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"registry_uid":{"type":"string","description_kind":"plain","optional":true,"computed":true},"tag":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","optional":true},"uid":{"type":"string","description_kind":"plain","optional":true,"computed":true},"values":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"uid":{"type":"string","description_kind":"plain","computed":true}},"description_kind":"plain"}}},"description_kind":"plain"},"min_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_cluster_profile_import":{"version":0,"block":{"attributes":{"context":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"import_file":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"spectrocloud_cluster_tke":{"version":2,"block":{"attributes":{"apply_setting":{"type":"string","description_kind":"plain","optional":true},"cloud_account_id":{"type":"string","description_kind":"plain","required":true},"cloud_config_id":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kubeconfig":{"type":"string","description_kind":"plain","computed":true},"location_config":{"type":["list",["object",{"country_code":"string","country_name":"string","latitude":"number","longitude":"number","region_code":"string","region_name":"string"}]],"description_kind":"plain","computed":true},"name":{"type":"string","description_kind":"plain","required":true},"skip_completion":{"type":"bool","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description_kind":"plain","optional":true}},"block_types":{"backup_policy":{"nesting_mode":"list","block":{"attributes":{"backup_location_id":{"type":"string","description_kind":"plain","required":true},"expiry_in_hour":{"type":"number","description_kind":"plain","required":true},"include_cluster_resources":{"type":"bool","description_kind":"plain","optional":true},"include_disks":{"type":"bool","description_kind":"plain","optional":true},"namespaces":{"type":["set","string"],"description_kind":"plain","optional":true},"prefix":{"type":"string","description_kind":"plain","required":true},"schedule":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"cloud_config":{"nesting_mode":"list","block":{"attributes":{"az_subnets":{"type":["map","string"],"description_kind":"plain","optional":true},"azs":{"type":["list","string"],"description_kind":"plain","optional":true},"endpoint_access":{"type":"string","description_kind":"plain","optional":true},"public_access_cidrs":{"type":["set","string"],"description_kind":"plain","optional":true},"region":{"type":"string","description_kind":"plain","required":true},"ssh_key_name":{"type":"string","description_kind":"plain","optional":true},"vpc_id":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"cluster_profile":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description_kind":"plain","required":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"registry_uid":{"type":"string","description_kind":"plain","optional":true},"tag":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","optional":true},"values":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"cluster_rbac_binding":{"nesting_mode":"list","block":{"attributes":{"namespace":{"type":"string","description_kind":"plain","optional":true},"role":{"type":["map","string"],"description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"block_types":{"subjects":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"host_config":{"nesting_mode":"list","block":{"attributes":{"external_traffic_policy":{"type":"string","description":"The external traffic policy for the cluster.","description_kind":"plain","optional":true},"host_endpoint_type":{"type":"string","description":"The type of endpoint for the cluster. Can be either 'Ingress' or 'LoadBalancer'. The default is 'Ingress'.","description_kind":"plain","optional":true},"ingress_host":{"type":"string","description":"The host for the Ingress endpoint. Required if 'host_endpoint_type' is set to 'Ingress'.","description_kind":"plain","optional":true},"load_balancer_source_ranges":{"type":"string","description":"The source ranges for the load balancer. Required if 'host_endpoint_type' is set to 'LoadBalancer'.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"machine_pool":{"nesting_mode":"list","block":{"attributes":{"additional_labels":{"type":["map","string"],"description_kind":"plain","optional":true},"az_subnets":{"type":["map","string"],"description_kind":"plain","optional":true},"azs":{"type":["list","string"],"description_kind":"plain","optional":true},"capacity_type":{"type":"string","description_kind":"plain","optional":true},"count":{"type":"number","description_kind":"plain","required":true},"disk_size_gb":{"type":"number","description_kind":"plain","required":true},"instance_type":{"type":"string","description_kind":"plain","required":true},"max":{"type":"number","description_kind":"plain","optional":true},"max_price":{"type":"string","description_kind":"plain","optional":true},"min":{"type":"number","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"update_strategy":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"taints":{"nesting_mode":"list","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"}}},"description_kind":"plain"},"min_items":1},"namespaces":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"resource_allocation":{"type":["map","string"],"description_kind":"plain","required":true}},"description_kind":"plain"}},"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"registry_uid":{"type":"string","description_kind":"plain","optional":true},"tag":{"type":"string","description_kind":"plain","required":true},"values":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"scan_policy":{"nesting_mode":"list","block":{"attributes":{"configuration_scan_schedule":{"type":"string","description_kind":"plain","required":true},"conformance_scan_schedule":{"type":"string","description_kind":"plain","required":true},"penetration_scan_schedule":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_cluster_vsphere":{"version":0,"block":{"attributes":{"apply_setting":{"type":"string","description_kind":"plain","optional":true},"cloud_account_id":{"type":"string","description_kind":"plain","required":true},"cloud_config_id":{"type":"string","description_kind":"plain","computed":true},"cluster_profile_id":{"type":"string","description_kind":"plain","deprecated":true,"optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kubeconfig":{"type":"string","description_kind":"plain","computed":true},"name":{"type":"string","description_kind":"plain","required":true},"os_patch_after":{"type":"string","description_kind":"plain","optional":true},"os_patch_on_boot":{"type":"bool","description_kind":"plain","optional":true},"os_patch_schedule":{"type":"string","description_kind":"plain","optional":true},"skip_completion":{"type":"bool","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description_kind":"plain","optional":true}},"block_types":{"backup_policy":{"nesting_mode":"list","block":{"attributes":{"backup_location_id":{"type":"string","description_kind":"plain","required":true},"expiry_in_hour":{"type":"number","description_kind":"plain","required":true},"include_cluster_resources":{"type":"bool","description_kind":"plain","optional":true},"include_disks":{"type":"bool","description_kind":"plain","optional":true},"namespaces":{"type":["set","string"],"description_kind":"plain","optional":true},"prefix":{"type":"string","description_kind":"plain","required":true},"schedule":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"cloud_config":{"nesting_mode":"list","block":{"attributes":{"datacenter":{"type":"string","description_kind":"plain","required":true},"folder":{"type":"string","description_kind":"plain","required":true},"image_template_folder":{"type":"string","description_kind":"plain","optional":true},"network_search_domain":{"type":"string","description_kind":"plain","optional":true},"network_type":{"type":"string","description_kind":"plain","optional":true},"ssh_key":{"type":"string","description_kind":"plain","required":true},"static_ip":{"type":"bool","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"cluster_profile":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description_kind":"plain","required":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"registry_uid":{"type":"string","description_kind":"plain","optional":true},"tag":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","optional":true},"values":{"type":"string","description_kind":"plain","required":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"cluster_rbac_binding":{"nesting_mode":"list","block":{"attributes":{"namespace":{"type":"string","description_kind":"plain","optional":true},"role":{"type":["map","string"],"description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"block_types":{"subjects":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"host_config":{"nesting_mode":"list","block":{"attributes":{"external_traffic_policy":{"type":"string","description":"The external traffic policy for the cluster.","description_kind":"plain","optional":true},"host_endpoint_type":{"type":"string","description":"The type of endpoint for the cluster. Can be either 'Ingress' or 'LoadBalancer'. The default is 'Ingress'.","description_kind":"plain","optional":true},"ingress_host":{"type":"string","description":"The host for the Ingress endpoint. Required if 'host_endpoint_type' is set to 'Ingress'.","description_kind":"plain","optional":true},"load_balancer_source_ranges":{"type":"string","description":"The source ranges for the load balancer. Required if 'host_endpoint_type' is set to 'LoadBalancer'.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"location_config":{"nesting_mode":"list","block":{"attributes":{"country_code":{"type":"string","description":"The country code of the country the cluster is located in.","description_kind":"plain","optional":true},"country_name":{"type":"string","description":"The name of the country.","description_kind":"plain","optional":true},"latitude":{"type":"number","description":"The latitude coordinates value.","description_kind":"plain","required":true},"longitude":{"type":"number","description":"The longitude coordinates value.","description_kind":"plain","required":true},"region_code":{"type":"string","description":"The region code of where the cluster is located in.","description_kind":"plain","optional":true},"region_name":{"type":"string","description":"The name of the region.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"machine_pool":{"nesting_mode":"set","block":{"attributes":{"additional_labels":{"type":["map","string"],"description_kind":"plain","optional":true},"control_plane":{"type":"bool","description_kind":"plain","optional":true},"control_plane_as_worker":{"type":"bool","description_kind":"plain","optional":true},"count":{"type":"number","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"update_strategy":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"instance_type":{"nesting_mode":"list","block":{"attributes":{"cpu":{"type":"number","description_kind":"plain","required":true},"disk_size_gb":{"type":"number","description_kind":"plain","required":true},"memory_mb":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"placement":{"nesting_mode":"list","block":{"attributes":{"cluster":{"type":"string","description_kind":"plain","required":true},"datastore":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","computed":true},"network":{"type":"string","description_kind":"plain","required":true},"resource_pool":{"type":"string","description_kind":"plain","required":true},"static_ip_pool_id":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1},"taints":{"nesting_mode":"list","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"}}},"description_kind":"plain"},"min_items":1},"namespaces":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"resource_allocation":{"type":["map","string"],"description_kind":"plain","required":true}},"description_kind":"plain"}},"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"registry_uid":{"type":"string","description_kind":"plain","optional":true},"tag":{"type":"string","description_kind":"plain","required":true},"values":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"scan_policy":{"nesting_mode":"list","block":{"attributes":{"configuration_scan_schedule":{"type":"string","description_kind":"plain","required":true},"conformance_scan_schedule":{"type":"string","description_kind":"plain","required":true},"penetration_scan_schedule":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_macro":{"version":2,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true},"value":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_privatecloudgateway_ippool":{"version":2,"block":{"attributes":{"gateway":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ip_end_range":{"type":"string","description_kind":"plain","optional":true},"ip_start_range":{"type":"string","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"nameserver_addresses":{"type":["set","string"],"description_kind":"plain","optional":true},"nameserver_search_suffix":{"type":["set","string"],"description_kind":"plain","optional":true},"network_type":{"type":"string","description_kind":"plain","required":true},"prefix":{"type":"number","description_kind":"plain","required":true},"private_cloud_gateway_id":{"type":"string","description_kind":"plain","required":true},"restrict_to_single_cluster":{"type":"bool","description_kind":"plain","optional":true},"subnet_cidr":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_project":{"version":2,"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},"tags":{"type":["set","string"],"description_kind":"plain","optional":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_registry_helm":{"version":2,"block":{"attributes":{"endpoint":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_private":{"type":"bool","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"credentials":{"nesting_mode":"list","block":{"attributes":{"credential_type":{"type":"string","description_kind":"plain","required":true},"password":{"type":"string","description_kind":"plain","optional":true},"token":{"type":"string","description_kind":"plain","optional":true},"username":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_registry_oci":{"version":2,"block":{"attributes":{"endpoint":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_private":{"type":"bool","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","required":true}},"block_types":{"credentials":{"nesting_mode":"list","block":{"attributes":{"arn":{"type":"string","description_kind":"plain","optional":true},"credential_type":{"type":"string","description_kind":"plain","required":true},"external_id":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_team":{"version":2,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true},"users":{"type":["set","string"],"description_kind":"plain","optional":true}},"block_types":{"project_role_mapping":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description_kind":"plain","required":true},"roles":{"type":["set","string"],"description_kind":"plain","required":true}},"description_kind":"plain"}},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_virtual_cluster":{"version":2,"block":{"attributes":{"apply_setting":{"type":"string","description_kind":"plain","optional":true},"cloud_config_id":{"type":"string","description_kind":"plain","computed":true},"cluster_group_uid":{"type":"string","description_kind":"plain","optional":true},"host_cluster_uid":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kubeconfig":{"type":"string","description_kind":"plain","computed":true},"location_config":{"type":["list",["object",{"country_code":"string","country_name":"string","latitude":"number","longitude":"number","region_code":"string","region_name":"string"}]],"description_kind":"plain","computed":true},"name":{"type":"string","description_kind":"plain","required":true},"os_patch_after":{"type":"string","description_kind":"plain","optional":true},"os_patch_on_boot":{"type":"bool","description_kind":"plain","optional":true},"os_patch_schedule":{"type":"string","description_kind":"plain","optional":true},"skip_completion":{"type":"bool","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description_kind":"plain","optional":true}},"block_types":{"backup_policy":{"nesting_mode":"list","block":{"attributes":{"backup_location_id":{"type":"string","description_kind":"plain","required":true},"expiry_in_hour":{"type":"number","description_kind":"plain","required":true},"include_cluster_resources":{"type":"bool","description_kind":"plain","optional":true},"include_disks":{"type":"bool","description_kind":"plain","optional":true},"namespaces":{"type":["set","string"],"description_kind":"plain","optional":true},"prefix":{"type":"string","description_kind":"plain","required":true},"schedule":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"cloud_config":{"nesting_mode":"list","block":{"attributes":{"chart_name":{"type":"string","description_kind":"plain","optional":true},"chart_repo":{"type":"string","description_kind":"plain","optional":true},"chart_values":{"type":"string","description_kind":"plain","optional":true},"chart_version":{"type":"string","description_kind":"plain","optional":true},"k8s_version":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"cluster_profile":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description_kind":"plain","required":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"registry_uid":{"type":"string","description_kind":"plain","optional":true},"tag":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","optional":true},"values":{"type":"string","description_kind":"plain","required":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"cluster_rbac_binding":{"nesting_mode":"list","block":{"attributes":{"namespace":{"type":"string","description_kind":"plain","optional":true},"role":{"type":["map","string"],"description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"block_types":{"subjects":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"namespaces":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"resource_allocation":{"type":["map","string"],"description_kind":"plain","required":true}},"description_kind":"plain"}},"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"registry_uid":{"type":"string","description_kind":"plain","optional":true},"tag":{"type":"string","description_kind":"plain","required":true},"values":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"resources":{"nesting_mode":"list","block":{"attributes":{"max_cpu":{"type":"number","description_kind":"plain","optional":true},"max_mem_in_mb":{"type":"number","description_kind":"plain","optional":true},"max_storage_in_gb":{"type":"number","description_kind":"plain","optional":true},"min_cpu":{"type":"number","description_kind":"plain","optional":true},"min_mem_in_mb":{"type":"number","description_kind":"plain","optional":true},"min_storage_in_gb":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"scan_policy":{"nesting_mode":"list","block":{"attributes":{"configuration_scan_schedule":{"type":"string","description_kind":"plain","required":true},"conformance_scan_schedule":{"type":"string","description_kind":"plain","required":true},"penetration_scan_schedule":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"A resource to manage a Palette Virtual Cluster.","description_kind":"plain"}},"spectrocloud_workspace":{"version":2,"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},"tags":{"type":["set","string"],"description_kind":"plain","optional":true}},"block_types":{"backup_policy":{"nesting_mode":"list","block":{"attributes":{"backup_location_id":{"type":"string","description_kind":"plain","required":true},"cluster_uids":{"type":["set","string"],"description_kind":"plain","optional":true},"expiry_in_hour":{"type":"number","description_kind":"plain","required":true},"include_all_clusters":{"type":"bool","description_kind":"plain","optional":true},"include_cluster_resources":{"type":"bool","description_kind":"plain","optional":true},"include_disks":{"type":"bool","description_kind":"plain","optional":true},"namespaces":{"type":["set","string"],"description_kind":"plain","optional":true},"prefix":{"type":"string","description_kind":"plain","required":true},"schedule":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"cluster_rbac_binding":{"nesting_mode":"list","block":{"attributes":{"namespace":{"type":"string","description_kind":"plain","optional":true},"role":{"type":["map","string"],"description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"block_types":{"subjects":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"namespace":{"type":"string","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"clusters":{"nesting_mode":"set","block":{"attributes":{"uid":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1},"namespaces":{"nesting_mode":"list","block":{"attributes":{"images_blacklist":{"type":["list","string"],"description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"resource_allocation":{"type":["map","string"],"description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"data_source_schemas":{"spectrocloud_appliance":{"version":2,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true},"tags":{"type":["map","string"],"description_kind":"plain","optional":true}},"description_kind":"plain"}},"spectrocloud_appliances":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ids":{"type":["list","string"],"description":"The unique ids of the appliances. This is a computed field and is not required to be set.","description_kind":"plain","computed":true},"tags":{"type":["map","string"],"description":"A list of tags to filter the appliances.","description_kind":"plain","optional":true}},"description":"Provides details about for a set of appliances.","description_kind":"plain"}},"spectrocloud_application_profile":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the application profile","description_kind":"plain","required":true}},"description":"Use this data source to get the details of an existing application profile.","description_kind":"plain"}},"spectrocloud_backup_storage_location":{"version":2,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"spectrocloud_cloudaccount_aws":{"version":0,"block":{"attributes":{"depends":{"type":"string","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"spectrocloud_cloudaccount_azure":{"version":0,"block":{"attributes":{"azure_client_id":{"type":"string","description_kind":"plain","computed":true},"azure_tenant_id":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"spectrocloud_cloudaccount_gcp":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"spectrocloud_cloudaccount_maas":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"maas_api_endpoint":{"type":"string","description_kind":"plain","computed":true},"maas_api_key":{"type":"string","description_kind":"plain","computed":true},"name":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"spectrocloud_cloudaccount_openstack":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"spectrocloud_cloudaccount_tencent":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","optional":true,"computed":true},"tencent_secret_id":{"type":"string","description_kind":"plain","computed":true}},"description_kind":"plain"}},"spectrocloud_cloudaccount_vsphere":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"spectrocloud_cluster":{"version":0,"block":{"attributes":{"context":{"type":"string","description":"Cluster context can be 'project' or 'tenant'. Defaults to 'project'.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"spectrocloud_cluster_group":{"version":2,"block":{"attributes":{"context":{"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}},"description_kind":"plain"}},"spectrocloud_cluster_profile":{"version":0,"block":{"attributes":{"context":{"type":"string","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","optional":true,"computed":true},"pack":{"type":["list",["object",{"manifest":["list",["object",{"content":"string","name":"string","uid":"string"}]],"name":"string","registry_uid":"string","tag":"string","type":"string","uid":"string","values":"string"}]],"description_kind":"plain","computed":true},"version":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"spectrocloud_pack":{"version":0,"block":{"attributes":{"cloud":{"type":["set","string"],"description_kind":"plain","optional":true,"computed":true},"filters":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","optional":true,"computed":true},"registry_uid":{"type":"string","description_kind":"plain","optional":true,"computed":true},"type":{"type":"string","description_kind":"plain","optional":true,"computed":true},"values":{"type":"string","description_kind":"plain","computed":true},"version":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"spectrocloud_pack_simple":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the pack.","description_kind":"plain","required":true},"registry_uid":{"type":"string","description":"The unique identifier of the registry the pack belongs to.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of Pack. Allowed values are `helm`, `manifest`, `container` or `operator-instance`.","description_kind":"plain","required":true},"values":{"type":"string","description":"This is a stringified YAML object containing the pack configuration details. ","description_kind":"plain","computed":true},"version":{"type":"string","description":"The version of the pack.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"spectrocloud_project":{"version":2,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"spectrocloud_registry":{"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"}},"spectrocloud_registry_helm":{"version":2,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"spectrocloud_registry_oci":{"version":2,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"spectrocloud_registry_pack":{"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"}},"spectrocloud_role":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"spectrocloud_user":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"spectrocloud_workspace":{"version":2,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}}}}} +{"format_version":"1.0","provider_schemas":{"registry.terraform.io/spectrocloud/spectrocloud":{"provider":{"version":0,"block":{"attributes":{"api_key":{"type":"string","description":"The Spectro Cloud API key. Can also be set with the `SPECTROCLOUD_APIKEY` environment variable.","description_kind":"plain","optional":true,"sensitive":true},"host":{"type":"string","description":"The Spectro Cloud API host url. Can also be set with the `SPECTROCLOUD_HOST` environment variable. Defaults to https://api.spectrocloud.com","description_kind":"plain","optional":true},"ignore_insecure_tls_error":{"type":"bool","description":"Ignore insecure TLS errors for Spectro Cloud API endpoints. Defaults to false.","description_kind":"plain","optional":true},"password":{"type":"string","description":"The Spectro Cloud user password. Can also be set with the `SPECTROCLOUD_PASSWORD` environment variable.","description_kind":"plain","optional":true,"sensitive":true},"project_name":{"type":"string","description":"The Spectro Cloud project name.","description_kind":"plain","optional":true},"retry_attempts":{"type":"number","description":"Number of retry attempts. Can also be set with the `SPECTROCLOUD_RETRY_ATTEMPTS` environment variable. Defaults to 10.","description_kind":"plain","optional":true},"trace":{"type":"bool","description":"Enable HTTP request tracing. Can also be set with the `SPECTROCLOUD_TRACE` environment variable. To enable Terraform debug logging, set `TF_LOG=DEBUG`. Visit the Terraform documentation to learn more about Terraform [debugging](https://developer.hashicorp.com/terraform/plugin/log/managing).","description_kind":"plain","optional":true},"username":{"type":"string","description":"The Spectro Cloud username. Can also be set with the `SPECTROCLOUD_USERNAME` environment variable.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"resource_schemas":{"spectrocloud_addon_deployment":{"version":2,"block":{"attributes":{"apply_setting":{"type":"string","description_kind":"plain","optional":true},"cluster_uid":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"cluster_profile":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The ID of the cluster profile.","description_kind":"plain","required":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the pack. The name must be unique within the cluster profile. ","description_kind":"plain","required":true},"registry_uid":{"type":"string","description":"The registry UID of the pack. The registry UID is the unique identifier of the registry. ","description_kind":"plain","optional":true},"tag":{"type":"string","description":"The tag of the pack. The tag is the version of the pack.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the pack. The default value is `spectro`.","description_kind":"plain","optional":true},"uid":{"type":"string","description_kind":"plain","optional":true,"computed":true},"values":{"type":"string","description":"The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. ","description_kind":"plain","required":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description":"The content of the manifest. The content is the YAML content of the manifest. ","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the manifest. The name must be unique within the pack. ","description_kind":"plain","required":true},"uid":{"type":"string","description_kind":"plain","computed":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_alert":{"version":2,"block":{"attributes":{"alert_all_users":{"type":"bool","description_kind":"plain","optional":true},"component":{"type":"string","description_kind":"plain","required":true},"created_by":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"identifiers":{"type":["set","string"],"description_kind":"plain","optional":true},"is_active":{"type":"bool","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","required":true}},"block_types":{"http":{"nesting_mode":"list","block":{"attributes":{"body":{"type":"string","description_kind":"plain","required":true},"headers":{"type":["map","string"],"description_kind":"plain","optional":true},"method":{"type":"string","description_kind":"plain","required":true},"url":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"status":{"nesting_mode":"list","block":{"attributes":{"is_succeeded":{"type":"bool","description_kind":"plain","optional":true},"message":{"type":"string","description_kind":"plain","optional":true},"time":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_appliance":{"version":2,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"pairing_key":{"type":"string","description_kind":"plain","optional":true},"tags":{"type":["map","string"],"description_kind":"plain","optional":true},"uid":{"type":"string","description_kind":"plain","required":true},"wait":{"type":"bool","description_kind":"plain","optional":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_application":{"version":2,"block":{"attributes":{"application_profile_uid":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true},"tags":{"type":["set","string"],"description_kind":"plain","optional":true}},"block_types":{"config":{"nesting_mode":"list","block":{"attributes":{"cluster_group_uid":{"type":"string","description_kind":"plain","optional":true},"cluster_name":{"type":"string","description_kind":"plain","optional":true},"cluster_uid":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"limits":{"nesting_mode":"list","block":{"attributes":{"cpu":{"type":"number","description_kind":"plain","optional":true},"memory":{"type":"number","description_kind":"plain","optional":true},"storage":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_application_profile":{"version":0,"block":{"attributes":{"cloud":{"type":"string","description":"The cloud provider the profile is eligible for. Default value is `all`.","description_kind":"plain","optional":true},"context":{"type":"string","description":"Context of the profile. Allowed values are `project`, `cluster`, or `namespace`. Default value is `project`.","description_kind":"plain","optional":true},"description":{"type":"string","description":"Description of the profile.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the application profile","description_kind":"plain","required":true},"tags":{"type":["set","string"],"description":"A list of tags to be applied to the application profile. Tags must be in the form of `key:value`.","description_kind":"plain","optional":true},"version":{"type":"string","description":"Version of the profile. Default value is 1.0.0.","description_kind":"plain","optional":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"install_order":{"type":"number","description":"The installation priority order of the app profile. The order of priority goes from lowest number to highest number. For example, a value of `-3` would be installed before an app profile with a higher number value. No upper and lower limits exist, and you may specify positive and negative integers. The default value is `0`. ","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the specified pack.","description_kind":"plain","required":true},"properties":{"type":["map","string"],"description":"The various properties required by different database tiers eg: `databaseName` and `databaseVolumeSize` size for Redis etc.","description_kind":"plain","optional":true},"registry_uid":{"type":"string","description":"The unique id of the registry to be used for the pack.","description_kind":"plain","optional":true,"computed":true},"source_app_tier":{"type":"string","description":"The unique id of the pack to be used as the source for the pack.","description_kind":"plain","optional":true},"tag":{"type":"string","description":"The identifier or version to label the pack.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of Pack. Allowed values are `container`, `helm`, `manifest`, or `operator-instance`.","description_kind":"plain","optional":true},"uid":{"type":"string","description":"The unique id of the pack. This is a computed field and is not required to be set.","description_kind":"plain","optional":true,"computed":true},"values":{"type":"string","description":"The values to be used for the pack. This is a stringified JSON object.","description_kind":"plain","optional":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description":"The content of the manifest.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the manifest.","description_kind":"plain","required":true},"uid":{"type":"string","description_kind":"plain","computed":true}},"description":"The manifest of the pack.","description_kind":"plain"}}},"description":"A list of packs to be applied to the application profile.","description_kind":"plain"},"min_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Provisions an Application Profile. App Profiles are templates created with preconfigured services. You can create as many profiles as required, with multiple tiers serving different functionalities per use case.","description_kind":"plain"}},"spectrocloud_backup_storage_location":{"version":2,"block":{"attributes":{"bucket_name":{"type":"string","description_kind":"plain","required":true},"ca_cert":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_default":{"type":"bool","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"region":{"type":"string","description_kind":"plain","required":true}},"block_types":{"s3":{"nesting_mode":"list","block":{"attributes":{"access_key":{"type":"string","description_kind":"plain","optional":true},"arn":{"type":"string","description_kind":"plain","optional":true},"credential_type":{"type":"string","description_kind":"plain","required":true},"external_id":{"type":"string","description_kind":"plain","optional":true},"s3_force_path_style":{"type":"bool","description_kind":"plain","optional":true},"s3_url":{"type":"string","description_kind":"plain","optional":true},"secret_key":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_cloudaccount_aws":{"version":0,"block":{"attributes":{"arn":{"type":"string","description_kind":"plain","optional":true},"aws_access_key":{"type":"string","description_kind":"plain","optional":true},"aws_secret_key":{"type":"string","description_kind":"plain","optional":true,"sensitive":true},"context":{"type":"string","description_kind":"plain","optional":true},"external_id":{"type":"string","description_kind":"plain","optional":true,"sensitive":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"spectrocloud_cloudaccount_azure":{"version":0,"block":{"attributes":{"azure_client_id":{"type":"string","description_kind":"plain","required":true},"azure_client_secret":{"type":"string","description_kind":"plain","required":true,"sensitive":true},"azure_tenant_id":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"spectrocloud_cloudaccount_gcp":{"version":0,"block":{"attributes":{"gcp_json_credentials":{"type":"string","description_kind":"plain","required":true,"sensitive":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"spectrocloud_cloudaccount_maas":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"maas_api_endpoint":{"type":"string","description_kind":"plain","optional":true},"maas_api_key":{"type":"string","description_kind":"plain","optional":true,"sensitive":true},"name":{"type":"string","description_kind":"plain","required":true},"private_cloud_gateway_id":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"spectrocloud_cloudaccount_openstack":{"version":0,"block":{"attributes":{"ca_certificate":{"type":"string","description_kind":"plain","optional":true},"default_domain":{"type":"string","description_kind":"plain","required":true},"default_project":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"identity_endpoint":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"openstack_allow_insecure":{"type":"bool","description_kind":"plain","optional":true},"openstack_password":{"type":"string","description_kind":"plain","required":true,"sensitive":true},"openstack_username":{"type":"string","description_kind":"plain","required":true},"parent_region":{"type":"string","description_kind":"plain","required":true},"private_cloud_gateway_id":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"spectrocloud_cloudaccount_tencent":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true},"tencent_secret_id":{"type":"string","description_kind":"plain","optional":true},"tencent_secret_key":{"type":"string","description_kind":"plain","optional":true,"sensitive":true}},"description_kind":"plain"}},"spectrocloud_cloudaccount_vsphere":{"version":0,"block":{"attributes":{"context":{"type":"string","description":"Context of the cloud account. This can be either project or tenant. If not specified, the default value is project.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the cloud account. This name is used to identify the cloud account in the Spectro Cloud UI.","description_kind":"plain","required":true},"private_cloud_gateway_id":{"type":"string","description":"ID of the private cloud gateway. This is the ID of the private cloud gateway that is used to connect to the vSphere cloud.","description_kind":"plain","required":true},"vsphere_ignore_insecure_error":{"type":"bool","description":"Ignore insecure error. This is a boolean value that indicates whether to ignore the insecure error or not. If not specified, the default value is false.","description_kind":"plain","optional":true},"vsphere_password":{"type":"string","description":"Password of the vSphere cloud. This is the password of the vSphere cloud that is used to connect to the vSphere cloud.","description_kind":"plain","required":true,"sensitive":true},"vsphere_username":{"type":"string","description":"Username of the vSphere cloud. This is the username of the vSphere cloud that is used to connect to the vSphere cloud.","description_kind":"plain","required":true},"vsphere_vcenter":{"type":"string","description":"vCenter server address. This is the address of the vCenter server that is used to connect to the vSphere cloud.","description_kind":"plain","required":true}},"description":"A resource to manage a vSphere cloud account in Pallette.","description_kind":"plain"}},"spectrocloud_cluster_aks":{"version":2,"block":{"attributes":{"apply_setting":{"type":"string","description_kind":"plain","optional":true},"cloud_account_id":{"type":"string","description_kind":"plain","required":true},"cloud_config_id":{"type":"string","description":"ID of the cloud config used for the cluster. This cloud config must be of type `azure`.","description_kind":"plain","deprecated":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kubeconfig":{"type":"string","description":"Kubeconfig for the cluster. This can be used to connect to the cluster using `kubectl`.","description_kind":"plain","computed":true},"location_config":{"type":["list",["object",{"country_code":"string","country_name":"string","latitude":"number","longitude":"number","region_code":"string","region_name":"string"}]],"description_kind":"plain","computed":true},"name":{"type":"string","description_kind":"plain","required":true},"os_patch_after":{"type":"string","description":"The date and time after which to patch the cluster. Prefix the time value with the respective RFC. Ex: `RFC3339: 2006-01-02T15:04:05Z07:00`","description_kind":"plain","optional":true},"os_patch_on_boot":{"type":"bool","description":"Whether to apply OS patch on boot. Default is `false`.","description_kind":"plain","optional":true},"os_patch_schedule":{"type":"string","description":"The cron schedule for OS patching. This must be in the form of cron syntax. Ex: `0 0 * * *`.","description_kind":"plain","optional":true},"skip_completion":{"type":"bool","description":"If `true`, the cluster will be created asynchronously. Default value is `false`.","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description":"A list of tags to be applied to the cluster. Tags must be in the form of `key:value`.","description_kind":"plain","optional":true}},"block_types":{"backup_policy":{"nesting_mode":"list","block":{"attributes":{"backup_location_id":{"type":"string","description":"The ID of the backup location to use for the backup.","description_kind":"plain","required":true},"cluster_uids":{"type":["set","string"],"description":"The list of cluster UIDs to include in the backup. If `include_all_clusters` is set to `true`, then all clusters will be included.","description_kind":"plain","optional":true},"expiry_in_hour":{"type":"number","description":"The number of hours after which the backup will be deleted. For example, if the expiry is set to 24, the backup will be deleted after 24 hours.","description_kind":"plain","required":true},"include_all_clusters":{"type":"bool","description":"Whether to include all clusters in the backup. If set to false, only the clusters specified in `cluster_uids` will be included.","description_kind":"plain","optional":true},"include_cluster_resources":{"type":"bool","description":"Whether to include the cluster resources in the backup. If set to false, only the cluster configuration and disks will be backed up.","description_kind":"plain","optional":true},"include_disks":{"type":"bool","description":"Whether to include the disks in the backup. If set to false, only the cluster configuration will be backed up.","description_kind":"plain","optional":true},"namespaces":{"type":["set","string"],"description":"The list of Kubernetes namespaces to include in the backup. If not specified, all namespaces will be included.","description_kind":"plain","optional":true},"prefix":{"type":"string","description":"Prefix for the backup name. The backup name will be of the format \u003cprefix\u003e-\u003ccluster-name\u003e-\u003ctimestamp\u003e.","description_kind":"plain","required":true},"schedule":{"type":"string","description":"The schedule for the backup. The schedule is specified in cron format. For example, to run the backup every day at 1:00 AM, the schedule should be set to `0 1 * * *`.","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"cloud_config":{"nesting_mode":"list","block":{"attributes":{"region":{"type":"string","description_kind":"plain","required":true},"resource_group":{"type":"string","description_kind":"plain","required":true},"ssh_key":{"type":"string","description_kind":"plain","required":true},"subscription_id":{"type":"string","description_kind":"plain","required":true},"vnet_cidr_block":{"type":"string","description_kind":"plain","optional":true},"vnet_name":{"type":"string","description_kind":"plain","optional":true},"vnet_resource_group":{"type":"string","description_kind":"plain","optional":true},"worker_cidr":{"type":"string","description_kind":"plain","optional":true},"worker_subnet_name":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"cluster_profile":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The ID of the cluster profile.","description_kind":"plain","required":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the pack. The name must be unique within the cluster profile. ","description_kind":"plain","required":true},"registry_uid":{"type":"string","description":"The registry UID of the pack. The registry UID is the unique identifier of the registry. ","description_kind":"plain","optional":true},"tag":{"type":"string","description":"The tag of the pack. The tag is the version of the pack.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the pack. The default value is `spectro`.","description_kind":"plain","optional":true},"uid":{"type":"string","description_kind":"plain","optional":true,"computed":true},"values":{"type":"string","description":"The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. ","description_kind":"plain","required":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description":"The content of the manifest. The content is the YAML content of the manifest. ","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the manifest. The name must be unique within the pack. ","description_kind":"plain","required":true},"uid":{"type":"string","description_kind":"plain","computed":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"cluster_rbac_binding":{"nesting_mode":"list","block":{"attributes":{"namespace":{"type":"string","description":"The Kubernetes namespace of the RBAC binding. Required if 'type' is set to 'RoleBinding'.","description_kind":"plain","optional":true},"role":{"type":["map","string"],"description":"The role of the RBAC binding. Required if 'type' is set to 'RoleBinding'.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the RBAC binding. Can be one of the following values: `RoleBinding`, or `ClusterRoleBinding`.","description_kind":"plain","required":true}},"block_types":{"subjects":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the subject. Required if 'type' is set to 'User' or 'Group'.","description_kind":"plain","required":true},"namespace":{"type":"string","description":"The Kubernetes namespace of the subject. Required if 'type' is set to 'ServiceAccount'.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the subject. Can be one of the following values: `User`, `Group`, or `ServiceAccount`.","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"host_config":{"nesting_mode":"list","block":{"attributes":{"external_traffic_policy":{"type":"string","description":"The external traffic policy for the cluster.","description_kind":"plain","optional":true},"host_endpoint_type":{"type":"string","description":"The type of endpoint for the cluster. Can be either 'Ingress' or 'LoadBalancer'. The default is 'Ingress'.","description_kind":"plain","optional":true},"ingress_host":{"type":"string","description":"The host for the Ingress endpoint. Required if 'host_endpoint_type' is set to 'Ingress'.","description_kind":"plain","optional":true},"load_balancer_source_ranges":{"type":"string","description":"The source ranges for the load balancer. Required if 'host_endpoint_type' is set to 'LoadBalancer'.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"machine_pool":{"nesting_mode":"list","block":{"attributes":{"additional_labels":{"type":["map","string"],"description_kind":"plain","optional":true},"count":{"type":"number","description":"Number of nodes in the machine pool.","description_kind":"plain","required":true},"disk_size_gb":{"type":"number","description_kind":"plain","required":true},"instance_type":{"type":"string","description_kind":"plain","required":true},"is_system_node_pool":{"type":"bool","description_kind":"plain","required":true},"max":{"type":"number","description_kind":"plain","optional":true},"min":{"type":"number","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"storage_account_type":{"type":"string","description_kind":"plain","required":true},"update_strategy":{"type":"string","description":"Update strategy for the machine pool. Valid values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`.","description_kind":"plain","optional":true}},"block_types":{"taints":{"nesting_mode":"list","block":{"attributes":{"effect":{"type":"string","description":"The effect of the taint. Allowed values are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`.","description_kind":"plain","required":true},"key":{"type":"string","description":"The key of the taint.","description_kind":"plain","required":true},"value":{"type":"string","description":"The value of the taint.","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"min_items":1},"namespaces":{"nesting_mode":"list","block":{"attributes":{"images_blacklist":{"type":["list","string"],"description":"List of images to disallow for the namespace. For example, `['nginx:latest', 'redis:latest']`","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the namespace. This is the name of the Kubernetes namespace in the cluster.","description_kind":"plain","required":true},"resource_allocation":{"type":["map","string"],"description":"Resource allocation for the namespace. This is a map containing the resource type and the resource value. For example, `{cpu_cores: '2', memory_MiB: '2048'}`","description_kind":"plain","required":true}},"description_kind":"plain"}},"scan_policy":{"nesting_mode":"list","block":{"attributes":{"configuration_scan_schedule":{"type":"string","description":"The schedule for configuration scan.","description_kind":"plain","required":true},"conformance_scan_schedule":{"type":"string","description":"The schedule for conformance scan.","description_kind":"plain","required":true},"penetration_scan_schedule":{"type":"string","description":"The schedule for penetration scan.","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Resource for managing AKS clusters in Spectro Cloud through Palette.","description_kind":"plain"}},"spectrocloud_cluster_aws":{"version":2,"block":{"attributes":{"apply_setting":{"type":"string","description_kind":"plain","optional":true},"cloud_account_id":{"type":"string","description_kind":"plain","required":true},"cloud_config_id":{"type":"string","description":"ID of the cloud config used for the cluster. This cloud config must be of type `azure`.","description_kind":"plain","deprecated":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kubeconfig":{"type":"string","description":"Kubeconfig for the cluster. This can be used to connect to the cluster using `kubectl`.","description_kind":"plain","computed":true},"location_config":{"type":["list",["object",{"country_code":"string","country_name":"string","latitude":"number","longitude":"number","region_code":"string","region_name":"string"}]],"description_kind":"plain","computed":true},"name":{"type":"string","description_kind":"plain","required":true},"os_patch_after":{"type":"string","description":"Date and time after which to patch cluster `RFC3339: 2006-01-02T15:04:05Z07:00`","description_kind":"plain","optional":true},"os_patch_on_boot":{"type":"bool","description":"Whether to apply OS patch on boot. Default is `false`.","description_kind":"plain","optional":true},"os_patch_schedule":{"type":"string","description":"The cron schedule for OS patching. This must be in the form of cron syntax. Ex: `0 0 * * *`.","description_kind":"plain","optional":true},"skip_completion":{"type":"bool","description":"If `true`, the cluster will be created asynchronously. Default value is `false`.","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description":"A list of tags to be applied to the cluster. Tags must be in the form of `key:value`.","description_kind":"plain","optional":true}},"block_types":{"backup_policy":{"nesting_mode":"list","block":{"attributes":{"backup_location_id":{"type":"string","description":"The ID of the backup location to use for the backup.","description_kind":"plain","required":true},"cluster_uids":{"type":["set","string"],"description":"The list of cluster UIDs to include in the backup. If `include_all_clusters` is set to `true`, then all clusters will be included.","description_kind":"plain","optional":true},"expiry_in_hour":{"type":"number","description":"The number of hours after which the backup will be deleted. For example, if the expiry is set to 24, the backup will be deleted after 24 hours.","description_kind":"plain","required":true},"include_all_clusters":{"type":"bool","description":"Whether to include all clusters in the backup. If set to false, only the clusters specified in `cluster_uids` will be included.","description_kind":"plain","optional":true},"include_cluster_resources":{"type":"bool","description":"Whether to include the cluster resources in the backup. If set to false, only the cluster configuration and disks will be backed up.","description_kind":"plain","optional":true},"include_disks":{"type":"bool","description":"Whether to include the disks in the backup. If set to false, only the cluster configuration will be backed up.","description_kind":"plain","optional":true},"namespaces":{"type":["set","string"],"description":"The list of Kubernetes namespaces to include in the backup. If not specified, all namespaces will be included.","description_kind":"plain","optional":true},"prefix":{"type":"string","description":"Prefix for the backup name. The backup name will be of the format \u003cprefix\u003e-\u003ccluster-name\u003e-\u003ctimestamp\u003e.","description_kind":"plain","required":true},"schedule":{"type":"string","description":"The schedule for the backup. The schedule is specified in cron format. For example, to run the backup every day at 1:00 AM, the schedule should be set to `0 1 * * *`.","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"cloud_config":{"nesting_mode":"list","block":{"attributes":{"region":{"type":"string","description_kind":"plain","required":true},"ssh_key_name":{"type":"string","description_kind":"plain","required":true},"vpc_id":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"cluster_profile":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The ID of the cluster profile.","description_kind":"plain","required":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the pack. The name must be unique within the cluster profile. ","description_kind":"plain","required":true},"registry_uid":{"type":"string","description":"The registry UID of the pack. The registry UID is the unique identifier of the registry. ","description_kind":"plain","optional":true},"tag":{"type":"string","description":"The tag of the pack. The tag is the version of the pack.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the pack. The default value is `spectro`.","description_kind":"plain","optional":true},"uid":{"type":"string","description_kind":"plain","optional":true,"computed":true},"values":{"type":"string","description":"The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. ","description_kind":"plain","required":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description":"The content of the manifest. The content is the YAML content of the manifest. ","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the manifest. The name must be unique within the pack. ","description_kind":"plain","required":true},"uid":{"type":"string","description_kind":"plain","computed":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"cluster_rbac_binding":{"nesting_mode":"list","block":{"attributes":{"namespace":{"type":"string","description":"The Kubernetes namespace of the RBAC binding. Required if 'type' is set to 'RoleBinding'.","description_kind":"plain","optional":true},"role":{"type":["map","string"],"description":"The role of the RBAC binding. Required if 'type' is set to 'RoleBinding'.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the RBAC binding. Can be one of the following values: `RoleBinding`, or `ClusterRoleBinding`.","description_kind":"plain","required":true}},"block_types":{"subjects":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the subject. Required if 'type' is set to 'User' or 'Group'.","description_kind":"plain","required":true},"namespace":{"type":"string","description":"The Kubernetes namespace of the subject. Required if 'type' is set to 'ServiceAccount'.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the subject. Can be one of the following values: `User`, `Group`, or `ServiceAccount`.","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"host_config":{"nesting_mode":"list","block":{"attributes":{"external_traffic_policy":{"type":"string","description":"The external traffic policy for the cluster.","description_kind":"plain","optional":true},"host_endpoint_type":{"type":"string","description":"The type of endpoint for the cluster. Can be either 'Ingress' or 'LoadBalancer'. The default is 'Ingress'.","description_kind":"plain","optional":true},"ingress_host":{"type":"string","description":"The host for the Ingress endpoint. Required if 'host_endpoint_type' is set to 'Ingress'.","description_kind":"plain","optional":true},"load_balancer_source_ranges":{"type":"string","description":"The source ranges for the load balancer. Required if 'host_endpoint_type' is set to 'LoadBalancer'.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"machine_pool":{"nesting_mode":"set","block":{"attributes":{"additional_labels":{"type":["map","string"],"description_kind":"plain","optional":true},"az_subnets":{"type":["map","string"],"description":"Mutually exclusive with `azs`. Use `az_subnets` for Static provisioning.","description_kind":"plain","optional":true},"azs":{"type":["set","string"],"description":"Mutually exclusive with `az_subnets`. Use `azs` for Dynamic provisioning.","description_kind":"plain","optional":true},"capacity_type":{"type":"string","description":"Capacity type is an instance type, can be 'on-demand' or 'spot'. Defaults to 'on-demand'.","description_kind":"plain","optional":true},"control_plane":{"type":"bool","description":"Whether this machine pool is a control plane. Defaults to `false`.","description_kind":"plain","optional":true},"control_plane_as_worker":{"type":"bool","description":"Whether this machine pool is a control plane and a worker. Defaults to `false`.","description_kind":"plain","optional":true},"count":{"type":"number","description":"Number of nodes in the machine pool.","description_kind":"plain","required":true},"disk_size_gb":{"type":"number","description_kind":"plain","optional":true},"instance_type":{"type":"string","description_kind":"plain","required":true},"max_price":{"type":"string","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"update_strategy":{"type":"string","description":"Update strategy for the machine pool. Valid values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`.","description_kind":"plain","optional":true}},"block_types":{"taints":{"nesting_mode":"list","block":{"attributes":{"effect":{"type":"string","description":"The effect of the taint. Allowed values are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`.","description_kind":"plain","required":true},"key":{"type":"string","description":"The key of the taint.","description_kind":"plain","required":true},"value":{"type":"string","description":"The value of the taint.","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"min_items":1},"namespaces":{"nesting_mode":"list","block":{"attributes":{"images_blacklist":{"type":["list","string"],"description":"List of images to disallow for the namespace. For example, `['nginx:latest', 'redis:latest']`","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the namespace. This is the name of the Kubernetes namespace in the cluster.","description_kind":"plain","required":true},"resource_allocation":{"type":["map","string"],"description":"Resource allocation for the namespace. This is a map containing the resource type and the resource value. For example, `{cpu_cores: '2', memory_MiB: '2048'}`","description_kind":"plain","required":true}},"description_kind":"plain"}},"scan_policy":{"nesting_mode":"list","block":{"attributes":{"configuration_scan_schedule":{"type":"string","description":"The schedule for configuration scan.","description_kind":"plain","required":true},"conformance_scan_schedule":{"type":"string","description":"The schedule for conformance scan.","description_kind":"plain","required":true},"penetration_scan_schedule":{"type":"string","description":"The schedule for penetration scan.","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Resource for managing AWS clusters in Spectro Cloud through Palette.","description_kind":"plain"}},"spectrocloud_cluster_azure":{"version":0,"block":{"attributes":{"apply_setting":{"type":"string","description":"Apply setting for the cluster. This can be set to `on_create` or `on_update`.","description_kind":"plain","optional":true},"cloud_account_id":{"type":"string","description":"ID of the cloud account to be used for the cluster. This cloud account must be of type `azure`.","description_kind":"plain","required":true},"cloud_config_id":{"type":"string","description":"ID of the cloud config used for the cluster. This cloud config must be of type `azure`.","description_kind":"plain","deprecated":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kubeconfig":{"type":"string","description":"Kubeconfig for the cluster. This can be used to connect to the cluster using `kubectl`.","description_kind":"plain","computed":true},"location_config":{"type":["list",["object",{"country_code":"string","country_name":"string","latitude":"number","longitude":"number","region_code":"string","region_name":"string"}]],"description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of the cluster. This name will be used to create the cluster in Azure.","description_kind":"plain","required":true},"os_patch_after":{"type":"string","description":"Date and time after which to patch cluster `RFC3339: 2006-01-02T15:04:05Z07:00`","description_kind":"plain","optional":true},"os_patch_on_boot":{"type":"bool","description":"Whether to apply OS patch on boot. Default is `false`.","description_kind":"plain","optional":true},"os_patch_schedule":{"type":"string","description":"Cron schedule for OS patching. This must be in the form of `0 0 * * *`.","description_kind":"plain","optional":true},"skip_completion":{"type":"bool","description":"If `true`, the cluster will be created asynchronously. Default value is `false`.","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description":"A list of tags to be applied to the cluster. Tags must be in the form of `key:value`.","description_kind":"plain","optional":true}},"block_types":{"backup_policy":{"nesting_mode":"list","block":{"attributes":{"backup_location_id":{"type":"string","description":"The ID of the backup location to use for the backup.","description_kind":"plain","required":true},"cluster_uids":{"type":["set","string"],"description":"The list of cluster UIDs to include in the backup. If `include_all_clusters` is set to `true`, then all clusters will be included.","description_kind":"plain","optional":true},"expiry_in_hour":{"type":"number","description":"The number of hours after which the backup will be deleted. For example, if the expiry is set to 24, the backup will be deleted after 24 hours.","description_kind":"plain","required":true},"include_all_clusters":{"type":"bool","description":"Whether to include all clusters in the backup. If set to false, only the clusters specified in `cluster_uids` will be included.","description_kind":"plain","optional":true},"include_cluster_resources":{"type":"bool","description":"Whether to include the cluster resources in the backup. If set to false, only the cluster configuration and disks will be backed up.","description_kind":"plain","optional":true},"include_disks":{"type":"bool","description":"Whether to include the disks in the backup. If set to false, only the cluster configuration will be backed up.","description_kind":"plain","optional":true},"namespaces":{"type":["set","string"],"description":"The list of Kubernetes namespaces to include in the backup. If not specified, all namespaces will be included.","description_kind":"plain","optional":true},"prefix":{"type":"string","description":"Prefix for the backup name. The backup name will be of the format \u003cprefix\u003e-\u003ccluster-name\u003e-\u003ctimestamp\u003e.","description_kind":"plain","required":true},"schedule":{"type":"string","description":"The schedule for the backup. The schedule is specified in cron format. For example, to run the backup every day at 1:00 AM, the schedule should be set to `0 1 * * *`.","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"cloud_config":{"nesting_mode":"list","block":{"attributes":{"region":{"type":"string","description":"Azure region. This can be found in the Azure portal under `Resource groups`.","description_kind":"plain","required":true},"resource_group":{"type":"string","description":"Azure resource group. This can be found in the Azure portal under `Resource groups`.","description_kind":"plain","required":true},"ssh_key":{"type":"string","description":"SSH key to be used for the cluster nodes.","description_kind":"plain","required":true},"subscription_id":{"type":"string","description":"Azure subscription ID. This can be found in the Azure portal under `Subscriptions`.","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"cluster_profile":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The ID of the cluster profile.","description_kind":"plain","required":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the pack. The name must be unique within the cluster profile. ","description_kind":"plain","required":true},"registry_uid":{"type":"string","description":"The registry UID of the pack. The registry UID is the unique identifier of the registry. ","description_kind":"plain","optional":true},"tag":{"type":"string","description":"The tag of the pack. The tag is the version of the pack.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the pack. The default value is `spectro`.","description_kind":"plain","optional":true},"uid":{"type":"string","description_kind":"plain","optional":true,"computed":true},"values":{"type":"string","description":"The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. ","description_kind":"plain","required":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description":"The content of the manifest. The content is the YAML content of the manifest. ","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the manifest. The name must be unique within the pack. ","description_kind":"plain","required":true},"uid":{"type":"string","description_kind":"plain","computed":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"cluster_rbac_binding":{"nesting_mode":"list","block":{"attributes":{"namespace":{"type":"string","description":"The Kubernetes namespace of the RBAC binding. Required if 'type' is set to 'RoleBinding'.","description_kind":"plain","optional":true},"role":{"type":["map","string"],"description":"The role of the RBAC binding. Required if 'type' is set to 'RoleBinding'.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the RBAC binding. Can be one of the following values: `RoleBinding`, or `ClusterRoleBinding`.","description_kind":"plain","required":true}},"block_types":{"subjects":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the subject. Required if 'type' is set to 'User' or 'Group'.","description_kind":"plain","required":true},"namespace":{"type":"string","description":"The Kubernetes namespace of the subject. Required if 'type' is set to 'ServiceAccount'.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the subject. Can be one of the following values: `User`, `Group`, or `ServiceAccount`.","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"host_config":{"nesting_mode":"list","block":{"attributes":{"external_traffic_policy":{"type":"string","description":"The external traffic policy for the cluster.","description_kind":"plain","optional":true},"host_endpoint_type":{"type":"string","description":"The type of endpoint for the cluster. Can be either 'Ingress' or 'LoadBalancer'. The default is 'Ingress'.","description_kind":"plain","optional":true},"ingress_host":{"type":"string","description":"The host for the Ingress endpoint. Required if 'host_endpoint_type' is set to 'Ingress'.","description_kind":"plain","optional":true},"load_balancer_source_ranges":{"type":"string","description":"The source ranges for the load balancer. Required if 'host_endpoint_type' is set to 'LoadBalancer'.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"machine_pool":{"nesting_mode":"set","block":{"attributes":{"additional_labels":{"type":["map","string"],"description_kind":"plain","optional":true},"azs":{"type":["set","string"],"description":"Availability zones for the machine pool.","description_kind":"plain","required":true},"control_plane":{"type":"bool","description":"Whether this machine pool is a control plane. Defaults to `false`.","description_kind":"plain","optional":true},"control_plane_as_worker":{"type":"bool","description":"Whether this machine pool is a control plane and a worker. Defaults to `false`.","description_kind":"plain","optional":true},"count":{"type":"number","description":"Number of nodes in the machine pool.","description_kind":"plain","required":true},"instance_type":{"type":"string","description":"Azure instance type from the Azure portal.","description_kind":"plain","required":true},"is_system_node_pool":{"type":"bool","description":"Whether this machine pool is a system node pool. Default value is `false'.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the machine pool. This must be unique within the cluster.","description_kind":"plain","required":true},"os_type":{"type":"string","description":"Operating system type for the machine pool. Valid values are `Linux` and `Windows`. Defaults to `Linux`.","description_kind":"plain","optional":true},"update_strategy":{"type":"string","description":"Update strategy for the machine pool. Valid values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`.","description_kind":"plain","optional":true}},"block_types":{"disk":{"nesting_mode":"list","block":{"attributes":{"size_gb":{"type":"number","description":"Size of the disk in GB.","description_kind":"plain","required":true},"type":{"type":"string","description":"Type of the disk. Valid values are `Standard_LRS`, `StandardSSD_LRS`, `Premium_LRS`.","description_kind":"plain","required":true}},"description":"Disk configuration for the machine pool.","description_kind":"plain"},"max_items":1},"taints":{"nesting_mode":"list","block":{"attributes":{"effect":{"type":"string","description":"The effect of the taint. Allowed values are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`.","description_kind":"plain","required":true},"key":{"type":"string","description":"The key of the taint.","description_kind":"plain","required":true},"value":{"type":"string","description":"The value of the taint.","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"min_items":1},"namespaces":{"nesting_mode":"list","block":{"attributes":{"images_blacklist":{"type":["list","string"],"description":"List of images to disallow for the namespace. For example, `['nginx:latest', 'redis:latest']`","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the namespace. This is the name of the Kubernetes namespace in the cluster.","description_kind":"plain","required":true},"resource_allocation":{"type":["map","string"],"description":"Resource allocation for the namespace. This is a map containing the resource type and the resource value. For example, `{cpu_cores: '2', memory_MiB: '2048'}`","description_kind":"plain","required":true}},"description_kind":"plain"}},"scan_policy":{"nesting_mode":"list","block":{"attributes":{"configuration_scan_schedule":{"type":"string","description":"The schedule for configuration scan.","description_kind":"plain","required":true},"conformance_scan_schedule":{"type":"string","description":"The schedule for conformance scan.","description_kind":"plain","required":true},"penetration_scan_schedule":{"type":"string","description":"The schedule for penetration scan.","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Resource for managing Azure clusters in Spectro Cloud through Palette.","description_kind":"plain"}},"spectrocloud_cluster_edge":{"version":2,"block":{"attributes":{"apply_setting":{"type":"string","description_kind":"plain","optional":true},"cloud_account_id":{"type":"string","description_kind":"plain","optional":true},"cloud_config_id":{"type":"string","description":"ID of the cloud config used for the cluster. This cloud config must be of type `azure`.","description_kind":"plain","deprecated":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kubeconfig":{"type":"string","description":"Kubeconfig for the cluster. This can be used to connect to the cluster using `kubectl`.","description_kind":"plain","computed":true},"name":{"type":"string","description_kind":"plain","required":true},"os_patch_after":{"type":"string","description":"Date and time after which to patch cluster `RFC3339: 2006-01-02T15:04:05Z07:00`","description_kind":"plain","optional":true},"os_patch_on_boot":{"type":"bool","description":"Whether to apply OS patch on boot. Default is `false`.","description_kind":"plain","optional":true},"os_patch_schedule":{"type":"string","description":"The cron schedule for OS patching. This must be in the form of cron syntax. Ex: `0 0 * * *`.","description_kind":"plain","optional":true},"skip_completion":{"type":"bool","description":"If `true`, the cluster will be created asynchronously. Default value is `false`.","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description":"A list of tags to be applied to the cluster. Tags must be in the form of `key:value`.","description_kind":"plain","optional":true}},"block_types":{"backup_policy":{"nesting_mode":"list","block":{"attributes":{"backup_location_id":{"type":"string","description":"The ID of the backup location to use for the backup.","description_kind":"plain","required":true},"cluster_uids":{"type":["set","string"],"description":"The list of cluster UIDs to include in the backup. If `include_all_clusters` is set to `true`, then all clusters will be included.","description_kind":"plain","optional":true},"expiry_in_hour":{"type":"number","description":"The number of hours after which the backup will be deleted. For example, if the expiry is set to 24, the backup will be deleted after 24 hours.","description_kind":"plain","required":true},"include_all_clusters":{"type":"bool","description":"Whether to include all clusters in the backup. If set to false, only the clusters specified in `cluster_uids` will be included.","description_kind":"plain","optional":true},"include_cluster_resources":{"type":"bool","description":"Whether to include the cluster resources in the backup. If set to false, only the cluster configuration and disks will be backed up.","description_kind":"plain","optional":true},"include_disks":{"type":"bool","description":"Whether to include the disks in the backup. If set to false, only the cluster configuration will be backed up.","description_kind":"plain","optional":true},"namespaces":{"type":["set","string"],"description":"The list of Kubernetes namespaces to include in the backup. If not specified, all namespaces will be included.","description_kind":"plain","optional":true},"prefix":{"type":"string","description":"Prefix for the backup name. The backup name will be of the format \u003cprefix\u003e-\u003ccluster-name\u003e-\u003ctimestamp\u003e.","description_kind":"plain","required":true},"schedule":{"type":"string","description":"The schedule for the backup. The schedule is specified in cron format. For example, to run the backup every day at 1:00 AM, the schedule should be set to `0 1 * * *`.","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"cloud_config":{"nesting_mode":"list","block":{"attributes":{"ssh_key":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"cluster_profile":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The ID of the cluster profile.","description_kind":"plain","required":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the pack. The name must be unique within the cluster profile. ","description_kind":"plain","required":true},"registry_uid":{"type":"string","description":"The registry UID of the pack. The registry UID is the unique identifier of the registry. ","description_kind":"plain","optional":true},"tag":{"type":"string","description":"The tag of the pack. The tag is the version of the pack.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the pack. The default value is `spectro`.","description_kind":"plain","optional":true},"uid":{"type":"string","description_kind":"plain","optional":true,"computed":true},"values":{"type":"string","description":"The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. ","description_kind":"plain","required":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description":"The content of the manifest. The content is the YAML content of the manifest. ","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the manifest. The name must be unique within the pack. ","description_kind":"plain","required":true},"uid":{"type":"string","description_kind":"plain","computed":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"cluster_rbac_binding":{"nesting_mode":"list","block":{"attributes":{"namespace":{"type":"string","description":"The Kubernetes namespace of the RBAC binding. Required if 'type' is set to 'RoleBinding'.","description_kind":"plain","optional":true},"role":{"type":["map","string"],"description":"The role of the RBAC binding. Required if 'type' is set to 'RoleBinding'.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the RBAC binding. Can be one of the following values: `RoleBinding`, or `ClusterRoleBinding`.","description_kind":"plain","required":true}},"block_types":{"subjects":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the subject. Required if 'type' is set to 'User' or 'Group'.","description_kind":"plain","required":true},"namespace":{"type":"string","description":"The Kubernetes namespace of the subject. Required if 'type' is set to 'ServiceAccount'.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the subject. Can be one of the following values: `User`, `Group`, or `ServiceAccount`.","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"host_config":{"nesting_mode":"list","block":{"attributes":{"external_traffic_policy":{"type":"string","description":"The external traffic policy for the cluster.","description_kind":"plain","optional":true},"host_endpoint_type":{"type":"string","description":"The type of endpoint for the cluster. Can be either 'Ingress' or 'LoadBalancer'. The default is 'Ingress'.","description_kind":"plain","optional":true},"ingress_host":{"type":"string","description":"The host for the Ingress endpoint. Required if 'host_endpoint_type' is set to 'Ingress'.","description_kind":"plain","optional":true},"load_balancer_source_ranges":{"type":"string","description":"The source ranges for the load balancer. Required if 'host_endpoint_type' is set to 'LoadBalancer'.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"location_config":{"nesting_mode":"list","block":{"attributes":{"country_code":{"type":"string","description":"The country code of the country the cluster is located in.","description_kind":"plain","optional":true},"country_name":{"type":"string","description":"The name of the country.","description_kind":"plain","optional":true},"latitude":{"type":"number","description":"The latitude coordinates value.","description_kind":"plain","required":true},"longitude":{"type":"number","description":"The longitude coordinates value.","description_kind":"plain","required":true},"region_code":{"type":"string","description":"The region code of where the cluster is located in.","description_kind":"plain","optional":true},"region_name":{"type":"string","description":"The name of the region.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"machine_pool":{"nesting_mode":"set","block":{"attributes":{"additional_labels":{"type":["map","string"],"description_kind":"plain","optional":true},"control_plane":{"type":"bool","description":"Whether this machine pool is a control plane. Defaults to `false`.","description_kind":"plain","optional":true},"control_plane_as_worker":{"type":"bool","description":"Whether this machine pool is a control plane and a worker. Defaults to `false`.","description_kind":"plain","optional":true},"count":{"type":"number","description":"Number of nodes in the machine pool.","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"update_strategy":{"type":"string","description":"Update strategy for the machine pool. Valid values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`.","description_kind":"plain","optional":true}},"block_types":{"placements":{"nesting_mode":"list","block":{"attributes":{"appliance_id":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1},"taints":{"nesting_mode":"list","block":{"attributes":{"effect":{"type":"string","description":"The effect of the taint. Allowed values are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`.","description_kind":"plain","required":true},"key":{"type":"string","description":"The key of the taint.","description_kind":"plain","required":true},"value":{"type":"string","description":"The value of the taint.","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"min_items":1},"namespaces":{"nesting_mode":"list","block":{"attributes":{"images_blacklist":{"type":["list","string"],"description":"List of images to disallow for the namespace. For example, `['nginx:latest', 'redis:latest']`","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the namespace. This is the name of the Kubernetes namespace in the cluster.","description_kind":"plain","required":true},"resource_allocation":{"type":["map","string"],"description":"Resource allocation for the namespace. This is a map containing the resource type and the resource value. For example, `{cpu_cores: '2', memory_MiB: '2048'}`","description_kind":"plain","required":true}},"description_kind":"plain"}},"scan_policy":{"nesting_mode":"list","block":{"attributes":{"configuration_scan_schedule":{"type":"string","description":"The schedule for configuration scan.","description_kind":"plain","required":true},"conformance_scan_schedule":{"type":"string","description":"The schedule for conformance scan.","description_kind":"plain","required":true},"penetration_scan_schedule":{"type":"string","description":"The schedule for penetration scan.","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Resource for managing Edge clusters in Spectro Cloud through Palette.","description_kind":"plain"}},"spectrocloud_cluster_edge_native":{"version":2,"block":{"attributes":{"apply_setting":{"type":"string","description_kind":"plain","optional":true},"cloud_account_id":{"type":"string","description_kind":"plain","optional":true},"cloud_config_id":{"type":"string","description":"ID of the cloud config used for the cluster. This cloud config must be of type `azure`.","description_kind":"plain","deprecated":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kubeconfig":{"type":"string","description":"Kubeconfig for the cluster. This can be used to connect to the cluster using `kubectl`.","description_kind":"plain","computed":true},"name":{"type":"string","description_kind":"plain","required":true},"os_patch_after":{"type":"string","description":"Date and time after which to patch cluster `RFC3339: 2006-01-02T15:04:05Z07:00`","description_kind":"plain","optional":true},"os_patch_on_boot":{"type":"bool","description":"Whether to apply OS patch on boot. Default is `false`.","description_kind":"plain","optional":true},"os_patch_schedule":{"type":"string","description":"The cron schedule for OS patching. This must be in the form of cron syntax. Ex: `0 0 * * *`.","description_kind":"plain","optional":true},"skip_completion":{"type":"bool","description":"If `true`, the cluster will be created asynchronously. Default value is `false`.","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description":"A list of tags to be applied to the cluster. Tags must be in the form of `key:value`.","description_kind":"plain","optional":true}},"block_types":{"backup_policy":{"nesting_mode":"list","block":{"attributes":{"backup_location_id":{"type":"string","description":"The ID of the backup location to use for the backup.","description_kind":"plain","required":true},"cluster_uids":{"type":["set","string"],"description":"The list of cluster UIDs to include in the backup. If `include_all_clusters` is set to `true`, then all clusters will be included.","description_kind":"plain","optional":true},"expiry_in_hour":{"type":"number","description":"The number of hours after which the backup will be deleted. For example, if the expiry is set to 24, the backup will be deleted after 24 hours.","description_kind":"plain","required":true},"include_all_clusters":{"type":"bool","description":"Whether to include all clusters in the backup. If set to false, only the clusters specified in `cluster_uids` will be included.","description_kind":"plain","optional":true},"include_cluster_resources":{"type":"bool","description":"Whether to include the cluster resources in the backup. If set to false, only the cluster configuration and disks will be backed up.","description_kind":"plain","optional":true},"include_disks":{"type":"bool","description":"Whether to include the disks in the backup. If set to false, only the cluster configuration will be backed up.","description_kind":"plain","optional":true},"namespaces":{"type":["set","string"],"description":"The list of Kubernetes namespaces to include in the backup. If not specified, all namespaces will be included.","description_kind":"plain","optional":true},"prefix":{"type":"string","description":"Prefix for the backup name. The backup name will be of the format \u003cprefix\u003e-\u003ccluster-name\u003e-\u003ctimestamp\u003e.","description_kind":"plain","required":true},"schedule":{"type":"string","description":"The schedule for the backup. The schedule is specified in cron format. For example, to run the backup every day at 1:00 AM, the schedule should be set to `0 1 * * *`.","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"cloud_config":{"nesting_mode":"list","block":{"attributes":{"ntp_servers":{"type":["set","string"],"description_kind":"plain","optional":true},"ssh_key":{"type":"string","description_kind":"plain","required":true},"vip":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"cluster_profile":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The ID of the cluster profile.","description_kind":"plain","required":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the pack. The name must be unique within the cluster profile. ","description_kind":"plain","required":true},"registry_uid":{"type":"string","description":"The registry UID of the pack. The registry UID is the unique identifier of the registry. ","description_kind":"plain","optional":true},"tag":{"type":"string","description":"The tag of the pack. The tag is the version of the pack.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the pack. The default value is `spectro`.","description_kind":"plain","optional":true},"uid":{"type":"string","description_kind":"plain","optional":true,"computed":true},"values":{"type":"string","description":"The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. ","description_kind":"plain","required":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description":"The content of the manifest. The content is the YAML content of the manifest. ","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the manifest. The name must be unique within the pack. ","description_kind":"plain","required":true},"uid":{"type":"string","description_kind":"plain","computed":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"cluster_rbac_binding":{"nesting_mode":"list","block":{"attributes":{"namespace":{"type":"string","description":"The Kubernetes namespace of the RBAC binding. Required if 'type' is set to 'RoleBinding'.","description_kind":"plain","optional":true},"role":{"type":["map","string"],"description":"The role of the RBAC binding. Required if 'type' is set to 'RoleBinding'.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the RBAC binding. Can be one of the following values: `RoleBinding`, or `ClusterRoleBinding`.","description_kind":"plain","required":true}},"block_types":{"subjects":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the subject. Required if 'type' is set to 'User' or 'Group'.","description_kind":"plain","required":true},"namespace":{"type":"string","description":"The Kubernetes namespace of the subject. Required if 'type' is set to 'ServiceAccount'.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the subject. Can be one of the following values: `User`, `Group`, or `ServiceAccount`.","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"host_config":{"nesting_mode":"list","block":{"attributes":{"external_traffic_policy":{"type":"string","description":"The external traffic policy for the cluster.","description_kind":"plain","optional":true},"host_endpoint_type":{"type":"string","description":"The type of endpoint for the cluster. Can be either 'Ingress' or 'LoadBalancer'. The default is 'Ingress'.","description_kind":"plain","optional":true},"ingress_host":{"type":"string","description":"The host for the Ingress endpoint. Required if 'host_endpoint_type' is set to 'Ingress'.","description_kind":"plain","optional":true},"load_balancer_source_ranges":{"type":"string","description":"The source ranges for the load balancer. Required if 'host_endpoint_type' is set to 'LoadBalancer'.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"location_config":{"nesting_mode":"list","block":{"attributes":{"country_code":{"type":"string","description":"The country code of the country the cluster is located in.","description_kind":"plain","optional":true},"country_name":{"type":"string","description":"The name of the country.","description_kind":"plain","optional":true},"latitude":{"type":"number","description":"The latitude coordinates value.","description_kind":"plain","required":true},"longitude":{"type":"number","description":"The longitude coordinates value.","description_kind":"plain","required":true},"region_code":{"type":"string","description":"The region code of where the cluster is located in.","description_kind":"plain","optional":true},"region_name":{"type":"string","description":"The name of the region.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"machine_pool":{"nesting_mode":"set","block":{"attributes":{"additional_labels":{"type":["map","string"],"description_kind":"plain","optional":true},"control_plane":{"type":"bool","description":"Whether this machine pool is a control plane. Defaults to `false`.","description_kind":"plain","optional":true},"control_plane_as_worker":{"type":"bool","description":"Whether this machine pool is a control plane and a worker. Defaults to `false`.","description_kind":"plain","optional":true},"host_uids":{"type":["list","string"],"description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"update_strategy":{"type":"string","description":"Update strategy for the machine pool. Valid values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`.","description_kind":"plain","optional":true}},"block_types":{"taints":{"nesting_mode":"list","block":{"attributes":{"effect":{"type":"string","description":"The effect of the taint. Allowed values are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`.","description_kind":"plain","required":true},"key":{"type":"string","description":"The key of the taint.","description_kind":"plain","required":true},"value":{"type":"string","description":"The value of the taint.","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"min_items":1},"namespaces":{"nesting_mode":"list","block":{"attributes":{"images_blacklist":{"type":["list","string"],"description":"List of images to disallow for the namespace. For example, `['nginx:latest', 'redis:latest']`","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the namespace. This is the name of the Kubernetes namespace in the cluster.","description_kind":"plain","required":true},"resource_allocation":{"type":["map","string"],"description":"Resource allocation for the namespace. This is a map containing the resource type and the resource value. For example, `{cpu_cores: '2', memory_MiB: '2048'}`","description_kind":"plain","required":true}},"description_kind":"plain"}},"scan_policy":{"nesting_mode":"list","block":{"attributes":{"configuration_scan_schedule":{"type":"string","description":"The schedule for configuration scan.","description_kind":"plain","required":true},"conformance_scan_schedule":{"type":"string","description":"The schedule for conformance scan.","description_kind":"plain","required":true},"penetration_scan_schedule":{"type":"string","description":"The schedule for penetration scan.","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Resource for managing Edge Native clusters in Spectro Cloud through Palette.","description_kind":"plain"}},"spectrocloud_cluster_edge_vsphere":{"version":0,"block":{"attributes":{"cloud_config_id":{"type":"string","description":"ID of the cloud config used for the cluster. This cloud config must be of type `azure`.","description_kind":"plain","deprecated":true,"computed":true},"edge_host_uid":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kubeconfig":{"type":"string","description":"Kubeconfig for the cluster. This can be used to connect to the cluster using `kubectl`.","description_kind":"plain","computed":true},"name":{"type":"string","description_kind":"plain","required":true},"os_patch_after":{"type":"string","description":"Date and time after which to patch cluster `RFC3339: 2006-01-02T15:04:05Z07:00`","description_kind":"plain","optional":true},"os_patch_on_boot":{"type":"bool","description":"Whether to apply OS patch on boot. Default is `false`.","description_kind":"plain","optional":true},"os_patch_schedule":{"type":"string","description":"Cron schedule for OS patching. This must be in the form of `0 0 * * *`.","description_kind":"plain","optional":true},"skip_completion":{"type":"bool","description":"If `true`, the cluster will be created asynchronously. Default value is `false`.","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description":"A list of tags to be applied to the cluster. Tags must be in the form of `key:value`.","description_kind":"plain","optional":true}},"block_types":{"backup_policy":{"nesting_mode":"list","block":{"attributes":{"backup_location_id":{"type":"string","description":"The ID of the backup location to use for the backup.","description_kind":"plain","required":true},"cluster_uids":{"type":["set","string"],"description":"The list of cluster UIDs to include in the backup. If `include_all_clusters` is set to `true`, then all clusters will be included.","description_kind":"plain","optional":true},"expiry_in_hour":{"type":"number","description":"The number of hours after which the backup will be deleted. For example, if the expiry is set to 24, the backup will be deleted after 24 hours.","description_kind":"plain","required":true},"include_all_clusters":{"type":"bool","description":"Whether to include all clusters in the backup. If set to false, only the clusters specified in `cluster_uids` will be included.","description_kind":"plain","optional":true},"include_cluster_resources":{"type":"bool","description":"Whether to include the cluster resources in the backup. If set to false, only the cluster configuration and disks will be backed up.","description_kind":"plain","optional":true},"include_disks":{"type":"bool","description":"Whether to include the disks in the backup. If set to false, only the cluster configuration will be backed up.","description_kind":"plain","optional":true},"namespaces":{"type":["set","string"],"description":"The list of Kubernetes namespaces to include in the backup. If not specified, all namespaces will be included.","description_kind":"plain","optional":true},"prefix":{"type":"string","description":"Prefix for the backup name. The backup name will be of the format \u003cprefix\u003e-\u003ccluster-name\u003e-\u003ctimestamp\u003e.","description_kind":"plain","required":true},"schedule":{"type":"string","description":"The schedule for the backup. The schedule is specified in cron format. For example, to run the backup every day at 1:00 AM, the schedule should be set to `0 1 * * *`.","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"cloud_config":{"nesting_mode":"list","block":{"attributes":{"datacenter":{"type":"string","description_kind":"plain","required":true},"folder":{"type":"string","description_kind":"plain","required":true},"image_template_folder":{"type":"string","description_kind":"plain","optional":true},"network_search_domain":{"type":"string","description_kind":"plain","optional":true},"network_type":{"type":"string","description_kind":"plain","optional":true},"ssh_key":{"type":"string","description_kind":"plain","optional":true},"static_ip":{"type":"bool","description_kind":"plain","optional":true},"vip":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"cluster_profile":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The ID of the cluster profile.","description_kind":"plain","required":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the pack. The name must be unique within the cluster profile. ","description_kind":"plain","required":true},"registry_uid":{"type":"string","description":"The registry UID of the pack. The registry UID is the unique identifier of the registry. ","description_kind":"plain","optional":true},"tag":{"type":"string","description":"The tag of the pack. The tag is the version of the pack.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the pack. The default value is `spectro`.","description_kind":"plain","optional":true},"uid":{"type":"string","description_kind":"plain","optional":true,"computed":true},"values":{"type":"string","description":"The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. ","description_kind":"plain","required":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description":"The content of the manifest. The content is the YAML content of the manifest. ","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the manifest. The name must be unique within the pack. ","description_kind":"plain","required":true},"uid":{"type":"string","description_kind":"plain","computed":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"cluster_rbac_binding":{"nesting_mode":"list","block":{"attributes":{"namespace":{"type":"string","description":"The Kubernetes namespace of the RBAC binding. Required if 'type' is set to 'RoleBinding'.","description_kind":"plain","optional":true},"role":{"type":["map","string"],"description":"The role of the RBAC binding. Required if 'type' is set to 'RoleBinding'.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the RBAC binding. Can be one of the following values: `RoleBinding`, or `ClusterRoleBinding`.","description_kind":"plain","required":true}},"block_types":{"subjects":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the subject. Required if 'type' is set to 'User' or 'Group'.","description_kind":"plain","required":true},"namespace":{"type":"string","description":"The Kubernetes namespace of the subject. Required if 'type' is set to 'ServiceAccount'.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the subject. Can be one of the following values: `User`, `Group`, or `ServiceAccount`.","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"host_config":{"nesting_mode":"list","block":{"attributes":{"external_traffic_policy":{"type":"string","description":"The external traffic policy for the cluster.","description_kind":"plain","optional":true},"host_endpoint_type":{"type":"string","description":"The type of endpoint for the cluster. Can be either 'Ingress' or 'LoadBalancer'. The default is 'Ingress'.","description_kind":"plain","optional":true},"ingress_host":{"type":"string","description":"The host for the Ingress endpoint. Required if 'host_endpoint_type' is set to 'Ingress'.","description_kind":"plain","optional":true},"load_balancer_source_ranges":{"type":"string","description":"The source ranges for the load balancer. Required if 'host_endpoint_type' is set to 'LoadBalancer'.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"location_config":{"nesting_mode":"list","block":{"attributes":{"country_code":{"type":"string","description":"The country code of the country the cluster is located in.","description_kind":"plain","optional":true},"country_name":{"type":"string","description":"The name of the country.","description_kind":"plain","optional":true},"latitude":{"type":"number","description":"The latitude coordinates value.","description_kind":"plain","required":true},"longitude":{"type":"number","description":"The longitude coordinates value.","description_kind":"plain","required":true},"region_code":{"type":"string","description":"The region code of where the cluster is located in.","description_kind":"plain","optional":true},"region_name":{"type":"string","description":"The name of the region.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"machine_pool":{"nesting_mode":"list","block":{"attributes":{"additional_labels":{"type":["map","string"],"description_kind":"plain","optional":true},"control_plane":{"type":"bool","description":"Whether this machine pool is a control plane. Defaults to `false`.","description_kind":"plain","optional":true},"control_plane_as_worker":{"type":"bool","description":"Whether this machine pool is a control plane and a worker. Defaults to `false`.","description_kind":"plain","optional":true},"count":{"type":"number","description":"Number of nodes in the machine pool.","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"update_strategy":{"type":"string","description":"Update strategy for the machine pool. Valid values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`.","description_kind":"plain","optional":true}},"block_types":{"instance_type":{"nesting_mode":"list","block":{"attributes":{"cpu":{"type":"number","description_kind":"plain","required":true},"disk_size_gb":{"type":"number","description_kind":"plain","required":true},"memory_mb":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"placement":{"nesting_mode":"list","block":{"attributes":{"cluster":{"type":"string","description_kind":"plain","required":true},"datastore":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","computed":true},"network":{"type":"string","description_kind":"plain","required":true},"resource_pool":{"type":"string","description_kind":"plain","required":true},"static_ip_pool_id":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1},"taints":{"nesting_mode":"list","block":{"attributes":{"effect":{"type":"string","description":"The effect of the taint. Allowed values are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`.","description_kind":"plain","required":true},"key":{"type":"string","description":"The key of the taint.","description_kind":"plain","required":true},"value":{"type":"string","description":"The value of the taint.","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"min_items":1},"namespaces":{"nesting_mode":"list","block":{"attributes":{"images_blacklist":{"type":["list","string"],"description":"List of images to disallow for the namespace. For example, `['nginx:latest', 'redis:latest']`","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the namespace. This is the name of the Kubernetes namespace in the cluster.","description_kind":"plain","required":true},"resource_allocation":{"type":["map","string"],"description":"Resource allocation for the namespace. This is a map containing the resource type and the resource value. For example, `{cpu_cores: '2', memory_MiB: '2048'}`","description_kind":"plain","required":true}},"description_kind":"plain"}},"scan_policy":{"nesting_mode":"list","block":{"attributes":{"configuration_scan_schedule":{"type":"string","description":"The schedule for configuration scan.","description_kind":"plain","required":true},"conformance_scan_schedule":{"type":"string","description":"The schedule for conformance scan.","description_kind":"plain","required":true},"penetration_scan_schedule":{"type":"string","description":"The schedule for penetration scan.","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_cluster_eks":{"version":2,"block":{"attributes":{"apply_setting":{"type":"string","description_kind":"plain","optional":true},"cloud_account_id":{"type":"string","description":"The AWS cloud account id to use for this cluster.","description_kind":"plain","required":true},"cloud_config_id":{"type":"string","description":"ID of the cloud config used for the cluster. This cloud config must be of type `azure`.","description_kind":"plain","deprecated":true,"computed":true},"context":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kubeconfig":{"type":"string","description":"Kubeconfig for the cluster. This can be used to connect to the cluster using `kubectl`.","description_kind":"plain","computed":true},"location_config":{"type":["list",["object",{"country_code":"string","country_name":"string","latitude":"number","longitude":"number","region_code":"string","region_name":"string"}]],"description_kind":"plain","computed":true},"name":{"type":"string","description":"The name of the cluster.","description_kind":"plain","required":true},"os_patch_after":{"type":"string","description":"Date and time after which to patch cluster `RFC3339: 2006-01-02T15:04:05Z07:00`","description_kind":"plain","optional":true},"os_patch_on_boot":{"type":"bool","description":"Whether to apply OS patch on boot. Default is `false`.","description_kind":"plain","optional":true},"os_patch_schedule":{"type":"string","description":"Cron schedule for OS patching. This must be in the form of `0 0 * * *`.","description_kind":"plain","optional":true},"skip_completion":{"type":"bool","description":"If `true`, the cluster will be created asynchronously. Default value is `false`.","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description":"A list of tags to be applied to the cluster. Tags must be in the form of `key:value`.","description_kind":"plain","optional":true}},"block_types":{"backup_policy":{"nesting_mode":"list","block":{"attributes":{"backup_location_id":{"type":"string","description":"The ID of the backup location to use for the backup.","description_kind":"plain","required":true},"cluster_uids":{"type":["set","string"],"description":"The list of cluster UIDs to include in the backup. If `include_all_clusters` is set to `true`, then all clusters will be included.","description_kind":"plain","optional":true},"expiry_in_hour":{"type":"number","description":"The number of hours after which the backup will be deleted. For example, if the expiry is set to 24, the backup will be deleted after 24 hours.","description_kind":"plain","required":true},"include_all_clusters":{"type":"bool","description":"Whether to include all clusters in the backup. If set to false, only the clusters specified in `cluster_uids` will be included.","description_kind":"plain","optional":true},"include_cluster_resources":{"type":"bool","description":"Whether to include the cluster resources in the backup. If set to false, only the cluster configuration and disks will be backed up.","description_kind":"plain","optional":true},"include_disks":{"type":"bool","description":"Whether to include the disks in the backup. If set to false, only the cluster configuration will be backed up.","description_kind":"plain","optional":true},"namespaces":{"type":["set","string"],"description":"The list of Kubernetes namespaces to include in the backup. If not specified, all namespaces will be included.","description_kind":"plain","optional":true},"prefix":{"type":"string","description":"Prefix for the backup name. The backup name will be of the format \u003cprefix\u003e-\u003ccluster-name\u003e-\u003ctimestamp\u003e.","description_kind":"plain","required":true},"schedule":{"type":"string","description":"The schedule for the backup. The schedule is specified in cron format. For example, to run the backup every day at 1:00 AM, the schedule should be set to `0 1 * * *`.","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"cloud_config":{"nesting_mode":"list","block":{"attributes":{"az_subnets":{"type":["map","string"],"description":"Mutually exclusive with `azs`. Use for Static provisioning.","description_kind":"plain","optional":true},"azs":{"type":["list","string"],"description":"Mutually exclusive with `az_subnets`. Use for Dynamic provisioning.","description_kind":"plain","optional":true},"encryption_config_arn":{"type":"string","description_kind":"plain","optional":true},"endpoint_access":{"type":"string","description_kind":"plain","optional":true},"public_access_cidrs":{"type":["set","string"],"description_kind":"plain","optional":true},"region":{"type":"string","description_kind":"plain","required":true},"ssh_key_name":{"type":"string","description_kind":"plain","optional":true},"vpc_id":{"type":"string","description_kind":"plain","optional":true}},"description":"The AWS environment configuration settings such as network parameters and encryption parameters that apply to this cluster.","description_kind":"plain"},"min_items":1,"max_items":1},"cluster_profile":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The ID of the cluster profile.","description_kind":"plain","required":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the pack. The name must be unique within the cluster profile. ","description_kind":"plain","required":true},"registry_uid":{"type":"string","description":"The registry UID of the pack. The registry UID is the unique identifier of the registry. ","description_kind":"plain","optional":true},"tag":{"type":"string","description":"The tag of the pack. The tag is the version of the pack.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the pack. The default value is `spectro`.","description_kind":"plain","optional":true},"uid":{"type":"string","description_kind":"plain","optional":true,"computed":true},"values":{"type":"string","description":"The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. ","description_kind":"plain","required":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description":"The content of the manifest. The content is the YAML content of the manifest. ","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the manifest. The name must be unique within the pack. ","description_kind":"plain","required":true},"uid":{"type":"string","description_kind":"plain","computed":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"cluster_rbac_binding":{"nesting_mode":"list","block":{"attributes":{"namespace":{"type":"string","description":"The Kubernetes namespace of the RBAC binding. Required if 'type' is set to 'RoleBinding'.","description_kind":"plain","optional":true},"role":{"type":["map","string"],"description":"The role of the RBAC binding. Required if 'type' is set to 'RoleBinding'.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the RBAC binding. Can be one of the following values: `RoleBinding`, or `ClusterRoleBinding`.","description_kind":"plain","required":true}},"block_types":{"subjects":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the subject. Required if 'type' is set to 'User' or 'Group'.","description_kind":"plain","required":true},"namespace":{"type":"string","description":"The Kubernetes namespace of the subject. Required if 'type' is set to 'ServiceAccount'.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the subject. Can be one of the following values: `User`, `Group`, or `ServiceAccount`.","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"fargate_profile":{"nesting_mode":"list","block":{"attributes":{"additional_tags":{"type":["map","string"],"description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"subnets":{"type":["list","string"],"description_kind":"plain","optional":true}},"block_types":{"selector":{"nesting_mode":"list","block":{"attributes":{"labels":{"type":["map","string"],"description_kind":"plain","optional":true},"namespace":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"}},"host_config":{"nesting_mode":"list","block":{"attributes":{"external_traffic_policy":{"type":"string","description":"The external traffic policy for the cluster.","description_kind":"plain","optional":true},"host_endpoint_type":{"type":"string","description":"The type of endpoint for the cluster. Can be either 'Ingress' or 'LoadBalancer'. The default is 'Ingress'.","description_kind":"plain","optional":true},"ingress_host":{"type":"string","description":"The host for the Ingress endpoint. Required if 'host_endpoint_type' is set to 'Ingress'.","description_kind":"plain","optional":true},"load_balancer_source_ranges":{"type":"string","description":"The source ranges for the load balancer. Required if 'host_endpoint_type' is set to 'LoadBalancer'.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"machine_pool":{"nesting_mode":"list","block":{"attributes":{"additional_labels":{"type":["map","string"],"description_kind":"plain","optional":true},"az_subnets":{"type":["map","string"],"description_kind":"plain","optional":true},"azs":{"type":["list","string"],"description_kind":"plain","optional":true},"capacity_type":{"type":"string","description":"Capacity type is an instance type, can be 'on-demand' or 'spot'. Defaults to 'on-demand'.","description_kind":"plain","optional":true},"count":{"type":"number","description":"Number of nodes in the machine pool.","description_kind":"plain","required":true},"disk_size_gb":{"type":"number","description_kind":"plain","required":true},"instance_type":{"type":"string","description_kind":"plain","required":true},"max":{"type":"number","description_kind":"plain","optional":true},"max_price":{"type":"string","description_kind":"plain","optional":true},"min":{"type":"number","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"update_strategy":{"type":"string","description":"Update strategy for the machine pool. Valid values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`.","description_kind":"plain","optional":true}},"block_types":{"taints":{"nesting_mode":"list","block":{"attributes":{"effect":{"type":"string","description":"The effect of the taint. Allowed values are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`.","description_kind":"plain","required":true},"key":{"type":"string","description":"The key of the taint.","description_kind":"plain","required":true},"value":{"type":"string","description":"The value of the taint.","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description":"The machine pool configuration for the cluster.","description_kind":"plain"},"min_items":1},"namespaces":{"nesting_mode":"list","block":{"attributes":{"images_blacklist":{"type":["list","string"],"description":"List of images to disallow for the namespace. For example, `['nginx:latest', 'redis:latest']`","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the namespace. This is the name of the Kubernetes namespace in the cluster.","description_kind":"plain","required":true},"resource_allocation":{"type":["map","string"],"description":"Resource allocation for the namespace. This is a map containing the resource type and the resource value. For example, `{cpu_cores: '2', memory_MiB: '2048'}`","description_kind":"plain","required":true}},"description_kind":"plain"}},"scan_policy":{"nesting_mode":"list","block":{"attributes":{"configuration_scan_schedule":{"type":"string","description":"The schedule for configuration scan.","description_kind":"plain","required":true},"conformance_scan_schedule":{"type":"string","description":"The schedule for conformance scan.","description_kind":"plain","required":true},"penetration_scan_schedule":{"type":"string","description":"The schedule for penetration scan.","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Resource for managing EKS clusters in Spectro Cloud through Palette.","description_kind":"plain"}},"spectrocloud_cluster_gcp":{"version":2,"block":{"attributes":{"apply_setting":{"type":"string","description_kind":"plain","optional":true},"cloud_account_id":{"type":"string","description_kind":"plain","required":true},"cloud_config_id":{"type":"string","description":"ID of the cloud config used for the cluster. This cloud config must be of type `azure`.","description_kind":"plain","deprecated":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kubeconfig":{"type":"string","description":"Kubeconfig for the cluster. This can be used to connect to the cluster using `kubectl`.","description_kind":"plain","computed":true},"location_config":{"type":["list",["object",{"country_code":"string","country_name":"string","latitude":"number","longitude":"number","region_code":"string","region_name":"string"}]],"description_kind":"plain","computed":true},"name":{"type":"string","description_kind":"plain","required":true},"os_patch_after":{"type":"string","description":"Date and time after which to patch cluster `RFC3339: 2006-01-02T15:04:05Z07:00`","description_kind":"plain","optional":true},"os_patch_on_boot":{"type":"bool","description":"Whether to apply OS patch on boot. Default is `false`.","description_kind":"plain","optional":true},"os_patch_schedule":{"type":"string","description":"Cron schedule for OS patching. This must be in the form of `0 0 * * *`.","description_kind":"plain","optional":true},"skip_completion":{"type":"bool","description":"If `true`, the cluster will be created asynchronously. Default value is `false`.","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description":"A list of tags to be applied to the cluster. Tags must be in the form of `key:value`.","description_kind":"plain","optional":true}},"block_types":{"backup_policy":{"nesting_mode":"list","block":{"attributes":{"backup_location_id":{"type":"string","description":"The ID of the backup location to use for the backup.","description_kind":"plain","required":true},"cluster_uids":{"type":["set","string"],"description":"The list of cluster UIDs to include in the backup. If `include_all_clusters` is set to `true`, then all clusters will be included.","description_kind":"plain","optional":true},"expiry_in_hour":{"type":"number","description":"The number of hours after which the backup will be deleted. For example, if the expiry is set to 24, the backup will be deleted after 24 hours.","description_kind":"plain","required":true},"include_all_clusters":{"type":"bool","description":"Whether to include all clusters in the backup. If set to false, only the clusters specified in `cluster_uids` will be included.","description_kind":"plain","optional":true},"include_cluster_resources":{"type":"bool","description":"Whether to include the cluster resources in the backup. If set to false, only the cluster configuration and disks will be backed up.","description_kind":"plain","optional":true},"include_disks":{"type":"bool","description":"Whether to include the disks in the backup. If set to false, only the cluster configuration will be backed up.","description_kind":"plain","optional":true},"namespaces":{"type":["set","string"],"description":"The list of Kubernetes namespaces to include in the backup. If not specified, all namespaces will be included.","description_kind":"plain","optional":true},"prefix":{"type":"string","description":"Prefix for the backup name. The backup name will be of the format \u003cprefix\u003e-\u003ccluster-name\u003e-\u003ctimestamp\u003e.","description_kind":"plain","required":true},"schedule":{"type":"string","description":"The schedule for the backup. The schedule is specified in cron format. For example, to run the backup every day at 1:00 AM, the schedule should be set to `0 1 * * *`.","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"cloud_config":{"nesting_mode":"list","block":{"attributes":{"network":{"type":"string","description_kind":"plain","optional":true},"project":{"type":"string","description_kind":"plain","required":true},"region":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"cluster_profile":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The ID of the cluster profile.","description_kind":"plain","required":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the pack. The name must be unique within the cluster profile. ","description_kind":"plain","required":true},"registry_uid":{"type":"string","description":"The registry UID of the pack. The registry UID is the unique identifier of the registry. ","description_kind":"plain","optional":true},"tag":{"type":"string","description":"The tag of the pack. The tag is the version of the pack.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the pack. The default value is `spectro`.","description_kind":"plain","optional":true},"uid":{"type":"string","description_kind":"plain","optional":true,"computed":true},"values":{"type":"string","description":"The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. ","description_kind":"plain","required":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description":"The content of the manifest. The content is the YAML content of the manifest. ","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the manifest. The name must be unique within the pack. ","description_kind":"plain","required":true},"uid":{"type":"string","description_kind":"plain","computed":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"cluster_rbac_binding":{"nesting_mode":"list","block":{"attributes":{"namespace":{"type":"string","description":"The Kubernetes namespace of the RBAC binding. Required if 'type' is set to 'RoleBinding'.","description_kind":"plain","optional":true},"role":{"type":["map","string"],"description":"The role of the RBAC binding. Required if 'type' is set to 'RoleBinding'.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the RBAC binding. Can be one of the following values: `RoleBinding`, or `ClusterRoleBinding`.","description_kind":"plain","required":true}},"block_types":{"subjects":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the subject. Required if 'type' is set to 'User' or 'Group'.","description_kind":"plain","required":true},"namespace":{"type":"string","description":"The Kubernetes namespace of the subject. Required if 'type' is set to 'ServiceAccount'.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the subject. Can be one of the following values: `User`, `Group`, or `ServiceAccount`.","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"host_config":{"nesting_mode":"list","block":{"attributes":{"external_traffic_policy":{"type":"string","description":"The external traffic policy for the cluster.","description_kind":"plain","optional":true},"host_endpoint_type":{"type":"string","description":"The type of endpoint for the cluster. Can be either 'Ingress' or 'LoadBalancer'. The default is 'Ingress'.","description_kind":"plain","optional":true},"ingress_host":{"type":"string","description":"The host for the Ingress endpoint. Required if 'host_endpoint_type' is set to 'Ingress'.","description_kind":"plain","optional":true},"load_balancer_source_ranges":{"type":"string","description":"The source ranges for the load balancer. Required if 'host_endpoint_type' is set to 'LoadBalancer'.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"machine_pool":{"nesting_mode":"set","block":{"attributes":{"additional_labels":{"type":["map","string"],"description_kind":"plain","optional":true},"azs":{"type":["set","string"],"description_kind":"plain","required":true},"control_plane":{"type":"bool","description":"Whether this machine pool is a control plane. Defaults to `false`.","description_kind":"plain","optional":true},"control_plane_as_worker":{"type":"bool","description":"Whether this machine pool is a control plane and a worker. Defaults to `false`.","description_kind":"plain","optional":true},"count":{"type":"number","description":"Number of nodes in the machine pool.","description_kind":"plain","required":true},"disk_size_gb":{"type":"number","description_kind":"plain","optional":true},"instance_type":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"update_strategy":{"type":"string","description":"Update strategy for the machine pool. Valid values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`.","description_kind":"plain","optional":true}},"block_types":{"taints":{"nesting_mode":"list","block":{"attributes":{"effect":{"type":"string","description":"The effect of the taint. Allowed values are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`.","description_kind":"plain","required":true},"key":{"type":"string","description":"The key of the taint.","description_kind":"plain","required":true},"value":{"type":"string","description":"The value of the taint.","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"min_items":1},"namespaces":{"nesting_mode":"list","block":{"attributes":{"images_blacklist":{"type":["list","string"],"description":"List of images to disallow for the namespace. For example, `['nginx:latest', 'redis:latest']`","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the namespace. This is the name of the Kubernetes namespace in the cluster.","description_kind":"plain","required":true},"resource_allocation":{"type":["map","string"],"description":"Resource allocation for the namespace. This is a map containing the resource type and the resource value. For example, `{cpu_cores: '2', memory_MiB: '2048'}`","description_kind":"plain","required":true}},"description_kind":"plain"}},"scan_policy":{"nesting_mode":"list","block":{"attributes":{"configuration_scan_schedule":{"type":"string","description":"The schedule for configuration scan.","description_kind":"plain","required":true},"conformance_scan_schedule":{"type":"string","description":"The schedule for conformance scan.","description_kind":"plain","required":true},"penetration_scan_schedule":{"type":"string","description":"The schedule for penetration scan.","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Resource for managing GCP clusters in Spectro Cloud through Palette.","description_kind":"plain"}},"spectrocloud_cluster_group":{"version":2,"block":{"attributes":{"context":{"type":"string","description":"The context of the Cluster group. Allowed values are 'project' or 'tenant'. Defaults to 'tenant'.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the cluster group","description_kind":"plain","required":true},"tags":{"type":["set","string"],"description":"A list of tags to be applied to the cluster group. Tags must be in the form of `key:value`.","description_kind":"plain","optional":true}},"block_types":{"clusters":{"nesting_mode":"list","block":{"attributes":{"cluster_uid":{"type":"string","description":"The UID of the host cluster.","description_kind":"plain","required":true},"host_dns":{"type":"string","description":"The host DNS wildcard for the cluster. i.e. `*.dev` or `*test.com`","description_kind":"plain","optional":true}},"description":"A list of clusters to include in the cluster group.","description_kind":"plain"}},"config":{"nesting_mode":"list","block":{"attributes":{"cpu_millicore":{"type":"number","description":"The CPU limit in millicores.","description_kind":"plain","optional":true},"host_endpoint_type":{"type":"string","description":"The host endpoint type. Allowed values are 'Ingress' or 'LoadBalancer'. Defaults to 'Ingress'.","description_kind":"plain","optional":true},"memory_in_mb":{"type":"number","description":"The memory limit in megabytes (MB).","description_kind":"plain","optional":true},"oversubscription_percent":{"type":"number","description":"The allowed oversubscription percentage.","description_kind":"plain","optional":true},"storage_in_gb":{"type":"number","description":"The storage limit in gigabytes (GB).","description_kind":"plain","optional":true},"values":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_cluster_import":{"version":2,"block":{"attributes":{"cloud":{"type":"string","description_kind":"plain","required":true},"cloud_config_id":{"type":"string","description":"ID of the cloud config used for the cluster. This cloud config must be of type `azure`.","description_kind":"plain","deprecated":true,"computed":true},"cluster_import_manifest":{"type":"string","description_kind":"plain","computed":true},"cluster_import_manifest_apply_command":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true},"tags":{"type":["set","string"],"description":"A list of tags to be applied to the cluster. Tags must be in the form of `key:value`.","description_kind":"plain","optional":true}},"block_types":{"cluster_profile":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The ID of the cluster profile.","description_kind":"plain","required":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the pack. The name must be unique within the cluster profile. ","description_kind":"plain","required":true},"registry_uid":{"type":"string","description":"The registry UID of the pack. The registry UID is the unique identifier of the registry. ","description_kind":"plain","optional":true},"tag":{"type":"string","description":"The tag of the pack. The tag is the version of the pack.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the pack. The default value is `spectro`.","description_kind":"plain","optional":true},"uid":{"type":"string","description_kind":"plain","optional":true,"computed":true},"values":{"type":"string","description":"The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. ","description_kind":"plain","required":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description":"The content of the manifest. The content is the YAML content of the manifest. ","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the manifest. The name must be unique within the pack. ","description_kind":"plain","required":true},"uid":{"type":"string","description_kind":"plain","computed":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_cluster_libvirt":{"version":2,"block":{"attributes":{"apply_setting":{"type":"string","description_kind":"plain","optional":true},"cloud_account_id":{"type":"string","description_kind":"plain","optional":true},"cloud_config_id":{"type":"string","description":"ID of the cloud config used for the cluster. This cloud config must be of type `azure`.","description_kind":"plain","deprecated":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kubeconfig":{"type":"string","description":"Kubeconfig for the cluster. This can be used to connect to the cluster using `kubectl`.","description_kind":"plain","computed":true},"name":{"type":"string","description_kind":"plain","required":true},"os_patch_after":{"type":"string","description":"Date and time after which to patch cluster `RFC3339: 2006-01-02T15:04:05Z07:00`","description_kind":"plain","optional":true},"os_patch_on_boot":{"type":"bool","description":"Whether to apply OS patch on boot. Default is `false`.","description_kind":"plain","optional":true},"os_patch_schedule":{"type":"string","description":"Cron schedule for OS patching. This must be in the form of `0 0 * * *`.","description_kind":"plain","optional":true},"skip_completion":{"type":"bool","description":"If `true`, the cluster will be created asynchronously. Default value is `false`.","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description":"A list of tags to be applied to the cluster. Tags must be in the form of `key:value`.","description_kind":"plain","optional":true}},"block_types":{"backup_policy":{"nesting_mode":"list","block":{"attributes":{"backup_location_id":{"type":"string","description":"The ID of the backup location to use for the backup.","description_kind":"plain","required":true},"cluster_uids":{"type":["set","string"],"description":"The list of cluster UIDs to include in the backup. If `include_all_clusters` is set to `true`, then all clusters will be included.","description_kind":"plain","optional":true},"expiry_in_hour":{"type":"number","description":"The number of hours after which the backup will be deleted. For example, if the expiry is set to 24, the backup will be deleted after 24 hours.","description_kind":"plain","required":true},"include_all_clusters":{"type":"bool","description":"Whether to include all clusters in the backup. If set to false, only the clusters specified in `cluster_uids` will be included.","description_kind":"plain","optional":true},"include_cluster_resources":{"type":"bool","description":"Whether to include the cluster resources in the backup. If set to false, only the cluster configuration and disks will be backed up.","description_kind":"plain","optional":true},"include_disks":{"type":"bool","description":"Whether to include the disks in the backup. If set to false, only the cluster configuration will be backed up.","description_kind":"plain","optional":true},"namespaces":{"type":["set","string"],"description":"The list of Kubernetes namespaces to include in the backup. If not specified, all namespaces will be included.","description_kind":"plain","optional":true},"prefix":{"type":"string","description":"Prefix for the backup name. The backup name will be of the format \u003cprefix\u003e-\u003ccluster-name\u003e-\u003ctimestamp\u003e.","description_kind":"plain","required":true},"schedule":{"type":"string","description":"The schedule for the backup. The schedule is specified in cron format. For example, to run the backup every day at 1:00 AM, the schedule should be set to `0 1 * * *`.","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"cloud_config":{"nesting_mode":"list","block":{"attributes":{"ntp_servers":{"type":["set","string"],"description_kind":"plain","optional":true},"ssh_key":{"type":"string","description_kind":"plain","required":true},"vip":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"cluster_profile":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The ID of the cluster profile.","description_kind":"plain","required":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the pack. The name must be unique within the cluster profile. ","description_kind":"plain","required":true},"registry_uid":{"type":"string","description":"The registry UID of the pack. The registry UID is the unique identifier of the registry. ","description_kind":"plain","optional":true},"tag":{"type":"string","description":"The tag of the pack. The tag is the version of the pack.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the pack. The default value is `spectro`.","description_kind":"plain","optional":true},"uid":{"type":"string","description_kind":"plain","optional":true,"computed":true},"values":{"type":"string","description":"The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. ","description_kind":"plain","required":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description":"The content of the manifest. The content is the YAML content of the manifest. ","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the manifest. The name must be unique within the pack. ","description_kind":"plain","required":true},"uid":{"type":"string","description_kind":"plain","computed":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"cluster_rbac_binding":{"nesting_mode":"list","block":{"attributes":{"namespace":{"type":"string","description":"The Kubernetes namespace of the RBAC binding. Required if 'type' is set to 'RoleBinding'.","description_kind":"plain","optional":true},"role":{"type":["map","string"],"description":"The role of the RBAC binding. Required if 'type' is set to 'RoleBinding'.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the RBAC binding. Can be one of the following values: `RoleBinding`, or `ClusterRoleBinding`.","description_kind":"plain","required":true}},"block_types":{"subjects":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the subject. Required if 'type' is set to 'User' or 'Group'.","description_kind":"plain","required":true},"namespace":{"type":"string","description":"The Kubernetes namespace of the subject. Required if 'type' is set to 'ServiceAccount'.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the subject. Can be one of the following values: `User`, `Group`, or `ServiceAccount`.","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"host_config":{"nesting_mode":"list","block":{"attributes":{"external_traffic_policy":{"type":"string","description":"The external traffic policy for the cluster.","description_kind":"plain","optional":true},"host_endpoint_type":{"type":"string","description":"The type of endpoint for the cluster. Can be either 'Ingress' or 'LoadBalancer'. The default is 'Ingress'.","description_kind":"plain","optional":true},"ingress_host":{"type":"string","description":"The host for the Ingress endpoint. Required if 'host_endpoint_type' is set to 'Ingress'.","description_kind":"plain","optional":true},"load_balancer_source_ranges":{"type":"string","description":"The source ranges for the load balancer. Required if 'host_endpoint_type' is set to 'LoadBalancer'.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"location_config":{"nesting_mode":"list","block":{"attributes":{"country_code":{"type":"string","description":"The country code of the country the cluster is located in.","description_kind":"plain","optional":true},"country_name":{"type":"string","description":"The name of the country.","description_kind":"plain","optional":true},"latitude":{"type":"number","description":"The latitude coordinates value.","description_kind":"plain","required":true},"longitude":{"type":"number","description":"The longitude coordinates value.","description_kind":"plain","required":true},"region_code":{"type":"string","description":"The region code of where the cluster is located in.","description_kind":"plain","optional":true},"region_name":{"type":"string","description":"The name of the region.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"machine_pool":{"nesting_mode":"list","block":{"attributes":{"additional_labels":{"type":["map","string"],"description_kind":"plain","optional":true},"control_plane":{"type":"bool","description":"Whether this machine pool is a control plane. Defaults to `false`.","description_kind":"plain","optional":true},"control_plane_as_worker":{"type":"bool","description":"Whether this machine pool is a control plane and a worker. Defaults to `false`.","description_kind":"plain","optional":true},"count":{"type":"number","description":"Number of nodes in the machine pool.","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"update_strategy":{"type":"string","description":"Update strategy for the machine pool. Valid values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`.","description_kind":"plain","optional":true}},"block_types":{"instance_type":{"nesting_mode":"list","block":{"attributes":{"cache_passthrough":{"type":"bool","description_kind":"plain","optional":true},"cpu":{"type":"number","description_kind":"plain","required":true},"cpus_sets":{"type":"string","description_kind":"plain","optional":true},"disk_size_gb":{"type":"number","description_kind":"plain","required":true},"memory_mb":{"type":"number","description_kind":"plain","required":true}},"block_types":{"attached_disks":{"nesting_mode":"list","block":{"attributes":{"managed":{"type":"bool","description_kind":"plain","optional":true},"size_in_gb":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"}},"gpu_config":{"nesting_mode":"list","block":{"attributes":{"addresses":{"type":["map","string"],"description_kind":"plain","optional":true},"device_model":{"type":"string","description_kind":"plain","required":true},"num_gpus":{"type":"number","description_kind":"plain","required":true},"vendor":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"min_items":1,"max_items":1},"placements":{"nesting_mode":"list","block":{"attributes":{"appliance_id":{"type":"string","description_kind":"plain","required":true},"data_storage_pool":{"type":"string","description_kind":"plain","required":true},"image_storage_pool":{"type":"string","description_kind":"plain","required":true},"network":{"type":"string","description_kind":"plain","optional":true},"network_names":{"type":"string","description_kind":"plain","required":true},"network_type":{"type":"string","description_kind":"plain","required":true},"target_storage_pool":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1},"taints":{"nesting_mode":"list","block":{"attributes":{"effect":{"type":"string","description":"The effect of the taint. Allowed values are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`.","description_kind":"plain","required":true},"key":{"type":"string","description":"The key of the taint.","description_kind":"plain","required":true},"value":{"type":"string","description":"The value of the taint.","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"min_items":1},"namespaces":{"nesting_mode":"list","block":{"attributes":{"images_blacklist":{"type":["list","string"],"description":"List of images to disallow for the namespace. For example, `['nginx:latest', 'redis:latest']`","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the namespace. This is the name of the Kubernetes namespace in the cluster.","description_kind":"plain","required":true},"resource_allocation":{"type":["map","string"],"description":"Resource allocation for the namespace. This is a map containing the resource type and the resource value. For example, `{cpu_cores: '2', memory_MiB: '2048'}`","description_kind":"plain","required":true}},"description_kind":"plain"}},"scan_policy":{"nesting_mode":"list","block":{"attributes":{"configuration_scan_schedule":{"type":"string","description":"The schedule for configuration scan.","description_kind":"plain","required":true},"conformance_scan_schedule":{"type":"string","description":"The schedule for conformance scan.","description_kind":"plain","required":true},"penetration_scan_schedule":{"type":"string","description":"The schedule for penetration scan.","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Resource for managing Libvirt clusters in Spectro Cloud through Palette.","description_kind":"plain"}},"spectrocloud_cluster_maas":{"version":2,"block":{"attributes":{"apply_setting":{"type":"string","description_kind":"plain","optional":true},"cloud_account_id":{"type":"string","description_kind":"plain","optional":true},"cloud_config_id":{"type":"string","description":"ID of the cloud config used for the cluster. This cloud config must be of type `azure`.","description_kind":"plain","deprecated":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kubeconfig":{"type":"string","description":"Kubeconfig for the cluster. This can be used to connect to the cluster using `kubectl`.","description_kind":"plain","computed":true},"name":{"type":"string","description_kind":"plain","required":true},"os_patch_after":{"type":"string","description":"The date and time after which to patch the cluster. Prefix the time value with the respective RFC. Ex: `RFC3339: 2006-01-02T15:04:05Z07:00`","description_kind":"plain","optional":true},"os_patch_on_boot":{"type":"bool","description":"Whether to apply OS patch on boot. Default is `false`.","description_kind":"plain","optional":true},"os_patch_schedule":{"type":"string","description":"Cron schedule for OS patching. This must be in the form of `0 0 * * *`.","description_kind":"plain","optional":true},"skip_completion":{"type":"bool","description":"If `true`, the cluster will be created asynchronously. Default value is `false`.","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description":"A list of tags to be applied to the cluster. Tags must be in the form of `key:value`.","description_kind":"plain","optional":true}},"block_types":{"backup_policy":{"nesting_mode":"list","block":{"attributes":{"backup_location_id":{"type":"string","description":"The ID of the backup location to use for the backup.","description_kind":"plain","required":true},"cluster_uids":{"type":["set","string"],"description":"The list of cluster UIDs to include in the backup. If `include_all_clusters` is set to `true`, then all clusters will be included.","description_kind":"plain","optional":true},"expiry_in_hour":{"type":"number","description":"The number of hours after which the backup will be deleted. For example, if the expiry is set to 24, the backup will be deleted after 24 hours.","description_kind":"plain","required":true},"include_all_clusters":{"type":"bool","description":"Whether to include all clusters in the backup. If set to false, only the clusters specified in `cluster_uids` will be included.","description_kind":"plain","optional":true},"include_cluster_resources":{"type":"bool","description":"Whether to include the cluster resources in the backup. If set to false, only the cluster configuration and disks will be backed up.","description_kind":"plain","optional":true},"include_disks":{"type":"bool","description":"Whether to include the disks in the backup. If set to false, only the cluster configuration will be backed up.","description_kind":"plain","optional":true},"namespaces":{"type":["set","string"],"description":"The list of Kubernetes namespaces to include in the backup. If not specified, all namespaces will be included.","description_kind":"plain","optional":true},"prefix":{"type":"string","description":"Prefix for the backup name. The backup name will be of the format \u003cprefix\u003e-\u003ccluster-name\u003e-\u003ctimestamp\u003e.","description_kind":"plain","required":true},"schedule":{"type":"string","description":"The schedule for the backup. The schedule is specified in cron format. For example, to run the backup every day at 1:00 AM, the schedule should be set to `0 1 * * *`.","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"cloud_config":{"nesting_mode":"list","block":{"attributes":{"domain":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"cluster_profile":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The ID of the cluster profile.","description_kind":"plain","required":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the pack. The name must be unique within the cluster profile. ","description_kind":"plain","required":true},"registry_uid":{"type":"string","description":"The registry UID of the pack. The registry UID is the unique identifier of the registry. ","description_kind":"plain","optional":true},"tag":{"type":"string","description":"The tag of the pack. The tag is the version of the pack.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the pack. The default value is `spectro`.","description_kind":"plain","optional":true},"uid":{"type":"string","description_kind":"plain","optional":true,"computed":true},"values":{"type":"string","description":"The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. ","description_kind":"plain","required":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description":"The content of the manifest. The content is the YAML content of the manifest. ","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the manifest. The name must be unique within the pack. ","description_kind":"plain","required":true},"uid":{"type":"string","description_kind":"plain","computed":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"cluster_rbac_binding":{"nesting_mode":"list","block":{"attributes":{"namespace":{"type":"string","description":"The Kubernetes namespace of the RBAC binding. Required if 'type' is set to 'RoleBinding'.","description_kind":"plain","optional":true},"role":{"type":["map","string"],"description":"The role of the RBAC binding. Required if 'type' is set to 'RoleBinding'.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the RBAC binding. Can be one of the following values: `RoleBinding`, or `ClusterRoleBinding`.","description_kind":"plain","required":true}},"block_types":{"subjects":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the subject. Required if 'type' is set to 'User' or 'Group'.","description_kind":"plain","required":true},"namespace":{"type":"string","description":"The Kubernetes namespace of the subject. Required if 'type' is set to 'ServiceAccount'.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the subject. Can be one of the following values: `User`, `Group`, or `ServiceAccount`.","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"host_config":{"nesting_mode":"list","block":{"attributes":{"external_traffic_policy":{"type":"string","description":"The external traffic policy for the cluster.","description_kind":"plain","optional":true},"host_endpoint_type":{"type":"string","description":"The type of endpoint for the cluster. Can be either 'Ingress' or 'LoadBalancer'. The default is 'Ingress'.","description_kind":"plain","optional":true},"ingress_host":{"type":"string","description":"The host for the Ingress endpoint. Required if 'host_endpoint_type' is set to 'Ingress'.","description_kind":"plain","optional":true},"load_balancer_source_ranges":{"type":"string","description":"The source ranges for the load balancer. Required if 'host_endpoint_type' is set to 'LoadBalancer'.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"location_config":{"nesting_mode":"list","block":{"attributes":{"country_code":{"type":"string","description":"The country code of the country the cluster is located in.","description_kind":"plain","optional":true},"country_name":{"type":"string","description":"The name of the country.","description_kind":"plain","optional":true},"latitude":{"type":"number","description":"The latitude coordinates value.","description_kind":"plain","required":true},"longitude":{"type":"number","description":"The longitude coordinates value.","description_kind":"plain","required":true},"region_code":{"type":"string","description":"The region code of where the cluster is located in.","description_kind":"plain","optional":true},"region_name":{"type":"string","description":"The name of the region.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"machine_pool":{"nesting_mode":"set","block":{"attributes":{"additional_labels":{"type":["map","string"],"description_kind":"plain","optional":true},"azs":{"type":["set","string"],"description_kind":"plain","required":true},"control_plane":{"type":"bool","description":"Whether this machine pool is a control plane. Defaults to `false`.","description_kind":"plain","optional":true},"control_plane_as_worker":{"type":"bool","description":"Whether this machine pool is a control plane and a worker. Defaults to `false`.","description_kind":"plain","optional":true},"count":{"type":"number","description":"Number of nodes in the machine pool.","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"update_strategy":{"type":"string","description":"Update strategy for the machine pool. Valid values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`.","description_kind":"plain","optional":true}},"block_types":{"instance_type":{"nesting_mode":"list","block":{"attributes":{"min_cpu":{"type":"number","description_kind":"plain","required":true},"min_memory_mb":{"type":"number","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"placement":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description_kind":"plain","computed":true},"resource_pool":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1},"taints":{"nesting_mode":"list","block":{"attributes":{"effect":{"type":"string","description":"The effect of the taint. Allowed values are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`.","description_kind":"plain","required":true},"key":{"type":"string","description":"The key of the taint.","description_kind":"plain","required":true},"value":{"type":"string","description":"The value of the taint.","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"min_items":1},"namespaces":{"nesting_mode":"list","block":{"attributes":{"images_blacklist":{"type":["list","string"],"description":"List of images to disallow for the namespace. For example, `['nginx:latest', 'redis:latest']`","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the namespace. This is the name of the Kubernetes namespace in the cluster.","description_kind":"plain","required":true},"resource_allocation":{"type":["map","string"],"description":"Resource allocation for the namespace. This is a map containing the resource type and the resource value. For example, `{cpu_cores: '2', memory_MiB: '2048'}`","description_kind":"plain","required":true}},"description_kind":"plain"}},"scan_policy":{"nesting_mode":"list","block":{"attributes":{"configuration_scan_schedule":{"type":"string","description":"The schedule for configuration scan.","description_kind":"plain","required":true},"conformance_scan_schedule":{"type":"string","description":"The schedule for conformance scan.","description_kind":"plain","required":true},"penetration_scan_schedule":{"type":"string","description":"The schedule for penetration scan.","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Resource for managing MAAS clusters in Spectro Cloud through Palette.","description_kind":"plain"}},"spectrocloud_cluster_openstack":{"version":0,"block":{"attributes":{"apply_setting":{"type":"string","description_kind":"plain","optional":true},"cloud_account_id":{"type":"string","description_kind":"plain","required":true},"cloud_config_id":{"type":"string","description":"ID of the cloud config used for the cluster. This cloud config must be of type `azure`.","description_kind":"plain","deprecated":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kubeconfig":{"type":"string","description":"Kubeconfig for the cluster. This can be used to connect to the cluster using `kubectl`.","description_kind":"plain","computed":true},"name":{"type":"string","description_kind":"plain","required":true},"os_patch_after":{"type":"string","description":"The date and time after which to patch the cluster. Prefix the time value with the respective RFC. Ex: `RFC3339: 2006-01-02T15:04:05Z07:00`","description_kind":"plain","optional":true},"os_patch_on_boot":{"type":"bool","description":"Whether to apply OS patch on boot. Default is `false`.","description_kind":"plain","optional":true},"os_patch_schedule":{"type":"string","description":"Cron schedule for OS patching. This must be in the form of `0 0 * * *`.","description_kind":"plain","optional":true},"skip_completion":{"type":"bool","description":"If `true`, the cluster will be created asynchronously. Default value is `false`.","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description":"A list of tags to be applied to the cluster. Tags must be in the form of `key:value`.","description_kind":"plain","optional":true}},"block_types":{"backup_policy":{"nesting_mode":"list","block":{"attributes":{"backup_location_id":{"type":"string","description":"The ID of the backup location to use for the backup.","description_kind":"plain","required":true},"cluster_uids":{"type":["set","string"],"description":"The list of cluster UIDs to include in the backup. If `include_all_clusters` is set to `true`, then all clusters will be included.","description_kind":"plain","optional":true},"expiry_in_hour":{"type":"number","description":"The number of hours after which the backup will be deleted. For example, if the expiry is set to 24, the backup will be deleted after 24 hours.","description_kind":"plain","required":true},"include_all_clusters":{"type":"bool","description":"Whether to include all clusters in the backup. If set to false, only the clusters specified in `cluster_uids` will be included.","description_kind":"plain","optional":true},"include_cluster_resources":{"type":"bool","description":"Whether to include the cluster resources in the backup. If set to false, only the cluster configuration and disks will be backed up.","description_kind":"plain","optional":true},"include_disks":{"type":"bool","description":"Whether to include the disks in the backup. If set to false, only the cluster configuration will be backed up.","description_kind":"plain","optional":true},"namespaces":{"type":["set","string"],"description":"The list of Kubernetes namespaces to include in the backup. If not specified, all namespaces will be included.","description_kind":"plain","optional":true},"prefix":{"type":"string","description":"Prefix for the backup name. The backup name will be of the format \u003cprefix\u003e-\u003ccluster-name\u003e-\u003ctimestamp\u003e.","description_kind":"plain","required":true},"schedule":{"type":"string","description":"The schedule for the backup. The schedule is specified in cron format. For example, to run the backup every day at 1:00 AM, the schedule should be set to `0 1 * * *`.","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"cloud_config":{"nesting_mode":"list","block":{"attributes":{"dns_servers":{"type":["set","string"],"description_kind":"plain","required":true},"domain":{"type":"string","description_kind":"plain","required":true},"network_id":{"type":"string","description_kind":"plain","optional":true},"project":{"type":"string","description_kind":"plain","required":true},"region":{"type":"string","description_kind":"plain","required":true},"ssh_key":{"type":"string","description_kind":"plain","required":true},"subnet_cidr":{"type":"string","description_kind":"plain","required":true},"subnet_id":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"cluster_profile":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The ID of the cluster profile.","description_kind":"plain","required":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the pack. The name must be unique within the cluster profile. ","description_kind":"plain","required":true},"registry_uid":{"type":"string","description":"The registry UID of the pack. The registry UID is the unique identifier of the registry. ","description_kind":"plain","optional":true},"tag":{"type":"string","description":"The tag of the pack. The tag is the version of the pack.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the pack. The default value is `spectro`.","description_kind":"plain","optional":true},"uid":{"type":"string","description_kind":"plain","optional":true,"computed":true},"values":{"type":"string","description":"The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. ","description_kind":"plain","required":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description":"The content of the manifest. The content is the YAML content of the manifest. ","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the manifest. The name must be unique within the pack. ","description_kind":"plain","required":true},"uid":{"type":"string","description_kind":"plain","computed":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"cluster_rbac_binding":{"nesting_mode":"list","block":{"attributes":{"namespace":{"type":"string","description":"The Kubernetes namespace of the RBAC binding. Required if 'type' is set to 'RoleBinding'.","description_kind":"plain","optional":true},"role":{"type":["map","string"],"description":"The role of the RBAC binding. Required if 'type' is set to 'RoleBinding'.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the RBAC binding. Can be one of the following values: `RoleBinding`, or `ClusterRoleBinding`.","description_kind":"plain","required":true}},"block_types":{"subjects":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the subject. Required if 'type' is set to 'User' or 'Group'.","description_kind":"plain","required":true},"namespace":{"type":"string","description":"The Kubernetes namespace of the subject. Required if 'type' is set to 'ServiceAccount'.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the subject. Can be one of the following values: `User`, `Group`, or `ServiceAccount`.","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"host_config":{"nesting_mode":"list","block":{"attributes":{"external_traffic_policy":{"type":"string","description":"The external traffic policy for the cluster.","description_kind":"plain","optional":true},"host_endpoint_type":{"type":"string","description":"The type of endpoint for the cluster. Can be either 'Ingress' or 'LoadBalancer'. The default is 'Ingress'.","description_kind":"plain","optional":true},"ingress_host":{"type":"string","description":"The host for the Ingress endpoint. Required if 'host_endpoint_type' is set to 'Ingress'.","description_kind":"plain","optional":true},"load_balancer_source_ranges":{"type":"string","description":"The source ranges for the load balancer. Required if 'host_endpoint_type' is set to 'LoadBalancer'.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"location_config":{"nesting_mode":"list","block":{"attributes":{"country_code":{"type":"string","description":"The country code of the country the cluster is located in.","description_kind":"plain","optional":true},"country_name":{"type":"string","description":"The name of the country.","description_kind":"plain","optional":true},"latitude":{"type":"number","description":"The latitude coordinates value.","description_kind":"plain","required":true},"longitude":{"type":"number","description":"The longitude coordinates value.","description_kind":"plain","required":true},"region_code":{"type":"string","description":"The region code of where the cluster is located in.","description_kind":"plain","optional":true},"region_name":{"type":"string","description":"The name of the region.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"machine_pool":{"nesting_mode":"list","block":{"attributes":{"additional_labels":{"type":["map","string"],"description_kind":"plain","optional":true},"azs":{"type":["set","string"],"description_kind":"plain","optional":true},"control_plane":{"type":"bool","description":"Whether this machine pool is a control plane. Defaults to `false`.","description_kind":"plain","optional":true},"control_plane_as_worker":{"type":"bool","description":"Whether this machine pool is a control plane and a worker. Defaults to `false`.","description_kind":"plain","optional":true},"count":{"type":"number","description":"Number of nodes in the machine pool.","description_kind":"plain","required":true},"instance_type":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"subnet_id":{"type":"string","description_kind":"plain","optional":true},"update_strategy":{"type":"string","description":"Update strategy for the machine pool. Valid values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`.","description_kind":"plain","optional":true}},"block_types":{"taints":{"nesting_mode":"list","block":{"attributes":{"effect":{"type":"string","description":"The effect of the taint. Allowed values are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`.","description_kind":"plain","required":true},"key":{"type":"string","description":"The key of the taint.","description_kind":"plain","required":true},"value":{"type":"string","description":"The value of the taint.","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"min_items":1},"namespaces":{"nesting_mode":"list","block":{"attributes":{"images_blacklist":{"type":["list","string"],"description":"List of images to disallow for the namespace. For example, `['nginx:latest', 'redis:latest']`","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the namespace. This is the name of the Kubernetes namespace in the cluster.","description_kind":"plain","required":true},"resource_allocation":{"type":["map","string"],"description":"Resource allocation for the namespace. This is a map containing the resource type and the resource value. For example, `{cpu_cores: '2', memory_MiB: '2048'}`","description_kind":"plain","required":true}},"description_kind":"plain"}},"scan_policy":{"nesting_mode":"list","block":{"attributes":{"configuration_scan_schedule":{"type":"string","description":"The schedule for configuration scan.","description_kind":"plain","required":true},"conformance_scan_schedule":{"type":"string","description":"The schedule for conformance scan.","description_kind":"plain","required":true},"penetration_scan_schedule":{"type":"string","description":"The schedule for penetration scan.","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Resource for managing Openstack clusters in Spectro Cloud through Palette.","description_kind":"plain"}},"spectrocloud_cluster_profile":{"version":0,"block":{"attributes":{"cloud":{"type":"string","description_kind":"plain","optional":true},"context":{"type":"string","description_kind":"plain","optional":true},"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},"tags":{"type":["set","string"],"description":"A list of tags to be applied to the cluster. Tags must be in the form of `key:value`.","description_kind":"plain","optional":true},"type":{"type":"string","description_kind":"plain","optional":true},"version":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the pack. The name must be unique within the cluster profile. ","description_kind":"plain","required":true},"registry_uid":{"type":"string","description":"The registry UID of the pack. The registry UID is the unique identifier of the registry. ","description_kind":"plain","optional":true},"tag":{"type":"string","description":"The tag of the pack. The tag is the version of the pack.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the pack. The default value is `spectro`.","description_kind":"plain","optional":true},"uid":{"type":"string","description_kind":"plain","optional":true,"computed":true},"values":{"type":"string","description":"The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. ","description_kind":"plain","required":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description":"The content of the manifest. The content is the YAML content of the manifest. ","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the manifest. The name must be unique within the pack. ","description_kind":"plain","required":true},"uid":{"type":"string","description_kind":"plain","computed":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_cluster_profile_import":{"version":0,"block":{"attributes":{"context":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"import_file":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"spectrocloud_cluster_tke":{"version":2,"block":{"attributes":{"apply_setting":{"type":"string","description_kind":"plain","optional":true},"cloud_account_id":{"type":"string","description_kind":"plain","required":true},"cloud_config_id":{"type":"string","description":"ID of the cloud config used for the cluster. This cloud config must be of type `azure`.","description_kind":"plain","deprecated":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kubeconfig":{"type":"string","description":"Kubeconfig for the cluster. This can be used to connect to the cluster using `kubectl`.","description_kind":"plain","computed":true},"location_config":{"type":["list",["object",{"country_code":"string","country_name":"string","latitude":"number","longitude":"number","region_code":"string","region_name":"string"}]],"description_kind":"plain","computed":true},"name":{"type":"string","description_kind":"plain","required":true},"skip_completion":{"type":"bool","description":"If `true`, the cluster will be created asynchronously. Default value is `false`.","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description":"A list of tags to be applied to the cluster. Tags must be in the form of `key:value`.","description_kind":"plain","optional":true}},"block_types":{"backup_policy":{"nesting_mode":"list","block":{"attributes":{"backup_location_id":{"type":"string","description":"The ID of the backup location to use for the backup.","description_kind":"plain","required":true},"cluster_uids":{"type":["set","string"],"description":"The list of cluster UIDs to include in the backup. If `include_all_clusters` is set to `true`, then all clusters will be included.","description_kind":"plain","optional":true},"expiry_in_hour":{"type":"number","description":"The number of hours after which the backup will be deleted. For example, if the expiry is set to 24, the backup will be deleted after 24 hours.","description_kind":"plain","required":true},"include_all_clusters":{"type":"bool","description":"Whether to include all clusters in the backup. If set to false, only the clusters specified in `cluster_uids` will be included.","description_kind":"plain","optional":true},"include_cluster_resources":{"type":"bool","description":"Whether to include the cluster resources in the backup. If set to false, only the cluster configuration and disks will be backed up.","description_kind":"plain","optional":true},"include_disks":{"type":"bool","description":"Whether to include the disks in the backup. If set to false, only the cluster configuration will be backed up.","description_kind":"plain","optional":true},"namespaces":{"type":["set","string"],"description":"The list of Kubernetes namespaces to include in the backup. If not specified, all namespaces will be included.","description_kind":"plain","optional":true},"prefix":{"type":"string","description":"Prefix for the backup name. The backup name will be of the format \u003cprefix\u003e-\u003ccluster-name\u003e-\u003ctimestamp\u003e.","description_kind":"plain","required":true},"schedule":{"type":"string","description":"The schedule for the backup. The schedule is specified in cron format. For example, to run the backup every day at 1:00 AM, the schedule should be set to `0 1 * * *`.","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"cloud_config":{"nesting_mode":"list","block":{"attributes":{"az_subnets":{"type":["map","string"],"description_kind":"plain","optional":true},"azs":{"type":["list","string"],"description_kind":"plain","optional":true},"endpoint_access":{"type":"string","description_kind":"plain","optional":true},"public_access_cidrs":{"type":["set","string"],"description_kind":"plain","optional":true},"region":{"type":"string","description_kind":"plain","required":true},"ssh_key_name":{"type":"string","description_kind":"plain","optional":true},"vpc_id":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"cluster_profile":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The ID of the cluster profile.","description_kind":"plain","required":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the pack. The name must be unique within the cluster profile. ","description_kind":"plain","required":true},"registry_uid":{"type":"string","description":"The registry UID of the pack. The registry UID is the unique identifier of the registry. ","description_kind":"plain","optional":true},"tag":{"type":"string","description":"The tag of the pack. The tag is the version of the pack.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the pack. The default value is `spectro`.","description_kind":"plain","optional":true},"uid":{"type":"string","description_kind":"plain","optional":true,"computed":true},"values":{"type":"string","description":"The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. ","description_kind":"plain","required":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description":"The content of the manifest. The content is the YAML content of the manifest. ","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the manifest. The name must be unique within the pack. ","description_kind":"plain","required":true},"uid":{"type":"string","description_kind":"plain","computed":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"cluster_rbac_binding":{"nesting_mode":"list","block":{"attributes":{"namespace":{"type":"string","description":"The Kubernetes namespace of the RBAC binding. Required if 'type' is set to 'RoleBinding'.","description_kind":"plain","optional":true},"role":{"type":["map","string"],"description":"The role of the RBAC binding. Required if 'type' is set to 'RoleBinding'.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the RBAC binding. Can be one of the following values: `RoleBinding`, or `ClusterRoleBinding`.","description_kind":"plain","required":true}},"block_types":{"subjects":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the subject. Required if 'type' is set to 'User' or 'Group'.","description_kind":"plain","required":true},"namespace":{"type":"string","description":"The Kubernetes namespace of the subject. Required if 'type' is set to 'ServiceAccount'.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the subject. Can be one of the following values: `User`, `Group`, or `ServiceAccount`.","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"host_config":{"nesting_mode":"list","block":{"attributes":{"external_traffic_policy":{"type":"string","description":"The external traffic policy for the cluster.","description_kind":"plain","optional":true},"host_endpoint_type":{"type":"string","description":"The type of endpoint for the cluster. Can be either 'Ingress' or 'LoadBalancer'. The default is 'Ingress'.","description_kind":"plain","optional":true},"ingress_host":{"type":"string","description":"The host for the Ingress endpoint. Required if 'host_endpoint_type' is set to 'Ingress'.","description_kind":"plain","optional":true},"load_balancer_source_ranges":{"type":"string","description":"The source ranges for the load balancer. Required if 'host_endpoint_type' is set to 'LoadBalancer'.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"machine_pool":{"nesting_mode":"list","block":{"attributes":{"additional_labels":{"type":["map","string"],"description_kind":"plain","optional":true},"az_subnets":{"type":["map","string"],"description_kind":"plain","optional":true},"azs":{"type":["list","string"],"description_kind":"plain","optional":true},"capacity_type":{"type":"string","description_kind":"plain","optional":true},"count":{"type":"number","description":"Number of nodes in the machine pool.","description_kind":"plain","required":true},"disk_size_gb":{"type":"number","description_kind":"plain","required":true},"instance_type":{"type":"string","description_kind":"plain","required":true},"max":{"type":"number","description_kind":"plain","optional":true},"max_price":{"type":"string","description_kind":"plain","optional":true},"min":{"type":"number","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"update_strategy":{"type":"string","description":"Update strategy for the machine pool. Valid values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`.","description_kind":"plain","optional":true}},"block_types":{"taints":{"nesting_mode":"list","block":{"attributes":{"effect":{"type":"string","description":"The effect of the taint. Allowed values are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`.","description_kind":"plain","required":true},"key":{"type":"string","description":"The key of the taint.","description_kind":"plain","required":true},"value":{"type":"string","description":"The value of the taint.","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"min_items":1},"namespaces":{"nesting_mode":"list","block":{"attributes":{"images_blacklist":{"type":["list","string"],"description":"List of images to disallow for the namespace. For example, `['nginx:latest', 'redis:latest']`","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the namespace. This is the name of the Kubernetes namespace in the cluster.","description_kind":"plain","required":true},"resource_allocation":{"type":["map","string"],"description":"Resource allocation for the namespace. This is a map containing the resource type and the resource value. For example, `{cpu_cores: '2', memory_MiB: '2048'}`","description_kind":"plain","required":true}},"description_kind":"plain"}},"scan_policy":{"nesting_mode":"list","block":{"attributes":{"configuration_scan_schedule":{"type":"string","description":"The schedule for configuration scan.","description_kind":"plain","required":true},"conformance_scan_schedule":{"type":"string","description":"The schedule for conformance scan.","description_kind":"plain","required":true},"penetration_scan_schedule":{"type":"string","description":"The schedule for penetration scan.","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Resource for managing TKE clusters in Spectro Cloud through Palette.","description_kind":"plain"}},"spectrocloud_cluster_vsphere":{"version":0,"block":{"attributes":{"apply_setting":{"type":"string","description":"The setting to apply the cluster profile. `DownloadAndInstall` will download and install packs in one action. `DownloadAndInstallLater` will only download artifact and postpone install for later. Default value is `DownloadAndInstall`.","description_kind":"plain","optional":true},"cloud_account_id":{"type":"string","description":"ID of the cloud account to be used for the cluster. This cloud account must be of type `vsphere`.","description_kind":"plain","required":true},"cloud_config_id":{"type":"string","description":"ID of the cloud config used for the cluster. This cloud config must be of type `azure`.","description_kind":"plain","deprecated":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kubeconfig":{"type":"string","description":"Kubeconfig for the cluster. This can be used to connect to the cluster using `kubectl`.","description_kind":"plain","computed":true},"name":{"type":"string","description":"The name of the cluster.","description_kind":"plain","required":true},"os_patch_after":{"type":"string","description":"The date and time after which to patch the cluster. Prefix the time value with the respective RFC. Ex: `RFC3339: 2006-01-02T15:04:05Z07:00`","description_kind":"plain","optional":true},"os_patch_on_boot":{"type":"bool","description":"Whether to apply OS patch on boot. Default is `false`.","description_kind":"plain","optional":true},"os_patch_schedule":{"type":"string","description":"The cron schedule for OS patching. This must be in the form of cron syntax. Ex: `0 0 * * *`.","description_kind":"plain","optional":true},"skip_completion":{"type":"bool","description":"If `true`, the cluster will be created asynchronously. Default value is `false`.","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description":"A list of tags to be applied to the cluster. Tags must be in the form of `key:value`.","description_kind":"plain","optional":true}},"block_types":{"backup_policy":{"nesting_mode":"list","block":{"attributes":{"backup_location_id":{"type":"string","description":"The ID of the backup location to use for the backup.","description_kind":"plain","required":true},"cluster_uids":{"type":["set","string"],"description":"The list of cluster UIDs to include in the backup. If `include_all_clusters` is set to `true`, then all clusters will be included.","description_kind":"plain","optional":true},"expiry_in_hour":{"type":"number","description":"The number of hours after which the backup will be deleted. For example, if the expiry is set to 24, the backup will be deleted after 24 hours.","description_kind":"plain","required":true},"include_all_clusters":{"type":"bool","description":"Whether to include all clusters in the backup. If set to false, only the clusters specified in `cluster_uids` will be included.","description_kind":"plain","optional":true},"include_cluster_resources":{"type":"bool","description":"Whether to include the cluster resources in the backup. If set to false, only the cluster configuration and disks will be backed up.","description_kind":"plain","optional":true},"include_disks":{"type":"bool","description":"Whether to include the disks in the backup. If set to false, only the cluster configuration will be backed up.","description_kind":"plain","optional":true},"namespaces":{"type":["set","string"],"description":"The list of Kubernetes namespaces to include in the backup. If not specified, all namespaces will be included.","description_kind":"plain","optional":true},"prefix":{"type":"string","description":"Prefix for the backup name. The backup name will be of the format \u003cprefix\u003e-\u003ccluster-name\u003e-\u003ctimestamp\u003e.","description_kind":"plain","required":true},"schedule":{"type":"string","description":"The schedule for the backup. The schedule is specified in cron format. For example, to run the backup every day at 1:00 AM, the schedule should be set to `0 1 * * *`.","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"cloud_config":{"nesting_mode":"list","block":{"attributes":{"datacenter":{"type":"string","description":"The name of the datacenter in vSphere. This is the name of the datacenter as it appears in vSphere.","description_kind":"plain","required":true},"folder":{"type":"string","description":"The name of the folder in vSphere. This is the name of the folder as it appears in vSphere.","description_kind":"plain","required":true},"image_template_folder":{"type":"string","description":"The name of the image template folder in vSphere. This is the name of the folder as it appears in vSphere.","description_kind":"plain","optional":true},"network_search_domain":{"type":"string","description":"The search domain to use for the cluster in case of DHCP.","description_kind":"plain","optional":true},"network_type":{"type":"string","description":"The type of network to use for the cluster. This can be `VIP` or `DDNS`.","description_kind":"plain","optional":true},"ssh_key":{"type":"string","description":"The SSH key to be used for the cluster. This is the public key that will be used to access the cluster.","description_kind":"plain","required":true},"static_ip":{"type":"bool","description":"Whether to use static IP addresses for the cluster. If `true`, the cluster will use static IP addresses. If `false`, the cluster will use DDNS. Default is `false`.","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"cluster_profile":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The ID of the cluster profile.","description_kind":"plain","required":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the pack. The name must be unique within the cluster profile. ","description_kind":"plain","required":true},"registry_uid":{"type":"string","description":"The registry UID of the pack. The registry UID is the unique identifier of the registry. ","description_kind":"plain","optional":true},"tag":{"type":"string","description":"The tag of the pack. The tag is the version of the pack.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the pack. The default value is `spectro`.","description_kind":"plain","optional":true},"uid":{"type":"string","description_kind":"plain","optional":true,"computed":true},"values":{"type":"string","description":"The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. ","description_kind":"plain","required":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description":"The content of the manifest. The content is the YAML content of the manifest. ","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the manifest. The name must be unique within the pack. ","description_kind":"plain","required":true},"uid":{"type":"string","description_kind":"plain","computed":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"cluster_rbac_binding":{"nesting_mode":"list","block":{"attributes":{"namespace":{"type":"string","description":"The Kubernetes namespace of the RBAC binding. Required if 'type' is set to 'RoleBinding'.","description_kind":"plain","optional":true},"role":{"type":["map","string"],"description":"The role of the RBAC binding. Required if 'type' is set to 'RoleBinding'.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the RBAC binding. Can be one of the following values: `RoleBinding`, or `ClusterRoleBinding`.","description_kind":"plain","required":true}},"block_types":{"subjects":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the subject. Required if 'type' is set to 'User' or 'Group'.","description_kind":"plain","required":true},"namespace":{"type":"string","description":"The Kubernetes namespace of the subject. Required if 'type' is set to 'ServiceAccount'.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the subject. Can be one of the following values: `User`, `Group`, or `ServiceAccount`.","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"host_config":{"nesting_mode":"list","block":{"attributes":{"external_traffic_policy":{"type":"string","description":"The external traffic policy for the cluster.","description_kind":"plain","optional":true},"host_endpoint_type":{"type":"string","description":"The type of endpoint for the cluster. Can be either 'Ingress' or 'LoadBalancer'. The default is 'Ingress'.","description_kind":"plain","optional":true},"ingress_host":{"type":"string","description":"The host for the Ingress endpoint. Required if 'host_endpoint_type' is set to 'Ingress'.","description_kind":"plain","optional":true},"load_balancer_source_ranges":{"type":"string","description":"The source ranges for the load balancer. Required if 'host_endpoint_type' is set to 'LoadBalancer'.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"location_config":{"nesting_mode":"list","block":{"attributes":{"country_code":{"type":"string","description":"The country code of the country the cluster is located in.","description_kind":"plain","optional":true},"country_name":{"type":"string","description":"The name of the country.","description_kind":"plain","optional":true},"latitude":{"type":"number","description":"The latitude coordinates value.","description_kind":"plain","required":true},"longitude":{"type":"number","description":"The longitude coordinates value.","description_kind":"plain","required":true},"region_code":{"type":"string","description":"The region code of where the cluster is located in.","description_kind":"plain","optional":true},"region_name":{"type":"string","description":"The name of the region.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"machine_pool":{"nesting_mode":"set","block":{"attributes":{"additional_labels":{"type":["map","string"],"description_kind":"plain","optional":true},"control_plane":{"type":"bool","description":"Whether this machine pool is a control plane. Defaults to `false`.","description_kind":"plain","optional":true},"control_plane_as_worker":{"type":"bool","description":"Whether this machine pool is a control plane and a worker. Defaults to `false`.","description_kind":"plain","optional":true},"count":{"type":"number","description":"Number of nodes in the machine pool.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the machine pool. This is used to identify the machine pool in the cluster.","description_kind":"plain","required":true},"update_strategy":{"type":"string","description":"Update strategy for the machine pool. Valid values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`.","description_kind":"plain","optional":true}},"block_types":{"instance_type":{"nesting_mode":"list","block":{"attributes":{"cpu":{"type":"number","description":"The number of CPUs.","description_kind":"plain","required":true},"disk_size_gb":{"type":"number","description":"The size of the disk in GB.","description_kind":"plain","required":true},"memory_mb":{"type":"number","description":"The amount of memory in MB.","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"placement":{"nesting_mode":"list","block":{"attributes":{"cluster":{"type":"string","description":"The name of the cluster to use for the machine pool. As it appears in the vSphere.","description_kind":"plain","required":true},"datastore":{"type":"string","description":"The name of the datastore to use for the machine pool. As it appears in the vSphere.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","computed":true},"network":{"type":"string","description":"The name of the network to use for the machine pool. As it appears in the vSphere.","description_kind":"plain","required":true},"resource_pool":{"type":"string","description":"The name of the resource pool to use for the machine pool. As it appears in the vSphere.","description_kind":"plain","required":true},"static_ip_pool_id":{"type":"string","description":"The ID of the static IP pool to use for the machine pool in case of static cluster placement.","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1},"taints":{"nesting_mode":"list","block":{"attributes":{"effect":{"type":"string","description":"The effect of the taint. Allowed values are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`.","description_kind":"plain","required":true},"key":{"type":"string","description":"The key of the taint.","description_kind":"plain","required":true},"value":{"type":"string","description":"The value of the taint.","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"min_items":1},"namespaces":{"nesting_mode":"list","block":{"attributes":{"images_blacklist":{"type":["list","string"],"description":"List of images to disallow for the namespace. For example, `['nginx:latest', 'redis:latest']`","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the namespace. This is the name of the Kubernetes namespace in the cluster.","description_kind":"plain","required":true},"resource_allocation":{"type":["map","string"],"description":"Resource allocation for the namespace. This is a map containing the resource type and the resource value. For example, `{cpu_cores: '2', memory_MiB: '2048'}`","description_kind":"plain","required":true}},"description_kind":"plain"}},"scan_policy":{"nesting_mode":"list","block":{"attributes":{"configuration_scan_schedule":{"type":"string","description":"The schedule for configuration scan.","description_kind":"plain","required":true},"conformance_scan_schedule":{"type":"string","description":"The schedule for conformance scan.","description_kind":"plain","required":true},"penetration_scan_schedule":{"type":"string","description":"The schedule for penetration scan.","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"A resource to manage a vSphere cluster in Pallette.","description_kind":"plain"}},"spectrocloud_macro":{"version":2,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the macro or service variable output.","description_kind":"plain","required":true},"project":{"type":"string","description":"The Spectro Cloud project name.","description_kind":"plain","optional":true},"value":{"type":"string","description":"The value that the macro or service output variable will contain.","description_kind":"plain","required":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"A resource for creating and managing service output variables and macros.","description_kind":"plain"}},"spectrocloud_privatecloudgateway_ippool":{"version":2,"block":{"attributes":{"gateway":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ip_end_range":{"type":"string","description_kind":"plain","optional":true},"ip_start_range":{"type":"string","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"nameserver_addresses":{"type":["set","string"],"description_kind":"plain","optional":true},"nameserver_search_suffix":{"type":["set","string"],"description_kind":"plain","optional":true},"network_type":{"type":"string","description_kind":"plain","required":true},"prefix":{"type":"number","description_kind":"plain","required":true},"private_cloud_gateway_id":{"type":"string","description_kind":"plain","required":true},"restrict_to_single_cluster":{"type":"bool","description_kind":"plain","optional":true},"subnet_cidr":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_project":{"version":2,"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},"tags":{"type":["set","string"],"description_kind":"plain","optional":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_registry_helm":{"version":2,"block":{"attributes":{"endpoint":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_private":{"type":"bool","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"credentials":{"nesting_mode":"list","block":{"attributes":{"credential_type":{"type":"string","description_kind":"plain","required":true},"password":{"type":"string","description_kind":"plain","optional":true},"token":{"type":"string","description_kind":"plain","optional":true},"username":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_registry_oci":{"version":2,"block":{"attributes":{"endpoint":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_private":{"type":"bool","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","required":true}},"block_types":{"credentials":{"nesting_mode":"list","block":{"attributes":{"arn":{"type":"string","description_kind":"plain","optional":true},"credential_type":{"type":"string","description_kind":"plain","required":true},"external_id":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_team":{"version":2,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true},"users":{"type":["set","string"],"description_kind":"plain","optional":true}},"block_types":{"project_role_mapping":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description_kind":"plain","required":true},"roles":{"type":["set","string"],"description_kind":"plain","required":true}},"description_kind":"plain"}},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_virtual_cluster":{"version":2,"block":{"attributes":{"apply_setting":{"type":"string","description_kind":"plain","optional":true},"cloud_config_id":{"type":"string","description":"ID of the cloud config used for the cluster. This cloud config must be of type `azure`.","description_kind":"plain","deprecated":true,"computed":true},"cluster_group_uid":{"type":"string","description_kind":"plain","optional":true},"host_cluster_uid":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kubeconfig":{"type":"string","description":"Kubeconfig for the cluster. This can be used to connect to the cluster using `kubectl`.","description_kind":"plain","computed":true},"location_config":{"type":["list",["object",{"country_code":"string","country_name":"string","latitude":"number","longitude":"number","region_code":"string","region_name":"string"}]],"description_kind":"plain","computed":true},"name":{"type":"string","description_kind":"plain","required":true},"os_patch_after":{"type":"string","description":"The date and time after which to patch the cluster. Prefix the time value with the respective RFC. Ex: `RFC3339: 2006-01-02T15:04:05Z07:00`","description_kind":"plain","optional":true},"os_patch_on_boot":{"type":"bool","description":"Whether to apply OS patch on boot. Default is `false`.","description_kind":"plain","optional":true},"os_patch_schedule":{"type":"string","description":"Cron schedule for OS patching. This must be in the form of `0 0 * * *`.","description_kind":"plain","optional":true},"pause_cluster":{"type":"bool","description":"To pause and resume cluster state. Set to true to pause running cluster \u0026 false to resume it.","description_kind":"plain","optional":true},"skip_completion":{"type":"bool","description":"If `true`, the cluster will be created asynchronously. Default value is `false`.","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description":"A list of tags to be applied to the cluster. Tags must be in the form of `key:value`.","description_kind":"plain","optional":true}},"block_types":{"backup_policy":{"nesting_mode":"list","block":{"attributes":{"backup_location_id":{"type":"string","description":"The ID of the backup location to use for the backup.","description_kind":"plain","required":true},"cluster_uids":{"type":["set","string"],"description":"The list of cluster UIDs to include in the backup. If `include_all_clusters` is set to `true`, then all clusters will be included.","description_kind":"plain","optional":true},"expiry_in_hour":{"type":"number","description":"The number of hours after which the backup will be deleted. For example, if the expiry is set to 24, the backup will be deleted after 24 hours.","description_kind":"plain","required":true},"include_all_clusters":{"type":"bool","description":"Whether to include all clusters in the backup. If set to false, only the clusters specified in `cluster_uids` will be included.","description_kind":"plain","optional":true},"include_cluster_resources":{"type":"bool","description":"Whether to include the cluster resources in the backup. If set to false, only the cluster configuration and disks will be backed up.","description_kind":"plain","optional":true},"include_disks":{"type":"bool","description":"Whether to include the disks in the backup. If set to false, only the cluster configuration will be backed up.","description_kind":"plain","optional":true},"namespaces":{"type":["set","string"],"description":"The list of Kubernetes namespaces to include in the backup. If not specified, all namespaces will be included.","description_kind":"plain","optional":true},"prefix":{"type":"string","description":"Prefix for the backup name. The backup name will be of the format \u003cprefix\u003e-\u003ccluster-name\u003e-\u003ctimestamp\u003e.","description_kind":"plain","required":true},"schedule":{"type":"string","description":"The schedule for the backup. The schedule is specified in cron format. For example, to run the backup every day at 1:00 AM, the schedule should be set to `0 1 * * *`.","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"cloud_config":{"nesting_mode":"list","block":{"attributes":{"chart_name":{"type":"string","description_kind":"plain","optional":true},"chart_repo":{"type":"string","description_kind":"plain","optional":true},"chart_values":{"type":"string","description_kind":"plain","optional":true},"chart_version":{"type":"string","description_kind":"plain","optional":true},"k8s_version":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"cluster_profile":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The ID of the cluster profile.","description_kind":"plain","required":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the pack. The name must be unique within the cluster profile. ","description_kind":"plain","required":true},"registry_uid":{"type":"string","description":"The registry UID of the pack. The registry UID is the unique identifier of the registry. ","description_kind":"plain","optional":true},"tag":{"type":"string","description":"The tag of the pack. The tag is the version of the pack.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the pack. The default value is `spectro`.","description_kind":"plain","optional":true},"uid":{"type":"string","description_kind":"plain","optional":true,"computed":true},"values":{"type":"string","description":"The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. ","description_kind":"plain","required":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description":"The content of the manifest. The content is the YAML content of the manifest. ","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the manifest. The name must be unique within the pack. ","description_kind":"plain","required":true},"uid":{"type":"string","description_kind":"plain","computed":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"cluster_rbac_binding":{"nesting_mode":"list","block":{"attributes":{"namespace":{"type":"string","description":"The Kubernetes namespace of the RBAC binding. Required if 'type' is set to 'RoleBinding'.","description_kind":"plain","optional":true},"role":{"type":["map","string"],"description":"The role of the RBAC binding. Required if 'type' is set to 'RoleBinding'.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the RBAC binding. Can be one of the following values: `RoleBinding`, or `ClusterRoleBinding`.","description_kind":"plain","required":true}},"block_types":{"subjects":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the subject. Required if 'type' is set to 'User' or 'Group'.","description_kind":"plain","required":true},"namespace":{"type":"string","description":"The Kubernetes namespace of the subject. Required if 'type' is set to 'ServiceAccount'.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the subject. Can be one of the following values: `User`, `Group`, or `ServiceAccount`.","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"namespaces":{"nesting_mode":"list","block":{"attributes":{"images_blacklist":{"type":["list","string"],"description":"List of images to disallow for the namespace. For example, `['nginx:latest', 'redis:latest']`","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the namespace. This is the name of the Kubernetes namespace in the cluster.","description_kind":"plain","required":true},"resource_allocation":{"type":["map","string"],"description":"Resource allocation for the namespace. This is a map containing the resource type and the resource value. For example, `{cpu_cores: '2', memory_MiB: '2048'}`","description_kind":"plain","required":true}},"description_kind":"plain"}},"resources":{"nesting_mode":"list","block":{"attributes":{"max_cpu":{"type":"number","description_kind":"plain","optional":true},"max_mem_in_mb":{"type":"number","description_kind":"plain","optional":true},"max_storage_in_gb":{"type":"number","description_kind":"plain","optional":true},"min_cpu":{"type":"number","description_kind":"plain","optional":true},"min_mem_in_mb":{"type":"number","description_kind":"plain","optional":true},"min_storage_in_gb":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"scan_policy":{"nesting_mode":"list","block":{"attributes":{"configuration_scan_schedule":{"type":"string","description":"The schedule for configuration scan.","description_kind":"plain","required":true},"conformance_scan_schedule":{"type":"string","description":"The schedule for conformance scan.","description_kind":"plain","required":true},"penetration_scan_schedule":{"type":"string","description":"The schedule for penetration scan.","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"A resource to manage a Palette Virtual Cluster.","description_kind":"plain"}},"spectrocloud_virtual_machine":{"version":0,"block":{"attributes":{"annotations":{"type":["map","string"],"description":"The annotations of the virtual machine.","description_kind":"plain","optional":true},"base_vm_name":{"type":"string","description":"The name of the source virtual machine that a clone will be created of.","description_kind":"plain","optional":true},"cloud_init_user_data":{"type":"string","description":"The cloud-init user data to be used for the virtual machine. Default value is `#cloud-config\nssh_pwauth: True\nchpasswd: { expire: False }\npassword: spectro\ndisable_root: false\n`.","description_kind":"plain","optional":true},"cluster_uid":{"type":"string","description":"The cluster UID to which the virtual machine belongs to.","description_kind":"plain","required":true},"cpu_cores":{"type":"number","description":"The number of CPU cores to be allocated to the virtual machine. Default value is `1`.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"image_url":{"type":"string","description":"The URL of the VM template image to be used for the virtual machine.","description_kind":"plain","optional":true},"labels":{"type":["set","string"],"description":"The labels of the virtual machine.","description_kind":"plain","optional":true},"memory":{"type":"string","description":"The amount of memory to be allocated to the virtual machine. Default value is `2G`.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the virtual machine.","description_kind":"plain","required":true},"namespace":{"type":"string","description":"The namespace of the virtual machine.","description_kind":"plain","required":true},"run_on_launch":{"type":"bool","description":"If set to `true`, the virtual machine will be started when the cluster is launched. Default value is `true`.","description_kind":"plain","optional":true},"vm_action":{"type":"string","description":"The action to be performed on the virtual machine. Valid values are: `start`, `stop`, `restart`, `pause`, `resume`, `migrate`. Default value is `start`.","description_kind":"plain","optional":true},"vm_state":{"type":"string","description":"The state of the virtual machine. The virtual machine can be in one of the following states: `running`, `stopped`, `paused`, `migrating`, `error`, `unknown`.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"devices":{"nesting_mode":"set","block":{"block_types":{"disk":{"nesting_mode":"list","block":{"attributes":{"bus":{"type":"string","description":"The bus type of the disk. This is the name that will be used to identify the disk in the guest OS.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the disk. This is the name that will be used to identify the disk in the guest OS.","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1},"interface":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the interface. This is the name that will be used to identify the device interface in the guest OS.","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1}},"description_kind":"plain"}},"network_spec":{"nesting_mode":"set","block":{"block_types":{"network":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the network to be attached to the virtual machine.","description_kind":"plain","required":true}},"description":"The network specification for the virtual machine.","description_kind":"plain"}}},"description_kind":"plain"}},"volume_spec":{"nesting_mode":"set","block":{"block_types":{"volume":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true}},"block_types":{"cloud_init_no_cloud":{"nesting_mode":"set","block":{"attributes":{"user_data":{"type":"string","description":"The user data to use for the cloud-init no cloud disk. This can be a local file path, a remote URL, or a registry URL.","description_kind":"plain","required":true}},"description":"Used to specify a cloud-init `noCloud` image. The image is expected to contain a disk image in a supported format. The disk image is extracted from the cloud-init `noCloud `image and used as the disk for the VM","description_kind":"plain"}},"container_disk":{"nesting_mode":"set","block":{"attributes":{"image_url":{"type":"string","description":"The URL of the container image to use as the disk. This can be a local file path, a remote URL, or a registry URL.","description_kind":"plain","required":true}},"description":"A container disk is a disk that is backed by a container image. The container image is expected to contain a disk image in a supported format. The disk image is extracted from the container image and used as the disk for the VM.","description_kind":"plain"}}},"description_kind":"plain"}}},"description":"The volume specification for the virtual machine.","description_kind":"plain"}}},"description":"A resource to manage Virtual Machines (VM) through Palette.","description_kind":"plain"}},"spectrocloud_workspace":{"version":2,"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},"tags":{"type":["set","string"],"description_kind":"plain","optional":true}},"block_types":{"backup_policy":{"nesting_mode":"list","block":{"attributes":{"backup_location_id":{"type":"string","description":"The ID of the backup location to use for the backup.","description_kind":"plain","required":true},"cluster_uids":{"type":["set","string"],"description":"The list of cluster UIDs to include in the backup. If `include_all_clusters` is set to `true`, then all clusters will be included.","description_kind":"plain","optional":true},"expiry_in_hour":{"type":"number","description":"The number of hours after which the backup will be deleted. For example, if the expiry is set to 24, the backup will be deleted after 24 hours.","description_kind":"plain","required":true},"include_all_clusters":{"type":"bool","description":"Whether to include all clusters in the backup. If set to false, only the clusters specified in `cluster_uids` will be included.","description_kind":"plain","optional":true},"include_cluster_resources":{"type":"bool","description":"Whether to include the cluster resources in the backup. If set to false, only the cluster configuration and disks will be backed up.","description_kind":"plain","optional":true},"include_disks":{"type":"bool","description":"Whether to include the disks in the backup. If set to false, only the cluster configuration will be backed up.","description_kind":"plain","optional":true},"namespaces":{"type":["set","string"],"description":"The list of Kubernetes namespaces to include in the backup. If not specified, all namespaces will be included.","description_kind":"plain","optional":true},"prefix":{"type":"string","description":"Prefix for the backup name. The backup name will be of the format \u003cprefix\u003e-\u003ccluster-name\u003e-\u003ctimestamp\u003e.","description_kind":"plain","required":true},"schedule":{"type":"string","description":"The schedule for the backup. The schedule is specified in cron format. For example, to run the backup every day at 1:00 AM, the schedule should be set to `0 1 * * *`.","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1},"cluster_rbac_binding":{"nesting_mode":"list","block":{"attributes":{"namespace":{"type":"string","description":"The Kubernetes namespace of the RBAC binding. Required if 'type' is set to 'RoleBinding'.","description_kind":"plain","optional":true},"role":{"type":["map","string"],"description":"The role of the RBAC binding. Required if 'type' is set to 'RoleBinding'.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the RBAC binding. Can be one of the following values: `RoleBinding`, or `ClusterRoleBinding`.","description_kind":"plain","required":true}},"block_types":{"subjects":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the subject. Required if 'type' is set to 'User' or 'Group'.","description_kind":"plain","required":true},"namespace":{"type":"string","description":"The Kubernetes namespace of the subject. Required if 'type' is set to 'ServiceAccount'.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the subject. Can be one of the following values: `User`, `Group`, or `ServiceAccount`.","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"clusters":{"nesting_mode":"set","block":{"attributes":{"uid":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1},"namespaces":{"nesting_mode":"list","block":{"attributes":{"images_blacklist":{"type":["list","string"],"description":"List of images to disallow for the namespace. For example, `['nginx:latest', 'redis:latest']`","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the namespace. This is the name of the Kubernetes namespace in the cluster.","description_kind":"plain","required":true},"resource_allocation":{"type":["map","string"],"description":"Resource allocation for the namespace. This is a map containing the resource type and the resource value. For example, `{cpu_cores: '2', memory_MiB: '2048'}`","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"data_source_schemas":{"spectrocloud_appliance":{"version":2,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true},"tags":{"type":["map","string"],"description_kind":"plain","optional":true}},"description_kind":"plain"}},"spectrocloud_appliances":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ids":{"type":["list","string"],"description":"The unique ids of the appliances. This is a computed field and is not required to be set.","description_kind":"plain","computed":true},"tags":{"type":["map","string"],"description":"A list of tags to filter the appliances.","description_kind":"plain","optional":true}},"description":"Provides details about for a set of appliances.","description_kind":"plain"}},"spectrocloud_application_profile":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the application profile","description_kind":"plain","required":true},"version":{"type":"string","description":"The version of the app profile. Default value is '1.0.0'.","description_kind":"plain","optional":true,"computed":true}},"description":"Use this data source to get the details of an existing application profile.","description_kind":"plain"}},"spectrocloud_backup_storage_location":{"version":2,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"spectrocloud_cloudaccount_aws":{"version":0,"block":{"attributes":{"depends":{"type":"string","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"spectrocloud_cloudaccount_azure":{"version":0,"block":{"attributes":{"azure_client_id":{"type":"string","description_kind":"plain","computed":true},"azure_tenant_id":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"spectrocloud_cloudaccount_gcp":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"spectrocloud_cloudaccount_maas":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"maas_api_endpoint":{"type":"string","description_kind":"plain","computed":true},"maas_api_key":{"type":"string","description_kind":"plain","computed":true},"name":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"spectrocloud_cloudaccount_openstack":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"spectrocloud_cloudaccount_tencent":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","optional":true,"computed":true},"tencent_secret_id":{"type":"string","description_kind":"plain","computed":true}},"description_kind":"plain"}},"spectrocloud_cloudaccount_vsphere":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"spectrocloud_cluster":{"version":0,"block":{"attributes":{"context":{"type":"string","description":"Cluster context can be 'project' or 'tenant'. Defaults to 'project'.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"spectrocloud_cluster_group":{"version":2,"block":{"attributes":{"context":{"type":"string","description":"The context of where the cluster group is located. Allowed values are `system` or `tenant`. Defaults to 'tenant'.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the cluster group.","description_kind":"plain","required":true}},"description_kind":"plain"}},"spectrocloud_cluster_profile":{"version":0,"block":{"attributes":{"context":{"type":"string","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","optional":true,"computed":true},"version":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"pack":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the pack. The name must be unique within the cluster profile. ","description_kind":"plain","required":true},"registry_uid":{"type":"string","description":"The registry UID of the pack. The registry UID is the unique identifier of the registry. ","description_kind":"plain","optional":true},"tag":{"type":"string","description":"The tag of the pack. The tag is the version of the pack.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the pack. The default value is `spectro`.","description_kind":"plain","optional":true},"uid":{"type":"string","description_kind":"plain","optional":true,"computed":true},"values":{"type":"string","description":"The values of the pack. The values are the configuration values of the pack. The values are specified in YAML format. ","description_kind":"plain","required":true}},"block_types":{"manifest":{"nesting_mode":"list","block":{"attributes":{"content":{"type":"string","description":"The content of the manifest. The content is the YAML content of the manifest. ","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the manifest. The name must be unique within the pack. ","description_kind":"plain","required":true},"uid":{"type":"string","description_kind":"plain","computed":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"spectrocloud_ippool":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the IP pool.","description_kind":"plain","required":true},"private_cloud_gateway_id":{"type":"string","description":"The ID of the private cloud gateway.","description_kind":"plain","required":true}},"description_kind":"plain"}},"spectrocloud_pack":{"version":0,"block":{"attributes":{"cloud":{"type":["set","string"],"description_kind":"plain","optional":true,"computed":true},"filters":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","optional":true,"computed":true},"registry_uid":{"type":"string","description_kind":"plain","optional":true,"computed":true},"type":{"type":"string","description_kind":"plain","optional":true,"computed":true},"values":{"type":"string","description_kind":"plain","computed":true},"version":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"spectrocloud_pack_simple":{"version":0,"block":{"attributes":{"context":{"type":"string","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the pack.","description_kind":"plain","required":true},"registry_uid":{"type":"string","description":"The unique identifier of the registry the pack belongs to.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of Pack. Allowed values are `helm`, `manifest`, `container` or `operator-instance`.","description_kind":"plain","required":true},"values":{"type":"string","description":"This is a stringified YAML object containing the pack configuration details. ","description_kind":"plain","computed":true},"version":{"type":"string","description":"The version of the pack.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"spectrocloud_private_cloud_gateway":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of Private Cloud Gateway.","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The Name of Private Cloud Gateway.","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"spectrocloud_project":{"version":2,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"spectrocloud_registry":{"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"}},"spectrocloud_registry_helm":{"version":2,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"spectrocloud_registry_oci":{"version":2,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"spectrocloud_registry_pack":{"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"}},"spectrocloud_role":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"spectrocloud_user":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"spectrocloud_workspace":{"version":2,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}}}}} diff --git a/internal/controller/cloudaccount/vsphere/zz_controller.go b/internal/controller/cloudaccount/vsphere/zz_controller.go new file mode 100755 index 0000000..59456e3 --- /dev/null +++ b/internal/controller/cloudaccount/vsphere/zz_controller.go @@ -0,0 +1,52 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package vsphere + +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" + tjcontroller "github.com/upbound/upjet/pkg/controller" + "github.com/upbound/upjet/pkg/terraform" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/crossplane-contrib/provider-palette/apis/cloudaccount/v1alpha1" +) + +// Setup adds a controller that reconciles Vsphere managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.Vsphere_GroupVersionKind.String()) + var initializers managed.InitializerChain + initializers = append(initializers, managed.NewNameAsExternalName(mgr.GetClient())) + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK)) + } + r := managed.NewReconciler(mgr, + xpresource.ManagedKind(v1alpha1.Vsphere_GroupVersionKind), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["spectrocloud_cloudaccount_vsphere"], + tjcontroller.WithCallbackProvider(tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.Vsphere_GroupVersionKind))), + )), + 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), + ) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + For(&v1alpha1.Vsphere{}). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/virtual/machine/zz_controller.go b/internal/controller/virtual/machine/zz_controller.go new file mode 100755 index 0000000..29db064 --- /dev/null +++ b/internal/controller/virtual/machine/zz_controller.go @@ -0,0 +1,52 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package machine + +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" + tjcontroller "github.com/upbound/upjet/pkg/controller" + "github.com/upbound/upjet/pkg/terraform" + ctrl "sigs.k8s.io/controller-runtime" + + v1alpha1 "github.com/crossplane-contrib/provider-palette/apis/virtual/v1alpha1" +) + +// Setup adds a controller that reconciles Machine managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1alpha1.Machine_GroupVersionKind.String()) + var initializers managed.InitializerChain + initializers = append(initializers, managed.NewNameAsExternalName(mgr.GetClient())) + cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())} + if o.SecretStoreConfigGVK != nil { + cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK)) + } + r := managed.NewReconciler(mgr, + xpresource.ManagedKind(v1alpha1.Machine_GroupVersionKind), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["spectrocloud_virtual_machine"], + tjcontroller.WithCallbackProvider(tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.Machine_GroupVersionKind))), + )), + 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), + ) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + For(&v1alpha1.Machine{}). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/zz_setup.go b/internal/controller/zz_setup.go index fe13489..511b450 100755 --- a/internal/controller/zz_setup.go +++ b/internal/controller/zz_setup.go @@ -18,6 +18,7 @@ import ( maas "github.com/crossplane-contrib/provider-palette/internal/controller/cloudaccount/maas" openstack "github.com/crossplane-contrib/provider-palette/internal/controller/cloudaccount/openstack" tencent "github.com/crossplane-contrib/provider-palette/internal/controller/cloudaccount/tencent" + vsphere "github.com/crossplane-contrib/provider-palette/internal/controller/cloudaccount/vsphere" aks "github.com/crossplane-contrib/provider-palette/internal/controller/cluster/aks" awscluster "github.com/crossplane-contrib/provider-palette/internal/controller/cluster/aws" azurecluster "github.com/crossplane-contrib/provider-palette/internal/controller/cluster/azure" @@ -32,7 +33,7 @@ import ( openstackcluster "github.com/crossplane-contrib/provider-palette/internal/controller/cluster/openstack" profilecluster "github.com/crossplane-contrib/provider-palette/internal/controller/cluster/profile" tke "github.com/crossplane-contrib/provider-palette/internal/controller/cluster/tke" - vsphere "github.com/crossplane-contrib/provider-palette/internal/controller/cluster/vsphere" + vspherecluster "github.com/crossplane-contrib/provider-palette/internal/controller/cluster/vsphere" ippool "github.com/crossplane-contrib/provider-palette/internal/controller/privatecloudgateway/ippool" providerconfig "github.com/crossplane-contrib/provider-palette/internal/controller/providerconfig" helm "github.com/crossplane-contrib/provider-palette/internal/controller/registry/helm" @@ -45,6 +46,7 @@ import ( team "github.com/crossplane-contrib/provider-palette/internal/controller/spectrocloud/team" workspace "github.com/crossplane-contrib/provider-palette/internal/controller/spectrocloud/workspace" cluster "github.com/crossplane-contrib/provider-palette/internal/controller/virtual/cluster" + machine "github.com/crossplane-contrib/provider-palette/internal/controller/virtual/machine" ) // Setup creates all controllers with the supplied logger and adds them to @@ -60,6 +62,7 @@ func Setup(mgr ctrl.Manager, o controller.Options) error { maas.Setup, openstack.Setup, tencent.Setup, + vsphere.Setup, aks.Setup, awscluster.Setup, azurecluster.Setup, @@ -74,7 +77,7 @@ func Setup(mgr ctrl.Manager, o controller.Options) error { openstackcluster.Setup, profilecluster.Setup, tke.Setup, - vsphere.Setup, + vspherecluster.Setup, ippool.Setup, providerconfig.Setup, helm.Setup, @@ -87,6 +90,7 @@ func Setup(mgr ctrl.Manager, o controller.Options) error { team.Setup, workspace.Setup, cluster.Setup, + machine.Setup, } { if err := setup(mgr, o); err != nil { return err diff --git a/package/crds/addon.palette.crossplane.io_deployments.yaml b/package/crds/addon.palette.crossplane.io_deployments.yaml index 57dfb11..fea40aa 100644 --- a/package/crds/addon.palette.crossplane.io_deployments.yaml +++ b/package/crds/addon.palette.crossplane.io_deployments.yaml @@ -69,6 +69,7 @@ spec: items: properties: id: + description: The ID of the cluster profile. type: string pack: items: @@ -77,8 +78,12 @@ spec: items: properties: content: + description: The content of the manifest. The + content is the YAML content of the manifest. type: string name: + description: The name of the manifest. The name + must be unique within the pack. type: string required: - content @@ -86,19 +91,31 @@ spec: type: object type: array name: + description: The name of the pack. The name must be + unique within the cluster profile. type: string registryUid: + description: The registry UID of the pack. The registry + UID is the unique identifier of the registry. type: string tag: + description: The tag of the pack. The tag is the version + of the pack. type: string type: + description: The type of the pack. The default value + is `spectro`. type: string uid: type: string values: + description: The values of the pack. The values are + the configuration values of the pack. The values + are specified in YAML format. type: string required: - name + - values type: object type: array required: @@ -286,6 +303,23 @@ spec: properties: atProvider: properties: + clusterProfile: + items: + properties: + pack: + items: + properties: + manifest: + items: + properties: + uid: + type: string + type: object + type: array + type: object + type: array + type: object + type: array id: type: string type: object diff --git a/package/crds/cloudaccount.palette.crossplane.io_vspheres.yaml b/package/crds/cloudaccount.palette.crossplane.io_vspheres.yaml new file mode 100644 index 0000000..cd5d240 --- /dev/null +++ b/package/crds/cloudaccount.palette.crossplane.io_vspheres.yaml @@ -0,0 +1,339 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + creationTimestamp: null + name: vspheres.cloudaccount.palette.crossplane.io +spec: + group: cloudaccount.palette.crossplane.io + names: + categories: + - crossplane + - managed + - palette + kind: Vsphere + listKind: VsphereList + plural: vspheres + singular: vsphere + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + 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: Vsphere is the Schema for the Vspheres API. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: VsphereSpec defines the desired state of Vsphere + 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. + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + context: + description: Context of the cloud account. This can be either + project or tenant. If not specified, the default value is project. + type: string + privateCloudGatewayId: + description: ID of the private cloud gateway. This is the ID of + the private cloud gateway that is used to connect to the vSphere + cloud. + type: string + vsphereIgnoreInsecureError: + description: Ignore insecure error. This is a boolean value that + indicates whether to ignore the insecure error or not. If not + specified, the default value is false. + type: boolean + vspherePasswordSecretRef: + description: Password of the vSphere cloud. This is the password + of the vSphere cloud that is used to connect to the vSphere + cloud. + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object + vsphereUsername: + description: Username of the vSphere cloud. This is the username + of the vSphere cloud that is used to connect to the vSphere + cloud. + type: string + vsphereVcenter: + description: vCenter server address. This is the address of the + vCenter server that is used to connect to the vSphere cloud. + type: string + required: + - privateCloudGatewayId + - vspherePasswordSecretRef + - vsphereUsername + - vsphereVcenter + type: object + 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 + providerRef: + description: 'ProviderReference specifies the provider that will be + used to create, observe, update, and delete this managed resource. + Deprecated: Please use ProviderConfigReference, i.e. `providerConfigRef`' + 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 + status: + description: VsphereStatus defines the observed state of Vsphere. + properties: + atProvider: + properties: + id: + type: string + 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 + 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 + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/package/crds/cluster.palette.crossplane.io_aks.yaml b/package/crds/cluster.palette.crossplane.io_aks.yaml index 775e370..f159acb 100644 --- a/package/crds/cluster.palette.crossplane.io_aks.yaml +++ b/package/crds/cluster.palette.crossplane.io_aks.yaml @@ -69,20 +69,52 @@ spec: items: properties: backupLocationId: + description: The ID of the backup location to use for the + backup. type: string + clusterUids: + description: The list of cluster UIDs to include in the + backup. If `include_all_clusters` is set to `true`, then + all clusters will be included. + items: + type: string + type: array expiryInHour: + description: The number of hours after which the backup + will be deleted. For example, if the expiry is set to + 24, the backup will be deleted after 24 hours. type: number + includeAllClusters: + description: Whether to include all clusters in the backup. + If set to false, only the clusters specified in `cluster_uids` + will be included. + type: boolean includeClusterResources: + description: Whether to include the cluster resources in + the backup. If set to false, only the cluster configuration + and disks will be backed up. type: boolean includeDisks: + description: Whether to include the disks in the backup. + If set to false, only the cluster configuration will be + backed up. type: boolean namespaces: + description: The list of Kubernetes namespaces to include + in the backup. If not specified, all namespaces will be + included. items: type: string type: array prefix: + description: Prefix for the backup name. The backup name + will be of the format --. type: string schedule: + description: The schedule for the backup. The schedule is + specified in cron format. For example, to run the backup + every day at 1:00 AM, the schedule should be set to `0 + 1 * * *`. type: string required: - backupLocationId @@ -125,6 +157,7 @@ spec: items: properties: id: + description: The ID of the cluster profile. type: string pack: items: @@ -133,8 +166,12 @@ spec: items: properties: content: + description: The content of the manifest. The + content is the YAML content of the manifest. type: string name: + description: The name of the manifest. The name + must be unique within the pack. type: string required: - content @@ -142,14 +179,27 @@ spec: type: object type: array name: + description: The name of the pack. The name must be + unique within the cluster profile. type: string registryUid: + description: The registry UID of the pack. The registry + UID is the unique identifier of the registry. type: string tag: + description: The tag of the pack. The tag is the version + of the pack. type: string type: + description: The type of the pack. The default value + is `spectro`. + type: string + uid: type: string values: + description: The values of the pack. The values are + the configuration values of the pack. The values + are specified in YAML format. type: string required: - name @@ -164,19 +214,29 @@ spec: items: properties: namespace: + description: The Kubernetes namespace of the RBAC binding. + Required if 'type' is set to 'RoleBinding'. type: string role: additionalProperties: type: string + description: The role of the RBAC binding. Required if 'type' + is set to 'RoleBinding'. type: object subjects: items: properties: name: + description: The name of the subject. Required if + 'type' is set to 'User' or 'Group'. type: string namespace: + description: The Kubernetes namespace of the subject. + Required if 'type' is set to 'ServiceAccount'. type: string type: + description: 'The type of the subject. Can be one + of the following values: `User`, `Group`, or `ServiceAccount`.' type: string required: - name @@ -184,6 +244,8 @@ spec: type: object type: array type: + description: 'The type of the RBAC binding. Can be one of + the following values: `RoleBinding`, or `ClusterRoleBinding`.' type: string required: - type @@ -217,6 +279,7 @@ spec: type: string type: object count: + description: Number of nodes in the machine pool. type: number diskSizeGb: type: number @@ -236,10 +299,14 @@ spec: items: properties: effect: + description: 'The effect of the taint. Allowed values + are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`.' type: string key: + description: The key of the taint. type: string value: + description: The value of the taint. type: string required: - effect @@ -248,6 +315,8 @@ spec: type: object type: array updateStrategy: + description: Update strategy for the machine pool. Valid + values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`. type: string required: - count @@ -261,11 +330,22 @@ spec: namespaces: items: properties: + imagesBlacklist: + description: List of images to disallow for the namespace. + For example, `['nginx:latest', 'redis:latest']` + items: + type: string + type: array name: + description: Name of the namespace. This is the name of + the Kubernetes namespace in the cluster. type: string resourceAllocation: additionalProperties: type: string + description: 'Resource allocation for the namespace. This + is a map containing the resource type and the resource + value. For example, `{cpu_cores: ''2'', memory_MiB: ''2048''}`' type: object required: - name @@ -273,36 +353,28 @@ spec: type: object type: array osPatchAfter: + description: 'The date and time after which to patch the cluster. + Prefix the time value with the respective RFC. Ex: `RFC3339: + 2006-01-02T15:04:05Z07:00`' type: string osPatchOnBoot: + description: Whether to apply OS patch on boot. Default is `false`. type: boolean osPatchSchedule: + description: 'The cron schedule for OS patching. This must be + in the form of cron syntax. Ex: `0 0 * * *`.' type: string - pack: - items: - properties: - name: - type: string - registryUid: - type: string - tag: - type: string - values: - type: string - required: - - name - - tag - - values - type: object - type: array scanPolicy: items: properties: configurationScanSchedule: + description: The schedule for configuration scan. type: string conformanceScanSchedule: + description: The schedule for conformance scan. type: string penetrationScanSchedule: + description: The schedule for penetration scan. type: string required: - configurationScanSchedule @@ -311,8 +383,12 @@ spec: type: object type: array skipCompletion: + description: If `true`, the cluster will be created asynchronously. + Default value is `false`. type: boolean tags: + description: A list of tags to be applied to the cluster. Tags + must be in the form of `key:value`. items: type: string type: array @@ -498,10 +574,31 @@ spec: atProvider: properties: cloudConfigId: + description: ID of the cloud config used for the cluster. This + cloud config must be of type `azure`. type: string + clusterProfile: + items: + properties: + pack: + items: + properties: + manifest: + items: + properties: + uid: + type: string + type: object + type: array + type: object + type: array + type: object + type: array id: type: string kubeconfig: + description: Kubeconfig for the cluster. This can be used to connect + to the cluster using `kubectl`. type: string locationConfig: items: diff --git a/package/crds/cluster.palette.crossplane.io_aws.yaml b/package/crds/cluster.palette.crossplane.io_aws.yaml index 3e8f9f6..d6a4366 100644 --- a/package/crds/cluster.palette.crossplane.io_aws.yaml +++ b/package/crds/cluster.palette.crossplane.io_aws.yaml @@ -69,20 +69,52 @@ spec: items: properties: backupLocationId: + description: The ID of the backup location to use for the + backup. type: string + clusterUids: + description: The list of cluster UIDs to include in the + backup. If `include_all_clusters` is set to `true`, then + all clusters will be included. + items: + type: string + type: array expiryInHour: + description: The number of hours after which the backup + will be deleted. For example, if the expiry is set to + 24, the backup will be deleted after 24 hours. type: number + includeAllClusters: + description: Whether to include all clusters in the backup. + If set to false, only the clusters specified in `cluster_uids` + will be included. + type: boolean includeClusterResources: + description: Whether to include the cluster resources in + the backup. If set to false, only the cluster configuration + and disks will be backed up. type: boolean includeDisks: + description: Whether to include the disks in the backup. + If set to false, only the cluster configuration will be + backed up. type: boolean namespaces: + description: The list of Kubernetes namespaces to include + in the backup. If not specified, all namespaces will be + included. items: type: string type: array prefix: + description: Prefix for the backup name. The backup name + will be of the format --. type: string schedule: + description: The schedule for the backup. The schedule is + specified in cron format. For example, to run the backup + every day at 1:00 AM, the schedule should be set to `0 + 1 * * *`. type: string required: - backupLocationId @@ -111,6 +143,7 @@ spec: items: properties: id: + description: The ID of the cluster profile. type: string pack: items: @@ -119,8 +152,12 @@ spec: items: properties: content: + description: The content of the manifest. The + content is the YAML content of the manifest. type: string name: + description: The name of the manifest. The name + must be unique within the pack. type: string required: - content @@ -128,14 +165,27 @@ spec: type: object type: array name: + description: The name of the pack. The name must be + unique within the cluster profile. type: string registryUid: + description: The registry UID of the pack. The registry + UID is the unique identifier of the registry. type: string tag: + description: The tag of the pack. The tag is the version + of the pack. type: string type: + description: The type of the pack. The default value + is `spectro`. + type: string + uid: type: string values: + description: The values of the pack. The values are + the configuration values of the pack. The values + are specified in YAML format. type: string required: - name @@ -146,25 +196,33 @@ spec: - id type: object type: array - clusterProfileId: - type: string clusterRbacBinding: items: properties: namespace: + description: The Kubernetes namespace of the RBAC binding. + Required if 'type' is set to 'RoleBinding'. type: string role: additionalProperties: type: string + description: The role of the RBAC binding. Required if 'type' + is set to 'RoleBinding'. type: object subjects: items: properties: name: + description: The name of the subject. Required if + 'type' is set to 'User' or 'Group'. type: string namespace: + description: The Kubernetes namespace of the subject. + Required if 'type' is set to 'ServiceAccount'. type: string type: + description: 'The type of the subject. Can be one + of the following values: `User`, `Group`, or `ServiceAccount`.' type: string required: - name @@ -172,6 +230,8 @@ spec: type: object type: array type: + description: 'The type of the RBAC binding. Can be one of + the following values: `RoleBinding`, or `ClusterRoleBinding`.' type: string required: - type @@ -221,10 +281,15 @@ spec: 'on-demand' or 'spot'. Defaults to 'on-demand'. type: string controlPlane: + description: Whether this machine pool is a control plane. + Defaults to `false`. type: boolean controlPlaneAsWorker: + description: Whether this machine pool is a control plane + and a worker. Defaults to `false`. type: boolean count: + description: Number of nodes in the machine pool. type: number diskSizeGb: type: number @@ -238,10 +303,14 @@ spec: items: properties: effect: + description: 'The effect of the taint. Allowed values + are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`.' type: string key: + description: The key of the taint. type: string value: + description: The value of the taint. type: string required: - effect @@ -250,6 +319,8 @@ spec: type: object type: array updateStrategy: + description: Update strategy for the machine pool. Valid + values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`. type: string required: - count @@ -260,11 +331,22 @@ spec: namespaces: items: properties: + imagesBlacklist: + description: List of images to disallow for the namespace. + For example, `['nginx:latest', 'redis:latest']` + items: + type: string + type: array name: + description: Name of the namespace. This is the name of + the Kubernetes namespace in the cluster. type: string resourceAllocation: additionalProperties: type: string + description: 'Resource allocation for the namespace. This + is a map containing the resource type and the resource + value. For example, `{cpu_cores: ''2'', memory_MiB: ''2048''}`' type: object required: - name @@ -272,36 +354,27 @@ spec: type: object type: array osPatchAfter: + description: 'Date and time after which to patch cluster `RFC3339: + 2006-01-02T15:04:05Z07:00`' type: string osPatchOnBoot: + description: Whether to apply OS patch on boot. Default is `false`. type: boolean osPatchSchedule: + description: 'The cron schedule for OS patching. This must be + in the form of cron syntax. Ex: `0 0 * * *`.' type: string - pack: - items: - properties: - name: - type: string - registryUid: - type: string - tag: - type: string - values: - type: string - required: - - name - - tag - - values - type: object - type: array scanPolicy: items: properties: configurationScanSchedule: + description: The schedule for configuration scan. type: string conformanceScanSchedule: + description: The schedule for conformance scan. type: string penetrationScanSchedule: + description: The schedule for penetration scan. type: string required: - configurationScanSchedule @@ -310,8 +383,12 @@ spec: type: object type: array skipCompletion: + description: If `true`, the cluster will be created asynchronously. + Default value is `false`. type: boolean tags: + description: A list of tags to be applied to the cluster. Tags + must be in the form of `key:value`. items: type: string type: array @@ -497,10 +574,31 @@ spec: atProvider: properties: cloudConfigId: + description: ID of the cloud config used for the cluster. This + cloud config must be of type `azure`. type: string + clusterProfile: + items: + properties: + pack: + items: + properties: + manifest: + items: + properties: + uid: + type: string + type: object + type: array + type: object + type: array + type: object + type: array id: type: string kubeconfig: + description: Kubeconfig for the cluster. This can be used to connect + to the cluster using `kubectl`. type: string locationConfig: items: diff --git a/package/crds/cluster.palette.crossplane.io_azures.yaml b/package/crds/cluster.palette.crossplane.io_azures.yaml index 19aa761..18549a4 100644 --- a/package/crds/cluster.palette.crossplane.io_azures.yaml +++ b/package/crds/cluster.palette.crossplane.io_azures.yaml @@ -64,25 +64,59 @@ spec: forProvider: properties: applySetting: + description: Apply setting for the cluster. This can be set to + `on_create` or `on_update`. type: string backupPolicy: items: properties: backupLocationId: + description: The ID of the backup location to use for the + backup. type: string + clusterUids: + description: The list of cluster UIDs to include in the + backup. If `include_all_clusters` is set to `true`, then + all clusters will be included. + items: + type: string + type: array expiryInHour: + description: The number of hours after which the backup + will be deleted. For example, if the expiry is set to + 24, the backup will be deleted after 24 hours. type: number + includeAllClusters: + description: Whether to include all clusters in the backup. + If set to false, only the clusters specified in `cluster_uids` + will be included. + type: boolean includeClusterResources: + description: Whether to include the cluster resources in + the backup. If set to false, only the cluster configuration + and disks will be backed up. type: boolean includeDisks: + description: Whether to include the disks in the backup. + If set to false, only the cluster configuration will be + backed up. type: boolean namespaces: + description: The list of Kubernetes namespaces to include + in the backup. If not specified, all namespaces will be + included. items: type: string type: array prefix: + description: Prefix for the backup name. The backup name + will be of the format --. type: string schedule: + description: The schedule for the backup. The schedule is + specified in cron format. For example, to run the backup + every day at 1:00 AM, the schedule should be set to `0 + 1 * * *`. type: string required: - backupLocationId @@ -92,17 +126,26 @@ spec: type: object type: array cloudAccountId: + description: ID of the cloud account to be used for the cluster. + This cloud account must be of type `azure`. type: string cloudConfig: items: properties: region: + description: Azure region. This can be found in the Azure + portal under `Resource groups`. type: string resourceGroup: + description: Azure resource group. This can be found in + the Azure portal under `Resource groups`. type: string sshKey: + description: SSH key to be used for the cluster nodes. type: string subscriptionId: + description: Azure subscription ID. This can be found in + the Azure portal under `Subscriptions`. type: string required: - region @@ -115,6 +158,7 @@ spec: items: properties: id: + description: The ID of the cluster profile. type: string pack: items: @@ -123,8 +167,12 @@ spec: items: properties: content: + description: The content of the manifest. The + content is the YAML content of the manifest. type: string name: + description: The name of the manifest. The name + must be unique within the pack. type: string required: - content @@ -132,14 +180,27 @@ spec: type: object type: array name: + description: The name of the pack. The name must be + unique within the cluster profile. type: string registryUid: + description: The registry UID of the pack. The registry + UID is the unique identifier of the registry. type: string tag: + description: The tag of the pack. The tag is the version + of the pack. type: string type: + description: The type of the pack. The default value + is `spectro`. + type: string + uid: type: string values: + description: The values of the pack. The values are + the configuration values of the pack. The values + are specified in YAML format. type: string required: - name @@ -154,19 +215,29 @@ spec: items: properties: namespace: + description: The Kubernetes namespace of the RBAC binding. + Required if 'type' is set to 'RoleBinding'. type: string role: additionalProperties: type: string + description: The role of the RBAC binding. Required if 'type' + is set to 'RoleBinding'. type: object subjects: items: properties: name: + description: The name of the subject. Required if + 'type' is set to 'User' or 'Group'. type: string namespace: + description: The Kubernetes namespace of the subject. + Required if 'type' is set to 'ServiceAccount'. type: string type: + description: 'The type of the subject. Can be one + of the following values: `User`, `Group`, or `ServiceAccount`.' type: string required: - name @@ -174,6 +245,8 @@ spec: type: object type: array type: + description: 'The type of the RBAC binding. Can be one of + the following values: `RoleBinding`, or `ClusterRoleBinding`.' type: string required: - type @@ -207,21 +280,31 @@ spec: type: string type: object azs: + description: Availability zones for the machine pool. items: type: string type: array controlPlane: + description: Whether this machine pool is a control plane. + Defaults to `false`. type: boolean controlPlaneAsWorker: + description: Whether this machine pool is a control plane + and a worker. Defaults to `false`. type: boolean count: + description: Number of nodes in the machine pool. type: number disk: + description: Disk configuration for the machine pool. items: properties: sizeGb: + description: Size of the disk in GB. type: number type: + description: Type of the disk. Valid values are `Standard_LRS`, + `StandardSSD_LRS`, `Premium_LRS`. type: string required: - sizeGb @@ -229,21 +312,32 @@ spec: type: object type: array instanceType: + description: Azure instance type from the Azure portal. type: string isSystemNodePool: + description: Whether this machine pool is a system node + pool. Default value is `false'. type: boolean name: + description: Name of the machine pool. This must be unique + within the cluster. type: string osType: + description: Operating system type for the machine pool. + Valid values are `Linux` and `Windows`. Defaults to `Linux`. type: string taints: items: properties: effect: + description: 'The effect of the taint. Allowed values + are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`.' type: string key: + description: The key of the taint. type: string value: + description: The value of the taint. type: string required: - effect @@ -252,23 +346,35 @@ spec: type: object type: array updateStrategy: + description: Update strategy for the machine pool. Valid + values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`. type: string required: - azs - count - instanceType - - isSystemNodePool - name type: object type: array namespaces: items: properties: + imagesBlacklist: + description: List of images to disallow for the namespace. + For example, `['nginx:latest', 'redis:latest']` + items: + type: string + type: array name: + description: Name of the namespace. This is the name of + the Kubernetes namespace in the cluster. type: string resourceAllocation: additionalProperties: type: string + description: 'Resource allocation for the namespace. This + is a map containing the resource type and the resource + value. For example, `{cpu_cores: ''2'', memory_MiB: ''2048''}`' type: object required: - name @@ -276,36 +382,27 @@ spec: type: object type: array osPatchAfter: + description: 'Date and time after which to patch cluster `RFC3339: + 2006-01-02T15:04:05Z07:00`' type: string osPatchOnBoot: + description: Whether to apply OS patch on boot. Default is `false`. type: boolean osPatchSchedule: + description: Cron schedule for OS patching. This must be in the + form of `0 0 * * *`. type: string - pack: - items: - properties: - name: - type: string - registryUid: - type: string - tag: - type: string - values: - type: string - required: - - name - - tag - - values - type: object - type: array scanPolicy: items: properties: configurationScanSchedule: + description: The schedule for configuration scan. type: string conformanceScanSchedule: + description: The schedule for conformance scan. type: string penetrationScanSchedule: + description: The schedule for penetration scan. type: string required: - configurationScanSchedule @@ -314,8 +411,12 @@ spec: type: object type: array skipCompletion: + description: If `true`, the cluster will be created asynchronously. + Default value is `false`. type: boolean tags: + description: A list of tags to be applied to the cluster. Tags + must be in the form of `key:value`. items: type: string type: array @@ -501,10 +602,31 @@ spec: atProvider: properties: cloudConfigId: + description: ID of the cloud config used for the cluster. This + cloud config must be of type `azure`. type: string + clusterProfile: + items: + properties: + pack: + items: + properties: + manifest: + items: + properties: + uid: + type: string + type: object + type: array + type: object + type: array + type: object + type: array id: type: string kubeconfig: + description: Kubeconfig for the cluster. This can be used to connect + to the cluster using `kubectl`. type: string locationConfig: items: diff --git a/package/crds/cluster.palette.crossplane.io_edgenatives.yaml b/package/crds/cluster.palette.crossplane.io_edgenatives.yaml index 67e532b..4b73e7c 100644 --- a/package/crds/cluster.palette.crossplane.io_edgenatives.yaml +++ b/package/crds/cluster.palette.crossplane.io_edgenatives.yaml @@ -69,20 +69,52 @@ spec: items: properties: backupLocationId: + description: The ID of the backup location to use for the + backup. type: string + clusterUids: + description: The list of cluster UIDs to include in the + backup. If `include_all_clusters` is set to `true`, then + all clusters will be included. + items: + type: string + type: array expiryInHour: + description: The number of hours after which the backup + will be deleted. For example, if the expiry is set to + 24, the backup will be deleted after 24 hours. type: number + includeAllClusters: + description: Whether to include all clusters in the backup. + If set to false, only the clusters specified in `cluster_uids` + will be included. + type: boolean includeClusterResources: + description: Whether to include the cluster resources in + the backup. If set to false, only the cluster configuration + and disks will be backed up. type: boolean includeDisks: + description: Whether to include the disks in the backup. + If set to false, only the cluster configuration will be + backed up. type: boolean namespaces: + description: The list of Kubernetes namespaces to include + in the backup. If not specified, all namespaces will be + included. items: type: string type: array prefix: + description: Prefix for the backup name. The backup name + will be of the format --. type: string schedule: + description: The schedule for the backup. The schedule is + specified in cron format. For example, to run the backup + every day at 1:00 AM, the schedule should be set to `0 + 1 * * *`. type: string required: - backupLocationId @@ -112,6 +144,7 @@ spec: items: properties: id: + description: The ID of the cluster profile. type: string pack: items: @@ -120,8 +153,12 @@ spec: items: properties: content: + description: The content of the manifest. The + content is the YAML content of the manifest. type: string name: + description: The name of the manifest. The name + must be unique within the pack. type: string required: - content @@ -129,23 +166,33 @@ spec: type: object type: array name: + description: The name of the pack. The name must be + unique within the cluster profile. type: string registryUid: + description: The registry UID of the pack. The registry + UID is the unique identifier of the registry. type: string tag: + description: The tag of the pack. The tag is the version + of the pack. type: string type: + description: The type of the pack. The default value + is `spectro`. + type: string + uid: type: string values: + description: The values of the pack. The values are + the configuration values of the pack. The values + are specified in YAML format. type: string required: - name - - tag - values type: object type: array - type: - type: string required: - id type: object @@ -154,19 +201,29 @@ spec: items: properties: namespace: + description: The Kubernetes namespace of the RBAC binding. + Required if 'type' is set to 'RoleBinding'. type: string role: additionalProperties: type: string + description: The role of the RBAC binding. Required if 'type' + is set to 'RoleBinding'. type: object subjects: items: properties: name: + description: The name of the subject. Required if + 'type' is set to 'User' or 'Group'. type: string namespace: + description: The Kubernetes namespace of the subject. + Required if 'type' is set to 'ServiceAccount'. type: string type: + description: 'The type of the subject. Can be one + of the following values: `User`, `Group`, or `ServiceAccount`.' type: string required: - name @@ -174,6 +231,8 @@ spec: type: object type: array type: + description: 'The type of the RBAC binding. Can be one of + the following values: `RoleBinding`, or `ClusterRoleBinding`.' type: string required: - type @@ -235,8 +294,12 @@ spec: type: string type: object controlPlane: + description: Whether this machine pool is a control plane. + Defaults to `false`. type: boolean controlPlaneAsWorker: + description: Whether this machine pool is a control plane + and a worker. Defaults to `false`. type: boolean hostUids: items: @@ -248,10 +311,14 @@ spec: items: properties: effect: + description: 'The effect of the taint. Allowed values + are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`.' type: string key: + description: The key of the taint. type: string value: + description: The value of the taint. type: string required: - effect @@ -260,6 +327,8 @@ spec: type: object type: array updateStrategy: + description: Update strategy for the machine pool. Valid + values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`. type: string required: - name @@ -268,11 +337,22 @@ spec: namespaces: items: properties: + imagesBlacklist: + description: List of images to disallow for the namespace. + For example, `['nginx:latest', 'redis:latest']` + items: + type: string + type: array name: + description: Name of the namespace. This is the name of + the Kubernetes namespace in the cluster. type: string resourceAllocation: additionalProperties: type: string + description: 'Resource allocation for the namespace. This + is a map containing the resource type and the resource + value. For example, `{cpu_cores: ''2'', memory_MiB: ''2048''}`' type: object required: - name @@ -280,36 +360,27 @@ spec: type: object type: array osPatchAfter: + description: 'Date and time after which to patch cluster `RFC3339: + 2006-01-02T15:04:05Z07:00`' type: string osPatchOnBoot: + description: Whether to apply OS patch on boot. Default is `false`. type: boolean osPatchSchedule: + description: 'The cron schedule for OS patching. This must be + in the form of cron syntax. Ex: `0 0 * * *`.' type: string - pack: - items: - properties: - name: - type: string - registryUid: - type: string - tag: - type: string - values: - type: string - required: - - name - - tag - - values - type: object - type: array scanPolicy: items: properties: configurationScanSchedule: + description: The schedule for configuration scan. type: string conformanceScanSchedule: + description: The schedule for conformance scan. type: string penetrationScanSchedule: + description: The schedule for penetration scan. type: string required: - configurationScanSchedule @@ -318,8 +389,12 @@ spec: type: object type: array skipCompletion: + description: If `true`, the cluster will be created asynchronously. + Default value is `false`. type: boolean tags: + description: A list of tags to be applied to the cluster. Tags + must be in the form of `key:value`. items: type: string type: array @@ -504,10 +579,31 @@ spec: atProvider: properties: cloudConfigId: + description: ID of the cloud config used for the cluster. This + cloud config must be of type `azure`. type: string + clusterProfile: + items: + properties: + pack: + items: + properties: + manifest: + items: + properties: + uid: + type: string + type: object + type: array + type: object + type: array + type: object + type: array id: type: string kubeconfig: + description: Kubeconfig for the cluster. This can be used to connect + to the cluster using `kubectl`. type: string type: object conditions: diff --git a/package/crds/cluster.palette.crossplane.io_edges.yaml b/package/crds/cluster.palette.crossplane.io_edges.yaml index 8cf9210..c93718d 100644 --- a/package/crds/cluster.palette.crossplane.io_edges.yaml +++ b/package/crds/cluster.palette.crossplane.io_edges.yaml @@ -69,20 +69,52 @@ spec: items: properties: backupLocationId: + description: The ID of the backup location to use for the + backup. type: string + clusterUids: + description: The list of cluster UIDs to include in the + backup. If `include_all_clusters` is set to `true`, then + all clusters will be included. + items: + type: string + type: array expiryInHour: + description: The number of hours after which the backup + will be deleted. For example, if the expiry is set to + 24, the backup will be deleted after 24 hours. type: number + includeAllClusters: + description: Whether to include all clusters in the backup. + If set to false, only the clusters specified in `cluster_uids` + will be included. + type: boolean includeClusterResources: + description: Whether to include the cluster resources in + the backup. If set to false, only the cluster configuration + and disks will be backed up. type: boolean includeDisks: + description: Whether to include the disks in the backup. + If set to false, only the cluster configuration will be + backed up. type: boolean namespaces: + description: The list of Kubernetes namespaces to include + in the backup. If not specified, all namespaces will be + included. items: type: string type: array prefix: + description: Prefix for the backup name. The backup name + will be of the format --. type: string schedule: + description: The schedule for the backup. The schedule is + specified in cron format. For example, to run the backup + every day at 1:00 AM, the schedule should be set to `0 + 1 * * *`. type: string required: - backupLocationId @@ -106,6 +138,7 @@ spec: items: properties: id: + description: The ID of the cluster profile. type: string pack: items: @@ -114,8 +147,12 @@ spec: items: properties: content: + description: The content of the manifest. The + content is the YAML content of the manifest. type: string name: + description: The name of the manifest. The name + must be unique within the pack. type: string required: - content @@ -123,18 +160,30 @@ spec: type: object type: array name: + description: The name of the pack. The name must be + unique within the cluster profile. type: string registryUid: + description: The registry UID of the pack. The registry + UID is the unique identifier of the registry. type: string tag: + description: The tag of the pack. The tag is the version + of the pack. type: string type: + description: The type of the pack. The default value + is `spectro`. + type: string + uid: type: string values: + description: The values of the pack. The values are + the configuration values of the pack. The values + are specified in YAML format. type: string required: - name - - tag - values type: object type: array @@ -146,19 +195,29 @@ spec: items: properties: namespace: + description: The Kubernetes namespace of the RBAC binding. + Required if 'type' is set to 'RoleBinding'. type: string role: additionalProperties: type: string + description: The role of the RBAC binding. Required if 'type' + is set to 'RoleBinding'. type: object subjects: items: properties: name: + description: The name of the subject. Required if + 'type' is set to 'User' or 'Group'. type: string namespace: + description: The Kubernetes namespace of the subject. + Required if 'type' is set to 'ServiceAccount'. type: string type: + description: 'The type of the subject. Can be one + of the following values: `User`, `Group`, or `ServiceAccount`.' type: string required: - name @@ -166,6 +225,8 @@ spec: type: object type: array type: + description: 'The type of the RBAC binding. Can be one of + the following values: `RoleBinding`, or `ClusterRoleBinding`.' type: string required: - type @@ -227,10 +288,15 @@ spec: type: string type: object controlPlane: + description: Whether this machine pool is a control plane. + Defaults to `false`. type: boolean controlPlaneAsWorker: + description: Whether this machine pool is a control plane + and a worker. Defaults to `false`. type: boolean count: + description: Number of nodes in the machine pool. type: number name: type: string @@ -247,10 +313,14 @@ spec: items: properties: effect: + description: 'The effect of the taint. Allowed values + are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`.' type: string key: + description: The key of the taint. type: string value: + description: The value of the taint. type: string required: - effect @@ -259,6 +329,8 @@ spec: type: object type: array updateStrategy: + description: Update strategy for the machine pool. Valid + values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`. type: string required: - count @@ -269,11 +341,22 @@ spec: namespaces: items: properties: + imagesBlacklist: + description: List of images to disallow for the namespace. + For example, `['nginx:latest', 'redis:latest']` + items: + type: string + type: array name: + description: Name of the namespace. This is the name of + the Kubernetes namespace in the cluster. type: string resourceAllocation: additionalProperties: type: string + description: 'Resource allocation for the namespace. This + is a map containing the resource type and the resource + value. For example, `{cpu_cores: ''2'', memory_MiB: ''2048''}`' type: object required: - name @@ -281,36 +364,27 @@ spec: type: object type: array osPatchAfter: + description: 'Date and time after which to patch cluster `RFC3339: + 2006-01-02T15:04:05Z07:00`' type: string osPatchOnBoot: + description: Whether to apply OS patch on boot. Default is `false`. type: boolean osPatchSchedule: + description: 'The cron schedule for OS patching. This must be + in the form of cron syntax. Ex: `0 0 * * *`.' type: string - pack: - items: - properties: - name: - type: string - registryUid: - type: string - tag: - type: string - values: - type: string - required: - - name - - tag - - values - type: object - type: array scanPolicy: items: properties: configurationScanSchedule: + description: The schedule for configuration scan. type: string conformanceScanSchedule: + description: The schedule for conformance scan. type: string penetrationScanSchedule: + description: The schedule for penetration scan. type: string required: - configurationScanSchedule @@ -319,8 +393,12 @@ spec: type: object type: array skipCompletion: + description: If `true`, the cluster will be created asynchronously. + Default value is `false`. type: boolean tags: + description: A list of tags to be applied to the cluster. Tags + must be in the form of `key:value`. items: type: string type: array @@ -505,10 +583,31 @@ spec: atProvider: properties: cloudConfigId: + description: ID of the cloud config used for the cluster. This + cloud config must be of type `azure`. type: string + clusterProfile: + items: + properties: + pack: + items: + properties: + manifest: + items: + properties: + uid: + type: string + type: object + type: array + type: object + type: array + type: object + type: array id: type: string kubeconfig: + description: Kubeconfig for the cluster. This can be used to connect + to the cluster using `kubectl`. type: string type: object conditions: diff --git a/package/crds/cluster.palette.crossplane.io_edgevspheres.yaml b/package/crds/cluster.palette.crossplane.io_edgevspheres.yaml index 2e657c4..d7d6861 100644 --- a/package/crds/cluster.palette.crossplane.io_edgevspheres.yaml +++ b/package/crds/cluster.palette.crossplane.io_edgevspheres.yaml @@ -67,20 +67,52 @@ spec: items: properties: backupLocationId: + description: The ID of the backup location to use for the + backup. type: string + clusterUids: + description: The list of cluster UIDs to include in the + backup. If `include_all_clusters` is set to `true`, then + all clusters will be included. + items: + type: string + type: array expiryInHour: + description: The number of hours after which the backup + will be deleted. For example, if the expiry is set to + 24, the backup will be deleted after 24 hours. type: number + includeAllClusters: + description: Whether to include all clusters in the backup. + If set to false, only the clusters specified in `cluster_uids` + will be included. + type: boolean includeClusterResources: + description: Whether to include the cluster resources in + the backup. If set to false, only the cluster configuration + and disks will be backed up. type: boolean includeDisks: + description: Whether to include the disks in the backup. + If set to false, only the cluster configuration will be + backed up. type: boolean namespaces: + description: The list of Kubernetes namespaces to include + in the backup. If not specified, all namespaces will be + included. items: type: string type: array prefix: + description: Prefix for the backup name. The backup name + will be of the format --. type: string schedule: + description: The schedule for the backup. The schedule is + specified in cron format. For example, to run the backup + every day at 1:00 AM, the schedule should be set to `0 + 1 * * *`. type: string required: - backupLocationId @@ -118,6 +150,7 @@ spec: items: properties: id: + description: The ID of the cluster profile. type: string pack: items: @@ -126,8 +159,12 @@ spec: items: properties: content: + description: The content of the manifest. The + content is the YAML content of the manifest. type: string name: + description: The name of the manifest. The name + must be unique within the pack. type: string required: - content @@ -135,18 +172,30 @@ spec: type: object type: array name: + description: The name of the pack. The name must be + unique within the cluster profile. type: string registryUid: + description: The registry UID of the pack. The registry + UID is the unique identifier of the registry. type: string tag: + description: The tag of the pack. The tag is the version + of the pack. type: string type: + description: The type of the pack. The default value + is `spectro`. + type: string + uid: type: string values: + description: The values of the pack. The values are + the configuration values of the pack. The values + are specified in YAML format. type: string required: - name - - tag - values type: object type: array @@ -158,19 +207,29 @@ spec: items: properties: namespace: + description: The Kubernetes namespace of the RBAC binding. + Required if 'type' is set to 'RoleBinding'. type: string role: additionalProperties: type: string + description: The role of the RBAC binding. Required if 'type' + is set to 'RoleBinding'. type: object subjects: items: properties: name: + description: The name of the subject. Required if + 'type' is set to 'User' or 'Group'. type: string namespace: + description: The Kubernetes namespace of the subject. + Required if 'type' is set to 'ServiceAccount'. type: string type: + description: 'The type of the subject. Can be one + of the following values: `User`, `Group`, or `ServiceAccount`.' type: string required: - name @@ -178,6 +237,8 @@ spec: type: object type: array type: + description: 'The type of the RBAC binding. Can be one of + the following values: `RoleBinding`, or `ClusterRoleBinding`.' type: string required: - type @@ -241,10 +302,15 @@ spec: type: string type: object controlPlane: + description: Whether this machine pool is a control plane. + Defaults to `false`. type: boolean controlPlaneAsWorker: + description: Whether this machine pool is a control plane + and a worker. Defaults to `false`. type: boolean count: + description: Number of nodes in the machine pool. type: number instanceType: items: @@ -287,10 +353,14 @@ spec: items: properties: effect: + description: 'The effect of the taint. Allowed values + are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`.' type: string key: + description: The key of the taint. type: string value: + description: The value of the taint. type: string required: - effect @@ -299,6 +369,8 @@ spec: type: object type: array updateStrategy: + description: Update strategy for the machine pool. Valid + values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`. type: string required: - count @@ -310,11 +382,22 @@ spec: namespaces: items: properties: + imagesBlacklist: + description: List of images to disallow for the namespace. + For example, `['nginx:latest', 'redis:latest']` + items: + type: string + type: array name: + description: Name of the namespace. This is the name of + the Kubernetes namespace in the cluster. type: string resourceAllocation: additionalProperties: type: string + description: 'Resource allocation for the namespace. This + is a map containing the resource type and the resource + value. For example, `{cpu_cores: ''2'', memory_MiB: ''2048''}`' type: object required: - name @@ -322,36 +405,27 @@ spec: type: object type: array osPatchAfter: + description: 'Date and time after which to patch cluster `RFC3339: + 2006-01-02T15:04:05Z07:00`' type: string osPatchOnBoot: + description: Whether to apply OS patch on boot. Default is `false`. type: boolean osPatchSchedule: + description: Cron schedule for OS patching. This must be in the + form of `0 0 * * *`. type: string - pack: - items: - properties: - name: - type: string - registryUid: - type: string - tag: - type: string - values: - type: string - required: - - name - - tag - - values - type: object - type: array scanPolicy: items: properties: configurationScanSchedule: + description: The schedule for configuration scan. type: string conformanceScanSchedule: + description: The schedule for conformance scan. type: string penetrationScanSchedule: + description: The schedule for penetration scan. type: string required: - configurationScanSchedule @@ -360,8 +434,12 @@ spec: type: object type: array skipCompletion: + description: If `true`, the cluster will be created asynchronously. + Default value is `false`. type: boolean tags: + description: A list of tags to be applied to the cluster. Tags + must be in the form of `key:value`. items: type: string type: array @@ -547,10 +625,31 @@ spec: atProvider: properties: cloudConfigId: + description: ID of the cloud config used for the cluster. This + cloud config must be of type `azure`. type: string + clusterProfile: + items: + properties: + pack: + items: + properties: + manifest: + items: + properties: + uid: + type: string + type: object + type: array + type: object + type: array + type: object + type: array id: type: string kubeconfig: + description: Kubeconfig for the cluster. This can be used to connect + to the cluster using `kubectl`. type: string machinePool: items: diff --git a/package/crds/cluster.palette.crossplane.io_eks.yaml b/package/crds/cluster.palette.crossplane.io_eks.yaml index 80a80dc..34bf6b5 100644 --- a/package/crds/cluster.palette.crossplane.io_eks.yaml +++ b/package/crds/cluster.palette.crossplane.io_eks.yaml @@ -69,22 +69,52 @@ spec: items: properties: backupLocationId: + description: The ID of the backup location to use for the + backup. type: string + clusterUids: + description: The list of cluster UIDs to include in the + backup. If `include_all_clusters` is set to `true`, then + all clusters will be included. + items: + type: string + type: array expiryInHour: + description: The number of hours after which the backup + will be deleted. For example, if the expiry is set to + 24, the backup will be deleted after 24 hours. type: number + includeAllClusters: + description: Whether to include all clusters in the backup. + If set to false, only the clusters specified in `cluster_uids` + will be included. + type: boolean includeClusterResources: + description: Whether to include the cluster resources in + the backup. If set to false, only the cluster configuration + and disks will be backed up. type: boolean includeDisks: + description: Whether to include the disks in the backup. + If set to false, only the cluster configuration will be + backed up. type: boolean namespaces: - description: Provide namespaces that need to be backed up. - If left empty then all the Namespaces will be backed up. + description: The list of Kubernetes namespaces to include + in the backup. If not specified, all namespaces will be + included. items: type: string type: array prefix: + description: Prefix for the backup name. The backup name + will be of the format --. type: string schedule: + description: The schedule for the backup. The schedule is + specified in cron format. For example, to run the backup + every day at 1:00 AM, the schedule should be set to `0 + 1 * * *`. type: string required: - backupLocationId @@ -94,8 +124,12 @@ spec: type: object type: array cloudAccountId: + description: The AWS cloud account id to use for this cluster. type: string cloudConfig: + description: The AWS environment configuration settings such as + network parameters and encryption parameters that apply to this + cluster. items: properties: azSubnets: @@ -132,6 +166,7 @@ spec: items: properties: id: + description: The ID of the cluster profile. type: string pack: items: @@ -140,8 +175,12 @@ spec: items: properties: content: + description: The content of the manifest. The + content is the YAML content of the manifest. type: string name: + description: The name of the manifest. The name + must be unique within the pack. type: string required: - content @@ -149,46 +188,64 @@ spec: type: object type: array name: + description: The name of the pack. The name must be + unique within the cluster profile. type: string registryUid: + description: The registry UID of the pack. The registry + UID is the unique identifier of the registry. type: string tag: + description: The tag of the pack. The tag is the version + of the pack. type: string type: + description: The type of the pack. The default value + is `spectro`. + type: string + uid: type: string values: + description: The values of the pack. The values are + the configuration values of the pack. The values + are specified in YAML format. type: string required: - name + - values type: object type: array required: - id type: object type: array - clusterProfileId: - type: string clusterRbacBinding: - description: A Cluster Role binding defines the permissions defined - across a cluster. items: properties: namespace: + description: The Kubernetes namespace of the RBAC binding. + Required if 'type' is set to 'RoleBinding'. type: string role: additionalProperties: type: string + description: The role of the RBAC binding. Required if 'type' + is set to 'RoleBinding'. type: object subjects: items: properties: name: + description: The name of the subject. Required if + 'type' is set to 'User' or 'Group'. type: string namespace: + description: The Kubernetes namespace of the subject. + Required if 'type' is set to 'ServiceAccount'. type: string type: - description: 'Available types: `Users`, `Groups`, - Service Account' + description: 'The type of the subject. Can be one + of the following values: `User`, `Group`, or `ServiceAccount`.' type: string required: - name @@ -196,6 +253,8 @@ spec: type: object type: array type: + description: 'The type of the RBAC binding. Can be one of + the following values: `RoleBinding`, or `ClusterRoleBinding`.' type: string required: - type @@ -255,6 +314,7 @@ spec: type: object type: array machinePool: + description: The machine pool configuration for the cluster. items: properties: additionalLabels: @@ -274,6 +334,7 @@ spec: 'on-demand' or 'spot'. Defaults to 'on-demand'. type: string count: + description: Number of nodes in the machine pool. type: number diskSizeGb: type: number @@ -291,10 +352,14 @@ spec: items: properties: effect: + description: 'The effect of the taint. Allowed values + are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`.' type: string key: + description: The key of the taint. type: string value: + description: The value of the taint. type: string required: - effect @@ -303,6 +368,8 @@ spec: type: object type: array updateStrategy: + description: Update strategy for the machine pool. Valid + values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`. type: string required: - count @@ -314,11 +381,22 @@ spec: namespaces: items: properties: + imagesBlacklist: + description: List of images to disallow for the namespace. + For example, `['nginx:latest', 'redis:latest']` + items: + type: string + type: array name: + description: Name of the namespace. This is the name of + the Kubernetes namespace in the cluster. type: string resourceAllocation: additionalProperties: type: string + description: 'Resource allocation for the namespace. This + is a map containing the resource type and the resource + value. For example, `{cpu_cores: ''2'', memory_MiB: ''2048''}`' type: object required: - name @@ -326,36 +404,27 @@ spec: type: object type: array osPatchAfter: + description: 'Date and time after which to patch cluster `RFC3339: + 2006-01-02T15:04:05Z07:00`' type: string osPatchOnBoot: + description: Whether to apply OS patch on boot. Default is `false`. type: boolean osPatchSchedule: + description: Cron schedule for OS patching. This must be in the + form of `0 0 * * *`. type: string - pack: - items: - properties: - name: - type: string - registryUid: - type: string - tag: - type: string - values: - type: string - required: - - name - - tag - - values - type: object - type: array scanPolicy: items: properties: configurationScanSchedule: + description: The schedule for configuration scan. type: string conformanceScanSchedule: + description: The schedule for conformance scan. type: string penetrationScanSchedule: + description: The schedule for penetration scan. type: string required: - configurationScanSchedule @@ -364,8 +433,12 @@ spec: type: object type: array skipCompletion: + description: If `true`, the cluster will be created asynchronously. + Default value is `false`. type: boolean tags: + description: A list of tags to be applied to the cluster. Tags + must be in the form of `key:value`. items: type: string type: array @@ -551,10 +624,31 @@ spec: atProvider: properties: cloudConfigId: + description: ID of the cloud config used for the cluster. This + cloud config must be of type `azure`. type: string + clusterProfile: + items: + properties: + pack: + items: + properties: + manifest: + items: + properties: + uid: + type: string + type: object + type: array + type: object + type: array + type: object + type: array id: type: string kubeconfig: + description: Kubeconfig for the cluster. This can be used to connect + to the cluster using `kubectl`. type: string locationConfig: items: diff --git a/package/crds/cluster.palette.crossplane.io_gcps.yaml b/package/crds/cluster.palette.crossplane.io_gcps.yaml index 49a9ca0..af6d645 100644 --- a/package/crds/cluster.palette.crossplane.io_gcps.yaml +++ b/package/crds/cluster.palette.crossplane.io_gcps.yaml @@ -69,20 +69,52 @@ spec: items: properties: backupLocationId: + description: The ID of the backup location to use for the + backup. type: string + clusterUids: + description: The list of cluster UIDs to include in the + backup. If `include_all_clusters` is set to `true`, then + all clusters will be included. + items: + type: string + type: array expiryInHour: + description: The number of hours after which the backup + will be deleted. For example, if the expiry is set to + 24, the backup will be deleted after 24 hours. type: number + includeAllClusters: + description: Whether to include all clusters in the backup. + If set to false, only the clusters specified in `cluster_uids` + will be included. + type: boolean includeClusterResources: + description: Whether to include the cluster resources in + the backup. If set to false, only the cluster configuration + and disks will be backed up. type: boolean includeDisks: + description: Whether to include the disks in the backup. + If set to false, only the cluster configuration will be + backed up. type: boolean namespaces: + description: The list of Kubernetes namespaces to include + in the backup. If not specified, all namespaces will be + included. items: type: string type: array prefix: + description: Prefix for the backup name. The backup name + will be of the format --. type: string schedule: + description: The schedule for the backup. The schedule is + specified in cron format. For example, to run the backup + every day at 1:00 AM, the schedule should be set to `0 + 1 * * *`. type: string required: - backupLocationId @@ -111,6 +143,7 @@ spec: items: properties: id: + description: The ID of the cluster profile. type: string pack: items: @@ -119,8 +152,12 @@ spec: items: properties: content: + description: The content of the manifest. The + content is the YAML content of the manifest. type: string name: + description: The name of the manifest. The name + must be unique within the pack. type: string required: - content @@ -128,14 +165,27 @@ spec: type: object type: array name: + description: The name of the pack. The name must be + unique within the cluster profile. type: string registryUid: + description: The registry UID of the pack. The registry + UID is the unique identifier of the registry. type: string tag: + description: The tag of the pack. The tag is the version + of the pack. type: string type: + description: The type of the pack. The default value + is `spectro`. + type: string + uid: type: string values: + description: The values of the pack. The values are + the configuration values of the pack. The values + are specified in YAML format. type: string required: - name @@ -150,19 +200,29 @@ spec: items: properties: namespace: + description: The Kubernetes namespace of the RBAC binding. + Required if 'type' is set to 'RoleBinding'. type: string role: additionalProperties: type: string + description: The role of the RBAC binding. Required if 'type' + is set to 'RoleBinding'. type: object subjects: items: properties: name: + description: The name of the subject. Required if + 'type' is set to 'User' or 'Group'. type: string namespace: + description: The Kubernetes namespace of the subject. + Required if 'type' is set to 'ServiceAccount'. type: string type: + description: 'The type of the subject. Can be one + of the following values: `User`, `Group`, or `ServiceAccount`.' type: string required: - name @@ -170,6 +230,8 @@ spec: type: object type: array type: + description: 'The type of the RBAC binding. Can be one of + the following values: `RoleBinding`, or `ClusterRoleBinding`.' type: string required: - type @@ -207,10 +269,15 @@ spec: type: string type: array controlPlane: + description: Whether this machine pool is a control plane. + Defaults to `false`. type: boolean controlPlaneAsWorker: + description: Whether this machine pool is a control plane + and a worker. Defaults to `false`. type: boolean count: + description: Number of nodes in the machine pool. type: number diskSizeGb: type: number @@ -222,10 +289,14 @@ spec: items: properties: effect: + description: 'The effect of the taint. Allowed values + are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`.' type: string key: + description: The key of the taint. type: string value: + description: The value of the taint. type: string required: - effect @@ -234,6 +305,8 @@ spec: type: object type: array updateStrategy: + description: Update strategy for the machine pool. Valid + values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`. type: string required: - azs @@ -245,11 +318,22 @@ spec: namespaces: items: properties: + imagesBlacklist: + description: List of images to disallow for the namespace. + For example, `['nginx:latest', 'redis:latest']` + items: + type: string + type: array name: + description: Name of the namespace. This is the name of + the Kubernetes namespace in the cluster. type: string resourceAllocation: additionalProperties: type: string + description: 'Resource allocation for the namespace. This + is a map containing the resource type and the resource + value. For example, `{cpu_cores: ''2'', memory_MiB: ''2048''}`' type: object required: - name @@ -257,36 +341,27 @@ spec: type: object type: array osPatchAfter: + description: 'Date and time after which to patch cluster `RFC3339: + 2006-01-02T15:04:05Z07:00`' type: string osPatchOnBoot: + description: Whether to apply OS patch on boot. Default is `false`. type: boolean osPatchSchedule: + description: Cron schedule for OS patching. This must be in the + form of `0 0 * * *`. type: string - pack: - items: - properties: - name: - type: string - registryUid: - type: string - tag: - type: string - values: - type: string - required: - - name - - tag - - values - type: object - type: array scanPolicy: items: properties: configurationScanSchedule: + description: The schedule for configuration scan. type: string conformanceScanSchedule: + description: The schedule for conformance scan. type: string penetrationScanSchedule: + description: The schedule for penetration scan. type: string required: - configurationScanSchedule @@ -295,8 +370,12 @@ spec: type: object type: array skipCompletion: + description: If `true`, the cluster will be created asynchronously. + Default value is `false`. type: boolean tags: + description: A list of tags to be applied to the cluster. Tags + must be in the form of `key:value`. items: type: string type: array @@ -482,10 +561,31 @@ spec: atProvider: properties: cloudConfigId: + description: ID of the cloud config used for the cluster. This + cloud config must be of type `azure`. type: string + clusterProfile: + items: + properties: + pack: + items: + properties: + manifest: + items: + properties: + uid: + type: string + type: object + type: array + type: object + type: array + type: object + type: array id: type: string kubeconfig: + description: Kubeconfig for the cluster. This can be used to connect + to the cluster using `kubectl`. type: string locationConfig: items: diff --git a/package/crds/cluster.palette.crossplane.io_libvirts.yaml b/package/crds/cluster.palette.crossplane.io_libvirts.yaml index 0ccc8ae..4b938ac 100644 --- a/package/crds/cluster.palette.crossplane.io_libvirts.yaml +++ b/package/crds/cluster.palette.crossplane.io_libvirts.yaml @@ -69,20 +69,52 @@ spec: items: properties: backupLocationId: + description: The ID of the backup location to use for the + backup. type: string + clusterUids: + description: The list of cluster UIDs to include in the + backup. If `include_all_clusters` is set to `true`, then + all clusters will be included. + items: + type: string + type: array expiryInHour: + description: The number of hours after which the backup + will be deleted. For example, if the expiry is set to + 24, the backup will be deleted after 24 hours. type: number + includeAllClusters: + description: Whether to include all clusters in the backup. + If set to false, only the clusters specified in `cluster_uids` + will be included. + type: boolean includeClusterResources: + description: Whether to include the cluster resources in + the backup. If set to false, only the cluster configuration + and disks will be backed up. type: boolean includeDisks: + description: Whether to include the disks in the backup. + If set to false, only the cluster configuration will be + backed up. type: boolean namespaces: + description: The list of Kubernetes namespaces to include + in the backup. If not specified, all namespaces will be + included. items: type: string type: array prefix: + description: Prefix for the backup name. The backup name + will be of the format --. type: string schedule: + description: The schedule for the backup. The schedule is + specified in cron format. For example, to run the backup + every day at 1:00 AM, the schedule should be set to `0 + 1 * * *`. type: string required: - backupLocationId @@ -113,6 +145,7 @@ spec: items: properties: id: + description: The ID of the cluster profile. type: string pack: items: @@ -121,8 +154,12 @@ spec: items: properties: content: + description: The content of the manifest. The + content is the YAML content of the manifest. type: string name: + description: The name of the manifest. The name + must be unique within the pack. type: string required: - content @@ -130,23 +167,33 @@ spec: type: object type: array name: + description: The name of the pack. The name must be + unique within the cluster profile. type: string registryUid: + description: The registry UID of the pack. The registry + UID is the unique identifier of the registry. type: string tag: + description: The tag of the pack. The tag is the version + of the pack. type: string type: + description: The type of the pack. The default value + is `spectro`. + type: string + uid: type: string values: + description: The values of the pack. The values are + the configuration values of the pack. The values + are specified in YAML format. type: string required: - name - - tag - values type: object type: array - type: - type: string required: - id type: object @@ -155,19 +202,29 @@ spec: items: properties: namespace: + description: The Kubernetes namespace of the RBAC binding. + Required if 'type' is set to 'RoleBinding'. type: string role: additionalProperties: type: string + description: The role of the RBAC binding. Required if 'type' + is set to 'RoleBinding'. type: object subjects: items: properties: name: + description: The name of the subject. Required if + 'type' is set to 'User' or 'Group'. type: string namespace: + description: The Kubernetes namespace of the subject. + Required if 'type' is set to 'ServiceAccount'. type: string type: + description: 'The type of the subject. Can be one + of the following values: `User`, `Group`, or `ServiceAccount`.' type: string required: - name @@ -175,6 +232,8 @@ spec: type: object type: array type: + description: 'The type of the RBAC binding. Can be one of + the following values: `RoleBinding`, or `ClusterRoleBinding`.' type: string required: - type @@ -236,10 +295,15 @@ spec: type: string type: object controlPlane: + description: Whether this machine pool is a control plane. + Defaults to `false`. type: boolean controlPlaneAsWorker: + description: Whether this machine pool is a control plane + and a worker. Defaults to `false`. type: boolean count: + description: Number of nodes in the machine pool. type: number instanceType: items: @@ -322,10 +386,14 @@ spec: items: properties: effect: + description: 'The effect of the taint. Allowed values + are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`.' type: string key: + description: The key of the taint. type: string value: + description: The value of the taint. type: string required: - effect @@ -334,6 +402,8 @@ spec: type: object type: array updateStrategy: + description: Update strategy for the machine pool. Valid + values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`. type: string required: - count @@ -345,11 +415,22 @@ spec: namespaces: items: properties: + imagesBlacklist: + description: List of images to disallow for the namespace. + For example, `['nginx:latest', 'redis:latest']` + items: + type: string + type: array name: + description: Name of the namespace. This is the name of + the Kubernetes namespace in the cluster. type: string resourceAllocation: additionalProperties: type: string + description: 'Resource allocation for the namespace. This + is a map containing the resource type and the resource + value. For example, `{cpu_cores: ''2'', memory_MiB: ''2048''}`' type: object required: - name @@ -357,36 +438,27 @@ spec: type: object type: array osPatchAfter: + description: 'Date and time after which to patch cluster `RFC3339: + 2006-01-02T15:04:05Z07:00`' type: string osPatchOnBoot: + description: Whether to apply OS patch on boot. Default is `false`. type: boolean osPatchSchedule: + description: Cron schedule for OS patching. This must be in the + form of `0 0 * * *`. type: string - pack: - items: - properties: - name: - type: string - registryUid: - type: string - tag: - type: string - values: - type: string - required: - - name - - tag - - values - type: object - type: array scanPolicy: items: properties: configurationScanSchedule: + description: The schedule for configuration scan. type: string conformanceScanSchedule: + description: The schedule for conformance scan. type: string penetrationScanSchedule: + description: The schedule for penetration scan. type: string required: - configurationScanSchedule @@ -395,8 +467,12 @@ spec: type: object type: array skipCompletion: + description: If `true`, the cluster will be created asynchronously. + Default value is `false`. type: boolean tags: + description: A list of tags to be applied to the cluster. Tags + must be in the form of `key:value`. items: type: string type: array @@ -581,10 +657,31 @@ spec: atProvider: properties: cloudConfigId: + description: ID of the cloud config used for the cluster. This + cloud config must be of type `azure`. type: string + clusterProfile: + items: + properties: + pack: + items: + properties: + manifest: + items: + properties: + uid: + type: string + type: object + type: array + type: object + type: array + type: object + type: array id: type: string kubeconfig: + description: Kubeconfig for the cluster. This can be used to connect + to the cluster using `kubectl`. type: string type: object conditions: diff --git a/package/crds/cluster.palette.crossplane.io_maas.yaml b/package/crds/cluster.palette.crossplane.io_maas.yaml index 7d7eb66..f6d944e 100644 --- a/package/crds/cluster.palette.crossplane.io_maas.yaml +++ b/package/crds/cluster.palette.crossplane.io_maas.yaml @@ -69,20 +69,52 @@ spec: items: properties: backupLocationId: + description: The ID of the backup location to use for the + backup. type: string + clusterUids: + description: The list of cluster UIDs to include in the + backup. If `include_all_clusters` is set to `true`, then + all clusters will be included. + items: + type: string + type: array expiryInHour: + description: The number of hours after which the backup + will be deleted. For example, if the expiry is set to + 24, the backup will be deleted after 24 hours. type: number + includeAllClusters: + description: Whether to include all clusters in the backup. + If set to false, only the clusters specified in `cluster_uids` + will be included. + type: boolean includeClusterResources: + description: Whether to include the cluster resources in + the backup. If set to false, only the cluster configuration + and disks will be backed up. type: boolean includeDisks: + description: Whether to include the disks in the backup. + If set to false, only the cluster configuration will be + backed up. type: boolean namespaces: + description: The list of Kubernetes namespaces to include + in the backup. If not specified, all namespaces will be + included. items: type: string type: array prefix: + description: Prefix for the backup name. The backup name + will be of the format --. type: string schedule: + description: The schedule for the backup. The schedule is + specified in cron format. For example, to run the backup + every day at 1:00 AM, the schedule should be set to `0 + 1 * * *`. type: string required: - backupLocationId @@ -106,6 +138,7 @@ spec: items: properties: id: + description: The ID of the cluster profile. type: string pack: items: @@ -114,8 +147,12 @@ spec: items: properties: content: + description: The content of the manifest. The + content is the YAML content of the manifest. type: string name: + description: The name of the manifest. The name + must be unique within the pack. type: string required: - content @@ -123,14 +160,27 @@ spec: type: object type: array name: + description: The name of the pack. The name must be + unique within the cluster profile. type: string registryUid: + description: The registry UID of the pack. The registry + UID is the unique identifier of the registry. type: string tag: + description: The tag of the pack. The tag is the version + of the pack. type: string type: + description: The type of the pack. The default value + is `spectro`. + type: string + uid: type: string values: + description: The values of the pack. The values are + the configuration values of the pack. The values + are specified in YAML format. type: string required: - name @@ -145,19 +195,29 @@ spec: items: properties: namespace: + description: The Kubernetes namespace of the RBAC binding. + Required if 'type' is set to 'RoleBinding'. type: string role: additionalProperties: type: string + description: The role of the RBAC binding. Required if 'type' + is set to 'RoleBinding'. type: object subjects: items: properties: name: + description: The name of the subject. Required if + 'type' is set to 'User' or 'Group'. type: string namespace: + description: The Kubernetes namespace of the subject. + Required if 'type' is set to 'ServiceAccount'. type: string type: + description: 'The type of the subject. Can be one + of the following values: `User`, `Group`, or `ServiceAccount`.' type: string required: - name @@ -165,6 +225,8 @@ spec: type: object type: array type: + description: 'The type of the RBAC binding. Can be one of + the following values: `RoleBinding`, or `ClusterRoleBinding`.' type: string required: - type @@ -230,10 +292,15 @@ spec: type: string type: array controlPlane: + description: Whether this machine pool is a control plane. + Defaults to `false`. type: boolean controlPlaneAsWorker: + description: Whether this machine pool is a control plane + and a worker. Defaults to `false`. type: boolean count: + description: Number of nodes in the machine pool. type: number instanceType: items: @@ -262,10 +329,14 @@ spec: items: properties: effect: + description: 'The effect of the taint. Allowed values + are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`.' type: string key: + description: The key of the taint. type: string value: + description: The value of the taint. type: string required: - effect @@ -274,6 +345,8 @@ spec: type: object type: array updateStrategy: + description: Update strategy for the machine pool. Valid + values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`. type: string required: - azs @@ -286,11 +359,22 @@ spec: namespaces: items: properties: + imagesBlacklist: + description: List of images to disallow for the namespace. + For example, `['nginx:latest', 'redis:latest']` + items: + type: string + type: array name: + description: Name of the namespace. This is the name of + the Kubernetes namespace in the cluster. type: string resourceAllocation: additionalProperties: type: string + description: 'Resource allocation for the namespace. This + is a map containing the resource type and the resource + value. For example, `{cpu_cores: ''2'', memory_MiB: ''2048''}`' type: object required: - name @@ -298,36 +382,28 @@ spec: type: object type: array osPatchAfter: + description: 'The date and time after which to patch the cluster. + Prefix the time value with the respective RFC. Ex: `RFC3339: + 2006-01-02T15:04:05Z07:00`' type: string osPatchOnBoot: + description: Whether to apply OS patch on boot. Default is `false`. type: boolean osPatchSchedule: + description: Cron schedule for OS patching. This must be in the + form of `0 0 * * *`. type: string - pack: - items: - properties: - name: - type: string - registryUid: - type: string - tag: - type: string - values: - type: string - required: - - name - - tag - - values - type: object - type: array scanPolicy: items: properties: configurationScanSchedule: + description: The schedule for configuration scan. type: string conformanceScanSchedule: + description: The schedule for conformance scan. type: string penetrationScanSchedule: + description: The schedule for penetration scan. type: string required: - configurationScanSchedule @@ -336,8 +412,12 @@ spec: type: object type: array skipCompletion: + description: If `true`, the cluster will be created asynchronously. + Default value is `false`. type: boolean tags: + description: A list of tags to be applied to the cluster. Tags + must be in the form of `key:value`. items: type: string type: array @@ -522,10 +602,31 @@ spec: atProvider: properties: cloudConfigId: + description: ID of the cloud config used for the cluster. This + cloud config must be of type `azure`. type: string + clusterProfile: + items: + properties: + pack: + items: + properties: + manifest: + items: + properties: + uid: + type: string + type: object + type: array + type: object + type: array + type: object + type: array id: type: string kubeconfig: + description: Kubeconfig for the cluster. This can be used to connect + to the cluster using `kubectl`. type: string machinePool: items: diff --git a/package/crds/cluster.palette.crossplane.io_openstacks.yaml b/package/crds/cluster.palette.crossplane.io_openstacks.yaml index 07c6ae8..50e35d3 100644 --- a/package/crds/cluster.palette.crossplane.io_openstacks.yaml +++ b/package/crds/cluster.palette.crossplane.io_openstacks.yaml @@ -69,20 +69,52 @@ spec: items: properties: backupLocationId: + description: The ID of the backup location to use for the + backup. type: string + clusterUids: + description: The list of cluster UIDs to include in the + backup. If `include_all_clusters` is set to `true`, then + all clusters will be included. + items: + type: string + type: array expiryInHour: + description: The number of hours after which the backup + will be deleted. For example, if the expiry is set to + 24, the backup will be deleted after 24 hours. type: number + includeAllClusters: + description: Whether to include all clusters in the backup. + If set to false, only the clusters specified in `cluster_uids` + will be included. + type: boolean includeClusterResources: + description: Whether to include the cluster resources in + the backup. If set to false, only the cluster configuration + and disks will be backed up. type: boolean includeDisks: + description: Whether to include the disks in the backup. + If set to false, only the cluster configuration will be + backed up. type: boolean namespaces: + description: The list of Kubernetes namespaces to include + in the backup. If not specified, all namespaces will be + included. items: type: string type: array prefix: + description: Prefix for the backup name. The backup name + will be of the format --. type: string schedule: + description: The schedule for the backup. The schedule is + specified in cron format. For example, to run the backup + every day at 1:00 AM, the schedule should be set to `0 + 1 * * *`. type: string required: - backupLocationId @@ -127,6 +159,7 @@ spec: items: properties: id: + description: The ID of the cluster profile. type: string pack: items: @@ -135,8 +168,12 @@ spec: items: properties: content: + description: The content of the manifest. The + content is the YAML content of the manifest. type: string name: + description: The name of the manifest. The name + must be unique within the pack. type: string required: - content @@ -144,14 +181,27 @@ spec: type: object type: array name: + description: The name of the pack. The name must be + unique within the cluster profile. type: string registryUid: + description: The registry UID of the pack. The registry + UID is the unique identifier of the registry. type: string tag: + description: The tag of the pack. The tag is the version + of the pack. type: string type: + description: The type of the pack. The default value + is `spectro`. + type: string + uid: type: string values: + description: The values of the pack. The values are + the configuration values of the pack. The values + are specified in YAML format. type: string required: - name @@ -166,19 +216,29 @@ spec: items: properties: namespace: + description: The Kubernetes namespace of the RBAC binding. + Required if 'type' is set to 'RoleBinding'. type: string role: additionalProperties: type: string + description: The role of the RBAC binding. Required if 'type' + is set to 'RoleBinding'. type: object subjects: items: properties: name: + description: The name of the subject. Required if + 'type' is set to 'User' or 'Group'. type: string namespace: + description: The Kubernetes namespace of the subject. + Required if 'type' is set to 'ServiceAccount'. type: string type: + description: 'The type of the subject. Can be one + of the following values: `User`, `Group`, or `ServiceAccount`.' type: string required: - name @@ -186,6 +246,8 @@ spec: type: object type: array type: + description: 'The type of the RBAC binding. Can be one of + the following values: `RoleBinding`, or `ClusterRoleBinding`.' type: string required: - type @@ -251,10 +313,15 @@ spec: type: string type: array controlPlane: + description: Whether this machine pool is a control plane. + Defaults to `false`. type: boolean controlPlaneAsWorker: + description: Whether this machine pool is a control plane + and a worker. Defaults to `false`. type: boolean count: + description: Number of nodes in the machine pool. type: number instanceType: type: string @@ -266,10 +333,14 @@ spec: items: properties: effect: + description: 'The effect of the taint. Allowed values + are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`.' type: string key: + description: The key of the taint. type: string value: + description: The value of the taint. type: string required: - effect @@ -278,6 +349,8 @@ spec: type: object type: array updateStrategy: + description: Update strategy for the machine pool. Valid + values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`. type: string required: - count @@ -288,11 +361,22 @@ spec: namespaces: items: properties: + imagesBlacklist: + description: List of images to disallow for the namespace. + For example, `['nginx:latest', 'redis:latest']` + items: + type: string + type: array name: + description: Name of the namespace. This is the name of + the Kubernetes namespace in the cluster. type: string resourceAllocation: additionalProperties: type: string + description: 'Resource allocation for the namespace. This + is a map containing the resource type and the resource + value. For example, `{cpu_cores: ''2'', memory_MiB: ''2048''}`' type: object required: - name @@ -300,36 +384,28 @@ spec: type: object type: array osPatchAfter: + description: 'The date and time after which to patch the cluster. + Prefix the time value with the respective RFC. Ex: `RFC3339: + 2006-01-02T15:04:05Z07:00`' type: string osPatchOnBoot: + description: Whether to apply OS patch on boot. Default is `false`. type: boolean osPatchSchedule: + description: Cron schedule for OS patching. This must be in the + form of `0 0 * * *`. type: string - pack: - items: - properties: - name: - type: string - registryUid: - type: string - tag: - type: string - values: - type: string - required: - - name - - tag - - values - type: object - type: array scanPolicy: items: properties: configurationScanSchedule: + description: The schedule for configuration scan. type: string conformanceScanSchedule: + description: The schedule for conformance scan. type: string penetrationScanSchedule: + description: The schedule for penetration scan. type: string required: - configurationScanSchedule @@ -338,8 +414,12 @@ spec: type: object type: array skipCompletion: + description: If `true`, the cluster will be created asynchronously. + Default value is `false`. type: boolean tags: + description: A list of tags to be applied to the cluster. Tags + must be in the form of `key:value`. items: type: string type: array @@ -525,10 +605,31 @@ spec: atProvider: properties: cloudConfigId: + description: ID of the cloud config used for the cluster. This + cloud config must be of type `azure`. type: string + clusterProfile: + items: + properties: + pack: + items: + properties: + manifest: + items: + properties: + uid: + type: string + type: object + type: array + type: object + type: array + type: object + type: array id: type: string kubeconfig: + description: Kubeconfig for the cluster. This can be used to connect + to the cluster using `kubectl`. type: string type: object conditions: diff --git a/package/crds/cluster.palette.crossplane.io_profiles.yaml b/package/crds/cluster.palette.crossplane.io_profiles.yaml index edc6cc5..7b76602 100644 --- a/package/crds/cluster.palette.crossplane.io_profiles.yaml +++ b/package/crds/cluster.palette.crossplane.io_profiles.yaml @@ -76,8 +76,12 @@ spec: items: properties: content: + description: The content of the manifest. The content + is the YAML content of the manifest. type: string name: + description: The name of the manifest. The name must + be unique within the pack. type: string required: - content @@ -85,22 +89,36 @@ spec: type: object type: array name: + description: The name of the pack. The name must be unique + within the cluster profile. type: string registryUid: + description: The registry UID of the pack. The registry + UID is the unique identifier of the registry. type: string tag: + description: The tag of the pack. The tag is the version + of the pack. type: string type: + description: The type of the pack. The default value is + `spectro`. type: string uid: type: string values: + description: The values of the pack. The values are the + configuration values of the pack. The values are specified + in YAML format. type: string required: - name + - values type: object type: array tags: + description: A list of tags to be applied to the cluster. Tags + must be in the form of `key:value`. items: type: string type: array @@ -108,8 +126,6 @@ spec: type: string version: type: string - required: - - pack type: object providerConfigRef: default: diff --git a/package/crds/cluster.palette.crossplane.io_tkes.yaml b/package/crds/cluster.palette.crossplane.io_tkes.yaml index 69060e4..a3a3fe0 100644 --- a/package/crds/cluster.palette.crossplane.io_tkes.yaml +++ b/package/crds/cluster.palette.crossplane.io_tkes.yaml @@ -69,20 +69,52 @@ spec: items: properties: backupLocationId: + description: The ID of the backup location to use for the + backup. type: string + clusterUids: + description: The list of cluster UIDs to include in the + backup. If `include_all_clusters` is set to `true`, then + all clusters will be included. + items: + type: string + type: array expiryInHour: + description: The number of hours after which the backup + will be deleted. For example, if the expiry is set to + 24, the backup will be deleted after 24 hours. type: number + includeAllClusters: + description: Whether to include all clusters in the backup. + If set to false, only the clusters specified in `cluster_uids` + will be included. + type: boolean includeClusterResources: + description: Whether to include the cluster resources in + the backup. If set to false, only the cluster configuration + and disks will be backed up. type: boolean includeDisks: + description: Whether to include the disks in the backup. + If set to false, only the cluster configuration will be + backed up. type: boolean namespaces: + description: The list of Kubernetes namespaces to include + in the backup. If not specified, all namespaces will be + included. items: type: string type: array prefix: + description: Prefix for the backup name. The backup name + will be of the format --. type: string schedule: + description: The schedule for the backup. The schedule is + specified in cron format. For example, to run the backup + every day at 1:00 AM, the schedule should be set to `0 + 1 * * *`. type: string required: - backupLocationId @@ -124,6 +156,7 @@ spec: items: properties: id: + description: The ID of the cluster profile. type: string pack: items: @@ -132,8 +165,12 @@ spec: items: properties: content: + description: The content of the manifest. The + content is the YAML content of the manifest. type: string name: + description: The name of the manifest. The name + must be unique within the pack. type: string required: - content @@ -141,17 +178,31 @@ spec: type: object type: array name: + description: The name of the pack. The name must be + unique within the cluster profile. type: string registryUid: + description: The registry UID of the pack. The registry + UID is the unique identifier of the registry. type: string tag: + description: The tag of the pack. The tag is the version + of the pack. type: string type: + description: The type of the pack. The default value + is `spectro`. + type: string + uid: type: string values: + description: The values of the pack. The values are + the configuration values of the pack. The values + are specified in YAML format. type: string required: - name + - values type: object type: array required: @@ -162,19 +213,29 @@ spec: items: properties: namespace: + description: The Kubernetes namespace of the RBAC binding. + Required if 'type' is set to 'RoleBinding'. type: string role: additionalProperties: type: string + description: The role of the RBAC binding. Required if 'type' + is set to 'RoleBinding'. type: object subjects: items: properties: name: + description: The name of the subject. Required if + 'type' is set to 'User' or 'Group'. type: string namespace: + description: The Kubernetes namespace of the subject. + Required if 'type' is set to 'ServiceAccount'. type: string type: + description: 'The type of the subject. Can be one + of the following values: `User`, `Group`, or `ServiceAccount`.' type: string required: - name @@ -182,6 +243,8 @@ spec: type: object type: array type: + description: 'The type of the RBAC binding. Can be one of + the following values: `RoleBinding`, or `ClusterRoleBinding`.' type: string required: - type @@ -225,6 +288,7 @@ spec: capacityType: type: string count: + description: Number of nodes in the machine pool. type: number diskSizeGb: type: number @@ -242,10 +306,14 @@ spec: items: properties: effect: + description: 'The effect of the taint. Allowed values + are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`.' type: string key: + description: The key of the taint. type: string value: + description: The value of the taint. type: string required: - effect @@ -254,6 +322,8 @@ spec: type: object type: array updateStrategy: + description: Update strategy for the machine pool. Valid + values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`. type: string required: - count @@ -265,42 +335,39 @@ spec: namespaces: items: properties: + imagesBlacklist: + description: List of images to disallow for the namespace. + For example, `['nginx:latest', 'redis:latest']` + items: + type: string + type: array name: + description: Name of the namespace. This is the name of + the Kubernetes namespace in the cluster. type: string resourceAllocation: additionalProperties: type: string + description: 'Resource allocation for the namespace. This + is a map containing the resource type and the resource + value. For example, `{cpu_cores: ''2'', memory_MiB: ''2048''}`' type: object required: - name - resourceAllocation type: object type: array - pack: - items: - properties: - name: - type: string - registryUid: - type: string - tag: - type: string - values: - type: string - required: - - name - - tag - - values - type: object - type: array scanPolicy: items: properties: configurationScanSchedule: + description: The schedule for configuration scan. type: string conformanceScanSchedule: + description: The schedule for conformance scan. type: string penetrationScanSchedule: + description: The schedule for penetration scan. type: string required: - configurationScanSchedule @@ -309,8 +376,12 @@ spec: type: object type: array skipCompletion: + description: If `true`, the cluster will be created asynchronously. + Default value is `false`. type: boolean tags: + description: A list of tags to be applied to the cluster. Tags + must be in the form of `key:value`. items: type: string type: array @@ -496,10 +567,31 @@ spec: atProvider: properties: cloudConfigId: + description: ID of the cloud config used for the cluster. This + cloud config must be of type `azure`. type: string + clusterProfile: + items: + properties: + pack: + items: + properties: + manifest: + items: + properties: + uid: + type: string + type: object + type: array + type: object + type: array + type: object + type: array id: type: string kubeconfig: + description: Kubeconfig for the cluster. This can be used to connect + to the cluster using `kubectl`. type: string locationConfig: items: diff --git a/package/crds/cluster.palette.crossplane.io_vspheres.yaml b/package/crds/cluster.palette.crossplane.io_vspheres.yaml index 3133059..d087405 100644 --- a/package/crds/cluster.palette.crossplane.io_vspheres.yaml +++ b/package/crds/cluster.palette.crossplane.io_vspheres.yaml @@ -64,25 +64,61 @@ spec: forProvider: properties: applySetting: + description: The setting to apply the cluster profile. `DownloadAndInstall` + will download and install packs in one action. `DownloadAndInstallLater` + will only download artifact and postpone install for later. + Default value is `DownloadAndInstall`. type: string backupPolicy: items: properties: backupLocationId: + description: The ID of the backup location to use for the + backup. type: string + clusterUids: + description: The list of cluster UIDs to include in the + backup. If `include_all_clusters` is set to `true`, then + all clusters will be included. + items: + type: string + type: array expiryInHour: + description: The number of hours after which the backup + will be deleted. For example, if the expiry is set to + 24, the backup will be deleted after 24 hours. type: number + includeAllClusters: + description: Whether to include all clusters in the backup. + If set to false, only the clusters specified in `cluster_uids` + will be included. + type: boolean includeClusterResources: + description: Whether to include the cluster resources in + the backup. If set to false, only the cluster configuration + and disks will be backed up. type: boolean includeDisks: + description: Whether to include the disks in the backup. + If set to false, only the cluster configuration will be + backed up. type: boolean namespaces: + description: The list of Kubernetes namespaces to include + in the backup. If not specified, all namespaces will be + included. items: type: string type: array prefix: + description: Prefix for the backup name. The backup name + will be of the format --. type: string schedule: + description: The schedule for the backup. The schedule is + specified in cron format. For example, to run the backup + every day at 1:00 AM, the schedule should be set to `0 + 1 * * *`. type: string required: - backupLocationId @@ -92,23 +128,40 @@ spec: type: object type: array cloudAccountId: + description: ID of the cloud account to be used for the cluster. + This cloud account must be of type `vsphere`. type: string cloudConfig: items: properties: datacenter: + description: The name of the datacenter in vSphere. This + is the name of the datacenter as it appears in vSphere. type: string folder: + description: The name of the folder in vSphere. This is + the name of the folder as it appears in vSphere. type: string imageTemplateFolder: + description: The name of the image template folder in vSphere. + This is the name of the folder as it appears in vSphere. type: string networkSearchDomain: + description: The search domain to use for the cluster in + case of DHCP. type: string networkType: + description: The type of network to use for the cluster. + This can be `VIP` or `DDNS`. type: string sshKey: + description: The SSH key to be used for the cluster. This + is the public key that will be used to access the cluster. type: string staticIp: + description: Whether to use static IP addresses for the + cluster. If `true`, the cluster will use static IP addresses. + If `false`, the cluster will use DDNS. Default is `false`. type: boolean required: - datacenter @@ -120,6 +173,7 @@ spec: items: properties: id: + description: The ID of the cluster profile. type: string pack: items: @@ -128,8 +182,12 @@ spec: items: properties: content: + description: The content of the manifest. The + content is the YAML content of the manifest. type: string name: + description: The name of the manifest. The name + must be unique within the pack. type: string required: - content @@ -137,14 +195,27 @@ spec: type: object type: array name: + description: The name of the pack. The name must be + unique within the cluster profile. type: string registryUid: + description: The registry UID of the pack. The registry + UID is the unique identifier of the registry. type: string tag: + description: The tag of the pack. The tag is the version + of the pack. type: string type: + description: The type of the pack. The default value + is `spectro`. + type: string + uid: type: string values: + description: The values of the pack. The values are + the configuration values of the pack. The values + are specified in YAML format. type: string required: - name @@ -155,25 +226,33 @@ spec: - id type: object type: array - clusterProfileId: - type: string clusterRbacBinding: items: properties: namespace: + description: The Kubernetes namespace of the RBAC binding. + Required if 'type' is set to 'RoleBinding'. type: string role: additionalProperties: type: string + description: The role of the RBAC binding. Required if 'type' + is set to 'RoleBinding'. type: object subjects: items: properties: name: + description: The name of the subject. Required if + 'type' is set to 'User' or 'Group'. type: string namespace: + description: The Kubernetes namespace of the subject. + Required if 'type' is set to 'ServiceAccount'. type: string type: + description: 'The type of the subject. Can be one + of the following values: `User`, `Group`, or `ServiceAccount`.' type: string required: - name @@ -181,6 +260,8 @@ spec: type: object type: array type: + description: 'The type of the RBAC binding. Can be one of + the following values: `RoleBinding`, or `ClusterRoleBinding`.' type: string required: - type @@ -242,19 +323,27 @@ spec: type: string type: object controlPlane: + description: Whether this machine pool is a control plane. + Defaults to `false`. type: boolean controlPlaneAsWorker: + description: Whether this machine pool is a control plane + and a worker. Defaults to `false`. type: boolean count: + description: Number of nodes in the machine pool. type: number instanceType: items: properties: cpu: + description: The number of CPUs. type: number diskSizeGb: + description: The size of the disk in GB. type: number memoryMb: + description: The amount of memory in MB. type: number required: - cpu @@ -263,19 +352,31 @@ spec: type: object type: array name: + description: The name of the machine pool. This is used + to identify the machine pool in the cluster. type: string placement: items: properties: cluster: + description: The name of the cluster to use for the + machine pool. As it appears in the vSphere. type: string datastore: + description: The name of the datastore to use for + the machine pool. As it appears in the vSphere. type: string network: + description: The name of the network to use for the + machine pool. As it appears in the vSphere. type: string resourcePool: + description: The name of the resource pool to use + for the machine pool. As it appears in the vSphere. type: string staticIpPoolId: + description: The ID of the static IP pool to use for + the machine pool in case of static cluster placement. type: string required: - cluster @@ -288,10 +389,14 @@ spec: items: properties: effect: + description: 'The effect of the taint. Allowed values + are: `NoSchedule`, `PreferNoSchedule` or `NoExecute`.' type: string key: + description: The key of the taint. type: string value: + description: The value of the taint. type: string required: - effect @@ -300,6 +405,8 @@ spec: type: object type: array updateStrategy: + description: Update strategy for the machine pool. Valid + values are `RollingUpdateScaleOut` and `RollingUpdateScaleIn`. type: string required: - count @@ -311,11 +418,22 @@ spec: namespaces: items: properties: + imagesBlacklist: + description: List of images to disallow for the namespace. + For example, `['nginx:latest', 'redis:latest']` + items: + type: string + type: array name: + description: Name of the namespace. This is the name of + the Kubernetes namespace in the cluster. type: string resourceAllocation: additionalProperties: type: string + description: 'Resource allocation for the namespace. This + is a map containing the resource type and the resource + value. For example, `{cpu_cores: ''2'', memory_MiB: ''2048''}`' type: object required: - name @@ -323,36 +441,28 @@ spec: type: object type: array osPatchAfter: + description: 'The date and time after which to patch the cluster. + Prefix the time value with the respective RFC. Ex: `RFC3339: + 2006-01-02T15:04:05Z07:00`' type: string osPatchOnBoot: + description: Whether to apply OS patch on boot. Default is `false`. type: boolean osPatchSchedule: + description: 'The cron schedule for OS patching. This must be + in the form of cron syntax. Ex: `0 0 * * *`.' type: string - pack: - items: - properties: - name: - type: string - registryUid: - type: string - tag: - type: string - values: - type: string - required: - - name - - tag - - values - type: object - type: array scanPolicy: items: properties: configurationScanSchedule: + description: The schedule for configuration scan. type: string conformanceScanSchedule: + description: The schedule for conformance scan. type: string penetrationScanSchedule: + description: The schedule for penetration scan. type: string required: - configurationScanSchedule @@ -361,8 +471,12 @@ spec: type: object type: array skipCompletion: + description: If `true`, the cluster will be created asynchronously. + Default value is `false`. type: boolean tags: + description: A list of tags to be applied to the cluster. Tags + must be in the form of `key:value`. items: type: string type: array @@ -548,10 +662,31 @@ spec: atProvider: properties: cloudConfigId: + description: ID of the cloud config used for the cluster. This + cloud config must be of type `azure`. type: string + clusterProfile: + items: + properties: + pack: + items: + properties: + manifest: + items: + properties: + uid: + type: string + type: object + type: array + type: object + type: array + type: object + type: array id: type: string kubeconfig: + description: Kubeconfig for the cluster. This can be used to connect + to the cluster using `kubectl`. type: string machinePool: items: diff --git a/package/crds/spectrocloud.palette.crossplane.io_macroes.yaml b/package/crds/spectrocloud.palette.crossplane.io_macroes.yaml index 5f65138..d7480a8 100644 --- a/package/crds/spectrocloud.palette.crossplane.io_macroes.yaml +++ b/package/crds/spectrocloud.palette.crossplane.io_macroes.yaml @@ -64,9 +64,14 @@ spec: forProvider: properties: project: + description: The Spectro Cloud project name. type: string value: + description: The value that the macro or service output variable + will contain. type: string + required: + - value type: object providerConfigRef: default: diff --git a/package/crds/spectrocloud.palette.crossplane.io_workspaces.yaml b/package/crds/spectrocloud.palette.crossplane.io_workspaces.yaml index 320dadd..907ebb1 100644 --- a/package/crds/spectrocloud.palette.crossplane.io_workspaces.yaml +++ b/package/crds/spectrocloud.palette.crossplane.io_workspaces.yaml @@ -67,26 +67,52 @@ spec: items: properties: backupLocationId: + description: The ID of the backup location to use for the + backup. type: string clusterUids: + description: The list of cluster UIDs to include in the + backup. If `include_all_clusters` is set to `true`, then + all clusters will be included. items: type: string type: array expiryInHour: + description: The number of hours after which the backup + will be deleted. For example, if the expiry is set to + 24, the backup will be deleted after 24 hours. type: number includeAllClusters: + description: Whether to include all clusters in the backup. + If set to false, only the clusters specified in `cluster_uids` + will be included. type: boolean includeClusterResources: + description: Whether to include the cluster resources in + the backup. If set to false, only the cluster configuration + and disks will be backed up. type: boolean includeDisks: + description: Whether to include the disks in the backup. + If set to false, only the cluster configuration will be + backed up. type: boolean namespaces: + description: The list of Kubernetes namespaces to include + in the backup. If not specified, all namespaces will be + included. items: type: string type: array prefix: + description: Prefix for the backup name. The backup name + will be of the format --. type: string schedule: + description: The schedule for the backup. The schedule is + specified in cron format. For example, to run the backup + every day at 1:00 AM, the schedule should be set to `0 + 1 * * *`. type: string required: - backupLocationId @@ -99,19 +125,29 @@ spec: items: properties: namespace: + description: The Kubernetes namespace of the RBAC binding. + Required if 'type' is set to 'RoleBinding'. type: string role: additionalProperties: type: string + description: The role of the RBAC binding. Required if 'type' + is set to 'RoleBinding'. type: object subjects: items: properties: name: + description: The name of the subject. Required if + 'type' is set to 'User' or 'Group'. type: string namespace: + description: The Kubernetes namespace of the subject. + Required if 'type' is set to 'ServiceAccount'. type: string type: + description: 'The type of the subject. Can be one + of the following values: `User`, `Group`, or `ServiceAccount`.' type: string required: - name @@ -119,6 +155,8 @@ spec: type: object type: array type: + description: 'The type of the RBAC binding. Can be one of + the following values: `RoleBinding`, or `ClusterRoleBinding`.' type: string required: - type @@ -139,14 +177,21 @@ spec: items: properties: imagesBlacklist: + description: List of images to disallow for the namespace. + For example, `['nginx:latest', 'redis:latest']` items: type: string type: array name: + description: Name of the namespace. This is the name of + the Kubernetes namespace in the cluster. type: string resourceAllocation: additionalProperties: type: string + description: 'Resource allocation for the namespace. This + is a map containing the resource type and the resource + value. For example, `{cpu_cores: ''2'', memory_MiB: ''2048''}`' type: object required: - name diff --git a/package/crds/virtual.palette.crossplane.io_clusters.yaml b/package/crds/virtual.palette.crossplane.io_clusters.yaml index 3997c52..41992d1 100644 --- a/package/crds/virtual.palette.crossplane.io_clusters.yaml +++ b/package/crds/virtual.palette.crossplane.io_clusters.yaml @@ -69,20 +69,52 @@ spec: items: properties: backupLocationId: + description: The ID of the backup location to use for the + backup. type: string + clusterUids: + description: The list of cluster UIDs to include in the + backup. If `include_all_clusters` is set to `true`, then + all clusters will be included. + items: + type: string + type: array expiryInHour: + description: The number of hours after which the backup + will be deleted. For example, if the expiry is set to + 24, the backup will be deleted after 24 hours. type: number + includeAllClusters: + description: Whether to include all clusters in the backup. + If set to false, only the clusters specified in `cluster_uids` + will be included. + type: boolean includeClusterResources: + description: Whether to include the cluster resources in + the backup. If set to false, only the cluster configuration + and disks will be backed up. type: boolean includeDisks: + description: Whether to include the disks in the backup. + If set to false, only the cluster configuration will be + backed up. type: boolean namespaces: + description: The list of Kubernetes namespaces to include + in the backup. If not specified, all namespaces will be + included. items: type: string type: array prefix: + description: Prefix for the backup name. The backup name + will be of the format --. type: string schedule: + description: The schedule for the backup. The schedule is + specified in cron format. For example, to run the backup + every day at 1:00 AM, the schedule should be set to `0 + 1 * * *`. type: string required: - backupLocationId @@ -112,6 +144,7 @@ spec: items: properties: id: + description: The ID of the cluster profile. type: string pack: items: @@ -120,8 +153,12 @@ spec: items: properties: content: + description: The content of the manifest. The + content is the YAML content of the manifest. type: string name: + description: The name of the manifest. The name + must be unique within the pack. type: string required: - content @@ -129,14 +166,27 @@ spec: type: object type: array name: + description: The name of the pack. The name must be + unique within the cluster profile. type: string registryUid: + description: The registry UID of the pack. The registry + UID is the unique identifier of the registry. type: string tag: + description: The tag of the pack. The tag is the version + of the pack. type: string type: + description: The type of the pack. The default value + is `spectro`. + type: string + uid: type: string values: + description: The values of the pack. The values are + the configuration values of the pack. The values + are specified in YAML format. type: string required: - name @@ -151,19 +201,29 @@ spec: items: properties: namespace: + description: The Kubernetes namespace of the RBAC binding. + Required if 'type' is set to 'RoleBinding'. type: string role: additionalProperties: type: string + description: The role of the RBAC binding. Required if 'type' + is set to 'RoleBinding'. type: object subjects: items: properties: name: + description: The name of the subject. Required if + 'type' is set to 'User' or 'Group'. type: string namespace: + description: The Kubernetes namespace of the subject. + Required if 'type' is set to 'ServiceAccount'. type: string type: + description: 'The type of the subject. Can be one + of the following values: `User`, `Group`, or `ServiceAccount`.' type: string required: - name @@ -171,6 +231,8 @@ spec: type: object type: array type: + description: 'The type of the RBAC binding. Can be one of + the following values: `RoleBinding`, or `ClusterRoleBinding`.' type: string required: - type @@ -181,11 +243,22 @@ spec: namespaces: items: properties: + imagesBlacklist: + description: List of images to disallow for the namespace. + For example, `['nginx:latest', 'redis:latest']` + items: + type: string + type: array name: + description: Name of the namespace. This is the name of + the Kubernetes namespace in the cluster. type: string resourceAllocation: additionalProperties: type: string + description: 'Resource allocation for the namespace. This + is a map containing the resource type and the resource + value. For example, `{cpu_cores: ''2'', memory_MiB: ''2048''}`' type: object required: - name @@ -193,28 +266,21 @@ spec: type: object type: array osPatchAfter: + description: 'The date and time after which to patch the cluster. + Prefix the time value with the respective RFC. Ex: `RFC3339: + 2006-01-02T15:04:05Z07:00`' type: string osPatchOnBoot: + description: Whether to apply OS patch on boot. Default is `false`. type: boolean osPatchSchedule: + description: Cron schedule for OS patching. This must be in the + form of `0 0 * * *`. type: string - pack: - items: - properties: - name: - type: string - registryUid: - type: string - tag: - type: string - values: - type: string - required: - - name - - tag - - values - type: object - type: array + pauseCluster: + description: To pause and resume cluster state. Set to true to + pause running cluster & false to resume it. + type: boolean resources: items: properties: @@ -236,10 +302,13 @@ spec: items: properties: configurationScanSchedule: + description: The schedule for configuration scan. type: string conformanceScanSchedule: + description: The schedule for conformance scan. type: string penetrationScanSchedule: + description: The schedule for penetration scan. type: string required: - configurationScanSchedule @@ -248,8 +317,12 @@ spec: type: object type: array skipCompletion: + description: If `true`, the cluster will be created asynchronously. + Default value is `false`. type: boolean tags: + description: A list of tags to be applied to the cluster. Tags + must be in the form of `key:value`. items: type: string type: array @@ -431,10 +504,31 @@ spec: atProvider: properties: cloudConfigId: + description: ID of the cloud config used for the cluster. This + cloud config must be of type `azure`. type: string + clusterProfile: + items: + properties: + pack: + items: + properties: + manifest: + items: + properties: + uid: + type: string + type: object + type: array + type: object + type: array + type: object + type: array id: type: string kubeconfig: + description: Kubeconfig for the cluster. This can be used to connect + to the cluster using `kubectl`. type: string locationConfig: items: diff --git a/package/crds/virtual.palette.crossplane.io_machines.yaml b/package/crds/virtual.palette.crossplane.io_machines.yaml new file mode 100644 index 0000000..cd2d8b6 --- /dev/null +++ b/package/crds/virtual.palette.crossplane.io_machines.yaml @@ -0,0 +1,451 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + creationTimestamp: null + name: machines.virtual.palette.crossplane.io +spec: + group: virtual.palette.crossplane.io + names: + categories: + - crossplane + - managed + - palette + kind: Machine + listKind: MachineList + plural: machines + singular: machine + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + 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: Machine is the Schema for the Machines API. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: MachineSpec defines the desired state of Machine + 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. + enum: + - Orphan + - Delete + type: string + forProvider: + properties: + annotations: + additionalProperties: + type: string + description: The annotations of the virtual machine. + type: object + baseVmName: + description: The name of the source virtual machine that a clone + will be created of. + type: string + cloudInitUserData: + description: 'The cloud-init user data to be used for the virtual + machine. Default value is `#cloud-config ssh_pwauth: True chpasswd: + { expire: False } password: spectro disable_root: false `.' + type: string + clusterUid: + description: The cluster UID to which the virtual machine belongs + to. + type: string + cpuCores: + description: The number of CPU cores to be allocated to the virtual + machine. Default value is `1`. + type: number + devices: + items: + properties: + disk: + items: + properties: + bus: + description: The bus type of the disk. This is the + name that will be used to identify the disk in the + guest OS. + type: string + name: + description: The name of the disk. This is the name + that will be used to identify the disk in the guest + OS. + type: string + required: + - bus + - name + type: object + type: array + interface: + items: + properties: + name: + description: The name of the interface. This is the + name that will be used to identify the device interface + in the guest OS. + type: string + required: + - name + type: object + type: array + required: + - disk + - interface + type: object + type: array + imageUrl: + description: The URL of the VM template image to be used for the + virtual machine. + type: string + labels: + description: The labels of the virtual machine. + items: + type: string + type: array + memory: + description: The amount of memory to be allocated to the virtual + machine. Default value is `2G`. + type: string + namespace: + description: The namespace of the virtual machine. + type: string + networkSpec: + items: + properties: + network: + description: The network specification for the virtual machine. + items: + properties: + name: + description: The name of the network to be attached + to the virtual machine. + type: string + required: + - name + type: object + type: array + type: object + type: array + runOnLaunch: + description: If set to `true`, the virtual machine will be started + when the cluster is launched. Default value is `true`. + type: boolean + vmAction: + description: 'The action to be performed on the virtual machine. + Valid values are: `start`, `stop`, `restart`, `pause`, `resume`, + `migrate`. Default value is `start`.' + type: string + vmState: + description: 'The state of the virtual machine. The virtual machine + can be in one of the following states: `running`, `stopped`, + `paused`, `migrating`, `error`, `unknown`.' + type: string + volumeSpec: + description: The volume specification for the virtual machine. + items: + properties: + volume: + items: + properties: + cloudInitNoCloud: + description: Used to specify a cloud-init `noCloud` + image. The image is expected to contain a disk image + in a supported format. The disk image is extracted + from the cloud-init `noCloud `image and used as + the disk for the VM + items: + properties: + userData: + description: The user data to use for the cloud-init + no cloud disk. This can be a local file path, + a remote URL, or a registry URL. + type: string + required: + - userData + type: object + type: array + containerDisk: + description: A container disk is a disk that is backed + by a container image. The container image is expected + to contain a disk image in a supported format. The + disk image is extracted from the container image + and used as the disk for the VM. + items: + properties: + imageUrl: + description: The URL of the container image + to use as the disk. This can be a local file + path, a remote URL, or a registry URL. + type: string + required: + - imageUrl + type: object + type: array + name: + type: string + required: + - name + type: object + type: array + type: object + type: array + required: + - clusterUid + - namespace + type: object + 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 + providerRef: + description: 'ProviderReference specifies the provider that will be + used to create, observe, update, and delete this managed resource. + Deprecated: Please use ProviderConfigReference, i.e. `providerConfigRef`' + 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 + status: + description: MachineStatus defines the observed state of Machine. + properties: + atProvider: + properties: + id: + type: string + 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 + 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 + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: []