3 releases (breaking)

new 0.3.0 Apr 21, 2024
0.2.0 Dec 19, 2023
0.1.0 Dec 18, 2023

#672 in Network programming

29 downloads per month

Apache-2.0

2MB
16K SLoC

k8s-pb

Crates.io

Kubernetes protobuf bindings for kube-rs. WIP. Not yet useable as is.

Usage

This library is not currently usable from kube. For now consider these structs a reference location for Kubernetes structs that are not found in k8s-openapi. See docs.rs/k8s-pb.

Build Process

The code generation process consists of 3 steps;

  1. just protos - download and patch protobufs
  2. just swagger - download and transform openapi schema
  3. just codegen - combine info and build with prost

The k8s-pb crate is generated as a result of this process and then published periodically.

just protos

Obtains the version pinned protobufs from upstream:

then does minor transforms to prepare them for building.

just swagger

Obtains the version pinned swagger openapi schema from upstream:

then applies any needed patches before transforming the schema into a shorter json file containing desired generic information.

This json file complements the protos with type type properties needed for trait implementations.

just codegen

Runs main.rs, using the outputs from the swagger and protobuf recipes above. In particular;

  • The protos are built with prost via protoc and provides a FileDescriptorSet via Config::file_descriptor_set_path.
  • The transformed swagger result json is deserialized through lib.rs into a HashMap<String, Resource> where the string is a GVK string.
  • We loop through all the generated modules and
    • inject generics from this hashmap via append_trait_impl
    • in memory rustfmt before finalising
  • Generate a module tree from the seen modules in the loop
  • Attach our implemented traits to the generated lib.rs

Build Dependencies

Dependencies