Skip to content

Update dependency kopf to v0.28.3#5

Open
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/kopf-0.x
Open

Update dependency kopf to v0.28.3#5
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/kopf-0.x

Conversation

@renovate
Copy link
Copy Markdown
Contributor

@renovate renovate Bot commented Mar 17, 2026

This PR contains the following updates:

Package Change Age Confidence
kopf ==0.27rc6==0.28.3 age confidence

Release Notes

nolar/kopf (kopf)

v0.28.3

Compare Source

Enhancements:

  • Renamed @kopf.on.this to @kopf.subhandler for readability. #​618

Bugfixes:

  • Fixed the resource discovery in case of parallel requests (improper locks & checks). #​615

Internals:

  • Fixed the usage example of kopf.execute() to be asynchronous. #​618
  • CI functional tests fixed for ResourceWarnings due to pykube-ng's session left-overs. #​619 #​608

v0.28.2

Compare Source

Bugfixes:

  • Fixed superseding of one cause by another (deletion-during-creation/-update/-resume, update-during-resume, etc). #​607 #​606

v0.28.1

Compare Source

Bugfixes:

  • No more false "patching failed with inconsistencies" warning for CRDs with status as a subresource. #​588

Internal:

  • Back-ported GitHub Actions for CI tests. #​592, originally #​582

v0.28

Compare Source

General topic: stability, resilience, recoverability, better logging and error handling.

New features:

  • JSON logging with --log-format=json. #​544
  • Plain-text logging --log-format=plain. #​544

Bugfixes:

  • On-field handlers were triggered for non-existent fields with NoneNone change. #​523
  • Sub-handlers' state was not purged, preventing their execution in the future. #​517
  • Timers were ticking forever after the resource was deleted (if there were no finalizers). #​548
  • Persisted states of executed and then filtered-out handlers were not purged. #​557

Resilience improvements:

  • Annotations from other Kopf-based operators are fully ignored to avoid ping-pong effects. #​539 #​538
  • The operator will force-stop itself by SIGKILL after 10 minutes of attempts to stop gracefully. #​543
  • Crash the whole operator on unrecoverable errors in watchers/workers. #​509
  • Throttle individual resource processing on unexpected errors. #​510
  • Extra exceptions are intercepted and ignored for k8s-event posting. #​507
  • Treat client timeouts during watches similar to other API errors. #​506
  • Handle all connection errors from the initial streaming request. #​512

Experience improvements:

  • Annotations restrictions on key length are reworked to allow longer names (v2/v1 keys). #​529
  • Annotations values are now compacted (no spaces) for the better visual outlook. #​516
  • Log/warn when the resulting patched object does not match the intended patch. #​527
  • Log when the patched object unexpectedly disappeared (e.g. was deleted). #​559
  • Log K8s API error explanations from K8s API itself, not from the HTTP client library. #​558
  • Filtered-out resources do not create phantom logs & do not get annotated anymore. #​545
  • Cluster-scoped objects are logged by their name, without "None" as the namespace. #​544
  • Better phrasing for some log messages to avoid confusion. #​540
  • Documentation fixes. #​530

Internal changes:

  • The first release since the fork. #​502 #​500 #​505 #​546
  • CI feedback is sped up from ≈40-50 mins to ≈5 mins per push. #​536 #​537
  • K3d/K3s is used for CI functional/integration testing; Minikube is for nightly tests. #​536 #​547
  • K8s versions are updated for CI builds. #​501
  • Imports are sorted with isort. #​525 #​531
  • Added tests for operators' peering. #​519
  • Added tests for logging & loggers. #​544
  • Get rid of mocks for causes & registries, use normal classes. #​521
  • Time-based tests are stabilised (though not fully fixed). #​534 #​528 #​520 #​522
  • Asyncio tasks are now named in Python 3.8+, which makes the debugging easier. #​542
  • Python 3.9 support. #​561

v0.27.1

Compare Source

Bugfixes:

  • Support Python 3.9 with Kopf's 0.27 codebase and features. #​562

v0.27

Compare Source

Originally released on 2020-05-11 16:37:41+00:00 (link).

WARNING: The changes are backward-compatible (in theory). But the changes are also massive, so things can break unexpectedly (in practice). Test this upgrade carefully.

New features:

  • @kopf.daemon for background resource-accompanying tasks/threads. #​330 #​342 #​360
  • @kopf.timer for regular and/or delayed activities & checks. #​330 #​342 #​360
  • kopf.PRESENT for labels/annotations filters (instead of misleading None). #​327
  • kopf.ABSENT for labels/annotations filters. #​327
  • Arbitrary callbacks for labels/annotations filters. #​328
  • kopf.all_(), kopf.any_(), kopf.not_(), kopf.none_() helpers for callbacks aggregation. #​345
  • A proper official documented way to configure operators; plus docs. #​336 #​337 #​331
  • Identities of operators, allowing multiple non-colliding operators for the same resources. #​331 #​344
  • Configurable client-side timeouts for watch requests. #​322 #​336
  • Configurable storages for handling state & diff-bases. #​331 #​346 #​353

Improvements:

  • Internal instant functions (lifecycles, when-filters) do not use thread pools anymore. #​326
  • Bodies & patches now have magical properties for metadata, spec, status, with "live view" into data. #​327
  • Labels and annotations are passed as additional kwargs (similar to body/spec/meta/status). #​327
  • All user-facing types and classes are published as framework's public interface (via top-level package). #​341
  • Switch KopfExample & KopfPeering from v1beta1 to v1 CRD API; keep v1beta1 nearby. #​364
  • Documentation is restructured for separate pages for all aspects of handling (kwargs, filters, etc). #​325
  • Explain the "structural schemas" of K8s 1.16+, and v1-vs-v1beta1 CRD differences. #​364

Fixes:

  • Threads from the sync handlers executors are not leaked (not left orphaned) at exit. #​326
  • Handlers' state is now persisted in annotations, not in status: for custom & built-in resources. This solves the issues with built-ins not handled properly in K8s 1.16+. #​331
  • Fix the on-field handler not being invoked when the diff is too generic (relative to the field). #​340
  • Provoke after-sleep handling cycles even on resources with no arbitrary field preservation. #​343
  • Fix premature finalizer removal with 2+ deletion handlers. #​361
  • Avoid no-effect patching and potentially delaying handling cycles. #​362

Internal changes:

  • Coveralls is made optional. #​363
  • Compatibility with Kubernetes 1.18 in CI/CD. #​335
  • pytest & pytest-asyncio are pinned temporarily until fixed on their side. #​352

Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants