Vai - SQLite-based client-go alternative components

This project contains alternative versions of client-go concepts - Stores, Indexers, ThreadSafeStores, Reflectors and possibly Informers backed by lightweight SQLite databases.
For a gentle introduction on client-go's basic projects see this excellent guide.
The aim is to allow memory-efficient and still fast enough contstructs when dealing with large Kubernetes installations with hundreds of thousands of resources and more.
Additionally, SQLite make it easier to develop custom sorting, filtering, pagination, aggregation and so on - eg. to build GUIs.
Current status
sqlcache.NewStore returns a SQLite-backed cache.Store instance that passes client-go's unit tests
sqlcache.NewIndexer returns a SQLite-backed cache.Indexer instance that passes client-go's unit tests
sqlcache.NewThreadSafeStore returns a SQLite-backed cache.NewThreadSafeStore instance that passes client-go's unit tests
sqlcache.NewVersionedIndexer returns a SQLite-backed cache.Indexer instance that keeps track of past versions of resources
sqlcache.NewListOptionIndexer returns a SQLite-backed cache.Indexer instance that can satisfy a Rancher steve's ListOptions query object
- it is possible to set up a
Reflector to populate a ListOptionIndexer from a Kubernetes API, see examples/reflector/main.go for an example
- it is possible to set up a
SharedIndexInformer to populate a ListOptionIndexer from a Kubernetes API, see examples/informer/main.go for an example
Next steps:
- try to integrate in steve
- add garbage collector
This project has originated in SUSE HackWeek.