cli-utils/pkg/apply
Karl Isenberg c46949360e feat: replace StatusPoller w/ StatusWatcher
- Add DefaultStatusWatcher that wraps DynamicClient and manages
  informers for a set of resource objects.
  - Supports two modes: root-scoped & namespace-scoped.
  - Root-scoped mode uses root-scoped informers to efficiency and
    performance.
  - Namespace-scoped mode uses namespace-scoped informers to
    minimize the permissions needed to run and the size of the
    in-memory object cache.
  - Automatic mode selects which mode to use based on whether the
    objects being watched are in one or multiple namespaces.
    This is the default mode, optimizing for performance.
  - If CRDs are being watched, the creation/deletion of CRDs can
    cause informers for those custom resources to be created/deleted.
  - In namespace-scope mode, if namespaces are being watched, the
    creation/deletion of namespaces can also trigger informers to
    be created/deleted.
  - All creates/updates/deletes to CRDs also cause RESTMapper reset.
  - Allow pods to be unschedulable for 15s before reporting the
    status as Failed. Any update resets the timer.
- Add BlindStatusWatcher for testing and disabling for dry-run.
- Add DynamicClusterReader that wraps DynamicClient.
  This is now used to look up generated resources
  (ex: Deployment > ReplicaSets > Pods).
- Add DefaultStatusReader which uses a DelegatingStatusReader to
  wrap a list of conventional and specific StatusReaders.
  This should make it easier to extend the list of StatusReaders.
- Move some pending WaitEvents to be optional in tests, now that
  StatusWatcher can resolve their status before the WaitTask starts.
- Add a new Thousand Deployments stress test (10x kind nodes)
- Add some new logs for easier debugging
- Add internal SyncEvent so that apply/delete tasks don't start
  until the StatusWatcher has finished initial synchronization.
  This helps avoid missing events from actions that happen while
  synchronization is incomplete.
- Filter optional pending WaitEvents when testing.

BREAKING CHANGE: Replace StatusPoller w/ StatusWatcher
BREAKING CHANGE: Remove PollInterval (obsolete with watcher)
2022-05-10 10:40:05 -07:00
..
cache feat: replace StatusPoller w/ StatusWatcher 2022-05-10 10:40:05 -07:00
error add different error types for empty or unmatched inventory annotation 2020-12-08 17:25:24 -08:00
event chore: Log events at -v=3 for e2e tests 2022-04-15 16:03:18 -07:00
filter feat: error on skip 2022-03-16 17:40:28 -07:00
info chore: unexport table printer internal types 2022-02-15 14:50:34 -08:00
mutator chore: Log YAML to V7, instead of V4 2022-02-14 23:03:21 -08:00
poller Expose ClusterReader options in the API 2022-02-01 11:37:49 -08:00
prune fix: Send Failed status when erroring 2022-04-19 18:22:52 -07:00
solver fix: Allow empty set of apply objects 2022-03-02 10:36:59 -08:00
task fix: Send Failed status when erroring 2022-04-19 18:22:52 -07:00
taskrunner feat: replace StatusPoller w/ StatusWatcher 2022-05-10 10:40:05 -07:00
applier.go feat: replace StatusPoller w/ StatusWatcher 2022-05-10 10:40:05 -07:00
applier_builder.go feat: replace StatusPoller w/ StatusWatcher 2022-05-10 10:40:05 -07:00
applier_test.go feat: replace StatusPoller w/ StatusWatcher 2022-05-10 10:40:05 -07:00
common_test.go feat: replace StatusPoller w/ StatusWatcher 2022-05-10 10:40:05 -07:00
destroyer.go feat: replace StatusPoller w/ StatusWatcher 2022-05-10 10:40:05 -07:00
destroyer_test.go feat: replace StatusPoller w/ StatusWatcher 2022-05-10 10:40:05 -07:00
main_test.go Applier unit test cleanup 2021-10-12 11:33:21 -07:00