Skip to content

v0.1.0

Compare
Choose a tag to compare
@github-actions github-actions released this 19 Sep 12:40
· 233 commits to main since this release
v0.1.0
4678e45

Summary

We're pleased to announce the first release of reclass-rs: v0.1.0.

Reclass-rs is a Rust implementation of Reclass which is based on the Reclass fork maintained by kapicorp. The Reclass implementation provided in this repository can be used both from other Rust programs and in Python programs. The reclass-rs Python module is implemented directly in Rust with PyO3.

Please note that this implementation doesn't yet support all the features and extensions which are availble in Kapitan Reclass. However, for features which are implemented, we aim to be compatbile with Kapitan Reclass.

The implementation currently supports the following features of Kapicorp Reclass:

  • The Reclass options nodes_path and classes_path
  • The Reclass option ignore_class_notfound
  • Escaped parameter references
  • Merging referenced lists and dictionaries
  • Constant parameters
  • Nested references
  • References in class names
  • Loading classes with relative names

See the README.md for more information.

Changes

🚀 Features

  • Implement Reclass reference parsing (#2)
  • Add custom list types which are suitable for Reclass's classes and applications arrays (#5)
  • Add initial Node and NodeInfo types and expose node info functionality in Python module (#6)
  • Implement custom Mapping and Value types (#8)
  • Add support for constant keys in our Mapping type (#9)
  • Implement std::fmt::Display for Value and Mapping (#10)
  • Add support for extending values in Mapping::insert() (#11)
  • Add support for merging a Mapping into another Mapping (#13)
  • Implement ValueList flattening (#14)
  • Add Node::render() to load and merge classes into the target node (#15)
  • Add support for Reclass reference interpolation (#19)
  • Implement Reclass::inventory() and associated Inventory type (#22)
  • Add empty exports field in NodeInfo (#24)
  • Parallelize inventory rendering (#28)
  • Abort reference resolution when a reference loop is detected (#32)
  • Create a pure Rust API for inventory and node rendering (#35)
  • Add support for escaped inventory query opening symbol (#40)

🛠️ Minor Changes

  • Add more nodes and classes in the test inventory (#27)

🐛 Fixes

  • Handle symlinks in nodes_path or classes_path as separate entities (#26)
  • Follow symlinks when discovering nodes or classes (#34)
  • Fix propagation of constant and overriding keys in Mapping interpolation and flattening (#41)