All notable changes to this project will be documented in this file.
The format is roughly based on Keep a Changelog.
This project intends to inhere to Semantic Versioning, but has not yet reached 1.0 so all APIs might be changed.
- The
Kazan.Codegen.Models.*
modules have been moved toKazan.Models.*
. These were meant to be private previously, so hopefully this doesn't break anything for people, but you never know. response_schema
onKazan.Request
has been renamed toresponse_model
.- The models under
Kazan.Models.ApiextensionsApiServer
have been moved toKazan.Apis.Apiextensions
to live with their corresponding Api functions. Kazan.Models.PropertyDesc.type
is now an atom rather than a string.
- Added an informational
server_info
field to Kazan.Server that can be used to check the names of the context, cluster & user that a Kazan.Server struct were initialised with. - Kazan now supports custom resources. These can easily be defined using the
macros in
Kazan.Model
, or you can manually implement theKazan.Model
behaviour if you want to do serialization/deserilization yourself.
- We no longer require certificate-authority data for a server that's
configured with
insecure-tls-verify: true
(#64) - Fixed the GKE section of the README, it referred to a function that didn't actually exist.
- Watcher now handles
410 Expired
messages in the same way as410 Gone
, prior to this it would crash when these were received. - We now specify
[verify: :verify_peer]
when thecacerts
SSL option is specified; this removes the warning log from:ssl
.
Kazan.Server
now exposesfrom_env/1
andfrom_env!/0
functions for creating aKazan.Server
from application config. This should make it easier for users using GCP to continue to use application config.- Added some new configuration options that allow users to provide their own OpenAPI spec files. This should let users use kazan when they have k8s extensions installed.
Kazan.Server
now supportsusername
andpassword
fields in config files.- HTTP Basic auth is now supported for authentication with k3s.
- Fix a crash in
Kazan.Watcher
if one of the destination processes crashes.
- Watch operations now return a
Watcher.Event
rather than a k8s WatchEvent struct. - Watcher.Event has atoms for the type instead of strings.
- Added a new
gone
event type to watchers. Processes listening for events should restart a watcher with a new rv when receiving one of these. - Kazan.Request.create (which is used by most of the API request creation methods
now returns
{:error, term}
rather than{:err, term}
. This was a bug fix as the typespec stated that they returned{:error, term}
.
- We now generate typespecs for all the generated functions & structs. This should allow dialyzer users to validate their code and improves the documentation.
- Fixed an issue where watchers would crash repeatedly if the underlying k8s watch rv became invalid somehow. (#45)
- Kazan now supports talking to GKE via auth-provider config in kubeconfig. (Thanks @smn)
- Pulled in the kube specifications from v1.11.2. This means that Kazan should support any new features from kubernetes 1.10 & 1.11
Kazan.Watcher
now monitors it's consumer and shuts down if the consumer dies. (#46)
- Kazan now depends on YamlElixir 2.0. This isn't a breaking change for users of Kazan, but may be a breaking change if you use YamlElixir directly. However, the upgrade process should be reasonably easy - the read_from_x functions have just been renamed to read_from_x!
Kazan.run
now pattern matches on argument types, so if a user accidentally passes a{:ok, request}
to it, they'll get a better error message.Kazan.Watcher
no longer logs debug info by default. This is now controlled with adebug
option that defaults to false.- Pulled in the k8s 1.9.6 specifications.
- Support HTTPoison 1.0 as well as 0.x
- Handle the breaking change to
YamlElixir.read_from_file
in YamlElixir 1.4.0 - Token & certificate auth details can now be supplied in the mix config.
- The module names of most APIs & many models has been changed.
- APIs module names have changed slightly to have a dot between the group name
and the version. For example:
Kazan.Apis.CoreV1
is nowKazan.Apis.Core.V1
. - Models that are associated with an API now live inside that APIs module,
rather than under
Kazan.Models
. For exampleKazan.Models.Api.V1.Container
now lives underKazan.Apis.Core.V1.Container
- Models that are not associated with specific APIs (e.g. Apimachinery models)
still live under
Kazan.Models
. However, the capitalization of modules may have changed. For exampleApiMachinery
is nowApimachinery
. This is mostly for consistencies sake - most module names only have the first letter capitalized, soApimachinery
etc. should be no different. - Some underlying changes in the names of models in the k8s spec may also have caused things to move around.
- APIs module names have changed slightly to have a dot between the group name
and the version. For example:
- It wasn't public API, but
Kazan.Codegen.Models.property_name/1
has been removed.
- Updated Kubernetes specs to 1.8 (Thanks @chazsconi).
- Kazan can now load server details from kubeconfig provided in Mix configuration.
- Kazan can now be configured to use in cluster authentication from the Mix configuration.
- We now support watch requests with
Kazan.Watcher
. (Thanks @chazsconi)
- Switched CHANGELOG to use a format based on Keep a Changelog.
- Better documentation around how to authenticate with kubernetes.
- Changed the way "unknown" models are deserialized from k8s. We now try to
match the
apiVersion
andkind
fields with the data provided in thex-kubernetes-group-version-kind
field in the OAI spec. If we're attempting to deserialize a model that doesn't hae this present in the spec, things may go wrong. - Improved the documentation of API modules.
Kazan.Models.oai_name_to_module
still supports the older OAI name format, but this is now deprecated and will be removed in a future version.Kazan.Client
has been deprecated in favor of exposing these functions inKazan
. See #23 for the justification.
- API functions that take no arguments will no longer raise
Protocol.UndefinedError
. read_namespaced_pod_log
and other calls that return plain text will now return that text, rather than attempting & failing to decode JSON. (thanks @chazsconi)- In cluster authentication using
Kazan.Server.in_cluster
should now work properly. It now reads the correct ca.crt file, and gets server details from environment variables, similar to the Go client. (Thanks @mayppong) - Non-bang versions of API function calls will no longer crash if parameters are missing, or another validation error occurs.
- Kazan now compiles on Elixir 1.6+
- Fixed a compiler warning.
- Adds support for Kubernetes 1.7 (Thanks @jeremytregunna and @thoughtmanifest)
- Adds a script for kazan developers to use for downloading new kubernetes open API specs.
- Support Kubernetes 1.6. This is a breaking change as many of the paths to model modules have changed.
- Dropped Elixir 1.3 support.
- Make Kazan.Models.model_descs private. This is potentially a breaking change.
- Support for token authentication & skipping TLS verification. (Thanks @izaakschroeder)
- In cluster service account authentication (Thanks @izaakschroeder)
- Functions to map from OpenAPI model name or operation ID into modules or functions. These are intended to be used for developers exploring the API in the REPL.
- OpenAPI operation & definition IDs are now documented in the exdocs.
- No compiler warnings on Elixir 1.5
- Absolute paths in kubeconfig will now be interpreted as such. Previously they would be assumed as relative to the kubeconfig file.
- Various functions will no longer leak atoms if called with the names of models or APIs that don't exist.
- Relax some requirements dependencies.
- Add content-type & accepts headers into requests.
- Strip nil values from maps before sending to Kube
- Added some limited patching support
- Decode JSON in error responses.
- Fixed compiler warnings in Elixir 1.4
- Improved documentation around model properties. Types of each of the properties should all be documented now.
- Tests are now run on travis.
- Can now load configuration from kubeconfig files.
- Added support for self signed HTTPs w/ ca_certificate validation.
- Added support for client certificate based auth.
- Added basic integration tests.
- Fixed issue where hex.pm package was missing kube_specs dir
- Initial release.