The Flux Operator has the start of language SDKs that can be used to interact with MiniCluster objects and a deployed MiniCluster. This should guide will walk you through some of the developer basics.
The Python sdk is generated by way of the following steps:
We start with an operator-sdk API definition in Go files (the content of
The labels “+k8s:openapi-gen=true” and similar tags are needed to generate Go Swagger file
The openapi-gen tool (added to
binby the Makefile) turns your Go types files into a single Go file with a spec (
Always check for validation errors from that tool if you make any changes to the api documents (see below for how to generate)
You then use a small Go script to write that into a swagger Json (
This script Does a print of the names, and any that are from external libraries, name to something else
We prepared a swagger_config.json (in
hack/python-sdk/) with metadata and these “something else” imports
Files are generated into
sdk/python/v1alpha1(or other API version)
Tests are done in both
sdk/python/v1alpha1/test(provided by the generator) and
tests/python(testing operator functionality too)
For a detailed walk through of this setup, see this blog post that walks through that.
By default, anything that already exists in
sdk/python/v1alpha can be over-written, and for the automated files in “model”
or “api” or “test” we want that to be the case. However, for a subset of files that would be overwritten, they are copied
after the build from
hack/python-sdk/template into the root of the Python install directory. This means, for example,
to update the setup.py you should update it in the hack folder, as the one in the distributed folder will be overwritten.
For files that aren’t overwritten (e.g., extra modules added to the fluxoperator model or the
you can make changes directly in the generated directory.
Make changes to template files that will be written over in
Make changes to module files that aren’t overwritten directly in
With any changes to the Flux Operator, build the Python API with
For the last step, this typically means that you can make updates automatically to the API by way of:
$ make api
A courtesy command is also provided to build the api and the flux-operator.yaml:
$ make pre-commit
The idea being that right before a push you should be rebuilding the API and deployment YAml.