From 79cb5d345a6535b40e84114ba25b431ec49ebec7 Mon Sep 17 00:00:00 2001 From: I534922 Date: Tue, 14 Nov 2023 10:57:25 -0800 Subject: [PATCH 1/5] upgrade dependencies Signed-off-by: I534922 --- apis/confluent/v1alpha1/zz_apikey_types.go | 105 +- apis/confluent/v1alpha1/zz_cluster_types.go | 148 +- .../v1alpha1/zz_clusterconfig_types.go | 59 +- .../v1alpha1/zz_environment_types.go | 27 +- .../v1alpha1/zz_generated.deepcopy.go | 577 +++- .../v1alpha1/zz_generated.managed.go | 196 +- .../v1alpha1/zz_generated_terraformed.go | 70 + apis/confluent/v1alpha1/zz_kafkaacl_types.go | 95 +- .../v1alpha1/zz_rolebinding_types.go | 42 +- .../v1alpha1/zz_serviceaccount_types.go | 34 +- apis/v1alpha1/zz_generated.deepcopy.go | 1 - apis/v1beta1/zz_generated.deepcopy.go | 1 - config/provider-metadata.yaml | 2584 ++++++++++++++++- examples-generated/confluent/apikey.yaml | 28 + examples-generated/confluent/cluster.yaml | 34 + .../confluent/clusterconfig.yaml | 25 + examples-generated/confluent/environment.yaml | 11 + examples-generated/confluent/kafkaacl.yaml | 33 + examples-generated/confluent/rolebinding.yaml | 13 + .../confluent/serviceaccount.yaml | 12 + examples/api_key/api_key.yml | 20 - examples/environment/environment.yaml | 7 - examples/install.yaml | 8 - examples/kafka_acl/acl.yaml | 27 - examples/kafka_cluster/kafka_cluster.yaml | 18 - .../kafka_cluster_config.yaml | 9 - examples/null/resource.yaml | 10 - examples/providerconfig/.gitignore | 1 - examples/providerconfig/providerconfig.yaml | 11 - examples/providerconfig/secret.yaml.tmpl | 12 - examples/role_binding/role-binding.yaml | 11 - examples/service_account/service_account.yml | 11 - examples/storeconfig/vault.yaml | 19 - go.mod | 127 +- go.sum | 465 +-- .../confluent/apikey/zz_controller.go | 10 +- .../confluent/cluster/zz_controller.go | 10 +- .../confluent/clusterconfig/zz_controller.go | 10 +- .../confluent/environment/zz_controller.go | 10 +- .../confluent/kafkaacl/zz_controller.go | 10 +- .../confluent/rolebinding/zz_controller.go | 10 +- .../confluent/serviceaccount/zz_controller.go | 10 +- .../crds/confluent.crossplane.io_apikeys.yaml | 276 +- ...onfluent.crossplane.io_clusterconfigs.yaml | 176 +- .../confluent.crossplane.io_clusters.yaml | 349 ++- .../confluent.crossplane.io_environments.yaml | 123 +- .../confluent.crossplane.io_kafkaacls.yaml | 264 +- ...nfluent.crossplane.io_providerconfigs.yaml | 6 +- ...nt.crossplane.io_providerconfigusages.yaml | 3 +- .../confluent.crossplane.io_rolebindings.yaml | 158 +- ...nfluent.crossplane.io_serviceaccounts.yaml | 132 +- .../confluent.crossplane.io_storeconfigs.yaml | 146 +- 52 files changed, 4987 insertions(+), 1567 deletions(-) create mode 100644 examples-generated/confluent/apikey.yaml create mode 100644 examples-generated/confluent/cluster.yaml create mode 100644 examples-generated/confluent/clusterconfig.yaml create mode 100644 examples-generated/confluent/environment.yaml create mode 100644 examples-generated/confluent/kafkaacl.yaml create mode 100644 examples-generated/confluent/rolebinding.yaml create mode 100644 examples-generated/confluent/serviceaccount.yaml delete mode 100644 examples/api_key/api_key.yml delete mode 100644 examples/environment/environment.yaml delete mode 100644 examples/install.yaml delete mode 100644 examples/kafka_acl/acl.yaml delete mode 100644 examples/kafka_cluster/kafka_cluster.yaml delete mode 100644 examples/kafka_cluster_config/kafka_cluster_config.yaml delete mode 100644 examples/null/resource.yaml delete mode 100644 examples/providerconfig/.gitignore delete mode 100644 examples/providerconfig/providerconfig.yaml delete mode 100644 examples/providerconfig/secret.yaml.tmpl delete mode 100644 examples/role_binding/role-binding.yaml delete mode 100644 examples/service_account/service_account.yml delete mode 100644 examples/storeconfig/vault.yaml diff --git a/apis/confluent/v1alpha1/zz_apikey_types.go b/apis/confluent/v1alpha1/zz_apikey_types.go index a4c12ae..e4d76d4 100755 --- a/apis/confluent/v1alpha1/zz_apikey_types.go +++ b/apis/confluent/v1alpha1/zz_apikey_types.go @@ -13,57 +13,96 @@ import ( v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" ) +type APIKeyInitParameters struct { + + // A free-form description of the API Account. + // A free-form description of the API key. + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // An optional flag to disable wait-for-readiness on create. Its primary use case is for Cluster API Keys for private networking options when readiness check fails. Must be unset when importing. Defaults to false. + // Defaults to `false`. + DisableWaitForReady *bool `json:"disableWaitForReady,omitempty" tf:"disable_wait_for_ready,omitempty"` + + // A human-readable name for the API Key. + // A human-readable name for the API key. + DisplayName *string `json:"displayName,omitempty" tf:"display_name,omitempty"` + + // This block must be set for Cluster API Keys and must be omitted for Cloud API Keys. It supports the following: + // The resource associated with this object. The only resource that is supported is 'cmk.v2.Cluster', 'srcm.v2.Cluster'. + ManagedResource []ManagedResourceInitParameters `json:"managedResource,omitempty" tf:"managed_resource,omitempty"` + + // supports the following: + // The owner to which the API Key belongs. The owner can be one of 'iam.v2.User', 'iam.v2.ServiceAccount'. + Owner []OwnerInitParameters `json:"owner,omitempty" tf:"owner,omitempty"` +} + type APIKeyObservation struct { + // A free-form description of the API Account. // A free-form description of the API key. Description *string `json:"description,omitempty" tf:"description,omitempty"` + // An optional flag to disable wait-for-readiness on create. Its primary use case is for Cluster API Keys for private networking options when readiness check fails. Must be unset when importing. Defaults to false. // Defaults to `false`. DisableWaitForReady *bool `json:"disableWaitForReady,omitempty" tf:"disable_wait_for_ready,omitempty"` + // A human-readable name for the API Key. // A human-readable name for the API key. DisplayName *string `json:"displayName,omitempty" tf:"display_name,omitempty"` + // The ID of the owner that the API Key belongs to, for example, sa-abc123 or u-abc123. ID *string `json:"id,omitempty" tf:"id,omitempty"` + // This block must be set for Cluster API Keys and must be omitted for Cloud API Keys. It supports the following: // The resource associated with this object. The only resource that is supported is 'cmk.v2.Cluster', 'srcm.v2.Cluster'. ManagedResource []ManagedResourceObservation `json:"managedResource,omitempty" tf:"managed_resource,omitempty"` + // supports the following: // The owner to which the API Key belongs. The owner can be one of 'iam.v2.User', 'iam.v2.ServiceAccount'. Owner []OwnerObservation `json:"owner,omitempty" tf:"owner,omitempty"` } type APIKeyParameters struct { + // A free-form description of the API Account. // A free-form description of the API key. // +kubebuilder:validation:Optional Description *string `json:"description,omitempty" tf:"description,omitempty"` + // An optional flag to disable wait-for-readiness on create. Its primary use case is for Cluster API Keys for private networking options when readiness check fails. Must be unset when importing. Defaults to false. // Defaults to `false`. // +kubebuilder:validation:Optional DisableWaitForReady *bool `json:"disableWaitForReady,omitempty" tf:"disable_wait_for_ready,omitempty"` + // A human-readable name for the API Key. // A human-readable name for the API key. // +kubebuilder:validation:Optional DisplayName *string `json:"displayName,omitempty" tf:"display_name,omitempty"` + // This block must be set for Cluster API Keys and must be omitted for Cloud API Keys. It supports the following: // The resource associated with this object. The only resource that is supported is 'cmk.v2.Cluster', 'srcm.v2.Cluster'. // +kubebuilder:validation:Optional ManagedResource []ManagedResourceParameters `json:"managedResource,omitempty" tf:"managed_resource,omitempty"` + // supports the following: // The owner to which the API Key belongs. The owner can be one of 'iam.v2.User', 'iam.v2.ServiceAccount'. // +kubebuilder:validation:Optional Owner []OwnerParameters `json:"owner,omitempty" tf:"owner,omitempty"` } +type EnvironmentInitParameters struct { +} + type EnvironmentObservation struct { + // The ID of the owner that the API Key belongs to, for example, sa-abc123 or u-abc123. // The unique identifier for the environment. ID *string `json:"id,omitempty" tf:"id,omitempty"` } type EnvironmentParameters struct { + // The ID of the owner that the API Key belongs to, for example, sa-abc123 or u-abc123. // The unique identifier for the environment. // +crossplane:generate:reference:type=Environment // +kubebuilder:validation:Optional @@ -78,31 +117,53 @@ type EnvironmentParameters struct { IDSelector *v1.Selector `json:"idSelector,omitempty" tf:"-"` } +type ManagedResourceInitParameters struct { + + // The API group and version of the owner that the API Key belongs to, for example, iam/v2. + // The API version of the referred owner. + APIVersion *string `json:"apiVersion,omitempty" tf:"api_version,omitempty"` + + // supports the following: + // Environment objects represent an isolated namespace for your Confluent resources for organizational purposes. + Environment []EnvironmentInitParameters `json:"environment,omitempty" tf:"environment,omitempty"` + + // The kind of the owner that the API Key belongs to, for example, ServiceAccount or User. + // The kind of the referred resource. + Kind *string `json:"kind,omitempty" tf:"kind,omitempty"` +} + type ManagedResourceObservation struct { + // The API group and version of the owner that the API Key belongs to, for example, iam/v2. // The API version of the referred owner. APIVersion *string `json:"apiVersion,omitempty" tf:"api_version,omitempty"` + // supports the following: // Environment objects represent an isolated namespace for your Confluent resources for organizational purposes. Environment []EnvironmentObservation `json:"environment,omitempty" tf:"environment,omitempty"` + // The ID of the owner that the API Key belongs to, for example, sa-abc123 or u-abc123. // The unique identifier for the referred resource. ID *string `json:"id,omitempty" tf:"id,omitempty"` + // The kind of the owner that the API Key belongs to, for example, ServiceAccount or User. // The kind of the referred resource. Kind *string `json:"kind,omitempty" tf:"kind,omitempty"` } type ManagedResourceParameters struct { + // The API group and version of the owner that the API Key belongs to, for example, iam/v2. // The API version of the referred owner. - // +kubebuilder:validation:Required + // +kubebuilder:validation:Optional APIVersion *string `json:"apiVersion" tf:"api_version,omitempty"` + // supports the following: // Environment objects represent an isolated namespace for your Confluent resources for organizational purposes. - // +kubebuilder:validation:Required + // +kubebuilder:validation:Optional Environment []EnvironmentParameters `json:"environment" tf:"environment,omitempty"` + // The ID of the owner that the API Key belongs to, for example, sa-abc123 or u-abc123. // The unique identifier for the referred resource. // +crossplane:generate:reference:type=Cluster // +kubebuilder:validation:Optional @@ -116,29 +177,46 @@ type ManagedResourceParameters struct { // +kubebuilder:validation:Optional IDSelector *v1.Selector `json:"idSelector,omitempty" tf:"-"` + // The kind of the owner that the API Key belongs to, for example, ServiceAccount or User. // The kind of the referred resource. - // +kubebuilder:validation:Required + // +kubebuilder:validation:Optional Kind *string `json:"kind" tf:"kind,omitempty"` } +type OwnerInitParameters struct { + + // The API group and version of the owner that the API Key belongs to, for example, iam/v2. + // The API version of the referred owner. + APIVersion *string `json:"apiVersion,omitempty" tf:"api_version,omitempty"` + + // The kind of the owner that the API Key belongs to, for example, ServiceAccount or User. + // The kind of the referred owner. + Kind *string `json:"kind,omitempty" tf:"kind,omitempty"` +} + type OwnerObservation struct { + // The API group and version of the owner that the API Key belongs to, for example, iam/v2. // The API version of the referred owner. APIVersion *string `json:"apiVersion,omitempty" tf:"api_version,omitempty"` + // The ID of the owner that the API Key belongs to, for example, sa-abc123 or u-abc123. // The unique identifier for the referred owner. ID *string `json:"id,omitempty" tf:"id,omitempty"` + // The kind of the owner that the API Key belongs to, for example, ServiceAccount or User. // The kind of the referred owner. Kind *string `json:"kind,omitempty" tf:"kind,omitempty"` } type OwnerParameters struct { + // The API group and version of the owner that the API Key belongs to, for example, iam/v2. // The API version of the referred owner. - // +kubebuilder:validation:Required + // +kubebuilder:validation:Optional APIVersion *string `json:"apiVersion" tf:"api_version,omitempty"` + // The ID of the owner that the API Key belongs to, for example, sa-abc123 or u-abc123. // The unique identifier for the referred owner. // +crossplane:generate:reference:type=ServiceAccount // +kubebuilder:validation:Optional @@ -152,8 +230,9 @@ type OwnerParameters struct { // +kubebuilder:validation:Optional IDSelector *v1.Selector `json:"idSelector,omitempty" tf:"-"` + // The kind of the owner that the API Key belongs to, for example, ServiceAccount or User. // The kind of the referred owner. - // +kubebuilder:validation:Required + // +kubebuilder:validation:Optional Kind *string `json:"kind" tf:"kind,omitempty"` } @@ -161,6 +240,18 @@ type OwnerParameters struct { type APIKeySpec struct { v1.ResourceSpec `json:",inline"` ForProvider APIKeyParameters `json:"forProvider"` + // THIS IS AN ALPHA FIELD. Do not use it in production. It is not honored + // unless the relevant Crossplane feature flag is enabled, and may be + // changed or removed without notice. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider APIKeyInitParameters `json:"initProvider,omitempty"` } // APIKeyStatus defines the observed state of APIKey. @@ -171,7 +262,7 @@ type APIKeyStatus struct { // +kubebuilder:object:root=true -// APIKey is the Schema for the APIKeys API. +// APIKey is the Schema for the APIKeys 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" @@ -181,7 +272,7 @@ type APIKeyStatus struct { type APIKey struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` - // +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'ObserveOnly' || has(self.forProvider.owner)",message="owner is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.owner) || has(self.initProvider.owner)",message="owner is a required parameter" Spec APIKeySpec `json:"spec"` Status APIKeyStatus `json:"status,omitempty"` } diff --git a/apis/confluent/v1alpha1/zz_cluster_types.go b/apis/confluent/v1alpha1/zz_cluster_types.go index 8b30e09..8fca420 100755 --- a/apis/confluent/v1alpha1/zz_cluster_types.go +++ b/apis/confluent/v1alpha1/zz_cluster_types.go @@ -13,33 +13,50 @@ import ( v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" ) +type BasicInitParameters struct { +} + type BasicObservation struct { } type BasicParameters struct { } +type ByokKeyInitParameters struct { + + // The ID of the Environment that the Kafka cluster belongs to, for example, env-abc123. + // The ID of the Confluent key that is used to encrypt the data in the Kafka cluster. + ID *string `json:"id,omitempty" tf:"id,omitempty"` +} + type ByokKeyObservation struct { + // The ID of the Environment that the Kafka cluster belongs to, for example, env-abc123. // The ID of the Confluent key that is used to encrypt the data in the Kafka cluster. ID *string `json:"id,omitempty" tf:"id,omitempty"` } type ByokKeyParameters struct { + // The ID of the Environment that the Kafka cluster belongs to, for example, env-abc123. // The ID of the Confluent key that is used to encrypt the data in the Kafka cluster. - // +kubebuilder:validation:Required + // +kubebuilder:validation:Optional ID *string `json:"id" tf:"id,omitempty"` } +type ClusterEnvironmentInitParameters struct { +} + type ClusterEnvironmentObservation struct { + // The ID of the Environment that the Kafka cluster belongs to, for example, env-abc123. // The unique identifier for the environment. ID *string `json:"id,omitempty" tf:"id,omitempty"` } type ClusterEnvironmentParameters struct { + // The ID of the Environment that the Kafka cluster belongs to, for example, env-abc123. // The unique identifier for the environment. // +crossplane:generate:reference:type=github.com/crossplane-contrib/provider-confluent/apis/confluent/v1alpha1.Environment // +kubebuilder:validation:Optional @@ -54,112 +71,198 @@ type ClusterEnvironmentParameters struct { IDSelector *v1.Selector `json:"idSelector,omitempty" tf:"-"` } +type ClusterInitParameters struct { + + // The availability zone configuration of the Kafka cluster. Accepted values are: SINGLE_ZONE and MULTI_ZONE. + // The availability zone configuration of the Kafka cluster. + Availability *string `json:"availability,omitempty" tf:"availability,omitempty"` + + // The configuration of the Basic Kafka cluster. + Basic []BasicInitParameters `json:"basic,omitempty" tf:"basic,omitempty"` + + // supports the following: + ByokKey []ByokKeyInitParameters `json:"byokKey,omitempty" tf:"byok_key,omitempty"` + + // The cloud service provider that runs the Kafka cluster. Accepted values are: AWS, AZURE, and GCP. + // The cloud service provider that runs the Kafka cluster. + Cloud *string `json:"cloud,omitempty" tf:"cloud,omitempty"` + + // The configuration of the Dedicated Kafka cluster. It supports the following: + Dedicated []DedicatedInitParameters `json:"dedicated,omitempty" tf:"dedicated,omitempty"` + + // The name of the Kafka cluster. + // The name of the Kafka cluster. + DisplayName *string `json:"displayName,omitempty" tf:"display_name,omitempty"` + + // The configuration of the Enterprise Kafka cluster. + Enterprise []EnterpriseInitParameters `json:"enterprise,omitempty" tf:"enterprise,omitempty"` + + // supports the following: + // Environment objects represent an isolated namespace for your Confluent resources for organizational purposes. + Environment []ClusterEnvironmentInitParameters `json:"environment,omitempty" tf:"environment,omitempty"` + + // supports the following: + // Network represents a network (VPC) in Confluent Cloud. All Networks exist within Confluent-managed cloud provider accounts. + Network []NetworkInitParameters `json:"network,omitempty" tf:"network,omitempty"` + + // The cloud service provider region where the Kafka cluster is running, for example, us-west-2. See Cloud Providers and Regions for a full list of options for AWS, Azure, and GCP. + // The cloud service provider region where the Kafka cluster is running. + Region *string `json:"region,omitempty" tf:"region,omitempty"` + + // The configuration of the Standard Kafka cluster. + Standard []StandardInitParameters `json:"standard,omitempty" tf:"standard,omitempty"` +} + type ClusterObservation struct { + // An API Version of the schema version of the Kafka cluster, for example, cmk/v2. // API Version defines the schema version of this representation of a Kafka cluster. APIVersion *string `json:"apiVersion,omitempty" tf:"api_version,omitempty"` + // The availability zone configuration of the Kafka cluster. Accepted values are: SINGLE_ZONE and MULTI_ZONE. // The availability zone configuration of the Kafka cluster. Availability *string `json:"availability,omitempty" tf:"availability,omitempty"` + // The configuration of the Basic Kafka cluster. Basic []BasicParameters `json:"basic,omitempty" tf:"basic,omitempty"` + // The bootstrap endpoint used by Kafka clients to connect to the Kafka cluster. (e.g., SASL_SSL://pkc-00000.us-central1.gcp.confluent.cloud:9092). // The bootstrap endpoint used by Kafka clients to connect to the Kafka cluster. BootstrapEndpoint *string `json:"bootstrapEndpoint,omitempty" tf:"bootstrap_endpoint,omitempty"` + // supports the following: ByokKey []ByokKeyObservation `json:"byokKey,omitempty" tf:"byok_key,omitempty"` + // The cloud service provider that runs the Kafka cluster. Accepted values are: AWS, AZURE, and GCP. // The cloud service provider that runs the Kafka cluster. Cloud *string `json:"cloud,omitempty" tf:"cloud,omitempty"` + // The configuration of the Dedicated Kafka cluster. It supports the following: Dedicated []DedicatedObservation `json:"dedicated,omitempty" tf:"dedicated,omitempty"` + // The name of the Kafka cluster. // The name of the Kafka cluster. DisplayName *string `json:"displayName,omitempty" tf:"display_name,omitempty"` + // The configuration of the Enterprise Kafka cluster. Enterprise []EnterpriseParameters `json:"enterprise,omitempty" tf:"enterprise,omitempty"` + // supports the following: // Environment objects represent an isolated namespace for your Confluent resources for organizational purposes. Environment []ClusterEnvironmentObservation `json:"environment,omitempty" tf:"environment,omitempty"` + // The ID of the Environment that the Kafka cluster belongs to, for example, env-abc123. ID *string `json:"id,omitempty" tf:"id,omitempty"` + // A kind of the Kafka cluster, for example, Cluster. // Kind defines the object Kafka cluster represents. Kind *string `json:"kind,omitempty" tf:"kind,omitempty"` + // supports the following: // Network represents a network (VPC) in Confluent Cloud. All Networks exist within Confluent-managed cloud provider accounts. Network []NetworkObservation `json:"network,omitempty" tf:"network,omitempty"` + // The Confluent Resource Name of the Kafka cluster, for example, crn://confluent.cloud/organization=1111aaaa-11aa-11aa-11aa-111111aaaaaa/environment=env-abc123/cloud-cluster=lkc-abc123. // The Confluent Resource Name of the Kafka cluster suitable for confluent_role_binding's crn_pattern. RbacCrn *string `json:"rbacCrn,omitempty" tf:"rbac_crn,omitempty"` + // The cloud service provider region where the Kafka cluster is running, for example, us-west-2. See Cloud Providers and Regions for a full list of options for AWS, Azure, and GCP. // The cloud service provider region where the Kafka cluster is running. Region *string `json:"region,omitempty" tf:"region,omitempty"` + // The REST endpoint of the Kafka cluster (e.g., https://pkc-00000.us-central1.gcp.confluent.cloud:443). // The REST endpoint of the Kafka cluster. RestEndpoint *string `json:"restEndpoint,omitempty" tf:"rest_endpoint,omitempty"` + // The configuration of the Standard Kafka cluster. Standard []StandardParameters `json:"standard,omitempty" tf:"standard,omitempty"` } type ClusterParameters struct { + // The availability zone configuration of the Kafka cluster. Accepted values are: SINGLE_ZONE and MULTI_ZONE. // The availability zone configuration of the Kafka cluster. // +kubebuilder:validation:Optional Availability *string `json:"availability,omitempty" tf:"availability,omitempty"` + // The configuration of the Basic Kafka cluster. // +kubebuilder:validation:Optional Basic []BasicParameters `json:"basic,omitempty" tf:"basic,omitempty"` + // supports the following: // +kubebuilder:validation:Optional ByokKey []ByokKeyParameters `json:"byokKey,omitempty" tf:"byok_key,omitempty"` + // The cloud service provider that runs the Kafka cluster. Accepted values are: AWS, AZURE, and GCP. // The cloud service provider that runs the Kafka cluster. // +kubebuilder:validation:Optional Cloud *string `json:"cloud,omitempty" tf:"cloud,omitempty"` + // The configuration of the Dedicated Kafka cluster. It supports the following: // +kubebuilder:validation:Optional Dedicated []DedicatedParameters `json:"dedicated,omitempty" tf:"dedicated,omitempty"` + // The name of the Kafka cluster. // The name of the Kafka cluster. // +kubebuilder:validation:Optional DisplayName *string `json:"displayName,omitempty" tf:"display_name,omitempty"` + // The configuration of the Enterprise Kafka cluster. // +kubebuilder:validation:Optional Enterprise []EnterpriseParameters `json:"enterprise,omitempty" tf:"enterprise,omitempty"` + // supports the following: // Environment objects represent an isolated namespace for your Confluent resources for organizational purposes. // +kubebuilder:validation:Optional Environment []ClusterEnvironmentParameters `json:"environment,omitempty" tf:"environment,omitempty"` + // supports the following: // Network represents a network (VPC) in Confluent Cloud. All Networks exist within Confluent-managed cloud provider accounts. // +kubebuilder:validation:Optional Network []NetworkParameters `json:"network,omitempty" tf:"network,omitempty"` + // The cloud service provider region where the Kafka cluster is running, for example, us-west-2. See Cloud Providers and Regions for a full list of options for AWS, Azure, and GCP. // The cloud service provider region where the Kafka cluster is running. // +kubebuilder:validation:Optional Region *string `json:"region,omitempty" tf:"region,omitempty"` + // The configuration of the Standard Kafka cluster. // +kubebuilder:validation:Optional Standard []StandardParameters `json:"standard,omitempty" tf:"standard,omitempty"` } +type DedicatedInitParameters struct { + + // The number of Confluent Kafka Units (CKUs) for Dedicated cluster types. The minimum number of CKUs for SINGLE_ZONE dedicated clusters is 1 whereas MULTI_ZONE dedicated clusters must have more than 2 CKUs. + // The number of Confluent Kafka Units (CKUs) for Dedicated cluster types. MULTI_ZONE dedicated clusters must have at least two CKUs. + Cku *float64 `json:"cku,omitempty" tf:"cku,omitempty"` + + // The ID of the encryption key that is used to encrypt the data in the Kafka cluster. + EncryptionKey *string `json:"encryptionKey,omitempty" tf:"encryption_key,omitempty"` +} + type DedicatedObservation struct { + // The number of Confluent Kafka Units (CKUs) for Dedicated cluster types. The minimum number of CKUs for SINGLE_ZONE dedicated clusters is 1 whereas MULTI_ZONE dedicated clusters must have more than 2 CKUs. // The number of Confluent Kafka Units (CKUs) for Dedicated cluster types. MULTI_ZONE dedicated clusters must have at least two CKUs. Cku *float64 `json:"cku,omitempty" tf:"cku,omitempty"` // The ID of the encryption key that is used to encrypt the data in the Kafka cluster. EncryptionKey *string `json:"encryptionKey,omitempty" tf:"encryption_key,omitempty"` + // The list of zones the cluster is in. + // On AWS, zones are AWS AZ IDs, for example, use1-az3. + // On GCP, zones are GCP zones, for example, us-central1-c. + // On Azure, zones are Confluent-chosen names (for example, 1, 2, 3) since Azure does not have universal zone identifiers. // The list of zones the cluster is in. Zones []*string `json:"zones,omitempty" tf:"zones,omitempty"` } type DedicatedParameters struct { + // The number of Confluent Kafka Units (CKUs) for Dedicated cluster types. The minimum number of CKUs for SINGLE_ZONE dedicated clusters is 1 whereas MULTI_ZONE dedicated clusters must have more than 2 CKUs. // The number of Confluent Kafka Units (CKUs) for Dedicated cluster types. MULTI_ZONE dedicated clusters must have at least two CKUs. - // +kubebuilder:validation:Required + // +kubebuilder:validation:Optional Cku *float64 `json:"cku" tf:"cku,omitempty"` // The ID of the encryption key that is used to encrypt the data in the Kafka cluster. @@ -167,25 +270,40 @@ type DedicatedParameters struct { EncryptionKey *string `json:"encryptionKey,omitempty" tf:"encryption_key,omitempty"` } +type EnterpriseInitParameters struct { +} + type EnterpriseObservation struct { } type EnterpriseParameters struct { } +type NetworkInitParameters struct { + + // The ID of the Environment that the Kafka cluster belongs to, for example, env-abc123. + // The unique identifier for the network. + ID *string `json:"id,omitempty" tf:"id,omitempty"` +} + type NetworkObservation struct { + // The ID of the Environment that the Kafka cluster belongs to, for example, env-abc123. // The unique identifier for the network. ID *string `json:"id,omitempty" tf:"id,omitempty"` } type NetworkParameters struct { + // The ID of the Environment that the Kafka cluster belongs to, for example, env-abc123. // The unique identifier for the network. - // +kubebuilder:validation:Required + // +kubebuilder:validation:Optional ID *string `json:"id" tf:"id,omitempty"` } +type StandardInitParameters struct { +} + type StandardObservation struct { } @@ -196,6 +314,18 @@ type StandardParameters struct { type ClusterSpec struct { v1.ResourceSpec `json:",inline"` ForProvider ClusterParameters `json:"forProvider"` + // THIS IS AN ALPHA FIELD. Do not use it in production. It is not honored + // unless the relevant Crossplane feature flag is enabled, and may be + // changed or removed without notice. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider ClusterInitParameters `json:"initProvider,omitempty"` } // ClusterStatus defines the observed state of Cluster. @@ -206,7 +336,7 @@ type ClusterStatus struct { // +kubebuilder:object:root=true -// Cluster is the Schema for the Clusters API. +// Cluster is the Schema for the Clusters 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" @@ -216,11 +346,11 @@ type ClusterStatus struct { type Cluster struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` - // +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'ObserveOnly' || has(self.forProvider.availability)",message="availability is a required parameter" - // +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'ObserveOnly' || has(self.forProvider.cloud)",message="cloud is a required parameter" - // +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'ObserveOnly' || has(self.forProvider.displayName)",message="displayName is a required parameter" - // +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'ObserveOnly' || has(self.forProvider.environment)",message="environment is a required parameter" - // +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'ObserveOnly' || has(self.forProvider.region)",message="region is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.availability) || has(self.initProvider.availability)",message="availability is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.cloud) || has(self.initProvider.cloud)",message="cloud is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.displayName) || has(self.initProvider.displayName)",message="displayName is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.environment) || has(self.initProvider.environment)",message="environment is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.region) || has(self.initProvider.region)",message="region is a required parameter" Spec ClusterSpec `json:"spec"` Status ClusterStatus `json:"status,omitempty"` } diff --git a/apis/confluent/v1alpha1/zz_clusterconfig_types.go b/apis/confluent/v1alpha1/zz_clusterconfig_types.go index 2dd590c..be42151 100755 --- a/apis/confluent/v1alpha1/zz_clusterconfig_types.go +++ b/apis/confluent/v1alpha1/zz_clusterconfig_types.go @@ -13,62 +13,103 @@ import ( v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" ) +type ClusterConfigCredentialsInitParameters struct { +} + type ClusterConfigCredentialsObservation struct { } type ClusterConfigCredentialsParameters struct { + // The Kafka API Key. // The Cluster API Key for your Confluent Cloud cluster. // +kubebuilder:validation:Required KeySecretRef v1.SecretKeySelector `json:"keySecretRef" tf:"-"` + // The Kafka API Secret. // The Cluster API Secret for your Confluent Cloud cluster. // +kubebuilder:validation:Required SecretSecretRef v1.SecretKeySelector `json:"secretSecretRef" tf:"-"` } +type ClusterConfigInitParameters struct { + + // The custom cluster settings to set: + // The custom cluster settings to set (e.g., `"num.partitions" = "8"`). + Config map[string]*string `json:"config,omitempty" tf:"config,omitempty"` + + // supports the following: + // The Cluster API Credentials. + Credentials []ClusterConfigCredentialsInitParameters `json:"credentials,omitempty" tf:"credentials,omitempty"` + + // supports the following: + KafkaCluster []ClusterConfigKafkaClusterInitParameters `json:"kafkaCluster,omitempty" tf:"kafka_cluster,omitempty"` + + // The REST endpoint of the Dedicated Kafka cluster, for example, https://pkc-00000.us-central1.gcp.confluent.cloud:443). + // The REST endpoint of the Kafka cluster (e.g., `https://pkc-00000.us-central1.gcp.confluent.cloud:443`). + RestEndpoint *string `json:"restEndpoint,omitempty" tf:"rest_endpoint,omitempty"` +} + +type ClusterConfigKafkaClusterInitParameters struct { + + // The ID of the Dedicated Kafka cluster, for example, lkc-abc123. + // The Kafka cluster ID (e.g., `lkc-12345`). + ID *string `json:"id,omitempty" tf:"id,omitempty"` +} + type ClusterConfigKafkaClusterObservation struct { + // The ID of the Dedicated Kafka cluster, for example, lkc-abc123. // The Kafka cluster ID (e.g., `lkc-12345`). ID *string `json:"id,omitempty" tf:"id,omitempty"` } type ClusterConfigKafkaClusterParameters struct { + // The ID of the Dedicated Kafka cluster, for example, lkc-abc123. // The Kafka cluster ID (e.g., `lkc-12345`). - // +kubebuilder:validation:Required + // +kubebuilder:validation:Optional ID *string `json:"id" tf:"id,omitempty"` } type ClusterConfigObservation struct { + // The custom cluster settings to set: // The custom cluster settings to set (e.g., `"num.partitions" = "8"`). Config map[string]*string `json:"config,omitempty" tf:"config,omitempty"` + // supports the following: // The Cluster API Credentials. Credentials []ClusterConfigCredentialsParameters `json:"credentials,omitempty" tf:"credentials,omitempty"` + // The ID of the Dedicated Kafka cluster, for example, lkc-abc123. ID *string `json:"id,omitempty" tf:"id,omitempty"` + // supports the following: KafkaCluster []ClusterConfigKafkaClusterObservation `json:"kafkaCluster,omitempty" tf:"kafka_cluster,omitempty"` + // The REST endpoint of the Dedicated Kafka cluster, for example, https://pkc-00000.us-central1.gcp.confluent.cloud:443). // The REST endpoint of the Kafka cluster (e.g., `https://pkc-00000.us-central1.gcp.confluent.cloud:443`). RestEndpoint *string `json:"restEndpoint,omitempty" tf:"rest_endpoint,omitempty"` } type ClusterConfigParameters struct { + // The custom cluster settings to set: // The custom cluster settings to set (e.g., `"num.partitions" = "8"`). // +kubebuilder:validation:Optional Config map[string]*string `json:"config,omitempty" tf:"config,omitempty"` + // supports the following: // The Cluster API Credentials. // +kubebuilder:validation:Optional Credentials []ClusterConfigCredentialsParameters `json:"credentials,omitempty" tf:"credentials,omitempty"` + // supports the following: // +kubebuilder:validation:Optional KafkaCluster []ClusterConfigKafkaClusterParameters `json:"kafkaCluster,omitempty" tf:"kafka_cluster,omitempty"` + // The REST endpoint of the Dedicated Kafka cluster, for example, https://pkc-00000.us-central1.gcp.confluent.cloud:443). // The REST endpoint of the Kafka cluster (e.g., `https://pkc-00000.us-central1.gcp.confluent.cloud:443`). // +kubebuilder:validation:Optional RestEndpoint *string `json:"restEndpoint,omitempty" tf:"rest_endpoint,omitempty"` @@ -78,6 +119,18 @@ type ClusterConfigParameters struct { type ClusterConfigSpec struct { v1.ResourceSpec `json:",inline"` ForProvider ClusterConfigParameters `json:"forProvider"` + // THIS IS AN ALPHA FIELD. Do not use it in production. It is not honored + // unless the relevant Crossplane feature flag is enabled, and may be + // changed or removed without notice. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider ClusterConfigInitParameters `json:"initProvider,omitempty"` } // ClusterConfigStatus defines the observed state of ClusterConfig. @@ -88,7 +141,7 @@ type ClusterConfigStatus struct { // +kubebuilder:object:root=true -// ClusterConfig is the Schema for the ClusterConfigs API. +// ClusterConfig is the Schema for the ClusterConfigs 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" @@ -98,7 +151,7 @@ type ClusterConfigStatus struct { type ClusterConfig struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` - // +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'ObserveOnly' || has(self.forProvider.config)",message="config is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.config) || has(self.initProvider.config)",message="config is a required parameter" Spec ClusterConfigSpec `json:"spec"` Status ClusterConfigStatus `json:"status,omitempty"` } diff --git a/apis/confluent/v1alpha1/zz_environment_types.go b/apis/confluent/v1alpha1/zz_environment_types.go index be8a10f..3ce201c 100755 --- a/apis/confluent/v1alpha1/zz_environment_types.go +++ b/apis/confluent/v1alpha1/zz_environment_types.go @@ -13,19 +13,30 @@ import ( v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" ) +type EnvironmentInitParameters_2 struct { + + // A human-readable name for the Environment. Start and end the name with alphanumeric characters, for example, "Development". The name can contain hyphens and underscores. + // A human-readable name for the Environment. + DisplayName *string `json:"displayName,omitempty" tf:"display_name,omitempty"` +} + type EnvironmentObservation_2 struct { + // A human-readable name for the Environment. Start and end the name with alphanumeric characters, for example, "Development". The name can contain hyphens and underscores. // A human-readable name for the Environment. DisplayName *string `json:"displayName,omitempty" tf:"display_name,omitempty"` + // The ID of the Environment, for example, env-abc123. ID *string `json:"id,omitempty" tf:"id,omitempty"` + // The Confluent Resource Name of the Environment, for example, crn://confluent.cloud/organization=1111aaaa-11aa-11aa-11aa-111111aaaaaa/environment=env-abc123. // The Confluent Resource Name of the Environment. ResourceName *string `json:"resourceName,omitempty" tf:"resource_name,omitempty"` } type EnvironmentParameters_2 struct { + // A human-readable name for the Environment. Start and end the name with alphanumeric characters, for example, "Development". The name can contain hyphens and underscores. // A human-readable name for the Environment. // +kubebuilder:validation:Optional DisplayName *string `json:"displayName,omitempty" tf:"display_name,omitempty"` @@ -35,6 +46,18 @@ type EnvironmentParameters_2 struct { type EnvironmentSpec struct { v1.ResourceSpec `json:",inline"` ForProvider EnvironmentParameters_2 `json:"forProvider"` + // THIS IS AN ALPHA FIELD. Do not use it in production. It is not honored + // unless the relevant Crossplane feature flag is enabled, and may be + // changed or removed without notice. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider EnvironmentInitParameters_2 `json:"initProvider,omitempty"` } // EnvironmentStatus defines the observed state of Environment. @@ -45,7 +68,7 @@ type EnvironmentStatus struct { // +kubebuilder:object:root=true -// Environment is the Schema for the Environments API. +// Environment is the Schema for the Environments 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" @@ -55,7 +78,7 @@ type EnvironmentStatus struct { type Environment struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` - // +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'ObserveOnly' || has(self.forProvider.displayName)",message="displayName is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.displayName) || has(self.initProvider.displayName)",message="displayName is a required parameter" Spec EnvironmentSpec `json:"spec"` Status EnvironmentStatus `json:"status,omitempty"` } diff --git a/apis/confluent/v1alpha1/zz_generated.deepcopy.go b/apis/confluent/v1alpha1/zz_generated.deepcopy.go index 3b849f4..884f65d 100644 --- a/apis/confluent/v1alpha1/zz_generated.deepcopy.go +++ b/apis/confluent/v1alpha1/zz_generated.deepcopy.go @@ -1,5 +1,4 @@ //go:build !ignore_autogenerated -// +build !ignore_autogenerated /* Copyright 2022 Upbound Inc. @@ -41,6 +40,50 @@ func (in *APIKey) DeepCopyObject() runtime.Object { return nil } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *APIKeyInitParameters) DeepCopyInto(out *APIKeyInitParameters) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.DisableWaitForReady != nil { + in, out := &in.DisableWaitForReady, &out.DisableWaitForReady + *out = new(bool) + **out = **in + } + if in.DisplayName != nil { + in, out := &in.DisplayName, &out.DisplayName + *out = new(string) + **out = **in + } + if in.ManagedResource != nil { + in, out := &in.ManagedResource, &out.ManagedResource + *out = make([]ManagedResourceInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Owner != nil { + in, out := &in.Owner, &out.Owner + *out = make([]OwnerInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIKeyInitParameters. +func (in *APIKeyInitParameters) DeepCopy() *APIKeyInitParameters { + if in == nil { + return nil + } + out := new(APIKeyInitParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *APIKeyList) DeepCopyInto(out *APIKeyList) { *out = *in @@ -171,6 +214,7 @@ func (in *APIKeySpec) DeepCopyInto(out *APIKeySpec) { *out = *in in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIKeySpec. @@ -200,6 +244,21 @@ func (in *APIKeyStatus) DeepCopy() *APIKeyStatus { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BasicInitParameters) DeepCopyInto(out *BasicInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BasicInitParameters. +func (in *BasicInitParameters) DeepCopy() *BasicInitParameters { + if in == nil { + return nil + } + out := new(BasicInitParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *BasicObservation) DeepCopyInto(out *BasicObservation) { *out = *in @@ -230,6 +289,26 @@ func (in *BasicParameters) DeepCopy() *BasicParameters { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ByokKeyInitParameters) DeepCopyInto(out *ByokKeyInitParameters) { + *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 ByokKeyInitParameters. +func (in *ByokKeyInitParameters) DeepCopy() *ByokKeyInitParameters { + if in == nil { + return nil + } + out := new(ByokKeyInitParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ByokKeyObservation) DeepCopyInto(out *ByokKeyObservation) { *out = *in @@ -324,6 +403,21 @@ func (in *ClusterConfig) DeepCopyObject() runtime.Object { return nil } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterConfigCredentialsInitParameters) DeepCopyInto(out *ClusterConfigCredentialsInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterConfigCredentialsInitParameters. +func (in *ClusterConfigCredentialsInitParameters) DeepCopy() *ClusterConfigCredentialsInitParameters { + if in == nil { + return nil + } + out := new(ClusterConfigCredentialsInitParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ClusterConfigCredentialsObservation) DeepCopyInto(out *ClusterConfigCredentialsObservation) { *out = *in @@ -356,6 +450,74 @@ func (in *ClusterConfigCredentialsParameters) DeepCopy() *ClusterConfigCredentia return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterConfigInitParameters) DeepCopyInto(out *ClusterConfigInitParameters) { + *out = *in + if in.Config != nil { + in, out := &in.Config, &out.Config + *out = make(map[string]*string, len(*in)) + for key, val := range *in { + var outVal *string + if val == nil { + (*out)[key] = nil + } else { + inVal := (*in)[key] + in, out := &inVal, &outVal + *out = new(string) + **out = **in + } + (*out)[key] = outVal + } + } + if in.Credentials != nil { + in, out := &in.Credentials, &out.Credentials + *out = make([]ClusterConfigCredentialsInitParameters, len(*in)) + copy(*out, *in) + } + if in.KafkaCluster != nil { + in, out := &in.KafkaCluster, &out.KafkaCluster + *out = make([]ClusterConfigKafkaClusterInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.RestEndpoint != nil { + in, out := &in.RestEndpoint, &out.RestEndpoint + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterConfigInitParameters. +func (in *ClusterConfigInitParameters) DeepCopy() *ClusterConfigInitParameters { + if in == nil { + return nil + } + out := new(ClusterConfigInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterConfigKafkaClusterInitParameters) DeepCopyInto(out *ClusterConfigKafkaClusterInitParameters) { + *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 ClusterConfigKafkaClusterInitParameters. +func (in *ClusterConfigKafkaClusterInitParameters) DeepCopy() *ClusterConfigKafkaClusterInitParameters { + if in == nil { + return nil + } + out := new(ClusterConfigKafkaClusterInitParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ClusterConfigKafkaClusterObservation) DeepCopyInto(out *ClusterConfigKafkaClusterObservation) { *out = *in @@ -439,7 +601,8 @@ func (in *ClusterConfigObservation) DeepCopyInto(out *ClusterConfigObservation) if val == nil { (*out)[key] = nil } else { - in, out := &val, &outVal + inVal := (*in)[key] + in, out := &inVal, &outVal *out = new(string) **out = **in } @@ -491,7 +654,8 @@ func (in *ClusterConfigParameters) DeepCopyInto(out *ClusterConfigParameters) { if val == nil { (*out)[key] = nil } else { - in, out := &val, &outVal + inVal := (*in)[key] + in, out := &inVal, &outVal *out = new(string) **out = **in } @@ -532,6 +696,7 @@ func (in *ClusterConfigSpec) DeepCopyInto(out *ClusterConfigSpec) { *out = *in in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterConfigSpec. @@ -561,6 +726,21 @@ func (in *ClusterConfigStatus) DeepCopy() *ClusterConfigStatus { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterEnvironmentInitParameters) DeepCopyInto(out *ClusterEnvironmentInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterEnvironmentInitParameters. +func (in *ClusterEnvironmentInitParameters) DeepCopy() *ClusterEnvironmentInitParameters { + if in == nil { + return nil + } + out := new(ClusterEnvironmentInitParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ClusterEnvironmentObservation) DeepCopyInto(out *ClusterEnvironmentObservation) { *out = *in @@ -611,6 +791,82 @@ func (in *ClusterEnvironmentParameters) DeepCopy() *ClusterEnvironmentParameters return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterInitParameters) DeepCopyInto(out *ClusterInitParameters) { + *out = *in + if in.Availability != nil { + in, out := &in.Availability, &out.Availability + *out = new(string) + **out = **in + } + if in.Basic != nil { + in, out := &in.Basic, &out.Basic + *out = make([]BasicInitParameters, len(*in)) + copy(*out, *in) + } + if in.ByokKey != nil { + in, out := &in.ByokKey, &out.ByokKey + *out = make([]ByokKeyInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Cloud != nil { + in, out := &in.Cloud, &out.Cloud + *out = new(string) + **out = **in + } + if in.Dedicated != nil { + in, out := &in.Dedicated, &out.Dedicated + *out = make([]DedicatedInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.DisplayName != nil { + in, out := &in.DisplayName, &out.DisplayName + *out = new(string) + **out = **in + } + if in.Enterprise != nil { + in, out := &in.Enterprise, &out.Enterprise + *out = make([]EnterpriseInitParameters, len(*in)) + copy(*out, *in) + } + if in.Environment != nil { + in, out := &in.Environment, &out.Environment + *out = make([]ClusterEnvironmentInitParameters, len(*in)) + copy(*out, *in) + } + if in.Network != nil { + in, out := &in.Network, &out.Network + *out = make([]NetworkInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Region != nil { + in, out := &in.Region, &out.Region + *out = new(string) + **out = **in + } + if in.Standard != nil { + in, out := &in.Standard, &out.Standard + *out = make([]StandardInitParameters, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterInitParameters. +func (in *ClusterInitParameters) DeepCopy() *ClusterInitParameters { + if in == nil { + return nil + } + out := new(ClusterInitParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ClusterList) DeepCopyInto(out *ClusterList) { *out = *in @@ -834,6 +1090,7 @@ func (in *ClusterSpec) DeepCopyInto(out *ClusterSpec) { *out = *in in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterSpec. @@ -863,6 +1120,21 @@ 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 *CredentialsInitParameters) DeepCopyInto(out *CredentialsInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CredentialsInitParameters. +func (in *CredentialsInitParameters) DeepCopy() *CredentialsInitParameters { + if in == nil { + return nil + } + out := new(CredentialsInitParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *CredentialsObservation) DeepCopyInto(out *CredentialsObservation) { *out = *in @@ -895,6 +1167,31 @@ func (in *CredentialsParameters) DeepCopy() *CredentialsParameters { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DedicatedInitParameters) DeepCopyInto(out *DedicatedInitParameters) { + *out = *in + if in.Cku != nil { + in, out := &in.Cku, &out.Cku + *out = new(float64) + **out = **in + } + if in.EncryptionKey != nil { + in, out := &in.EncryptionKey, &out.EncryptionKey + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DedicatedInitParameters. +func (in *DedicatedInitParameters) DeepCopy() *DedicatedInitParameters { + if in == nil { + return nil + } + out := new(DedicatedInitParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *DedicatedObservation) DeepCopyInto(out *DedicatedObservation) { *out = *in @@ -956,6 +1253,21 @@ func (in *DedicatedParameters) DeepCopy() *DedicatedParameters { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EnterpriseInitParameters) DeepCopyInto(out *EnterpriseInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EnterpriseInitParameters. +func (in *EnterpriseInitParameters) DeepCopy() *EnterpriseInitParameters { + if in == nil { + return nil + } + out := new(EnterpriseInitParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *EnterpriseObservation) DeepCopyInto(out *EnterpriseObservation) { *out = *in @@ -1013,6 +1325,41 @@ func (in *Environment) DeepCopyObject() runtime.Object { return nil } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EnvironmentInitParameters) DeepCopyInto(out *EnvironmentInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EnvironmentInitParameters. +func (in *EnvironmentInitParameters) DeepCopy() *EnvironmentInitParameters { + if in == nil { + return nil + } + out := new(EnvironmentInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EnvironmentInitParameters_2) DeepCopyInto(out *EnvironmentInitParameters_2) { + *out = *in + if in.DisplayName != nil { + in, out := &in.DisplayName, &out.DisplayName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EnvironmentInitParameters_2. +func (in *EnvironmentInitParameters_2) DeepCopy() *EnvironmentInitParameters_2 { + if in == nil { + return nil + } + out := new(EnvironmentInitParameters_2) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *EnvironmentList) DeepCopyInto(out *EnvironmentList) { *out = *in @@ -1150,6 +1497,7 @@ func (in *EnvironmentSpec) DeepCopyInto(out *EnvironmentSpec) { *out = *in in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EnvironmentSpec. @@ -1206,6 +1554,66 @@ func (in *KafkaACL) DeepCopyObject() runtime.Object { return nil } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *KafkaACLInitParameters) DeepCopyInto(out *KafkaACLInitParameters) { + *out = *in + if in.Credentials != nil { + in, out := &in.Credentials, &out.Credentials + *out = make([]CredentialsInitParameters, len(*in)) + copy(*out, *in) + } + if in.Host != nil { + in, out := &in.Host, &out.Host + *out = new(string) + **out = **in + } + if in.KafkaCluster != nil { + in, out := &in.KafkaCluster, &out.KafkaCluster + *out = make([]KafkaClusterInitParameters, len(*in)) + copy(*out, *in) + } + if in.Operation != nil { + in, out := &in.Operation, &out.Operation + *out = new(string) + **out = **in + } + if in.PatternType != nil { + in, out := &in.PatternType, &out.PatternType + *out = new(string) + **out = **in + } + if in.Permission != nil { + in, out := &in.Permission, &out.Permission + *out = new(string) + **out = **in + } + if in.ResourceName != nil { + in, out := &in.ResourceName, &out.ResourceName + *out = new(string) + **out = **in + } + if in.ResourceType != nil { + in, out := &in.ResourceType, &out.ResourceType + *out = new(string) + **out = **in + } + if in.RestEndpoint != nil { + in, out := &in.RestEndpoint, &out.RestEndpoint + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KafkaACLInitParameters. +func (in *KafkaACLInitParameters) DeepCopy() *KafkaACLInitParameters { + if in == nil { + return nil + } + out := new(KafkaACLInitParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *KafkaACLList) DeepCopyInto(out *KafkaACLList) { *out = *in @@ -1392,6 +1800,7 @@ func (in *KafkaACLSpec) DeepCopyInto(out *KafkaACLSpec) { *out = *in in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KafkaACLSpec. @@ -1421,6 +1830,21 @@ func (in *KafkaACLStatus) DeepCopy() *KafkaACLStatus { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *KafkaClusterInitParameters) DeepCopyInto(out *KafkaClusterInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KafkaClusterInitParameters. +func (in *KafkaClusterInitParameters) DeepCopy() *KafkaClusterInitParameters { + if in == nil { + return nil + } + out := new(KafkaClusterInitParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *KafkaClusterObservation) DeepCopyInto(out *KafkaClusterObservation) { *out = *in @@ -1471,6 +1895,36 @@ func (in *KafkaClusterParameters) DeepCopy() *KafkaClusterParameters { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ManagedResourceInitParameters) DeepCopyInto(out *ManagedResourceInitParameters) { + *out = *in + if in.APIVersion != nil { + in, out := &in.APIVersion, &out.APIVersion + *out = new(string) + **out = **in + } + if in.Environment != nil { + in, out := &in.Environment, &out.Environment + *out = make([]EnvironmentInitParameters, len(*in)) + copy(*out, *in) + } + if in.Kind != nil { + in, out := &in.Kind, &out.Kind + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedResourceInitParameters. +func (in *ManagedResourceInitParameters) DeepCopy() *ManagedResourceInitParameters { + if in == nil { + return nil + } + out := new(ManagedResourceInitParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ManagedResourceObservation) DeepCopyInto(out *ManagedResourceObservation) { *out = *in @@ -1555,6 +2009,26 @@ func (in *ManagedResourceParameters) DeepCopy() *ManagedResourceParameters { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkInitParameters) DeepCopyInto(out *NetworkInitParameters) { + *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 NetworkInitParameters. +func (in *NetworkInitParameters) DeepCopy() *NetworkInitParameters { + if in == nil { + return nil + } + out := new(NetworkInitParameters) + in.DeepCopyInto(out) + 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 @@ -1595,6 +2069,31 @@ func (in *NetworkParameters) DeepCopy() *NetworkParameters { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OwnerInitParameters) DeepCopyInto(out *OwnerInitParameters) { + *out = *in + if in.APIVersion != nil { + in, out := &in.APIVersion, &out.APIVersion + *out = new(string) + **out = **in + } + if in.Kind != nil { + in, out := &in.Kind, &out.Kind + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OwnerInitParameters. +func (in *OwnerInitParameters) DeepCopy() *OwnerInitParameters { + if in == nil { + return nil + } + out := new(OwnerInitParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *OwnerObservation) DeepCopyInto(out *OwnerObservation) { *out = *in @@ -1692,6 +2191,36 @@ func (in *RoleBinding) DeepCopyObject() runtime.Object { return nil } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RoleBindingInitParameters) DeepCopyInto(out *RoleBindingInitParameters) { + *out = *in + if in.CrnPattern != nil { + in, out := &in.CrnPattern, &out.CrnPattern + *out = new(string) + **out = **in + } + if in.Principal != nil { + in, out := &in.Principal, &out.Principal + *out = new(string) + **out = **in + } + if in.RoleName != nil { + in, out := &in.RoleName, &out.RoleName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleBindingInitParameters. +func (in *RoleBindingInitParameters) DeepCopy() *RoleBindingInitParameters { + if in == nil { + return nil + } + out := new(RoleBindingInitParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *RoleBindingList) DeepCopyInto(out *RoleBindingList) { *out = *in @@ -1794,6 +2323,7 @@ func (in *RoleBindingSpec) DeepCopyInto(out *RoleBindingSpec) { *out = *in in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleBindingSpec. @@ -1850,6 +2380,31 @@ func (in *ServiceAccount) DeepCopyObject() runtime.Object { return nil } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceAccountInitParameters) DeepCopyInto(out *ServiceAccountInitParameters) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.DisplayName != nil { + in, out := &in.DisplayName, &out.DisplayName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceAccountInitParameters. +func (in *ServiceAccountInitParameters) DeepCopy() *ServiceAccountInitParameters { + if in == nil { + return nil + } + out := new(ServiceAccountInitParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ServiceAccountList) DeepCopyInto(out *ServiceAccountList) { *out = *in @@ -1952,6 +2507,7 @@ func (in *ServiceAccountSpec) DeepCopyInto(out *ServiceAccountSpec) { *out = *in in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) in.ForProvider.DeepCopyInto(&out.ForProvider) + in.InitProvider.DeepCopyInto(&out.InitProvider) } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceAccountSpec. @@ -1981,6 +2537,21 @@ func (in *ServiceAccountStatus) DeepCopy() *ServiceAccountStatus { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StandardInitParameters) DeepCopyInto(out *StandardInitParameters) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StandardInitParameters. +func (in *StandardInitParameters) DeepCopy() *StandardInitParameters { + if in == nil { + return nil + } + out := new(StandardInitParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *StandardObservation) DeepCopyInto(out *StandardObservation) { *out = *in diff --git a/apis/confluent/v1alpha1/zz_generated.managed.go b/apis/confluent/v1alpha1/zz_generated.managed.go index 66f17e7..a66a4af 100644 --- a/apis/confluent/v1alpha1/zz_generated.managed.go +++ b/apis/confluent/v1alpha1/zz_generated.managed.go @@ -17,9 +17,9 @@ func (mg *APIKey) GetDeletionPolicy() xpv1.DeletionPolicy { return mg.Spec.DeletionPolicy } -// GetManagementPolicy of this APIKey. -func (mg *APIKey) GetManagementPolicy() xpv1.ManagementPolicy { - return mg.Spec.ManagementPolicy +// GetManagementPolicies of this APIKey. +func (mg *APIKey) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies } // GetProviderConfigReference of this APIKey. @@ -27,14 +27,6 @@ func (mg *APIKey) GetProviderConfigReference() *xpv1.Reference { return mg.Spec.ProviderConfigReference } -/* -GetProviderReference of this APIKey. -Deprecated: Use GetProviderConfigReference. -*/ -func (mg *APIKey) GetProviderReference() *xpv1.Reference { - return mg.Spec.ProviderReference -} - // GetPublishConnectionDetailsTo of this APIKey. func (mg *APIKey) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { return mg.Spec.PublishConnectionDetailsTo @@ -55,9 +47,9 @@ func (mg *APIKey) SetDeletionPolicy(r xpv1.DeletionPolicy) { mg.Spec.DeletionPolicy = r } -// SetManagementPolicy of this APIKey. -func (mg *APIKey) SetManagementPolicy(r xpv1.ManagementPolicy) { - mg.Spec.ManagementPolicy = r +// SetManagementPolicies of this APIKey. +func (mg *APIKey) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r } // SetProviderConfigReference of this APIKey. @@ -65,14 +57,6 @@ func (mg *APIKey) SetProviderConfigReference(r *xpv1.Reference) { mg.Spec.ProviderConfigReference = r } -/* -SetProviderReference of this APIKey. -Deprecated: Use SetProviderConfigReference. -*/ -func (mg *APIKey) SetProviderReference(r *xpv1.Reference) { - mg.Spec.ProviderReference = r -} - // SetPublishConnectionDetailsTo of this APIKey. func (mg *APIKey) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { mg.Spec.PublishConnectionDetailsTo = r @@ -93,9 +77,9 @@ func (mg *Cluster) GetDeletionPolicy() xpv1.DeletionPolicy { return mg.Spec.DeletionPolicy } -// GetManagementPolicy of this Cluster. -func (mg *Cluster) GetManagementPolicy() xpv1.ManagementPolicy { - return mg.Spec.ManagementPolicy +// GetManagementPolicies of this Cluster. +func (mg *Cluster) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies } // GetProviderConfigReference of this Cluster. @@ -103,14 +87,6 @@ func (mg *Cluster) GetProviderConfigReference() *xpv1.Reference { return mg.Spec.ProviderConfigReference } -/* -GetProviderReference of this Cluster. -Deprecated: Use GetProviderConfigReference. -*/ -func (mg *Cluster) GetProviderReference() *xpv1.Reference { - return mg.Spec.ProviderReference -} - // GetPublishConnectionDetailsTo of this Cluster. func (mg *Cluster) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { return mg.Spec.PublishConnectionDetailsTo @@ -131,9 +107,9 @@ func (mg *Cluster) SetDeletionPolicy(r xpv1.DeletionPolicy) { mg.Spec.DeletionPolicy = r } -// SetManagementPolicy of this Cluster. -func (mg *Cluster) SetManagementPolicy(r xpv1.ManagementPolicy) { - mg.Spec.ManagementPolicy = r +// SetManagementPolicies of this Cluster. +func (mg *Cluster) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r } // SetProviderConfigReference of this Cluster. @@ -141,14 +117,6 @@ func (mg *Cluster) SetProviderConfigReference(r *xpv1.Reference) { mg.Spec.ProviderConfigReference = r } -/* -SetProviderReference of this Cluster. -Deprecated: Use SetProviderConfigReference. -*/ -func (mg *Cluster) SetProviderReference(r *xpv1.Reference) { - mg.Spec.ProviderReference = r -} - // SetPublishConnectionDetailsTo of this Cluster. func (mg *Cluster) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { mg.Spec.PublishConnectionDetailsTo = r @@ -169,9 +137,9 @@ func (mg *ClusterConfig) GetDeletionPolicy() xpv1.DeletionPolicy { return mg.Spec.DeletionPolicy } -// GetManagementPolicy of this ClusterConfig. -func (mg *ClusterConfig) GetManagementPolicy() xpv1.ManagementPolicy { - return mg.Spec.ManagementPolicy +// GetManagementPolicies of this ClusterConfig. +func (mg *ClusterConfig) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies } // GetProviderConfigReference of this ClusterConfig. @@ -179,14 +147,6 @@ func (mg *ClusterConfig) GetProviderConfigReference() *xpv1.Reference { return mg.Spec.ProviderConfigReference } -/* -GetProviderReference of this ClusterConfig. -Deprecated: Use GetProviderConfigReference. -*/ -func (mg *ClusterConfig) GetProviderReference() *xpv1.Reference { - return mg.Spec.ProviderReference -} - // GetPublishConnectionDetailsTo of this ClusterConfig. func (mg *ClusterConfig) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { return mg.Spec.PublishConnectionDetailsTo @@ -207,9 +167,9 @@ func (mg *ClusterConfig) SetDeletionPolicy(r xpv1.DeletionPolicy) { mg.Spec.DeletionPolicy = r } -// SetManagementPolicy of this ClusterConfig. -func (mg *ClusterConfig) SetManagementPolicy(r xpv1.ManagementPolicy) { - mg.Spec.ManagementPolicy = r +// SetManagementPolicies of this ClusterConfig. +func (mg *ClusterConfig) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r } // SetProviderConfigReference of this ClusterConfig. @@ -217,14 +177,6 @@ func (mg *ClusterConfig) SetProviderConfigReference(r *xpv1.Reference) { mg.Spec.ProviderConfigReference = r } -/* -SetProviderReference of this ClusterConfig. -Deprecated: Use SetProviderConfigReference. -*/ -func (mg *ClusterConfig) SetProviderReference(r *xpv1.Reference) { - mg.Spec.ProviderReference = r -} - // SetPublishConnectionDetailsTo of this ClusterConfig. func (mg *ClusterConfig) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { mg.Spec.PublishConnectionDetailsTo = r @@ -245,9 +197,9 @@ func (mg *Environment) GetDeletionPolicy() xpv1.DeletionPolicy { return mg.Spec.DeletionPolicy } -// GetManagementPolicy of this Environment. -func (mg *Environment) GetManagementPolicy() xpv1.ManagementPolicy { - return mg.Spec.ManagementPolicy +// GetManagementPolicies of this Environment. +func (mg *Environment) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies } // GetProviderConfigReference of this Environment. @@ -255,14 +207,6 @@ func (mg *Environment) GetProviderConfigReference() *xpv1.Reference { return mg.Spec.ProviderConfigReference } -/* -GetProviderReference of this Environment. -Deprecated: Use GetProviderConfigReference. -*/ -func (mg *Environment) GetProviderReference() *xpv1.Reference { - return mg.Spec.ProviderReference -} - // GetPublishConnectionDetailsTo of this Environment. func (mg *Environment) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { return mg.Spec.PublishConnectionDetailsTo @@ -283,9 +227,9 @@ func (mg *Environment) SetDeletionPolicy(r xpv1.DeletionPolicy) { mg.Spec.DeletionPolicy = r } -// SetManagementPolicy of this Environment. -func (mg *Environment) SetManagementPolicy(r xpv1.ManagementPolicy) { - mg.Spec.ManagementPolicy = r +// SetManagementPolicies of this Environment. +func (mg *Environment) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r } // SetProviderConfigReference of this Environment. @@ -293,14 +237,6 @@ func (mg *Environment) SetProviderConfigReference(r *xpv1.Reference) { mg.Spec.ProviderConfigReference = r } -/* -SetProviderReference of this Environment. -Deprecated: Use SetProviderConfigReference. -*/ -func (mg *Environment) SetProviderReference(r *xpv1.Reference) { - mg.Spec.ProviderReference = r -} - // SetPublishConnectionDetailsTo of this Environment. func (mg *Environment) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { mg.Spec.PublishConnectionDetailsTo = r @@ -321,9 +257,9 @@ func (mg *KafkaACL) GetDeletionPolicy() xpv1.DeletionPolicy { return mg.Spec.DeletionPolicy } -// GetManagementPolicy of this KafkaACL. -func (mg *KafkaACL) GetManagementPolicy() xpv1.ManagementPolicy { - return mg.Spec.ManagementPolicy +// GetManagementPolicies of this KafkaACL. +func (mg *KafkaACL) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies } // GetProviderConfigReference of this KafkaACL. @@ -331,14 +267,6 @@ func (mg *KafkaACL) GetProviderConfigReference() *xpv1.Reference { return mg.Spec.ProviderConfigReference } -/* -GetProviderReference of this KafkaACL. -Deprecated: Use GetProviderConfigReference. -*/ -func (mg *KafkaACL) GetProviderReference() *xpv1.Reference { - return mg.Spec.ProviderReference -} - // GetPublishConnectionDetailsTo of this KafkaACL. func (mg *KafkaACL) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { return mg.Spec.PublishConnectionDetailsTo @@ -359,9 +287,9 @@ func (mg *KafkaACL) SetDeletionPolicy(r xpv1.DeletionPolicy) { mg.Spec.DeletionPolicy = r } -// SetManagementPolicy of this KafkaACL. -func (mg *KafkaACL) SetManagementPolicy(r xpv1.ManagementPolicy) { - mg.Spec.ManagementPolicy = r +// SetManagementPolicies of this KafkaACL. +func (mg *KafkaACL) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r } // SetProviderConfigReference of this KafkaACL. @@ -369,14 +297,6 @@ func (mg *KafkaACL) SetProviderConfigReference(r *xpv1.Reference) { mg.Spec.ProviderConfigReference = r } -/* -SetProviderReference of this KafkaACL. -Deprecated: Use SetProviderConfigReference. -*/ -func (mg *KafkaACL) SetProviderReference(r *xpv1.Reference) { - mg.Spec.ProviderReference = r -} - // SetPublishConnectionDetailsTo of this KafkaACL. func (mg *KafkaACL) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { mg.Spec.PublishConnectionDetailsTo = r @@ -397,9 +317,9 @@ func (mg *RoleBinding) GetDeletionPolicy() xpv1.DeletionPolicy { return mg.Spec.DeletionPolicy } -// GetManagementPolicy of this RoleBinding. -func (mg *RoleBinding) GetManagementPolicy() xpv1.ManagementPolicy { - return mg.Spec.ManagementPolicy +// GetManagementPolicies of this RoleBinding. +func (mg *RoleBinding) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies } // GetProviderConfigReference of this RoleBinding. @@ -407,14 +327,6 @@ func (mg *RoleBinding) GetProviderConfigReference() *xpv1.Reference { return mg.Spec.ProviderConfigReference } -/* -GetProviderReference of this RoleBinding. -Deprecated: Use GetProviderConfigReference. -*/ -func (mg *RoleBinding) GetProviderReference() *xpv1.Reference { - return mg.Spec.ProviderReference -} - // GetPublishConnectionDetailsTo of this RoleBinding. func (mg *RoleBinding) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { return mg.Spec.PublishConnectionDetailsTo @@ -435,9 +347,9 @@ func (mg *RoleBinding) SetDeletionPolicy(r xpv1.DeletionPolicy) { mg.Spec.DeletionPolicy = r } -// SetManagementPolicy of this RoleBinding. -func (mg *RoleBinding) SetManagementPolicy(r xpv1.ManagementPolicy) { - mg.Spec.ManagementPolicy = r +// SetManagementPolicies of this RoleBinding. +func (mg *RoleBinding) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r } // SetProviderConfigReference of this RoleBinding. @@ -445,14 +357,6 @@ func (mg *RoleBinding) SetProviderConfigReference(r *xpv1.Reference) { mg.Spec.ProviderConfigReference = r } -/* -SetProviderReference of this RoleBinding. -Deprecated: Use SetProviderConfigReference. -*/ -func (mg *RoleBinding) SetProviderReference(r *xpv1.Reference) { - mg.Spec.ProviderReference = r -} - // SetPublishConnectionDetailsTo of this RoleBinding. func (mg *RoleBinding) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { mg.Spec.PublishConnectionDetailsTo = r @@ -473,9 +377,9 @@ func (mg *ServiceAccount) GetDeletionPolicy() xpv1.DeletionPolicy { return mg.Spec.DeletionPolicy } -// GetManagementPolicy of this ServiceAccount. -func (mg *ServiceAccount) GetManagementPolicy() xpv1.ManagementPolicy { - return mg.Spec.ManagementPolicy +// GetManagementPolicies of this ServiceAccount. +func (mg *ServiceAccount) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies } // GetProviderConfigReference of this ServiceAccount. @@ -483,14 +387,6 @@ func (mg *ServiceAccount) GetProviderConfigReference() *xpv1.Reference { return mg.Spec.ProviderConfigReference } -/* -GetProviderReference of this ServiceAccount. -Deprecated: Use GetProviderConfigReference. -*/ -func (mg *ServiceAccount) GetProviderReference() *xpv1.Reference { - return mg.Spec.ProviderReference -} - // GetPublishConnectionDetailsTo of this ServiceAccount. func (mg *ServiceAccount) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { return mg.Spec.PublishConnectionDetailsTo @@ -511,9 +407,9 @@ func (mg *ServiceAccount) SetDeletionPolicy(r xpv1.DeletionPolicy) { mg.Spec.DeletionPolicy = r } -// SetManagementPolicy of this ServiceAccount. -func (mg *ServiceAccount) SetManagementPolicy(r xpv1.ManagementPolicy) { - mg.Spec.ManagementPolicy = r +// SetManagementPolicies of this ServiceAccount. +func (mg *ServiceAccount) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r } // SetProviderConfigReference of this ServiceAccount. @@ -521,14 +417,6 @@ func (mg *ServiceAccount) SetProviderConfigReference(r *xpv1.Reference) { mg.Spec.ProviderConfigReference = r } -/* -SetProviderReference of this ServiceAccount. -Deprecated: Use SetProviderConfigReference. -*/ -func (mg *ServiceAccount) SetProviderReference(r *xpv1.Reference) { - mg.Spec.ProviderReference = r -} - // SetPublishConnectionDetailsTo of this ServiceAccount. func (mg *ServiceAccount) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { mg.Spec.PublishConnectionDetailsTo = r diff --git a/apis/confluent/v1alpha1/zz_generated_terraformed.go b/apis/confluent/v1alpha1/zz_generated_terraformed.go index 0b2982f..b1b0e81 100755 --- a/apis/confluent/v1alpha1/zz_generated_terraformed.go +++ b/apis/confluent/v1alpha1/zz_generated_terraformed.go @@ -69,6 +69,16 @@ func (tr *APIKey) SetParameters(params map[string]any) error { return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) } +// GetInitParameters of this APIKey +func (tr *APIKey) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + // LateInitialize this APIKey using its observed tfState. // returns True if there are any spec changes for the resource. func (tr *APIKey) LateInitialize(attrs []byte) (bool, error) { @@ -143,6 +153,16 @@ func (tr *Environment) SetParameters(params map[string]any) error { return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) } +// GetInitParameters of this Environment +func (tr *Environment) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + // LateInitialize this Environment using its observed tfState. // returns True if there are any spec changes for the resource. func (tr *Environment) LateInitialize(attrs []byte) (bool, error) { @@ -217,6 +237,16 @@ func (tr *KafkaACL) SetParameters(params map[string]any) error { return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) } +// GetInitParameters of this KafkaACL +func (tr *KafkaACL) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + // LateInitialize this KafkaACL using its observed tfState. // returns True if there are any spec changes for the resource. func (tr *KafkaACL) LateInitialize(attrs []byte) (bool, error) { @@ -291,6 +321,16 @@ func (tr *Cluster) SetParameters(params map[string]any) error { return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) } +// GetInitParameters of this Cluster +func (tr *Cluster) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + // LateInitialize this Cluster using its observed tfState. // returns True if there are any spec changes for the resource. func (tr *Cluster) LateInitialize(attrs []byte) (bool, error) { @@ -366,6 +406,16 @@ func (tr *ClusterConfig) SetParameters(params map[string]any) error { return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) } +// GetInitParameters of this ClusterConfig +func (tr *ClusterConfig) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + // LateInitialize this ClusterConfig using its observed tfState. // returns True if there are any spec changes for the resource. func (tr *ClusterConfig) LateInitialize(attrs []byte) (bool, error) { @@ -440,6 +490,16 @@ func (tr *RoleBinding) SetParameters(params map[string]any) error { return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) } +// GetInitParameters of this RoleBinding +func (tr *RoleBinding) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + // LateInitialize this RoleBinding using its observed tfState. // returns True if there are any spec changes for the resource. func (tr *RoleBinding) LateInitialize(attrs []byte) (bool, error) { @@ -514,6 +574,16 @@ func (tr *ServiceAccount) SetParameters(params map[string]any) error { return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) } +// GetInitParameters of this ServiceAccount +func (tr *ServiceAccount) GetInitParameters() (map[string]any, error) { + p, err := json.TFParser.Marshal(tr.Spec.InitProvider) + if err != nil { + return nil, err + } + base := map[string]any{} + return base, json.TFParser.Unmarshal(p, &base) +} + // LateInitialize this ServiceAccount using its observed tfState. // returns True if there are any spec changes for the resource. func (tr *ServiceAccount) LateInitialize(attrs []byte) (bool, error) { diff --git a/apis/confluent/v1alpha1/zz_kafkaacl_types.go b/apis/confluent/v1alpha1/zz_kafkaacl_types.go index 5732096..ba85c0d 100755 --- a/apis/confluent/v1alpha1/zz_kafkaacl_types.go +++ b/apis/confluent/v1alpha1/zz_kafkaacl_types.go @@ -13,79 +13,140 @@ import ( v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" ) +type CredentialsInitParameters struct { +} + type CredentialsObservation struct { } type CredentialsParameters struct { + // The Kafka API Key. // The Cluster API Key for your Confluent Cloud cluster. // +kubebuilder:validation:Required KeySecretRef v1.SecretKeySelector `json:"keySecretRef" tf:"-"` + // The Kafka API Secret. // The Cluster API Secret for your Confluent Cloud cluster. // +kubebuilder:validation:Required SecretSecretRef v1.SecretKeySelector `json:"secretSecretRef" tf:"-"` } +type KafkaACLInitParameters struct { + + // supports the following: + // The Cluster API Credentials. + Credentials []CredentialsInitParameters `json:"credentials,omitempty" tf:"credentials,omitempty"` + + // The host for the ACL. Should be set to * for Confluent Cloud. + // The host for the ACL. + Host *string `json:"host,omitempty" tf:"host,omitempty"` + + // supports the following: + KafkaCluster []KafkaClusterInitParameters `json:"kafkaCluster,omitempty" tf:"kafka_cluster,omitempty"` + + // The operation type for the ACL. Accepted values are: ALL, READ, WRITE, CREATE, DELETE, ALTER, DESCRIBE, CLUSTER_ACTION, DESCRIBE_CONFIGS, ALTER_CONFIGS, and IDEMPOTENT_WRITE. See Authorization using ACLs to find mappings of (resource_type, operation) to one or more Kafka APIs or request types. + // The operation type for the ACL. + Operation *string `json:"operation,omitempty" tf:"operation,omitempty"` + + // The pattern type for the ACL. Accepted values are: LITERAL and PREFIXED. + // The pattern type for the ACL. + PatternType *string `json:"patternType,omitempty" tf:"pattern_type,omitempty"` + + // The permission for the ACL. Accepted values are: DENY and ALLOW. + // The permission for the ACL. + Permission *string `json:"permission,omitempty" tf:"permission,omitempty"` + + // The resource name for the ACL. Must be kafka-cluster if resource_type equals to CLUSTER. + // The resource name for the ACL. + ResourceName *string `json:"resourceName,omitempty" tf:"resource_name,omitempty"` + + // The type of the resource. Accepted values are: TOPIC, GROUP, CLUSTER, TRANSACTIONAL_ID, DELEGATION_TOKEN. See Authorization using ACLs to find definitions of resource types and mappings of (resource_type, operation) to one or more Kafka APIs or request types. + // The type of the resource. + ResourceType *string `json:"resourceType,omitempty" tf:"resource_type,omitempty"` + + // The REST endpoint of the Kafka cluster, for example, https://pkc-00000.us-central1.gcp.confluent.cloud:443. + // The REST endpoint of the Kafka cluster (e.g., `https://pkc-00000.us-central1.gcp.confluent.cloud:443`). + RestEndpoint *string `json:"restEndpoint,omitempty" tf:"rest_endpoint,omitempty"` +} + type KafkaACLObservation struct { + // supports the following: // The Cluster API Credentials. Credentials []CredentialsParameters `json:"credentials,omitempty" tf:"credentials,omitempty"` + // The host for the ACL. Should be set to * for Confluent Cloud. // The host for the ACL. Host *string `json:"host,omitempty" tf:"host,omitempty"` + // The ID of the Kafka cluster, for example, lkc-abc123. ID *string `json:"id,omitempty" tf:"id,omitempty"` + // supports the following: KafkaCluster []KafkaClusterObservation `json:"kafkaCluster,omitempty" tf:"kafka_cluster,omitempty"` + // The operation type for the ACL. Accepted values are: ALL, READ, WRITE, CREATE, DELETE, ALTER, DESCRIBE, CLUSTER_ACTION, DESCRIBE_CONFIGS, ALTER_CONFIGS, and IDEMPOTENT_WRITE. See Authorization using ACLs to find mappings of (resource_type, operation) to one or more Kafka APIs or request types. // The operation type for the ACL. Operation *string `json:"operation,omitempty" tf:"operation,omitempty"` + // The pattern type for the ACL. Accepted values are: LITERAL and PREFIXED. // The pattern type for the ACL. PatternType *string `json:"patternType,omitempty" tf:"pattern_type,omitempty"` + // The permission for the ACL. Accepted values are: DENY and ALLOW. // The permission for the ACL. Permission *string `json:"permission,omitempty" tf:"permission,omitempty"` + // The principal for the ACL. // The principal for the ACL. Principal *string `json:"principal,omitempty" tf:"principal,omitempty"` + // The resource name for the ACL. Must be kafka-cluster if resource_type equals to CLUSTER. // The resource name for the ACL. ResourceName *string `json:"resourceName,omitempty" tf:"resource_name,omitempty"` + // The type of the resource. Accepted values are: TOPIC, GROUP, CLUSTER, TRANSACTIONAL_ID, DELEGATION_TOKEN. See Authorization using ACLs to find definitions of resource types and mappings of (resource_type, operation) to one or more Kafka APIs or request types. // The type of the resource. ResourceType *string `json:"resourceType,omitempty" tf:"resource_type,omitempty"` + // The REST endpoint of the Kafka cluster, for example, https://pkc-00000.us-central1.gcp.confluent.cloud:443. // The REST endpoint of the Kafka cluster (e.g., `https://pkc-00000.us-central1.gcp.confluent.cloud:443`). RestEndpoint *string `json:"restEndpoint,omitempty" tf:"rest_endpoint,omitempty"` } type KafkaACLParameters struct { + // supports the following: // The Cluster API Credentials. // +kubebuilder:validation:Optional Credentials []CredentialsParameters `json:"credentials,omitempty" tf:"credentials,omitempty"` + // The host for the ACL. Should be set to * for Confluent Cloud. // The host for the ACL. // +kubebuilder:validation:Optional Host *string `json:"host,omitempty" tf:"host,omitempty"` + // supports the following: // +kubebuilder:validation:Optional KafkaCluster []KafkaClusterParameters `json:"kafkaCluster,omitempty" tf:"kafka_cluster,omitempty"` + // The operation type for the ACL. Accepted values are: ALL, READ, WRITE, CREATE, DELETE, ALTER, DESCRIBE, CLUSTER_ACTION, DESCRIBE_CONFIGS, ALTER_CONFIGS, and IDEMPOTENT_WRITE. See Authorization using ACLs to find mappings of (resource_type, operation) to one or more Kafka APIs or request types. // The operation type for the ACL. // +kubebuilder:validation:Optional Operation *string `json:"operation,omitempty" tf:"operation,omitempty"` + // The pattern type for the ACL. Accepted values are: LITERAL and PREFIXED. // The pattern type for the ACL. // +kubebuilder:validation:Optional PatternType *string `json:"patternType,omitempty" tf:"pattern_type,omitempty"` + // The permission for the ACL. Accepted values are: DENY and ALLOW. // The permission for the ACL. // +kubebuilder:validation:Optional Permission *string `json:"permission,omitempty" tf:"permission,omitempty"` + // The principal for the ACL. // The principal for the ACL. // +crossplane:generate:reference:type=ServiceAccount // +crossplane:generate:reference:extractor=github.com/crossplane-contrib/provider-confluent/config/confluent_kafka_acl.ExtractResourceID() @@ -100,27 +161,35 @@ type KafkaACLParameters struct { // +kubebuilder:validation:Optional PrincipalSelector *v1.Selector `json:"principalSelector,omitempty" tf:"-"` + // The resource name for the ACL. Must be kafka-cluster if resource_type equals to CLUSTER. // The resource name for the ACL. // +kubebuilder:validation:Optional ResourceName *string `json:"resourceName,omitempty" tf:"resource_name,omitempty"` + // The type of the resource. Accepted values are: TOPIC, GROUP, CLUSTER, TRANSACTIONAL_ID, DELEGATION_TOKEN. See Authorization using ACLs to find definitions of resource types and mappings of (resource_type, operation) to one or more Kafka APIs or request types. // The type of the resource. // +kubebuilder:validation:Optional ResourceType *string `json:"resourceType,omitempty" tf:"resource_type,omitempty"` + // The REST endpoint of the Kafka cluster, for example, https://pkc-00000.us-central1.gcp.confluent.cloud:443. // The REST endpoint of the Kafka cluster (e.g., `https://pkc-00000.us-central1.gcp.confluent.cloud:443`). // +kubebuilder:validation:Optional RestEndpoint *string `json:"restEndpoint,omitempty" tf:"rest_endpoint,omitempty"` } +type KafkaClusterInitParameters struct { +} + type KafkaClusterObservation struct { + // The ID of the Kafka cluster, for example, lkc-abc123. // The Kafka cluster ID (e.g., `lkc-12345`). ID *string `json:"id,omitempty" tf:"id,omitempty"` } type KafkaClusterParameters struct { + // The ID of the Kafka cluster, for example, lkc-abc123. // The Kafka cluster ID (e.g., `lkc-12345`). // +crossplane:generate:reference:type=Cluster // +kubebuilder:validation:Optional @@ -139,6 +208,18 @@ type KafkaClusterParameters struct { type KafkaACLSpec struct { v1.ResourceSpec `json:",inline"` ForProvider KafkaACLParameters `json:"forProvider"` + // THIS IS AN ALPHA FIELD. Do not use it in production. It is not honored + // unless the relevant Crossplane feature flag is enabled, and may be + // changed or removed without notice. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider KafkaACLInitParameters `json:"initProvider,omitempty"` } // KafkaACLStatus defines the observed state of KafkaACL. @@ -149,7 +230,7 @@ type KafkaACLStatus struct { // +kubebuilder:object:root=true -// KafkaACL is the Schema for the KafkaACLs API. +// KafkaACL is the Schema for the KafkaACLs 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" @@ -159,12 +240,12 @@ type KafkaACLStatus struct { type KafkaACL struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` - // +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'ObserveOnly' || has(self.forProvider.host)",message="host is a required parameter" - // +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'ObserveOnly' || has(self.forProvider.operation)",message="operation is a required parameter" - // +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'ObserveOnly' || has(self.forProvider.patternType)",message="patternType is a required parameter" - // +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'ObserveOnly' || has(self.forProvider.permission)",message="permission is a required parameter" - // +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'ObserveOnly' || has(self.forProvider.resourceName)",message="resourceName is a required parameter" - // +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'ObserveOnly' || has(self.forProvider.resourceType)",message="resourceType is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.host) || has(self.initProvider.host)",message="host is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.operation) || has(self.initProvider.operation)",message="operation is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.patternType) || has(self.initProvider.patternType)",message="patternType is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.permission) || has(self.initProvider.permission)",message="permission is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.resourceName) || has(self.initProvider.resourceName)",message="resourceName is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.resourceType) || has(self.initProvider.resourceType)",message="resourceType is a required parameter" Spec KafkaACLSpec `json:"spec"` Status KafkaACLStatus `json:"status,omitempty"` } diff --git a/apis/confluent/v1alpha1/zz_rolebinding_types.go b/apis/confluent/v1alpha1/zz_rolebinding_types.go index 6f9691a..c11992f 100755 --- a/apis/confluent/v1alpha1/zz_rolebinding_types.go +++ b/apis/confluent/v1alpha1/zz_rolebinding_types.go @@ -13,30 +13,52 @@ import ( v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" ) +type RoleBindingInitParameters struct { + + // A Confluent Resource Name(CRN) that specifies the scope and resource patterns necessary for the role to bind. + // A CRN that specifies the scope and resource patterns necessary for the role to bind. + CrnPattern *string `json:"crnPattern,omitempty" tf:"crn_pattern,omitempty"` + + // A principal User to bind the role to, for example, "User:u-111aaa" for binding to a user "u-111aaa", or "User:sa-111aaa" for binding to a service account "sa-111aaa". + // The principal User to bind the role to. + Principal *string `json:"principal,omitempty" tf:"principal,omitempty"` + + // A name of the role to bind to the principal. See Confluent Cloud RBAC Roles for a full list of supported role names. + // The name of the role to bind to the principal. + RoleName *string `json:"roleName,omitempty" tf:"role_name,omitempty"` +} + type RoleBindingObservation struct { + // A Confluent Resource Name(CRN) that specifies the scope and resource patterns necessary for the role to bind. // A CRN that specifies the scope and resource patterns necessary for the role to bind. CrnPattern *string `json:"crnPattern,omitempty" tf:"crn_pattern,omitempty"` + // The ID of the Role Binding (e.g., rb-f3a90de). ID *string `json:"id,omitempty" tf:"id,omitempty"` + // A principal User to bind the role to, for example, "User:u-111aaa" for binding to a user "u-111aaa", or "User:sa-111aaa" for binding to a service account "sa-111aaa". // The principal User to bind the role to. Principal *string `json:"principal,omitempty" tf:"principal,omitempty"` + // A name of the role to bind to the principal. See Confluent Cloud RBAC Roles for a full list of supported role names. // The name of the role to bind to the principal. RoleName *string `json:"roleName,omitempty" tf:"role_name,omitempty"` } type RoleBindingParameters struct { + // A Confluent Resource Name(CRN) that specifies the scope and resource patterns necessary for the role to bind. // A CRN that specifies the scope and resource patterns necessary for the role to bind. // +kubebuilder:validation:Optional CrnPattern *string `json:"crnPattern,omitempty" tf:"crn_pattern,omitempty"` + // A principal User to bind the role to, for example, "User:u-111aaa" for binding to a user "u-111aaa", or "User:sa-111aaa" for binding to a service account "sa-111aaa". // The principal User to bind the role to. // +kubebuilder:validation:Optional Principal *string `json:"principal,omitempty" tf:"principal,omitempty"` + // A name of the role to bind to the principal. See Confluent Cloud RBAC Roles for a full list of supported role names. // The name of the role to bind to the principal. // +kubebuilder:validation:Optional RoleName *string `json:"roleName,omitempty" tf:"role_name,omitempty"` @@ -46,6 +68,18 @@ type RoleBindingParameters struct { type RoleBindingSpec struct { v1.ResourceSpec `json:",inline"` ForProvider RoleBindingParameters `json:"forProvider"` + // THIS IS AN ALPHA FIELD. Do not use it in production. It is not honored + // unless the relevant Crossplane feature flag is enabled, and may be + // changed or removed without notice. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider RoleBindingInitParameters `json:"initProvider,omitempty"` } // RoleBindingStatus defines the observed state of RoleBinding. @@ -56,7 +90,7 @@ type RoleBindingStatus struct { // +kubebuilder:object:root=true -// RoleBinding is the Schema for the RoleBindings API. +// RoleBinding is the Schema for the RoleBindings 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" @@ -66,9 +100,9 @@ type RoleBindingStatus struct { type RoleBinding struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` - // +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'ObserveOnly' || has(self.forProvider.crnPattern)",message="crnPattern is a required parameter" - // +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'ObserveOnly' || has(self.forProvider.principal)",message="principal is a required parameter" - // +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'ObserveOnly' || has(self.forProvider.roleName)",message="roleName is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.crnPattern) || has(self.initProvider.crnPattern)",message="crnPattern is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.principal) || has(self.initProvider.principal)",message="principal is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.roleName) || has(self.initProvider.roleName)",message="roleName is a required parameter" Spec RoleBindingSpec `json:"spec"` Status RoleBindingStatus `json:"status,omitempty"` } diff --git a/apis/confluent/v1alpha1/zz_serviceaccount_types.go b/apis/confluent/v1alpha1/zz_serviceaccount_types.go index 443e2bb..aa41ad8 100755 --- a/apis/confluent/v1alpha1/zz_serviceaccount_types.go +++ b/apis/confluent/v1alpha1/zz_serviceaccount_types.go @@ -13,29 +13,47 @@ import ( v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" ) +type ServiceAccountInitParameters struct { + + // A free-form description of the Service Account. + // A free-form description of the Service Account. + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // A human-readable name for the Service Account. + // A human-readable name for the Service Account. + DisplayName *string `json:"displayName,omitempty" tf:"display_name,omitempty"` +} + type ServiceAccountObservation struct { + // An API Version of the schema version of the Service Account, for example, iam/v2. // API Version defines the schema version of this representation of a Service Account. APIVersion *string `json:"apiVersion,omitempty" tf:"api_version,omitempty"` + // A free-form description of the Service Account. // A free-form description of the Service Account. Description *string `json:"description,omitempty" tf:"description,omitempty"` + // A human-readable name for the Service Account. // A human-readable name for the Service Account. DisplayName *string `json:"displayName,omitempty" tf:"display_name,omitempty"` + // The ID of the Service Account (e.g., sa-abc123). ID *string `json:"id,omitempty" tf:"id,omitempty"` + // A kind of the Service Account, for example, ServiceAccount. // Kind defines the object Service Account represents. Kind *string `json:"kind,omitempty" tf:"kind,omitempty"` } type ServiceAccountParameters struct { + // A free-form description of the Service Account. // A free-form description of the Service Account. // +kubebuilder:validation:Optional Description *string `json:"description,omitempty" tf:"description,omitempty"` + // A human-readable name for the Service Account. // A human-readable name for the Service Account. // +kubebuilder:validation:Optional DisplayName *string `json:"displayName,omitempty" tf:"display_name,omitempty"` @@ -45,6 +63,18 @@ type ServiceAccountParameters struct { type ServiceAccountSpec struct { v1.ResourceSpec `json:",inline"` ForProvider ServiceAccountParameters `json:"forProvider"` + // THIS IS AN ALPHA FIELD. Do not use it in production. It is not honored + // unless the relevant Crossplane feature flag is enabled, and may be + // changed or removed without notice. + // InitProvider holds the same fields as ForProvider, with the exception + // of Identifier and other resource reference fields. The fields that are + // in InitProvider are merged into ForProvider when the resource is created. + // The same fields are also added to the terraform ignore_changes hook, to + // avoid updating them after creation. This is useful for fields that are + // required on creation, but we do not desire to update them after creation, + // for example because of an external controller is managing them, like an + // autoscaler. + InitProvider ServiceAccountInitParameters `json:"initProvider,omitempty"` } // ServiceAccountStatus defines the observed state of ServiceAccount. @@ -55,7 +85,7 @@ type ServiceAccountStatus struct { // +kubebuilder:object:root=true -// ServiceAccount is the Schema for the ServiceAccounts API. +// ServiceAccount is the Schema for the ServiceAccounts 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" @@ -65,7 +95,7 @@ type ServiceAccountStatus struct { type ServiceAccount struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` - // +kubebuilder:validation:XValidation:rule="self.managementPolicy == 'ObserveOnly' || has(self.forProvider.displayName)",message="displayName is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.displayName) || has(self.initProvider.displayName)",message="displayName is a required parameter" Spec ServiceAccountSpec `json:"spec"` Status ServiceAccountStatus `json:"status,omitempty"` } diff --git a/apis/v1alpha1/zz_generated.deepcopy.go b/apis/v1alpha1/zz_generated.deepcopy.go index 9d284ba..86f2d29 100644 --- a/apis/v1alpha1/zz_generated.deepcopy.go +++ b/apis/v1alpha1/zz_generated.deepcopy.go @@ -1,5 +1,4 @@ //go:build !ignore_autogenerated -// +build !ignore_autogenerated /* Copyright 2022 Upbound Inc. diff --git a/apis/v1beta1/zz_generated.deepcopy.go b/apis/v1beta1/zz_generated.deepcopy.go index ae71405..09df2c1 100644 --- a/apis/v1beta1/zz_generated.deepcopy.go +++ b/apis/v1beta1/zz_generated.deepcopy.go @@ -1,5 +1,4 @@ //go:build !ignore_autogenerated -// +build !ignore_autogenerated /* Copyright 2022 Upbound Inc. diff --git a/config/provider-metadata.yaml b/config/provider-metadata.yaml index b37a4e8..ff13096 100644 --- a/config/provider-metadata.yaml +++ b/config/provider-metadata.yaml @@ -1,9 +1,146 @@ name: confluentinc/confluent resources: - confluent_api_key Resource - terraform-provider-confluent: + confluent_api_key: subCategory: "" - name: confluent_api_key Resource - terraform-provider-confluent + name: confluent_api_key title: confluent_api_key Resource - terraform-provider-confluent + examples: + - name: app-manager-kafka-api-key + manifest: |- + { + "description": "Kafka API Key that is owned by 'app-manager' service account", + "display_name": "app-manager-kafka-api-key", + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "managed_resource": [ + { + "api_version": "${confluent_kafka_cluster.basic.api_version}", + "environment": [ + { + "id": "${confluent_environment.staging.id}" + } + ], + "id": "${confluent_kafka_cluster.basic.id}", + "kind": "${confluent_kafka_cluster.basic.kind}" + } + ], + "owner": [ + { + "api_version": "${confluent_service_account.app-manager.api_version}", + "id": "${confluent_service_account.app-manager.id}", + "kind": "${confluent_service_account.app-manager.kind}" + } + ] + } + references: + managed_resource.api_version: confluent_kafka_cluster.basic.api_version + managed_resource.environment.id: confluent_environment.staging.id + managed_resource.id: confluent_kafka_cluster.basic.id + managed_resource.kind: confluent_kafka_cluster.basic.kind + owner.api_version: confluent_service_account.app-manager.api_version + owner.id: confluent_service_account.app-manager.id + owner.kind: confluent_service_account.app-manager.kind + - name: ksqldb-api-key + manifest: |- + { + "description": "KsqlDB API Key that is owned by 'app-manager' service account", + "display_name": "ksqldb-api-key", + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "managed_resource": [ + { + "api_version": "${confluent_ksql_cluster.main.api_version}", + "environment": [ + { + "id": "${confluent_environment.staging.id}" + } + ], + "id": "${confluent_ksql_cluster.main.id}", + "kind": "${confluent_ksql_cluster.main.kind}" + } + ], + "owner": [ + { + "api_version": "${confluent_service_account.app-manager.api_version}", + "id": "${confluent_service_account.app-manager.id}", + "kind": "${confluent_service_account.app-manager.kind}" + } + ] + } + references: + managed_resource.api_version: confluent_ksql_cluster.main.api_version + managed_resource.environment.id: confluent_environment.staging.id + managed_resource.id: confluent_ksql_cluster.main.id + managed_resource.kind: confluent_ksql_cluster.main.kind + owner.api_version: confluent_service_account.app-manager.api_version + owner.id: confluent_service_account.app-manager.id + owner.kind: confluent_service_account.app-manager.kind + - name: env-manager-schema-registry-api-key + manifest: |- + { + "description": "Schema Registry API Key that is owned by 'env-manager' service account", + "display_name": "env-manager-schema-registry-api-key", + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "managed_resource": [ + { + "api_version": "${confluent_schema_registry_cluster.essentials.api_version}", + "environment": [ + { + "id": "${confluent_environment.staging.id}" + } + ], + "id": "${confluent_schema_registry_cluster.essentials.id}", + "kind": "${confluent_schema_registry_cluster.essentials.kind}" + } + ], + "owner": [ + { + "api_version": "${confluent_service_account.env-manager.api_version}", + "id": "${confluent_service_account.env-manager.id}", + "kind": "${confluent_service_account.env-manager.kind}" + } + ] + } + references: + managed_resource.api_version: confluent_schema_registry_cluster.essentials.api_version + managed_resource.environment.id: confluent_environment.staging.id + managed_resource.id: confluent_schema_registry_cluster.essentials.id + managed_resource.kind: confluent_schema_registry_cluster.essentials.kind + owner.api_version: confluent_service_account.env-manager.api_version + owner.id: confluent_service_account.env-manager.id + owner.kind: confluent_service_account.env-manager.kind + - name: env-manager-cloud-api-key + manifest: |- + { + "description": "Cloud API Key that is owned by 'env-manager' service account", + "display_name": "env-manager-cloud-api-key", + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "owner": [ + { + "api_version": "${confluent_service_account.env-manager.api_version}", + "id": "${confluent_service_account.env-manager.id}", + "kind": "${confluent_service_account.env-manager.kind}" + } + ] + } + references: + owner.api_version: confluent_service_account.env-manager.api_version + owner.id: confluent_service_account.env-manager.id + owner.kind: confluent_service_account.env-manager.kind argumentDocs: api_version: '- (Required String) The API group and version of the owner that the API Key belongs to, for example, iam/v2.' description: '- (Optional String) A free-form description of the API Account.' @@ -30,10 +167,64 @@ resources: # Option #2: Cloud API Key $ terraform import confluent_api_key.example_cloud_api_key "4UEXOMMWIBE5KZQG" - confluent_business_metadata Resource - terraform-provider-confluent: + confluent_business_metadata: subCategory: "" - name: confluent_business_metadata Resource - terraform-provider-confluent + name: confluent_business_metadata title: confluent_business_metadata Resource - terraform-provider-confluent + examples: + - name: pii + manifest: |- + { + "attribute_definition": [ + { + "name": "team" + }, + { + "name": "email" + } + ], + "credentials": [ + { + "key": "\u003cSchema Registry API Key for confluent_schema_registry_cluster.essentials\u003e", + "secret": "\u003cSchema Registry API Secret for confluent_schema_registry_cluster.essentials\u003e" + } + ], + "description": "PII metadata", + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "name": "PII", + "rest_endpoint": "${confluent_schema_registry_cluster.essentials.rest_endpoint}", + "schema_registry_cluster": [ + { + "id": "${confluent_schema_registry_cluster.essentials.id}" + } + ] + } + references: + rest_endpoint: confluent_schema_registry_cluster.essentials.rest_endpoint + schema_registry_cluster.id: confluent_schema_registry_cluster.essentials.id + - name: pii + manifest: |- + { + "attribute_definition": [ + { + "name": "team" + }, + { + "name": "email" + } + ], + "description": "PII metadata", + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "name": "PII" + } argumentDocs: applicableEntityTypes: '- (Optional String) The entity types that the attribute is applicable, it always returns [\"cf_entity\"].' attribute_definition: '- (Optional List) The list of attribute definitions (see Business Metadata for more details):' @@ -57,10 +248,61 @@ resources: $ export IMPORT_SCHEMA_REGISTRY_API_SECRET="" $ export IMPORT_SCHEMA_REGISTRY_REST_ENDPOINT="" $ terraform import confluent_business_metadata.pii lsrc-8wrx70/PII - confluent_business_metadata_binding Resource - terraform-provider-confluent: + confluent_business_metadata_binding: subCategory: "" - name: confluent_business_metadata_binding Resource - terraform-provider-confluent + name: confluent_business_metadata_binding title: confluent_business_metadata_binding Resource - terraform-provider-confluent + examples: + - name: main + manifest: |- + { + "attributes": { + "email": "team@company.com", + "team": "teamName" + }, + "business_metadata_name": "${confluent_business_metadata.pii.name}", + "credentials": [ + { + "key": "\u003cSchema Registry API Key for confluent_schema_registry_cluster.essentials\u003e", + "secret": "\u003cSchema Registry API Secret for confluent_schema_registry_cluster.essentials\u003e" + } + ], + "entity_name": "${var.schema_registry_id}:${var.kafka_id}:${data.confluent_kafka_topic.main.topic_name}", + "entity_type": "kafka_topic", + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "rest_endpoint": "${confluent_schema_registry_cluster.essentials.rest_endpoint}", + "schema_registry_cluster": [ + { + "id": "${confluent_schema_registry_cluster.essentials.id}" + } + ] + } + references: + business_metadata_name: confluent_business_metadata.pii.name + rest_endpoint: confluent_schema_registry_cluster.essentials.rest_endpoint + schema_registry_cluster.id: confluent_schema_registry_cluster.essentials.id + - name: main + manifest: |- + { + "attributes": { + "email": "team@company.com", + "team": "teamName" + }, + "business_metadata_name": "${confluent_business_metadata.pii.name}", + "entity_name": "${var.schema_registry_id}:${var.kafka_id}:${data.confluent_kafka_topic.main.topic_name}", + "entity_type": "kafka_topic", + "lifecycle": [ + { + "prevent_destroy": true + } + ] + } + references: + business_metadata_name: confluent_business_metadata.pii.name argumentDocs: attributes: '- (Optional Map) The block of key-value pair attributes.' business_metadata_name: '- (Required String) The name of the Business Metadata to be applied, for example, PII. The name must not be empty and consist of a letter followed by a sequence of letter, number, space, or _ characters.' @@ -78,10 +320,31 @@ resources: $ export IMPORT_SCHEMA_REGISTRY_API_SECRET="" $ export IMPORT_SCHEMA_REGISTRY_REST_ENDPOINT="" $ terraform import confluent_business_metadata_binding.main lsrc-8wrx70/PII/lsrc-8wrx70:.:100001/sr_schema - confluent_byok_key Resource - terraform-provider-confluent: + confluent_byok_key: subCategory: "" - name: confluent_byok_key Resource - terraform-provider-confluent + name: confluent_byok_key title: confluent_byok_key Resource - terraform-provider-confluent + examples: + - name: aws_key + manifest: |- + { + "aws": [ + { + "key_arn": "arn:aws:kms:us-west-2:111111111111:key/11111111-1111-1111-1111-111111111111" + } + ] + } + - name: azure_key + manifest: |- + { + "azure": [ + { + "key_identifier": "https://test-vault.vault.azure.net/keys/test-key", + "key_vault_id": "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/test-vault/providers/Microsoft.KeyVault/vaults/test-vault", + "tenant_id": "11111111-1111-1111-1111-111111111111" + } + ] + } argumentDocs: application_id: '- (Optional String) The Application ID created for this key-environment combination.' aws: '(Optional Configuration Block) supports the following:' @@ -97,10 +360,99 @@ resources: $ export CONFLUENT_CLOUD_API_KEY="" $ export CONFLUENT_CLOUD_API_SECRET="" $ terraform import confluent_byok_key.aws_key cck-abcde - confluent_cluster_link Resource - terraform-provider-confluent: + confluent_cluster_link: subCategory: "" - name: confluent_cluster_link Resource - terraform-provider-confluent + name: confluent_cluster_link title: confluent_cluster_link Resource - terraform-provider-confluent + examples: + - name: east-to-west + manifest: |- + { + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "link_mode": "BIDIRECTIONAL", + "link_name": "bidirectional-link", + "local_kafka_cluster": [ + { + "credentials": [ + { + "key": "${confluent_api_key.app-manager-east-cluster-api-key.id}", + "secret": "${confluent_api_key.app-manager-east-cluster-api-key.secret}" + } + ], + "id": "${data.confluent_kafka_cluster.east.id}", + "rest_endpoint": "${data.confluent_kafka_cluster.east.rest_endpoint}" + } + ], + "remote_kafka_cluster": [ + { + "bootstrap_endpoint": "${data.confluent_kafka_cluster.west.bootstrap_endpoint}", + "credentials": [ + { + "key": "${confluent_api_key.app-manager-west-cluster-api-key.id}", + "secret": "${confluent_api_key.app-manager-west-cluster-api-key.secret}" + } + ], + "id": "${data.confluent_kafka_cluster.west.id}" + } + ] + } + references: + local_kafka_cluster.credentials.key: confluent_api_key.app-manager-east-cluster-api-key.id + local_kafka_cluster.credentials.secret: confluent_api_key.app-manager-east-cluster-api-key.secret + local_kafka_cluster.id: data.confluent_kafka_cluster.east.id + local_kafka_cluster.rest_endpoint: data.confluent_kafka_cluster.east.rest_endpoint + remote_kafka_cluster.bootstrap_endpoint: data.confluent_kafka_cluster.west.bootstrap_endpoint + remote_kafka_cluster.credentials.key: confluent_api_key.app-manager-west-cluster-api-key.id + remote_kafka_cluster.credentials.secret: confluent_api_key.app-manager-west-cluster-api-key.secret + remote_kafka_cluster.id: data.confluent_kafka_cluster.west.id + - name: west-to-east + manifest: |- + { + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "link_mode": "BIDIRECTIONAL", + "link_name": "bidirectional-link", + "local_kafka_cluster": [ + { + "credentials": [ + { + "key": "${confluent_api_key.app-manager-west-cluster-api-key.id}", + "secret": "${confluent_api_key.app-manager-west-cluster-api-key.secret}" + } + ], + "id": "${data.confluent_kafka_cluster.west.id}", + "rest_endpoint": "${data.confluent_kafka_cluster.west.rest_endpoint}" + } + ], + "remote_kafka_cluster": [ + { + "bootstrap_endpoint": "${data.confluent_kafka_cluster.east.bootstrap_endpoint}", + "credentials": [ + { + "key": "${confluent_api_key.app-manager-east-cluster-api-key.id}", + "secret": "${confluent_api_key.app-manager-east-cluster-api-key.secret}" + } + ], + "id": "${data.confluent_kafka_cluster.east.id}" + } + ] + } + references: + local_kafka_cluster.credentials.key: confluent_api_key.app-manager-west-cluster-api-key.id + local_kafka_cluster.credentials.secret: confluent_api_key.app-manager-west-cluster-api-key.secret + local_kafka_cluster.id: data.confluent_kafka_cluster.west.id + local_kafka_cluster.rest_endpoint: data.confluent_kafka_cluster.west.rest_endpoint + remote_kafka_cluster.bootstrap_endpoint: data.confluent_kafka_cluster.east.bootstrap_endpoint + remote_kafka_cluster.credentials.key: confluent_api_key.app-manager-east-cluster-api-key.id + remote_kafka_cluster.credentials.secret: confluent_api_key.app-manager-east-cluster-api-key.secret + remote_kafka_cluster.id: data.confluent_kafka_cluster.east.id argumentDocs: bootstrap_endpoint: '- (Optional String) The bootstrap endpoint of the source Kafka cluster, for example, SASL_SSL://pkc-00000.us-central1.gcp.confluent.cloud:9092 or pkc-00000.us-central1.gcp.confluent.cloud:9092).' config: '- (Optional Map) The custom cluster link settings to set:' @@ -137,10 +489,180 @@ resources: $ export IMPORT_REMOTE_KAFKA_API_KEY="" $ export IMPORT_REMOTE_KAFKA_API_SECRET="" $ terraform import confluent_cluster_link.my_cluster_link my-cluster-link/BIDIRECTIONAL/OUTBOUND/lkc-abc123/lkc-xyz456 - confluent_connector Resource - terraform-provider-confluent: + confluent_connector: subCategory: "" - name: confluent_connector Resource - terraform-provider-confluent + name: confluent_connector title: confluent_connector Resource - terraform-provider-confluent + examples: + - name: source + manifest: |- + { + "config_nonsensitive": { + "connector.class": "DatagenSource", + "kafka.auth.mode": "SERVICE_ACCOUNT", + "kafka.service.account.id": "${confluent_service_account.app-connector.id}", + "kafka.topic": "${confluent_kafka_topic.orders.topic_name}", + "name": "DatagenSourceConnector_0", + "output.data.format": "JSON", + "quickstart": "ORDERS", + "tasks.max": "1" + }, + "config_sensitive": {}, + "depends_on": [ + "${confluent_kafka_acl.app-connector-describe-on-cluster}", + "${confluent_kafka_acl.app-connector-write-on-target-topic}", + "${confluent_kafka_acl.app-connector-create-on-data-preview-topics}", + "${confluent_kafka_acl.app-connector-write-on-data-preview-topics}" + ], + "environment": [ + { + "id": "${confluent_environment.staging.id}" + } + ], + "kafka_cluster": [ + { + "id": "${confluent_kafka_cluster.basic.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ] + } + references: + environment.id: confluent_environment.staging.id + kafka_cluster.id: confluent_kafka_cluster.basic.id + - name: sink + manifest: |- + { + "config_nonsensitive": { + "connector.class": "S3_SINK", + "flush.size": "1000", + "input.data.format": "JSON", + "kafka.auth.mode": "SERVICE_ACCOUNT", + "kafka.service.account.id": "${confluent_service_account.app-connector.id}", + "name": "S3_SINKConnector_0", + "output.data.format": "JSON", + "s3.bucket.name": "\u003cs3-bucket-name\u003e", + "tasks.max": "1", + "time.interval": "DAILY", + "topics": "${confluent_kafka_topic.orders.topic_name}" + }, + "config_sensitive": { + "aws.access.key.id": "***REDACTED***", + "aws.secret.access.key": "***REDACTED***" + }, + "depends_on": [ + "${confluent_kafka_acl.app-connector-describe-on-cluster}", + "${confluent_kafka_acl.app-connector-read-on-target-topic}", + "${confluent_kafka_acl.app-connector-create-on-dlq-lcc-topics}", + "${confluent_kafka_acl.app-connector-write-on-dlq-lcc-topics}", + "${confluent_kafka_acl.app-connector-create-on-success-lcc-topics}", + "${confluent_kafka_acl.app-connector-write-on-success-lcc-topics}", + "${confluent_kafka_acl.app-connector-create-on-error-lcc-topics}", + "${confluent_kafka_acl.app-connector-write-on-error-lcc-topics}", + "${confluent_kafka_acl.app-connector-read-on-connect-lcc-group}" + ], + "environment": [ + { + "id": "${confluent_environment.staging.id}" + } + ], + "kafka_cluster": [ + { + "id": "${confluent_kafka_cluster.basic.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ] + } + references: + environment.id: confluent_environment.staging.id + kafka_cluster.id: confluent_kafka_cluster.basic.id + - name: sink + manifest: |- + { + "config_nonsensitive": { + "aws.dynamodb.pk.hash": "value.userid", + "aws.dynamodb.pk.sort": "value.pageid", + "connector.class": "DynamoDbSink", + "input.data.format": "JSON", + "kafka.auth.mode": "SERVICE_ACCOUNT", + "kafka.service.account.id": "${confluent_service_account.app-connector.id}", + "name": "DynamoDbSinkConnector_0", + "tasks.max": "1", + "topics": "${confluent_kafka_topic.orders.topic_name}" + }, + "config_sensitive": { + "aws.access.key.id": "***REDACTED***", + "aws.secret.access.key": "***REDACTED***" + }, + "depends_on": [ + "${confluent_kafka_acl.app-connector-describe-on-cluster}", + "${confluent_kafka_acl.app-connector-read-on-target-topic}", + "${confluent_kafka_acl.app-connector-create-on-dlq-lcc-topics}", + "${confluent_kafka_acl.app-connector-write-on-dlq-lcc-topics}", + "${confluent_kafka_acl.app-connector-create-on-success-lcc-topics}", + "${confluent_kafka_acl.app-connector-write-on-success-lcc-topics}", + "${confluent_kafka_acl.app-connector-create-on-error-lcc-topics}", + "${confluent_kafka_acl.app-connector-write-on-error-lcc-topics}", + "${confluent_kafka_acl.app-connector-read-on-connect-lcc-group}" + ], + "environment": [ + { + "id": "${confluent_environment.staging.id}" + } + ], + "kafka_cluster": [ + { + "id": "${confluent_kafka_cluster.basic.id}" + } + ] + } + references: + environment.id: confluent_environment.staging.id + kafka_cluster.id: confluent_kafka_cluster.basic.id + - name: source + manifest: |- + { + "config_nonsensitive": { + "confluent.connector.type": "CUSTOM", + "confluent.custom.plugin.id": "${confluent_custom_connector_plugin.source.id}", + "connector.class": "${confluent_custom_connector_plugin.source.connector_class}", + "kafka.auth.mode": "KAFKA_API_KEY", + "kafka.topic": "${confluent_kafka_topic.orders.topic_name}", + "max.interval": "2000", + "min.interval": "1000", + "name": "DatagenConnectorExampleName", + "output.data.format": "JSON", + "quickstart": "ORDERS", + "tasks.max": "1" + }, + "config_sensitive": { + "kafka.api.key": "***REDACTED***", + "kafka.api.secret": "***REDACTED***" + }, + "depends_on": [ + "${confluent_role_binding.app-manager-kafka-cluster-admin}" + ], + "environment": [ + { + "id": "${confluent_environment.staging.id}" + } + ], + "kafka_cluster": [ + { + "id": "${confluent_kafka_cluster.basic.id}" + } + ] + } + references: + environment.id: confluent_environment.staging.id + kafka_cluster.id: confluent_kafka_cluster.basic.id argumentDocs: config_nonsensitive: '- (Required Map) Block for custom nonsensitive configuration properties that are not labelled with "Type: password" under "Configuration Properties" section in the docs:' config_sensitive: '- (Required Map) Block for custom sensitive configuration properties that are labelled with "Type: password" under "Configuration Properties" section in the docs:' @@ -155,10 +677,21 @@ resources: $ export CONFLUENT_CLOUD_API_KEY="" $ export CONFLUENT_CLOUD_API_SECRET="" $ terraform import confluent_connector.my_connector "env-abc123/lkc-abc123/S3_SINKConnector_0" - confluent_custom_connector_plugin Resource - terraform-provider-confluent: + confluent_custom_connector_plugin: subCategory: "" - name: confluent_custom_connector_plugin Resource - terraform-provider-confluent + name: confluent_custom_connector_plugin title: confluent_custom_connector_plugin Resource - terraform-provider-confluent + examples: + - name: source + manifest: |- + { + "connector_class": "io.confluent.kafka.connect.datagen.DatagenConnector", + "connector_type": "SOURCE", + "display_name": "Datagen Source Connector Plugin", + "documentation_link": "https://www.confluent.io/hub/confluentinc/kafka-connect-datagen", + "filename": "confluentinc-kafka-connect-datagen-0.6.2.zip", + "sensitive_config_properties": [] + } argumentDocs: connector_class: '- (Required String) The Java class or alias for the connector. You can get the connector class from the connector documentation provided by the developer.' connector_type: '- (Required String) The type of the Custom Connector Plugin. Accepted values are: SOURCE, SINK.' @@ -173,10 +706,21 @@ resources: $ export CONFLUENT_CLOUD_API_KEY="" $ export CONFLUENT_CLOUD_API_SECRET="" $ terraform import confluent_custom_connector_plugin.main ccp-abc123xyz - confluent_environment Resource - terraform-provider-confluent: + confluent_environment: subCategory: "" - name: confluent_environment Resource - terraform-provider-confluent + name: confluent_environment title: confluent_environment Resource - terraform-provider-confluent + examples: + - name: prod + manifest: |- + { + "display_name": "Production", + "lifecycle": [ + { + "prevent_destroy": true + } + ] + } argumentDocs: display_name: '- (Required String) A human-readable name for the Environment. Start and end the name with alphanumeric characters, for example, "Development". The name can contain hyphens and underscores.' id: '- (Required String) The ID of the Environment, for example, env-abc123.' @@ -186,10 +730,31 @@ resources: $ export CONFLUENT_CLOUD_API_KEY="" $ export CONFLUENT_CLOUD_API_SECRET="" $ terraform import confluent_environment.my_env env-abc123 - confluent_flink_compute_pool Resource - terraform-provider-confluent: + confluent_flink_compute_pool: subCategory: "" - name: confluent_flink_compute_pool Resource - terraform-provider-confluent + name: confluent_flink_compute_pool title: confluent_flink_compute_pool Resource - terraform-provider-confluent + examples: + - name: main + manifest: |- + { + "cloud": "AWS", + "display_name": "standard_compute_pool", + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "max_cfu": 5, + "region": "us-east-1" + } + references: + environment.id: confluent_environment.development.id + dependencies: + confluent_environment.development: |- + { + "display_name": "Development" + } argumentDocs: api_version: '- (Required String) The API Version of the schema version of the Flink Compute Pool, for example, fcpm/v2.' cloud: '- (Required String) The cloud service provider that runs the Flink Compute Pool.' @@ -207,10 +772,57 @@ resources: $ export CONFLUENT_CLOUD_API_KEY="" $ export CONFLUENT_CLOUD_API_SECRET="" $ terraform import confluent_flink_compute_pool.main env-abc123/lfcp-abc123 - confluent_identity_pool Resource - terraform-provider-confluent: + confluent_identity_pool: subCategory: "" - name: confluent_identity_pool Resource - terraform-provider-confluent + name: confluent_identity_pool title: confluent_identity_pool Resource - terraform-provider-confluent + examples: + - name: example + manifest: |- + { + "description": "Prod Access to Kafka clusters to Release Engineering", + "display_name": "My Identity Pool", + "filter": "claims.aud==\"confluent\" \u0026\u0026 claims.group!=\"invalid_group\"", + "identity_claim": "claims.sub", + "identity_provider": [ + { + "id": "${confluent_identity_provider.azure.id}" + } + ] + } + references: + identity_provider.id: confluent_identity_provider.azure.id + dependencies: + confluent_identity_provider.azure: |- + { + "description": "My description", + "display_name": "My OIDC Provider: Azure AD", + "issuer": "https://login.microsoftonline.com/{tenant_id}/v2.0", + "jwks_uri": "https://login.microsoftonline.com/common/discovery/v2.0/keys" + } + - name: example + manifest: |- + { + "description": "Prod Access to Kafka clusters to Release Engineering", + "display_name": "My Identity Pool", + "filter": "claims.aud==\"confluent\" \u0026\u0026 claims.group!=\"invalid_group\"", + "identity_claim": "claims.sub", + "identity_provider": [ + { + "id": "${confluent_identity_provider.okta.id}" + } + ] + } + references: + identity_provider.id: confluent_identity_provider.okta.id + dependencies: + confluent_identity_provider.okta: |- + { + "description": "My description", + "display_name": "My OIDC Provider: Okta", + "issuer": "https://mycompany.okta.com/oauth2/default", + "jwks_uri": "https://mycompany.okta.com/oauth2/default/v1/keys" + } argumentDocs: description: '- (Required String) A description for the Identity Pool.' display_name: '- (Required String) A human-readable name for the Identity Pool.' @@ -223,10 +835,27 @@ resources: $ export CONFLUENT_CLOUD_API_KEY="" $ export CONFLUENT_CLOUD_API_SECRET="" $ terraform import confluent_identity_pool.example op-abc123/pool-xyz456 - confluent_identity_provider Resource - terraform-provider-confluent: + confluent_identity_provider: subCategory: "" - name: confluent_identity_provider Resource - terraform-provider-confluent + name: confluent_identity_provider title: confluent_identity_provider Resource - terraform-provider-confluent + examples: + - name: azure + manifest: |- + { + "description": "My description", + "display_name": "My OIDC Provider: Azure AD", + "issuer": "https://login.microsoftonline.com/{tenant_id}/v2.0", + "jwks_uri": "https://login.microsoftonline.com/common/discovery/v2.0/keys" + } + - name: okta + manifest: |- + { + "description": "My description", + "display_name": "My OIDC Provider: Okta", + "issuer": "https://mycompany.okta.com/oauth2/default", + "jwks_uri": "https://mycompany.okta.com/oauth2/default/v1/keys" + } argumentDocs: description: '- (Required String) A description for the Identity Provider.' display_name: '- (Required String) A human-readable name for the Identity Provider.' @@ -238,10 +867,22 @@ resources: $ export CONFLUENT_CLOUD_API_KEY="" $ export CONFLUENT_CLOUD_API_SECRET="" $ terraform import confluent_identity_provider.example op-abc123 - confluent_invitation Resource - terraform-provider-confluent: + confluent_invitation: subCategory: "" - name: confluent_invitation Resource - terraform-provider-confluent + name: confluent_invitation title: confluent_invitation Resource - terraform-provider-confluent + examples: + - name: main + manifest: |- + { + "email": "" + } + - name: main2 + manifest: |- + { + "auth_type": "AUTH_TYPE_LOCAL", + "email": "" + } argumentDocs: accepted_at: '- (Optional String) The timestamp that the invitation was accepted.' auth_type: '- (Optional String) Accepted values are: AUTH_TYPE_LOCAL and AUTH_TYPE_SSO. The user/invitee''s authentication type. Note that only the OrganizationAdmin role can invite AUTH_TYPE_LOCAL users to SSO organizations. The user''s auth_type is set as AUTH_TYPE_SSO by default if the organization has SSO enabled. Otherwise, the user''s auth_type is AUTH_TYPE_LOCAL by default.' @@ -256,10 +897,60 @@ resources: $ export CONFLUENT_CLOUD_API_KEY="" $ export CONFLUENT_CLOUD_API_SECRET="" $ terraform import confluent_invitation.main i-gxxn1 - confluent_kafka_acl Resource - terraform-provider-confluent: + confluent_kafka_acl: subCategory: "" - name: confluent_kafka_acl Resource - terraform-provider-confluent + name: confluent_kafka_acl title: confluent_kafka_acl Resource - terraform-provider-confluent + examples: + - name: describe-basic-cluster + manifest: |- + { + "credentials": [ + { + "key": "${confluent_api_key.app-manager-kafka-api-key.id}", + "secret": "${confluent_api_key.app-manager-kafka-api-key.secret}" + } + ], + "host": "*", + "kafka_cluster": [ + { + "id": "${confluent_kafka_cluster.basic-cluster.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "operation": "DESCRIBE", + "pattern_type": "LITERAL", + "permission": "ALLOW", + "principal": "User:sa-xyz123", + "resource_name": "kafka-cluster", + "resource_type": "CLUSTER", + "rest_endpoint": "${confluent_kafka_cluster.basic-cluster.rest_endpoint}" + } + references: + credentials.key: confluent_api_key.app-manager-kafka-api-key.id + credentials.secret: confluent_api_key.app-manager-kafka-api-key.secret + kafka_cluster.id: confluent_kafka_cluster.basic-cluster.id + rest_endpoint: confluent_kafka_cluster.basic-cluster.rest_endpoint + - name: describe-basic-cluster + manifest: |- + { + "host": "*", + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "operation": "DESCRIBE", + "pattern_type": "LITERAL", + "permission": "ALLOW", + "principal": "User:sa-xyz123", + "resource_name": "kafka-cluster", + "resource_type": "CLUSTER" + } argumentDocs: credentials: '(Optional Configuration Block) supports the following:' host: '- (Required String) The host for the ACL. Should be set to * for Confluent Cloud.' @@ -286,10 +977,45 @@ resources: $ export CONFLUENT_CLOUD_API_KEY="" $ export CONFLUENT_CLOUD_API_SECRET="" $ terraform import confluent_kafka_acl.describe-cluster "lkc-12345/CLUSTER#kafka-cluster#LITERAL#User:sa-xyz123#*#DESCRIBE#ALLOW" - confluent_kafka_client_quota Resource - terraform-provider-confluent: + confluent_kafka_client_quota: subCategory: "" - name: confluent_kafka_client_quota Resource - terraform-provider-confluent + name: confluent_kafka_client_quota title: confluent_kafka_client_quota Resource - terraform-provider-confluent + examples: + - name: example + manifest: |- + { + "description": "Test Quota", + "display_name": "test-quota", + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "kafka_cluster": [ + { + "id": "${confluent_kafka_cluster.dedicated.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "principals": [ + "${confluent_service_account.app_manager.id}", + "${confluent_service_account.app_manager_2.id}" + ], + "throughput": [ + { + "egress_byte_rate": "200", + "ingress_byte_rate": "100" + } + ] + } + references: + environment.id: confluent_environment.development.id + kafka_cluster.id: confluent_kafka_cluster.dedicated.id argumentDocs: description: '- (Optional String) The description of the Kafka Client Quota.' display_name: '- (Required String) The name of the Kafka Client Quota.' @@ -305,10 +1031,299 @@ resources: $ export CONFLUENT_CLOUD_API_KEY="" $ export CONFLUENT_CLOUD_API_SECRET="" $ terraform import confluent_kafka_client_quota.example cq-abc123 - confluent_kafka_cluster Resource - terraform-provider-confluent: + confluent_kafka_cluster: subCategory: "" - name: confluent_kafka_cluster Resource - terraform-provider-confluent + name: confluent_kafka_cluster title: confluent_kafka_cluster Resource - terraform-provider-confluent + examples: + - name: basic + manifest: |- + { + "availability": "SINGLE_ZONE", + "basic": [ + {} + ], + "cloud": "AWS", + "display_name": "basic_kafka_cluster", + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "region": "us-east-2" + } + references: + environment.id: confluent_environment.development.id + dependencies: + confluent_environment.development: |- + { + "display_name": "Development", + "lifecycle": [ + { + "prevent_destroy": true + } + ] + } + - name: standard + manifest: |- + { + "availability": "SINGLE_ZONE", + "cloud": "AWS", + "display_name": "standard_kafka_cluster", + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "region": "us-east-2", + "standard": [ + {} + ] + } + references: + environment.id: confluent_environment.development.id + dependencies: + confluent_environment.development: |- + { + "display_name": "Development", + "lifecycle": [ + { + "prevent_destroy": true + } + ] + } + - name: dedicated + manifest: |- + { + "availability": "MULTI_ZONE", + "cloud": "AWS", + "dedicated": [ + { + "cku": 2 + } + ], + "display_name": "dedicated_kafka_cluster", + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "region": "us-east-2" + } + references: + environment.id: confluent_environment.development.id + dependencies: + confluent_environment.development: |- + { + "display_name": "Development", + "lifecycle": [ + { + "prevent_destroy": true + } + ] + } + - name: basic + manifest: |- + { + "availability": "SINGLE_ZONE", + "basic": [ + {} + ], + "cloud": "AZURE", + "display_name": "basic_kafka_cluster", + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "region": "centralus" + } + references: + environment.id: confluent_environment.development.id + dependencies: + confluent_environment.development: |- + { + "display_name": "Development", + "lifecycle": [ + { + "prevent_destroy": true + } + ] + } + - name: standard + manifest: |- + { + "availability": "SINGLE_ZONE", + "cloud": "AZURE", + "display_name": "standard_kafka_cluster", + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "region": "centralus", + "standard": [ + {} + ] + } + references: + environment.id: confluent_environment.development.id + dependencies: + confluent_environment.development: |- + { + "display_name": "Development", + "lifecycle": [ + { + "prevent_destroy": true + } + ] + } + - name: dedicated + manifest: |- + { + "availability": "MULTI_ZONE", + "cloud": "AZURE", + "dedicated": [ + { + "cku": 2 + } + ], + "display_name": "dedicated_kafka_cluster", + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "region": "centralus" + } + references: + environment.id: confluent_environment.development.id + dependencies: + confluent_environment.development: |- + { + "display_name": "Development", + "lifecycle": [ + { + "prevent_destroy": true + } + ] + } + - name: basic + manifest: |- + { + "availability": "SINGLE_ZONE", + "basic": [ + {} + ], + "cloud": "GCP", + "display_name": "basic_kafka_cluster", + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "region": "us-central1" + } + references: + environment.id: confluent_environment.development.id + dependencies: + confluent_environment.development: |- + { + "display_name": "Development" + } + - name: standard + manifest: |- + { + "availability": "SINGLE_ZONE", + "cloud": "GCP", + "display_name": "standard_kafka_cluster", + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "region": "us-central1", + "standard": [ + {} + ] + } + references: + environment.id: confluent_environment.development.id + dependencies: + confluent_environment.development: |- + { + "display_name": "Development" + } + - name: dedicated + manifest: |- + { + "availability": "MULTI_ZONE", + "cloud": "GCP", + "dedicated": [ + { + "cku": 2 + } + ], + "display_name": "dedicated_kafka_cluster", + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "region": "us-central1" + } + references: + environment.id: confluent_environment.development.id + dependencies: + confluent_environment.development: |- + { + "display_name": "Development" + } argumentDocs: api_version: '- (Required String) An API Version of the schema version of the Kafka cluster, for example, cmk/v2.' availability: '- (Required String) The availability zone configuration of the Kafka cluster. Accepted values are: SINGLE_ZONE and MULTI_ZONE.' @@ -338,10 +1353,44 @@ resources: $ export CONFLUENT_CLOUD_API_KEY="" $ export CONFLUENT_CLOUD_API_SECRET="" $ terraform import confluent_kafka_cluster.my_kafka env-abc123/lkc-abc123 - confluent_kafka_cluster_config Resource - terraform-provider-confluent: + confluent_kafka_cluster_config: subCategory: "" - name: confluent_kafka_cluster_config Resource - terraform-provider-confluent + name: confluent_kafka_cluster_config title: confluent_kafka_cluster_config Resource - terraform-provider-confluent + examples: + - name: orders + manifest: |- + { + "config": { + "auto.create.topics.enable": "true", + "log.retention.ms": "604800123" + }, + "credentials": [ + { + "key": "${confluent_api_key.app-manager-kafka-api-key.id}", + "secret": "${confluent_api_key.app-manager-kafka-api-key.secret}" + } + ], + "kafka_cluster": [ + { + "id": "${confluent_kafka_cluster.dedicated.id}" + } + ], + "rest_endpoint": "${confluent_kafka_cluster.dedicated.rest_endpoint}" + } + references: + credentials.key: confluent_api_key.app-manager-kafka-api-key.id + credentials.secret: confluent_api_key.app-manager-kafka-api-key.secret + kafka_cluster.id: confluent_kafka_cluster.dedicated.id + rest_endpoint: confluent_kafka_cluster.dedicated.rest_endpoint + - name: orders + manifest: |- + { + "config": { + "auto.create.topics.enable": "true", + "log.retention.ms": "604800123" + } + } argumentDocs: credentials: '(Optional Configuration Block) supports the following:' credentials.config: '- (Optional Map) The custom cluster settings to set:' @@ -362,10 +1411,48 @@ resources: # Option #2: Manage a single Kafka cluster in the same Terraform workspace $ terraform import confluent_kafka_cluster_config.test lkc-abc123 - confluent_kafka_mirror_topic Resource - terraform-provider-confluent: + confluent_kafka_mirror_topic: subCategory: "" - name: confluent_kafka_mirror_topic Resource - terraform-provider-confluent + name: confluent_kafka_mirror_topic title: confluent_kafka_mirror_topic Resource - terraform-provider-confluent + examples: + - name: example + manifest: |- + { + "cluster_link": [ + { + "link_name": "${confluent_cluster_link.source-outbound.link_name}" + } + ], + "kafka_cluster": [ + { + "credentials": [ + { + "key": "${confluent_api_key.app-manager-destination-cluster-api-key.id}", + "secret": "${confluent_api_key.app-manager-destination-cluster-api-key.secret}" + } + ], + "id": "${data.confluent_kafka_cluster.destination.id}", + "rest_endpoint": "${data.confluent_kafka_cluster.destination.rest_endpoint}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "source_kafka_topic": [ + { + "topic_name": "orders" + } + ] + } + references: + cluster_link.link_name: confluent_cluster_link.source-outbound.link_name + kafka_cluster.credentials.key: confluent_api_key.app-manager-destination-cluster-api-key.id + kafka_cluster.credentials.secret: confluent_api_key.app-manager-destination-cluster-api-key.secret + kafka_cluster.id: data.confluent_kafka_cluster.destination.id + kafka_cluster.rest_endpoint: data.confluent_kafka_cluster.destination.rest_endpoint argumentDocs: cluster_link: '- (Required Configuration Block) supports the following:' credentials: '(Optional Configuration Block) supports the following:' @@ -385,10 +1472,48 @@ resources: $ export IMPORT_KAFKA_API_SECRET="" $ export IMPORT_KAFKA_REST_ENDPOINT="" $ terraform import confluent_kafka_mirror_topic.my_mirror_topic lkc-abc123/my-cluster-link/orders-123 - confluent_kafka_topic Resource - terraform-provider-confluent: + confluent_kafka_topic: subCategory: "" - name: confluent_kafka_topic Resource - terraform-provider-confluent + name: confluent_kafka_topic title: confluent_kafka_topic Resource - terraform-provider-confluent + examples: + - name: orders + manifest: |- + { + "credentials": [ + { + "key": "${confluent_api_key.app-manager-kafka-api-key.id}", + "secret": "${confluent_api_key.app-manager-kafka-api-key.secret}" + } + ], + "kafka_cluster": [ + { + "id": "${confluent_kafka_cluster.basic-cluster.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "rest_endpoint": "${confluent_kafka_cluster.basic-cluster.rest_endpoint}", + "topic_name": "orders" + } + references: + credentials.key: confluent_api_key.app-manager-kafka-api-key.id + credentials.secret: confluent_api_key.app-manager-kafka-api-key.secret + kafka_cluster.id: confluent_kafka_cluster.basic-cluster.id + rest_endpoint: confluent_kafka_cluster.basic-cluster.rest_endpoint + - name: orders + manifest: |- + { + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "topic_name": "orders" + } argumentDocs: credentials: '(Optional Configuration Block) supports the following:' credentials.config: '- (Optional Map) The custom topic settings to set:' @@ -411,10 +1536,127 @@ resources: # Option #2: Manage a single Kafka cluster in the same Terraform workspace $ terraform import confluent_kafka_topic.my_topic lkc-abc123/orders-123 - confluent_ksql_cluster Resource - terraform-provider-confluent: + confluent_ksql_cluster: subCategory: "" - name: confluent_ksql_cluster Resource - terraform-provider-confluent + name: confluent_ksql_cluster title: confluent_ksql_cluster Resource - terraform-provider-confluent + examples: + - name: example + manifest: |- + { + "credential_identity": [ + { + "id": "${confluent_service_account.app-ksql.id}" + } + ], + "csu": 1, + "depends_on": [ + "${confluent_role_binding.app-ksql-kafka-cluster-admin}", + "${confluent_role_binding.app-ksql-schema-registry-resource-owner}", + "${confluent_schema_registry_cluster.essentials}" + ], + "display_name": "example", + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "kafka_cluster": [ + { + "id": "${confluent_kafka_cluster.basic.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ] + } + references: + credential_identity.id: confluent_service_account.app-ksql.id + environment.id: confluent_environment.development.id + kafka_cluster.id: confluent_kafka_cluster.basic.id + dependencies: + confluent_environment.development: |- + { + "display_name": "Development", + "lifecycle": [ + { + "prevent_destroy": true + } + ] + } + confluent_kafka_cluster.basic: |- + { + "availability": "SINGLE_ZONE", + "basic": [ + {} + ], + "cloud": "AWS", + "display_name": "basic_kafka_cluster", + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "region": "us-east-1" + } + confluent_role_binding.app-ksql-kafka-cluster-admin: |- + { + "crn_pattern": "${confluent_kafka_cluster.basic.rbac_crn}", + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "principal": "User:${confluent_service_account.app-ksql.id}", + "role_name": "CloudClusterAdmin" + } + confluent_role_binding.app-ksql-schema-registry-resource-owner: |- + { + "crn_pattern": "${format(\"%s/%s\", confluent_schema_registry_cluster.essentials.resource_name, \"subject=*\")}", + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "principal": "User:${confluent_service_account.app-ksql.id}", + "role_name": "ResourceOwner" + } + confluent_schema_registry_cluster.essentials: |- + { + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "package": "ESSENTIALS", + "region": [ + { + "id": "sgreg-1" + } + ] + } + confluent_service_account.app-ksql: |- + { + "description": "Service account to manage 'example' ksqlDB cluster", + "display_name": "app-ksql", + "lifecycle": [ + { + "prevent_destroy": true + } + ] + } argumentDocs: api_version: '- (Required String) An API Version of the schema version of the ksqlDB cluster, for example, ksqldbcm/v2.' credential_identity: '(Required Configuration Block) supports the following:' @@ -434,10 +1676,146 @@ resources: $ export CONFLUENT_CLOUD_API_KEY="" $ export CONFLUENT_CLOUD_API_SECRET="" $ terraform import confluent_ksql_cluster.example env-abc123/lksqlc-abc123 - confluent_network Resource - terraform-provider-confluent: + confluent_network: subCategory: "" - name: confluent_network Resource - terraform-provider-confluent + name: confluent_network title: confluent_network Resource - terraform-provider-confluent + examples: + - name: aws-private-link + manifest: |- + { + "cloud": "AWS", + "connection_types": [ + "PRIVATELINK" + ], + "display_name": "AWS Private Link Network", + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "region": "us-east-1", + "zones": [ + "use1-az1", + "use1-az2", + "use1-az6" + ] + } + references: + environment.id: confluent_environment.development.id + dependencies: + confluent_environment.development: |- + { + "display_name": "Development" + } + - name: azure-peering + manifest: |- + { + "cidr": "10.10.0.0/16", + "cloud": "AZURE", + "connection_types": [ + "PEERING" + ], + "display_name": "Azure Peering Network", + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "region": "eastus2" + } + references: + environment.id: confluent_environment.development.id + dependencies: + confluent_environment.development: |- + { + "display_name": "Development", + "lifecycle": [ + { + "prevent_destroy": true + } + ] + } + - name: gcp-private-service-connect + manifest: |- + { + "cloud": "GCP", + "connection_types": [ + "PRIVATELINK" + ], + "display_name": "GCP Private Service Connect Network", + "dns_config": [ + { + "resolution": "PRIVATE" + } + ], + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "region": "us-central1", + "zones": [ + "us-central1-a", + "us-central1-b", + "us-central1-c" + ] + } + references: + environment.id: confluent_environment.development.id + dependencies: + confluent_environment.development: |- + { + "display_name": "Development", + "lifecycle": [ + { + "prevent_destroy": true + } + ] + } + - name: aws-transit-gateway-attachment + manifest: |- + { + "cidr": "10.10.0.0/16", + "cloud": "AWS", + "connection_types": [ + "TRANSITGATEWAY" + ], + "display_name": "AWS Transit Gateway Attachment Network", + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "region": "us-east-1" + } + references: + environment.id: confluent_environment.development.id + dependencies: + confluent_environment.development: |- + { + "display_name": "Development", + "lifecycle": [ + { + "prevent_destroy": true + } + ] + } argumentDocs: account: '- (Required String) The AWS account ID associated with the Confluent Cloud VPC.' aws: '- (Optional Configuration Block) The AWS-specific network details if available. It supports the following:' @@ -480,10 +1858,32 @@ resources: $ export CONFLUENT_CLOUD_API_KEY="" $ export CONFLUENT_CLOUD_API_SECRET="" $ terraform import confluent_network.my_network env-abc123/n-abc123 - confluent_network_link_endpoint Resource - terraform-provider-confluent: + confluent_network_link_endpoint: subCategory: "" - name: confluent_network_link_endpoint Resource - terraform-provider-confluent + name: confluent_network_link_endpoint title: confluent_network_link_endpoint Resource - terraform-provider-confluent + examples: + - name: nle + manifest: |- + { + "description": "TEST-NLE1", + "display_name": "nle1", + "environment": [ + { + "id": "env-xyz456" + } + ], + "network": [ + { + "id": "n-abc123" + } + ], + "network_link_service": [ + { + "id": "nls-g3e1ox" + } + ] + } argumentDocs: description: '- (Optional String) The description of the Network Link Endpoint.' display_name: '- (Optional String) The name of the Network Link Endpoint.' @@ -497,10 +1897,75 @@ resources: $ export CONFLUENT_CLOUD_API_KEY="" $ export CONFLUENT_CLOUD_API_SECRET="" $ terraform import confluent_network_link_endpoint.my_nle env-abc123/nle-abc123 - confluent_network_link_service Resource - terraform-provider-confluent: + confluent_network_link_service: subCategory: "" - name: confluent_network_link_service Resource - terraform-provider-confluent + name: confluent_network_link_service title: confluent_network_link_service Resource - terraform-provider-confluent + examples: + - name: aws_nls + manifest: |- + { + "accept": [ + { + "environments": [ + "env-5678", + "env-0923" + ], + "networks": [ + "n-1234" + ] + } + ], + "description": "Test NL service", + "display_name": "AWS Private Link network link service", + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "network": [ + { + "id": "${confluent_network.aws-private-link.id}" + } + ] + } + references: + environment.id: confluent_environment.development.id + network.id: confluent_network.aws-private-link.id + dependencies: + confluent_environment.development: |- + { + "display_name": "Development" + } + confluent_network.aws-private-link: |- + { + "cloud": "AWS", + "connection_types": [ + "PRIVATELINK" + ], + "display_name": "AWS Private Link Network", + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "region": "us-east-1", + "zones": [ + "use1-az1", + "use1-az2", + "use1-az6" + ] + } argumentDocs: accept: '(Optional Configuration Block) supports the following:' description: '- (Optional String) The description of the Network Link Service.' @@ -516,10 +1981,184 @@ resources: $ export CONFLUENT_CLOUD_API_KEY="" $ export CONFLUENT_CLOUD_API_SECRET="" $ terraform import confluent_network_link_service.my_nls env-abc123/nls-abc123 - confluent_peering Resource - terraform-provider-confluent: + confluent_peering: subCategory: "" - name: confluent_peering Resource - terraform-provider-confluent + name: confluent_peering title: confluent_peering Resource - terraform-provider-confluent + examples: + - name: aws + manifest: |- + { + "aws": [ + { + "account": "012345678901", + "customer_region": "us-east-2", + "routes": [ + "172.31.0.0/16" + ], + "vpc": "vpc-abcdef0123456789a" + } + ], + "display_name": "AWS Peering", + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "network": [ + { + "id": "${confluent_network.aws-peering.id}" + } + ] + } + references: + environment.id: confluent_environment.development.id + network.id: confluent_network.aws-peering.id + dependencies: + confluent_environment.development: |- + { + "display_name": "Development" + } + confluent_network.aws-peering: |- + { + "cidr": "10.10.0.0/16", + "cloud": "AWS", + "connection_types": [ + "PEERING" + ], + "display_name": "AWS Peering Network", + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "region": "us-east-2" + } + - name: azure + manifest: |- + { + "azure": [ + { + "customer_region": "centralus", + "tenant": "1111tttt-1111-1111-1111-111111tttttt", + "vnet": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.Network/virtualNetworks/my-vnet" + } + ], + "display_name": "Azure Peering", + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "network": [ + { + "id": "${confluent_network.azure-peering.id}" + } + ] + } + references: + environment.id: confluent_environment.development.id + network.id: confluent_network.azure-peering.id + dependencies: + confluent_environment.development: |- + { + "display_name": "Development" + } + confluent_network.azure-peering: |- + { + "cidr": "10.10.0.0/16", + "cloud": "AZURE", + "connection_types": [ + "PEERING" + ], + "display_name": "Azure Peering Network", + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "region": "centralus" + } + - name: gcp + manifest: |- + { + "display_name": "GCP Peering", + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "gcp": [ + { + "customer_region": "us-west4", + "project": "temp-gear-123456", + "vpc_network": "customer-test-vpc-network" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "network": [ + { + "id": "${confluent_network.gcp-peering.id}" + } + ] + } + references: + environment.id: confluent_environment.development.id + network.id: confluent_network.gcp-peering.id + dependencies: + confluent_environment.development: |- + { + "display_name": "Development", + "lifecycle": [ + { + "prevent_destroy": true + } + ] + } + confluent_network.gcp-peering: |- + { + "cidr": "10.10.0.0/16", + "cloud": "GCP", + "connection_types": [ + "PEERING" + ], + "display_name": "GCP Peering Network", + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "region": "us-west4" + } argumentDocs: account: '- (Required String) The AWS Account ID of the peer VPC owner. You can find your AWS Account ID here under My Account section of the AWS Management Console. Must be a 12 character string.' aws: '- (Optional Configuration Block) The AWS-specific Peering details if available. It supports the following:' @@ -542,10 +2181,177 @@ resources: $ export CONFLUENT_CLOUD_API_KEY="" $ export CONFLUENT_CLOUD_API_SECRET="" $ terraform import confluent_peering.my_peer env-abc123/peer-abc123 - confluent_private_link_access Resource - terraform-provider-confluent: + confluent_private_link_access: subCategory: "" - name: confluent_private_link_access Resource - terraform-provider-confluent + name: confluent_private_link_access title: confluent_private_link_access Resource - terraform-provider-confluent + examples: + - name: aws + manifest: |- + { + "aws": [ + { + "account": "012345678901" + } + ], + "display_name": "AWS Private Link Access", + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "network": [ + { + "id": "${confluent_network.aws-private-link.id}" + } + ] + } + references: + environment.id: confluent_environment.development.id + network.id: confluent_network.aws-private-link.id + dependencies: + confluent_environment.development: |- + { + "display_name": "Development" + } + confluent_network.aws-private-link: |- + { + "cloud": "AWS", + "connection_types": [ + "PRIVATELINK" + ], + "display_name": "AWS Private Link Network", + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "region": "us-east-1", + "zones": [ + "use1-az1", + "use1-az2", + "use1-az6" + ] + } + - name: azure + manifest: |- + { + "azure": [ + { + "subscription": "1234abcd-12ab-34cd-1234-123456abcdef" + } + ], + "display_name": "Azure Private Link Access", + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "network": [ + { + "id": "${confluent_network.azure-private-link.id}" + } + ] + } + references: + environment.id: confluent_environment.development.id + network.id: confluent_network.azure-private-link.id + dependencies: + confluent_environment.development: |- + { + "display_name": "Development" + } + confluent_network.azure-private-link: |- + { + "cloud": "AZURE", + "connection_types": [ + "PRIVATELINK" + ], + "display_name": "Azure Private Link Network", + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "region": "centralus" + } + - name: gcp + manifest: |- + { + "display_name": "GCP Private Service Connect", + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "gcp": [ + { + "project": "temp-gear-123456" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "network": [ + { + "id": "${confluent_network.gcp-private-service-connect.id}" + } + ] + } + references: + environment.id: confluent_environment.development.id + network.id: confluent_network.gcp-private-service-connect.id + dependencies: + confluent_environment.development: |- + { + "display_name": "Development" + } + confluent_network.gcp-private-service-connect: |- + { + "cloud": "GCP", + "connection_types": [ + "PRIVATELINK" + ], + "display_name": "GCP Private Service Connect Network", + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "region": "us-central1", + "zones": [ + "us-central1-a", + "us-central1-b", + "us-central1-c" + ] + } argumentDocs: account: '- (Required String) The AWS account ID to enable for the Private Link Access. You can find your AWS account ID [here] (https://console.aws.amazon.com/billing/home?#/account) under My Account in your AWS Management Console. Must be a 12 character string.' aws: '- (Optional Configuration Block) The AWS-specific Private Link Access details if available. It supports the following:' @@ -562,10 +2368,23 @@ resources: $ export CONFLUENT_CLOUD_API_KEY="" $ export CONFLUENT_CLOUD_API_SECRET="" $ terraform import confluent_private_link_access.my_pla env-abc123/pla-abc123 - confluent_private_link_attachment Resource - terraform-provider-confluent: + confluent_private_link_attachment: subCategory: "" - name: confluent_private_link_attachment Resource - terraform-provider-confluent + name: confluent_private_link_attachment title: confluent_private_link_attachment Resource - terraform-provider-confluent + examples: + - name: main + manifest: |- + { + "cloud": "AWS", + "display_name": "staging-platt", + "environment": [ + { + "id": "env-3732nw" + } + ], + "region": "us-west-2" + } argumentDocs: aws: '- (Optional Configuration Block) supports the following:' cloud: '- (Required String) The cloud service provider that hosts the resources to access with the Private Link Attachment.' @@ -581,10 +2400,31 @@ resources: $ export CONFLUENT_CLOUD_API_KEY="" $ export CONFLUENT_CLOUD_API_SECRET="" $ terraform import confluent_private_link_attachment.main env-abc123/platt-abc123 - confluent_private_link_attachment_connection Resource - terraform-provider-confluent: + confluent_private_link_attachment_connection: subCategory: "" - name: confluent_private_link_attachment_connection Resource - terraform-provider-confluent + name: confluent_private_link_attachment_connection title: confluent_private_link_attachment_connection Resource - terraform-provider-confluent + examples: + - name: main + manifest: |- + { + "aws": [ + { + "vpc_endpoint_id": "vpce-0ed4d51f5d6ef9b6d" + } + ], + "display_name": "my_endpoint", + "environment": [ + { + "id": "env-8gv0v5" + } + ], + "private_link_attachment": [ + { + "id": "platt-plyvyl" + } + ] + } argumentDocs: aws: '- (Optional Configuration Block) supports the following:' display_name: '- (Optional String) The name of the Private Link Attachment Connection.' @@ -598,10 +2438,112 @@ resources: $ export CONFLUENT_CLOUD_API_KEY="" $ export CONFLUENT_CLOUD_API_SECRET="" $ terraform import confluent_private_link_attachment_connection.main env-abc123/plattc-abc123 - confluent_role_binding Resource - terraform-provider-confluent: + confluent_role_binding: subCategory: "" - name: confluent_role_binding Resource - terraform-provider-confluent + name: confluent_role_binding title: confluent_role_binding Resource - terraform-provider-confluent + examples: + - name: org-example-rb + manifest: |- + { + "crn_pattern": "${data.confluent_organization.demo.resource_name}", + "principal": "User:${confluent_service_account.test.id}", + "role_name": "MetricsViewer" + } + references: + crn_pattern: data.confluent_organization.demo.resource_name + - name: environment-example-rb + manifest: |- + { + "crn_pattern": "${confluent_environment.stag.resource_name}", + "principal": "User:${confluent_service_account.test.id}", + "role_name": "EnvironmentAdmin" + } + references: + crn_pattern: confluent_environment.stag.resource_name + - name: environment-example-rb-2 + manifest: |- + { + "crn_pattern": "${confluent_environment.stag.resource_name}", + "principal": "User:${confluent_identity_pool.test.id}", + "role_name": "EnvironmentAdmin" + } + references: + crn_pattern: confluent_environment.stag.resource_name + - name: network-example-rb + manifest: |- + { + "crn_pattern": "${data.confluent_organization.demo.resource_name}", + "principal": "User:${confluent_service_account.test.id}", + "role_name": "NetworkAdmin" + } + references: + crn_pattern: data.confluent_organization.demo.resource_name + - name: cluster-example-rb + manifest: |- + { + "crn_pattern": "${confluent_kafka_cluster.basic.rbac_crn}", + "principal": "User:${confluent_service_account.test.id}", + "role_name": "CloudClusterAdmin" + } + references: + crn_pattern: confluent_kafka_cluster.basic.rbac_crn + - name: topic-example-rb + manifest: |- + { + "crn_pattern": "${confluent_kafka_cluster.standard.rbac_crn}/kafka=${confluent_kafka_cluster.standard.id}/topic=${confluent_kafka_topic.orders.topic_name}", + "principal": "User:${confluent_service_account.test.id}", + "role_name": "DeveloperWrite" + } + - name: topic-example-rb-2 + manifest: |- + { + "crn_pattern": "${confluent_kafka_cluster.standard.rbac_crn}/kafka=${confluent_kafka_cluster.standard.id}/topic=${confluent_kafka_topic.orders.topic_name}", + "principal": "User:${confluent_identity_pool.test.id}", + "role_name": "DeveloperWrite" + } + - name: group-example-rb + manifest: |- + { + "crn_pattern": "${confluent_kafka_cluster.basic.rbac_crn}/kafka=${confluent_kafka_cluster.standard.id}/group=confluent_cli_consumer_*", + "principal": "User:${confluent_service_account.test.id}", + "role_name": "DeveloperRead" + } + - name: transaction-example-rb + manifest: |- + { + "crn_pattern": "${confluent_kafka_cluster.basic.rbac_crn}/kafka=${confluent_kafka_cluster.standard.id}/transactional-id=my_transaction", + "principal": "User:${confluent_service_account.test.id}", + "role_name": "DeveloperRead" + } + - name: connector-example-rb + manifest: |- + { + "crn_pattern": "${confluent_kafka_cluster.standard.rbac_crn}/connector=${local.connector_name}", + "principal": "User:${confluent_service_account.test.id}", + "role_name": "DeveloperRead" + } + - name: all-subjects-example-rb + manifest: |- + { + "crn_pattern": "${confluent_schema_registry_cluster.example.resource_name}/subject=*", + "principal": "User:${confluent_service_account.test.id}", + "role_name": "DeveloperRead" + } + - name: subject-foo-example-rb + manifest: |- + { + "crn_pattern": "${confluent_schema_registry_cluster.example.resource_name}/subject=foo", + "principal": "User:${confluent_service_account.test.id}", + "role_name": "DeveloperRead" + } + - name: subject-with-abc-prefix-example-rb + manifest: |- + { + "crn_pattern": "${confluent_schema_registry_cluster.example.resource_name}/subject=abc*", + "principal": "User:${confluent_service_account.test.id}", + "role_name": "DeveloperRead" + } argumentDocs: crn_pattern: '- (Required String) A Confluent Resource Name(CRN) that specifies the scope and resource patterns necessary for the role to bind.' id: '- (Required String) The ID of the Role Binding (e.g., rb-f3a90de).' @@ -612,10 +2554,101 @@ resources: $ export CONFLUENT_CLOUD_API_KEY="" $ export CONFLUENT_CLOUD_API_SECRET="" $ terraform import confluent_role_binding.my_rb rb-f3a90de - confluent_schema Resource - terraform-provider-confluent: + confluent_schema: subCategory: "" - name: confluent_schema Resource - terraform-provider-confluent + name: confluent_schema title: confluent_schema Resource - terraform-provider-confluent + examples: + - name: avro-purchase + manifest: |- + { + "credentials": [ + { + "key": "\u003cSchema Registry API Key for confluent_schema_registry_cluster.essentials\u003e", + "secret": "\u003cSchema Registry API Secret for confluent_schema_registry_cluster.essentials\u003e" + } + ], + "format": "AVRO", + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "rest_endpoint": "${confluent_schema_registry_cluster.essentials.rest_endpoint}", + "schema": "${file(\"./schemas/avro/purchase.avsc\")}", + "schema_registry_cluster": [ + { + "id": "${confluent_schema_registry_cluster.essentials.id}" + } + ], + "subject_name": "avro-purchase-value" + } + references: + rest_endpoint: confluent_schema_registry_cluster.essentials.rest_endpoint + schema_registry_cluster.id: confluent_schema_registry_cluster.essentials.id + - name: avro-purchase + manifest: |- + { + "format": "AVRO", + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "schema": "${file(\"./schemas/avro/purchase.avsc\")}", + "subject_name": "avro-purchase-value" + } + - name: avro-purchase + manifest: |- + { + "format": "AVRO", + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "schema": "${file(\"./schemas/avro/purchase.avsc\")}", + "subject_name": "avro-purchase-value" + } + - name: avro-purchase-v1 + manifest: |- + { + "format": "AVRO", + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "recreate_on_update": true, + "schema": "${file(\"./schemas/avro/purchase_v1.avsc\")}", + "subject_name": "avro-purchase-value" + } + - name: avro-purchase-v1 + manifest: |- + { + "format": "AVRO", + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "recreate_on_update": true, + "schema": "${file(\"./schemas/avro/purchase_v1.avsc\")}", + "subject_name": "avro-purchase-value" + } + - name: avro-purchase-v2 + manifest: |- + { + "format": "AVRO", + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "recreate_on_update": true, + "schema": "${file(\"./schemas/avro/purchase_v2.avsc\")}", + "subject_name": "avro-purchase-value" + } argumentDocs: credentials: '(Optional Configuration Block) supports the following:' credentials.format: '- (Required String) The format of the schema. Accepted values are: AVRO, PROTOBUF, and JSON.' @@ -648,10 +2681,67 @@ resources: $ export IMPORT_SCHEMA_REGISTRY_REST_ENDPOINT="" $ export SCHEMA_CONTENT="" # for example, export SCHEMA_CONTENT=$(cat schemas/proto/purchase.proto) $ terraform import confluent_schema.my_schema_1 lsrc-abc123/test-subject/100003 - confluent_schema_exporter Resource - terraform-provider-confluent: + confluent_schema_exporter: subCategory: "" - name: confluent_schema_exporter Resource - terraform-provider-confluent + name: confluent_schema_exporter title: confluent_schema_exporter Resource - terraform-provider-confluent + examples: + - name: main + manifest: |- + { + "credentials": [ + { + "key": "\u003cSchema Registry API Key for confluent_schema_registry_cluster.essentials\u003e", + "secret": "\u003cSchema Registry API Secret for confluent_schema_registry_cluster.essentials\u003e" + } + ], + "destination_schema_registry_cluster": [ + { + "credentials": [ + { + "key": "\u003cSchema Registry API Key for confluent_schema_registry_cluster.destination\u003e", + "secret": "\u003cSchema Registry API Secret for confluent_schema_registry_cluster.destination\u003e" + } + ], + "rest_endpoint": "${confluent_schema_registry_cluster.destination.rest_endpoint}" + } + ], + "name": "test-exporter", + "rest_endpoint": "${confluent_schema_registry_cluster.essentials.rest_endpoint}", + "schema_registry_cluster": [ + { + "id": "${confluent_schema_registry_cluster.essentials.id}" + } + ], + "subjects": [ + "foo" + ] + } + references: + destination_schema_registry_cluster.rest_endpoint: confluent_schema_registry_cluster.destination.rest_endpoint + rest_endpoint: confluent_schema_registry_cluster.essentials.rest_endpoint + schema_registry_cluster.id: confluent_schema_registry_cluster.essentials.id + - name: main + manifest: |- + { + "destination_schema_registry_cluster": [ + { + "credentials": [ + { + "key": "\u003cSchema Registry API Key for confluent_schema_registry_cluster.destination\u003e", + "secret": "\u003cSchema Registry API Secret for confluent_schema_registry_cluster.destination\u003e" + } + ], + "rest_endpoint": "${confluent_schema_registry_cluster.destination.rest_endpoint}" + } + ], + "name": "test-exporter", + "subjects": [ + "foo" + ] + } + references: + destination_schema_registry_cluster.rest_endpoint: confluent_schema_registry_cluster.destination.rest_endpoint argumentDocs: config: '- (Optional Map) Block for custom nonsensitive configuration properties:' context: '- (Optional String) Customized context of the exporter if context_type is set to CUSTOM.' @@ -675,10 +2765,45 @@ resources: $ export IMPORT_SCHEMA_REGISTRY_API_SECRET="" $ export IMPORT_SCHEMA_REGISTRY_REST_ENDPOINT="" $ terraform import confluent_schema_exporter.main lsrc-8wrx70/test-exporter - confluent_schema_registry_cluster Resource - terraform-provider-confluent: + confluent_schema_registry_cluster: subCategory: "" - name: confluent_schema_registry_cluster Resource - terraform-provider-confluent + name: confluent_schema_registry_cluster title: confluent_schema_registry_cluster Resource - terraform-provider-confluent + examples: + - name: essentials + manifest: |- + { + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "package": "${data.confluent_schema_registry_region.example.package}", + "region": [ + { + "id": "${data.confluent_schema_registry_region.example.id}" + } + ] + } + references: + environment.id: confluent_environment.development.id + package: data.confluent_schema_registry_region.example.package + region.id: data.confluent_schema_registry_region.example.id + dependencies: + confluent_environment.development: |- + { + "display_name": "Development", + "lifecycle": [ + { + "prevent_destroy": true + } + ] + } argumentDocs: api_version: '- (Required String) An API Version of the schema version of the Schema Registry cluster, for example, srcm/v2.' display_name: '- (Required String) The name of the Schema Registry cluster, for example, Stream Governance Package.' @@ -694,10 +2819,46 @@ resources: $ export CONFLUENT_CLOUD_API_KEY="" $ export CONFLUENT_CLOUD_API_SECRET="" $ terraform import confluent_schema_registry_cluster.example env-abc123/lsrc-abc123 - confluent_schema_registry_cluster_config Resource - terraform-provider-confluent: + confluent_schema_registry_cluster_config: subCategory: "" - name: confluent_schema_registry_cluster_config Resource - terraform-provider-confluent + name: confluent_schema_registry_cluster_config title: confluent_schema_registry_cluster_config Resource - terraform-provider-confluent + examples: + - name: example + manifest: |- + { + "compatibility_level": "FULL", + "credentials": [ + { + "key": "\u003cSchema Registry API Key for confluent_schema_registry_cluster.essentials\u003e", + "secret": "\u003cSchema Registry API Secret for confluent_schema_registry_cluster.essentials\u003e" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "rest_endpoint": "${confluent_schema_registry_cluster.essentials.rest_endpoint}", + "schema_registry_cluster": [ + { + "id": "${confluent_schema_registry_cluster.essentials.id}" + } + ] + } + references: + rest_endpoint: confluent_schema_registry_cluster.essentials.rest_endpoint + schema_registry_cluster.id: confluent_schema_registry_cluster.essentials.id + - name: example + manifest: |- + { + "compatibility_level": "FULL", + "lifecycle": [ + { + "prevent_destroy": true + } + ] + } argumentDocs: credentials: '(Optional Configuration Block) supports the following:' credentials.compatibility_level: '- (Optional String) The global Schema Registry compatibility level. Accepted values are: BACKWARD, BACKWARD_TRANSITIVE, FORWARD, FORWARD_TRANSITIVE, FULL, FULL_TRANSITIVE, and NONE. See the Compatibility Types for more details.' @@ -712,10 +2873,46 @@ resources: $ export IMPORT_SCHEMA_REGISTRY_API_SECRET="" $ export IMPORT_SCHEMA_REGISTRY_REST_ENDPOINT="" $ terraform import confluent_schema_registry_cluster_config.example lsrc-abc123 - confluent_schema_registry_cluster_mode Resource - terraform-provider-confluent: + confluent_schema_registry_cluster_mode: subCategory: "" - name: confluent_schema_registry_cluster_mode Resource - terraform-provider-confluent + name: confluent_schema_registry_cluster_mode title: confluent_schema_registry_cluster_mode Resource - terraform-provider-confluent + examples: + - name: example + manifest: |- + { + "credentials": [ + { + "key": "\u003cSchema Registry API Key for confluent_schema_registry_cluster.essentials\u003e", + "secret": "\u003cSchema Registry API Secret for confluent_schema_registry_cluster.essentials\u003e" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "mode": "READONLY", + "rest_endpoint": "${confluent_schema_registry_cluster.essentials.rest_endpoint}", + "schema_registry_cluster": [ + { + "id": "${confluent_schema_registry_cluster.essentials.id}" + } + ] + } + references: + rest_endpoint: confluent_schema_registry_cluster.essentials.rest_endpoint + schema_registry_cluster.id: confluent_schema_registry_cluster.essentials.id + - name: example + manifest: |- + { + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "mode": "READONLY" + } argumentDocs: credentials: '(Optional Configuration Block) supports the following:' credentials.mode: '- (Optional String) The global Schema Registry mode. Accepted values are: READWRITE, READONLY, READONLY_OVERRIDE, and IMPORT.' @@ -730,10 +2927,17 @@ resources: $ export IMPORT_SCHEMA_REGISTRY_API_SECRET="" $ export IMPORT_SCHEMA_REGISTRY_REST_ENDPOINT="" $ terraform import confluent_schema_registry_cluster_mode.example lsrc-abc123 - confluent_service_account Resource - terraform-provider-confluent: + confluent_service_account: subCategory: "" - name: confluent_service_account Resource - terraform-provider-confluent + name: confluent_service_account title: confluent_service_account Resource - terraform-provider-confluent + examples: + - name: example-sa + manifest: |- + { + "description": "Service Account for orders app", + "display_name": "orders-app-sa" + } argumentDocs: api_version: '- (Required String) An API Version of the schema version of the Service Account, for example, iam/v2.' description: '- (Optional String) A free-form description of the Service Account.' @@ -745,10 +2949,48 @@ resources: $ export CONFLUENT_CLOUD_API_KEY="" $ export CONFLUENT_CLOUD_API_SECRET="" $ terraform import confluent_service_account.my_sa sa-abc123 - confluent_subject_config Resource - terraform-provider-confluent: + confluent_subject_config: subCategory: "" - name: confluent_subject_config Resource - terraform-provider-confluent + name: confluent_subject_config title: confluent_subject_config Resource - terraform-provider-confluent + examples: + - name: example + manifest: |- + { + "compatibility_level": "BACKWARD", + "credentials": [ + { + "key": "\u003cSchema Registry API Key for confluent_schema_registry_cluster.essentials\u003e", + "secret": "\u003cSchema Registry API Secret for confluent_schema_registry_cluster.essentials\u003e" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "rest_endpoint": "${confluent_schema_registry_cluster.essentials.rest_endpoint}", + "schema_registry_cluster": [ + { + "id": "${confluent_schema_registry_region.essentials.id}" + } + ], + "subject_name": "proto-purchase-value" + } + references: + rest_endpoint: confluent_schema_registry_cluster.essentials.rest_endpoint + schema_registry_cluster.id: confluent_schema_registry_region.essentials.id + - name: example + manifest: |- + { + "compatibility_level": "BACKWARD", + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "subject_name": "proto-purchase-value" + } argumentDocs: credentials: '(Optional Configuration Block) supports the following:' credentials.compatibility_level: '- (Optional String) The Compatibility Level of the specified subject. Accepted values are: BACKWARD, BACKWARD_TRANSITIVE, FORWARD, FORWARD_TRANSITIVE, FULL, FULL_TRANSITIVE, and NONE. See the Compatibility Types for more details.' @@ -764,10 +3006,48 @@ resources: $ export IMPORT_SCHEMA_REGISTRY_API_SECRET="" $ export IMPORT_SCHEMA_REGISTRY_REST_ENDPOINT="" $ terraform import confluent_subject_config.example lsrc-abc123/test-subject - confluent_subject_mode Resource - terraform-provider-confluent: + confluent_subject_mode: subCategory: "" - name: confluent_subject_mode Resource - terraform-provider-confluent + name: confluent_subject_mode title: confluent_subject_mode Resource - terraform-provider-confluent + examples: + - name: example + manifest: |- + { + "credentials": [ + { + "key": "\u003cSchema Registry API Key for confluent_schema_registry_cluster.essentials\u003e", + "secret": "\u003cSchema Registry API Secret for confluent_schema_registry_cluster.essentials\u003e" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "mode": "READONLY", + "rest_endpoint": "${confluent_schema_registry_cluster.essentials.rest_endpoint}", + "schema_registry_cluster": [ + { + "id": "${confluent_schema_registry_cluster.essentials.id}" + } + ], + "subject_name": "proto-purchase-value" + } + references: + rest_endpoint: confluent_schema_registry_cluster.essentials.rest_endpoint + schema_registry_cluster.id: confluent_schema_registry_cluster.essentials.id + - name: example + manifest: |- + { + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "mode": "READONLY", + "subject_name": "proto-purchase-value" + } argumentDocs: credentials: '(Optional Configuration Block) supports the following:' credentials.mode: '- (Optional String) The mode of the specified subject. Accepted values are: READWRITE, READONLY, READONLY_OVERRIDE, and IMPORT.' @@ -783,10 +3063,48 @@ resources: $ export IMPORT_SCHEMA_REGISTRY_API_SECRET="" $ export IMPORT_SCHEMA_REGISTRY_REST_ENDPOINT="" $ terraform import confluent_subject_mode.example lsrc-abc123/test-subject - confluent_tag Resource - terraform-provider-confluent: + confluent_tag: subCategory: "" - name: confluent_tag Resource - terraform-provider-confluent + name: confluent_tag title: confluent_tag Resource - terraform-provider-confluent + examples: + - name: pii + manifest: |- + { + "credentials": [ + { + "key": "\u003cSchema Registry API Key for confluent_schema_registry_cluster.essentials\u003e", + "secret": "\u003cSchema Registry API Secret for confluent_schema_registry_cluster.essentials\u003e" + } + ], + "description": "PII tag", + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "name": "PII", + "rest_endpoint": "${confluent_schema_registry_cluster.essentials.rest_endpoint}", + "schema_registry_cluster": [ + { + "id": "${confluent_schema_registry_cluster.essentials.id}" + } + ] + } + references: + rest_endpoint: confluent_schema_registry_cluster.essentials.rest_endpoint + schema_registry_cluster.id: confluent_schema_registry_cluster.essentials.id + - name: pii + manifest: |- + { + "description": "PII tag", + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "name": "PII" + } argumentDocs: credentials: '(Optional Configuration Block) supports the following:' description: '- (Optional String) The description of the tag.' @@ -804,10 +3122,50 @@ resources: $ export IMPORT_SCHEMA_REGISTRY_API_SECRET="" $ export IMPORT_SCHEMA_REGISTRY_REST_ENDPOINT="" $ terraform import confluent_tag.pii lsrc-8wrx70/PII - confluent_tag_binding Resource - terraform-provider-confluent: + confluent_tag_binding: subCategory: "" - name: confluent_tag_binding Resource - terraform-provider-confluent + name: confluent_tag_binding title: confluent_tag_binding Resource - terraform-provider-confluent + examples: + - name: main + manifest: |- + { + "credentials": [ + { + "key": "\u003cSchema Registry API Key for confluent_schema_registry_cluster.essentials\u003e", + "secret": "\u003cSchema Registry API Secret for confluent_schema_registry_cluster.essentials\u003e" + } + ], + "entity_name": "${var.schema_registry_id}:${var.kafka_id}:${data.confluent_kafka_topic.main.topic_name}", + "entity_type": "kafka_topic", + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "rest_endpoint": "${confluent_schema_registry_cluster.essentials.rest_endpoint}", + "schema_registry_cluster": [ + { + "id": "${confluent_schema_registry_cluster.essentials.id}" + } + ], + "tag_name": "PII" + } + references: + rest_endpoint: confluent_schema_registry_cluster.essentials.rest_endpoint + schema_registry_cluster.id: confluent_schema_registry_cluster.essentials.id + - name: topic-tagging + manifest: |- + { + "entity_name": "${var.schema_registry_id}:${var.kafka_id}:${data.confluent_kafka_topic.main.topic_name}", + "entity_type": "kafka_topic", + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "tag_name": "PII" + } argumentDocs: credentials: '(Optional Configuration Block) supports the following:' entity_name: '- (Required String) The qualified name of the entity., for example, ${confluent_schema_registry_cluster.main.id}:.:${confluent_schema.purchase.schema_identifier}, ${confluent_schema_registry_cluster.main.id}:${confluent_kafka_cluster.basic.id}:${confluent_kafka_topic.purchase.topic_name}.' @@ -824,18 +3182,88 @@ resources: $ export IMPORT_SCHEMA_REGISTRY_API_SECRET="" $ export IMPORT_SCHEMA_REGISTRY_REST_ENDPOINT="" $ terraform import confluent_tag_binding.main lsrc-8wrx70/PII/lsrc-8wrx70:.:100001/sr_schema - confluent_tf_importer Resource - terraform-provider-confluent: + confluent_tf_importer: subCategory: "" - name: confluent_tf_importer Resource - terraform-provider-confluent + name: confluent_tf_importer title: confluent_tf_importer Resource - terraform-provider-confluent + examples: + - name: example + manifest: |- + { + "resources": [ + "confluent_service_account", + "confluent_environment" + ] + } argumentDocs: output_path: '- (Optional Strings) An absolute path to a folder for outputting generated TF state and TF configuration files for your infrastructure. The folder is created if it doesn''t exist. Defaults to ./imported_confluent_infrastructure.' resources: '- (Optional List of Strings) A list of resources names to export. Defaults to all exportable resources.' importStatements: [] - confluent_transit_gateway_attachment Resource - terraform-provider-confluent: + confluent_transit_gateway_attachment: subCategory: "" - name: confluent_transit_gateway_attachment Resource - terraform-provider-confluent + name: confluent_transit_gateway_attachment title: confluent_transit_gateway_attachment Resource - terraform-provider-confluent + examples: + - name: aws + manifest: |- + { + "aws": [ + { + "ram_resource_share_arn": "arn:aws:ram:us-east-2:000000000000:resource-share/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx", + "routes": [ + "192.168.0.0/16", + "172.16.0.0/12", + "100.64.0.0/10", + "10.0.0.0/8" + ], + "transit_gateway_id": "tgw-xxxxxxxxxxxxxxxxx" + } + ], + "display_name": "AWS Transit Gateway Attachment", + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "network": [ + { + "id": "${confluent_network.aws-transit-gateway-attachment.id}" + } + ] + } + references: + environment.id: confluent_environment.development.id + network.id: confluent_network.aws-transit-gateway-attachment.id + dependencies: + confluent_environment.development: |- + { + "display_name": "Development" + } + confluent_network.aws-transit-gateway-attachment: |- + { + "cidr": "10.10.0.0/16", + "cloud": "AWS", + "connection_types": [ + "TRANSITGATEWAY" + ], + "display_name": "AWS Transit Gateway Attachment Network", + "environment": [ + { + "id": "${confluent_environment.development.id}" + } + ], + "lifecycle": [ + { + "prevent_destroy": true + } + ], + "region": "us-east-2" + } argumentDocs: aws: '- (Required Configuration Block) The AWS-specific Transit Gateway Attachment details. It supports the following:' display_name: '- (Optional String) The name of the Transit Gateway Attachment.' diff --git a/examples-generated/confluent/apikey.yaml b/examples-generated/confluent/apikey.yaml new file mode 100644 index 0000000..a22af76 --- /dev/null +++ b/examples-generated/confluent/apikey.yaml @@ -0,0 +1,28 @@ +apiVersion: confluent.crossplane.io/v1alpha1 +kind: APIKey +metadata: + annotations: + meta.upbound.io/example-id: confluent/v1alpha1/apikey + labels: + testing.upbound.io/example-name: app-manager-kafka-api-key + name: app-manager-kafka-api-key +spec: + forProvider: + description: Kafka API Key that is owned by 'app-manager' service account + displayName: app-manager-kafka-api-key + managedResource: + - apiVersion: ${confluent_kafka_cluster.basic.api_version} + environment: + - idSelector: + matchLabels: + testing.upbound.io/example-name: staging + idSelector: + matchLabels: + testing.upbound.io/example-name: basic + kind: ${confluent_kafka_cluster.basic.kind} + owner: + - apiVersion: ${confluent_service_account.app-manager.api_version} + idSelector: + matchLabels: + testing.upbound.io/example-name: app-manager + kind: ${confluent_service_account.app-manager.kind} diff --git a/examples-generated/confluent/cluster.yaml b/examples-generated/confluent/cluster.yaml new file mode 100644 index 0000000..d682cf4 --- /dev/null +++ b/examples-generated/confluent/cluster.yaml @@ -0,0 +1,34 @@ +apiVersion: confluent.crossplane.io/v1alpha1 +kind: Cluster +metadata: + annotations: + meta.upbound.io/example-id: confluent/v1alpha1/cluster + labels: + testing.upbound.io/example-name: basic + name: basic +spec: + forProvider: + availability: SINGLE_ZONE + basic: + - {} + cloud: AWS + displayName: basic_kafka_cluster + environment: + - idSelector: + matchLabels: + testing.upbound.io/example-name: development + region: us-east-2 + +--- + +apiVersion: confluent.crossplane.io/v1alpha1 +kind: Environment +metadata: + annotations: + meta.upbound.io/example-id: confluent/v1alpha1/cluster + labels: + testing.upbound.io/example-name: development + name: development +spec: + forProvider: + displayName: Development diff --git a/examples-generated/confluent/clusterconfig.yaml b/examples-generated/confluent/clusterconfig.yaml new file mode 100644 index 0000000..2a06586 --- /dev/null +++ b/examples-generated/confluent/clusterconfig.yaml @@ -0,0 +1,25 @@ +apiVersion: confluent.crossplane.io/v1alpha1 +kind: ClusterConfig +metadata: + annotations: + meta.upbound.io/example-id: confluent/v1alpha1/clusterconfig + labels: + testing.upbound.io/example-name: orders + name: orders +spec: + forProvider: + config: + auto.create.topics.enable: "true" + log.retention.ms: "604800123" + credentials: + - keySecretRef: + key: attribute.id + name: example-api-key + namespace: upbound-system + secretSecretRef: + key: attribute.secret + name: example-api-key + namespace: upbound-system + kafkaCluster: + - id: ${confluent_kafka_cluster.dedicated.id} + restEndpoint: ${confluent_kafka_cluster.dedicated.rest_endpoint} diff --git a/examples-generated/confluent/environment.yaml b/examples-generated/confluent/environment.yaml new file mode 100644 index 0000000..6f88a34 --- /dev/null +++ b/examples-generated/confluent/environment.yaml @@ -0,0 +1,11 @@ +apiVersion: confluent.crossplane.io/v1alpha1 +kind: Environment +metadata: + annotations: + meta.upbound.io/example-id: confluent/v1alpha1/environment + labels: + testing.upbound.io/example-name: prod + name: prod +spec: + forProvider: + displayName: Production diff --git a/examples-generated/confluent/kafkaacl.yaml b/examples-generated/confluent/kafkaacl.yaml new file mode 100644 index 0000000..1d54c47 --- /dev/null +++ b/examples-generated/confluent/kafkaacl.yaml @@ -0,0 +1,33 @@ +apiVersion: confluent.crossplane.io/v1alpha1 +kind: KafkaACL +metadata: + annotations: + meta.upbound.io/example-id: confluent/v1alpha1/kafkaacl + labels: + testing.upbound.io/example-name: describe-basic-cluster + name: describe-basic-cluster +spec: + forProvider: + credentials: + - keySecretRef: + key: attribute.id + name: example-api-key + namespace: upbound-system + secretSecretRef: + key: attribute.secret + name: example-api-key + namespace: upbound-system + host: '*' + kafkaCluster: + - idSelector: + matchLabels: + testing.upbound.io/example-name: basic-cluster + operation: DESCRIBE + patternType: LITERAL + permission: ALLOW + principalSelector: + matchLabels: + testing.upbound.io/example-name: example + resourceName: kafka-cluster + resourceType: CLUSTER + restEndpoint: ${confluent_kafka_cluster.basic-cluster.rest_endpoint} diff --git a/examples-generated/confluent/rolebinding.yaml b/examples-generated/confluent/rolebinding.yaml new file mode 100644 index 0000000..91a9217 --- /dev/null +++ b/examples-generated/confluent/rolebinding.yaml @@ -0,0 +1,13 @@ +apiVersion: confluent.crossplane.io/v1alpha1 +kind: RoleBinding +metadata: + annotations: + meta.upbound.io/example-id: confluent/v1alpha1/rolebinding + labels: + testing.upbound.io/example-name: org-example-rb + name: org-example-rb +spec: + forProvider: + crnPattern: ${data.confluent_organization.demo.resource_name} + principal: User:${confluent_service_account.test.id} + roleName: MetricsViewer diff --git a/examples-generated/confluent/serviceaccount.yaml b/examples-generated/confluent/serviceaccount.yaml new file mode 100644 index 0000000..03ae6e8 --- /dev/null +++ b/examples-generated/confluent/serviceaccount.yaml @@ -0,0 +1,12 @@ +apiVersion: confluent.crossplane.io/v1alpha1 +kind: ServiceAccount +metadata: + annotations: + meta.upbound.io/example-id: confluent/v1alpha1/serviceaccount + labels: + testing.upbound.io/example-name: example-sa + name: example-sa +spec: + forProvider: + description: Service Account for orders app + displayName: orders-app-sa diff --git a/examples/api_key/api_key.yml b/examples/api_key/api_key.yml deleted file mode 100644 index ef2dcc7..0000000 --- a/examples/api_key/api_key.yml +++ /dev/null @@ -1,20 +0,0 @@ -apiVersion: confluent.crossplane.io/v1alpha1 -kind: APIKey -metadata: - name: test-service-account-api-key -spec: - providerConfigRef: - name: confluent-provider-config - forProvider: - displayName: "test-service-account-api-key" - description: "test-service-account-api-key example description" - owner: - - apiVersion: iam/v2 - kind: ServiceAccount - id: sa-naj2ki - managedResource: - - apiVersion: cmk/v2 - kind: Cluster - id: lkc-xmwdjg - environment: - - id: env-nwy7zv diff --git a/examples/environment/environment.yaml b/examples/environment/environment.yaml deleted file mode 100644 index 8d081c7..0000000 --- a/examples/environment/environment.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: confluent.crossplane.io/v1alpha1 -kind: Environment -metadata: - name: example-confluent-env -spec: - forProvider: - displayName: "test" diff --git a/examples/install.yaml b/examples/install.yaml deleted file mode 100644 index f49be71..0000000 --- a/examples/install.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: pkg.crossplane.io/v1 -kind: Provider -metadata: - name: provider-confluent -spec: - package: "provider-package" - packagePullSecrets: - - name: eureka-registry \ No newline at end of file diff --git a/examples/kafka_acl/acl.yaml b/examples/kafka_acl/acl.yaml deleted file mode 100644 index 431ae1c..0000000 --- a/examples/kafka_acl/acl.yaml +++ /dev/null @@ -1,27 +0,0 @@ -apiVersion: confluent.crossplane.io/v1alpha1 -kind: KafkaACL -metadata: - name: example-kafka-acl -spec: - providerConfigRef: - name: default - forProvider: - kafkaCluster: - - id: lkc-pr3xp2 - resourceType: "CLUSTER" - resourceName: "kafka-cluster" - patternType: "LITERAL" - principal: "User:sa-mz50z2" - host: "*" - operation: "DESCRIBE" - permission: "ALLOW" - restEndpoint: "https://pkc-56d1g.eastus.azure.confluent.cloud:443" - credentials: - - keySecretRef: - key: api_key_id - namespace: abcd-dev-us - name: main-cluster-secret - secretSecretRef: - key: api_key_secret - namespace: abcd-dev-us - name: main-cluster-secret diff --git a/examples/kafka_cluster/kafka_cluster.yaml b/examples/kafka_cluster/kafka_cluster.yaml deleted file mode 100644 index e28a49e..0000000 --- a/examples/kafka_cluster/kafka_cluster.yaml +++ /dev/null @@ -1,18 +0,0 @@ -apiVersion: confluent.crossplane.io/v1alpha1 -kind: Cluster -metadata: - name: example-confluent-cluster -spec: - providerConfigRef: - name: default - forProvider: - displayName: "example-confluent-cluster" - availability: "SINGLE_ZONE" - cloud: "AZURE" - basic: - - {} - region: "centralus" - environment: - - idSelector: - matchLabels: - confluent-environment: example-confluent-env diff --git a/examples/kafka_cluster_config/kafka_cluster_config.yaml b/examples/kafka_cluster_config/kafka_cluster_config.yaml deleted file mode 100644 index c4d9f78..0000000 --- a/examples/kafka_cluster_config/kafka_cluster_config.yaml +++ /dev/null @@ -1,9 +0,0 @@ -apiVersion: confluent.crossplane.io/v1alpha1 -kind: ClusterConfig -metadata: - name: lkc-abc123 -spec: - forProvider: - config: - auto.create.topics.enable: "true" - log.retention.ms: "604800123" diff --git a/examples/null/resource.yaml b/examples/null/resource.yaml deleted file mode 100644 index fd6956d..0000000 --- a/examples/null/resource.yaml +++ /dev/null @@ -1,10 +0,0 @@ -apiVersion: null.confluent.upbound.io/v1alpha1 -kind: Resource -metadata: - name: example -spec: - forProvider: - triggers: - example-trigger: example-value - providerConfigRef: - name: default \ No newline at end of file diff --git a/examples/providerconfig/.gitignore b/examples/providerconfig/.gitignore deleted file mode 100644 index 4a424df..0000000 --- a/examples/providerconfig/.gitignore +++ /dev/null @@ -1 +0,0 @@ -secret.yaml diff --git a/examples/providerconfig/providerconfig.yaml b/examples/providerconfig/providerconfig.yaml deleted file mode 100644 index 52d07c4..0000000 --- a/examples/providerconfig/providerconfig.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: confluent.crossplane.io/v1beta1 -kind: ProviderConfig -metadata: - name: default -spec: - credentials: - source: Secret - secretRef: - name: confluent-provider-secret - namespace: crossplane-system - key: credentials diff --git a/examples/providerconfig/secret.yaml.tmpl b/examples/providerconfig/secret.yaml.tmpl deleted file mode 100644 index 6dfa5c8..0000000 --- a/examples/providerconfig/secret.yaml.tmpl +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - name: example-creds - namespace: crossplane-system -type: Opaque -stringData: - credentials: | - { - "username": "admin", - "password": "t0ps3cr3t11" - } diff --git a/examples/role_binding/role-binding.yaml b/examples/role_binding/role-binding.yaml deleted file mode 100644 index fa40b35..0000000 --- a/examples/role_binding/role-binding.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: confluent.crossplane.io/v1alpha1 -kind: RoleBinding -metadata: - name: example-kafka-role-binding -spec: - providerConfigRef: - name: default - forProvider: - crnPattern: crn://confluent.cloud/organization=76e07093-ac0a-4446-8647-9ba863f10ca9/environment=env-7nqwwp - principal: User:sa-mz50z2 - roleName: EnvironmentAdmin diff --git a/examples/service_account/service_account.yml b/examples/service_account/service_account.yml deleted file mode 100644 index 1d9c8b8..0000000 --- a/examples/service_account/service_account.yml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: confluent.crossplane.io/v1alpha1 -kind: ServiceAccount -metadata: - name: test-service-account -spec: - providerConfigRef: - name: confluent-provider-config - forProvider: - displayName: "test-service-account" - description: "test-service-account example description of service account." - \ No newline at end of file diff --git a/examples/storeconfig/vault.yaml b/examples/storeconfig/vault.yaml deleted file mode 100644 index 9d7d145..0000000 --- a/examples/storeconfig/vault.yaml +++ /dev/null @@ -1,19 +0,0 @@ -apiVersion: confluent.crossplane.io/v1alpha1 -kind: StoreConfig -metadata: - name: vault -spec: - type: Vault - defaultScope: crossplane-system - vault: - server: http://vault.vault-system:8200 - mountPath: kv2/ - version: v2 - auth: - method: Token - token: - source: Secret - secretRef: - namespace: crossplane-system - name: vault-token - key: token \ No newline at end of file diff --git a/go.mod b/go.mod index f70c4fd..8a12e46 100644 --- a/go.mod +++ b/go.mod @@ -3,88 +3,70 @@ module github.com/crossplane-contrib/provider-confluent go 1.20 require ( - github.com/crossplane/crossplane-runtime v0.20.0-rc.0.0.20230406155702-4e1673b7141f - github.com/crossplane/crossplane-tools v0.0.0-20230327091744-4236bf732aa5 + github.com/crossplane/crossplane-runtime v1.14.2 + github.com/crossplane/crossplane-tools v0.0.0-20230925130601-628280f8bf79 github.com/pkg/errors v0.9.1 - github.com/upbound/upjet v0.9.0-rc.0.0.20230427131841-1d0b7b0c08f8 + github.com/upbound/upjet v0.10.0 gopkg.in/alecthomas/kingpin.v2 v2.2.6 - k8s.io/apimachinery v0.26.3 - k8s.io/client-go v0.26.3 - sigs.k8s.io/controller-runtime v0.14.6 - sigs.k8s.io/controller-tools v0.11.3 + k8s.io/apimachinery v0.28.3 + k8s.io/client-go v0.28.3 + sigs.k8s.io/controller-runtime v0.16.3 + sigs.k8s.io/controller-tools v0.13.0 ) require ( + dario.cat/mergo v1.0.0 // indirect github.com/agext/levenshtein v1.2.3 // indirect github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 // indirect github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect github.com/antchfx/htmlquery v1.2.4 // indirect github.com/antchfx/xpath v1.2.0 // indirect github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect - github.com/armon/go-metrics v0.3.9 // indirect - github.com/armon/go-radix v1.0.0 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/cenkalti/backoff/v3 v3.0.0 // indirect - github.com/cespare/xxhash/v2 v2.1.2 // indirect + github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/dave/jennifer v1.4.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/emicklei/go-restful/v3 v3.9.0 // indirect + github.com/emicklei/go-restful/v3 v3.11.0 // indirect github.com/evanphx/json-patch/v5 v5.6.0 // indirect github.com/fatih/camelcase v1.0.0 // indirect - github.com/fatih/color v1.13.0 // indirect + github.com/fatih/color v1.15.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect - github.com/go-logr/logr v1.2.3 // indirect - github.com/go-logr/zapr v1.2.3 // indirect - github.com/go-openapi/jsonpointer v0.19.5 // indirect - github.com/go-openapi/jsonreference v0.20.0 // indirect - github.com/go-openapi/swag v0.21.1 // indirect - github.com/gobuffalo/flect v0.3.0 // indirect + github.com/go-logr/logr v1.2.4 // indirect + github.com/go-logr/zapr v1.2.4 // indirect + github.com/go-openapi/jsonpointer v0.19.6 // indirect + github.com/go-openapi/jsonreference v0.20.2 // indirect + github.com/go-openapi/swag v0.22.3 // indirect + github.com/gobuffalo/flect v1.0.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/mock v1.6.0 // indirect - github.com/golang/protobuf v1.5.2 // indirect - github.com/golang/snappy v0.0.4 // indirect - github.com/google/gnostic v0.6.9 // indirect - github.com/google/go-cmp v0.5.9 // indirect + github.com/golang/protobuf v1.5.3 // indirect + github.com/google/gnostic-models v0.6.8 // indirect + github.com/google/go-cmp v0.6.0 // indirect github.com/google/gofuzz v1.2.0 // indirect - github.com/google/uuid v1.3.0 // indirect + github.com/google/uuid v1.3.1 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect - github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 // indirect github.com/hashicorp/go-hclog v1.2.1 // indirect - github.com/hashicorp/go-immutable-radix v1.3.1 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect - github.com/hashicorp/go-plugin v1.4.4 // indirect - github.com/hashicorp/go-retryablehttp v0.7.1 // indirect - github.com/hashicorp/go-rootcerts v1.0.2 // indirect - github.com/hashicorp/go-secure-stdlib/mlock v0.1.1 // indirect - github.com/hashicorp/go-secure-stdlib/parseutil v0.1.1 // indirect - github.com/hashicorp/go-secure-stdlib/strutil v0.1.1 // indirect - github.com/hashicorp/go-sockaddr v1.0.2 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect github.com/hashicorp/go-version v1.6.0 // indirect - github.com/hashicorp/golang-lru v0.5.4 // indirect - github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/hcl/v2 v2.14.1 // indirect github.com/hashicorp/logutils v1.0.0 // indirect github.com/hashicorp/terraform-json v0.14.0 // indirect github.com/hashicorp/terraform-plugin-go v0.14.0 // indirect github.com/hashicorp/terraform-plugin-log v0.7.0 // indirect github.com/hashicorp/terraform-plugin-sdk/v2 v2.24.0 // indirect - github.com/hashicorp/vault/api v1.5.0 // indirect - github.com/hashicorp/vault/sdk v0.4.1 // indirect - github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d // indirect github.com/iancoleman/strcase v0.2.0 // indirect - github.com/imdario/mergo v0.3.12 // indirect - github.com/inconshreveable/mousetrap v1.0.1 // indirect + github.com/imdario/mergo v0.3.16 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/mailru/easyjson v0.7.7 // indirect - github.com/mattn/go-colorable v0.1.12 // indirect - github.com/mattn/go-isatty v0.0.16 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.17 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect - github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-ps v1.0.0 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/go-wordwrap v1.0.1 // indirect @@ -94,15 +76,12 @@ require ( github.com/modern-go/reflect2 v1.0.2 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/muvaf/typewriter v0.0.0-20220131201631-921e94e8e8d7 // indirect - github.com/oklog/run v1.0.0 // indirect - github.com/pierrec/lz4 v2.5.2+incompatible // indirect - github.com/prometheus/client_golang v1.14.0 // indirect - github.com/prometheus/client_model v0.3.0 // indirect - github.com/prometheus/common v0.37.0 // indirect - github.com/prometheus/procfs v0.8.0 // indirect - github.com/ryanuber/go-glob v1.0.0 // indirect - github.com/spf13/afero v1.9.2 // indirect - github.com/spf13/cobra v1.6.1 // indirect + github.com/prometheus/client_golang v1.16.0 // indirect + github.com/prometheus/client_model v0.4.0 // indirect + github.com/prometheus/common v0.44.0 // indirect + github.com/prometheus/procfs v0.10.1 // indirect + github.com/spf13/afero v1.10.0 // indirect + github.com/spf13/cobra v1.7.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/tmccombs/hcl2json v0.3.3 // indirect github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect @@ -110,34 +89,32 @@ require ( github.com/vmihailenco/tagparser v0.1.1 // indirect github.com/yuin/goldmark v1.4.13 // indirect github.com/zclconf/go-cty v1.11.0 // indirect - go.uber.org/atomic v1.10.0 // indirect - go.uber.org/multierr v1.8.0 // indirect - go.uber.org/zap v1.24.0 // indirect - golang.org/x/crypto v0.2.0 // indirect - golang.org/x/mod v0.7.0 // indirect - golang.org/x/net v0.7.0 // indirect - golang.org/x/oauth2 v0.1.0 // indirect - golang.org/x/sys v0.5.0 // indirect - golang.org/x/term v0.5.0 // indirect - golang.org/x/text v0.7.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + go.uber.org/zap v1.26.0 // indirect + golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect + golang.org/x/mod v0.13.0 // indirect + golang.org/x/net v0.17.0 // indirect + golang.org/x/oauth2 v0.11.0 // indirect + golang.org/x/sys v0.13.0 // indirect + golang.org/x/term v0.13.0 // indirect + golang.org/x/text v0.13.0 // indirect golang.org/x/time v0.3.0 // indirect - golang.org/x/tools v0.4.0 // indirect - gomodules.xyz/jsonpatch/v2 v2.2.0 // indirect + golang.org/x/tools v0.14.0 // indirect + gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20221202195650-67e5cbc046fd // indirect - google.golang.org/grpc v1.50.1 // indirect - google.golang.org/protobuf v1.28.2-0.20220831092852-f930b1dc76e8 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect + google.golang.org/grpc v1.59.0 // indirect + google.golang.org/protobuf v1.31.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect - gopkg.in/square/go-jose.v2 v2.5.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.26.3 // indirect - k8s.io/apiextensions-apiserver v0.26.3 // indirect - k8s.io/component-base v0.26.3 // indirect - k8s.io/klog/v2 v2.80.1 // indirect - k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280 // indirect - k8s.io/utils v0.0.0-20221128185143-99ec85e7a448 // indirect - sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 // indirect + k8s.io/api v0.28.3 // indirect + k8s.io/apiextensions-apiserver v0.28.3 // indirect + k8s.io/component-base v0.28.3 // indirect + k8s.io/klog/v2 v2.100.1 // indirect + k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 // indirect + k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect + sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect sigs.k8s.io/yaml v1.3.0 // indirect ) diff --git a/go.sum b/go.sum index a88a1c0..7e924f6 100644 --- a/go.sum +++ b/go.sum @@ -35,141 +35,91 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= +dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= +dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/alecthomas/kong v0.2.16/go.mod h1:kQOmtJgV+Lb4aj+I2LEn40cbtawdWJ9Y8QLq+lElKxE= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAuRjVTiNNhvNRfY2Wxp9nhfyel4rklc= github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= github.com/antchfx/htmlquery v1.2.4 h1:qLteofCMe/KGovBI6SQgmou2QNyedFUW+pE+BpeZ494= github.com/antchfx/htmlquery v1.2.4/go.mod h1:2xO6iu3EVWs7R2JYqBbp8YzG50gj/ofqs5/0VZoDZLc= github.com/antchfx/xpath v1.2.0 h1:mbwv7co+x0RwgeGAOHdrKy89GvHaGvxxBtPK0uF9Zr8= github.com/antchfx/xpath v1.2.0/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0 h1:MzVXffFUye+ZcSR6opIgz9Co7WcDx6ZcY+RjfFHoA0I= github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= -github.com/armon/go-metrics v0.3.9 h1:O2sNqxBdvq8Eq5xmzljcYzAORli6RWCvEym4cJf9m18= -github.com/armon/go-metrics v0.3.9/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI= -github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= -github.com/cenkalti/backoff/v3 v3.0.0 h1:ske+9nBpD9qZsTBoF41nW5L+AIuFBKMeze18XQ3eG1c= -github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= -github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= -github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/crossplane/crossplane-runtime v0.20.0-rc.0.0.20230406155702-4e1673b7141f h1:wDRr6gaoiQstEdddrn0B5SSSgzdXreOQAbdmRH+9JeI= -github.com/crossplane/crossplane-runtime v0.20.0-rc.0.0.20230406155702-4e1673b7141f/go.mod h1:ebtUpmconMy8RKUEhrCXTUFSOpfGQqbKM2E+rjCCYJo= -github.com/crossplane/crossplane-tools v0.0.0-20230327091744-4236bf732aa5 h1:K9H55wcwfXcGroZApIgPmIGRGuZLszsLDCYB12p2yMo= -github.com/crossplane/crossplane-tools v0.0.0-20230327091744-4236bf732aa5/go.mod h1:+e4OaFlOcmr0JvINHl/yvEYBrZawzTgj6pQumOH1SS0= +github.com/crossplane/crossplane-runtime v1.14.2 h1:pV5JMzyzi/kcbeVBVPCat5MHH8zS94MBUapAyGx/Ry0= +github.com/crossplane/crossplane-runtime v1.14.2/go.mod h1:aOP+5W2wKpvthVs3pFNbVOe1jwrKYbJho0ThGNCVz9o= +github.com/crossplane/crossplane-tools v0.0.0-20230925130601-628280f8bf79 h1:HigXs5tEQxWz0fcj8hzbU2UAZgEM7wPe0XRFOsrtF8Y= +github.com/crossplane/crossplane-tools v0.0.0-20230925130601-628280f8bf79/go.mod h1:+e4OaFlOcmr0JvINHl/yvEYBrZawzTgj6pQumOH1SS0= github.com/dave/jennifer v1.4.1 h1:XyqG6cn5RQsTj3qlWQTKlRGAyrTcsk1kUmWdZBzRjDw= github.com/dave/jennifer v1.4.1/go.mod h1:7jEdnm+qBcxl8PC0zyp7vxcpSRnzXSt9r39tpTVGlwA= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= -github.com/emicklei/go-restful/v3 v3.9.0 h1:XwGDlfxEnQZzuopoqxwSEllNcCOM9DhhFyhFIIGKwxE= -github.com/emicklei/go-restful/v3 v3.9.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= +github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/evanphx/json-patch v0.5.2/go.mod h1:ZWS5hhDbVDyob71nXKNL0+PWn6ToqBHMikGIFbs31qQ= -github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84= -github.com/evanphx/json-patch/v5 v5.5.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= +github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U= github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJCLunww= github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= github.com/fatih/camelcase v1.0.0 h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8= github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= -github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= -github.com/flowstack/go-jsonschema v0.1.1/go.mod h1:yL7fNggx1o8rm9RlgXv7hTBWxdBM0rVwpMwimd3F3N0= -github.com/frankban/quicktest v1.10.0/go.mod h1:ui7WezCLWMWxVWr1GETZY3smRy0G4KWq9vcPtJmFl7Y= -github.com/frankban/quicktest v1.13.0 h1:yNZif1OkDfNoDfb9zZa9aXIpejNR4F23Wely0c+Qdqk= -github.com/frankban/quicktest v1.13.0/go.mod h1:qLE0fzW0VuyUAJgPU19zByoIr0HtCHN/r/VLSOOIySU= +github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= +github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-asn1-ber/asn1-ber v1.3.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= -github.com/go-ldap/ldap/v3 v3.1.10/go.mod h1:5Zun81jBTabRaI8lzN7E1JjyEl1g6zI6u9pd8luAK4Q= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= -github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/zapr v1.2.3 h1:a9vnzlIBPQBBkeaR9IuMUfmVOrQlkoC4YfPoFkX3T7A= -github.com/go-logr/zapr v1.2.3/go.mod h1:eIauM6P8qSvTw5o2ez6UEAfGjQKrxQTl5EoK+Qa2oG4= -github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= -github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonreference v0.20.0 h1:MYlu0sBgChmCfJxxUKZ8g1cPWFOB37YSZqewK7OKeyA= -github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo= -github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.21.1 h1:wm0rhTb5z7qpJRHBdPOMuY4QjVUMbF6/kwoYeRAOrKU= -github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-test/deep v1.0.2/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= +github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= +github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/zapr v1.2.4 h1:QHVo+6stLbfJmYGkQ7uGHUCu5hnAFAj6mDe6Ea0SeOo= +github.com/go-logr/zapr v1.2.4/go.mod h1:FyHWQIzQORZ0QVE1BtVHv3cKtNLuXsbNLtpuhNapBOA= +github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= +github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= +github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= +github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= +github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= +github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M= github.com/go-test/deep v1.0.7/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8= -github.com/gobuffalo/flect v0.3.0 h1:erfPWM+K1rFNIQeRPdeEXxo8yFr/PO17lhRnS8FUrtk= -github.com/gobuffalo/flect v0.3.0/go.mod h1:5pf3aGnsvqvCj50AVni7mJJF8ICxGZ8HomberC3pXLE= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gobuffalo/flect v1.0.2 h1:eqjPGSo2WmjgY2XlpGwo2NXgL3RucAKo4k4qQMNA5sA= +github.com/gobuffalo/flect v1.0.2/go.mod h1:A5msMlrHtLqh9umBSnvabjsMrCcCpAyzglnDvkbYKHs= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= @@ -203,15 +153,13 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= -github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/google/addlicense v0.0.0-20210428195630-6d92264d7170/go.mod h1:EMjYTRimagHs1FwlIqKyX3wAM0u3rA+McvlIIWmSamA= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/gnostic v0.6.9 h1:ZK/5VhkoX835RikCHpSUJV9a+S3e1zLh59YnyWeBW+0= -github.com/google/gnostic v0.6.9/go.mod h1:Nm8234We1lq6iB9OmlgNv3nH91XLLVZHCDayfA3xq+E= +github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= +github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -223,8 +171,8 @@ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -241,69 +189,30 @@ github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20230926050212-f7f687d19a98 h1:pUa4ghanp6q4IJHwE9RwLgmVFfReJN+KbQ8ExNEUUoQ= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= -github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 h1:1/D3zfFHttUKaCaGKZ/dR2roBXv0vKbSCnssIldfQdI= github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320/go.mod h1:EiZBMaudVLy8fmjf9Npq1dq9RalhveqZG5w/yz3mHWs= -github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= -github.com/hashicorp/go-hclog v0.14.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v0.16.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v1.2.1 h1:YQsLlGDJgwhXFpucSPyVbCBviQtjlHv3jLTlp8YmtEw= github.com/hashicorp/go-hclog v1.2.1/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= -github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-kms-wrapping/entropy v0.1.0/go.mod h1:d1g9WGtAunDNpek8jUIEJnBlbgKS1N2Q61QkHiZyR1g= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-plugin v1.4.3/go.mod h1:5fGEH17QVwTTcR0zV7yhDPLLmFX9YSZ38b18Udy6vYQ= -github.com/hashicorp/go-plugin v1.4.4 h1:NVdrSdFRt3SkZtNckJ6tog7gbpRrcbOjQi/rgF7JYWQ= -github.com/hashicorp/go-plugin v1.4.4/go.mod h1:viDMjcLJuDui6pXb8U4HVfb8AamCWhHGUjr2IrTF67s= -github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= -github.com/hashicorp/go-retryablehttp v0.6.6/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= -github.com/hashicorp/go-retryablehttp v0.7.1 h1:sUiuQAnLlbvmExtFQs72iFW/HXeUn8Z1aJLQ4LJJbTQ= -github.com/hashicorp/go-retryablehttp v0.7.1/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= -github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc= -github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= -github.com/hashicorp/go-secure-stdlib/base62 v0.1.1/go.mod h1:EdWO6czbmthiwZ3/PUsDV+UD1D5IRU4ActiaWGwt0Yw= -github.com/hashicorp/go-secure-stdlib/mlock v0.1.1 h1:cCRo8gK7oq6A2L6LICkUZ+/a5rLiRXFMf1Qd4xSwxTc= -github.com/hashicorp/go-secure-stdlib/mlock v0.1.1/go.mod h1:zq93CJChV6L9QTfGKtfBxKqD7BqqXx5O04A/ns2p5+I= -github.com/hashicorp/go-secure-stdlib/parseutil v0.1.1 h1:78ki3QBevHwYrVxnyVeaEz+7WtifHhauYF23es/0KlI= -github.com/hashicorp/go-secure-stdlib/parseutil v0.1.1/go.mod h1:QmrqtbKuxxSWTN3ETMPuB+VtEiBJ/A9XhoYGv8E1uD8= -github.com/hashicorp/go-secure-stdlib/password v0.1.1/go.mod h1:9hH302QllNwu1o2TGYtSk8I8kTAN0ca1EHpwhm5Mmzo= -github.com/hashicorp/go-secure-stdlib/strutil v0.1.1 h1:nd0HIW15E6FG1MsnArYaHfuw9C2zgzM8LxkG5Ty/788= -github.com/hashicorp/go-secure-stdlib/strutil v0.1.1/go.mod h1:gKOamz3EwoIoJq7mlMIRBpVTAUn8qPCrEclOKKWhD3U= -github.com/hashicorp/go-secure-stdlib/tlsutil v0.1.1/go.mod h1:l8slYwnJA26yBz+ErHpp2IRCLr0vuOMGBORIz4rRiAs= -github.com/hashicorp/go-sockaddr v1.0.2 h1:ztczhD1jLxIRjVejw8gFomI1BQZOe2WoVOu0SyteCQc= -github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.5.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= -github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.9.1/go.mod h1:FwWsfWEjyV/CMj8s/gqAuiviY72rJ1/oayI9WftqcKg= github.com/hashicorp/hcl/v2 v2.14.1 h1:x0BpjfZ+CYdbiz+8yZTQ+gdLO7IXvOut7Da+XJayx34= github.com/hashicorp/hcl/v2 v2.14.1/go.mod h1:e4z5nxYlWNPdDSNYX+ph14EvWYMFm3eP0zIUqPc2jr0= @@ -317,47 +226,27 @@ github.com/hashicorp/terraform-plugin-log v0.7.0 h1:SDxJUyT8TwN4l5b5/VkiTIaQgY6R github.com/hashicorp/terraform-plugin-log v0.7.0/go.mod h1:p4R1jWBXRTvL4odmEkFfDdhUjHf9zcs/BCoNHAc7IK4= github.com/hashicorp/terraform-plugin-sdk/v2 v2.24.0 h1:FtCLTiTcykdsURXPt/ku7fYXm3y19nbzbZcUxHx9RbI= github.com/hashicorp/terraform-plugin-sdk/v2 v2.24.0/go.mod h1:80wf5oad1tW+oLnbXS4UTYmDCrl7BuN1Q+IA91X1a4Y= -github.com/hashicorp/vault/api v1.5.0 h1:Bp6yc2bn7CWkOrVIzFT/Qurzx528bdavF3nz590eu28= -github.com/hashicorp/vault/api v1.5.0/go.mod h1:LkMdrZnWNrFaQyYYazWVn7KshilfDidgVBq6YiTq/bM= -github.com/hashicorp/vault/sdk v0.4.1 h1:3SaHOJY687jY1fnB61PtL0cOkKItphrbLmux7T92HBo= -github.com/hashicorp/vault/sdk v0.4.1/go.mod h1:aZ3fNuL5VNydQk8GcLJ2TV8YCRVvyaakYkhZRoVuhj0= -github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= -github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d h1:kJCB4vdITiW1eC1vq2e6IsrXKrZit1bv/TDYFGMp4BQ= -github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0= github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= -github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc= -github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= +github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jhump/protoreflect v1.6.0 h1:h5jfMVslIg6l29nsMs0D8Wj17RDVdNYti0vDN/PZZoE= -github.com/jhump/protoreflect v1.6.0/go.mod h1:eaTn3RZAmMBcV0fifFvlm6VHNz3wSkYyXYWUh7ymB74= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= -github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -365,151 +254,90 @@ github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= +github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= -github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-ps v1.0.0 h1:i6ampVEEF4wQFF+bkYfwYgY+F/uYJDktmvLPf7qIgjc= github.com/mitchellh/go-ps v1.0.0/go.mod h1:J4lOc8z8yJs6vUwklHw2XEIiT4z4C40KtWVN3nvg8Pg= -github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= -github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= -github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.4.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/muvaf/typewriter v0.0.0-20220131201631-921e94e8e8d7 h1:CxRHKnh1YJXgNKxcos9rrKL6AcmOl1AS/fygmxFDzh4= github.com/muvaf/typewriter v0.0.0-20220131201631-921e94e8e8d7/go.mod h1:SAAdeMEiFXR8LcHffvIdiLI1w243DCH2DuHq7UrA5YQ= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nsf/jsondiff v0.0.0-20200515183724-f29ed568f4ce h1:RPclfga2SEJmgMmz2k+Mg7cowZ8yv4Trqw9UsJby758= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= -github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= -github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= -github.com/onsi/ginkgo/v2 v2.6.0 h1:9t9b9vRUbFq3C4qKFCGkVuq/fIHji802N1nrtkh1mNc= -github.com/onsi/gomega v1.24.2 h1:J/tulyYK6JwBldPViHJReihxxZ+22FHs0piGjQAvoUE= -github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= -github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pierrec/lz4 v2.5.2+incompatible h1:WCjObylUIOlKy/+7Abdn34TLIkXiA4UWUMhxq9m9ZXI= -github.com/pierrec/lz4 v2.5.2+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/onsi/ginkgo/v2 v2.11.0 h1:WgqUCUt/lT6yXoQ8Wef0fsNn5cAuMK7+KT9UFRz2tcU= +github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= -github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= -github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= -github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8= +github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= -github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.37.0 h1:ccBbHCgIiT9uSoFY0vX8H3zsNR5eLt17/RQLUvn8pXE= -github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= -github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY= +github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= +github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= +github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= +github.com/prometheus/procfs v0.10.1 h1:kYK1Va/YMlutzCGazswoHKo//tZVlFpKYh+PymziUAg= +github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk= -github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= github.com/sebdah/goldie v1.0.0/go.mod h1:jXP4hmWywNEwZzhMuv2ccnqTSFpuq8iyQhtQdkkZBH4= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.9.2 h1:j49Hj62F0n+DaZ1dDCvhABaPNSGNkt32oRFxI33IEMw= -github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= -github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA= -github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= +github.com/spf13/afero v1.10.0 h1:EaGW2JJh15aKOejeuJ+wpFSHnbd7GE6Wvp3TsNhb6LY= +github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= +github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= +github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0 h1:M2gUjqZET1qApGOWNSnZ49BAIMX4F/1plDv3+l31EJ4= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= -github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= github.com/tmccombs/hcl2json v0.3.3 h1:+DLNYqpWE0CsOQiEZu+OZm5ZBImake3wtITYxQ8uLFQ= github.com/tmccombs/hcl2json v0.3.3/go.mod h1:Y2chtz2x9bAeRTvSibVRVgbLJhLJXKlUeIvjeVdnm4w= -github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= -github.com/upbound/upjet v0.9.0-rc.0.0.20230427131841-1d0b7b0c08f8 h1:dFGXjvdaPxZe/Zs/5wNZ+t0lACy9WpAfEsemURfmGK0= -github.com/upbound/upjet v0.9.0-rc.0.0.20230427131841-1d0b7b0c08f8/go.mod h1:CWxJ9YTMy7q+bDc2W504ocL/ZzBmWabwwcRjIaP7CKc= +github.com/upbound/upjet v0.10.0 h1:6nxc0GUBcL4BDHxQUUZWjw4ROXu5KRK9jOpb7LeJ+NQ= +github.com/upbound/upjet v0.10.0/go.mod h1:2RXHgpIugCL/S/Use1QJAeVaev901RBeUByQh5gUtGk= github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI= github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= @@ -517,9 +345,6 @@ github.com/vmihailenco/msgpack/v4 v4.3.12 h1:07s4sz9IReOgdikxLTKNbBdqDMLsjPKXwvC github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= github.com/vmihailenco/tagparser v0.1.1 h1:quXMXlA39OCbd2wAdTsGDlK9RkOk6Wuw+x37wVyIuWY= github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= -github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -540,20 +365,15 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= -go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= -go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= +go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8= -go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= -go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= -go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= +go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -561,10 +381,7 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.2.0 h1:BRXPfhNivWL5Yq0BGQ39a2sW6t44aODpfxkWjYdzewE= -golang.org/x/crypto v0.2.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= +golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -575,6 +392,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI= +golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -599,13 +418,11 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.7.0 h1:LapD9S96VoQRhi/GrNTqeBJFrUjs5UHCAtTlgwA5oZA= -golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/net v0.0.0-20180530234432-1e491301e022/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY= +golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -613,7 +430,6 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -638,12 +454,9 @@ golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= -golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -653,10 +466,8 @@ golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.1.0 h1:isLCZuhj4v+tYv7eskaN4v/TM+A1begWWgyVJDdl1+Y= -golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= +golang.org/x/oauth2 v0.11.0 h1:vPL4xzxBM4niKCW6g9whtaWVXTJf1U5e4aZxxFx/gbU= +golang.org/x/oauth2 v0.11.0/go.mod h1:LdF7O/8bLR/qWK9DrpXmbHLTouvRHK0SgJl0GmDBchk= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -668,16 +479,11 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -685,10 +491,8 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -702,8 +506,6 @@ golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -711,27 +513,22 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek= +golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -741,12 +538,11 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -764,7 +560,6 @@ golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -800,14 +595,15 @@ golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.4.0 h1:7mTAgkunk3fr4GAloyyCasadO6h9zSsQZbwvcaIciV4= -golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc= +golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gomodules.xyz/jsonpatch/v2 v2.2.0 h1:4pT439QV83L+G9FkcCriY6EkpcK6r6bK+A5FBUMI7qY= -gomodules.xyz/jsonpatch/v2 v2.2.0/go.mod h1:WXp+iVDkoLQqPudfQ9GBlwB2eZ5DKOnjQZCYdOS8GPY= +gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw= +gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -835,7 +631,6 @@ google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCID google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20170818010345-ee236bd376b0/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -859,7 +654,6 @@ google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= @@ -873,10 +667,8 @@ google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20221202195650-67e5cbc046fd h1:OjndDrsik+Gt+e6fs45z9AxiewiKyLKYpA45W5Kpkks= -google.golang.org/genproto v0.0.0-20221202195650-67e5cbc046fd/go.mod h1:cTsE614GARnxrLsqKREzmNYJACSWWpAWdNMwnD7c2BE= -google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d h1:uvYuEyMHKNt+lT4K3bN6fGswmK8qSvcreM3BwjDh+y4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -890,15 +682,11 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k= -google.golang.org/grpc v1.50.1 h1:DS/BukOZWp8s6p4Dt/tOaJaTQyPyOoCcrjroHuCeLzY= -google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= +google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -911,34 +699,23 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.2-0.20220831092852-f930b1dc76e8 h1:KR8+MyP7/qOlV+8Af01LtjL04bu7on42eVsxT4EyBQk= -google.golang.org/protobuf v1.28.2-0.20220831092852-f930b1dc76e8/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/square/go-jose.v2 v2.5.1 h1:7odma5RETjNHWJnR32wx8t+Io4djHE1PqxCFx3iiZ2w= -gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -948,31 +725,31 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/api v0.26.3 h1:emf74GIQMTik01Aum9dPP0gAypL8JTLl/lHa4V9RFSU= -k8s.io/api v0.26.3/go.mod h1:PXsqwPMXBSBcL1lJ9CYDKy7kIReUydukS5JiRlxC3qE= -k8s.io/apiextensions-apiserver v0.26.3 h1:5PGMm3oEzdB1W/FTMgGIDmm100vn7IaUP5er36dB+YE= -k8s.io/apiextensions-apiserver v0.26.3/go.mod h1:jdA5MdjNWGP+njw1EKMZc64xAT5fIhN6VJrElV3sfpQ= -k8s.io/apimachinery v0.26.3 h1:dQx6PNETJ7nODU3XPtrwkfuubs6w7sX0M8n61zHIV/k= -k8s.io/apimachinery v0.26.3/go.mod h1:ats7nN1LExKHvJ9TmwootT00Yz05MuYqPXEXaVeOy5I= -k8s.io/client-go v0.26.3 h1:k1UY+KXfkxV2ScEL3gilKcF7761xkYsSD6BC9szIu8s= -k8s.io/client-go v0.26.3/go.mod h1:ZPNu9lm8/dbRIPAgteN30RSXea6vrCpFvq+MateTUuQ= -k8s.io/component-base v0.26.3 h1:oC0WMK/ggcbGDTkdcqefI4wIZRYdK3JySx9/HADpV0g= -k8s.io/component-base v0.26.3/go.mod h1:5kj1kZYwSC6ZstHJN7oHBqcJC6yyn41eR+Sqa/mQc8E= -k8s.io/klog/v2 v2.80.1 h1:atnLQ121W371wYYFawwYx1aEY2eUfs4l3J72wtgAwV4= -k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280 h1:+70TFaan3hfJzs+7VK2o+OGxg8HsuBr/5f6tVAjDu6E= -k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280/go.mod h1:+Axhij7bCpeqhklhUTe3xmOn6bWxolyZEeyaFpjGtl4= -k8s.io/utils v0.0.0-20221128185143-99ec85e7a448 h1:KTgPnR10d5zhztWptI952TNtt/4u5h3IzDXkdIMuo2Y= -k8s.io/utils v0.0.0-20221128185143-99ec85e7a448/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +k8s.io/api v0.28.3 h1:Gj1HtbSdB4P08C8rs9AR94MfSGpRhJgsS+GF9V26xMM= +k8s.io/api v0.28.3/go.mod h1:MRCV/jr1dW87/qJnZ57U5Pak65LGmQVkKTzf3AtKFHc= +k8s.io/apiextensions-apiserver v0.28.3 h1:Od7DEnhXHnHPZG+W9I97/fSQkVpVPQx2diy+2EtmY08= +k8s.io/apiextensions-apiserver v0.28.3/go.mod h1:NE1XJZ4On0hS11aWWJUTNkmVB03j9LM7gJSisbRt8Lc= +k8s.io/apimachinery v0.28.3 h1:B1wYx8txOaCQG0HmYF6nbpU8dg6HvA06x5tEffvOe7A= +k8s.io/apimachinery v0.28.3/go.mod h1:uQTKmIqs+rAYaq+DFaoD2X7pcjLOqbQX2AOiO0nIpb8= +k8s.io/client-go v0.28.3 h1:2OqNb72ZuTZPKCl+4gTKvqao0AMOl9f3o2ijbAj3LI4= +k8s.io/client-go v0.28.3/go.mod h1:LTykbBp9gsA7SwqirlCXBWtK0guzfhpoW4qSm7i9dxo= +k8s.io/component-base v0.28.3 h1:rDy68eHKxq/80RiMb2Ld/tbH8uAE75JdCqJyi6lXMzI= +k8s.io/component-base v0.28.3/go.mod h1:fDJ6vpVNSk6cRo5wmDa6eKIG7UlIQkaFmZN2fYgIUD8= +k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg= +k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 h1:LyMgNKD2P8Wn1iAwQU5OhxCKlKJy0sHc+PcDwFB24dQ= +k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9/go.mod h1:wZK2AVp1uHCp4VamDVgBP2COHZjqD1T68Rf0CM3YjSM= +k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= +k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/controller-runtime v0.14.6 h1:oxstGVvXGNnMvY7TAESYk+lzr6S3V5VFxQ6d92KcwQA= -sigs.k8s.io/controller-runtime v0.14.6/go.mod h1:WqIdsAY6JBsjfc/CqO0CORmNtoCtE4S6qbPc9s68h+0= -sigs.k8s.io/controller-tools v0.11.3 h1:T1xzLkog9saiyQSLz1XOImu4OcbdXWytc5cmYsBeBiE= -sigs.k8s.io/controller-tools v0.11.3/go.mod h1:qcfX7jfcfYD/b7lAhvqAyTbt/px4GpvN88WKLFFv7p8= -sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 h1:iXTIw73aPyC+oRdyqqvVJuloN1p0AC/kzH07hu3NE+k= -sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= +sigs.k8s.io/controller-runtime v0.16.3 h1:2TuvuokmfXvDUamSx1SuAOO3eTyye+47mJCigwG62c4= +sigs.k8s.io/controller-runtime v0.16.3/go.mod h1:j7bialYoSn142nv9sCOJmQgDXQXxnroFU4VnX/brVJ0= +sigs.k8s.io/controller-tools v0.13.0 h1:NfrvuZ4bxyolhDBt/rCZhDnx3M2hzlhgo5n3Iv2RykI= +sigs.k8s.io/controller-tools v0.13.0/go.mod h1:5vw3En2NazbejQGCeWKRrE7q4P+CW8/klfVqP8QZkgA= +sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= +sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= diff --git a/internal/controller/confluent/apikey/zz_controller.go b/internal/controller/confluent/apikey/zz_controller.go index 97a8fa3..b4c6567 100755 --- a/internal/controller/confluent/apikey/zz_controller.go +++ b/internal/controller/confluent/apikey/zz_controller.go @@ -15,6 +15,7 @@ import ( "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/controller/handler" "github.com/upbound/upjet/pkg/terraform" ctrl "sigs.k8s.io/controller-runtime" @@ -30,9 +31,11 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.SecretStoreConfigGVK != nil { cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.APIKey_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.APIKey_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) opts := []managed.ReconcilerOption{ - managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["confluent_api_key"], tjcontroller.WithLogger(o.Logger), - tjcontroller.WithCallbackProvider(tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.APIKey_GroupVersionKind))), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["confluent_api_key"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), )), managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), @@ -50,6 +53,7 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). - For(&v1alpha1.APIKey{}). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.APIKey{}, eventHandler). Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) } diff --git a/internal/controller/confluent/cluster/zz_controller.go b/internal/controller/confluent/cluster/zz_controller.go index b227994..4b3903f 100755 --- a/internal/controller/confluent/cluster/zz_controller.go +++ b/internal/controller/confluent/cluster/zz_controller.go @@ -15,6 +15,7 @@ import ( "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/controller/handler" "github.com/upbound/upjet/pkg/terraform" ctrl "sigs.k8s.io/controller-runtime" @@ -30,9 +31,11 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.SecretStoreConfigGVK != nil { cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.Cluster_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.Cluster_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) opts := []managed.ReconcilerOption{ - managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["confluent_kafka_cluster"], tjcontroller.WithLogger(o.Logger), - tjcontroller.WithCallbackProvider(tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.Cluster_GroupVersionKind))), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["confluent_kafka_cluster"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), )), managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), @@ -50,6 +53,7 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). - For(&v1alpha1.Cluster{}). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.Cluster{}, eventHandler). Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) } diff --git a/internal/controller/confluent/clusterconfig/zz_controller.go b/internal/controller/confluent/clusterconfig/zz_controller.go index d601c18..326a529 100755 --- a/internal/controller/confluent/clusterconfig/zz_controller.go +++ b/internal/controller/confluent/clusterconfig/zz_controller.go @@ -15,6 +15,7 @@ import ( "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/controller/handler" "github.com/upbound/upjet/pkg/terraform" ctrl "sigs.k8s.io/controller-runtime" @@ -30,9 +31,11 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.SecretStoreConfigGVK != nil { cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.ClusterConfig_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.ClusterConfig_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) opts := []managed.ReconcilerOption{ - managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["confluent_kafka_cluster_config"], tjcontroller.WithLogger(o.Logger), - tjcontroller.WithCallbackProvider(tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.ClusterConfig_GroupVersionKind))), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["confluent_kafka_cluster_config"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), )), managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), @@ -50,6 +53,7 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). - For(&v1alpha1.ClusterConfig{}). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.ClusterConfig{}, eventHandler). Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) } diff --git a/internal/controller/confluent/environment/zz_controller.go b/internal/controller/confluent/environment/zz_controller.go index 9c54a32..5bfc92c 100755 --- a/internal/controller/confluent/environment/zz_controller.go +++ b/internal/controller/confluent/environment/zz_controller.go @@ -15,6 +15,7 @@ import ( "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/controller/handler" "github.com/upbound/upjet/pkg/terraform" ctrl "sigs.k8s.io/controller-runtime" @@ -30,9 +31,11 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.SecretStoreConfigGVK != nil { cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.Environment_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.Environment_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) opts := []managed.ReconcilerOption{ - managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["confluent_environment"], tjcontroller.WithLogger(o.Logger), - tjcontroller.WithCallbackProvider(tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.Environment_GroupVersionKind))), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["confluent_environment"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), )), managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), @@ -50,6 +53,7 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). - For(&v1alpha1.Environment{}). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.Environment{}, eventHandler). Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) } diff --git a/internal/controller/confluent/kafkaacl/zz_controller.go b/internal/controller/confluent/kafkaacl/zz_controller.go index fa7e00d..4f68400 100755 --- a/internal/controller/confluent/kafkaacl/zz_controller.go +++ b/internal/controller/confluent/kafkaacl/zz_controller.go @@ -15,6 +15,7 @@ import ( "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/controller/handler" "github.com/upbound/upjet/pkg/terraform" ctrl "sigs.k8s.io/controller-runtime" @@ -30,9 +31,11 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.SecretStoreConfigGVK != nil { cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.KafkaACL_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.KafkaACL_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) opts := []managed.ReconcilerOption{ - managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["confluent_kafka_acl"], tjcontroller.WithLogger(o.Logger), - tjcontroller.WithCallbackProvider(tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.KafkaACL_GroupVersionKind))), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["confluent_kafka_acl"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), )), managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), @@ -50,6 +53,7 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). - For(&v1alpha1.KafkaACL{}). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.KafkaACL{}, eventHandler). Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) } diff --git a/internal/controller/confluent/rolebinding/zz_controller.go b/internal/controller/confluent/rolebinding/zz_controller.go index 95f1ccc..ad6c63e 100755 --- a/internal/controller/confluent/rolebinding/zz_controller.go +++ b/internal/controller/confluent/rolebinding/zz_controller.go @@ -15,6 +15,7 @@ import ( "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/controller/handler" "github.com/upbound/upjet/pkg/terraform" ctrl "sigs.k8s.io/controller-runtime" @@ -30,9 +31,11 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.SecretStoreConfigGVK != nil { cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.RoleBinding_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.RoleBinding_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) opts := []managed.ReconcilerOption{ - managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["confluent_role_binding"], tjcontroller.WithLogger(o.Logger), - tjcontroller.WithCallbackProvider(tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.RoleBinding_GroupVersionKind))), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["confluent_role_binding"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), )), managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), @@ -50,6 +53,7 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). - For(&v1alpha1.RoleBinding{}). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.RoleBinding{}, eventHandler). Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) } diff --git a/internal/controller/confluent/serviceaccount/zz_controller.go b/internal/controller/confluent/serviceaccount/zz_controller.go index 588fcec..1a7359a 100755 --- a/internal/controller/confluent/serviceaccount/zz_controller.go +++ b/internal/controller/confluent/serviceaccount/zz_controller.go @@ -15,6 +15,7 @@ import ( "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/controller/handler" "github.com/upbound/upjet/pkg/terraform" ctrl "sigs.k8s.io/controller-runtime" @@ -30,9 +31,11 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.SecretStoreConfigGVK != nil { cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), *o.SecretStoreConfigGVK, connection.WithTLSConfig(o.ESSOptions.TLSConfig))) } + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1alpha1.ServiceAccount_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.ServiceAccount_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) opts := []managed.ReconcilerOption{ - managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["confluent_service_account"], tjcontroller.WithLogger(o.Logger), - tjcontroller.WithCallbackProvider(tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.ServiceAccount_GroupVersionKind))), + managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["confluent_service_account"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), + tjcontroller.WithCallbackProvider(ac), )), managed.WithLogger(o.Logger.WithValues("controller", name)), managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), @@ -50,6 +53,7 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). - For(&v1alpha1.ServiceAccount{}). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1alpha1.ServiceAccount{}, eventHandler). Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) } diff --git a/package/crds/confluent.crossplane.io_apikeys.yaml b/package/crds/confluent.crossplane.io_apikeys.yaml index ef467ba..a8202c8 100644 --- a/package/crds/confluent.crossplane.io_apikeys.yaml +++ b/package/crds/confluent.crossplane.io_apikeys.yaml @@ -3,8 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.11.3 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.13.0 name: apikeys.confluent.crossplane.io spec: group: confluent.crossplane.io @@ -35,7 +34,7 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: APIKey is the Schema for the APIKeys API. + description: APIKey is the Schema for the APIKeys API. properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation @@ -57,7 +56,7 @@ spec: description: 'DeletionPolicy specifies what will happen to the underlying external when this managed resource is deleted - either "Delete" or "Orphan" the external resource. This field is planned to be deprecated - in favor of the ManagementPolicy field in a future release. Currently, + in favor of the ManagementPolicies field in a future release. Currently, both could be set independently and non-default values would be honored if the feature flag is enabled. See the design doc for more information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' @@ -68,29 +67,41 @@ spec: forProvider: properties: description: - description: A free-form description of the API key. + description: A free-form description of the API Account. A free-form + description of the API key. type: string disableWaitForReady: - description: Defaults to `false`. + description: An optional flag to disable wait-for-readiness on + create. Its primary use case is for Cluster API Keys for private + networking options when readiness check fails. Must be unset + when importing. Defaults to false. Defaults to `false`. type: boolean displayName: - description: A human-readable name for the API key. + description: A human-readable name for the API Key. A human-readable + name for the API key. type: string managedResource: - description: The resource associated with this object. The only - resource that is supported is 'cmk.v2.Cluster', 'srcm.v2.Cluster'. + description: 'This block must be set for Cluster API Keys and + must be omitted for Cloud API Keys. It supports the following: + The resource associated with this object. The only resource + that is supported is ''cmk.v2.Cluster'', ''srcm.v2.Cluster''.' items: properties: apiVersion: - description: The API version of the referred owner. + description: The API group and version of the owner that + the API Key belongs to, for example, iam/v2. The API version + of the referred owner. type: string environment: - description: Environment objects represent an isolated namespace - for your Confluent resources for organizational purposes. + description: 'supports the following: Environment objects + represent an isolated namespace for your Confluent resources + for organizational purposes.' items: properties: id: - description: The unique identifier for the environment. + description: The ID of the owner that the API Key + belongs to, for example, sa-abc123 or u-abc123. + The unique identifier for the environment. type: string idRef: description: Reference to a Environment to populate @@ -175,7 +186,9 @@ spec: type: object type: array id: - description: The unique identifier for the referred resource. + description: The ID of the owner that the API Key belongs + to, for example, sa-abc123 or u-abc123. The unique identifier + for the referred resource. type: string idRef: description: Reference to a Cluster to populate id. @@ -254,24 +267,26 @@ spec: type: object type: object kind: - description: The kind of the referred resource. + description: The kind of the owner that the API Key belongs + to, for example, ServiceAccount or User. The kind of the + referred resource. type: string - required: - - apiVersion - - environment - - kind type: object type: array owner: - description: The owner to which the API Key belongs. The owner - can be one of 'iam.v2.User', 'iam.v2.ServiceAccount'. + description: 'supports the following: The owner to which the API + Key belongs. The owner can be one of ''iam.v2.User'', ''iam.v2.ServiceAccount''.' items: properties: apiVersion: - description: The API version of the referred owner. + description: The API group and version of the owner that + the API Key belongs to, for example, iam/v2. The API version + of the referred owner. type: string id: - description: The unique identifier for the referred owner. + description: The ID of the owner that the API Key belongs + to, for example, sa-abc123 or u-abc123. The unique identifier + for the referred owner. type: string idRef: description: Reference to a ServiceAccount to populate id. @@ -350,29 +365,109 @@ spec: type: object type: object kind: - description: The kind of the referred owner. + description: The kind of the owner that the API Key belongs + to, for example, ServiceAccount or User. The kind of the + referred owner. type: string - required: - - apiVersion - - kind type: object type: array type: object - managementPolicy: - default: FullControl - description: 'THIS IS AN ALPHA FIELD. Do not use it in production. + initProvider: + description: THIS IS AN ALPHA FIELD. Do not use it in production. It is not honored unless the relevant Crossplane feature flag is - enabled, and may be changed or removed without notice. ManagementPolicy - specifies the level of control Crossplane has over the managed external - resource. This field is planned to replace the DeletionPolicy field - in a future release. Currently, both could be set independently - and non-default values would be honored if the feature flag is enabled. - See the design doc for more information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' - enum: - - FullControl - - ObserveOnly - - OrphanOnDelete - type: string + enabled, and may be changed or removed without notice. InitProvider + holds the same fields as ForProvider, with the exception of Identifier + and other resource reference fields. The fields that are in InitProvider + are merged into ForProvider when the resource is created. The same + fields are also added to the terraform ignore_changes hook, to avoid + updating them after creation. This is useful for fields that are + required on creation, but we do not desire to update them after + creation, for example because of an external controller is managing + them, like an autoscaler. + properties: + description: + description: A free-form description of the API Account. A free-form + description of the API key. + type: string + disableWaitForReady: + description: An optional flag to disable wait-for-readiness on + create. Its primary use case is for Cluster API Keys for private + networking options when readiness check fails. Must be unset + when importing. Defaults to false. Defaults to `false`. + type: boolean + displayName: + description: A human-readable name for the API Key. A human-readable + name for the API key. + type: string + managedResource: + description: 'This block must be set for Cluster API Keys and + must be omitted for Cloud API Keys. It supports the following: + The resource associated with this object. The only resource + that is supported is ''cmk.v2.Cluster'', ''srcm.v2.Cluster''.' + items: + properties: + apiVersion: + description: The API group and version of the owner that + the API Key belongs to, for example, iam/v2. The API version + of the referred owner. + type: string + environment: + description: 'supports the following: Environment objects + represent an isolated namespace for your Confluent resources + for organizational purposes.' + items: + type: object + type: array + kind: + description: The kind of the owner that the API Key belongs + to, for example, ServiceAccount or User. The kind of the + referred resource. + type: string + type: object + type: array + owner: + description: 'supports the following: The owner to which the API + Key belongs. The owner can be one of ''iam.v2.User'', ''iam.v2.ServiceAccount''.' + items: + properties: + apiVersion: + description: The API group and version of the owner that + the API Key belongs to, for example, iam/v2. The API version + of the referred owner. + type: string + kind: + description: The kind of the owner that the API Key belongs + to, for example, ServiceAccount or User. The kind of the + referred owner. + type: string + type: object + type: array + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array providerConfigRef: default: name: default @@ -411,42 +506,6 @@ spec: 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 @@ -546,62 +605,88 @@ spec: type: object x-kubernetes-validations: - message: owner is a required parameter - rule: self.managementPolicy == 'ObserveOnly' || has(self.forProvider.owner) + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.owner) + || has(self.initProvider.owner)' status: description: APIKeyStatus defines the observed state of APIKey. properties: atProvider: properties: description: - description: A free-form description of the API key. + description: A free-form description of the API Account. A free-form + description of the API key. type: string disableWaitForReady: - description: Defaults to `false`. + description: An optional flag to disable wait-for-readiness on + create. Its primary use case is for Cluster API Keys for private + networking options when readiness check fails. Must be unset + when importing. Defaults to false. Defaults to `false`. type: boolean displayName: - description: A human-readable name for the API key. + description: A human-readable name for the API Key. A human-readable + name for the API key. type: string id: + description: The ID of the owner that the API Key belongs to, + for example, sa-abc123 or u-abc123. type: string managedResource: - description: The resource associated with this object. The only - resource that is supported is 'cmk.v2.Cluster', 'srcm.v2.Cluster'. + description: 'This block must be set for Cluster API Keys and + must be omitted for Cloud API Keys. It supports the following: + The resource associated with this object. The only resource + that is supported is ''cmk.v2.Cluster'', ''srcm.v2.Cluster''.' items: properties: apiVersion: - description: The API version of the referred owner. + description: The API group and version of the owner that + the API Key belongs to, for example, iam/v2. The API version + of the referred owner. type: string environment: - description: Environment objects represent an isolated namespace - for your Confluent resources for organizational purposes. + description: 'supports the following: Environment objects + represent an isolated namespace for your Confluent resources + for organizational purposes.' items: properties: id: - description: The unique identifier for the environment. + description: The ID of the owner that the API Key + belongs to, for example, sa-abc123 or u-abc123. + The unique identifier for the environment. type: string type: object type: array id: - description: The unique identifier for the referred resource. + description: The ID of the owner that the API Key belongs + to, for example, sa-abc123 or u-abc123. The unique identifier + for the referred resource. type: string kind: - description: The kind of the referred resource. + description: The kind of the owner that the API Key belongs + to, for example, ServiceAccount or User. The kind of the + referred resource. type: string type: object type: array owner: - description: The owner to which the API Key belongs. The owner - can be one of 'iam.v2.User', 'iam.v2.ServiceAccount'. + description: 'supports the following: The owner to which the API + Key belongs. The owner can be one of ''iam.v2.User'', ''iam.v2.ServiceAccount''.' items: properties: apiVersion: - description: The API version of the referred owner. + description: The API group and version of the owner that + the API Key belongs to, for example, iam/v2. The API version + of the referred owner. type: string id: - description: The unique identifier for the referred owner. + description: The ID of the owner that the API Key belongs + to, for example, sa-abc123 or u-abc123. The unique identifier + for the referred owner. type: string kind: - description: The kind of the referred owner. + description: The kind of the owner that the API Key belongs + to, for example, ServiceAccount or User. The kind of the + referred owner. type: string type: object type: array @@ -639,6 +724,9 @@ spec: - type type: object type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map type: object required: - spec diff --git a/package/crds/confluent.crossplane.io_clusterconfigs.yaml b/package/crds/confluent.crossplane.io_clusterconfigs.yaml index ddfa15f..c255de6 100644 --- a/package/crds/confluent.crossplane.io_clusterconfigs.yaml +++ b/package/crds/confluent.crossplane.io_clusterconfigs.yaml @@ -3,8 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.11.3 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.13.0 name: clusterconfigs.confluent.crossplane.io spec: group: confluent.crossplane.io @@ -35,7 +34,7 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: ClusterConfig is the Schema for the ClusterConfigs API. + description: ClusterConfig is the Schema for the ClusterConfigs API. properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation @@ -57,7 +56,7 @@ spec: description: 'DeletionPolicy specifies what will happen to the underlying external when this managed resource is deleted - either "Delete" or "Orphan" the external resource. This field is planned to be deprecated - in favor of the ManagementPolicy field in a future release. Currently, + in favor of the ManagementPolicies field in a future release. Currently, both could be set independently and non-default values would be honored if the feature flag is enabled. See the design doc for more information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' @@ -70,16 +69,16 @@ spec: config: additionalProperties: type: string - description: The custom cluster settings to set (e.g., `"num.partitions" - = "8"`). + description: 'The custom cluster settings to set: The custom cluster + settings to set (e.g., `"num.partitions" = "8"`).' type: object credentials: - description: The Cluster API Credentials. + description: 'supports the following: The Cluster API Credentials.' items: properties: keySecretRef: - description: The Cluster API Key for your Confluent Cloud - cluster. + description: The Kafka API Key. The Cluster API Key for + your Confluent Cloud cluster. properties: key: description: The key to select. @@ -96,8 +95,8 @@ spec: - namespace type: object secretSecretRef: - description: The Cluster API Secret for your Confluent Cloud - cluster. + description: The Kafka API Secret. The Cluster API Secret + for your Confluent Cloud cluster. properties: key: description: The key to select. @@ -119,34 +118,86 @@ spec: type: object type: array kafkaCluster: + description: 'supports the following:' items: properties: id: - description: The Kafka cluster ID (e.g., `lkc-12345`). + description: The ID of the Dedicated Kafka cluster, for + example, lkc-abc123. The Kafka cluster ID (e.g., `lkc-12345`). type: string - required: - - id type: object type: array restEndpoint: - description: The REST endpoint of the Kafka cluster (e.g., `https://pkc-00000.us-central1.gcp.confluent.cloud:443`). + description: The REST endpoint of the Dedicated Kafka cluster, + for example, https://pkc-00000.us-central1.gcp.confluent.cloud:443). + The REST endpoint of the Kafka cluster (e.g., `https://pkc-00000.us-central1.gcp.confluent.cloud:443`). type: string type: object - managementPolicy: - default: FullControl - description: 'THIS IS AN ALPHA FIELD. Do not use it in production. + initProvider: + description: THIS IS AN ALPHA FIELD. Do not use it in production. It is not honored unless the relevant Crossplane feature flag is - enabled, and may be changed or removed without notice. ManagementPolicy - specifies the level of control Crossplane has over the managed external - resource. This field is planned to replace the DeletionPolicy field - in a future release. Currently, both could be set independently - and non-default values would be honored if the feature flag is enabled. - See the design doc for more information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' - enum: - - FullControl - - ObserveOnly - - OrphanOnDelete - type: string + enabled, and may be changed or removed without notice. InitProvider + holds the same fields as ForProvider, with the exception of Identifier + and other resource reference fields. The fields that are in InitProvider + are merged into ForProvider when the resource is created. The same + fields are also added to the terraform ignore_changes hook, to avoid + updating them after creation. This is useful for fields that are + required on creation, but we do not desire to update them after + creation, for example because of an external controller is managing + them, like an autoscaler. + properties: + config: + additionalProperties: + type: string + description: 'The custom cluster settings to set: The custom cluster + settings to set (e.g., `"num.partitions" = "8"`).' + type: object + credentials: + description: 'supports the following: The Cluster API Credentials.' + items: + type: object + type: array + kafkaCluster: + description: 'supports the following:' + items: + properties: + id: + description: The ID of the Dedicated Kafka cluster, for + example, lkc-abc123. The Kafka cluster ID (e.g., `lkc-12345`). + type: string + type: object + type: array + restEndpoint: + description: The REST endpoint of the Dedicated Kafka cluster, + for example, https://pkc-00000.us-central1.gcp.confluent.cloud:443). + The REST endpoint of the Kafka cluster (e.g., `https://pkc-00000.us-central1.gcp.confluent.cloud:443`). + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array providerConfigRef: default: name: default @@ -185,42 +236,6 @@ spec: 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 @@ -320,7 +335,9 @@ spec: type: object x-kubernetes-validations: - message: config is a required parameter - rule: self.managementPolicy == 'ObserveOnly' || has(self.forProvider.config) + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.config) + || has(self.initProvider.config)' status: description: ClusterConfigStatus defines the observed state of ClusterConfig. properties: @@ -329,16 +346,16 @@ spec: config: additionalProperties: type: string - description: The custom cluster settings to set (e.g., `"num.partitions" - = "8"`). + description: 'The custom cluster settings to set: The custom cluster + settings to set (e.g., `"num.partitions" = "8"`).' type: object credentials: - description: The Cluster API Credentials. + description: 'supports the following: The Cluster API Credentials.' items: properties: keySecretRef: - description: The Cluster API Key for your Confluent Cloud - cluster. + description: The Kafka API Key. The Cluster API Key for + your Confluent Cloud cluster. properties: key: description: The key to select. @@ -355,8 +372,8 @@ spec: - namespace type: object secretSecretRef: - description: The Cluster API Secret for your Confluent Cloud - cluster. + description: The Kafka API Secret. The Cluster API Secret + for your Confluent Cloud cluster. properties: key: description: The key to select. @@ -378,17 +395,23 @@ spec: type: object type: array id: + description: The ID of the Dedicated Kafka cluster, for example, + lkc-abc123. type: string kafkaCluster: + description: 'supports the following:' items: properties: id: - description: The Kafka cluster ID (e.g., `lkc-12345`). + description: The ID of the Dedicated Kafka cluster, for + example, lkc-abc123. The Kafka cluster ID (e.g., `lkc-12345`). type: string type: object type: array restEndpoint: - description: The REST endpoint of the Kafka cluster (e.g., `https://pkc-00000.us-central1.gcp.confluent.cloud:443`). + description: The REST endpoint of the Dedicated Kafka cluster, + for example, https://pkc-00000.us-central1.gcp.confluent.cloud:443). + The REST endpoint of the Kafka cluster (e.g., `https://pkc-00000.us-central1.gcp.confluent.cloud:443`). type: string type: object conditions: @@ -424,6 +447,9 @@ spec: - type type: object type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map type: object required: - spec diff --git a/package/crds/confluent.crossplane.io_clusters.yaml b/package/crds/confluent.crossplane.io_clusters.yaml index ab9e90b..6dbf3a3 100644 --- a/package/crds/confluent.crossplane.io_clusters.yaml +++ b/package/crds/confluent.crossplane.io_clusters.yaml @@ -3,8 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.11.3 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.13.0 name: clusters.confluent.crossplane.io spec: group: confluent.crossplane.io @@ -35,7 +34,7 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: Cluster is the Schema for the Clusters API. + description: Cluster is the Schema for the Clusters API. properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation @@ -57,7 +56,7 @@ spec: description: 'DeletionPolicy specifies what will happen to the underlying external when this managed resource is deleted - either "Delete" or "Orphan" the external resource. This field is planned to be deprecated - in favor of the ManagementPolicy field in a future release. Currently, + in favor of the ManagementPolicies field in a future release. Currently, both could be set independently and non-default values would be honored if the feature flag is enabled. See the design doc for more information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' @@ -68,57 +67,70 @@ spec: forProvider: properties: availability: - description: The availability zone configuration of the Kafka - cluster. + description: 'The availability zone configuration of the Kafka + cluster. Accepted values are: SINGLE_ZONE and MULTI_ZONE. The + availability zone configuration of the Kafka cluster.' type: string basic: + description: The configuration of the Basic Kafka cluster. items: type: object type: array byokKey: + description: 'supports the following:' items: properties: id: - description: The ID of the Confluent key that is used to - encrypt the data in the Kafka cluster. + description: The ID of the Environment that the Kafka cluster + belongs to, for example, env-abc123. The ID of the Confluent + key that is used to encrypt the data in the Kafka cluster. type: string - required: - - id type: object type: array cloud: - description: The cloud service provider that runs the Kafka cluster. + description: 'The cloud service provider that runs the Kafka cluster. + Accepted values are: AWS, AZURE, and GCP. The cloud service + provider that runs the Kafka cluster.' type: string dedicated: + description: 'The configuration of the Dedicated Kafka cluster. + It supports the following:' items: properties: cku: description: The number of Confluent Kafka Units (CKUs) - for Dedicated cluster types. MULTI_ZONE dedicated clusters - must have at least two CKUs. + for Dedicated cluster types. The minimum number of CKUs + for SINGLE_ZONE dedicated clusters is 1 whereas MULTI_ZONE + dedicated clusters must have more than 2 CKUs. The number + of Confluent Kafka Units (CKUs) for Dedicated cluster + types. MULTI_ZONE dedicated clusters must have at least + two CKUs. type: number encryptionKey: description: The ID of the encryption key that is used to encrypt the data in the Kafka cluster. type: string - required: - - cku type: object type: array displayName: - description: The name of the Kafka cluster. + description: The name of the Kafka cluster. The name of the Kafka + cluster. type: string enterprise: + description: The configuration of the Enterprise Kafka cluster. items: type: object type: array environment: - description: Environment objects represent an isolated namespace - for your Confluent resources for organizational purposes. + description: 'supports the following: Environment objects represent + an isolated namespace for your Confluent resources for organizational + purposes.' items: properties: id: - description: The unique identifier for the environment. + description: The ID of the Environment that the Kafka cluster + belongs to, for example, env-abc123. The unique identifier + for the environment. type: string idRef: description: Reference to a Environment in confluent to @@ -201,41 +213,157 @@ spec: type: object type: array network: - description: Network represents a network (VPC) in Confluent Cloud. - All Networks exist within Confluent-managed cloud provider accounts. + description: 'supports the following: Network represents a network + (VPC) in Confluent Cloud. All Networks exist within Confluent-managed + cloud provider accounts.' items: properties: id: - description: The unique identifier for the network. + description: The ID of the Environment that the Kafka cluster + belongs to, for example, env-abc123. The unique identifier + for the network. type: string - required: - - id type: object type: array region: description: The cloud service provider region where the Kafka - cluster is running. + cluster is running, for example, us-west-2. See Cloud Providers + and Regions for a full list of options for AWS, Azure, and GCP. + The cloud service provider region where the Kafka cluster is + running. type: string standard: + description: The configuration of the Standard Kafka cluster. items: type: object type: array type: object - managementPolicy: - default: FullControl - description: 'THIS IS AN ALPHA FIELD. Do not use it in production. + initProvider: + description: THIS IS AN ALPHA FIELD. Do not use it in production. It is not honored unless the relevant Crossplane feature flag is - enabled, and may be changed or removed without notice. ManagementPolicy - specifies the level of control Crossplane has over the managed external - resource. This field is planned to replace the DeletionPolicy field - in a future release. Currently, both could be set independently - and non-default values would be honored if the feature flag is enabled. - See the design doc for more information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' - enum: - - FullControl - - ObserveOnly - - OrphanOnDelete - type: string + enabled, and may be changed or removed without notice. InitProvider + holds the same fields as ForProvider, with the exception of Identifier + and other resource reference fields. The fields that are in InitProvider + are merged into ForProvider when the resource is created. The same + fields are also added to the terraform ignore_changes hook, to avoid + updating them after creation. This is useful for fields that are + required on creation, but we do not desire to update them after + creation, for example because of an external controller is managing + them, like an autoscaler. + properties: + availability: + description: 'The availability zone configuration of the Kafka + cluster. Accepted values are: SINGLE_ZONE and MULTI_ZONE. The + availability zone configuration of the Kafka cluster.' + type: string + basic: + description: The configuration of the Basic Kafka cluster. + items: + type: object + type: array + byokKey: + description: 'supports the following:' + items: + properties: + id: + description: The ID of the Environment that the Kafka cluster + belongs to, for example, env-abc123. The ID of the Confluent + key that is used to encrypt the data in the Kafka cluster. + type: string + type: object + type: array + cloud: + description: 'The cloud service provider that runs the Kafka cluster. + Accepted values are: AWS, AZURE, and GCP. The cloud service + provider that runs the Kafka cluster.' + type: string + dedicated: + description: 'The configuration of the Dedicated Kafka cluster. + It supports the following:' + items: + properties: + cku: + description: The number of Confluent Kafka Units (CKUs) + for Dedicated cluster types. The minimum number of CKUs + for SINGLE_ZONE dedicated clusters is 1 whereas MULTI_ZONE + dedicated clusters must have more than 2 CKUs. The number + of Confluent Kafka Units (CKUs) for Dedicated cluster + types. MULTI_ZONE dedicated clusters must have at least + two CKUs. + type: number + encryptionKey: + description: The ID of the encryption key that is used to + encrypt the data in the Kafka cluster. + type: string + type: object + type: array + displayName: + description: The name of the Kafka cluster. The name of the Kafka + cluster. + type: string + enterprise: + description: The configuration of the Enterprise Kafka cluster. + items: + type: object + type: array + environment: + description: 'supports the following: Environment objects represent + an isolated namespace for your Confluent resources for organizational + purposes.' + items: + type: object + type: array + network: + description: 'supports the following: Network represents a network + (VPC) in Confluent Cloud. All Networks exist within Confluent-managed + cloud provider accounts.' + items: + properties: + id: + description: The ID of the Environment that the Kafka cluster + belongs to, for example, env-abc123. The unique identifier + for the network. + type: string + type: object + type: array + region: + description: The cloud service provider region where the Kafka + cluster is running, for example, us-west-2. See Cloud Providers + and Regions for a full list of options for AWS, Azure, and GCP. + The cloud service provider region where the Kafka cluster is + running. + type: string + standard: + description: The configuration of the Standard Kafka cluster. + items: + type: object + type: array + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array providerConfigRef: default: name: default @@ -274,42 +402,6 @@ spec: 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 @@ -409,111 +501,159 @@ spec: type: object x-kubernetes-validations: - message: availability is a required parameter - rule: self.managementPolicy == 'ObserveOnly' || has(self.forProvider.availability) + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.availability) + || has(self.initProvider.availability)' - message: cloud is a required parameter - rule: self.managementPolicy == 'ObserveOnly' || has(self.forProvider.cloud) + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.cloud) + || has(self.initProvider.cloud)' - message: displayName is a required parameter - rule: self.managementPolicy == 'ObserveOnly' || has(self.forProvider.displayName) + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.displayName) + || has(self.initProvider.displayName)' - message: environment is a required parameter - rule: self.managementPolicy == 'ObserveOnly' || has(self.forProvider.environment) + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.environment) + || has(self.initProvider.environment)' - message: region is a required parameter - rule: self.managementPolicy == 'ObserveOnly' || has(self.forProvider.region) + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.region) + || has(self.initProvider.region)' status: description: ClusterStatus defines the observed state of Cluster. properties: atProvider: properties: apiVersion: - description: API Version defines the schema version of this representation - of a Kafka cluster. + description: An API Version of the schema version of the Kafka + cluster, for example, cmk/v2. API Version defines the schema + version of this representation of a Kafka cluster. type: string availability: - description: The availability zone configuration of the Kafka - cluster. + description: 'The availability zone configuration of the Kafka + cluster. Accepted values are: SINGLE_ZONE and MULTI_ZONE. The + availability zone configuration of the Kafka cluster.' type: string basic: + description: The configuration of the Basic Kafka cluster. items: type: object type: array bootstrapEndpoint: description: The bootstrap endpoint used by Kafka clients to connect - to the Kafka cluster. + to the Kafka cluster. (e.g., SASL_SSL://pkc-00000.us-central1.gcp.confluent.cloud:9092). + The bootstrap endpoint used by Kafka clients to connect to the + Kafka cluster. type: string byokKey: + description: 'supports the following:' items: properties: id: - description: The ID of the Confluent key that is used to - encrypt the data in the Kafka cluster. + description: The ID of the Environment that the Kafka cluster + belongs to, for example, env-abc123. The ID of the Confluent + key that is used to encrypt the data in the Kafka cluster. type: string type: object type: array cloud: - description: The cloud service provider that runs the Kafka cluster. + description: 'The cloud service provider that runs the Kafka cluster. + Accepted values are: AWS, AZURE, and GCP. The cloud service + provider that runs the Kafka cluster.' type: string dedicated: + description: 'The configuration of the Dedicated Kafka cluster. + It supports the following:' items: properties: cku: description: The number of Confluent Kafka Units (CKUs) - for Dedicated cluster types. MULTI_ZONE dedicated clusters - must have at least two CKUs. + for Dedicated cluster types. The minimum number of CKUs + for SINGLE_ZONE dedicated clusters is 1 whereas MULTI_ZONE + dedicated clusters must have more than 2 CKUs. The number + of Confluent Kafka Units (CKUs) for Dedicated cluster + types. MULTI_ZONE dedicated clusters must have at least + two CKUs. type: number encryptionKey: description: The ID of the encryption key that is used to encrypt the data in the Kafka cluster. type: string zones: - description: The list of zones the cluster is in. + description: The list of zones the cluster is in. On AWS, + zones are AWS AZ IDs, for example, use1-az3. On GCP, zones + are GCP zones, for example, us-central1-c. On Azure, zones + are Confluent-chosen names (for example, 1, 2, 3) since + Azure does not have universal zone identifiers. The list + of zones the cluster is in. items: type: string type: array type: object type: array displayName: - description: The name of the Kafka cluster. + description: The name of the Kafka cluster. The name of the Kafka + cluster. type: string enterprise: + description: The configuration of the Enterprise Kafka cluster. items: type: object type: array environment: - description: Environment objects represent an isolated namespace - for your Confluent resources for organizational purposes. + description: 'supports the following: Environment objects represent + an isolated namespace for your Confluent resources for organizational + purposes.' items: properties: id: - description: The unique identifier for the environment. + description: The ID of the Environment that the Kafka cluster + belongs to, for example, env-abc123. The unique identifier + for the environment. type: string type: object type: array id: + description: The ID of the Environment that the Kafka cluster + belongs to, for example, env-abc123. type: string kind: - description: Kind defines the object Kafka cluster represents. + description: A kind of the Kafka cluster, for example, Cluster. + Kind defines the object Kafka cluster represents. type: string network: - description: Network represents a network (VPC) in Confluent Cloud. - All Networks exist within Confluent-managed cloud provider accounts. + description: 'supports the following: Network represents a network + (VPC) in Confluent Cloud. All Networks exist within Confluent-managed + cloud provider accounts.' items: properties: id: - description: The unique identifier for the network. + description: The ID of the Environment that the Kafka cluster + belongs to, for example, env-abc123. The unique identifier + for the network. type: string type: object type: array rbacCrn: - description: The Confluent Resource Name of the Kafka cluster - suitable for confluent_role_binding's crn_pattern. + description: The Confluent Resource Name of the Kafka cluster, + for example, crn://confluent.cloud/organization=1111aaaa-11aa-11aa-11aa-111111aaaaaa/environment=env-abc123/cloud-cluster=lkc-abc123. + The Confluent Resource Name of the Kafka cluster suitable for + confluent_role_binding's crn_pattern. type: string region: description: The cloud service provider region where the Kafka - cluster is running. + cluster is running, for example, us-west-2. See Cloud Providers + and Regions for a full list of options for AWS, Azure, and GCP. + The cloud service provider region where the Kafka cluster is + running. type: string restEndpoint: - description: The REST endpoint of the Kafka cluster. + description: The REST endpoint of the Kafka cluster (e.g., https://pkc-00000.us-central1.gcp.confluent.cloud:443). + The REST endpoint of the Kafka cluster. type: string standard: + description: The configuration of the Standard Kafka cluster. items: type: object type: array @@ -551,6 +691,9 @@ spec: - type type: object type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map type: object required: - spec diff --git a/package/crds/confluent.crossplane.io_environments.yaml b/package/crds/confluent.crossplane.io_environments.yaml index a0b7b11..b7c9eba 100644 --- a/package/crds/confluent.crossplane.io_environments.yaml +++ b/package/crds/confluent.crossplane.io_environments.yaml @@ -3,8 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.11.3 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.13.0 name: environments.confluent.crossplane.io spec: group: confluent.crossplane.io @@ -35,7 +34,7 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: Environment is the Schema for the Environments API. + description: Environment is the Schema for the Environments API. properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation @@ -57,7 +56,7 @@ spec: description: 'DeletionPolicy specifies what will happen to the underlying external when this managed resource is deleted - either "Delete" or "Orphan" the external resource. This field is planned to be deprecated - in favor of the ManagementPolicy field in a future release. Currently, + in favor of the ManagementPolicies field in a future release. Currently, both could be set independently and non-default values would be honored if the feature flag is enabled. See the design doc for more information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' @@ -68,24 +67,57 @@ spec: forProvider: properties: displayName: - description: A human-readable name for the Environment. + description: A human-readable name for the Environment. Start + and end the name with alphanumeric characters, for example, + "Development". The name can contain hyphens and underscores. + A human-readable name for the Environment. type: string type: object - managementPolicy: - default: FullControl - description: 'THIS IS AN ALPHA FIELD. Do not use it in production. + initProvider: + description: THIS IS AN ALPHA FIELD. Do not use it in production. It is not honored unless the relevant Crossplane feature flag is - enabled, and may be changed or removed without notice. ManagementPolicy - specifies the level of control Crossplane has over the managed external - resource. This field is planned to replace the DeletionPolicy field - in a future release. Currently, both could be set independently - and non-default values would be honored if the feature flag is enabled. - See the design doc for more information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' - enum: - - FullControl - - ObserveOnly - - OrphanOnDelete - type: string + enabled, and may be changed or removed without notice. InitProvider + holds the same fields as ForProvider, with the exception of Identifier + and other resource reference fields. The fields that are in InitProvider + are merged into ForProvider when the resource is created. The same + fields are also added to the terraform ignore_changes hook, to avoid + updating them after creation. This is useful for fields that are + required on creation, but we do not desire to update them after + creation, for example because of an external controller is managing + them, like an autoscaler. + properties: + displayName: + description: A human-readable name for the Environment. Start + and end the name with alphanumeric characters, for example, + "Development". The name can contain hyphens and underscores. + A human-readable name for the Environment. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array providerConfigRef: default: name: default @@ -124,42 +156,6 @@ spec: 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 @@ -259,19 +255,27 @@ spec: type: object x-kubernetes-validations: - message: displayName is a required parameter - rule: self.managementPolicy == 'ObserveOnly' || has(self.forProvider.displayName) + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.displayName) + || has(self.initProvider.displayName)' status: description: EnvironmentStatus defines the observed state of Environment. properties: atProvider: properties: displayName: - description: A human-readable name for the Environment. + description: A human-readable name for the Environment. Start + and end the name with alphanumeric characters, for example, + "Development". The name can contain hyphens and underscores. + A human-readable name for the Environment. type: string id: + description: The ID of the Environment, for example, env-abc123. type: string resourceName: - description: The Confluent Resource Name of the Environment. + description: The Confluent Resource Name of the Environment, for + example, crn://confluent.cloud/organization=1111aaaa-11aa-11aa-11aa-111111aaaaaa/environment=env-abc123. + The Confluent Resource Name of the Environment. type: string type: object conditions: @@ -307,6 +311,9 @@ spec: - type type: object type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map type: object required: - spec diff --git a/package/crds/confluent.crossplane.io_kafkaacls.yaml b/package/crds/confluent.crossplane.io_kafkaacls.yaml index 366e1f6..c1ef344 100644 --- a/package/crds/confluent.crossplane.io_kafkaacls.yaml +++ b/package/crds/confluent.crossplane.io_kafkaacls.yaml @@ -3,8 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.11.3 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.13.0 name: kafkaacls.confluent.crossplane.io spec: group: confluent.crossplane.io @@ -35,7 +34,7 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: KafkaACL is the Schema for the KafkaACLs API. + description: KafkaACL is the Schema for the KafkaACLs API. properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation @@ -57,7 +56,7 @@ spec: description: 'DeletionPolicy specifies what will happen to the underlying external when this managed resource is deleted - either "Delete" or "Orphan" the external resource. This field is planned to be deprecated - in favor of the ManagementPolicy field in a future release. Currently, + in favor of the ManagementPolicies field in a future release. Currently, both could be set independently and non-default values would be honored if the feature flag is enabled. See the design doc for more information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' @@ -68,12 +67,12 @@ spec: forProvider: properties: credentials: - description: The Cluster API Credentials. + description: 'supports the following: The Cluster API Credentials.' items: properties: keySecretRef: - description: The Cluster API Key for your Confluent Cloud - cluster. + description: The Kafka API Key. The Cluster API Key for + your Confluent Cloud cluster. properties: key: description: The key to select. @@ -90,8 +89,8 @@ spec: - namespace type: object secretSecretRef: - description: The Cluster API Secret for your Confluent Cloud - cluster. + description: The Kafka API Secret. The Cluster API Secret + for your Confluent Cloud cluster. properties: key: description: The key to select. @@ -113,13 +112,16 @@ spec: type: object type: array host: - description: The host for the ACL. + description: The host for the ACL. Should be set to * for Confluent + Cloud. The host for the ACL. type: string kafkaCluster: + description: 'supports the following:' items: properties: id: - description: The Kafka cluster ID (e.g., `lkc-12345`). + description: The ID of the Kafka cluster, for example, lkc-abc123. + The Kafka cluster ID (e.g., `lkc-12345`). type: string idRef: description: Reference to a Cluster to populate id. @@ -200,16 +202,24 @@ spec: type: object type: array operation: - description: The operation type for the ACL. + description: 'The operation type for the ACL. Accepted values + are: ALL, READ, WRITE, CREATE, DELETE, ALTER, DESCRIBE, CLUSTER_ACTION, + DESCRIBE_CONFIGS, ALTER_CONFIGS, and IDEMPOTENT_WRITE. See + Authorization using ACLs to find mappings of (resource_type, + operation) to one or more Kafka APIs or request types. The operation + type for the ACL.' type: string patternType: - description: The pattern type for the ACL. + description: 'The pattern type for the ACL. Accepted values are: + LITERAL and PREFIXED. The pattern type for the ACL.' type: string permission: - description: The permission for the ACL. + description: 'The permission for the ACL. Accepted values are: + DENY and ALLOW. The permission for the ACL.' type: string principal: - description: The principal for the ACL. + description: The principal for the ACL. The principal for the + ACL. type: string principalRef: description: Reference to a ServiceAccount to populate principal. @@ -285,30 +295,109 @@ spec: type: object type: object resourceName: - description: The resource name for the ACL. + description: The resource name for the ACL. Must be kafka-cluster + if resource_type equals to CLUSTER. The resource name for the + ACL. type: string resourceType: - description: The type of the resource. + description: 'The type of the resource. Accepted values are: TOPIC, + GROUP, CLUSTER, TRANSACTIONAL_ID, DELEGATION_TOKEN. See Authorization + using ACLs to find definitions of resource types and mappings + of (resource_type, operation) to one or more Kafka APIs or request + types. The type of the resource.' type: string restEndpoint: - description: The REST endpoint of the Kafka cluster (e.g., `https://pkc-00000.us-central1.gcp.confluent.cloud:443`). + description: The REST endpoint of the Kafka cluster, for example, + https://pkc-00000.us-central1.gcp.confluent.cloud:443. The REST + endpoint of the Kafka cluster (e.g., `https://pkc-00000.us-central1.gcp.confluent.cloud:443`). type: string type: object - managementPolicy: - default: FullControl - description: 'THIS IS AN ALPHA FIELD. Do not use it in production. + initProvider: + description: THIS IS AN ALPHA FIELD. Do not use it in production. It is not honored unless the relevant Crossplane feature flag is - enabled, and may be changed or removed without notice. ManagementPolicy - specifies the level of control Crossplane has over the managed external - resource. This field is planned to replace the DeletionPolicy field - in a future release. Currently, both could be set independently - and non-default values would be honored if the feature flag is enabled. - See the design doc for more information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' - enum: - - FullControl - - ObserveOnly - - OrphanOnDelete - type: string + enabled, and may be changed or removed without notice. InitProvider + holds the same fields as ForProvider, with the exception of Identifier + and other resource reference fields. The fields that are in InitProvider + are merged into ForProvider when the resource is created. The same + fields are also added to the terraform ignore_changes hook, to avoid + updating them after creation. This is useful for fields that are + required on creation, but we do not desire to update them after + creation, for example because of an external controller is managing + them, like an autoscaler. + properties: + credentials: + description: 'supports the following: The Cluster API Credentials.' + items: + type: object + type: array + host: + description: The host for the ACL. Should be set to * for Confluent + Cloud. The host for the ACL. + type: string + kafkaCluster: + description: 'supports the following:' + items: + type: object + type: array + operation: + description: 'The operation type for the ACL. Accepted values + are: ALL, READ, WRITE, CREATE, DELETE, ALTER, DESCRIBE, CLUSTER_ACTION, + DESCRIBE_CONFIGS, ALTER_CONFIGS, and IDEMPOTENT_WRITE. See + Authorization using ACLs to find mappings of (resource_type, + operation) to one or more Kafka APIs or request types. The operation + type for the ACL.' + type: string + patternType: + description: 'The pattern type for the ACL. Accepted values are: + LITERAL and PREFIXED. The pattern type for the ACL.' + type: string + permission: + description: 'The permission for the ACL. Accepted values are: + DENY and ALLOW. The permission for the ACL.' + type: string + resourceName: + description: The resource name for the ACL. Must be kafka-cluster + if resource_type equals to CLUSTER. The resource name for the + ACL. + type: string + resourceType: + description: 'The type of the resource. Accepted values are: TOPIC, + GROUP, CLUSTER, TRANSACTIONAL_ID, DELEGATION_TOKEN. See Authorization + using ACLs to find definitions of resource types and mappings + of (resource_type, operation) to one or more Kafka APIs or request + types. The type of the resource.' + type: string + restEndpoint: + description: The REST endpoint of the Kafka cluster, for example, + https://pkc-00000.us-central1.gcp.confluent.cloud:443. The REST + endpoint of the Kafka cluster (e.g., `https://pkc-00000.us-central1.gcp.confluent.cloud:443`). + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array providerConfigRef: default: name: default @@ -347,42 +436,6 @@ spec: 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 @@ -482,29 +535,41 @@ spec: type: object x-kubernetes-validations: - message: host is a required parameter - rule: self.managementPolicy == 'ObserveOnly' || has(self.forProvider.host) + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.host) + || has(self.initProvider.host)' - message: operation is a required parameter - rule: self.managementPolicy == 'ObserveOnly' || has(self.forProvider.operation) + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.operation) + || has(self.initProvider.operation)' - message: patternType is a required parameter - rule: self.managementPolicy == 'ObserveOnly' || has(self.forProvider.patternType) + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.patternType) + || has(self.initProvider.patternType)' - message: permission is a required parameter - rule: self.managementPolicy == 'ObserveOnly' || has(self.forProvider.permission) + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.permission) + || has(self.initProvider.permission)' - message: resourceName is a required parameter - rule: self.managementPolicy == 'ObserveOnly' || has(self.forProvider.resourceName) + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.resourceName) + || has(self.initProvider.resourceName)' - message: resourceType is a required parameter - rule: self.managementPolicy == 'ObserveOnly' || has(self.forProvider.resourceType) + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.resourceType) + || has(self.initProvider.resourceType)' status: description: KafkaACLStatus defines the observed state of KafkaACL. properties: atProvider: properties: credentials: - description: The Cluster API Credentials. + description: 'supports the following: The Cluster API Credentials.' items: properties: keySecretRef: - description: The Cluster API Key for your Confluent Cloud - cluster. + description: The Kafka API Key. The Cluster API Key for + your Confluent Cloud cluster. properties: key: description: The key to select. @@ -521,8 +586,8 @@ spec: - namespace type: object secretSecretRef: - description: The Cluster API Secret for your Confluent Cloud - cluster. + description: The Kafka API Secret. The Cluster API Secret + for your Confluent Cloud cluster. properties: key: description: The key to select. @@ -544,38 +609,58 @@ spec: type: object type: array host: - description: The host for the ACL. + description: The host for the ACL. Should be set to * for Confluent + Cloud. The host for the ACL. type: string id: + description: The ID of the Kafka cluster, for example, lkc-abc123. type: string kafkaCluster: + description: 'supports the following:' items: properties: id: - description: The Kafka cluster ID (e.g., `lkc-12345`). + description: The ID of the Kafka cluster, for example, lkc-abc123. + The Kafka cluster ID (e.g., `lkc-12345`). type: string type: object type: array operation: - description: The operation type for the ACL. + description: 'The operation type for the ACL. Accepted values + are: ALL, READ, WRITE, CREATE, DELETE, ALTER, DESCRIBE, CLUSTER_ACTION, + DESCRIBE_CONFIGS, ALTER_CONFIGS, and IDEMPOTENT_WRITE. See + Authorization using ACLs to find mappings of (resource_type, + operation) to one or more Kafka APIs or request types. The operation + type for the ACL.' type: string patternType: - description: The pattern type for the ACL. + description: 'The pattern type for the ACL. Accepted values are: + LITERAL and PREFIXED. The pattern type for the ACL.' type: string permission: - description: The permission for the ACL. + description: 'The permission for the ACL. Accepted values are: + DENY and ALLOW. The permission for the ACL.' type: string principal: - description: The principal for the ACL. + description: The principal for the ACL. The principal for the + ACL. type: string resourceName: - description: The resource name for the ACL. + description: The resource name for the ACL. Must be kafka-cluster + if resource_type equals to CLUSTER. The resource name for the + ACL. type: string resourceType: - description: The type of the resource. + description: 'The type of the resource. Accepted values are: TOPIC, + GROUP, CLUSTER, TRANSACTIONAL_ID, DELEGATION_TOKEN. See Authorization + using ACLs to find definitions of resource types and mappings + of (resource_type, operation) to one or more Kafka APIs or request + types. The type of the resource.' type: string restEndpoint: - description: The REST endpoint of the Kafka cluster (e.g., `https://pkc-00000.us-central1.gcp.confluent.cloud:443`). + description: The REST endpoint of the Kafka cluster, for example, + https://pkc-00000.us-central1.gcp.confluent.cloud:443. The REST + endpoint of the Kafka cluster (e.g., `https://pkc-00000.us-central1.gcp.confluent.cloud:443`). type: string type: object conditions: @@ -611,6 +696,9 @@ spec: - type type: object type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map type: object required: - spec diff --git a/package/crds/confluent.crossplane.io_providerconfigs.yaml b/package/crds/confluent.crossplane.io_providerconfigs.yaml index a207705..69c148e 100644 --- a/package/crds/confluent.crossplane.io_providerconfigs.yaml +++ b/package/crds/confluent.crossplane.io_providerconfigs.yaml @@ -3,8 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.11.3 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.13.0 name: providerconfigs.confluent.crossplane.io spec: group: confluent.crossplane.io @@ -139,6 +138,9 @@ spec: - type type: object type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map users: description: Users of this provider configuration. format: int64 diff --git a/package/crds/confluent.crossplane.io_providerconfigusages.yaml b/package/crds/confluent.crossplane.io_providerconfigusages.yaml index 19160fc..0b455e7 100644 --- a/package/crds/confluent.crossplane.io_providerconfigusages.yaml +++ b/package/crds/confluent.crossplane.io_providerconfigusages.yaml @@ -3,8 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.11.3 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.13.0 name: providerconfigusages.confluent.crossplane.io spec: group: confluent.crossplane.io diff --git a/package/crds/confluent.crossplane.io_rolebindings.yaml b/package/crds/confluent.crossplane.io_rolebindings.yaml index cf5dd1f..2eb526c 100644 --- a/package/crds/confluent.crossplane.io_rolebindings.yaml +++ b/package/crds/confluent.crossplane.io_rolebindings.yaml @@ -3,8 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.11.3 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.13.0 name: rolebindings.confluent.crossplane.io spec: group: confluent.crossplane.io @@ -35,7 +34,7 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: RoleBinding is the Schema for the RoleBindings API. + description: RoleBinding is the Schema for the RoleBindings API. properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation @@ -57,7 +56,7 @@ spec: description: 'DeletionPolicy specifies what will happen to the underlying external when this managed resource is deleted - either "Delete" or "Orphan" the external resource. This field is planned to be deprecated - in favor of the ManagementPolicy field in a future release. Currently, + in favor of the ManagementPolicies field in a future release. Currently, both could be set independently and non-default values would be honored if the feature flag is enabled. See the design doc for more information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' @@ -68,31 +67,79 @@ spec: forProvider: properties: crnPattern: - description: A CRN that specifies the scope and resource patterns - necessary for the role to bind. + description: A Confluent Resource Name(CRN) that specifies the + scope and resource patterns necessary for the role to bind. + A CRN that specifies the scope and resource patterns necessary + for the role to bind. type: string principal: - description: The principal User to bind the role to. + description: A principal User to bind the role to, for example, + "User:u-111aaa" for binding to a user "u-111aaa", or "User:sa-111aaa" + for binding to a service account "sa-111aaa". The principal + User to bind the role to. type: string roleName: - description: The name of the role to bind to the principal. + description: A name of the role to bind to the principal. See + Confluent Cloud RBAC Roles for a full list of supported role + names. The name of the role to bind to the principal. type: string type: object - managementPolicy: - default: FullControl - description: 'THIS IS AN ALPHA FIELD. Do not use it in production. + initProvider: + description: THIS IS AN ALPHA FIELD. Do not use it in production. It is not honored unless the relevant Crossplane feature flag is - enabled, and may be changed or removed without notice. ManagementPolicy - specifies the level of control Crossplane has over the managed external - resource. This field is planned to replace the DeletionPolicy field - in a future release. Currently, both could be set independently - and non-default values would be honored if the feature flag is enabled. - See the design doc for more information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' - enum: - - FullControl - - ObserveOnly - - OrphanOnDelete - type: string + enabled, and may be changed or removed without notice. InitProvider + holds the same fields as ForProvider, with the exception of Identifier + and other resource reference fields. The fields that are in InitProvider + are merged into ForProvider when the resource is created. The same + fields are also added to the terraform ignore_changes hook, to avoid + updating them after creation. This is useful for fields that are + required on creation, but we do not desire to update them after + creation, for example because of an external controller is managing + them, like an autoscaler. + properties: + crnPattern: + description: A Confluent Resource Name(CRN) that specifies the + scope and resource patterns necessary for the role to bind. + A CRN that specifies the scope and resource patterns necessary + for the role to bind. + type: string + principal: + description: A principal User to bind the role to, for example, + "User:u-111aaa" for binding to a user "u-111aaa", or "User:sa-111aaa" + for binding to a service account "sa-111aaa". The principal + User to bind the role to. + type: string + roleName: + description: A name of the role to bind to the principal. See + Confluent Cloud RBAC Roles for a full list of supported role + names. The name of the role to bind to the principal. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array providerConfigRef: default: name: default @@ -131,42 +178,6 @@ spec: 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 @@ -266,27 +277,41 @@ spec: type: object x-kubernetes-validations: - message: crnPattern is a required parameter - rule: self.managementPolicy == 'ObserveOnly' || has(self.forProvider.crnPattern) + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.crnPattern) + || has(self.initProvider.crnPattern)' - message: principal is a required parameter - rule: self.managementPolicy == 'ObserveOnly' || has(self.forProvider.principal) + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.principal) + || has(self.initProvider.principal)' - message: roleName is a required parameter - rule: self.managementPolicy == 'ObserveOnly' || has(self.forProvider.roleName) + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.roleName) + || has(self.initProvider.roleName)' status: description: RoleBindingStatus defines the observed state of RoleBinding. properties: atProvider: properties: crnPattern: - description: A CRN that specifies the scope and resource patterns - necessary for the role to bind. + description: A Confluent Resource Name(CRN) that specifies the + scope and resource patterns necessary for the role to bind. + A CRN that specifies the scope and resource patterns necessary + for the role to bind. type: string id: + description: The ID of the Role Binding (e.g., rb-f3a90de). type: string principal: - description: The principal User to bind the role to. + description: A principal User to bind the role to, for example, + "User:u-111aaa" for binding to a user "u-111aaa", or "User:sa-111aaa" + for binding to a service account "sa-111aaa". The principal + User to bind the role to. type: string roleName: - description: The name of the role to bind to the principal. + description: A name of the role to bind to the principal. See + Confluent Cloud RBAC Roles for a full list of supported role + names. The name of the role to bind to the principal. type: string type: object conditions: @@ -322,6 +347,9 @@ spec: - type type: object type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map type: object required: - spec diff --git a/package/crds/confluent.crossplane.io_serviceaccounts.yaml b/package/crds/confluent.crossplane.io_serviceaccounts.yaml index 91bf556..a1cc513 100644 --- a/package/crds/confluent.crossplane.io_serviceaccounts.yaml +++ b/package/crds/confluent.crossplane.io_serviceaccounts.yaml @@ -3,8 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.11.3 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.13.0 name: serviceaccounts.confluent.crossplane.io spec: group: confluent.crossplane.io @@ -35,8 +34,7 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: ServiceAccount is the Schema for the ServiceAccounts API. + description: ServiceAccount is the Schema for the ServiceAccounts API. properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation @@ -58,7 +56,7 @@ spec: description: 'DeletionPolicy specifies what will happen to the underlying external when this managed resource is deleted - either "Delete" or "Orphan" the external resource. This field is planned to be deprecated - in favor of the ManagementPolicy field in a future release. Currently, + in favor of the ManagementPolicies field in a future release. Currently, both could be set independently and non-default values would be honored if the feature flag is enabled. See the design doc for more information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' @@ -69,27 +67,61 @@ spec: forProvider: properties: description: - description: A free-form description of the Service Account. + description: A free-form description of the Service Account. A + free-form description of the Service Account. type: string displayName: - description: A human-readable name for the Service Account. + description: A human-readable name for the Service Account. A + human-readable name for the Service Account. type: string type: object - managementPolicy: - default: FullControl - description: 'THIS IS AN ALPHA FIELD. Do not use it in production. + initProvider: + description: THIS IS AN ALPHA FIELD. Do not use it in production. It is not honored unless the relevant Crossplane feature flag is - enabled, and may be changed or removed without notice. ManagementPolicy - specifies the level of control Crossplane has over the managed external - resource. This field is planned to replace the DeletionPolicy field - in a future release. Currently, both could be set independently - and non-default values would be honored if the feature flag is enabled. - See the design doc for more information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223' - enum: - - FullControl - - ObserveOnly - - OrphanOnDelete - type: string + enabled, and may be changed or removed without notice. InitProvider + holds the same fields as ForProvider, with the exception of Identifier + and other resource reference fields. The fields that are in InitProvider + are merged into ForProvider when the resource is created. The same + fields are also added to the terraform ignore_changes hook, to avoid + updating them after creation. This is useful for fields that are + required on creation, but we do not desire to update them after + creation, for example because of an external controller is managing + them, like an autoscaler. + properties: + description: + description: A free-form description of the Service Account. A + free-form description of the Service Account. + type: string + displayName: + description: A human-readable name for the Service Account. A + human-readable name for the Service Account. + type: string + type: object + managementPolicies: + default: + - '*' + description: 'THIS IS A BETA FIELD. It is on by default but can be + opted out through a Crossplane feature flag. ManagementPolicies + specify the array of actions Crossplane is allowed to take on the + managed and external resources. This field is planned to replace + the DeletionPolicy field in a future release. Currently, both could + be set independently and non-default values would be honored if + the feature flag is enabled. If both are custom, the DeletionPolicy + field will be ignored. See the design doc for more information: + https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223 + and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md' + items: + description: A ManagementAction represents an action that the Crossplane + controllers can take on an external resource. + enum: + - Observe + - Create + - Update + - Delete + - LateInitialize + - '*' + type: string + type: array providerConfigRef: default: name: default @@ -128,42 +160,6 @@ spec: 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 @@ -263,26 +259,33 @@ spec: type: object x-kubernetes-validations: - message: displayName is a required parameter - rule: self.managementPolicy == 'ObserveOnly' || has(self.forProvider.displayName) + rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies + || ''Update'' in self.managementPolicies) || has(self.forProvider.displayName) + || has(self.initProvider.displayName)' status: description: ServiceAccountStatus defines the observed state of ServiceAccount. properties: atProvider: properties: apiVersion: - description: API Version defines the schema version of this representation - of a Service Account. + description: An API Version of the schema version of the Service + Account, for example, iam/v2. API Version defines the schema + version of this representation of a Service Account. type: string description: - description: A free-form description of the Service Account. + description: A free-form description of the Service Account. A + free-form description of the Service Account. type: string displayName: - description: A human-readable name for the Service Account. + description: A human-readable name for the Service Account. A + human-readable name for the Service Account. type: string id: + description: The ID of the Service Account (e.g., sa-abc123). type: string kind: - description: Kind defines the object Service Account represents. + description: A kind of the Service Account, for example, ServiceAccount. + Kind defines the object Service Account represents. type: string type: object conditions: @@ -318,6 +321,9 @@ spec: - type type: object type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map type: object required: - spec diff --git a/package/crds/confluent.crossplane.io_storeconfigs.yaml b/package/crds/confluent.crossplane.io_storeconfigs.yaml index b49e202..cab0812 100644 --- a/package/crds/confluent.crossplane.io_storeconfigs.yaml +++ b/package/crds/confluent.crossplane.io_storeconfigs.yaml @@ -3,8 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.11.3 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.13.0 name: storeconfigs.confluent.crossplane.io spec: group: confluent.crossplane.io @@ -154,146 +153,6 @@ spec: - Vault - Plugin type: string - vault: - description: 'Vault configures a Vault secret store. Deprecated: This - API is scheduled to be removed in a future release. Vault should - be used as a plugin going forward. See https://github.com/crossplane-contrib/ess-plugin-vault - for more information.' - properties: - auth: - description: Auth configures an authentication method for Vault. - properties: - method: - description: Method configures which auth method will be used. - type: string - token: - description: Token configures Token Auth for Vault. - properties: - env: - description: Env is a reference to an environment variable - that contains credentials that must be used to connect - to the provider. - properties: - name: - description: Name is the name of an environment variable. - type: string - required: - - name - type: object - fs: - description: Fs is a reference to a filesystem location - that contains credentials that must be used to connect - to the provider. - properties: - path: - description: Path is a filesystem path. - type: string - required: - - path - type: object - secretRef: - description: A SecretRef is a reference to a secret key - that contains the credentials that must be used to connect - to the provider. - 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 - source: - description: Source of the credentials. - enum: - - None - - Secret - - Environment - - Filesystem - type: string - required: - - source - type: object - required: - - method - type: object - caBundle: - description: CABundle configures CA bundle for Vault Server. - properties: - env: - description: Env is a reference to an environment variable - that contains credentials that must be used to connect to - the provider. - properties: - name: - description: Name is the name of an environment variable. - type: string - required: - - name - type: object - fs: - description: Fs is a reference to a filesystem location that - contains credentials that must be used to connect to the - provider. - properties: - path: - description: Path is a filesystem path. - type: string - required: - - path - type: object - secretRef: - description: A SecretRef is a reference to a secret key that - contains the credentials that must be used to connect to - the provider. - 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 - source: - description: Source of the credentials. - enum: - - None - - Secret - - Environment - - Filesystem - type: string - required: - - source - type: object - mountPath: - description: MountPath is the mount path of the KV secrets engine. - type: string - server: - description: Server is the url of the Vault server, e.g. "https://vault.acme.org" - type: string - version: - default: v2 - description: Version of the KV Secrets engine of Vault. https://www.vaultproject.io/docs/secrets/kv - type: string - required: - - auth - - mountPath - - server - type: object required: - defaultScope type: object @@ -333,6 +192,9 @@ spec: - type type: object type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map type: object required: - spec From d82dc07fb4f1e3cdb492ed126f05e1ac9375c4d7 Mon Sep 17 00:00:00 2001 From: I534922 Date: Wed, 15 Nov 2023 08:49:16 -0800 Subject: [PATCH 2/5] update dependencies Signed-off-by: I534922 --- apis/confluent/v1alpha1/zz_apikey_types.go | 11 +- apis/confluent/v1alpha1/zz_cluster_types.go | 19 ++-- .../v1alpha1/zz_clusterconfig_types.go | 11 +- .../v1alpha1/zz_environment_types.go | 11 +- .../v1alpha1/zz_generated_terraformed.go | 8 +- .../v1alpha1/zz_groupversion_info.go | 4 + apis/confluent/v1alpha1/zz_kafkaacl_types.go | 21 ++-- .../v1alpha1/zz_rolebinding_types.go | 15 +-- .../v1alpha1/zz_serviceaccount_types.go | 11 +- apis/generate.go | 9 +- apis/v1alpha1/register.go | 14 ++- apis/v1alpha1/types.go | 5 +- apis/zz_register.go | 4 + cmd/generator/main.go | 73 +++++++++++-- cmd/provider/main.go | 101 ++++++++++++------ config/confluent_api_key/config.go | 2 +- config/confluent_environment/config.go | 2 +- config/confluent_kafka_acl/config.go | 4 +- config/confluent_kafka_cluster/config.go | 2 +- .../confluent_kafka_cluster_config/config.go | 2 +- config/confluent_role_binding/config.go | 2 +- config/confluent_service_account/config.go | 2 +- config/external_name.go | 2 +- config/generated.lst | 1 + config/provider.go | 2 +- go.mod | 2 +- go.sum | 4 +- internal/clients/confluent.go | 7 +- .../confluent/apikey/zz_controller.go | 15 ++- .../confluent/cluster/zz_controller.go | 15 ++- .../confluent/clusterconfig/zz_controller.go | 15 ++- .../confluent/environment/zz_controller.go | 15 ++- .../confluent/kafkaacl/zz_controller.go | 15 ++- .../confluent/rolebinding/zz_controller.go | 15 ++- .../confluent/serviceaccount/zz_controller.go | 15 ++- internal/controller/providerconfig/config.go | 23 ++-- internal/controller/zz_setup.go | 8 +- internal/features/features.go | 15 ++- .../crds/confluent.crossplane.io_apikeys.yaml | 25 +++-- ...onfluent.crossplane.io_clusterconfigs.yaml | 25 +++-- .../confluent.crossplane.io_clusters.yaml | 41 ++++--- .../confluent.crossplane.io_environments.yaml | 25 +++-- .../confluent.crossplane.io_kafkaacls.yaml | 45 ++++---- .../confluent.crossplane.io_rolebindings.yaml | 33 +++--- ...nfluent.crossplane.io_serviceaccounts.yaml | 25 +++-- 45 files changed, 457 insertions(+), 264 deletions(-) create mode 100644 config/generated.lst diff --git a/apis/confluent/v1alpha1/zz_apikey_types.go b/apis/confluent/v1alpha1/zz_apikey_types.go index e4d76d4..b66e9fe 100755 --- a/apis/confluent/v1alpha1/zz_apikey_types.go +++ b/apis/confluent/v1alpha1/zz_apikey_types.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + /* Copyright 2022 Upbound Inc. */ @@ -240,9 +244,8 @@ type OwnerParameters struct { type APIKeySpec struct { v1.ResourceSpec `json:",inline"` ForProvider APIKeyParameters `json:"forProvider"` - // THIS IS AN ALPHA FIELD. Do not use it in production. It is not honored - // unless the relevant Crossplane feature flag is enabled, and may be - // changed or removed without notice. + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. // InitProvider holds the same fields as ForProvider, with the exception // of Identifier and other resource reference fields. The fields that are // in InitProvider are merged into ForProvider when the resource is created. @@ -272,7 +275,7 @@ type APIKeyStatus struct { type APIKey struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` - // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.owner) || has(self.initProvider.owner)",message="owner is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.owner) || (has(self.initProvider) && has(self.initProvider.owner))",message="spec.forProvider.owner is a required parameter" Spec APIKeySpec `json:"spec"` Status APIKeyStatus `json:"status,omitempty"` } diff --git a/apis/confluent/v1alpha1/zz_cluster_types.go b/apis/confluent/v1alpha1/zz_cluster_types.go index 8fca420..923f6f7 100755 --- a/apis/confluent/v1alpha1/zz_cluster_types.go +++ b/apis/confluent/v1alpha1/zz_cluster_types.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + /* Copyright 2022 Upbound Inc. */ @@ -314,9 +318,8 @@ type StandardParameters struct { type ClusterSpec struct { v1.ResourceSpec `json:",inline"` ForProvider ClusterParameters `json:"forProvider"` - // THIS IS AN ALPHA FIELD. Do not use it in production. It is not honored - // unless the relevant Crossplane feature flag is enabled, and may be - // changed or removed without notice. + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. // InitProvider holds the same fields as ForProvider, with the exception // of Identifier and other resource reference fields. The fields that are // in InitProvider are merged into ForProvider when the resource is created. @@ -346,11 +349,11 @@ type ClusterStatus struct { type Cluster struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` - // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.availability) || has(self.initProvider.availability)",message="availability is a required parameter" - // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.cloud) || has(self.initProvider.cloud)",message="cloud is a required parameter" - // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.displayName) || has(self.initProvider.displayName)",message="displayName is a required parameter" - // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.environment) || has(self.initProvider.environment)",message="environment is a required parameter" - // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.region) || has(self.initProvider.region)",message="region is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.availability) || (has(self.initProvider) && has(self.initProvider.availability))",message="spec.forProvider.availability is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.cloud) || (has(self.initProvider) && has(self.initProvider.cloud))",message="spec.forProvider.cloud is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.displayName) || (has(self.initProvider) && has(self.initProvider.displayName))",message="spec.forProvider.displayName is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.environment) || (has(self.initProvider) && has(self.initProvider.environment))",message="spec.forProvider.environment is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.region) || (has(self.initProvider) && has(self.initProvider.region))",message="spec.forProvider.region is a required parameter" Spec ClusterSpec `json:"spec"` Status ClusterStatus `json:"status,omitempty"` } diff --git a/apis/confluent/v1alpha1/zz_clusterconfig_types.go b/apis/confluent/v1alpha1/zz_clusterconfig_types.go index be42151..626f5fa 100755 --- a/apis/confluent/v1alpha1/zz_clusterconfig_types.go +++ b/apis/confluent/v1alpha1/zz_clusterconfig_types.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + /* Copyright 2022 Upbound Inc. */ @@ -119,9 +123,8 @@ type ClusterConfigParameters struct { type ClusterConfigSpec struct { v1.ResourceSpec `json:",inline"` ForProvider ClusterConfigParameters `json:"forProvider"` - // THIS IS AN ALPHA FIELD. Do not use it in production. It is not honored - // unless the relevant Crossplane feature flag is enabled, and may be - // changed or removed without notice. + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. // InitProvider holds the same fields as ForProvider, with the exception // of Identifier and other resource reference fields. The fields that are // in InitProvider are merged into ForProvider when the resource is created. @@ -151,7 +154,7 @@ type ClusterConfigStatus struct { type ClusterConfig struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` - // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.config) || has(self.initProvider.config)",message="config is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.config) || (has(self.initProvider) && has(self.initProvider.config))",message="spec.forProvider.config is a required parameter" Spec ClusterConfigSpec `json:"spec"` Status ClusterConfigStatus `json:"status,omitempty"` } diff --git a/apis/confluent/v1alpha1/zz_environment_types.go b/apis/confluent/v1alpha1/zz_environment_types.go index 3ce201c..482b356 100755 --- a/apis/confluent/v1alpha1/zz_environment_types.go +++ b/apis/confluent/v1alpha1/zz_environment_types.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + /* Copyright 2022 Upbound Inc. */ @@ -46,9 +50,8 @@ type EnvironmentParameters_2 struct { type EnvironmentSpec struct { v1.ResourceSpec `json:",inline"` ForProvider EnvironmentParameters_2 `json:"forProvider"` - // THIS IS AN ALPHA FIELD. Do not use it in production. It is not honored - // unless the relevant Crossplane feature flag is enabled, and may be - // changed or removed without notice. + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. // InitProvider holds the same fields as ForProvider, with the exception // of Identifier and other resource reference fields. The fields that are // in InitProvider are merged into ForProvider when the resource is created. @@ -78,7 +81,7 @@ type EnvironmentStatus struct { type Environment struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` - // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.displayName) || has(self.initProvider.displayName)",message="displayName is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.displayName) || (has(self.initProvider) && has(self.initProvider.displayName))",message="spec.forProvider.displayName is a required parameter" Spec EnvironmentSpec `json:"spec"` Status EnvironmentStatus `json:"status,omitempty"` } diff --git a/apis/confluent/v1alpha1/zz_generated_terraformed.go b/apis/confluent/v1alpha1/zz_generated_terraformed.go index b1b0e81..50b4496 100755 --- a/apis/confluent/v1alpha1/zz_generated_terraformed.go +++ b/apis/confluent/v1alpha1/zz_generated_terraformed.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + /* Copyright 2022 Upbound Inc. */ @@ -9,8 +13,8 @@ package v1alpha1 import ( "github.com/pkg/errors" - "github.com/upbound/upjet/pkg/resource" - "github.com/upbound/upjet/pkg/resource/json" + "github.com/crossplane/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/resource/json" ) // GetTerraformResourceType returns Terraform resource type for this APIKey diff --git a/apis/confluent/v1alpha1/zz_groupversion_info.go b/apis/confluent/v1alpha1/zz_groupversion_info.go index bf3d4c4..38fc562 100755 --- a/apis/confluent/v1alpha1/zz_groupversion_info.go +++ b/apis/confluent/v1alpha1/zz_groupversion_info.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + /* Copyright 2022 Upbound Inc. */ diff --git a/apis/confluent/v1alpha1/zz_kafkaacl_types.go b/apis/confluent/v1alpha1/zz_kafkaacl_types.go index ba85c0d..bf32bd5 100755 --- a/apis/confluent/v1alpha1/zz_kafkaacl_types.go +++ b/apis/confluent/v1alpha1/zz_kafkaacl_types.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + /* Copyright 2022 Upbound Inc. */ @@ -208,9 +212,8 @@ type KafkaClusterParameters struct { type KafkaACLSpec struct { v1.ResourceSpec `json:",inline"` ForProvider KafkaACLParameters `json:"forProvider"` - // THIS IS AN ALPHA FIELD. Do not use it in production. It is not honored - // unless the relevant Crossplane feature flag is enabled, and may be - // changed or removed without notice. + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. // InitProvider holds the same fields as ForProvider, with the exception // of Identifier and other resource reference fields. The fields that are // in InitProvider are merged into ForProvider when the resource is created. @@ -240,12 +243,12 @@ type KafkaACLStatus struct { type KafkaACL struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` - // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.host) || has(self.initProvider.host)",message="host is a required parameter" - // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.operation) || has(self.initProvider.operation)",message="operation is a required parameter" - // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.patternType) || has(self.initProvider.patternType)",message="patternType is a required parameter" - // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.permission) || has(self.initProvider.permission)",message="permission is a required parameter" - // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.resourceName) || has(self.initProvider.resourceName)",message="resourceName is a required parameter" - // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.resourceType) || has(self.initProvider.resourceType)",message="resourceType is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.host) || (has(self.initProvider) && has(self.initProvider.host))",message="spec.forProvider.host is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.operation) || (has(self.initProvider) && has(self.initProvider.operation))",message="spec.forProvider.operation is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.patternType) || (has(self.initProvider) && has(self.initProvider.patternType))",message="spec.forProvider.patternType is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.permission) || (has(self.initProvider) && has(self.initProvider.permission))",message="spec.forProvider.permission is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.resourceName) || (has(self.initProvider) && has(self.initProvider.resourceName))",message="spec.forProvider.resourceName is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.resourceType) || (has(self.initProvider) && has(self.initProvider.resourceType))",message="spec.forProvider.resourceType is a required parameter" Spec KafkaACLSpec `json:"spec"` Status KafkaACLStatus `json:"status,omitempty"` } diff --git a/apis/confluent/v1alpha1/zz_rolebinding_types.go b/apis/confluent/v1alpha1/zz_rolebinding_types.go index c11992f..e216c72 100755 --- a/apis/confluent/v1alpha1/zz_rolebinding_types.go +++ b/apis/confluent/v1alpha1/zz_rolebinding_types.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + /* Copyright 2022 Upbound Inc. */ @@ -68,9 +72,8 @@ type RoleBindingParameters struct { type RoleBindingSpec struct { v1.ResourceSpec `json:",inline"` ForProvider RoleBindingParameters `json:"forProvider"` - // THIS IS AN ALPHA FIELD. Do not use it in production. It is not honored - // unless the relevant Crossplane feature flag is enabled, and may be - // changed or removed without notice. + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. // InitProvider holds the same fields as ForProvider, with the exception // of Identifier and other resource reference fields. The fields that are // in InitProvider are merged into ForProvider when the resource is created. @@ -100,9 +103,9 @@ type RoleBindingStatus struct { type RoleBinding struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` - // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.crnPattern) || has(self.initProvider.crnPattern)",message="crnPattern is a required parameter" - // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.principal) || has(self.initProvider.principal)",message="principal is a required parameter" - // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.roleName) || has(self.initProvider.roleName)",message="roleName is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.crnPattern) || (has(self.initProvider) && has(self.initProvider.crnPattern))",message="spec.forProvider.crnPattern is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.principal) || (has(self.initProvider) && has(self.initProvider.principal))",message="spec.forProvider.principal is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.roleName) || (has(self.initProvider) && has(self.initProvider.roleName))",message="spec.forProvider.roleName is a required parameter" Spec RoleBindingSpec `json:"spec"` Status RoleBindingStatus `json:"status,omitempty"` } diff --git a/apis/confluent/v1alpha1/zz_serviceaccount_types.go b/apis/confluent/v1alpha1/zz_serviceaccount_types.go index aa41ad8..24e31fe 100755 --- a/apis/confluent/v1alpha1/zz_serviceaccount_types.go +++ b/apis/confluent/v1alpha1/zz_serviceaccount_types.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + /* Copyright 2022 Upbound Inc. */ @@ -63,9 +67,8 @@ type ServiceAccountParameters struct { type ServiceAccountSpec struct { v1.ResourceSpec `json:",inline"` ForProvider ServiceAccountParameters `json:"forProvider"` - // THIS IS AN ALPHA FIELD. Do not use it in production. It is not honored - // unless the relevant Crossplane feature flag is enabled, and may be - // changed or removed without notice. + // THIS IS A BETA FIELD. It will be honored + // unless the Management Policies feature flag is disabled. // InitProvider holds the same fields as ForProvider, with the exception // of Identifier and other resource reference fields. The fields that are // in InitProvider are merged into ForProvider when the resource is created. @@ -95,7 +98,7 @@ type ServiceAccountStatus struct { type ServiceAccount struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` - // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.displayName) || has(self.initProvider.displayName)",message="displayName is a required parameter" + // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.displayName) || (has(self.initProvider) && has(self.initProvider.displayName))",message="spec.forProvider.displayName is a required parameter" Spec ServiceAccountSpec `json:"spec"` Status ServiceAccountStatus `json:"status,omitempty"` } diff --git a/apis/generate.go b/apis/generate.go index 7dcd77d..3688ec4 100644 --- a/apis/generate.go +++ b/apis/generate.go @@ -11,15 +11,17 @@ Copyright 2021 Upbound Inc. // Remove existing CRDs //go:generate rm -rf ../package/crds -// Remove generated files +// Remove generated Go files //go:generate bash -c "find . -iname 'zz_*' ! -iname 'zz_generated.managed*.go' -delete" //go:generate bash -c "find . -type d -empty -delete" //go:generate bash -c "find ../internal/controller -iname 'zz_*' -delete" //go:generate bash -c "find ../internal/controller -type d -empty -delete" //go:generate rm -rf ../examples-generated +//go:generate bash -c "find ../cmd/provider -name 'zz_*' -type f -delete" +//go:generate bash -c "find ../cmd/provider -type d -maxdepth 1 -mindepth 1 -empty -delete" // Generate documentation from Terraform docs. -//go:generate go run github.com/upbound/upjet/cmd/scraper -n ${TERRAFORM_PROVIDER_SOURCE} -r ../.work/${TERRAFORM_PROVIDER_SOURCE}/${TERRAFORM_DOCS_PATH} -o ../config/provider-metadata.yaml +//go:generate go run github.com/crossplane/upjet/cmd/scraper -n ${TERRAFORM_PROVIDER_SOURCE} -r ../.work/${TERRAFORM_PROVIDER_SOURCE}/${TERRAFORM_DOCS_PATH} -o ../config/provider-metadata.yaml // Run Upjet generator //go:generate go run ../cmd/generator/main.go .. @@ -33,7 +35,6 @@ Copyright 2021 Upbound Inc. package apis import ( - _ "sigs.k8s.io/controller-tools/cmd/controller-gen" //nolint:typecheck - _ "github.com/crossplane/crossplane-tools/cmd/angryjet" //nolint:typecheck + _ "sigs.k8s.io/controller-tools/cmd/controller-gen" //nolint:typecheck ) diff --git a/apis/v1alpha1/register.go b/apis/v1alpha1/register.go index cbe2fe5..dc82fb1 100644 --- a/apis/v1alpha1/register.go +++ b/apis/v1alpha1/register.go @@ -1,5 +1,17 @@ /* -Copyright 2021 Upbound Inc. +Copyright 2021 The Crossplane Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. */ package v1alpha1 diff --git a/apis/v1alpha1/types.go b/apis/v1alpha1/types.go index a8cab41..865d5d9 100644 --- a/apis/v1alpha1/types.go +++ b/apis/v1alpha1/types.go @@ -1,13 +1,12 @@ /* -Copyright 2021 Upbound Inc. +Copyright 2022 Upbound Inc. */ package v1alpha1 import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) // A StoreConfigSpec defines the desired state of a ProviderConfig. diff --git a/apis/zz_register.go b/apis/zz_register.go index 0d5dccc..5e99778 100755 --- a/apis/zz_register.go +++ b/apis/zz_register.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + /* Copyright 2022 Upbound Inc. */ diff --git a/cmd/generator/main.go b/cmd/generator/main.go index b0b09f9..1f1a744 100644 --- a/cmd/generator/main.go +++ b/cmd/generator/main.go @@ -1,27 +1,78 @@ -/* -Copyright 2021 Upbound Inc. -*/ +// Copyright 2022 Upbound Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. package main import ( + "encoding/json" "fmt" "os" "path/filepath" - - "github.com/upbound/upjet/pkg/pipeline" + "sort" + "strings" "github.com/crossplane-contrib/provider-confluent/config" + ujconfig "github.com/crossplane/upjet/pkg/config" + "github.com/crossplane/upjet/pkg/pipeline" + "gopkg.in/alecthomas/kingpin.v2" ) func main() { - if len(os.Args) < 2 || os.Args[1] == "" { - panic("root directory is required to be given as argument") + var ( + app = kingpin.New("generator", "Run Upjet code generation pipelines for provider-gcp").DefaultEnvars() + repoRoot = app.Arg("repo-root", "Root directory for the provider repository").Required().String() + skippedResourcesCSV = app.Flag("skipped-resources-csv", "File path where a list of skipped (not-generated) Terraform resource names will be stored as a CSV").Envar("SKIPPED_RESOURCES_CSV").String() + generatedResourceList = app.Flag("generated-resource-list", "File path where a list of the generated resources will be stored.").Envar("GENERATED_RESOURCE_LIST").Default("../config/generated.lst").String() + ) + kingpin.MustParse(app.Parse(os.Args[1:])) + + absRootDir, err := filepath.Abs(*repoRoot) + if err != nil { + panic(fmt.Sprintf("cannot calculate the absolute path with %s", *repoRoot)) + } + p := config.GetProvider() + dumpGeneratedResourceList(p, generatedResourceList) + dumpSkippedResourcesCSV(p, skippedResourcesCSV) + pipeline.Run(p, absRootDir) +} + +func dumpGeneratedResourceList(p *ujconfig.Provider, targetPath *string) { + if len(*targetPath) == 0 { + return } - rootDir := os.Args[1] - absRootDir, err := filepath.Abs(rootDir) + generatedResources := make([]string, 0, len(p.Resources)) + for name := range p.Resources { + generatedResources = append(generatedResources, name) + } + sort.Strings(generatedResources) + buff, err := json.Marshal(generatedResources) if err != nil { - panic(fmt.Sprintf("cannot calculate the absolute path with %s", rootDir)) + panic(fmt.Sprintf("Cannot marshal native schema versions to JSON: %s", err.Error())) + } + if err := os.WriteFile(*targetPath, buff, 0o600); err != nil { + panic(fmt.Sprintf("Cannot write native schema versions of generated resources to file %s: %s", *targetPath, err.Error())) + } +} + +func dumpSkippedResourcesCSV(p *ujconfig.Provider, targetPath *string) { + if len(*targetPath) == 0 { + return + } + skippedCount := len(p.GetSkippedResourceNames()) + totalCount := skippedCount + len(p.Resources) + summaryLine := fmt.Sprintf("Available, skipped, total, coverage: %d, %d, %d, %.1f%%", len(p.Resources), skippedCount, totalCount, (float64(len(p.Resources))/float64(totalCount))*100) + if err := os.WriteFile(*targetPath, []byte(strings.Join(append([]string{summaryLine}, p.GetSkippedResourceNames()...), "\n")), 0o600); err != nil { + panic(fmt.Sprintf("Cannot write skipped resources CSV to file %s: %s", *targetPath, err.Error())) } - pipeline.Run(config.GetProvider(), absRootDir) } diff --git a/cmd/provider/main.go b/cmd/provider/main.go index 4787e76..3e46e99 100644 --- a/cmd/provider/main.go +++ b/cmd/provider/main.go @@ -1,11 +1,24 @@ /* -Copyright 2021 Upbound Inc. +Copyright 2021 The Crossplane Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. */ package main import ( "context" + "math/rand" "os" "path/filepath" "time" @@ -23,39 +36,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/logging" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/resource" - tjcontroller "github.com/upbound/upjet/pkg/controller" - "github.com/upbound/upjet/pkg/terraform" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/terraform" "gopkg.in/alecthomas/kingpin.v2" kerrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + _ "k8s.io/client-go/plugin/pkg/client/auth/gcp" "k8s.io/client-go/tools/leaderelection/resourcelock" ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/cache" "sigs.k8s.io/controller-runtime/pkg/log/zap" ) func main() { var ( - app = kingpin.New(filepath.Base(os.Args[0]), "Terraform based Crossplane provider for Confluent").DefaultEnvars() - debug = app.Flag("debug", "Run with debug logging.").Short('d').Bool() - syncPeriod = app.Flag("sync", "Controller manager sync period such as 300ms, 1.5h, or 2h45m").Short('s').Default("1h").Duration() - pollInterval = app.Flag("poll", "Poll interval controls how often an individual resource should be checked for drift.").Default("10m").Duration() - leaderElection = app.Flag("leader-election", "Use leader election for the controller manager.").Short('l').Default("false").OverrideDefaultFromEnvar("LEADER_ELECTION").Bool() - maxReconcileRate = app.Flag("max-reconcile-rate", "The global maximum rate per second at which resources may be checked for drift from the desired state.").Default("10").Int() - - terraformVersion = app.Flag("terraform-version", "Terraform version.").Required().Envar("TERRAFORM_VERSION").String() - providerSource = app.Flag("terraform-provider-source", "Terraform provider source.").Required().Envar("TERRAFORM_PROVIDER_SOURCE").String() - providerVersion = app.Flag("terraform-provider-version", "Terraform provider version.").Required().Envar("TERRAFORM_PROVIDER_VERSION").String() + app = kingpin.New(filepath.Base(os.Args[0]), "Terraform based Crossplane provider for GCP").DefaultEnvars() + debug = app.Flag("debug", "Run with debug logging.").Short('d').Bool() + syncInterval = app.Flag("sync", "Sync interval controls how often all resources will be double checked for drift.").Short('s').Default("1h").Duration() + pollInterval = app.Flag("poll", "Poll interval controls how often an individual resource should be checked for drift.").Default("10m").Duration() + leaderElection = app.Flag("leader-election", "Use leader election for the controller manager.").Short('l').Default("false").OverrideDefaultFromEnvar("LEADER_ELECTION").Bool() + maxReconcileRate = app.Flag("max-reconcile-rate", "The global maximum rate per second at which resources may checked for drift from the desired state.").Default("10").Int() + pluginProcessTTL = app.Flag("provider-ttl", "TTL for the native plugin processes before they are replaced. Changing the default may increase memory consumption.").Default("100").Int() + terraformVersion = app.Flag("terraform-version", "Terraform version.").Required().Envar("TERRAFORM_VERSION").String() + nativeProviderSource = app.Flag("terraform-provider-source", "Terraform provider source.").Required().Envar("TERRAFORM_PROVIDER_SOURCE").String() + providerVersion = app.Flag("terraform-provider-version", "Terraform provider version.").Required().Envar("TERRAFORM_PROVIDER_VERSION").String() + nativeProviderPath = app.Flag("terraform-native-provider-path", "Terraform native provider path for shared execution.").Default("").Envar("TERRAFORM_NATIVE_PROVIDER_PATH").String() namespace = app.Flag("namespace", "Namespace used to set as default scope in default secret store config.").Default("crossplane-system").Envar("POD_NAMESPACE").String() - enableExternalSecretStores = app.Flag("enable-external-secret-stores", "Enable support for ExternalSecretStores.").Default("false").Envar("ENABLE_EXTERNAL_SECRET_STORES").Bool() essTLSCertsPath = app.Flag("ess-tls-cert-dir", "Path of ESS TLS certificates.").Envar("ESS_TLS_CERTS_DIR").String() - enableManagementPolicies = app.Flag("enable-management-policies", "Enable support for Management Policies.").Default("false").Envar("ENABLE_MANAGEMENT_POLICIES").Bool() + enableExternalSecretStores = app.Flag("enable-external-secret-stores", "Enable support for ExternalSecretStores.").Default("false").Envar("ENABLE_EXTERNAL_SECRET_STORES").Bool() + enableManagementPolicies = app.Flag("enable-management-policies", "Enable support for Management Policies.").Default("true").Envar("ENABLE_MANAGEMENT_POLICIES").Bool() ) kingpin.MustParse(app.Parse(os.Args[1:])) zl := zap.New(zap.UseDevMode(*debug)) - log := logging.NewLogrLogger(zl.WithName("provider-confluent")) + log := logging.NewLogrLogger(zl.WithName("provider-gcp")) if *debug { // The controller-runtime runs with a no-op logger by default. It is // *very* verbose even at info level, so we only provide it a real @@ -63,21 +79,39 @@ func main() { ctrl.SetLogger(zl) } - log.Debug("Starting", "sync-period", syncPeriod.String(), "poll-interval", pollInterval.String(), "max-reconcile-rate", *maxReconcileRate) + // currently, we configure the jitter to be the 5% of the poll interval + pollJitter := time.Duration(float64(*pollInterval) * 0.05) + log.Debug("Starting", "sync-interval", syncInterval.String(), + "poll-interval", pollInterval.String(), "poll-jitter", pollJitter, "max-reconcile-rate", *maxReconcileRate) cfg, err := ctrl.GetConfig() kingpin.FatalIfError(err, "Cannot get API server rest config") - mgr, err := ctrl.NewManager(cfg, ctrl.Options{ - LeaderElection: *leaderElection, - LeaderElectionID: "crossplane-leader-election-provider-confluent", - SyncPeriod: syncPeriod, + mgr, err := ctrl.NewManager(ratelimiter.LimitRESTConfig(cfg, *maxReconcileRate), ctrl.Options{ + LeaderElection: *leaderElection, + LeaderElectionID: "crossplane-leader-election-provider-gcp-oslogin", + Cache: cache.Options{ + SyncPeriod: syncInterval, + }, LeaderElectionResourceLock: resourcelock.LeasesResourceLock, LeaseDuration: func() *time.Duration { d := 60 * time.Second; return &d }(), RenewDeadline: func() *time.Duration { d := 50 * time.Second; return &d }(), }) kingpin.FatalIfError(err, "Cannot create controller manager") - kingpin.FatalIfError(apis.AddToScheme(mgr.GetScheme()), "Cannot add Confluent APIs to scheme") + kingpin.FatalIfError(apis.AddToScheme(mgr.GetScheme()), "Cannot add GCP APIs to scheme") + + // if the native Terraform provider plugin's path is not configured via + // the env. variable TERRAFORM_NATIVE_PROVIDER_PATH or + // the `--terraform-native-provider-path` command-line option, + // we do not use the shared gRPC server and default to the regular + // Terraform CLI behaviour (of forking a plugin process per invocation). + // This removes some complexity for setting up development environments. + var scheduler terraform.ProviderScheduler = terraform.NewNoOpProviderScheduler() + if len(*nativeProviderPath) != 0 { + scheduler = terraform.NewSharedProviderScheduler(log, *pluginProcessTTL, + terraform.WithSharedProviderOptions(terraform.WithNativeProviderPath(*nativeProviderPath), terraform.WithNativeProviderName("registry.terraform.io/"+*nativeProviderSource))) + } + o := tjcontroller.Options{ Options: xpcontroller.Options{ Logger: log, @@ -86,13 +120,18 @@ func main() { MaxConcurrentReconciles: *maxReconcileRate, Features: &feature.Flags{}, }, - Provider: config.GetProvider(), - // use the following WorkspaceStoreOption to enable the shared gRPC mode - // terraform.WithProviderRunner(terraform.NewSharedProvider(log, os.Getenv("TERRAFORM_NATIVE_PROVIDER_PATH"), terraform.WithNativeProviderArgs("-debuggable"))) - WorkspaceStore: terraform.NewWorkspaceStore(log), - SetupFn: clients.TerraformSetupBuilder(*terraformVersion, *providerSource, *providerVersion), + Provider: config.GetProvider(), + SetupFn: clients.TerraformSetupBuilder(*terraformVersion, *nativeProviderSource, *providerVersion, scheduler), + PollJitter: pollJitter, + } + + if *enableManagementPolicies { + o.Features.Enable(features.EnableBetaManagementPolicies) + log.Info("Beta feature enabled", "flag", features.EnableBetaManagementPolicies) } + o.WorkspaceStore = terraform.NewWorkspaceStore(log, terraform.WithDisableInit(len(*nativeProviderPath) != 0), terraform.WithProcessReportInterval(*pollInterval), terraform.WithFeatures(o.Features)) + if *enableExternalSecretStores { o.SecretStoreConfigGVK = &v1alpha1.StoreConfigGroupVersionKind log.Info("Alpha feature enabled", "flag", features.EnableAlphaExternalSecretStores) @@ -108,6 +147,7 @@ func main() { // Ensure default store config exists. kingpin.FatalIfError(resource.Ignore(kerrors.IsAlreadyExists, mgr.GetClient().Create(context.Background(), &v1alpha1.StoreConfig{ + TypeMeta: metav1.TypeMeta{}, ObjectMeta: metav1.ObjectMeta{ Name: "default", }, @@ -118,14 +158,11 @@ func main() { DefaultScope: *namespace, }, }, + Status: v1alpha1.StoreConfigStatus{}, })), "cannot create default store config") } - if *enableManagementPolicies { - o.Features.Enable(features.EnableAlphaManagementPolicies) - log.Info("Alpha feature enabled", "flag", features.EnableAlphaManagementPolicies) - } - + rand.New(rand.NewSource(time.Now().UnixNano())) kingpin.FatalIfError(controller.Setup(mgr, o), "Cannot setup Confluent controllers") kingpin.FatalIfError(mgr.Start(ctrl.SetupSignalHandler()), "Cannot start controller manager") } diff --git a/config/confluent_api_key/config.go b/config/confluent_api_key/config.go index 2f959b7..7bf7911 100644 --- a/config/confluent_api_key/config.go +++ b/config/confluent_api_key/config.go @@ -1,7 +1,7 @@ package confluent_api_key import ( - "github.com/upbound/upjet/pkg/config" + "github.com/crossplane/upjet/pkg/config" ) // Configure configures individual resources by adding custom ResourceConfigurators. diff --git a/config/confluent_environment/config.go b/config/confluent_environment/config.go index 342e3e7..f76baad 100644 --- a/config/confluent_environment/config.go +++ b/config/confluent_environment/config.go @@ -1,6 +1,6 @@ package confluent_environment -import "github.com/upbound/upjet/pkg/config" +import "github.com/crossplane/upjet/pkg/config" // Configure configures individual resources by adding custom ResourceConfigurators. func Configure(p *config.Provider) { diff --git a/config/confluent_kafka_acl/config.go b/config/confluent_kafka_acl/config.go index 6c7fbd4..fa9d6f6 100644 --- a/config/confluent_kafka_acl/config.go +++ b/config/confluent_kafka_acl/config.go @@ -5,8 +5,8 @@ import ( xpref "github.com/crossplane/crossplane-runtime/pkg/reference" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" - "github.com/upbound/upjet/pkg/config" - "github.com/upbound/upjet/pkg/resource" + "github.com/crossplane/upjet/pkg/config" + "github.com/crossplane/upjet/pkg/resource" ) // Constants for custom Extractor function diff --git a/config/confluent_kafka_cluster/config.go b/config/confluent_kafka_cluster/config.go index 7a6fd6d..f6f2efd 100644 --- a/config/confluent_kafka_cluster/config.go +++ b/config/confluent_kafka_cluster/config.go @@ -1,7 +1,7 @@ package confluent_kafka_cluster import ( - "github.com/upbound/upjet/pkg/config" + "github.com/crossplane/upjet/pkg/config" ) // Configure configures individual resources by adding custom ResourceConfigurators. diff --git a/config/confluent_kafka_cluster_config/config.go b/config/confluent_kafka_cluster_config/config.go index 334c9f0..3c2395f 100644 --- a/config/confluent_kafka_cluster_config/config.go +++ b/config/confluent_kafka_cluster_config/config.go @@ -1,6 +1,6 @@ package confluent_kafka_cluster_config -import "github.com/upbound/upjet/pkg/config" +import "github.com/crossplane/upjet/pkg/config" // Configure configures individual resources by adding custom ResourceConfigurators. func Configure(p *config.Provider) { diff --git a/config/confluent_role_binding/config.go b/config/confluent_role_binding/config.go index 31c9602..c98d0d6 100644 --- a/config/confluent_role_binding/config.go +++ b/config/confluent_role_binding/config.go @@ -1,7 +1,7 @@ package confluent_role_binding import ( - "github.com/upbound/upjet/pkg/config" + "github.com/crossplane/upjet/pkg/config" ) // Configure configures individual resources by adding custom ResourceConfigurators. diff --git a/config/confluent_service_account/config.go b/config/confluent_service_account/config.go index 6fc10b8..fd42805 100644 --- a/config/confluent_service_account/config.go +++ b/config/confluent_service_account/config.go @@ -1,6 +1,6 @@ package confluent_service_account -import "github.com/upbound/upjet/pkg/config" +import "github.com/crossplane/upjet/pkg/config" // Configure configures individual resources by adding custom ResourceConfigurators. func Configure(p *config.Provider) { diff --git a/config/external_name.go b/config/external_name.go index 797678e..f255f8b 100644 --- a/config/external_name.go +++ b/config/external_name.go @@ -4,7 +4,7 @@ Copyright 2022 Upbound Inc. package config -import "github.com/upbound/upjet/pkg/config" +import "github.com/crossplane/upjet/pkg/config" // ExternalNameConfigs contains all external name configurations for this // provider. diff --git a/config/generated.lst b/config/generated.lst new file mode 100644 index 0000000..948d5d9 --- /dev/null +++ b/config/generated.lst @@ -0,0 +1 @@ +["confluent_api_key","confluent_environment","confluent_kafka_acl","confluent_kafka_cluster","confluent_kafka_cluster_config","confluent_role_binding","confluent_service_account"] \ No newline at end of file diff --git a/config/provider.go b/config/provider.go index 7962c35..3bf6687 100644 --- a/config/provider.go +++ b/config/provider.go @@ -8,7 +8,7 @@ import ( // Note(turkenh): we are importing this to embed provider schema document _ "embed" - ujconfig "github.com/upbound/upjet/pkg/config" + ujconfig "github.com/crossplane/upjet/pkg/config" confluentapikey "github.com/crossplane-contrib/provider-confluent/config/confluent_api_key" confluentenvironment "github.com/crossplane-contrib/provider-confluent/config/confluent_environment" diff --git a/go.mod b/go.mod index 8a12e46..8ec115c 100644 --- a/go.mod +++ b/go.mod @@ -5,8 +5,8 @@ go 1.20 require ( github.com/crossplane/crossplane-runtime v1.14.2 github.com/crossplane/crossplane-tools v0.0.0-20230925130601-628280f8bf79 + github.com/crossplane/upjet v0.11.0-rc.0.0.20231012093706-c4a76d2a7505 github.com/pkg/errors v0.9.1 - github.com/upbound/upjet v0.10.0 gopkg.in/alecthomas/kingpin.v2 v2.2.6 k8s.io/apimachinery v0.28.3 k8s.io/client-go v0.28.3 diff --git a/go.sum b/go.sum index 7e924f6..85cfd51 100644 --- a/go.sum +++ b/go.sum @@ -77,6 +77,8 @@ github.com/crossplane/crossplane-runtime v1.14.2 h1:pV5JMzyzi/kcbeVBVPCat5MHH8zS github.com/crossplane/crossplane-runtime v1.14.2/go.mod h1:aOP+5W2wKpvthVs3pFNbVOe1jwrKYbJho0ThGNCVz9o= github.com/crossplane/crossplane-tools v0.0.0-20230925130601-628280f8bf79 h1:HigXs5tEQxWz0fcj8hzbU2UAZgEM7wPe0XRFOsrtF8Y= github.com/crossplane/crossplane-tools v0.0.0-20230925130601-628280f8bf79/go.mod h1:+e4OaFlOcmr0JvINHl/yvEYBrZawzTgj6pQumOH1SS0= +github.com/crossplane/upjet v0.11.0-rc.0.0.20231012093706-c4a76d2a7505 h1:eCmYgfRopVn6r8RM1Ra4XQAPwVsjTGfktBj2Dk7yy+Y= +github.com/crossplane/upjet v0.11.0-rc.0.0.20231012093706-c4a76d2a7505/go.mod h1:Ov+eoYS2n0Zge/E50zm65meOTYbAHnU6jPt27fQrpbc= github.com/dave/jennifer v1.4.1 h1:XyqG6cn5RQsTj3qlWQTKlRGAyrTcsk1kUmWdZBzRjDw= github.com/dave/jennifer v1.4.1/go.mod h1:7jEdnm+qBcxl8PC0zyp7vxcpSRnzXSt9r39tpTVGlwA= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -336,8 +338,6 @@ github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= github.com/tmccombs/hcl2json v0.3.3 h1:+DLNYqpWE0CsOQiEZu+OZm5ZBImake3wtITYxQ8uLFQ= github.com/tmccombs/hcl2json v0.3.3/go.mod h1:Y2chtz2x9bAeRTvSibVRVgbLJhLJXKlUeIvjeVdnm4w= -github.com/upbound/upjet v0.10.0 h1:6nxc0GUBcL4BDHxQUUZWjw4ROXu5KRK9jOpb7LeJ+NQ= -github.com/upbound/upjet v0.10.0/go.mod h1:2RXHgpIugCL/S/Use1QJAeVaev901RBeUByQh5gUtGk= github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI= github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= diff --git a/internal/clients/confluent.go b/internal/clients/confluent.go index 909862e..aacfc36 100644 --- a/internal/clients/confluent.go +++ b/internal/clients/confluent.go @@ -10,8 +10,8 @@ import ( "github.com/crossplane-contrib/provider-confluent/apis/v1beta1" "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/upjet/pkg/terraform" "github.com/pkg/errors" - "github.com/upbound/upjet/pkg/terraform" "k8s.io/apimachinery/pkg/types" "sigs.k8s.io/controller-runtime/pkg/client" ) @@ -31,7 +31,9 @@ const ( // TerraformSetupBuilder builds Terraform a terraform.SetupFn function which // returns Terraform provider setup configuration -func TerraformSetupBuilder(version, providerSource, providerVersion string) terraform.SetupFn { +// NOTE(hasheddan): this function is slightly over our cyclomatic complexity +// goal. Consider refactoring before adding new branches. +func TerraformSetupBuilder(version, providerSource, providerVersion string, scheduler terraform.ProviderScheduler) terraform.SetupFn { //nolint:gocyclo return func(ctx context.Context, client client.Client, mg resource.Managed) (terraform.Setup, error) { ps := terraform.Setup{ Version: version, @@ -39,6 +41,7 @@ func TerraformSetupBuilder(version, providerSource, providerVersion string) terr Source: providerSource, Version: providerVersion, }, + Scheduler: scheduler, } configRef := mg.GetProviderConfigReference() diff --git a/internal/controller/confluent/apikey/zz_controller.go b/internal/controller/confluent/apikey/zz_controller.go index b4c6567..5037ad5 100755 --- a/internal/controller/confluent/apikey/zz_controller.go +++ b/internal/controller/confluent/apikey/zz_controller.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + /* Copyright 2022 Upbound Inc. */ @@ -14,9 +18,9 @@ import ( "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/controller/handler" - "github.com/upbound/upjet/pkg/terraform" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" ctrl "sigs.k8s.io/controller-runtime" v1alpha1 "github.com/crossplane-contrib/provider-confluent/apis/confluent/v1alpha1" @@ -45,7 +49,10 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { managed.WithConnectionPublishers(cps...), managed.WithPollInterval(o.PollInterval), } - if o.Features.Enabled(features.EnableAlphaManagementPolicies) { + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.APIKey_GroupVersionKind), opts...) diff --git a/internal/controller/confluent/cluster/zz_controller.go b/internal/controller/confluent/cluster/zz_controller.go index 4b3903f..b01b86c 100755 --- a/internal/controller/confluent/cluster/zz_controller.go +++ b/internal/controller/confluent/cluster/zz_controller.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + /* Copyright 2022 Upbound Inc. */ @@ -14,9 +18,9 @@ import ( "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/controller/handler" - "github.com/upbound/upjet/pkg/terraform" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" ctrl "sigs.k8s.io/controller-runtime" v1alpha1 "github.com/crossplane-contrib/provider-confluent/apis/confluent/v1alpha1" @@ -45,7 +49,10 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { managed.WithConnectionPublishers(cps...), managed.WithPollInterval(o.PollInterval), } - if o.Features.Enabled(features.EnableAlphaManagementPolicies) { + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.Cluster_GroupVersionKind), opts...) diff --git a/internal/controller/confluent/clusterconfig/zz_controller.go b/internal/controller/confluent/clusterconfig/zz_controller.go index 326a529..da11425 100755 --- a/internal/controller/confluent/clusterconfig/zz_controller.go +++ b/internal/controller/confluent/clusterconfig/zz_controller.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + /* Copyright 2022 Upbound Inc. */ @@ -14,9 +18,9 @@ import ( "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/controller/handler" - "github.com/upbound/upjet/pkg/terraform" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" ctrl "sigs.k8s.io/controller-runtime" v1alpha1 "github.com/crossplane-contrib/provider-confluent/apis/confluent/v1alpha1" @@ -45,7 +49,10 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { managed.WithConnectionPublishers(cps...), managed.WithPollInterval(o.PollInterval), } - if o.Features.Enabled(features.EnableAlphaManagementPolicies) { + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.ClusterConfig_GroupVersionKind), opts...) diff --git a/internal/controller/confluent/environment/zz_controller.go b/internal/controller/confluent/environment/zz_controller.go index 5bfc92c..2f0805b 100755 --- a/internal/controller/confluent/environment/zz_controller.go +++ b/internal/controller/confluent/environment/zz_controller.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + /* Copyright 2022 Upbound Inc. */ @@ -14,9 +18,9 @@ import ( "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/controller/handler" - "github.com/upbound/upjet/pkg/terraform" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" ctrl "sigs.k8s.io/controller-runtime" v1alpha1 "github.com/crossplane-contrib/provider-confluent/apis/confluent/v1alpha1" @@ -45,7 +49,10 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { managed.WithConnectionPublishers(cps...), managed.WithPollInterval(o.PollInterval), } - if o.Features.Enabled(features.EnableAlphaManagementPolicies) { + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.Environment_GroupVersionKind), opts...) diff --git a/internal/controller/confluent/kafkaacl/zz_controller.go b/internal/controller/confluent/kafkaacl/zz_controller.go index 4f68400..3339784 100755 --- a/internal/controller/confluent/kafkaacl/zz_controller.go +++ b/internal/controller/confluent/kafkaacl/zz_controller.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + /* Copyright 2022 Upbound Inc. */ @@ -14,9 +18,9 @@ import ( "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/controller/handler" - "github.com/upbound/upjet/pkg/terraform" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" ctrl "sigs.k8s.io/controller-runtime" v1alpha1 "github.com/crossplane-contrib/provider-confluent/apis/confluent/v1alpha1" @@ -45,7 +49,10 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { managed.WithConnectionPublishers(cps...), managed.WithPollInterval(o.PollInterval), } - if o.Features.Enabled(features.EnableAlphaManagementPolicies) { + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.KafkaACL_GroupVersionKind), opts...) diff --git a/internal/controller/confluent/rolebinding/zz_controller.go b/internal/controller/confluent/rolebinding/zz_controller.go index ad6c63e..f03f430 100755 --- a/internal/controller/confluent/rolebinding/zz_controller.go +++ b/internal/controller/confluent/rolebinding/zz_controller.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + /* Copyright 2022 Upbound Inc. */ @@ -14,9 +18,9 @@ import ( "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/controller/handler" - "github.com/upbound/upjet/pkg/terraform" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" ctrl "sigs.k8s.io/controller-runtime" v1alpha1 "github.com/crossplane-contrib/provider-confluent/apis/confluent/v1alpha1" @@ -45,7 +49,10 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { managed.WithConnectionPublishers(cps...), managed.WithPollInterval(o.PollInterval), } - if o.Features.Enabled(features.EnableAlphaManagementPolicies) { + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.RoleBinding_GroupVersionKind), opts...) diff --git a/internal/controller/confluent/serviceaccount/zz_controller.go b/internal/controller/confluent/serviceaccount/zz_controller.go index 1a7359a..aae56ab 100755 --- a/internal/controller/confluent/serviceaccount/zz_controller.go +++ b/internal/controller/confluent/serviceaccount/zz_controller.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 + /* Copyright 2022 Upbound Inc. */ @@ -14,9 +18,9 @@ import ( "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/controller/handler" - "github.com/upbound/upjet/pkg/terraform" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/terraform" ctrl "sigs.k8s.io/controller-runtime" v1alpha1 "github.com/crossplane-contrib/provider-confluent/apis/confluent/v1alpha1" @@ -45,7 +49,10 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { managed.WithConnectionPublishers(cps...), managed.WithPollInterval(o.PollInterval), } - if o.Features.Enabled(features.EnableAlphaManagementPolicies) { + if o.PollJitter != 0 { + opts = append(opts, managed.WithPollJitterHook(o.PollJitter)) + } + if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.ServiceAccount_GroupVersionKind), opts...) diff --git a/internal/controller/providerconfig/config.go b/internal/controller/providerconfig/config.go index 5973384..fac3489 100644 --- a/internal/controller/providerconfig/config.go +++ b/internal/controller/providerconfig/config.go @@ -1,26 +1,31 @@ /* -Copyright 2021 Upbound Inc. +Copyright 2021 The Crossplane Authors. +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. */ package providerconfig import ( - ctrl "sigs.k8s.io/controller-runtime" - "sigs.k8s.io/controller-runtime/pkg/source" - + "github.com/crossplane-contrib/provider-confluent/apis/v1beta1" "github.com/crossplane/crossplane-runtime/pkg/event" "github.com/crossplane/crossplane-runtime/pkg/reconciler/providerconfig" "github.com/crossplane/crossplane-runtime/pkg/resource" - "github.com/upbound/upjet/pkg/controller" - - "github.com/crossplane-contrib/provider-confluent/apis/v1beta1" + "github.com/crossplane/upjet/pkg/controller" + ctrl "sigs.k8s.io/controller-runtime" ) // Setup adds a controller that reconciles ProviderConfigs by accounting for // their current usage. func Setup(mgr ctrl.Manager, o controller.Options) error { name := providerconfig.ControllerName(v1beta1.ProviderConfigGroupKind) - of := resource.ProviderConfigKinds{ Config: v1beta1.ProviderConfigGroupVersionKind, UsageList: v1beta1.ProviderConfigUsageListGroupVersionKind, @@ -30,7 +35,7 @@ func Setup(mgr ctrl.Manager, o controller.Options) error { Named(name). WithOptions(o.ForControllerRuntime()). For(&v1beta1.ProviderConfig{}). - Watches(&source.Kind{Type: &v1beta1.ProviderConfigUsage{}}, &resource.EnqueueRequestForProviderConfig{}). + Watches(&v1beta1.ProviderConfigUsage{}, &resource.EnqueueRequestForProviderConfig{}). Complete(providerconfig.NewReconciler(mgr, of, providerconfig.WithLogger(o.Logger.WithValues("controller", name)), providerconfig.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))))) diff --git a/internal/controller/zz_setup.go b/internal/controller/zz_setup.go index 4c5ce17..64ca292 100755 --- a/internal/controller/zz_setup.go +++ b/internal/controller/zz_setup.go @@ -1,13 +1,13 @@ -/* -Copyright 2021 Upbound Inc. -*/ +// SPDX-FileCopyrightText: 2023 The Crossplane Authors +// +// SPDX-License-Identifier: Apache-2.0 package controller import ( ctrl "sigs.k8s.io/controller-runtime" - "github.com/upbound/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller" apikey "github.com/crossplane-contrib/provider-confluent/internal/controller/confluent/apikey" cluster "github.com/crossplane-contrib/provider-confluent/internal/controller/confluent/cluster" diff --git a/internal/features/features.go b/internal/features/features.go index 1b37951..3f88a74 100644 --- a/internal/features/features.go +++ b/internal/features/features.go @@ -1,5 +1,14 @@ /* - Copyright 2022 Upbound Inc + Copyright 2022 The Crossplane Authors. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. */ package features @@ -13,8 +22,8 @@ const ( // https://github.com/crossplane/crossplane/blob/390ddd/design/design-doc-external-secret-stores.md EnableAlphaExternalSecretStores feature.Flag = "EnableAlphaExternalSecretStores" - // EnableAlphaManagementPolicies enables alpha support for + // EnableBetaManagementPolicies enables beta support for // Management Policies. See the below design for more details. // https://github.com/crossplane/crossplane/pull/3531 - EnableAlphaManagementPolicies feature.Flag = "EnableAlphaManagementPolicies" + EnableBetaManagementPolicies feature.Flag = "EnableBetaManagementPolicies" ) diff --git a/package/crds/confluent.crossplane.io_apikeys.yaml b/package/crds/confluent.crossplane.io_apikeys.yaml index a8202c8..9600049 100644 --- a/package/crds/confluent.crossplane.io_apikeys.yaml +++ b/package/crds/confluent.crossplane.io_apikeys.yaml @@ -373,17 +373,16 @@ spec: type: array type: object initProvider: - description: THIS IS AN ALPHA FIELD. Do not use it in production. - It is not honored unless the relevant Crossplane feature flag is - enabled, and may be changed or removed without notice. InitProvider - holds the same fields as ForProvider, with the exception of Identifier - and other resource reference fields. The fields that are in InitProvider - are merged into ForProvider when the resource is created. The same - fields are also added to the terraform ignore_changes hook, to avoid - updating them after creation. This is useful for fields that are - required on creation, but we do not desire to update them after - creation, for example because of an external controller is managing - them, like an autoscaler. + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. properties: description: description: A free-form description of the API Account. A free-form @@ -604,10 +603,10 @@ spec: - forProvider type: object x-kubernetes-validations: - - message: owner is a required parameter + - message: spec.forProvider.owner is a required parameter rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies || ''Update'' in self.managementPolicies) || has(self.forProvider.owner) - || has(self.initProvider.owner)' + || (has(self.initProvider) && has(self.initProvider.owner))' status: description: APIKeyStatus defines the observed state of APIKey. properties: diff --git a/package/crds/confluent.crossplane.io_clusterconfigs.yaml b/package/crds/confluent.crossplane.io_clusterconfigs.yaml index c255de6..d8fe61b 100644 --- a/package/crds/confluent.crossplane.io_clusterconfigs.yaml +++ b/package/crds/confluent.crossplane.io_clusterconfigs.yaml @@ -134,17 +134,16 @@ spec: type: string type: object initProvider: - description: THIS IS AN ALPHA FIELD. Do not use it in production. - It is not honored unless the relevant Crossplane feature flag is - enabled, and may be changed or removed without notice. InitProvider - holds the same fields as ForProvider, with the exception of Identifier - and other resource reference fields. The fields that are in InitProvider - are merged into ForProvider when the resource is created. The same - fields are also added to the terraform ignore_changes hook, to avoid - updating them after creation. This is useful for fields that are - required on creation, but we do not desire to update them after - creation, for example because of an external controller is managing - them, like an autoscaler. + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. properties: config: additionalProperties: @@ -334,10 +333,10 @@ spec: - forProvider type: object x-kubernetes-validations: - - message: config is a required parameter + - message: spec.forProvider.config is a required parameter rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies || ''Update'' in self.managementPolicies) || has(self.forProvider.config) - || has(self.initProvider.config)' + || (has(self.initProvider) && has(self.initProvider.config))' status: description: ClusterConfigStatus defines the observed state of ClusterConfig. properties: diff --git a/package/crds/confluent.crossplane.io_clusters.yaml b/package/crds/confluent.crossplane.io_clusters.yaml index 6dbf3a3..dd6af52 100644 --- a/package/crds/confluent.crossplane.io_clusters.yaml +++ b/package/crds/confluent.crossplane.io_clusters.yaml @@ -239,17 +239,16 @@ spec: type: array type: object initProvider: - description: THIS IS AN ALPHA FIELD. Do not use it in production. - It is not honored unless the relevant Crossplane feature flag is - enabled, and may be changed or removed without notice. InitProvider - holds the same fields as ForProvider, with the exception of Identifier - and other resource reference fields. The fields that are in InitProvider - are merged into ForProvider when the resource is created. The same - fields are also added to the terraform ignore_changes hook, to avoid - updating them after creation. This is useful for fields that are - required on creation, but we do not desire to update them after - creation, for example because of an external controller is managing - them, like an autoscaler. + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. properties: availability: description: 'The availability zone configuration of the Kafka @@ -500,26 +499,26 @@ spec: - forProvider type: object x-kubernetes-validations: - - message: availability is a required parameter + - message: spec.forProvider.availability is a required parameter rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies || ''Update'' in self.managementPolicies) || has(self.forProvider.availability) - || has(self.initProvider.availability)' - - message: cloud is a required parameter + || (has(self.initProvider) && has(self.initProvider.availability))' + - message: spec.forProvider.cloud is a required parameter rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies || ''Update'' in self.managementPolicies) || has(self.forProvider.cloud) - || has(self.initProvider.cloud)' - - message: displayName is a required parameter + || (has(self.initProvider) && has(self.initProvider.cloud))' + - message: spec.forProvider.displayName is a required parameter rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies || ''Update'' in self.managementPolicies) || has(self.forProvider.displayName) - || has(self.initProvider.displayName)' - - message: environment is a required parameter + || (has(self.initProvider) && has(self.initProvider.displayName))' + - message: spec.forProvider.environment is a required parameter rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies || ''Update'' in self.managementPolicies) || has(self.forProvider.environment) - || has(self.initProvider.environment)' - - message: region is a required parameter + || (has(self.initProvider) && has(self.initProvider.environment))' + - message: spec.forProvider.region is a required parameter rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies || ''Update'' in self.managementPolicies) || has(self.forProvider.region) - || has(self.initProvider.region)' + || (has(self.initProvider) && has(self.initProvider.region))' status: description: ClusterStatus defines the observed state of Cluster. properties: diff --git a/package/crds/confluent.crossplane.io_environments.yaml b/package/crds/confluent.crossplane.io_environments.yaml index b7c9eba..5c6b18a 100644 --- a/package/crds/confluent.crossplane.io_environments.yaml +++ b/package/crds/confluent.crossplane.io_environments.yaml @@ -74,17 +74,16 @@ spec: type: string type: object initProvider: - description: THIS IS AN ALPHA FIELD. Do not use it in production. - It is not honored unless the relevant Crossplane feature flag is - enabled, and may be changed or removed without notice. InitProvider - holds the same fields as ForProvider, with the exception of Identifier - and other resource reference fields. The fields that are in InitProvider - are merged into ForProvider when the resource is created. The same - fields are also added to the terraform ignore_changes hook, to avoid - updating them after creation. This is useful for fields that are - required on creation, but we do not desire to update them after - creation, for example because of an external controller is managing - them, like an autoscaler. + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. properties: displayName: description: A human-readable name for the Environment. Start @@ -254,10 +253,10 @@ spec: - forProvider type: object x-kubernetes-validations: - - message: displayName is a required parameter + - message: spec.forProvider.displayName is a required parameter rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies || ''Update'' in self.managementPolicies) || has(self.forProvider.displayName) - || has(self.initProvider.displayName)' + || (has(self.initProvider) && has(self.initProvider.displayName))' status: description: EnvironmentStatus defines the observed state of Environment. properties: diff --git a/package/crds/confluent.crossplane.io_kafkaacls.yaml b/package/crds/confluent.crossplane.io_kafkaacls.yaml index c1ef344..f6b04a8 100644 --- a/package/crds/confluent.crossplane.io_kafkaacls.yaml +++ b/package/crds/confluent.crossplane.io_kafkaacls.yaml @@ -313,17 +313,16 @@ spec: type: string type: object initProvider: - description: THIS IS AN ALPHA FIELD. Do not use it in production. - It is not honored unless the relevant Crossplane feature flag is - enabled, and may be changed or removed without notice. InitProvider - holds the same fields as ForProvider, with the exception of Identifier - and other resource reference fields. The fields that are in InitProvider - are merged into ForProvider when the resource is created. The same - fields are also added to the terraform ignore_changes hook, to avoid - updating them after creation. This is useful for fields that are - required on creation, but we do not desire to update them after - creation, for example because of an external controller is managing - them, like an autoscaler. + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. properties: credentials: description: 'supports the following: The Cluster API Credentials.' @@ -534,30 +533,30 @@ spec: - forProvider type: object x-kubernetes-validations: - - message: host is a required parameter + - message: spec.forProvider.host is a required parameter rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies || ''Update'' in self.managementPolicies) || has(self.forProvider.host) - || has(self.initProvider.host)' - - message: operation is a required parameter + || (has(self.initProvider) && has(self.initProvider.host))' + - message: spec.forProvider.operation is a required parameter rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies || ''Update'' in self.managementPolicies) || has(self.forProvider.operation) - || has(self.initProvider.operation)' - - message: patternType is a required parameter + || (has(self.initProvider) && has(self.initProvider.operation))' + - message: spec.forProvider.patternType is a required parameter rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies || ''Update'' in self.managementPolicies) || has(self.forProvider.patternType) - || has(self.initProvider.patternType)' - - message: permission is a required parameter + || (has(self.initProvider) && has(self.initProvider.patternType))' + - message: spec.forProvider.permission is a required parameter rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies || ''Update'' in self.managementPolicies) || has(self.forProvider.permission) - || has(self.initProvider.permission)' - - message: resourceName is a required parameter + || (has(self.initProvider) && has(self.initProvider.permission))' + - message: spec.forProvider.resourceName is a required parameter rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies || ''Update'' in self.managementPolicies) || has(self.forProvider.resourceName) - || has(self.initProvider.resourceName)' - - message: resourceType is a required parameter + || (has(self.initProvider) && has(self.initProvider.resourceName))' + - message: spec.forProvider.resourceType is a required parameter rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies || ''Update'' in self.managementPolicies) || has(self.forProvider.resourceType) - || has(self.initProvider.resourceType)' + || (has(self.initProvider) && has(self.initProvider.resourceType))' status: description: KafkaACLStatus defines the observed state of KafkaACL. properties: diff --git a/package/crds/confluent.crossplane.io_rolebindings.yaml b/package/crds/confluent.crossplane.io_rolebindings.yaml index 2eb526c..2a45191 100644 --- a/package/crds/confluent.crossplane.io_rolebindings.yaml +++ b/package/crds/confluent.crossplane.io_rolebindings.yaml @@ -85,17 +85,16 @@ spec: type: string type: object initProvider: - description: THIS IS AN ALPHA FIELD. Do not use it in production. - It is not honored unless the relevant Crossplane feature flag is - enabled, and may be changed or removed without notice. InitProvider - holds the same fields as ForProvider, with the exception of Identifier - and other resource reference fields. The fields that are in InitProvider - are merged into ForProvider when the resource is created. The same - fields are also added to the terraform ignore_changes hook, to avoid - updating them after creation. This is useful for fields that are - required on creation, but we do not desire to update them after - creation, for example because of an external controller is managing - them, like an autoscaler. + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. properties: crnPattern: description: A Confluent Resource Name(CRN) that specifies the @@ -276,18 +275,18 @@ spec: - forProvider type: object x-kubernetes-validations: - - message: crnPattern is a required parameter + - message: spec.forProvider.crnPattern is a required parameter rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies || ''Update'' in self.managementPolicies) || has(self.forProvider.crnPattern) - || has(self.initProvider.crnPattern)' - - message: principal is a required parameter + || (has(self.initProvider) && has(self.initProvider.crnPattern))' + - message: spec.forProvider.principal is a required parameter rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies || ''Update'' in self.managementPolicies) || has(self.forProvider.principal) - || has(self.initProvider.principal)' - - message: roleName is a required parameter + || (has(self.initProvider) && has(self.initProvider.principal))' + - message: spec.forProvider.roleName is a required parameter rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies || ''Update'' in self.managementPolicies) || has(self.forProvider.roleName) - || has(self.initProvider.roleName)' + || (has(self.initProvider) && has(self.initProvider.roleName))' status: description: RoleBindingStatus defines the observed state of RoleBinding. properties: diff --git a/package/crds/confluent.crossplane.io_serviceaccounts.yaml b/package/crds/confluent.crossplane.io_serviceaccounts.yaml index a1cc513..f731f07 100644 --- a/package/crds/confluent.crossplane.io_serviceaccounts.yaml +++ b/package/crds/confluent.crossplane.io_serviceaccounts.yaml @@ -76,17 +76,16 @@ spec: type: string type: object initProvider: - description: THIS IS AN ALPHA FIELD. Do not use it in production. - It is not honored unless the relevant Crossplane feature flag is - enabled, and may be changed or removed without notice. InitProvider - holds the same fields as ForProvider, with the exception of Identifier - and other resource reference fields. The fields that are in InitProvider - are merged into ForProvider when the resource is created. The same - fields are also added to the terraform ignore_changes hook, to avoid - updating them after creation. This is useful for fields that are - required on creation, but we do not desire to update them after - creation, for example because of an external controller is managing - them, like an autoscaler. + description: THIS IS A BETA FIELD. It will be honored unless the Management + Policies feature flag is disabled. InitProvider holds the same fields + as ForProvider, with the exception of Identifier and other resource + reference fields. The fields that are in InitProvider are merged + into ForProvider when the resource is created. The same fields are + also added to the terraform ignore_changes hook, to avoid updating + them after creation. This is useful for fields that are required + on creation, but we do not desire to update them after creation, + for example because of an external controller is managing them, + like an autoscaler. properties: description: description: A free-form description of the Service Account. A @@ -258,10 +257,10 @@ spec: - forProvider type: object x-kubernetes-validations: - - message: displayName is a required parameter + - message: spec.forProvider.displayName is a required parameter rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies || ''Update'' in self.managementPolicies) || has(self.forProvider.displayName) - || has(self.initProvider.displayName)' + || (has(self.initProvider) && has(self.initProvider.displayName))' status: description: ServiceAccountStatus defines the observed state of ServiceAccount. properties: From 21d911174d8189a8bc3c2583803b1e6cb1b16cf7 Mon Sep 17 00:00:00 2001 From: I534922 Date: Wed, 15 Nov 2023 15:57:52 -0800 Subject: [PATCH 3/5] update copy rights for non generated files Signed-off-by: I534922 --- apis/v1alpha1/doc.go | 3 ++- apis/v1alpha1/register.go | 2 +- apis/v1alpha1/types.go | 3 ++- cmd/provider/main.go | 2 +- internal/controller/providerconfig/config.go | 2 +- 5 files changed, 7 insertions(+), 5 deletions(-) diff --git a/apis/v1alpha1/doc.go b/apis/v1alpha1/doc.go index d060da4..4f8310f 100644 --- a/apis/v1alpha1/doc.go +++ b/apis/v1alpha1/doc.go @@ -1,5 +1,6 @@ /* -Copyright 2021 Upbound Inc. +Copyright 2022 The Crossplane Authors. + */ // Package v1alpha1 contains the core resources of the confluent jet provider. diff --git a/apis/v1alpha1/register.go b/apis/v1alpha1/register.go index dc82fb1..a18a7fc 100644 --- a/apis/v1alpha1/register.go +++ b/apis/v1alpha1/register.go @@ -1,5 +1,5 @@ /* -Copyright 2021 The Crossplane Authors. +Copyright 2022 The Crossplane Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/apis/v1alpha1/types.go b/apis/v1alpha1/types.go index 865d5d9..568f6ab 100644 --- a/apis/v1alpha1/types.go +++ b/apis/v1alpha1/types.go @@ -1,5 +1,6 @@ /* -Copyright 2022 Upbound Inc. +Copyright 2022 The Crossplane Authors. + */ package v1alpha1 diff --git a/cmd/provider/main.go b/cmd/provider/main.go index 3e46e99..6d9539e 100644 --- a/cmd/provider/main.go +++ b/cmd/provider/main.go @@ -1,5 +1,5 @@ /* -Copyright 2021 The Crossplane Authors. +Copyright 2022 The Crossplane Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/internal/controller/providerconfig/config.go b/internal/controller/providerconfig/config.go index fac3489..db40e06 100644 --- a/internal/controller/providerconfig/config.go +++ b/internal/controller/providerconfig/config.go @@ -1,5 +1,5 @@ /* -Copyright 2021 The Crossplane Authors. +Copyright 2022 The Crossplane Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at From d24388baf6389c5bf249309f992ae5269a5dc2f8 Mon Sep 17 00:00:00 2001 From: I534922 Date: Wed, 15 Nov 2023 16:13:12 -0800 Subject: [PATCH 4/5] update copyrights Signed-off-by: I534922 --- apis/generate.go | 2 +- apis/v1alpha1/doc.go | 2 +- apis/v1alpha1/register.go | 2 +- apis/v1alpha1/types.go | 2 +- cmd/provider/main.go | 2 +- config/provider.go | 2 +- internal/clients/confluent.go | 2 +- internal/controller/doc.go | 2 +- internal/controller/providerconfig/config.go | 2 +- internal/features/features.go | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/apis/generate.go b/apis/generate.go index 3688ec4..f255469 100644 --- a/apis/generate.go +++ b/apis/generate.go @@ -2,7 +2,7 @@ // +build generate /* -Copyright 2021 Upbound Inc. +Copyright 2023 The Crossplane Authors. */ // NOTE: See the below link for details on what is happening here. diff --git a/apis/v1alpha1/doc.go b/apis/v1alpha1/doc.go index 4f8310f..577c637 100644 --- a/apis/v1alpha1/doc.go +++ b/apis/v1alpha1/doc.go @@ -1,5 +1,5 @@ /* -Copyright 2022 The Crossplane Authors. +Copyright 2023 The Crossplane Authors. */ diff --git a/apis/v1alpha1/register.go b/apis/v1alpha1/register.go index a18a7fc..2e67cf7 100644 --- a/apis/v1alpha1/register.go +++ b/apis/v1alpha1/register.go @@ -1,5 +1,5 @@ /* -Copyright 2022 The Crossplane Authors. +Copyright 2023 The Crossplane Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/apis/v1alpha1/types.go b/apis/v1alpha1/types.go index 568f6ab..e85ec57 100644 --- a/apis/v1alpha1/types.go +++ b/apis/v1alpha1/types.go @@ -1,5 +1,5 @@ /* -Copyright 2022 The Crossplane Authors. +Copyright 2023 The Crossplane Authors. */ diff --git a/cmd/provider/main.go b/cmd/provider/main.go index 6d9539e..c8e2a73 100644 --- a/cmd/provider/main.go +++ b/cmd/provider/main.go @@ -1,5 +1,5 @@ /* -Copyright 2022 The Crossplane Authors. +Copyright 2023 The Crossplane Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/config/provider.go b/config/provider.go index 3bf6687..ff01939 100644 --- a/config/provider.go +++ b/config/provider.go @@ -1,5 +1,5 @@ /* -Copyright 2021 Upbound Inc. +Copyright 2023 The Crossplane Authors. */ package config diff --git a/internal/clients/confluent.go b/internal/clients/confluent.go index aacfc36..cd2609b 100644 --- a/internal/clients/confluent.go +++ b/internal/clients/confluent.go @@ -1,5 +1,5 @@ /* -Copyright 2021 Upbound Inc. +Copyright 2023 The Crossplane Authors. */ package clients diff --git a/internal/controller/doc.go b/internal/controller/doc.go index a4c8097..cbfba8b 100644 --- a/internal/controller/doc.go +++ b/internal/controller/doc.go @@ -1,5 +1,5 @@ /* -Copyright 2021 Upbound Inc. +Copyright 2023 The Crossplane Authors. */ package controller diff --git a/internal/controller/providerconfig/config.go b/internal/controller/providerconfig/config.go index db40e06..18dba35 100644 --- a/internal/controller/providerconfig/config.go +++ b/internal/controller/providerconfig/config.go @@ -1,5 +1,5 @@ /* -Copyright 2022 The Crossplane Authors. +Copyright 2023 The Crossplane Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at diff --git a/internal/features/features.go b/internal/features/features.go index 3f88a74..1e1786f 100644 --- a/internal/features/features.go +++ b/internal/features/features.go @@ -1,5 +1,5 @@ /* - Copyright 2022 The Crossplane Authors. + Copyright 2023 The Crossplane Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at From e4f1faa88d3fbdea99bbb87d9c1cdf527c983a95 Mon Sep 17 00:00:00 2001 From: I534922 Date: Thu, 16 Nov 2023 09:06:49 -0800 Subject: [PATCH 5/5] add README credits Signed-off-by: I534922 --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index d55b025..f4a5eb2 100644 --- a/README.md +++ b/README.md @@ -77,3 +77,7 @@ make build For filing bugs, suggesting improvements, or requesting new features, please open an [issue](https://github.com/crossplane-contrib/provider-confluent/issues). + + +## Credits +Initially developed by [jaylevin](https://github.com/jaylevin), [jtucci](https://github.com/jtucci) and their team at [SAP](https://github.com/SAP).