Kopf

Latest version: v1.37.2

Safety actively analyzes 626325 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 7 of 17

1.29.0rc4

Bugfix:

* Evade collisions of annotations of ReplicaSets and Deployments. 652

1.29.0rc3

Bugfixes:

* Filtering callbacks (`when=`, values, labels, annotations) were called for apriori mismatching resources/selectors. 650

Internal:

* Tests are now limited by time (5-10 minutes instead of 6 hours). 651
* Coveralls.io uploads are fixed. 651

1.29.0rc2

Bugfixes:

* Assume a singular name is a lowercased kind for builtins (API returns empty names). 629
* Give the simulated script-module a name — to make it visible for other libraries (e.g. Pydantic). 634
* Exclude `kind: Event` from `EVERYTHING` to avoid "resource explosion". 636

Documentation:

* Document optional RBAC permissions needed for runtime cluster observation. 630
* Switch documentation, examples, and peering from `kopf.zalando.org/v1` to `kopf.dev/v1` (but not annotations and finalizers). 643 644

Other internal changes:

* Use Python's defaults instead of our own simulated dicts. 637
* Validate the resource scope against requested namespace. 638
* Make the tests shorter and cleaner. 639
* Re-adjust tests to a newer `pytest-mock` with `asynctest`. 645

1.29.0rc1

**BREAKING CHANGES!** The major version increase (0.x → 1.x) means that there are changes in the public interface with no backwards compatibility. Pay attention when upgrading — most of them have quick replacements.

_Most of these legacies are extremely old and it is highly unlikely that they were used in any existing operators. The `DeprecationWarning`s were issued for all these features (except namespaces). See 511._

| Removed feature | Replacement feature |
| --- | --- |
| `cooldown=` option of decorators | `backoff=` option |
| `event` kwarg in `kopf.on.event` | `reason` kwarg |
| `cause` kwarg in handlers | use all kwargs directly |
| `kopf.login()` sync function | `kopf.on.login` handlers and async activities |
| `kopf.config` module | `settings` kwarg of `kopf.on.startup()` handlers |
| `kopf.config.get_pykube_cfg()` for patching | `kopf.on.login()` handlers |
| `kopf.HandlerFatalError` | `kopf.PermanentError` |
| `kopf.HandlerRetryError` | `kopf.TemporaryError` |
| `kopf.create_tasks()` (sync) | `kopf.spawn_tasks()` (async) |
| `kopf.events.event/info/warn/exception()` | the same directly in the `kopf` module |
| `None` for `labels=`/`annotations=` filters | `kopf.PRESENT` (None now raises exceptions) |
| Positional field in `on.field('group', 'v1', 'plural', 'field')` | kwarg `field='field'` instead |
| Unversioned keys in storages | generate v1/v2 keys explicitly |
| Storages with unprefixed annotations | prefix is now mandatory; defaults to `kopf.zalando.org/…` |
| `kopf.on.this(…)` for sub-handlers | `kopf.subhandler(…)` (for readability) |

_Dropped without replacements:_

* Public fields & methods of `OperatorRegistry` — use it only as an object for the `registry=` kwarg. 625 611
* All internal sub-registries: `Resource[Watching|Spawning|Changing]Registry`, `ActivityRegistry`. 625 611
* All legacy registries: `SimpleRegistry`, `GlobalRegistry`, etc. 625

**Deprecated:**

* `operator(namespace='…')` → `operator(namespaces=['…'])`. 600
* `operator(namespace=None)` → `operator(clusterwide=True)`. 600

**New features:**

* Namespace serving:
* Multiple namespaces: e.g. `-n default -n myapp`. 500
* Namespace globs: e.g. `--namespace myapp-*,!*-pr-*`. 500
* Namespace precompiled regexps (only in embedded mode). 500
* Resource serving:
* Resources specified partially with/without versions: `kopf.on.event('kopf.dev', 'kex')`. 500
* Resources specified by secondary names (short, singular, kind): `kopf.on.event(kind='Pod')`. 500
* Resources specified by minimally sufficient auto-guess names: `kopf.on.event('pods')`. 500
* Handling of whole categories of resources: `kopf.on.event(category='all')`. 500
* Handling of all resources (do not try on real clusters): `kopf.on.event(kopf.EVERYTHING)`. 500
* Field filters:
* Fields' presence/absence filters: e.g. `kopf.on.event(…, field='spec.field', value=kopf.PRESENT)`. 573
* Fields' value filters: e.g. `kopf.on.event(…, field='spec.field', value='value')`; callbacks are supported. 573
* Fields' diff filters (only for update): `kopf.on.update(…, field='spec.field', old=1, new=2)`; callbacks are supported. 573
* Fields' filters are now applicable to all handlers: creation/update/deletion/resuming, daemons, timers, events. 573
* Peering behaviour is now configurable via settings. 572

**Improvements:**

* The operator's core ("reactor") is full reworked for dynamic detection of resources and namespaces. 600
* Better identifiers of peers in IPv6 networks: for easier identification. 569
* Better log messages in change-detecting processing: 605
* Faster (near-instant) unfreezing when peers are gone/expire. 581
* More notes on `x-kubernetes-preserve-unknown-fields ` in the docs. 612

**Bugfixes:**

* Resources with no uids are now supported too. 596
* CLI for freezing/resuming was failing due to missing authentication. 568
* Ignore irrelevant handlers in superseding causes (e.g. deletion-during-creation). 606
* Fixed configuration of the official Kubernetes library, if used for auth piggybacking. 567
* Guaranteed finalisation of watchers & workers. 628

**Contributor experience:**

* Switched to GitHub Actions for CI. 582 586
* API errors are wrapped into our own classes, to prevent abstraction leakage of an HTTP client. 575
* Async timeouts used in the tests, some asyncio tests are time-limited. 608
* Stricter typing on resources & namespaces. 623 624
* Squashed per-resource registries into combined ones. 622
* Some other refactorings for code clarity: 577 576 578 597 598 609 610 626 627

0.28.3

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

0.28.2

Bugfixes:

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

Page 7 of 17

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.