1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
//! Errors for this module.
#[cfg(feature = "ssl")]
use std::path::PathBuf;
/// The type of error embedded in an Error.
#[derive(Debug, thiserror::Error)]
pub enum Error {
/// Error emitted during client instantiation when the `DOCKER_CERT_PATH` environment variable
/// is invalid.
#[cfg(feature = "ssl")]
#[error("Could not find home directory")]
NoHomePathError,
/// Generic error when reading a certificate from the filesystem
#[cfg(feature = "ssl")]
#[error("Cannot open/read certificate with path: {path}")]
CertPathError {
/// Path for the failing certificate file
path: PathBuf,
},
/// Error emitted when multiple keys are found in a certificate file
#[cfg(feature = "ssl")]
#[error("Found multiple keys ({count}), expected one: {path}")]
CertMultipleKeys {
/// Number of keys found in the certificate file
count: usize,
/// Path for the failing certificate file
path: PathBuf,
},
/// Parse error for RSA encrypted keys
#[cfg(feature = "ssl")]
#[error("Could not parse key: {path}")]
CertParseError {
/// Path for the failing certificate file
path: PathBuf,
},
/// Error emitted when the client is unable to load native certs for SSL
#[cfg(feature = "ssl")]
#[error("Could not load native certs")]
NoNativeCertsError {
/// The original error emitted.
err: webpki::Error,
},
/// Generic error emitted by the docker server.
#[error("Docker responded with status code {status_code}: {message}")]
DockerResponseServerError {
/// Status code returned by the docker server.
status_code: u16,
/// Message returned by the docker server.
message: String,
},
/// Error facilitating debugging failed JSON parsing.
#[error("Failed to deserialize JSON: {message}")]
JsonDataError {
/// Short section of the json close to the error.
message: String,
/// Entire JSON payload. This field is toggled with the **json_data_content** feature cargo flag.
#[cfg(feature = "json_data_content")]
contents: String,
/// Character sequence at error location.
column: usize,
},
/// Error emitted when the docker is requested to build with buildkit without a session id
#[error("Failed to parse API version: {api_version}")]
APIVersionParseError {
/// The api version returned by the server.
api_version: String,
},
/// Error emitted when a request times out.
#[error("Timeout error")]
RequestTimeoutError,
/// Error emitted mid-stream as part of a successful docker operation
#[error("Docker stream error")]
DockerStreamError {
/// error string emitted by the Stream
error: String,
},
/// Error emitted as part of a container wait response
#[error("Docker container wait error")]
DockerContainerWaitError {
/// error string returned from container wait call
error: String,
/// error code returned from container wait call
code: i64,
},
/// Error emitted when a session is not provided to the buildkit engine
#[error("Buildkit requires a unique session")]
MissingSessionBuildkitError {},
/// Error emitted when JSON fails to serialize.
#[error(transparent)]
JsonSerdeError {
/// The original error emitted by serde.
#[from]
err: serde_json::Error,
},
/// Error emitted when log output generates an I/O error.
#[error(transparent)]
StrParseError {
/// The original error emitted.
#[from]
err: std::str::Utf8Error,
},
/// Error emitted from an I/O error.
#[error(transparent)]
IOError {
/// The original error emitted.
#[from]
err: std::io::Error,
},
/// Error emitted from a formatting error.
#[error(transparent)]
StrFmtError {
/// The original error emitted.
#[from]
err: std::fmt::Error,
},
/// Error emitted from an HTTP error.
#[error(transparent)]
HttpClientError {
/// The original error emitted.
#[from]
err: http::Error,
},
/// Error emitted from an HTTP error.
#[error(transparent)]
HyperResponseError {
/// The original error emitted.
#[from]
err: hyper::Error,
},
/// Error emitted when serde fails to urlencod a struct of options
#[error(transparent)]
URLEncodedError {
/// The original error emitted.
#[from]
err: serde_urlencoded::ser::Error,
},
#[cfg(feature = "buildkit")]
/// Error emitted when a GRPC network request or response fails with docker's buildkit client
#[error(transparent)]
TonicError {
/// The tonic error emitted.
#[from]
err: tonic::transport::Error,
},
}