1use k8s_openapi::RequestError;
2
3#[derive(Debug)]
4pub enum KubernetesError {
5 RequestError,
6 IoError { source: std::io::Error },
7 ClientBuildError,
8 HttpClientBuildError { message: String },
9 HttpClientRequestError,
10 HttpClientParseResponseError { message: String },
11 ApiRequestError { source: RequestError },
12 Base64DecodeError { source: base64::DecodeError },
13 InvalidDataError,
14 ConfigLoadError,
15 WrongDatetimeFormat { source: chrono::ParseError },
16}
17
18impl std::error::Error for KubernetesError {}
19
20impl std::fmt::Display for KubernetesError {
21 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
22 match self {
23 KubernetesError::RequestError => write!(f, "Request Error (k8s_openapi)"),
24 KubernetesError::IoError { source } => {
25 write!(f, "Couldn't read file (io::Error). Source: {}", source)
26 }
27 KubernetesError::ClientBuildError => write!(f, "Couldn't build client (isahc)"),
28 KubernetesError::HttpClientBuildError { message } => {
29 write!(f, "Couldn't build http client (isahc): {}", message)
30 }
31 KubernetesError::HttpClientRequestError => {
32 write!(f, "Couldn't build http client (isahc)")
33 }
34 KubernetesError::HttpClientParseResponseError { message } => {
35 write!(f, "Couldn't parse response from HTTP server: {}", message)
36 }
37 KubernetesError::Base64DecodeError { source } => {
38 write!(f, "Couldn't decode base 64. Source: {}", source)
39 }
40 KubernetesError::InvalidDataError => write!(f, "Invalid data provided."),
41 KubernetesError::ConfigLoadError => write!(f, "Could not load Kube Config."),
42 KubernetesError::ApiRequestError { source } => {
43 write!(f, "API returned error: {}.", source)
44 }
45 KubernetesError::WrongDatetimeFormat { source } => {
46 write!(f, "Couldn't parse date time input : {}", source)
47 }
48 }
49 }
50}