acme: improve errors when account loading fails
if the account does not exist, error with its name if file loading fails, the error includes the full path if the content fails to parse, show file & parse error and in each case mention that it's about loading the acme account file Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
This commit is contained in:
parent
440472cb32
commit
126ccbcfa6
|
@ -4,7 +4,7 @@ use std::fs::OpenOptions;
|
||||||
use std::io;
|
use std::io;
|
||||||
use std::os::unix::fs::OpenOptionsExt;
|
use std::os::unix::fs::OpenOptionsExt;
|
||||||
|
|
||||||
use anyhow::format_err;
|
use anyhow::{bail, format_err};
|
||||||
use bytes::Bytes;
|
use bytes::Bytes;
|
||||||
use hyper::{Body, Request};
|
use hyper::{Body, Request};
|
||||||
use nix::sys::stat::Mode;
|
use nix::sys::stat::Mode;
|
||||||
|
@ -78,13 +78,25 @@ impl AcmeClient {
|
||||||
|
|
||||||
/// Load an existing ACME account by name.
|
/// Load an existing ACME account by name.
|
||||||
pub async fn load(account_name: &AcmeAccountName) -> Result<Self, anyhow::Error> {
|
pub async fn load(account_name: &AcmeAccountName) -> Result<Self, anyhow::Error> {
|
||||||
Self::load_path(account_path(account_name.as_ref())).await
|
let account_path = account_path(account_name.as_ref());
|
||||||
}
|
let data = match tokio::fs::read(&account_path).await {
|
||||||
|
Ok(data) => data,
|
||||||
/// Load an existing ACME account by path.
|
Err(err) if err.kind() == io::ErrorKind::NotFound => {
|
||||||
async fn load_path(account_path: String) -> Result<Self, anyhow::Error> {
|
bail!("acme account '{}' does not exist", account_name)
|
||||||
let data = tokio::fs::read(&account_path).await?;
|
}
|
||||||
let data: AccountData = serde_json::from_slice(&data)?;
|
Err(err) => bail!(
|
||||||
|
"failed to load acme account from '{}' - {}",
|
||||||
|
account_path,
|
||||||
|
err
|
||||||
|
),
|
||||||
|
};
|
||||||
|
let data: AccountData = serde_json::from_slice(&data).map_err(|err| {
|
||||||
|
format_err!(
|
||||||
|
"failed to parse acme account from '{}' - {}",
|
||||||
|
account_path,
|
||||||
|
err
|
||||||
|
)
|
||||||
|
})?;
|
||||||
|
|
||||||
let account = Account::from_parts(data.location, data.key, data.account);
|
let account = Account::from_parts(data.location, data.key, data.account);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue