use thiserror::Error;
pub type KubeDiscoveryResult<T> = Result<T, KubeDiscoveryError>;
#[derive(Debug, Error)]
pub enum KubeDiscoveryError {
#[error("kubernetes discovery payload error: {0}")]
Payload(#[from] serde_json::Error),
#[error("kubernetes endpoint has no matching port")]
MissingPort,
#[error("invalid kubernetes discovery configuration: {0}")]
InvalidConfig(String),
#[error("kubernetes client error: {0}")]
Client(String),
#[error("kubernetes watch error: {0}")]
Watch(String),
#[error("kubernetes mapping error: {0}")]
Mapping(String),
#[error("kubernetes watcher for `{service}` has not synchronized")]
NotSynced { service: String },
#[error("kubernetes operation `{operation}` timed out")]
Timeout { operation: &'static str },
#[error("kubernetes backend error: {0}")]
Backend(String),
}