Skip to content

Releases: Arnavion/k8s-openapi

v0.22.0

04 May 20:13
ed70fb3
Compare
Choose a tag to compare

k8s-openapi

  • BREAKING CHANGE: Added support for Kubernetes 1.30 under the v1_30 feature.

Corresponding Kubernetes API server versions:

  • v1.24.17
  • v1.25.16
  • v1.26.15
  • v1.27.13
  • v1.28.9
  • v1.29.4
  • v1.30.0

k8s-openapi-codegen-common

  • No changes.

k8s-openapi-derive

  • No changes except to bump the k8s-openapi-codegen-common dependency to the new version.

v0.21.1

17 Feb 23:43
ef3183d
Compare
Choose a tag to compare

k8s-openapi

  • BUGFIX: Fix schemars::JsonSchema impl of k8s_openapi::apimachinery::pkg::util::intstr::IntOrString to be in line with what Kubernetes expects of int-or-string fields in CRDs.

Corresponding Kubernetes API server versions:

  • v1.24.17
  • v1.25.16
  • v1.26.14
  • v1.27.11
  • v1.28.7
  • v1.29.2

k8s-openapi-codegen-common

  • BUGFIX: See the bugfix mentioned above.

k8s-openapi-derive

  • No changes except to bump the k8s-openapi-codegen-common dependency to the new version.

v0.21.0

20 Jan 03:52
5337d70
Compare
Choose a tag to compare

k8s-openapi

  • BREAKING CHANGE: Added support for Kubernetes 1.29 under the v1_29 feature.

  • BREAKING CHANGE: Dropped support for Kubernetes 1.22 and 1.23.

Corresponding Kubernetes API server versions:

  • v1.24.17
  • v1.25.16
  • v1.26.13
  • v1.27.10
  • v1.28.6
  • v1.29.1

k8s-openapi-codegen-common

  • No changes.

k8s-openapi-derive

  • No changes.

v0.20.0

07 Sep 22:22
52da260
Compare
Choose a tag to compare

v0.20.0 (2023-09-07)

k8s-openapi

  • BREAKING CHANGE: This release removes all associated methods of resource types that mapped API operations. For example, there is no more fn api::core::v1::Pod::list(), and all types related to API operations like ListOptional and ResponseBody have also been removed. See #149 for more details.

  • BREAKING CHANGE: Added support for Kubernetes 1.28 under the v1_28 feature.

  • BREAKING CHANGE: Dropped support for Kubernetes 1.20 and 1.21.

Corresponding Kubernetes API server versions:

  • v1.22.17
  • v1.23.17
  • v1.24.17
  • v1.25.13
  • v1.26.8
  • v1.27.5
  • v1.28.1

k8s-openapi-codegen-common

  • BREAKING CHANGE: write_operation and other things related to emitting API operations have been removed.

k8s-openapi-derive

  • BREAKING CHANGE: The generated resource type no longer has associated clientset methods for listing etc.

v0.19.0

05 Aug 18:27
4ed8984
Compare
Choose a tag to compare

k8s-openapi

  • BREAKING CHANGE: Added support for Kubernetes 1.27 under the v1_27 feature.

  • FEATURE: The k8s-openapi now has two additional Cargo features earliest and latest, which select the earliest and latest supported version. For example, in this release, earliest is equivalent to v1_20 and latest is equivalent to v1_27.

Corresponding Kubernetes API server versions:

  • v1.20.15
  • v1.21.14
  • v1.22.17
  • v1.23.17
  • v1.24.16
  • v1.25.12
  • v1.26.7
  • v1.27.4

k8s-openapi-codegen-common

  • No changes.

k8s-openapi-derive

  • No changes.

v0.18.0

07 Apr 22:11
f984deb
Compare
Choose a tag to compare

k8s-openapi

  • BREAKING CHANGE: The k8s_openapi::DeepMerge trait and its impls on this crate's types now have semantics in line with merge strategies in Kubernetes. Specifically, the code generator now takes the x-kubernetes-list-map-keys, x-kubernetes-list-type, x-kubernetes-map-type, x-kubernetes-patch-merge-key and x-kubernetes-patch-strategy annotations into account when generating the DeepMerge impls.

    For example, in v0.17.0, PodSpec::merge_from would append entries into self.containers, whereas now it does a "list-map" strategy to replace containers with the same name.

Corresponding Kubernetes API server versions:

  • v1.20.15
  • v1.21.14
  • v1.22.17
  • v1.23.17
  • v1.24.12
  • v1.25.8
  • v1.26.3

k8s-openapi-codegen-common

  • BREAKING CHANGE: As mentioned above, the generated code for k8s_openapi::DeepMerge impls now takes merge strategy annotations into account.

k8s-openapi-derive

  • No changes.

v0.17.0

04 Jan 18:45
35a7fd5
Compare
Choose a tag to compare

k8s-openapi

  • BREAKING CHANGE: Added support for Kubernetes 1.26 under the v1_26 feature.

  • BREAKING CHANGE: Dropped support for Kubernetes 1.18 and 1.19.

  • FEATURE: Allow deserializing non-optional ByteStrings from JSON null. The API server is known to allow these nulls in the ConfigMap::binary_data and Secret::data maps. The deserialization results in an empty ByteString, to match the behavior of the API server when given a null value in the ConfigMap::data map.

