Download Latest Version 0.27 source code.tar.gz (248.3 kB)
Email in envelope

Get an email when there's a new version of Kopf

Home / 0.27
Name Modified Size InfoDownloads / Week
Parent folder
0.27 source code.tar.gz 2020-05-11 248.3 kB
0.27 source code.zip 2020-05-11 378.9 kB
README.md 2020-05-11 2.6 kB
Totals: 3 Items   629.8 kB 0

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]
Source: README.md, updated 2020-05-11