pub struct DNSZoneStatus {
pub conditions: Vec<Condition>,
pub observed_generation: Option<i64>,
pub records_count: i32,
pub records: Vec<RecordReferenceWithTimestamp>,
pub bind9_instances: Vec<InstanceReferenceWithStatus>,
pub bind9_instances_count: Option<i32>,
pub dnssec: Option<DNSSECStatus>,
}Expand description
DNSZone status
Fields§
§conditions: Vec<Condition>§observed_generation: Option<i64>§records_count: i32Count of records selected by recordsFrom label selectors.
This field is automatically calculated from the length of records.
It provides a quick view of how many records are associated with this zone.
Defaults to 0 when no records are selected.
records: Vec<RecordReferenceWithTimestamp>List of DNS records selected by recordsFrom label selectors.
Event-Driven Pattern:
- Records with
lastReconciledAt == Noneneed reconciliation - Records with
lastReconciledAt == Some(timestamp)are already configured
This field is populated by the DNSZone controller when evaluating recordsFrom selectors.
The timestamp is set by the record operator after successful BIND9 update.
Single Source of Truth: This status field is authoritative for which records belong to this zone and whether they need reconciliation, preventing redundant BIND9 API calls.
bind9_instances: Vec<InstanceReferenceWithStatus>List of Bind9Instance resources and their status for this zone.
Single Source of Truth for Instance-Zone Relationships:
This field tracks all Bind9Instances selected by this zone via bind9InstancesFrom selectors,
along with the current status of zone configuration on each instance.
Status Lifecycle:
Claimed: Zone selected this instance (viabind9InstancesFrom), waiting for configurationConfigured: Zone successfully configured on instanceFailed: Zone configuration failed on instanceUnclaimed: Instance no longer selected by this zone (cleanup pending)
Event-Driven Pattern:
DNSZonecontroller evaluatesbind9InstancesFromselectors to find matching instancesDNSZonecontroller reads this field to track configuration statusDNSZonecontroller updates status after configuration attempts
Automatic Selection:
When a DNSZone reconciles, the controller automatically:
- Queries all
Bind9Instancesmatchingbind9InstancesFromselectors - Adds them to this list with status=“Claimed”
- Configures zones on each instance
§Example
status:
bind9Instances:
- apiVersion: bindy.firestoned.io/v1beta1
kind: Bind9Instance
name: primary-dns-0
namespace: bindy-system
status: Configured
lastReconciledAt: "2026-01-03T20:00:00Z"
- apiVersion: bindy.firestoned.io/v1beta1
kind: Bind9Instance
name: secondary-dns-0
namespace: bindy-system
status: Claimed
lastReconciledAt: "2026-01-03T20:01:00Z"bind9_instances_count: Option<i32>Number of Bind9Instance resources in the bind9_instances list.
This field is automatically updated whenever the bind9_instances list changes.
It provides a quick view of how many instances are serving this zone without
requiring clients to count array elements.
dnssec: Option<DNSSECStatus>DNSSEC signing status for this zone
Populated when DNSSEC signing is enabled. Contains DS records, key tags, and rotation information.
Important: DS records must be published in the parent zone to complete the DNSSEC chain of trust.
§Example
dnssec:
signed: true
dsRecords:
- "example.com. IN DS 12345 13 2 ABC123..."
keyTag: 12345
algorithm: "ECDSAP256SHA256"
nextKeyRollover: "2026-04-02T00:00:00Z"Trait Implementations§
Source§impl Clone for DNSZoneStatus
impl Clone for DNSZoneStatus
Source§fn clone(&self) -> DNSZoneStatus
fn clone(&self) -> DNSZoneStatus
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for DNSZoneStatus
impl Debug for DNSZoneStatus
Source§impl Default for DNSZoneStatus
impl Default for DNSZoneStatus
Source§fn default() -> DNSZoneStatus
fn default() -> DNSZoneStatus
Source§impl<'de> Deserialize<'de> for DNSZoneStatus
impl<'de> Deserialize<'de> for DNSZoneStatus
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl JsonSchema for DNSZoneStatus
impl JsonSchema for DNSZoneStatus
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read moreAuto Trait Implementations§
impl Freeze for DNSZoneStatus
impl RefUnwindSafe for DNSZoneStatus
impl Send for DNSZoneStatus
impl Sync for DNSZoneStatus
impl Unpin for DNSZoneStatus
impl UnwindSafe for DNSZoneStatus
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].