diff --git a/api/configuration/v1/conditions.go b/api/configuration/v1/conditions.go index 84b075e..d368ec1 100644 --- a/api/configuration/v1/conditions.go +++ b/api/configuration/v1/conditions.go @@ -2,10 +2,12 @@ package v1 // ConditionType is a type of condition associated with an object. // This type should be used with the object's Status.Conditions field. +// +kgosupported type ConditionType string // ConditionReason defines the set of reasons that explain why a particular // condition type has been raised. +// +kgosupported type ConditionReason string const ( diff --git a/api/configuration/v1/configsource.go b/api/configuration/v1/configsource.go index c6ef4b9..b865e5e 100644 --- a/api/configuration/v1/configsource.go +++ b/api/configuration/v1/configsource.go @@ -2,6 +2,7 @@ package v1 // ConfigSource is a wrapper around SecretValueFromSource. // +kubebuilder:object:generate=true +// +kgosupported type ConfigSource struct { // Specifies a name and a key of a secret to refer to. The namespace is implicitly set to the one of referring object. SecretValue SecretValueFromSource `json:"secretKeyRef"` @@ -11,6 +12,7 @@ type ConfigSource struct { // It is an equivalent of the following patch: // `{"op": "add", "path": {.Path}, "value": {.ComputedValueFrom}}`. // +kubebuilder:object:generate=true +// +kgosupported type ConfigPatch struct { // Path is the JSON-Pointer value (RFC6901) that references a location within the target configuration. Path string `json:"path"` @@ -20,6 +22,7 @@ type ConfigPatch struct { // NamespacedConfigSource is a wrapper around NamespacedSecretValueFromSource. // +kubebuilder:object:generate=true +// +kgosupported type NamespacedConfigSource struct { // Specifies a name, a namespace, and a key of a secret to refer to. SecretValue NamespacedSecretValueFromSource `json:"secretKeyRef"` @@ -28,6 +31,7 @@ type NamespacedConfigSource struct { // NamespacedConfigPatch is a JSON patch to add values from secrets to KongClusterPlugin // to the generated configuration of plugin in Kong. // +kubebuilder:object:generate=true +// +kgosupported type NamespacedConfigPatch struct { // Path is the JSON path to add the patch. Path string `json:"path"` @@ -37,6 +41,7 @@ type NamespacedConfigPatch struct { // SecretValueFromSource represents the source of a secret value. // +kubebuilder:object:generate=true +// +kgosupported type SecretValueFromSource struct { // The secret containing the key. Secret string `json:"name"` @@ -46,6 +51,7 @@ type SecretValueFromSource struct { // NamespacedSecretValueFromSource represents the source of a secret value specifying the secret namespace. // +kubebuilder:object:generate=true +// +kgosupported type NamespacedSecretValueFromSource struct { // The namespace containing the secret. Namespace string `json:"namespace"` diff --git a/api/configuration/v1/kongconsumer_types.go b/api/configuration/v1/kongconsumer_types.go index a333d5c..cc3766f 100644 --- a/api/configuration/v1/kongconsumer_types.go +++ b/api/configuration/v1/kongconsumer_types.go @@ -23,6 +23,8 @@ import ( konnectv1alpha1 "github.com/kong/kubernetes-configuration/api/konnect/v1alpha1" ) +// KongConsumer is the Schema for the kongconsumers API. +// // +genclient // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // +kubebuilder:object:root=true @@ -36,8 +38,7 @@ import ( // +kubebuilder:validation:XValidation:rule="!has(oldSelf.spec.controlPlaneRef) || has(self.spec.controlPlaneRef)", message="controlPlaneRef is required once set" // +kubebuilder:validation:XValidation:rule="!has(self.spec.controlPlaneRef.konnectNamespacedRef) ? true : !has(self.spec.controlPlaneRef.konnectNamespacedRef.__namespace__)", message="spec.controlPlaneRef cannot specify namespace for namespaced resource" // +kubebuilder:validation:XValidation:rule="(!has(self.status) || !self.status.conditions.exists(c, c.type == 'Programmed' && c.status == 'True')) ? true : oldSelf.spec.controlPlaneRef == self.spec.controlPlaneRef", message="spec.controlPlaneRef is immutable when an entity is already Programmed" - -// KongConsumer is the Schema for the kongconsumers API. +// +kgosupported type KongConsumer struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` @@ -66,15 +67,17 @@ type KongConsumer struct { Status KongConsumerStatus `json:"status,omitempty"` } +// KongConsumerSpec defines the desired state of KongConsumer. +// +kgosupported type KongConsumerSpec struct { // ControlPlaneRef is a reference to a ControlPlane this Consumer is associated with. // +optional ControlPlaneRef *configurationv1alpha1.ControlPlaneRef `json:"controlPlaneRef,omitempty"` } -// +kubebuilder:object:root=true - // KongConsumerList contains a list of KongConsumer. +// +kubebuilder:object:root=true +// +kgosupported type KongConsumerList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` diff --git a/api/configuration/v1/kongplugin_types.go b/api/configuration/v1/kongplugin_types.go index 4cf36d1..5fb6d27 100644 --- a/api/configuration/v1/kongplugin_types.go +++ b/api/configuration/v1/kongplugin_types.go @@ -22,6 +22,8 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) +// KongPlugin is the Schema for the kongplugins API. +// // +genclient // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // +kubebuilder:object:root=true @@ -36,8 +38,7 @@ import ( // +kubebuilder:validation:XValidation:rule="!(has(self.config) && has(self.configFrom))", message="Using both config and configFrom fields is not allowed." // +kubebuilder:validation:XValidation:rule="!(has(self.configFrom) && has(self.configPatches))", message="Using both configFrom and configPatches fields is not allowed." // +kubebuilder:validation:XValidation:rule="self.plugin == oldSelf.plugin", message="The plugin field is immutable" - -// KongPlugin is the Schema for the kongplugins API. +// +kgosupported type KongPlugin struct { metav1.TypeMeta `json:",inline"` // Setting a `global` label to `true` will apply the plugin to every request proxied by the Kong. @@ -100,9 +101,9 @@ type KongPlugin struct { Status KongPluginStatus `json:"status,omitempty"` } -// +kubebuilder:object:root=true - // KongPluginList contains a list of KongPlugin. +// +kubebuilder:object:root=true +// +kgosupported type KongPluginList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` @@ -110,6 +111,7 @@ type KongPluginList struct { } // KongPluginStatus represents the current status of the KongPlugin resource. +// +kgosupported type KongPluginStatus struct { // Conditions describe the current conditions of the KongPluginStatus. // diff --git a/api/configuration/v1/kongprotocol_types.go b/api/configuration/v1/kongprotocol_types.go index f3a975b..9889ff1 100644 --- a/api/configuration/v1/kongprotocol_types.go +++ b/api/configuration/v1/kongprotocol_types.go @@ -4,6 +4,7 @@ package v1 // This alias is necessary to deal with https://github.com/kubernetes-sigs/controller-tools/issues/342 // +kubebuilder:validation:Enum=http;https;grpc;grpcs;tcp;tls;udp // +kubebuilder:object:generate=true +// +kgosupported type KongProtocol string // KongProtocolsToStrings converts a slice of KongProtocol to plain strings. diff --git a/api/configuration/v1alpha1/key_set_ref.go b/api/configuration/v1alpha1/key_set_ref.go index 42a488c..05b40f6 100644 --- a/api/configuration/v1alpha1/key_set_ref.go +++ b/api/configuration/v1alpha1/key_set_ref.go @@ -2,6 +2,7 @@ package v1alpha1 // KeySetRefType is the enum type for the KeySetRef. // +kubebuilder:validation:Enum=konnectID;namespacedRef +// +kgosupported type KeySetRefType string const ( @@ -19,6 +20,7 @@ const ( // It is used to reference a KeySet entity. // +kubebuilder:validation:XValidation:rule="self.type == 'namespacedRef' ? has(self.namespacedRef) : true", message="when type is namespacedRef, namespacedRef must be set" // +kubebuilder:validation:XValidation:rule="self.type == 'konnectID' ? has(self.konnectID) : true", message="when type is konnectID, konnectID must be set" +// +kgosupported type KeySetRef struct { // Type defines type of the KeySet object reference. It can be one of: // - konnectID @@ -37,6 +39,7 @@ type KeySetRef struct { } // KeySetNamespacedRef is the schema for the KeySetNamespacedRef type. +// +kgosupported type KeySetNamespacedRef struct { // Name is the name of the KeySet object. // +kubebuilder:validation:MinLength=1 diff --git a/api/configuration/v1alpha1/kong_ca_certificate.go b/api/configuration/v1alpha1/kong_ca_certificate.go index 37f7b9e..c4d77e9 100644 --- a/api/configuration/v1alpha1/kong_ca_certificate.go +++ b/api/configuration/v1alpha1/kong_ca_certificate.go @@ -17,6 +17,7 @@ import ( // +kubebuilder:validation:XValidation:rule="!has(oldSelf.spec.controlPlaneRef) || has(self.spec.controlPlaneRef)", message="controlPlaneRef is required once set" // +kubebuilder:validation:XValidation:rule="!has(self.spec.controlPlaneRef.konnectNamespacedRef) ? true : !has(self.spec.controlPlaneRef.konnectNamespacedRef.__namespace__)", message="spec.controlPlaneRef cannot specify namespace for namespaced resource" // +kubebuilder:validation:XValidation:rule="(!self.status.conditions.exists(c, c.type == 'Programmed' && c.status == 'True')) ? true : oldSelf.spec.controlPlaneRef == self.spec.controlPlaneRef", message="spec.controlPlaneRef is immutable when an entity is already Programmed" +// +kgosupported type KongCACertificate struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` @@ -28,6 +29,7 @@ type KongCACertificate struct { } // KongCACertificateSpec contains the specification for the KongCACertificate. +// +kgosupported type KongCACertificateSpec struct { // ControlPlaneRef references the Konnect Control Plane that this KongCACertificate should be created in. ControlPlaneRef *ControlPlaneRef `json:"controlPlaneRef,omitempty"` @@ -35,6 +37,7 @@ type KongCACertificateSpec struct { } // KongCACertificateAPISpec contains the API specification for the KongCACertificate. +// +kgosupported type KongCACertificateAPISpec struct { // Cert is the PEM-encoded CA certificate. // +kubebuilder:validation:Required @@ -43,6 +46,8 @@ type KongCACertificateAPISpec struct { Tags []string `json:"tags,omitempty"` } +// KongCACertificateStatus defines the status for a KongCACertificate. +// +kgosupported type KongCACertificateStatus struct { // Konnect contains the Konnect entity status. // +optional @@ -58,6 +63,7 @@ type KongCACertificateStatus struct { // KongCACertificateList contains a list of KongCACertificates. // +kubebuilder:object:root=true +// +kgosupported type KongCACertificateList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` diff --git a/api/configuration/v1alpha1/kong_certificate.go b/api/configuration/v1alpha1/kong_certificate.go index fab7bcd..6a4bc91 100644 --- a/api/configuration/v1alpha1/kong_certificate.go +++ b/api/configuration/v1alpha1/kong_certificate.go @@ -16,6 +16,7 @@ import ( // +kubebuilder:printcolumn:name="Programmed",description="The Resource is Programmed on Konnect",type=string,JSONPath=`.status.conditions[?(@.type=='Programmed')].status` // +kubebuilder:validation:XValidation:rule="!has(oldSelf.spec.controlPlaneRef) || has(self.spec.controlPlaneRef)", message="controlPlaneRef is required once set" // +kubebuilder:validation:XValidation:rule="(!self.status.conditions.exists(c, c.type == 'Programmed' && c.status == 'True')) ? true : oldSelf.spec.controlPlaneRef == self.spec.controlPlaneRef", message="spec.controlPlaneRef is immutable when an entity is already Programmed" +// +kgosupported type KongCertificate struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` @@ -27,6 +28,7 @@ type KongCertificate struct { } // KongCertificateSpec contains the specification for the KongCertificate. +// +kgosupported type KongCertificateSpec struct { // ControlPlaneRef references the Konnect Control Plane that this KongCertificate should be created in. ControlPlaneRef *ControlPlaneRef `json:"controlPlaneRef,omitempty"` @@ -34,6 +36,7 @@ type KongCertificateSpec struct { } // KongCertificateAPISpec contains the API specification for the KongCertificate. +// +kgosupported type KongCertificateAPISpec struct { // Cert is the PEM-encoded certificate. // +kubebuilder:validation:Required @@ -56,6 +59,8 @@ type KongCertificateAPISpec struct { Tags []string `json:"tags,omitempty"` } +// KongCertificateStatus defines the status for a KongCertificate. +// +kgosupported type KongCertificateStatus struct { // Konnect contains the Konnect entity status. // +optional @@ -71,6 +76,7 @@ type KongCertificateStatus struct { // KongCertificateList contains a list of KongCertificates. // +kubebuilder:object:root=true +// +kgosupported type KongCertificateList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` diff --git a/api/configuration/v1alpha1/kong_license_types.go b/api/configuration/v1alpha1/kong_license_types.go index 8f9ddf8..b600f26 100644 --- a/api/configuration/v1alpha1/kong_license_types.go +++ b/api/configuration/v1alpha1/kong_license_types.go @@ -4,6 +4,8 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) +// KongLicense stores a Kong enterprise license to apply to managed Kong gateway instances. +// // +genclient // +genclient:nonNamespaced // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object @@ -13,8 +15,7 @@ import ( // +kubebuilder:subresource:status // +kubebuilder:printcolumn:name="Age",type=date,JSONPath=`.metadata.creationTimestamp`,description="Age" // +kubebuilder:printcolumn:name="Enabled",type=boolean,JSONPath=`.enabled`,description="Enabled to configure on Kong gateway instances" - -// KongLicense stores a Kong enterprise license to apply to managed Kong gateway instances. +// +kgosupported type KongLicense struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` @@ -29,6 +30,7 @@ type KongLicense struct { } // KongLicenseStatus stores the status of the KongLicense being processesed in each controller that reconciles it. +// +kgosupported type KongLicenseStatus struct { // +listType=map // +listMapKey=controllerName @@ -37,6 +39,7 @@ type KongLicenseStatus struct { // KongLicenseControllerStatus is the status of owning KongLicense being processed // identified by the controllerName field. +// +kgosupported type KongLicenseControllerStatus struct { // ControllerName is an identifier of the controller to reconcile this KongLicense. // Should be unique in the list of controller statuses. @@ -56,18 +59,21 @@ type KongLicenseControllerStatus struct { // RFC 1123 subdomain. // +kubebuilder:validation:MaxLength=253 // +kubebuilder:validation:Pattern=`^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$` +// +kgosupported type Group string // Kind refers to a Kubernetes kind. // +kubebuilder:validation:MinLength=1 // +kubebuilder:validation:MaxLength=63 // +kubebuilder:validation:Pattern=`^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$` +// +kgosupported type Kind string // Namespace refers to a Kubernetes namespace. It must be a RFC 1123 label. // +kubebuilder:validation:Pattern=`^[a-z0-9]([-a-z0-9]*[a-z0-9])?$` // +kubebuilder:validation:MinLength=1 // +kubebuilder:validation:MaxLength=63 +// +kgosupported type Namespace string // ObjectName refers to the name of a Kubernetes object. @@ -76,8 +82,11 @@ type Namespace string // // +kubebuilder:validation:MinLength=1 // +kubebuilder:validation:MaxLength=253 +// +kgosupported type ObjectName string +// ControllerReference defines the reference of a controller that reconciles a KongLicense. +// +kgosupported type ControllerReference struct { // Group is the group of referent. // It should be empty if the referent is in "core" group (like pod). @@ -92,11 +101,9 @@ type ControllerReference struct { Name ObjectName `json:"name"` } -type KongLicensePhase string - -// +kubebuilder:object:root=true - // KongLicenseList contains a list of KongLicense. +// +kubebuilder:object:root=true +// +kgosupported type KongLicenseList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` diff --git a/api/configuration/v1alpha1/kong_target_types.go b/api/configuration/v1alpha1/kong_target_types.go index d64053b..36e0bfe 100644 --- a/api/configuration/v1alpha1/kong_target_types.go +++ b/api/configuration/v1alpha1/kong_target_types.go @@ -32,6 +32,7 @@ import ( // +kubebuilder:subresource:status // +kubebuilder:printcolumn:name="Programmed",description="The Resource is Programmed on Konnect",type=string,JSONPath=`.status.conditions[?(@.type=='Programmed')].status` // +kubebuilder:validation:XValidation:rule="oldSelf.spec.upstreamRef == self.spec.upstreamRef", message="spec.upstreamRef is immutable" +// +kgosupported type KongTarget struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` @@ -41,6 +42,8 @@ type KongTarget struct { Status KongTargetStatus `json:"status,omitempty"` } +// KongTargetSpec defines the specification of a Kong Target. +// +kgosupported type KongTargetSpec struct { // UpstreamRef is a reference to a KongUpstream this KongTarget is attached to. UpstreamRef TargetRef `json:"upstreamRef"` @@ -48,6 +51,8 @@ type KongTargetSpec struct { KongTargetAPISpec `json:",inline"` } +// KongTargetAPISpec defines the attributes of a Kong Target. +// +kgosupported type KongTargetAPISpec struct { // Target is the target address of the upstream. Target string `json:"target"` @@ -60,6 +65,8 @@ type KongTargetAPISpec struct { Tags []string `json:"tags,omitempty"` } +// KongTargetStatus contains the status of a Kong Target. +// +kgosupported type KongTargetStatus struct { // Konnect contains the Konnect entity status. // +optional @@ -73,9 +80,9 @@ type KongTargetStatus struct { Conditions []metav1.Condition `json:"conditions,omitempty"` } -// +kubebuilder:object:root=true - // KongTargetList contains a list of Kong Targets. +// +kubebuilder:object:root=true +// +kgosupported type KongTargetList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` diff --git a/api/configuration/v1alpha1/kong_vault_types.go b/api/configuration/v1alpha1/kong_vault_types.go index ee3f558..84e9bd1 100644 --- a/api/configuration/v1alpha1/kong_vault_types.go +++ b/api/configuration/v1alpha1/kong_vault_types.go @@ -26,6 +26,10 @@ const ( KongVaultKind = "KongVault" ) +// KongVault is the schema for kongvaults API which defines a custom Kong vault. +// A Kong vault is a storage to store sensitive data, where the values can be referenced in configuration of plugins. +// See: https://docs.konghq.com/gateway/latest/kong-enterprise/secrets-management/ +// // +genclient // +genclient:nonNamespaced // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object @@ -41,10 +45,7 @@ const ( // +kubebuilder:validation:XValidation:rule="self.spec.prefix == oldSelf.spec.prefix", message="The spec.prefix field is immutable" // +kubebuilder:validation:XValidation:rule="!has(oldSelf.spec.controlPlaneRef) || has(self.spec.controlPlaneRef)", message="controlPlaneRef is required once set" // +kubebuilder:validation:XValidation:rule="(!has(self.status) || !self.status.conditions.exists(c, c.type == 'Programmed' && c.status == 'True')) ? true : oldSelf.spec.controlPlaneRef == self.spec.controlPlaneRef", message="spec.controlPlaneRef is immutable when an entity is already Programmed" - -// KongVault is the schema for kongvaults API which defines a custom Kong vault. -// A Kong vault is a storage to store sensitive data, where the values can be referenced in configuration of plugins. -// See: https://docs.konghq.com/gateway/latest/kong-enterprise/secrets-management/ +// +kgosupported type KongVault struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` @@ -53,6 +54,7 @@ type KongVault struct { } // KongVaultSpec defines specification of a custom Kong vault. +// +kgosupported type KongVaultSpec struct { // Backend is the type of the backend storing the secrets in the vault. // The supported backends of Kong is listed here: @@ -75,6 +77,7 @@ type KongVaultSpec struct { } // KongVaultStatus represents the current status of the KongVault resource. +// +kgosupported type KongVaultStatus struct { // Konnect contains the Konnect entity status. // +optional @@ -93,9 +96,9 @@ type KongVaultStatus struct { Conditions []metav1.Condition `json:"conditions"` } -// +kubebuilder:object:root=true - // KongVaultList contains a list of KongVault. +// +kubebuilder:object:root=true +// +kgosupported type KongVaultList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` diff --git a/api/configuration/v1alpha1/kongcredential_acl_types.go b/api/configuration/v1alpha1/kongcredential_acl_types.go index ed2c324..f4a9359 100644 --- a/api/configuration/v1alpha1/kongcredential_acl_types.go +++ b/api/configuration/v1alpha1/kongcredential_acl_types.go @@ -33,6 +33,7 @@ import ( // +kubebuilder:subresource:status // +kubebuilder:printcolumn:name="Programmed",description="The Resource is Programmed on Konnect",type=string,JSONPath=`.status.conditions[?(@.type=='Programmed')].status` // +kubebuilder:validation:XValidation:rule="(!self.status.conditions.exists(c, c.type == 'Programmed' && c.status == 'True')) ? true : oldSelf.spec.consumerRef == self.spec.consumerRef",message="spec.consumerRef is immutable when an entity is already Programmed" +// +kgosupported type KongCredentialACL struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` @@ -47,6 +48,7 @@ type KongCredentialACL struct { } // KongCredentialACLSpec defines specification of Kong ACL. +// +kgosupported type KongCredentialACLSpec struct { // ConsumerRef is a reference to a Consumer this KongCredentialACL is associated with. // @@ -57,6 +59,7 @@ type KongCredentialACLSpec struct { } // KongCredentialACLAPISpec defines specification of an ACL credential. +// +kgosupported type KongCredentialACLAPISpec struct { // Group is the name for the ACL credential. // @@ -68,6 +71,7 @@ type KongCredentialACLAPISpec struct { } // KongCredentialACLStatus represents the current status of the ACL credential resource. +// +kgosupported type KongCredentialACLStatus struct { // Konnect contains the Konnect entity status. // +optional @@ -81,9 +85,9 @@ type KongCredentialACLStatus struct { Conditions []metav1.Condition `json:"conditions,omitempty"` } -// +kubebuilder:object:root=true - // KongCredentialACLList contains a list of ACL credentials. +// +kubebuilder:object:root=true +// +kgosupported type KongCredentialACLList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` diff --git a/api/configuration/v1alpha1/kongcredential_apikey_types.go b/api/configuration/v1alpha1/kongcredential_apikey_types.go index b5b5736..c1b1272 100644 --- a/api/configuration/v1alpha1/kongcredential_apikey_types.go +++ b/api/configuration/v1alpha1/kongcredential_apikey_types.go @@ -33,6 +33,7 @@ import ( // +kubebuilder:subresource:status // +kubebuilder:printcolumn:name="Programmed",description="The Resource is Programmed on Konnect",type=string,JSONPath=`.status.conditions[?(@.type=='Programmed')].status` // +kubebuilder:validation:XValidation:rule="(!self.status.conditions.exists(c, c.type == 'Programmed' && c.status == 'True')) ? true : oldSelf.spec.consumerRef == self.spec.consumerRef",message="spec.consumerRef is immutable when an entity is already Programmed" +// +kgosupported type KongCredentialAPIKey struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` @@ -47,6 +48,7 @@ type KongCredentialAPIKey struct { } // KongCredentialAPIKeySpec defines specification of a Kong Route. +// +kgosupported type KongCredentialAPIKeySpec struct { // ConsumerRef is a reference to a Consumer this KongCredentialAPIKey is associated with. // @@ -57,6 +59,7 @@ type KongCredentialAPIKeySpec struct { } // KongCredentialAPIKeyAPISpec defines specification of an API Key credential. +// +kgosupported type KongCredentialAPIKeyAPISpec struct { // Key is the key for the API Key credential. // @@ -68,6 +71,7 @@ type KongCredentialAPIKeyAPISpec struct { } // KongCredentialAPIKeyStatus represents the current status of the API Key credential resource. +// +kgosupported type KongCredentialAPIKeyStatus struct { // Konnect contains the Konnect entity status. // +optional @@ -81,9 +85,9 @@ type KongCredentialAPIKeyStatus struct { Conditions []metav1.Condition `json:"conditions,omitempty"` } -// +kubebuilder:object:root=true - // KongCredentialAPIKeyList contains a list of API Key credentials. +// +kubebuilder:object:root=true +// +kgosupported type KongCredentialAPIKeyList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` diff --git a/api/configuration/v1alpha1/kongcredential_basic_auth_types.go b/api/configuration/v1alpha1/kongcredential_basic_auth_types.go index 0ae5139..f84fa1c 100644 --- a/api/configuration/v1alpha1/kongcredential_basic_auth_types.go +++ b/api/configuration/v1alpha1/kongcredential_basic_auth_types.go @@ -33,6 +33,7 @@ import ( // +kubebuilder:subresource:status // +kubebuilder:printcolumn:name="Programmed",description="The Resource is Programmed on Konnect",type=string,JSONPath=`.status.conditions[?(@.type=='Programmed')].status` // +kubebuilder:validation:XValidation:rule="(!self.status.conditions.exists(c, c.type == 'Programmed' && c.status == 'True')) ? true : oldSelf.spec.consumerRef == self.spec.consumerRef",message="spec.consumerRef is immutable when an entity is already Programmed" +// +kgosupported type KongCredentialBasicAuth struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` @@ -47,6 +48,7 @@ type KongCredentialBasicAuth struct { } // KongCredentialBasicAuthSpec defines specification of a Kong Route. +// +kgosupported type KongCredentialBasicAuthSpec struct { // ConsumerRef is a reference to a Consumer this CredentialBasicAuth is associated with. // @@ -57,6 +59,7 @@ type KongCredentialBasicAuthSpec struct { } // KongCredentialBasicAuthAPISpec defines specification of a BasicAuth credential. +// +kgosupported type KongCredentialBasicAuthAPISpec struct { // Password is the password for the BasicAuth credential. // @@ -73,6 +76,7 @@ type KongCredentialBasicAuthAPISpec struct { } // KongCredentialBasicAuthStatus represents the current status of the BasicAuth credential resource. +// +kgosupported type KongCredentialBasicAuthStatus struct { // Konnect contains the Konnect entity status. // +optional @@ -86,9 +90,9 @@ type KongCredentialBasicAuthStatus struct { Conditions []metav1.Condition `json:"conditions,omitempty"` } -// +kubebuilder:object:root=true - // KongCredentialBasicAuthList contains a list of BasicAuth credentials. +// +kubebuilder:object:root=true +// +kgosupported type KongCredentialBasicAuthList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` diff --git a/api/configuration/v1alpha1/kongcredential_hmac_types.go b/api/configuration/v1alpha1/kongcredential_hmac_types.go index 7b9d6b8..2ac8a7d 100644 --- a/api/configuration/v1alpha1/kongcredential_hmac_types.go +++ b/api/configuration/v1alpha1/kongcredential_hmac_types.go @@ -33,6 +33,7 @@ import ( // +kubebuilder:subresource:status // +kubebuilder:printcolumn:name="Programmed",description="The Resource is Programmed on Konnect",type=string,JSONPath=`.status.conditions[?(@.type=='Programmed')].status` // +kubebuilder:validation:XValidation:rule="(!self.status.conditions.exists(c, c.type == 'Programmed' && c.status == 'True')) ? true : oldSelf.spec.consumerRef == self.spec.consumerRef",message="spec.consumerRef is immutable when an entity is already Programmed" +// +kgosupported type KongCredentialHMAC struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` @@ -47,6 +48,7 @@ type KongCredentialHMAC struct { } // KongCredentialHMACSpec defines specification of a Kong Route. +// +kgosupported type KongCredentialHMACSpec struct { // ConsumerRef is a reference to a Consumer this KongCredentialHMAC is associated with. // @@ -57,6 +59,7 @@ type KongCredentialHMACSpec struct { } // KongCredentialHMACAPISpec defines specification of an HMAC credential. +// +kgosupported type KongCredentialHMACAPISpec struct { // ID is the unique identifier for the HMAC credential. ID *string `json:"id,omitempty"` @@ -70,6 +73,7 @@ type KongCredentialHMACAPISpec struct { } // KongCredentialHMACStatus represents the current status of the HMAC credential resource. +// +kgosupported type KongCredentialHMACStatus struct { // Konnect contains the Konnect entity status. // +optional @@ -83,9 +87,9 @@ type KongCredentialHMACStatus struct { Conditions []metav1.Condition `json:"conditions,omitempty"` } -// +kubebuilder:object:root=true - // KongCredentialHMACList contains a list of HMAC credentials. +// +kubebuilder:object:root=true +// +kgosupported type KongCredentialHMACList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` diff --git a/api/configuration/v1alpha1/kongcredential_jwt_types.go b/api/configuration/v1alpha1/kongcredential_jwt_types.go index 019c150..c194800 100644 --- a/api/configuration/v1alpha1/kongcredential_jwt_types.go +++ b/api/configuration/v1alpha1/kongcredential_jwt_types.go @@ -34,6 +34,7 @@ import ( // +kubebuilder:printcolumn:name="Programmed",description="The Resource is Programmed on Konnect",type=string,JSONPath=`.status.conditions[?(@.type=='Programmed')].status` // +kubebuilder:validation:XValidation:rule="(!self.status.conditions.exists(c, c.type == 'Programmed' && c.status == 'True')) ? true : oldSelf.spec.consumerRef == self.spec.consumerRef",message="spec.consumerRef is immutable when an entity is already Programmed" // +kubebuilder:validation:XValidation:rule="self.spec.algorithm in [ 'RS256','RS384','RS512','ES256','ES384','ES512','PS256','PS384','PS512','EdDSA', ] ? has(self.spec.rsa_public_key) : true",message="spec.rsa_public_key is required when algorithm is RS*, ES*, PS* or EdDSA*" +// +kgosupported type KongCredentialJWT struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` @@ -48,6 +49,7 @@ type KongCredentialJWT struct { } // KongCredentialJWTSpec defines specification of a Kong Route. +// +kgosupported type KongCredentialJWTSpec struct { // ConsumerRef is a reference to a Consumer this KongCredentialJWT is associated with. // @@ -58,6 +60,7 @@ type KongCredentialJWTSpec struct { } // KongCredentialJWTAPISpec defines specification of an JWT credential. +// +kgosupported type KongCredentialJWTAPISpec struct { // Algorithm is the algorithm used to sign the JWT token. // +kubebuilder:default=HS256 @@ -76,6 +79,7 @@ type KongCredentialJWTAPISpec struct { } // KongCredentialJWTStatus represents the current status of the JWT credential resource. +// +kgosupported type KongCredentialJWTStatus struct { // Konnect contains the Konnect entity status. // +optional @@ -89,9 +93,9 @@ type KongCredentialJWTStatus struct { Conditions []metav1.Condition `json:"conditions,omitempty"` } -// +kubebuilder:object:root=true - // KongCredentialJWTList contains a list of JWT credentials. +// +kubebuilder:object:root=true +// +kgosupported type KongCredentialJWTList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` diff --git a/api/configuration/v1alpha1/kongdataplanecertificate_types.go b/api/configuration/v1alpha1/kongdataplanecertificate_types.go index cec11f1..0d7d289 100644 --- a/api/configuration/v1alpha1/kongdataplanecertificate_types.go +++ b/api/configuration/v1alpha1/kongdataplanecertificate_types.go @@ -34,6 +34,7 @@ import ( // +kubebuilder:validation:XValidation:rule="!has(self.spec.controlPlaneRef) ? true : (!self.status.conditions.exists(c, c.type == 'Programmed' && c.status == 'True')) ? true : oldSelf.spec.controlPlaneRef == self.spec.controlPlaneRef", message="spec.controlPlaneRef is immutable when an entity is already Programmed" // +kubebuilder:validation:XValidation:rule="(!self.status.conditions.exists(c, c.type == 'Programmed' && c.status == 'True')) ? true : oldSelf.spec.cert == self.spec.cert", message="spec.cert is immutable when an entity is already Programmed" // +kubebuilder:validation:XValidation:rule="!has(self.spec.controlPlaneRef) ? true : !has(self.spec.controlPlaneRef.konnectNamespacedRef) ? true : !has(self.spec.controlPlaneRef.konnectNamespacedRef.__namespace__)", message="spec.controlPlaneRef cannot specify namespace for namespaced resource - it's not supported yet" +// +kgosupported type KongDataplaneCertificate struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` @@ -45,6 +46,7 @@ type KongDataplaneCertificate struct { } // KongDataplaneCertificateSpec defines the spec for a KongDataplaneCertificate. +// +kgosupported type KongDataplaneCertificateSpec struct { // ControlPlaneRef is a reference to a Konnect ControlPlane this KongDataplaneCertificate is associated with. // +optional @@ -55,6 +57,7 @@ type KongDataplaneCertificateSpec struct { } // KongDataplaneCertificateAPISpec defines the attributes of a Kong DP certificate. +// +kgosupported type KongDataplaneCertificateAPISpec struct { // Cert is the certificate in PEM format. Once the certificate gets programmed this field becomes immutable. // +kubebuilder:validation:MinLength=1 @@ -62,6 +65,7 @@ type KongDataplaneCertificateAPISpec struct { } // KongDataplaneCertificateStatus defines the status for a KongDataplaneCertificate. +// +kgosupported type KongDataplaneCertificateStatus struct { // Konnect contains the Konnect entity status. // +optional @@ -75,9 +79,9 @@ type KongDataplaneCertificateStatus struct { Conditions []metav1.Condition `json:"conditions,omitempty"` } -// +kubebuilder:object:root=true - // KongDataplaneCertificateList contains a list of Kong Keys. +// +kubebuilder:object:root=true +// +kgosupported type KongDataplaneCertificateList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` diff --git a/api/configuration/v1alpha1/kongkey_types.go b/api/configuration/v1alpha1/kongkey_types.go index f34c095..b31222f 100644 --- a/api/configuration/v1alpha1/kongkey_types.go +++ b/api/configuration/v1alpha1/kongkey_types.go @@ -33,6 +33,7 @@ import ( // +kubebuilder:validation:XValidation:rule="!has(oldSelf.spec.controlPlaneRef) || has(self.spec.controlPlaneRef)", message="controlPlaneRef is required once set" // +kubebuilder:validation:XValidation:rule="(!self.status.conditions.exists(c, c.type == 'Programmed' && c.status == 'True')) ? true : oldSelf.spec.controlPlaneRef == self.spec.controlPlaneRef", message="spec.controlPlaneRef is immutable when an entity is already Programmed" // +kubebuilder:validation:XValidation:rule="!has(self.spec.controlPlaneRef) ? true : !has(self.spec.controlPlaneRef.konnectNamespacedRef) ? true : !has(self.spec.controlPlaneRef.konnectNamespacedRef.__namespace__)", message="spec.controlPlaneRef cannot specify namespace for namespaced resource - it's not supported yet" +// +kgosupported type KongKey struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` @@ -44,6 +45,7 @@ type KongKey struct { } // KongKeySpec defines the spec for a KongKey. +// +kgosupported type KongKeySpec struct { // ControlPlaneRef is a reference to a Konnect ControlPlane this KongKey is associated with. // +optional @@ -60,6 +62,7 @@ type KongKeySpec struct { // KongKeyAPISpec defines the attributes of a Kong Key. // +kubebuilder:validation:XValidation:rule="has(self.jwk) || has(self.pem)", message="Either 'jwk' or 'pem' must be set" +// +kgosupported type KongKeyAPISpec struct { // KID is a unique identifier for a key. // When JWK is provided, KID has to match the KID in the JWK. @@ -87,6 +90,7 @@ type KongKeyAPISpec struct { } // PEMKeyPair defines a keypair in PEM format. +// +kgosupported type PEMKeyPair struct { // The private key in PEM format. // +kubebuilder:validation:MinLength=1 @@ -98,6 +102,7 @@ type PEMKeyPair struct { } // KongKeyStatus defines the status for a KongKey. +// +kgosupported type KongKeyStatus struct { // Konnect contains the Konnect entity status. // +optional @@ -111,9 +116,9 @@ type KongKeyStatus struct { Conditions []metav1.Condition `json:"conditions,omitempty"` } -// +kubebuilder:object:root=true - // KongKeyList contains a list of Kong Keys. +// +kubebuilder:object:root=true +// +kgosupported type KongKeyList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` diff --git a/api/configuration/v1alpha1/kongkeyset_types.go b/api/configuration/v1alpha1/kongkeyset_types.go index 71c76a2..12eb92b 100644 --- a/api/configuration/v1alpha1/kongkeyset_types.go +++ b/api/configuration/v1alpha1/kongkeyset_types.go @@ -32,6 +32,7 @@ import ( // +kubebuilder:printcolumn:name="Programmed",description="The Resource is Programmed on Konnect",type=string,JSONPath=`.status.conditions[?(@.type=='Programmed')].status` // +kubebuilder:validation:XValidation:rule="(!self.status.conditions.exists(c, c.type == 'Programmed' && c.status == 'True')) ? true : oldSelf.spec.controlPlaneRef == self.spec.controlPlaneRef", message="spec.controlPlaneRef is immutable when an entity is already Programmed" // +kubebuilder:validation:XValidation:rule="!has(self.spec.controlPlaneRef.konnectNamespacedRef) ? true : !has(self.spec.controlPlaneRef.konnectNamespacedRef.__namespace__)", message="spec.controlPlaneRef cannot specify namespace for namespaced resource - it's not supported yet" +// +kgosupported type KongKeySet struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` @@ -43,6 +44,7 @@ type KongKeySet struct { } // KongKeySetSpec defines the spec for a KongKeySet. +// +kgosupported type KongKeySetSpec struct { // ControlPlaneRef is a reference to a Konnect ControlPlane with which KongKeySet is associated. // +optional @@ -53,6 +55,7 @@ type KongKeySetSpec struct { } // KongKeySetAPISpec defines the attributes of a Kong KeySet. +// +kgosupported type KongKeySetAPISpec struct { // Name is a name of the KeySet. // +kubebuilder:validation:MinLength=1 @@ -64,6 +67,7 @@ type KongKeySetAPISpec struct { } // KongKeySetStatus defines the status for a KongKeySet. +// +kgosupported type KongKeySetStatus struct { // Konnect contains the Konnect entity status. // +optional @@ -77,9 +81,9 @@ type KongKeySetStatus struct { Conditions []metav1.Condition `json:"conditions,omitempty"` } -// +kubebuilder:object:root=true - // KongKeySetList contains a list of Kong Keys. +// +kubebuilder:object:root=true +// +kgosupported type KongKeySetList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` diff --git a/api/configuration/v1alpha1/kongpluginbinding_types.go b/api/configuration/v1alpha1/kongpluginbinding_types.go index 15b6ec1..94dc7d8 100644 --- a/api/configuration/v1alpha1/kongpluginbinding_types.go +++ b/api/configuration/v1alpha1/kongpluginbinding_types.go @@ -35,6 +35,7 @@ import ( // +kubebuilder:printcolumn:name="Programmed",description="The Resource is Programmed",type=string,JSONPath=`.status.conditions[?(@.type=='Programmed')].status` // +kubebuilder:validation:XValidation:rule="!has(oldSelf.spec.controlPlaneRef) || has(self.spec.controlPlaneRef)", message="controlPlaneRef is required once set" // +kubebuilder:validation:XValidation:rule="(!self.status.conditions.exists(c, c.type == 'Programmed' && c.status == 'True')) ? true : oldSelf.spec.controlPlaneRef == self.spec.controlPlaneRef", message="spec.controlPlaneRef is immutable when an entity is already Programmed" +// +kgosupported type KongPluginBinding struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` @@ -46,6 +47,7 @@ type KongPluginBinding struct { } // KongPluginBindingSpec defines specification of a KongPluginBinding. +// +kgosupported type KongPluginBindingSpec struct { // PluginReference is a reference to the KongPlugin or KongClusterPlugin resource. // +kubebuilder:validation:XValidation:message="pluginRef name must be set",rule="self.name != ''" @@ -80,6 +82,7 @@ type KongPluginBindingSpec struct { } // KongPluginBindingTargets contains the targets references. +// +kgosupported type KongPluginBindingTargets struct { // RouteReference can be used to reference one of the following resouces: // - networking.k8s.io/Ingress @@ -109,6 +112,7 @@ type KongPluginBindingTargets struct { } // PluginRef is a reference to a KongPlugin or KongClusterPlugin resource. +// +kgosupported type PluginRef struct { // TODO(mattia): cross-namespace references are not supported yet. // https://github.com/Kong/kubernetes-configuration/issues/9 @@ -124,6 +128,7 @@ type PluginRef struct { } // TargetRef is a reference based on the object's name. +// +kgosupported type TargetRef struct { // Name is the name of the entity. // +kubebuilder:validation:Required @@ -131,6 +136,7 @@ type TargetRef struct { } // TargetRefWithGroupKind is a reference based on the object's group, kind, and name. +// +kgosupported type TargetRefWithGroupKind struct { // Name is the name of the entity. // +kubebuilder:validation:Required @@ -144,6 +150,7 @@ type TargetRefWithGroupKind struct { } // KongPluginBindingStatus represents the current status of the KongBinding resource. +// +kgosupported type KongPluginBindingStatus struct { // Konnect contains the Konnect entity status. // +optional @@ -157,9 +164,9 @@ type KongPluginBindingStatus struct { Conditions []metav1.Condition `json:"conditions,omitempty"` } -// +kubebuilder:object:root=true - // KongPluginBindingList contains a list of KongPluginBindings. +// +kubebuilder:object:root=true +// +kgosupported type KongPluginBindingList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` diff --git a/api/configuration/v1alpha1/kongroute_types.go b/api/configuration/v1alpha1/kongroute_types.go index cae9c30..1d623bb 100644 --- a/api/configuration/v1alpha1/kongroute_types.go +++ b/api/configuration/v1alpha1/kongroute_types.go @@ -41,6 +41,7 @@ import ( // +kubebuilder:validation:XValidation:rule="!has(self.spec.controlPlaneRef) ? true : !has(self.spec.controlPlaneRef.konnectNamespacedRef) ? true : !has(self.spec.controlPlaneRef.konnectNamespacedRef.__namespace__)", message="spec.controlPlaneRef cannot specify namespace for namespaced resource" // +kubebuilder:validation:XValidation:rule="!has(self.spec.serviceRef) ? true : (!self.status.conditions.exists(c, c.type == 'Programmed' && c.status == 'True')) ? true : oldSelf.spec.serviceRef == self.spec.serviceRef", message="spec.serviceRef is immutable when an entity is already Programmed" // +kubebuilder:validation:XValidation:rule="!has(self.spec.controlPlaneRef) ? true :(!self.status.conditions.exists(c, c.type == 'Programmed' && c.status == 'True')) ? true : oldSelf.spec.controlPlaneRef == self.spec.controlPlaneRef", message="spec.controlPlaneRef is immutable when an entity is already Programmed" +// +kgosupported type KongRoute struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` @@ -52,6 +53,7 @@ type KongRoute struct { } // KongRouteSpec defines specification of a Kong Route. +// +kgosupported type KongRouteSpec struct { // ControlPlaneRef is a reference to a ControlPlane this KongRoute is associated with. // Route can either specify a ControlPlaneRef and be 'serviceless' route or @@ -71,6 +73,7 @@ type KongRouteSpec struct { // // These fields are mostly copied from sdk-konnect-go but some modifications have been made // to make the code generation required for Kubernetes CRDs work. +// +kgosupported type KongRouteAPISpec struct { // A list of IP destinations of incoming connections that match this Route when using stream routing. Each entry is an object with fields "ip" (optionally in CIDR range notation) and/or "port". Destinations []sdkkonnectgocomp.Destinations `json:"destinations,omitempty"` @@ -109,6 +112,7 @@ type KongRouteAPISpec struct { } // KongRouteStatus represents the current status of the Kong Route resource. +// +kgosupported type KongRouteStatus struct { // Konnect contains the Konnect entity status. // +optional @@ -122,9 +126,9 @@ type KongRouteStatus struct { Conditions []metav1.Condition `json:"conditions,omitempty"` } -// +kubebuilder:object:root=true - // KongRouteList contains a list of Kong Routes. +// +kubebuilder:object:root=true +// +kgosupported type KongRouteList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` diff --git a/api/configuration/v1alpha1/kongservice_types.go b/api/configuration/v1alpha1/kongservice_types.go index 01d1407..6a0cf6b 100644 --- a/api/configuration/v1alpha1/kongservice_types.go +++ b/api/configuration/v1alpha1/kongservice_types.go @@ -37,6 +37,7 @@ import ( // +kubebuilder:validation:XValidation:rule="!has(oldSelf.spec.controlPlaneRef) || has(self.spec.controlPlaneRef)", message="controlPlaneRef is required once set" // +kubebuilder:validation:XValidation:rule="!has(self.spec.controlPlaneRef.konnectNamespacedRef) ? true : !has(self.spec.controlPlaneRef.konnectNamespacedRef.__namespace__)", message="spec.controlPlaneRef cannot specify namespace for namespaced resource" // +kubebuilder:validation:XValidation:rule="(!self.status.conditions.exists(c, c.type == 'Programmed' && c.status == 'True')) ? true : oldSelf.spec.controlPlaneRef == self.spec.controlPlaneRef", message="spec.controlPlaneRef is immutable when an entity is already Programmed" +// +kgosupported type KongService struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` @@ -48,6 +49,7 @@ type KongService struct { } // KongServiceSpec defines specification of a Kong Route. +// +kgosupported type KongServiceSpec struct { // ControlPlaneRef is a reference to a ControlPlane this KongService is associated with. // +optional @@ -57,6 +59,7 @@ type KongServiceSpec struct { } // KongServiceAPISpec defines specification of a Kong Service. +// +kgosupported type KongServiceAPISpec struct { // TODO(pmalek): client certificate implement ref // TODO(pmalek): ca_certificates implement ref @@ -102,6 +105,7 @@ type KongServiceAPISpec struct { } // KongServiceStatus represents the current status of the Kong Service resource. +// +kgosupported type KongServiceStatus struct { // Konnect contains the Konnect entity status. // +optional @@ -115,9 +119,9 @@ type KongServiceStatus struct { Conditions []metav1.Condition `json:"conditions,omitempty"` } -// +kubebuilder:object:root=true - // KongServiceList contains a list of Kong Services. +// +kubebuilder:object:root=true +// +kgosupported type KongServiceList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` diff --git a/api/configuration/v1alpha1/kongsni_types.go b/api/configuration/v1alpha1/kongsni_types.go index 4d73042..4a08f4e 100644 --- a/api/configuration/v1alpha1/kongsni_types.go +++ b/api/configuration/v1alpha1/kongsni_types.go @@ -32,6 +32,7 @@ import ( // +kubebuilder:subresource:status // +kubebuilder:printcolumn:name="Programmed",description="The Resource is Programmed on Konnect",type=string,JSONPath=`.status.conditions[?(@.type=='Programmed')].status` // +kubebuilder:validation:XValidation:rule="(!self.status.conditions.exists(c, c.type == 'Programmed' && c.status == 'True')) ? true : oldSelf.spec.certificateRef == self.spec.certificateRef", message="spec.certificateRef is immutable when programmed" +// +kgosupported type KongSNI struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` @@ -43,6 +44,7 @@ type KongSNI struct { } // KongSNIAPISpec defines specification of an SNI. +// +kgosupported type KongSNIAPISpec struct { // Name is the name of the SNI. Required and must be a host or wildcard host. // +kubebuilder:validation:MinLength=1 @@ -53,6 +55,7 @@ type KongSNIAPISpec struct { } // KongSNISpec defines specification of a Kong SNI. +// +kgosupported type KongSNISpec struct { // CertificateRef is the reference to the certificate to which the KongSNI is attached. CertificateRef KongObjectRef `json:"certificateRef"` @@ -60,7 +63,8 @@ type KongSNISpec struct { KongSNIAPISpec `json:",inline"` } -// KongKeyStatus defines the status for a KongSNI. +// KongSNIStatus defines the status for a KongSNI. +// +kgosupported type KongSNIStatus struct { // Konnect contains the Konnect entity status. // +optional @@ -74,9 +78,9 @@ type KongSNIStatus struct { Conditions []metav1.Condition `json:"conditions,omitempty"` } -// +kubebuilder:object:root=true - // KongSNIList contains a list of Kong SNIs. +// +kubebuilder:object:root=true +// +kgosupported type KongSNIList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` diff --git a/api/configuration/v1alpha1/kongupstream_types.go b/api/configuration/v1alpha1/kongupstream_types.go index c55da28..71c801a 100644 --- a/api/configuration/v1alpha1/kongupstream_types.go +++ b/api/configuration/v1alpha1/kongupstream_types.go @@ -35,6 +35,7 @@ import ( // +kubebuilder:validation:XValidation:rule="!has(oldSelf.spec.controlPlaneRef) || has(self.spec.controlPlaneRef)", message="controlPlaneRef is required once set" // +kubebuilder:validation:XValidation:rule="!has(self.spec.controlPlaneRef.konnectNamespacedRef) ? true : !has(self.spec.controlPlaneRef.konnectNamespacedRef.__namespace__)", message="spec.controlPlaneRef cannot specify namespace for namespaced resource" // +kubebuilder:validation:XValidation:rule="(!self.status.conditions.exists(c, c.type == 'Programmed' && c.status == 'True')) ? true : oldSelf.spec.controlPlaneRef == self.spec.controlPlaneRef", message="spec.controlPlaneRef is immutable when an entity is already Programmed" +// +kgosupported type KongUpstream struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` @@ -46,6 +47,7 @@ type KongUpstream struct { } // KongUpstreamSpec defines specification of a Kong Upstream. +// +kgosupported type KongUpstreamSpec struct { // ControlPlaneRef is a reference to a ControlPlane this KongUpstream is associated with. // +optional @@ -66,6 +68,7 @@ type KongUpstreamSpec struct { // +kubebuilder:validation:XValidation:rule="!has(self.hash_on) || (self.hash_on != 'header' || has(self.hash_on_header))", message="hash_on_header is required when hash_on is set to `header`." // +kubebuilder:validation:XValidation:rule="!has(self.hash_on) || (self.hash_on != 'query_arg' || has(self.hash_on_query_arg))", message="hash_on_query_arg is required when `hash_on` is set to `query_arg`." // +kubebuilder:validation:XValidation:rule="!has(self.hash_on) || (self.hash_on != 'uri_capture' || has(self.hash_on_uri_capture))", message="hash_on_uri_capture is required when `hash_on` is set to `uri_capture`." +// +kgosupported type KongUpstreamAPISpec struct { // Which load balancing algorithm to use. Algorithm *sdkkonnectgocomp.UpstreamAlgorithm `default:"round-robin" json:"algorithm,omitempty"` @@ -107,6 +110,7 @@ type KongUpstreamAPISpec struct { } // KongUpstreamStatus represents the current status of the Kong Upstream resource. +// +kgosupported type KongUpstreamStatus struct { // Konnect contains the Konnect entity status. // +optional @@ -120,9 +124,9 @@ type KongUpstreamStatus struct { Conditions []metav1.Condition `json:"conditions,omitempty"` } -// +kubebuilder:object:root=true - // KongUpstreamList contains a list of Kong Upstreams. +// +kubebuilder:object:root=true +// +kgosupported type KongUpstreamList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` diff --git a/api/configuration/v1alpha1/konnect_controlplaneref_types.go b/api/configuration/v1alpha1/konnect_controlplaneref_types.go index ccfd014..e7f5760 100644 --- a/api/configuration/v1alpha1/konnect_controlplaneref_types.go +++ b/api/configuration/v1alpha1/konnect_controlplaneref_types.go @@ -14,6 +14,7 @@ const ( // It is used to reference a Control Plane entity. // +kubebuilder:validation:XValidation:rule="self.type == 'konnectNamespacedRef' ? has(self.konnectNamespacedRef) : true", message="when type is konnectNamespacedRef, konnectNamespacedRef must be set" // +kubebuilder:validation:XValidation:rule="self.type == 'konnectID' ? has(self.konnectID) : true", message="when type is konnectID, konnectID must be set" +// +kgosupported type ControlPlaneRef struct { // Type can be one of: // - konnectID @@ -34,6 +35,7 @@ type ControlPlaneRef struct { } // KonnectNamespacedRef is the schema for the KonnectNamespacedRef type. +// +kgosupported type KonnectNamespacedRef struct { // Name is the name of the Konnect Control Plane. // +kubebuilder:validation:Required diff --git a/api/configuration/v1alpha1/object_ref.go b/api/configuration/v1alpha1/object_ref.go index a4686f3..879123f 100644 --- a/api/configuration/v1alpha1/object_ref.go +++ b/api/configuration/v1alpha1/object_ref.go @@ -4,6 +4,7 @@ package v1alpha1 // // TODO: https://github.com/Kong/kubernetes-configuration/issues/96 // change other types to use the generic `KongObjectRef` and move it to a common package to prevent possible import cycles. +// +kgosupported type KongObjectRef struct { // Name is the name of the entity. // diff --git a/api/configuration/v1alpha1/service_ref.go b/api/configuration/v1alpha1/service_ref.go index 2c28039..a2362a5 100644 --- a/api/configuration/v1alpha1/service_ref.go +++ b/api/configuration/v1alpha1/service_ref.go @@ -7,6 +7,7 @@ const ( // ServiceRef is a reference to a KongService. // +kubebuilder:validation:XValidation:rule="self.type == 'namespacedRef' ? has(self.namespacedRef) : true", message="when type is namespacedRef, namespacedRef must be set" +// +kgosupported type ServiceRef struct { // Type can be one of: // - namespacedRef @@ -19,6 +20,7 @@ type ServiceRef struct { // NamespacedServiceRef is a namespaced reference to a KongService. // // NOTE: currently cross namespace references are not supported. +// +kgosupported type NamespacedServiceRef struct { // +kubebuilder:validation:Required Name string `json:"name"` diff --git a/api/konnect/v1alpha1/konnect_apiauthconfiguration_types.go b/api/konnect/v1alpha1/konnect_apiauthconfiguration_types.go index 003236e..6098dc1 100644 --- a/api/konnect/v1alpha1/konnect_apiauthconfiguration_types.go +++ b/api/konnect/v1alpha1/konnect_apiauthconfiguration_types.go @@ -23,6 +23,7 @@ func init() { // +kubebuilder:validation:XValidation:rule="self.spec.type != 'token' || (self.spec.token.startsWith('spat_') || self.spec.token.startsWith('kpat_'))", message="Konnect tokens have to start with spat_ or kpat_" // +kubebuilder:validation:XValidation:rule="self.spec.type != 'token' || (!has(oldSelf.spec.token) || has(self.spec.token))", message="Token is required once set" // +kubebuilder:validation:XValidation:rule="!has(oldSelf.spec.serverURL) || has(self.spec.serverURL)", message="Server URL is required once set" +// +kgosupported type KonnectAPIAuthConfiguration struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` @@ -34,6 +35,8 @@ type KonnectAPIAuthConfiguration struct { Status KonnectAPIAuthConfigurationStatus `json:"status,omitempty"` } +// KonnectAPIAuthType is the type of authentication used to authenticate with the Konnect API. +// +kgosupported type KonnectAPIAuthType string const ( @@ -44,6 +47,7 @@ const ( // KonnectAPIAuthConfigurationSpec is the specification of the KonnectAPIAuthConfiguration resource. // // +kubebuilder:validation:XValidation:rule="(self.type == 'token' && has(self.token)) || (self.type == 'secretRef' && has(self.secretRef))", message="Token is required if auth type is set to token or secretRef is required if auth type is set to secretRef" +// +kgosupported type KonnectAPIAuthConfigurationSpec struct { // +kubebuilder:validation:Required // +kubebuilder:validation:Enum=token;secretRef @@ -62,6 +66,8 @@ type KonnectAPIAuthConfigurationSpec struct { ServerURL string `json:"serverURL"` } +// KonnectAPIAuthConfigurationStatus is the status of the KonnectAPIAuthConfiguration resource. +// +kgosupported type KonnectAPIAuthConfigurationStatus struct { // OrganizationID is the unique identifier of the organization in Konnect. OrganizationID string `json:"organizationID,omitempty"` @@ -78,6 +84,8 @@ type KonnectAPIAuthConfigurationStatus struct { Conditions []metav1.Condition `json:"conditions,omitempty"` } +// KonnectAPIAuthConfigurationRef is a reference to a KonnectAPIAuthConfiguration resource. +// +kgosupported type KonnectAPIAuthConfigurationRef struct { // Name is the name of the KonnectAPIAuthConfiguration resource. // +kubebuilder:validation:Required @@ -87,7 +95,9 @@ type KonnectAPIAuthConfigurationRef struct { // Namespace string `json:"namespace,omitempty"` } +// KonnectAPIAuthConfigurationList contains a list of KonnectAPIAuthConfiguration. // +kubebuilder:object:root=true +// +kgosupported type KonnectAPIAuthConfigurationList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` diff --git a/api/konnect/v1alpha1/konnect_configuration.go b/api/konnect/v1alpha1/konnect_configuration.go index f0bba51..c5a2eea 100644 --- a/api/konnect/v1alpha1/konnect_configuration.go +++ b/api/konnect/v1alpha1/konnect_configuration.go @@ -1,6 +1,8 @@ package v1alpha1 +// KonnectConfiguration is the Schema for the konnectconfigurations API. // +kubebuilder:object:generate=false +// +kgosupported type KonnectConfiguration struct { // APIAuthConfigurationRef is the reference to the API Auth Configuration // that should be used for this Konnect Configuration. diff --git a/api/konnect/v1alpha1/konnect_entity_status.go b/api/konnect/v1alpha1/konnect_entity_status.go index 0dd4160..728386a 100644 --- a/api/konnect/v1alpha1/konnect_entity_status.go +++ b/api/konnect/v1alpha1/konnect_entity_status.go @@ -1,5 +1,7 @@ package v1alpha1 +// KonnectEntityStatus is the status of a Konnect entity. +// +kgosupported type KonnectEntityStatus struct { // ID is the unique identifier of the Konnect entity as assigned by Konnect API. // If it's unset (empty string), it means the Konnect entity hasn't been created yet. @@ -51,6 +53,8 @@ func (in *KonnectEntityStatus) SetServerURL(s string) { in.ServerURL = s } +// KonnectEntityStatusWithControlPlaneRef is the status of a Konnect entity with a reference to a ControlPlane. +// +kgosupported type KonnectEntityStatusWithControlPlaneRef struct { KonnectEntityStatus `json:",inline"` @@ -68,6 +72,8 @@ func (in *KonnectEntityStatusWithControlPlaneRef) GetControlPlaneID() string { return in.ControlPlaneID } +// KonnectEntityStatusWithControlPlaneAndConsumerRefs is the status of a Konnect entity with references to a ControlPlane and a Consumer. +// +kgosupported type KonnectEntityStatusWithControlPlaneAndConsumerRefs struct { KonnectEntityStatus `json:",inline"` @@ -98,6 +104,8 @@ func (in *KonnectEntityStatusWithControlPlaneAndConsumerRefs) GetConsumerID() st return in.ConsumerID } +// KonnectEntityStatusWithControlPlaneAndServiceRefs is the status of a Konnect entity with references to a ControlPlane and a Service. +// +kgosupported type KonnectEntityStatusWithControlPlaneAndServiceRefs struct { KonnectEntityStatus `json:",inline"` @@ -108,16 +116,18 @@ type KonnectEntityStatusWithControlPlaneAndServiceRefs struct { ServiceID string `json:"serviceID,omitempty"` } -// SetServerURL sets the server URL of the KonnectEntityStatus struct. +// SetControlPlaneID sets the server URL of the KonnectEntityStatus struct. func (in *KonnectEntityStatusWithControlPlaneAndServiceRefs) SetControlPlaneID(id string) { in.ControlPlaneID = id } -// GetServerURL sets the server URL of the KonnectEntityStatus struct. +// GetControlPlaneID sets the server URL of the KonnectEntityStatus struct. func (in *KonnectEntityStatusWithControlPlaneAndServiceRefs) GetControlPlaneID() string { return in.ControlPlaneID } +// KonnectEntityStatusWithControlPlaneAndUpstreamRefs is the status of a Konnect entity with references to a ControlPlane and an Upstream. +// +kgosupported type KonnectEntityStatusWithControlPlaneAndUpstreamRefs struct { KonnectEntityStatus `json:",inline"` @@ -128,6 +138,8 @@ type KonnectEntityStatusWithControlPlaneAndUpstreamRefs struct { UpstreamID string `json:"upstreamID,omitempty"` } +// KonnectEntityStatusWithControlPlaneAndKeySetRef is the status of a Konnect entity with references to a ControlPlane and a KeySet. +// +kgosupported type KonnectEntityStatusWithControlPlaneAndKeySetRef struct { KonnectEntityStatus `json:",inline"` @@ -158,6 +170,8 @@ func (in *KonnectEntityStatusWithControlPlaneAndKeySetRef) GetKeySetID() string return in.KeySetID } +// KonnectEntityStatusWithControlPlaneAndCertificateRefs is the status of a Konnect entity with references to a ControlPlane and a Certificate. +// +kgosupported type KonnectEntityStatusWithControlPlaneAndCertificateRefs struct { KonnectEntityStatus `json:",inline"` diff --git a/api/konnect/v1alpha1/konnect_gateway_controlplane_types.go b/api/konnect/v1alpha1/konnect_gateway_controlplane_types.go index 380e7da..1d68fd3 100644 --- a/api/konnect/v1alpha1/konnect_gateway_controlplane_types.go +++ b/api/konnect/v1alpha1/konnect_gateway_controlplane_types.go @@ -21,6 +21,7 @@ func init() { // +kubebuilder:printcolumn:name="OrgID",description="Konnect Organization ID this resource belongs to.",type=string,JSONPath=`.status.organizationID` // +kubebuilder:validation:XValidation:rule="!self.status.conditions.exists(c, c.type == 'Programmed' && c.status == 'True') ? true : self.spec.konnect.authRef == oldSelf.spec.konnect.authRef", message="spec.konnect.authRef is immutable when an entity is already Programmed" // +kubebuilder:validation:XValidation:rule="!self.status.conditions.exists(c, c.type == 'APIAuthValid' && c.status == 'True') ? true : self.spec.konnect.authRef == oldSelf.spec.konnect.authRef", message="spec.konnect.authRef is immutable when an entity refers to a Valid API Auth Configuration" +// +kgosupported type KonnectGatewayControlPlane struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` @@ -33,6 +34,7 @@ type KonnectGatewayControlPlane struct { } // KonnectGatewayControlPlaneSpec defines the desired state of KonnectGatewayControlPlane. +// +kgosupported type KonnectGatewayControlPlaneSpec struct { sdkkonnectgocomp.CreateControlPlaneRequest `json:",inline"` @@ -40,6 +42,7 @@ type KonnectGatewayControlPlaneSpec struct { } // KonnectGatewayControlPlaneStatus defines the observed state of KonnectGatewayControlPlane. +// +kgosupported type KonnectGatewayControlPlaneStatus struct { KonnectEntityStatus `json:",inline"` @@ -71,7 +74,9 @@ func (c *KonnectGatewayControlPlane) GetKonnectAPIAuthConfigurationRef() Konnect return c.Spec.KonnectConfiguration.APIAuthConfigurationRef } +// KonnectGatewayControlPlaneList contains a list of KonnectGatewayControlPlane. // +kubebuilder:object:root=true +// +kgosupported type KonnectGatewayControlPlaneList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` diff --git a/config/crd/bases/configuration.konghq.com_kongcacertificates.yaml b/config/crd/bases/configuration.konghq.com_kongcacertificates.yaml index 35daf9f..ef24c56 100644 --- a/config/crd/bases/configuration.konghq.com_kongcacertificates.yaml +++ b/config/crd/bases/configuration.konghq.com_kongcacertificates.yaml @@ -110,6 +110,7 @@ spec: reason: Pending status: Unknown type: Programmed + description: KongCACertificateStatus defines the status for a KongCACertificate. properties: conditions: description: Conditions describe the status of the Konnect entity. diff --git a/config/crd/bases/configuration.konghq.com_kongcertificates.yaml b/config/crd/bases/configuration.konghq.com_kongcertificates.yaml index 32badc6..273ca4a 100644 --- a/config/crd/bases/configuration.konghq.com_kongcertificates.yaml +++ b/config/crd/bases/configuration.konghq.com_kongcertificates.yaml @@ -127,6 +127,7 @@ spec: reason: Pending status: Unknown type: Programmed + description: KongCertificateStatus defines the status for a KongCertificate. properties: conditions: description: Conditions describe the status of the Konnect entity. diff --git a/config/crd/bases/configuration.konghq.com_kongconsumers.yaml b/config/crd/bases/configuration.konghq.com_kongconsumers.yaml index 1c9a765..64c7e15 100644 --- a/config/crd/bases/configuration.konghq.com_kongconsumers.yaml +++ b/config/crd/bases/configuration.konghq.com_kongconsumers.yaml @@ -74,6 +74,7 @@ spec: metadata: type: object spec: + description: KongConsumerSpec defines the desired state of KongConsumer. properties: controlPlaneRef: description: ControlPlaneRef is a reference to a ControlPlane this diff --git a/config/crd/bases/configuration.konghq.com_kongsnis.yaml b/config/crd/bases/configuration.konghq.com_kongsnis.yaml index 1c8d1ca..3c768e5 100644 --- a/config/crd/bases/configuration.konghq.com_kongsnis.yaml +++ b/config/crd/bases/configuration.konghq.com_kongsnis.yaml @@ -81,7 +81,7 @@ spec: reason: Pending status: Unknown type: Programmed - description: KongKeyStatus defines the status for a KongSNI. + description: KongSNIStatus defines the status for a KongSNI. properties: conditions: description: Conditions describe the status of the Konnect entity. diff --git a/config/crd/bases/configuration.konghq.com_kongtargets.yaml b/config/crd/bases/configuration.konghq.com_kongtargets.yaml index ad258ac..dd1165f 100644 --- a/config/crd/bases/configuration.konghq.com_kongtargets.yaml +++ b/config/crd/bases/configuration.konghq.com_kongtargets.yaml @@ -43,6 +43,7 @@ spec: metadata: type: object spec: + description: KongTargetSpec defines the specification of a Kong Target. properties: tags: description: Tags is an optional set of strings associated with the @@ -83,6 +84,7 @@ spec: reason: Pending status: Unknown type: Programmed + description: KongTargetStatus contains the status of a Kong Target. properties: conditions: description: Conditions describe the status of the Konnect entity. diff --git a/config/crd/bases/konnect.konghq.com_konnectapiauthconfigurations.yaml b/config/crd/bases/konnect.konghq.com_konnectapiauthconfigurations.yaml index c5c5e8d..8c75ab2 100644 --- a/config/crd/bases/konnect.konghq.com_konnectapiauthconfigurations.yaml +++ b/config/crd/bases/konnect.konghq.com_konnectapiauthconfigurations.yaml @@ -81,6 +81,8 @@ spec: the Konnect API. type: string type: + description: KonnectAPIAuthType is the type of authentication used + to authenticate with the Konnect API. enum: - token - secretRef diff --git a/config/crd/bases/konnect.konghq.com_konnectgatewaycontrolplanes.yaml b/config/crd/bases/konnect.konghq.com_konnectgatewaycontrolplanes.yaml index ccb0a17..e3223c0 100644 --- a/config/crd/bases/konnect.konghq.com_konnectgatewaycontrolplanes.yaml +++ b/config/crd/bases/konnect.konghq.com_konnectgatewaycontrolplanes.yaml @@ -68,6 +68,8 @@ spec: description: The description of the control plane in Konnect. type: string konnect: + description: KonnectConfiguration is the Schema for the konnectconfigurations + API. properties: authRef: description: |- diff --git a/docs/api-reference.md b/docs/api-reference.md index f8beb68..e2f1aeb 100644 --- a/docs/api-reference.md +++ b/docs/api-reference.md @@ -148,7 +148,7 @@ _Appears in:_ #### KongConsumerSpec - +KongConsumerSpec defines the desired state of KongConsumer. @@ -706,7 +706,7 @@ _Appears in:_ #### ControllerReference - +ControllerReference defines the reference of a controller that reconciles a KongLicense. @@ -1224,8 +1224,6 @@ _Appears in:_ - - #### KongObjectRef @@ -1445,7 +1443,7 @@ _Appears in:_ #### KongTargetAPISpec - +KongTargetAPISpec defines the attributes of a Kong Target. @@ -1462,7 +1460,7 @@ _Appears in:_ #### KongTargetSpec - +KongTargetSpec defines the specification of a Kong Target. diff --git a/docs/konnect-api-reference.md b/docs/konnect-api-reference.md index b18ca57..5c90747 100644 --- a/docs/konnect-api-reference.md +++ b/docs/konnect-api-reference.md @@ -48,7 +48,7 @@ In this section you will find types that the CRDs rely on. #### KonnectAPIAuthConfigurationRef - +KonnectAPIAuthConfigurationRef is a reference to a KonnectAPIAuthConfiguration resource. @@ -83,7 +83,7 @@ _Appears in:_ #### KonnectAPIAuthType _Underlying type:_ `string` - +KonnectAPIAuthType is the type of authentication used to authenticate with the Konnect API. @@ -95,7 +95,7 @@ _Appears in:_ #### KonnectConfiguration - +KonnectConfiguration is the Schema for the konnectconfigurations API. @@ -110,7 +110,7 @@ _Appears in:_ #### KonnectEntityStatus - +KonnectEntityStatus is the status of a Konnect entity.