Changelogs » Kopf

Kopf

0.22rc1

Bugfixes:

* Implicit logging events obey the configured level. 192 188
* Field-change detects sub-fields of change dict-containers. 191 190

Internal changes:

* Diffs are turned from tuples to classes, diff ops — from strings to enums. 191

0.21

New features:

* Expose the functions to make Kopf embeddable into other apps. 156 185
* Docs: https://kopf.readthedocs.io/en/latest/embedding/
* Example: https://github.com/zalando-incubator/kopf/tree/master/examples/12-embedded

Improvements:

* `kopf --version` added. 175
* More logs on reasons of exiting/termination. 179
* Wake up immediately on new changes of the object if currently sleeping for delayed handlers. 162
* Speed up the deletion (finalizer removal) of the objects with failed creation/update handlers. 162
* Terminate the operator better, with graceful period for clean shutdown. 156
* K8s-events for cluster-scoped objects are posted to the current namespace, not "default". 165
* Kopf's handler errors renamed to `kopf.PermanentError/kopf.TemporaryError`. 159
* Kopf's permanent/temporary errors (and these only) will not dump strack-traces anymore. 159

Bugfixes:

* Do not add a finalizer to objects excluded by labels/annotations filters. 173
* Fixed failing with 404 if object was removed too fast or within the handler. 160
* Fixed implicitly forced peering mode for embeddable operator. 174

Internal changes:

* CodeCov PR comments disabled (to prevent spamming). 170
* Some modules were moved around and split. 155

0.21rc5

Reverted:

* Removed "Ensure eventual consistency for all handlers" feature of 0.21rc3. 182 ~163~

0.21rc4

Improvements:

* More logs on reasons of exiting/termination. 179

0.21rc3

Improvements:

* `kopf --version` added. 175

Bugfixes:

* Do not add a finalizer to objects excluded by labels/annotations filters. 173
* Ensure eventual consistency for all handlers even with intermediate object changes. 163

0.21rc2

Improvements:

* Wake up immediately on new changes of the object if currently sleeping for delayed handlers. 162
* Speed up the deletion (finalizer removal) of the objects with failed creation/update handlers. 162

Bugfixes:

* Fixed failing with 404 if object was removed too fast or within the handler. 160
* Fixed implicitly forced peering mode for embeddable operator. 174

0.21rc1

New features:

* Expose the functions to make Kopf embeddable into other apps. 156
* Docs: https://kopf.readthedocs.io/en/latest/embedding/

Improvements:

* Terminate the operator better, with graceful period for clean shutdown. 156
* K8s-events for cluster-scoped objects are posted to the current namespace, not "default". 165
* Kopf's handler errors renamed to `kopf.PermanentError/kopf.TemporaryError`. 159
* Kopf's permanent/temporary errors do not dump strack-traces anymore. 159

Internal changes:

* CodeCov PR comments disabled (to prevent spamming). 170
* Some modules were moved around and split. 155

0.20

New feature:

* Decorator-level filtering of the objects by labels/annotations existence or values. 123

0.19

New features:

* Built-in resources (pods, services, namespaces) are now supported. 110
* Per-object messages logged via `logger` kwarg (INFO+ level) are sent as Kubernetes events implicitly. 128 148

Improvements:

* Almost proper operator termination on SIGINT/SIGTERM. 147 151
* *Note: blocking socket reads are not yet fixed and can freeze on exit.*


Internal changes:

* Internal K8s API client is switched from the official kubernetes-python top pykube-ng. 110
* Code coverage is measured. 72 146
* E2E tests are stabilized. 149

0.19rc2

Bugfixes:

* Operators die with socket timeout in 10s after starting. 144

0.19rc1

Improvements:

* Built-in resources (pods, namespaces) are now also supported. 110
* Handlers' INFO+ log messages are sent as Kubernetes events implicitly. 128

Internal changes:

* Switched the internal client from the official kubernetes-python top pykube-ng. 110
* Code coverage is measured. 72

0.18

Improvements:

* Finalizer is not added if there are no deletion handlers. 118
* Deletion handlers can be optional to prevent adding finalizer. 118
* Script's dir is added to import paths to mimic Python's behaviour. 93 133
* `.status` is ignored in the last-handled state checks (except for fields used in field-handlers). 131
* `.metadata` is ignored in the last-handled state checks (except for labels & annotations). 131
* Operator freezes if the same-priority operator appears (previously, only warned). 114

