Release Notes for Cyphernetes v0.15.0
This one took a bit longer than our usual release cycle but packs a real punch!
This release includes the biggest refactoring of the codebase to date.
For starters, the heart of Cyphernetes has been fully rewritten from scratch. This release does away with the goyacc
dependency as the parser has been reimplemented as a recursive descent function, while the lexer has been rewritten to be more straightforward and maintainable.
This change will allow the parser to deliver better, contextual messages on parsing errors - as well as serving for a better platform for future development of the language.
Next, the single parser
Cyphernetes package has been broken down into 3 packages:
core
: This is the package that provides theParse
method - It contains the language parser, relationship engine and other parts that together provide that Cyphernetes magicprovider
: This is an interface that allows the core package to interface with a data backend - contains functions for doing CRUD operations as well as resolving resource kind names and other schema related functionalityapiserver
: A default provider implementation - this is the original K8s go-client used by Cyphernetes up until now.
This change allows for easier integration of the Cyphernetes language into other Go projects and opens up the possibility of including Cyphernetes in products that use other backends that reflect the contents of etcd (e.g. Postgres, Elasticsearch…) for looking up resources.
For the first time, we publish an Integration guide in our docs.
Besides these two major changes, the refactoring job includes many bug fixes, performance improvements and enhancements to usability. More than anything, we received a lot of user feedback over the past couple of months! Thank you! This helped us address several important issues and come up with feature ideas.
Features
- Full rewrite of the core Cyphernetes package
- Support for dry-run mode
- Shiny progress bars when initializing resource specs
- Add
version
command - New
—format
flag for YAML output support in query/shell commands
Improvements
- Blazing fast cluster spec initialization
- Support fully qualified kinds (e.g.
deployments.apps
) - Warn on kind ambiguity, present list of available fully-qualified names
- Allow access to non-namespaces resources (
nodes
,namespaces
…) without explicitly setting “all-namespaces” - More relationships now discovered automatically
Bug Fixes
- Namespace hardcoded to
default
on web caused missing results when namespace was defined in local Kubernetes context - Ambiguous resource kinds of different groups crashed the program
—namespace
was ignored by Cyphernetes shell - now takes precedence
Acknowledgements
We have a new maintainer! We also have some fresh code contributors and new issue reporters - It's amazing to see the Cyphernetes community growing like that. Thanks to everyone who contributed!
🥇 New maintainer:
We are welcoming @naorpeled as a maintainer for the Cyphernetes repo 🥳
Over the last few months Naor has consistently been contributing and demonstrated responsibility and true care for the project.
I'm honored to have him by my side as an official Cyphernetes maintainer, good luck Naor - You're already doing an awesome job.
🎖️ For reporting issues:
@scraly
@SleepyBrett
@elliotxx
@hmizael
🏅 In the PR department:
@viniciusartur
@noetarbouriech