---
title: Event Reference
description: Kubernetes event reasons emitted by each fleet-management-operator controller, and what triggers them.
---

<!--
Auto-generated by hack/docgen. Do not edit by hand.
Run `make docs` after touching emitEvent / Recorder.Event* call sites in
internal/controller/*.go.
-->

# Event Reference

Each controller emits Kubernetes events on significant reconcile outcomes.
Events are user-facing log text — surface them via:

```
kubectl describe <kind> <name>
kubectl get events --field-selector involvedObject.kind=<Kind>
```

Reasons are stable PascalCase identifiers and may be matched on directly. Event
type `Warning` indicates the controller could not complete its work; `Normal`
indicates a routine state transition.

For status-condition reasons (a separate, also-stable surface), see
[conditions.md](../conditions.md).

## Collector

Source: [internal/controller/collector_controller.go](https://github.com/rknightion/fleet-management-operator/blob/main/internal/controller/collector_controller.go)

| Reason | Type | Trigger |
| --- | --- | --- |
| `DeleteFailed` | Warning | Failed to remove owned attributes from collector %q: %v |
| `NotRegistered` | Warning | Collector %q has not yet registered with Fleet Management; will retry |
| `RateLimited` | Warning | Rate limited by Fleet Management API, will retry in 10 seconds |
| `SyncFailed` | Warning | Fleet Management API validation failed: %s |
| `AttributesUpdated` | Normal | Applied %d attribute operation(s) to collector %q |
| `Deleted` | Normal | Collector already absent from Fleet Management |
| `Synced` | Normal | Collector successfully synced to Fleet Management |

## CollectorDiscovery

Source: [internal/controller/collector_discovery_controller.go](https://github.com/rknightion/fleet-management-operator/blob/main/internal/controller/collector_discovery_controller.go)

| Reason | Type | Trigger |
| --- | --- | --- |
| `Conflict` | Warning | Could not claim Collector %s/%s for collector %q: %s |
| `Failed` | Warning | Invalid pollInterval %q: %v |
| `TruncatedConflicts` | Warning | discovery has %d conflicts; only first %d kept in status |
| `Discovered` | Normal | Created Collector %s for collector %q |
| `Pruned` | Normal | Deleted Collector %s/%s (collector %q no longer in Fleet) |
| `Synced` | Normal | Discovered %d collector(s); managing %d, %d stale, %d conflict(s) |

## ExternalAttributeSync

Source: [internal/controller/external_sync_controller.go](https://github.com/rknightion/fleet-management-operator/blob/main/internal/controller/external_sync_controller.go)

| Reason | Type | Trigger |
| --- | --- | --- |
| `OwnedKeysExceeded` | Warning | %s; reduce selector or source cardinality below the cap |
| `SourceFailed` | Warning | Invalid schedule %q: %v |
| `Stalled` | Warning | Source returned 0 records; previous claim preserved (set spec.allowEmptyResults=true to override) |
| `Synced` | Normal | Synced %d records, %d applied across %d collector(s) |

## Pipeline

Source: [internal/controller/pipeline_controller.go](https://github.com/rknightion/fleet-management-operator/blob/main/internal/controller/pipeline_controller.go)

| Reason | Type | Trigger |
| --- | --- | --- |
| `DeleteFailed` | Warning | Failed to delete pipeline from Fleet Management: %v |
| `Migrated` | Warning | name-scope migration dry-run failed (%q -> %q): %v |
| `RateLimited` | Warning | Rate limited by Fleet Management API, will retry in 10 seconds |
| `ReadOnly` | Warning | %v |
| `Recreated` | Warning | Pipeline was deleted externally, recreating in Fleet Management |
| `SyncFailed` | Warning | Failed to recreate pipeline after external deletion |
| `ValidationFailed` | Warning | Fleet Management API validation failed: %s |
| `Created` | Normal | Pipeline created in Fleet Management (ID: %s) |
| `Deleted` | Normal | Pipeline already deleted from Fleet Management |
| `Migrated` | Normal | migrating Fleet pipeline name %q -> %q |
| `ReadOnly` | Normal | Observed read-only pipeline from Fleet Management |
| `Synced` | Normal | Pipeline successfully synced to Fleet Management |
| `Updated` | Normal | Pipeline updated in Fleet Management (ID: %s) |

## PipelineDiscovery

Source: [internal/controller/pipeline_discovery_controller.go](https://github.com/rknightion/fleet-management-operator/blob/main/internal/controller/pipeline_discovery_controller.go)

| Reason | Type | Trigger |
| --- | --- | --- |
| `PipelineConflict` | Warning | Could not claim Pipeline %s/%s for pipeline %q: %s |
| `SyncFailed` | Warning | Invalid pollInterval %q: %v |
| `TruncatedConflicts` | Warning | discovery has %d conflicts; only first %d kept in status |
| `PipelineDiscovered` | Normal | Created Pipeline %s for Fleet pipeline %q |
| `PipelinePruned` | Normal | Deleted Pipeline %s/%s (pipeline %q no longer in Fleet) |
| `Synced` | Normal | Discovered %d pipeline(s); managing %d, %d stale, %d conflict(s) |

## RemoteAttributePolicy

Source: [internal/controller/policy_controller.go](https://github.com/rknightion/fleet-management-operator/blob/main/internal/controller/policy_controller.go)

| Reason | Type | Trigger |
| --- | --- | --- |
| `ListFailed` | Warning | Failed to list Collectors in namespace %q: %v |
| `NoMatch` | Warning | Policy selector did not match any Collector in this namespace |
| `Truncated` | Warning | matchedCollectorIDs capped at %d; matchedCount=%d reflects the full count |
| `Synced` | Normal | Policy matched %d collector(s) |

