diff --git a/kube/src/config/utils.rs b/kube/src/config/utils.rs index 62bbde174..55565047b 100644 --- a/kube/src/config/utils.rs +++ b/kube/src/config/utils.rs @@ -12,13 +12,19 @@ pub fn default_kube_path() -> Option { } pub fn data_or_file_with_base64>(data: &Option, file: &Option

) -> Result> { - match (data, file) { + let mut blob = match (data, file) { (Some(d), _) => base64::decode(&d) .map_err(ConfigError::Base64Decode) .map_err(Error::Kubeconfig), (_, Some(f)) => read_file(f), _ => Err(ConfigError::NoBase64FileOrData.into()), + }?; + //Ensure there is a trailing newline in the blob + //Don't bother if the blob is empty + if blob.last().map(|end| *end != b'\n').unwrap_or(false) { + blob.push(b'\n'); } + Ok(blob) } pub fn read_file>(file: P) -> Result> { diff --git a/kube/src/service/auth/layer.rs b/kube/src/service/auth/layer.rs index b39a5cb21..e0fd8220b 100644 --- a/kube/src/service/auth/layer.rs +++ b/kube/src/service/auth/layer.rs @@ -3,7 +3,6 @@ use std::{ task::{Context, Poll}, }; - use futures::{ready, Future}; use http::{header::AUTHORIZATION, Request}; use hyper::Body; diff --git a/kube/src/service/mod.rs b/kube/src/service/mod.rs index 28aedea90..646b94c1a 100644 --- a/kube/src/service/mod.rs +++ b/kube/src/service/mod.rs @@ -11,13 +11,12 @@ use self::{log::LogRequest, url::set_cluster_url}; use auth::AuthLayer; #[cfg(feature = "gzip")] use compression::{accept_compressed, maybe_decompress}; use headers::set_default_headers; -use tls::HttpsConnector; - -use std::convert::{TryFrom, TryInto}; - use http::{HeaderValue, Request, Response}; use hyper::{Body, Client as HyperClient}; use hyper_timeout::TimeoutConnector; +use std::convert::{TryFrom, TryInto}; +use tls::HttpsConnector; + use tower::{buffer::Buffer, util::BoxService, BoxError, ServiceBuilder}; use crate::{error::ConfigError, Config, Error, Result};