diff --git a/crates/stackable-versioned-macros/src/attrs/k8s.rs b/crates/stackable-versioned-macros/src/attrs/k8s.rs index c241b17f7..60fc4521c 100644 --- a/crates/stackable-versioned-macros/src/attrs/k8s.rs +++ b/crates/stackable-versioned-macros/src/attrs/k8s.rs @@ -62,6 +62,7 @@ pub(crate) struct KubernetesSkipArguments { #[derive(Clone, Debug, FromMeta)] pub(crate) struct KubernetesCrateArguments { pub(crate) kube_core: Option, + pub(crate) kube_client: Option, pub(crate) k8s_openapi: Option, pub(crate) schemars: Option, pub(crate) serde: Option, diff --git a/crates/stackable-versioned-macros/src/codegen/container/mod.rs b/crates/stackable-versioned-macros/src/codegen/container/mod.rs index fbbff4006..df147c88a 100644 --- a/crates/stackable-versioned-macros/src/codegen/container/mod.rs +++ b/crates/stackable-versioned-macros/src/codegen/container/mod.rs @@ -309,6 +309,7 @@ impl From for KubernetesOptions { #[derive(Debug)] pub(crate) struct KubernetesCrateOptions { + pub(crate) kube_client: Override, pub(crate) kube_core: Override, pub(crate) k8s_openapi: Override, pub(crate) schemars: Override, @@ -319,6 +320,7 @@ pub(crate) struct KubernetesCrateOptions { impl Default for KubernetesCrateOptions { fn default() -> Self { Self { + kube_client: Override::Default(parse_quote! { ::kube::client }), k8s_openapi: Override::Default(parse_quote! { ::k8s_openapi }), serde_json: Override::Default(parse_quote! { ::serde_json }), kube_core: Override::Default(parse_quote! { ::kube::core }), @@ -344,6 +346,10 @@ impl From for KubernetesCrateOptions { crate_options.kube_core = Override::Overridden(kube_core); } + if let Some(kube_client) = args.kube_client { + crate_options.kube_client = Override::Overridden(kube_client); + } + if let Some(schemars) = args.schemars { crate_options.schemars = Override::Overridden(schemars); } @@ -361,6 +367,7 @@ impl ToTokens for KubernetesCrateOptions { let mut crate_overrides = TokenStream::new(); let KubernetesCrateOptions { + kube_client: _, k8s_openapi, serde_json, kube_core, diff --git a/crates/stackable-versioned/CHANGELOG.md b/crates/stackable-versioned/CHANGELOG.md index 9fee8c70c..fcc86810c 100644 --- a/crates/stackable-versioned/CHANGELOG.md +++ b/crates/stackable-versioned/CHANGELOG.md @@ -4,11 +4,18 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +### Added + +- Add `kube_client` crate override to `k8s(crates())` to specify a custom import path. This override + will not be passed to the `#[kube()]` attribute, but will only be available to internal + `#[versioned]` macro code ([#1038]). + ### Fixed - Correctly handle fields added in later versions ([#1031]). [#1031]: https://github.com/stackabletech/operator-rs/pull/1031 +[#1038]: https://github.com/stackabletech/operator-rs/pull/1038 ## [0.7.1] - 2025-04-02