Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 2 additions & 5 deletions crates/k8s-version/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
//!
//! ```
//! # use std::str::FromStr;
//! use k8s_version::{ApiVersion, Version, Level, Group};
//! use k8s_version::{ApiVersion, Group, Level, Version};
//!
//! let version = Version::new(1, Some(Level::Beta(1)));
//! let group = Group::from_str("extension").unwrap();
Expand All @@ -38,10 +38,7 @@
//!
//! // Or using ::try_new()
//! let version = Version::new(1, Some(Level::Beta(1)));
//! let api_version = ApiVersion::try_new(
//! Some("extension"),
//! version
//! ).unwrap();
//! let api_version = ApiVersion::try_new(Some("extension"), version).unwrap();
//!
//! assert_eq!(api_version.to_string(), "extension/v1beta1");
//! ```
Expand Down
10 changes: 8 additions & 2 deletions crates/stackable-operator-derive/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,10 @@ mod merge;
/// # use stackable_operator::config::merge::Merge;
/// #[derive(Merge)]
/// #[merge(bound = "T: Merge")]
/// struct Wrapper<T> where T: Clone {
/// struct Wrapper<T>
/// where
/// T: Clone,
/// {
/// inner: T,
/// }
/// ```
Expand All @@ -30,7 +33,10 @@ mod merge;
///
/// ```
/// # use stackable_operator::config::merge::Merge;
/// struct Wrapper<T> where T: Clone {
/// struct Wrapper<T>
/// where
/// T: Clone,
/// {
/// inner: T,
/// }
/// impl<T> Merge for Wrapper<T>
Expand Down
1 change: 0 additions & 1 deletion crates/stackable-operator/src/builder/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
//!
//! They are often not _pure_ builders but contain extra logic to set fields based on others or
//! to fill in sensible defaults.
//!
pub mod configmap;
pub mod event;
pub mod meta;
Expand Down
32 changes: 20 additions & 12 deletions crates/stackable-operator/src/builder/pod/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -337,10 +337,11 @@ impl PodBuilder {
/// # };
/// # use std::collections::BTreeMap;
///
/// let labels: Labels = Labels::try_from(
/// BTreeMap::from([("app.kubernetes.io/component", "test-role"),
/// ("app.kubernetes.io/instance", "test"),
/// ("app.kubernetes.io/name", "test")]))
/// let labels: Labels = Labels::try_from(BTreeMap::from([
/// ("app.kubernetes.io/component", "test-role"),
/// ("app.kubernetes.io/instance", "test"),
/// ("app.kubernetes.io/name", "test"),
/// ]))
/// .unwrap();
///
/// let pod = PodBuilder::new()
Expand All @@ -357,7 +358,8 @@ impl PodBuilder {
/// .build()
/// .unwrap();
///
/// assert_eq!("\
/// assert_eq!(
/// "\
/// apiVersion: v1
/// kind: Pod
/// metadata: {}
Expand Down Expand Up @@ -387,7 +389,9 @@ impl PodBuilder {
/// storage: '1'
/// storageClassName: listeners.stackable.tech
/// name: listener
/// ", serde_yaml::to_string(&pod).unwrap())
/// ",
/// serde_yaml::to_string(&pod).unwrap()
/// )
/// ```
pub fn add_listener_volume_by_listener_class(
&mut self,
Expand Down Expand Up @@ -423,10 +427,11 @@ impl PodBuilder {
/// # };
/// # use std::collections::BTreeMap;
///
/// let labels: Labels = Labels::try_from(
/// BTreeMap::from([("app.kubernetes.io/component", "test-role"),
/// ("app.kubernetes.io/instance", "test"),
/// ("app.kubernetes.io/name", "test")]))
/// let labels: Labels = Labels::try_from(BTreeMap::from([
/// ("app.kubernetes.io/component", "test-role"),
/// ("app.kubernetes.io/instance", "test"),
/// ("app.kubernetes.io/name", "test"),
/// ]))
/// .unwrap();
///
/// let pod = PodBuilder::new()
Expand All @@ -443,7 +448,8 @@ impl PodBuilder {
/// .build()
/// .unwrap();
///
/// assert_eq!("\
/// assert_eq!(
/// "\
/// apiVersion: v1
/// kind: Pod
/// metadata: {}
Expand Down Expand Up @@ -473,7 +479,9 @@ impl PodBuilder {
/// storage: '1'
/// storageClassName: listeners.stackable.tech
/// name: listener
/// ", serde_yaml::to_string(&pod).unwrap())
/// ",
/// serde_yaml::to_string(&pod).unwrap()
/// )
/// ```
pub fn add_listener_volume_by_listener_name(
&mut self,
Expand Down
5 changes: 1 addition & 4 deletions crates/stackable-operator/src/builder/pod/probe.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,7 @@
//! ### Usage example
//!
//! ```
//! use stackable_operator::{
//! builder::pod::probe::ProbeBuilder,
//! shared::time::Duration,
//! };
//! use stackable_operator::{builder::pod::probe::ProbeBuilder, shared::time::Duration};
//! # use k8s_openapi::api::core::v1::HTTPGetAction;
//! # use k8s_openapi::apimachinery::pkg::util::intstr::IntOrString;
//!
Expand Down
27 changes: 12 additions & 15 deletions crates/stackable-operator/src/builder/pod/volume.rs
Original file line number Diff line number Diff line change
Expand Up @@ -466,24 +466,21 @@ pub enum ListenerOperatorVolumeSourceBuilderError {
///
/// let labels: Labels = Labels::try_from(BTreeMap::<String, String>::new()).unwrap();
///
/// let volume_source =
/// ListenerOperatorVolumeSourceBuilder::new(
/// &ListenerReference::ListenerClass("nodeport".into()),
/// &labels,
/// )
/// .build_ephemeral()
/// .unwrap();
/// let volume_source = ListenerOperatorVolumeSourceBuilder::new(
/// &ListenerReference::ListenerClass("nodeport".into()),
/// &labels,
/// )
/// .build_ephemeral()
/// .unwrap();
///
/// pod_builder
/// .add_volume(Volume {
/// name: "listener".to_string(),
/// ephemeral: Some(volume_source),
/// ..Volume::default()
/// });
/// pod_builder.add_volume(Volume {
/// name: "listener".to_string(),
/// ephemeral: Some(volume_source),
/// ..Volume::default()
/// });
///
/// // There is also a shortcut for the code above:
/// pod_builder
/// .add_listener_volume_by_listener_class("listener", "nodeport", &labels);
/// pod_builder.add_listener_volume_by_listener_class("listener", "nodeport", &labels);
/// ```
#[derive(Clone, Debug)]
pub struct ListenerOperatorVolumeSourceBuilder {
Expand Down
8 changes: 4 additions & 4 deletions crates/stackable-operator/src/cli/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ pub const AUTHOR: &str = "Stackable GmbH - info@stackable.tech";
/// [`RunArguments`] is used, but a custom type can be used.
///
/// ```rust
/// use stackable_operator::cli::Command;
/// use clap::Parser;
/// use stackable_operator::cli::Command;
///
/// #[derive(Parser)]
/// struct Run {
Expand All @@ -39,16 +39,16 @@ pub const AUTHOR: &str = "Stackable GmbH - info@stackable.tech";
/// enum.
///
/// ```rust
/// use stackable_operator::cli::Command;
/// use clap::Parser;
/// use stackable_operator::cli::Command;
///
/// #[derive(Parser)]
/// enum CustomCommand {
/// /// Print hello world message
/// Hello,
///
/// #[clap(flatten)]
/// Framework(Command)
/// Framework(Command),
/// }
/// ```
#[derive(Debug, PartialEq, Eq, Parser)]
Expand All @@ -65,8 +65,8 @@ pub enum Command<Run: Args = RunArguments> {
/// ### Embed into an extended argument set
///
/// ```rust
/// use stackable_operator::cli::RunArguments;
/// use clap::Parser;
/// use stackable_operator::cli::RunArguments;
///
/// #[derive(clap::Parser, Debug, PartialEq, Eq)]
/// struct Run {
Expand Down
23 changes: 11 additions & 12 deletions crates/stackable-operator/src/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -542,33 +542,32 @@ impl Client {
///
/// ```no_run
/// use std::time::Duration;
///
/// use clap::Parser;
/// use tokio::time::error::Elapsed;
/// use kube::runtime::watcher;
/// use k8s_openapi::api::core::v1::Pod;
/// use kube::runtime::watcher;
/// use stackable_operator::{
/// client::{Client, initialize_operator},
/// utils::cluster_info::KubernetesClusterInfoOptions,
/// };
/// use tokio::time::error::Elapsed;
///
/// #[tokio::main]
/// async fn main() {
/// # async fn docs() {
/// let cluster_info_options = KubernetesClusterInfoOptions::parse();
/// let client = initialize_operator(None, &cluster_info_options)
/// .await
/// .expect("Unable to construct client.");
/// let watcher_config: watcher::Config =
/// watcher::Config::default().fields(&format!("metadata.name=nonexistent-pod"));
/// watcher::Config::default().fields(&format!("metadata.name=nonexistent-pod"));
///
/// // Will time out in 1 second unless the nonexistent-pod actually exists
/// let wait_created_result: Result<(), Elapsed> = tokio::time::timeout(
/// Duration::from_secs(1),
/// client.wait_created::<Pod>(&client.default_namespace, watcher_config),
/// )
/// .await;
/// }
/// let wait_created_result: Result<(), Elapsed> = tokio::time::timeout(
/// Duration::from_secs(1),
/// client.wait_created::<Pod>(&client.default_namespace, watcher_config),
/// )
/// .await;
/// # }
/// ```
///
pub async fn wait_created<T>(&self, namespace: &T::Namespace, watcher_config: watcher::Config)
where
T: Resource + GetApi + Clone + Debug + DeserializeOwned + Send + 'static,
Expand Down
69 changes: 36 additions & 33 deletions crates/stackable-operator/src/cluster_resources.rs
Original file line number Diff line number Diff line change
Expand Up @@ -328,19 +328,26 @@ impl ClusterResource for Deployment {
/// # Examples
///
/// ```
/// use k8s_openapi::api::apps::v1::StatefulSet;
/// use k8s_openapi::api::core::v1::{ConfigMap, Service};
/// use kube::CustomResource;
/// use kube::core::{Resource, CustomResourceExt};
/// use kube::runtime::controller::Action;
/// use std::sync::Arc;
///
/// use k8s_openapi::api::{
/// apps::v1::StatefulSet,
/// core::v1::{ConfigMap, Service},
/// };
/// use kube::{
/// CustomResource,
/// core::{CustomResourceExt, Resource},
/// runtime::controller::Action,
/// };
/// use schemars::JsonSchema;
/// use serde::{Deserialize, Serialize};
/// use stackable_operator::client::Client;
/// use stackable_operator::cluster_resources::{self, ClusterResourceApplyStrategy, ClusterResources};
/// use stackable_operator::deep_merger::ObjectOverrides;
/// use stackable_operator::product_config_utils::ValidatedRoleConfigByPropertyKind;
/// use stackable_operator::role_utils::Role;
/// use std::sync::Arc;
/// use stackable_operator::{
/// client::Client,
/// cluster_resources::{self, ClusterResourceApplyStrategy, ClusterResources},
/// deep_merger::ObjectOverrides,
/// product_config_utils::ValidatedRoleConfigByPropertyKind,
/// role_utils::Role,
/// };
///
/// const APP_NAME: &str = "app";
/// const OPERATOR_NAME: &str = "app.stackable.tech";
Expand All @@ -352,23 +359,17 @@ impl ClusterResource for Deployment {
/// version = "v1",
/// kind = "AppCluster",
/// plural = "AppClusters",
/// namespaced,
/// namespaced
/// )]
/// struct AppClusterSpec {
/// #[serde(default)]
/// pub object_overrides: ObjectOverrides,
/// }
///
/// enum Error {
/// CreateClusterResources {
/// source: cluster_resources::Error,
/// },
/// AddClusterResource {
/// source: cluster_resources::Error,
/// },
/// DeleteOrphanedClusterResources {
/// source: cluster_resources::Error,
/// },
/// CreateClusterResources { source: cluster_resources::Error },
/// AddClusterResource { source: cluster_resources::Error },
/// DeleteOrphanedClusterResources { source: cluster_resources::Error },
/// };
///
/// async fn reconcile(app: Arc<AppCluster>, client: Arc<Client>) -> Result<Action, Error> {
Expand All @@ -385,35 +386,38 @@ impl ClusterResource for Deployment {
/// .map_err(|source| Error::CreateClusterResources { source })?;
///
/// let role_service = Service::default();
/// let patched_role_service =
/// cluster_resources.add(&client, role_service)
/// .await
/// .map_err(|source| Error::AddClusterResource { source })?;
/// let patched_role_service = cluster_resources
/// .add(&client, role_service)
/// .await
/// .map_err(|source| Error::AddClusterResource { source })?;
///
/// for (role_name, group_config) in validated_config.iter() {
/// for (rolegroup_name, rolegroup_config) in group_config.iter() {
/// let rolegroup_service = Service::default();
/// cluster_resources.add(&client, rolegroup_service)
/// cluster_resources
/// .add(&client, rolegroup_service)
/// .await
/// .map_err(|source| Error::AddClusterResource { source })?;
///
/// let rolegroup_configmap = ConfigMap::default();
/// cluster_resources.add(&client, rolegroup_configmap)
/// cluster_resources
/// .add(&client, rolegroup_configmap)
/// .await
/// .map_err(|source| Error::AddClusterResource { source })?;
///
/// let rolegroup_statefulset = StatefulSet::default();
/// cluster_resources.add(&client, rolegroup_statefulset)
/// cluster_resources
/// .add(&client, rolegroup_statefulset)
/// .await
/// .map_err(|source| Error::AddClusterResource { source })?;
/// }
/// }
///
/// let discovery_configmap = ConfigMap::default();
/// let patched_discovery_configmap =
/// cluster_resources.add(&client, discovery_configmap)
/// .await
/// .map_err(|source| Error::AddClusterResource { source })?;
/// let patched_discovery_configmap = cluster_resources
/// .add(&client, discovery_configmap)
/// .await
/// .map_err(|source| Error::AddClusterResource { source })?;
///
/// cluster_resources
/// .delete_orphaned_resources(&client)
Expand Down Expand Up @@ -666,7 +670,6 @@ impl ClusterResources {
/// # Arguments
///
/// * `client` - The client which is used to access Kubernetes
///
pub async fn delete_orphaned_resources(self, client: &Client) -> Result<()> {
tokio::try_join!(
self.delete_orphaned_resources_of_kind::<Service>(client),
Expand Down
Loading
Loading