From da159c0e15c819a433f2be8320ea27d1d0f9f11f Mon Sep 17 00:00:00 2001 From: Viktor Voytovych Date: Sun, 18 Oct 2026 23:12:12 +0300 Subject: [PATCH 1/2] docs: Name the condition that reports each hostname problem HostnamesVerified covers ownership and acceptance. A hostname held by another resource is reported in HostnamesInUse, and DNS records in DNSRecordsProgrammed. The API documentation said both went to HostnamesVerified. --- api/v1alpha/httpproxy_types.go | 14 +++++++++----- .../networking.datumapis.com_httpproxies.yaml | 14 +++++++++----- docs/api/httpproxies.md | 14 +++++++++----- 3 files changed, 27 insertions(+), 15 deletions(-) diff --git a/api/v1alpha/httpproxy_types.go b/api/v1alpha/httpproxy_types.go index c68aef79..a98ff693 100644 --- a/api/v1alpha/httpproxy_types.go +++ b/api/v1alpha/httpproxy_types.go @@ -32,13 +32,17 @@ type HTTPProxySpec struct { // // In addition to verifying ownership, hostnames must be unique across the // platform. If a hostname is already programmed on another resource, a - // conflict will be encountered and communicated in the `HostnamesVerified` + // conflict will be encountered and communicated in the `HostnamesInUse` // condition. // - // Hostnames which have been programmed will be listed in the - // `status.hostnames` field. Any hostname which has not been programmed will - // be listed in the `message` field of the `HostnamesVerified` condition with - // an indication as to why it was not programmed. + // Hostnames which have been accepted will be listed in the + // `status.hostnames` field. Any hostname which has not been accepted will + // be listed in the `message` field of the `HostnamesVerified` condition. + // That condition covers ownership and acceptance only. The DNS records of + // hostnames that use Datum-managed DNS are reported in the + // `DNSRecordsProgrammed` condition. Each hostname's entry in + // `status.hostnameStatuses` says why it is not verified, or why its DNS + // record is not programmed. // // The system may automatically generate and associate hostnames with the // HTTPProxy. In such cases, these will be listed in the `status.hostnames` diff --git a/config/crd/bases/networking.datumapis.com_httpproxies.yaml b/config/crd/bases/networking.datumapis.com_httpproxies.yaml index a9260823..ee7223a3 100644 --- a/config/crd/bases/networking.datumapis.com_httpproxies.yaml +++ b/config/crd/bases/networking.datumapis.com_httpproxies.yaml @@ -121,13 +121,17 @@ spec: In addition to verifying ownership, hostnames must be unique across the platform. If a hostname is already programmed on another resource, a - conflict will be encountered and communicated in the `HostnamesVerified` + conflict will be encountered and communicated in the `HostnamesInUse` condition. - Hostnames which have been programmed will be listed in the - `status.hostnames` field. Any hostname which has not been programmed will - be listed in the `message` field of the `HostnamesVerified` condition with - an indication as to why it was not programmed. + Hostnames which have been accepted will be listed in the + `status.hostnames` field. Any hostname which has not been accepted will + be listed in the `message` field of the `HostnamesVerified` condition. + That condition covers ownership and acceptance only. The DNS records of + hostnames that use Datum-managed DNS are reported in the + `DNSRecordsProgrammed` condition. Each hostname's entry in + `status.hostnameStatuses` says why it is not verified, or why its DNS + record is not programmed. The system may automatically generate and associate hostnames with the HTTPProxy. In such cases, these will be listed in the `status.hostnames` diff --git a/docs/api/httpproxies.md b/docs/api/httpproxies.md index 9564e442..c765aaad 100644 --- a/docs/api/httpproxies.md +++ b/docs/api/httpproxies.md @@ -129,13 +129,17 @@ attempts to program the HTTPProxy. In addition to verifying ownership, hostnames must be unique across the platform. If a hostname is already programmed on another resource, a -conflict will be encountered and communicated in the `HostnamesVerified` +conflict will be encountered and communicated in the `HostnamesInUse` condition. -Hostnames which have been programmed will be listed in the -`status.hostnames` field. Any hostname which has not been programmed will -be listed in the `message` field of the `HostnamesVerified` condition with -an indication as to why it was not programmed. +Hostnames which have been accepted will be listed in the +`status.hostnames` field. Any hostname which has not been accepted will +be listed in the `message` field of the `HostnamesVerified` condition. +That condition covers ownership and acceptance only. The DNS records of +hostnames that use Datum-managed DNS are reported in the +`DNSRecordsProgrammed` condition. Each hostname's entry in +`status.hostnameStatuses` says why it is not verified, or why its DNS +record is not programmed. The system may automatically generate and associate hostnames with the HTTPProxy. In such cases, these will be listed in the `status.hostnames` From 4356c6a88c92b029e2a9e231f138173bf9ca83fc Mon Sep 17 00:00:00 2001 From: Viktor Voytovych Date: Sun, 18 Oct 2026 23:36:45 +0300 Subject: [PATCH 2/2] fix: Say every hostname is accepted, not programmed, when HostnamesVerified is True The condition checks ownership and acceptance. DNS records are reported in DNSRecordsProgrammed, so the True message promised what the condition does not check. --- internal/controller/httpproxy_controller.go | 2 +- internal/controller/httpproxy_controller_test.go | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/controller/httpproxy_controller.go b/internal/controller/httpproxy_controller.go index 6ebf59ea..c2f8518e 100644 --- a/internal/controller/httpproxy_controller.go +++ b/internal/controller/httpproxy_controller.go @@ -653,7 +653,7 @@ func (r *HTTPProxyReconciler) reconcileHTTPProxyHostnameStatus( // not been removed by the user. hostnamesVerifiedCondition.Status = metav1.ConditionTrue hostnamesVerifiedCondition.Reason = networkingv1alpha.HTTPProxyReasonHostnamesVerified - hostnamesVerifiedCondition.Message = "All hostnames have been accepted and programmed" + hostnamesVerifiedCondition.Message = "All hostnames have been accepted" } else { hostnamesVerifiedCondition.Status = metav1.ConditionFalse hostnamesVerifiedCondition.Reason = networkingv1alpha.HTTPProxyReasonPending diff --git a/internal/controller/httpproxy_controller_test.go b/internal/controller/httpproxy_controller_test.go index 42060a78..94d07206 100644 --- a/internal/controller/httpproxy_controller_test.go +++ b/internal/controller/httpproxy_controller_test.go @@ -1784,6 +1784,7 @@ func TestHTTPProxyReconcile(t *testing.T) { hostnamesVerifiedCondition := apimeta.FindStatusCondition(updatedHttpProxy.Status.Conditions, networkingv1alpha.HTTPProxyConditionHostnamesVerified) if assert.NotNil(t, hostnamesVerifiedCondition, "did not find HostnamesVerified condition on HTTPProxy") { assert.Equal(t, networkingv1alpha.HTTPProxyReasonHostnamesVerified, hostnamesVerifiedCondition.Reason) + assert.Equal(t, "All hostnames have been accepted", hostnamesVerifiedCondition.Message) } } }