kopf
-
0.27
Published by nolar about 4 years ago
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