Releases: AvitalTamir/cyphernetes
v0.15.3
Release Notes for Cyphernetes v0.15.3
This release addresses several issues and extends the core e2e suite with more edge case tests.
Bugfixes
- Patch annotations and labels on resources where no annotations/labels exist
- Fix ASCII graphs in shell
- Error on nil queries + nil GVR lookups
v0.15.2
Release Notes for Cyphernetes v0.15.2
This release contains a critical bug fix to the parser where quoted key names inside node properties (i.e. (d:Deployment {"name":"foo"})
) would get ignored potentially leading to selecting or mutating all resources of the specified kind instead of only the ones matching the selector.
We also added an additional E2E test for the core package (so far we've only been running E2E for the operator).
This version also contains a few important bug fixes - Thanks @wendorf for reporting issues!
Improvements
- Web client will now try to assign another port if the one requested is taken
- Support stars as array indexes in WHERE clauses
- E2E test for core package
Bugfixes
- Properly handle quoted keys in node properties
- Completion generation should not try to get current Kubernetes context
- Web interface not properly detecting port conflicts
v0.15.1
Release Notes for Cyphernetes v0.15.1
This release contains a critical bug fix in multi-context queries - these did not work properly since v0.15.0 following the separation to the provider model, and only ran on the first context mentioned, times as many context provided (so in ctx1, ctx2 MATCH...
ran on ctx1, twice).
Bugfixes
- Properly handle multi-context queries
v0.15.0
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
v0.14.0
Release Notes for Cyphernetes v0.14.0
Team Cyphernetes is pleased to announce the release of Cyphernetes v0.14.0. This version introduces multi-cluster support, the top-requested feature from the community. In addition, there are several other features and improvements that we are excited to share with you.
Features
- Multi-cluster support: Cyphernetes now supports executing queries across multiple clusters using the
IN
keyword:
IN staging, production MATCH (d:Deployment) RETURN d
// Response:
{
[
{
"staging_d": {
...
},
{
"production_d": {
...
}
]
}
- Support aggregation of CPU and Memory - You can now use fields containing CPU or memory values in
SUM
operations (#102) - Support for defining custom relationships in a YAML file, see the CLI docs for syntax (#92)
Improvements
- Support no-color mode in the shell & query using the
--no-color
flag orNO_COLOR
env var (#131) - Add context indicator to web client (#140)
- Better component layout in web client
- Two new comparison operators added to
WHERE
clause: - Refactored debug logging code (#129)
Bug Fixes
- Support comparing values against
NULL
inWHERE
clause (#138)
Acknowledgments
Thanks to everybody both here and in the /r/kubernetes
community who reported bugs, opened issues, commented and used Cyphernetes. The positive feedback we got this month was incredible, it's inspiring to see the community grow and learn about the cool ways people use Cyphernetes.
Special thanks to our awesome contributors who pushed Cyphernetes to new heights this month with new features, bug fixes and code improvements:
🎖️ @jameskim0987 - Awesome contributions this month with the addition of CPU & Memory aggregation and much more
🏅 @naorpeled - For adding 2 new useful comparison operators, no-color support and more
🥇 @aetimmes, @dadav, @hmizael - Thanks for opening new issues
Stay tuned for more!
v0.13.0
Release Notes for Cyphernetes v0.13.0
Presenting the brand new Cyphernetes web client!
.
.
The web client brings the Cyphernetes experience to a whole new level.
It lets you filter out data by interacting with the beautiful graph and is packed with autocompletion, syntax highlighting and more.
Launch into the new web interface by running cyphernetes web
.
This version also fixes a bug in result documents where RETURN items without an AS alias were always returned as top-level properties.
The version restores the original behavior which matches the documentation, where the original nested structure is maintained.
Last but not least - new contributors:
🏅 @jameskim0987 - For reporting AND resolving an issue and helping out with documentation
🎖️ @yndai, @pjdurai - For reporting core issues with the parser and query engine
Also, thanks to the /r/kubernetes community for suggesting idea and bringing up issues!
Features
- New web interface, run with
cyphernetes web
- #108
Improvements
- Paths that contain dots can now be used in WHERE and SET clauses, dots can be escaped using backslashes. useful for filtering on annotations - #106
- Allow setting a property when its parent is nil - i.e. creating a label on a resource with no label - #103
- Added a Windows build to the release - #101
Bug Fixes
v0.12.1
Release Notes for Cyphernetes v0.12.1
This is a monumental release for Cyphernetes, there's been significant progress around reading the OpenAPI specs from the cluster - this means we say goodbye to much of the hardcoded stuff like autocompletion and most of the relationships.
Together with multiple issues closed, bug fixes and improvements to the UX and language - this feels like a very solid release that takes Cyphernetes a great leap towards a v1 release.
Last but not least - The community around this project has grown significantly since the last release - all the feedback, issues, suggestions and contributions gave Cyphernetes a HUGE push!
🏅 @chenrui333 @anthonybrice - for the Homebrew contribution
🎖️ @codekoala @dimm0 @bm1216 @idogada-akamai - for reporting issues
Features
- Hardcoded autocompletions have been removed entirely and are now populated from the Cluster's OpenAPI specs
- Many relationship types are now automatically discovered by traversing the OpenAPI specs, some hardcoded relationships remain but dozens more relationships are now available and work correctly
Improvements
- Supports labels with dots and slashes, so a node like
(d:Deployment {name: "test", app: "nginx", "test.io/foo": "bar"})
now works
Bug Fixes
- Support OIDC providers in cluster config
- Input line no longer disappears after hitting enter
- Respect the
$KUBECONFIG
env var - Exit gracefully when no cluster config is found
- Don't initialize the parser cluster config as part of root startup
v0.12.0
Release Notes for Cyphernetes v0.12.0
This is a monumental release for Cyphernetes, there's been significant progress around reading the OpenAPI specs from the cluster - this means we say goodbye to much of the hardcoded stuff like autocompletion and most of the relationships.
Together with multiple issues closed, bug fixes and improvements to the UX and language - this feels like a very solid release that takes Cyphernetes a great leap towards a v1 release.
Last but not least - The community around this project has grown significantly since the last release - all the feedback, issues, suggestions and contributions gave Cyphernetes a HUGE push!
🏅 @chenrui333 @anthonybrice - for the Homebrew contribution
🎖️ @codekoala @dimm0 @bm1216 @idogada-akamai - for reporting issues
Features
- Hardcoded autocompletions have been removed entirely and are now populated from the Cluster's OpenAPI specs
- Many relationship types are now automatically discovered by traversing the OpenAPI specs, some hardcoded relationships remain but dozens more relationships are now available and work correctly
Improvements
- Supports labels with dots and slashes, so a node like
(d:Deployment {name: "test", app: "nginx", "test.io/foo": "bar"})
now works
Bug Fixes
- Support OIDC providers in cluster config
- Input line no longer disappears after hitting enter
- Respect the
$KUBECONFIG
env var
v0.11.2
Release Notes for Cyphernetes v0.11.2
This release contains several bug fixes that were reported since the v0.11.0 release.
Thanks for all the comments and contributions!
Bug Fixes
- No more screen tearing - prompt will no longer be printed until query is resolved, and will always provide a newline
- Support OIDC client configuration (resolves #82)
- Allow deletion and patching of resources in all-namespaces mode (resolves #83)
- Fix broken installation over missing manifests when using
go install
v0.11.1
Release Notes for Cyphernetes v0.11.1
This release contains several bug fixes that were reported since the v0.11.0 release.
Thanks for all the comments and contributions!