kubernetes-client/python

Implement an Informer in python-client

Open

#868 geöffnet am 8. Juli 2019

Auf GitHub ansehen
 (22 Kommentare) (69 Reaktionen) (2 zugewiesene Personen)Python (3.323 Forks)batch import
help wantedlifecycle/frozen

Repository-Metriken

Stars
 (6.225 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 10T 3h) (2 gemergte PRs in 30 T)

Beschreibung

https://github.com/kubernetes/client-go has an Informer implementation. Internally it leverages a watcher of some collection of resources, continually streams changes (add/modify/delete events), reflects the resources into a downstream store (cache), handles connectivity drops, and periodically does a full resync. This all happens on some background thread (goroutine). A client of the informer is free to iterate over that stored cache without concern for how it's populated, and immediately get (possibly outdated) state.

Applications using https://github.com/kubernetes-client/python that want a local store of resources reflecting some in-cluster state need to concern themselves with those lower-level details. There's a lot of room for error.

On 2019-06-25, go#28 added a simple informer implementation to the openapi-generated client for Golang. It defines a Cache struct, with both a list of all objects and event handler callbacks that a consumer could register.

https://github.com/kubernetes-client/python should contain a similar implementation.

People have been talking about this a bit in various places.

Contributor Guide