Corresponding Kubernetes API server versions:

  • v1.20.15
  • v1.21.14
  • v1.22.17
  • v1.23.15
  • v1.24.9
  • v1.25.5
  • v1.26.0

v0.16.0

15 Sep 18:33
521ff73
Compare
Choose a tag to compare

k8s-openapi

  • BREAKING CHANGE: Added support for Kubernetes 1.25 under the v1_25 feature.

  • FEATURE: All spec types now implement a deep-merge API via a DeepMerge trait impl with a fn merge_from(&mut self, other: Self) method. This is useful for builder-like operations.

Corresponding Kubernetes API server versions:

  • v1.18.20
  • v1.19.16
  • v1.20.15
  • v1.21.14
  • v1.22.14
  • v1.23.11
  • v1.24.5
  • v1.25.1

k8s-openapi-codegen-common

  • No changes.

k8s-openapi-derive

  • BREAKING CHANGE: #[derive(CustomResourceDefinition)] no longer generates a list type alias. For example, when applied to struct FooSpec, previously the custom derive would generate pub type FooList = k8s_openapi::List<Foo>; It no longer does this, in accordance with the main k8s-openapi crate where such aliases were removed back in v0.7.0

  • FEATURE: The generated custom resource type will implement k8s_openapi::DeepMerge if the impl_deep_merge custom derive attribute is used. Note that this requires you to implement k8s_openapi::DeepMerge on the spec type yourself; the custom derive does not do that.

v0.15.0 (2022-05-22)

23 May 03:19
80f4124
Compare
Choose a tag to compare

k8s-openapi

  • BREAKING CHANGE: The pretty optional parameter has been removed from all operations. Setting this parameter to true would've made the API server pretty-print the JSON response, which is meaningless for a programmatic client.

  • BREAKING CHANGE: In addition to the previous change, the exact and export parameters have been removed from all read operations (eg Pod::read_namespaced_pod). These parameters were removed in Kubernetes v1.21 and were known to be broken before that, and would've caused the server response to not be able to be parsed correctly via the operation's response type anyway.

    All read operations with the exception of Pod::read_namespaced_pod_log had only these three optional parameters, so now that they've been removed such read operations don't have an optional: ReadFooOptional<'_> parameter at all.

  • BREAKING CHANGE: Operation names no longer include the _namespaced part and the resource type name. For example, Pod::read_namespaced_pod is now just Pod::read. The corresponding optional parameters type and response type no longer include the Namespaced part, eg ReadNamespacedPodResponse is now just ReadPodResponse.

  • BREAKING CHANGE: Added support for Kubernetes 1.24 under the v1_24 feature.

  • BREAKING CHANGE: Dropped support for Kubernetes 1.16 and 1.17.

  • FEATURE: The K8S_OPENAPI_ENABLED_VERSION env var can now be set at build time to enable a specific API version, just like enabling a specific version feature would've done. This is only meant to be used by library developers who want to run cargo check, cargo doc, etc commands, for which the previous advice of enabling a version feature via a dev dependency would not work.

Corresponding Kubernetes API server versions:

  • v1.18.20
  • v1.19.16
  • v1.20.15
  • v1.21.12
  • v1.22.9
  • v1.23.6
  • v1.24.0

v0.14.0

24 Jan 00:02
Compare
Choose a tag to compare

v0.14.0 (2022-01-23)

k8s-openapi

  • BREAKING CHANGE: k8s-openapi now disables all default features of its dependencies and only enables the ones it needs. If your code was implicitly relying on some default feature being enabled of an indirect dependency re-exported from k8s-openapi, it will now not compile. You will need to enable the feature yourself in your own dependency.

    For example, if you had use k8s_openapi::schemars; #[derive(schemars::JsonSchema)] struct YourCode { ... } this will no longer compile because the proc macro is only compiled when the "derive" feature is enabled. You will need to add an explicit dependency on the schemars crate in your code, with its "derive" feature enabled.

  • BREAKING CHANGE: Added support for Kubernetes 1.23 under the v1_23 feature.

  • BREAKING CHANGE: Dropped support for Kubernetes 1.11, 1.12, 1.13, 1.14 and 1.15.

  • BUGFIX: The serde::Deserialize impl of some types now accepts null for required fields and deserializes it as the default value of that field. This is because the Kubernetes API server violates the schema and sends null in some cases.

    For example, a user is allowed to create a DaemonSet whose PodSpec has "containers": null, even though PodSpec::containers is a required field and emitted as a Vec. When querying this DaemonSpec back from the API server, it will return "containers": null in the response too. Before this fix, such a response would fail to deserialize. Note that serialization is still spec-compliant as before, so such a DaemonSet could not have been created with this crate's types before and still cannot be created now.

Corresponding Kubernetes API server versions:

  • v1.16.15
  • v1.17.17
  • v1.18.20
  • v1.19.16
  • v1.20.15
  • v1.21.9
  • v1.22.6
  • v1.23.2

k8s-openapi-codegen-common

  • BUGFIX: k8s_openapi_codegen_common::Error now implements source() correctly instead of always returning None.

k8s-openapi-derive

  • No changes except to bump the k8s-openapi-codegen-common dependency to the new version.