Bugfixes:

* The peering self-record was not properly removed on exit. 114
* Restrict to `kubernetes<10.0.0` to keep Kopf runnable at all. 134

Internal changes:

* Examples can now have their own dedicated tests. 126

0.17.post1

Hotfix:

* Restrict to `kubernetes<10.0.0` to keep Kopf runnable at all.

See: 134 and kubernetes-client/python866

0.17

Improvements:

* Performance improvements when handling hundreds of resources. 109

Internal changes:

* Internal (non-public) packages restructured — to deal with the growing complexity. 124
* `kopf.engines` extracted from `kopf.reactor` (peering & posting & logging).
* `kopf.utilities` extracted from `kopf.reactor` (reacting to k8s changes).
* `kopf.clients` is the new `kopf.k8s` (renamed).
* `kopf.clients.auth` extracted from `kopf.config` (only auth-related routines).
* `kopf.config` got the configuration constants from all over the code.
* New configuration added:
* Configurable timeouts and thread pool sizes.
* Configurable level of k8s-events posted; others are skipped.
* Everything has been made asynchronous:
* All internal K8s API wrappers/adapters are made async.
* All blocking operations (incl. API requests) moved to thread pools.
* All k8s-event posting is done via a queue with a background posting task. 125

0.16

New features:

* Resource "resuming" handlers `kopf.on.resume` for threads/tasks. 105

Internal changes:

* Tests and docs for RBAC status codes for peering. 95
* Handlers are de-duplicated if registered twice and both do match the event/cause. 105
* The initial listing of objects is done separately from watching the objects, and is fed into the reactor differently (not `event['type']=="ADDED"`, but `event['type']==None`). The watching continues from the resource-version of the list, as it must be by design. 105

0.15

New features:

* Silent spy-handlers `kopf.on.event` (currently only for custom resources). 86
* Labels can now be added recursively (e.g. to pod templates within jobs/deployments). 108

Improvements:

* Diffs are logged on update events. 104
* Handling is skipped if there are no handlers for the event/cause (and produces no fake logs/statuses). 103

Internal changes:

* Maintenance docs, RBAC fixes in the docs, typos fixed. 83 89 102
* Few more tests. 90 91

*The release is done as a rollback point from 0.16 if the resume-handlers introduce breaking changes (they shouldn't).*

0.14

Bugfixes:

* K8s events are now optional, if posting fails, the operator continues. 88
* K8s events' messages are now cut to 1024 chars to prevent failures. 88

Other changes:

* Internal refactoring of the `kopf.on.field()` handler. 69
* Internal refactoring of the cause detection & event handling. 82

0.13

Bugs fixed:

* Events are posted using `v1` instead of `v1beta1` API, making it compatible with Google Kubernetes Engine >=1.12. 81

Other changes:

* Internal refactoring on the module imports & Kubernetes client calls. 78 71

0.12

New features:

* Basic tools for testing of the Kopf-based operators (background operator runner).
* `namespace`, `name`, `uid` kwargs for the handlers (were mentioned in the docs, absent in the code).

Other changes:

* Tests, tests, tests for the existing codebase (asyncio queueing).
* End-to-end tests with Minikube with real Kubernetes versions.
* Some little fixes detected during test writing.
* Contribution docs.

0.11

Breaking change:

* Legacy `KopfPeering` (cluster-scoped) is now `ClusterKopfPeering`.
* Current `KopfPeering` is made namespaced.
* Code is updated to support the previous cluster config smoothly (until 1.0).
* CRD re-creation is recommended (see docs for peering).

Other changes:

* Tests, tests, tests for the existing codebase.
* RBAC docs fixed for the real demo examples.
* Watching-streaming logic refactored for testability, but keeps the functionality.
* `metadata.generation` does not trigger the update handlers in Minikube anymore.

0.10

* Follow the Kubernetes "eventual consistency" principle and react only to the latest events, ignore the past replayed events 43 42
* Tests for the diff calculations 40 48

0.9.1

* Better PyPI's README page 41

0.9

* Peering mode auto-detection by default, falling back to standalone if not configured. 33 38

0.8


      

0.7


      

0.6.1


      

0.6


      

0.5

Initial import of the squashed repository.

0.0