kubernetes-client/python

Implement an Informer in python-client

Open

#868 aberto em 8 de jul. de 2019

Ver no GitHub
 (22 comments) (69 reactions) (2 assignees)Python (3.323 forks)batch import
help wantedlifecycle/frozen

Métricas do repositório

Stars
 (6.225 stars)
Métricas de merge de PR
 (Mesclagem média 10d 3h) (2 fundiu PRs em 30d)

Description

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.

Guia do colaborador