Add better logging and update dependencies
This commit is contained in:
83
src/main.rs
83
src/main.rs
@ -3,6 +3,9 @@ use std::process::Command;
|
||||
|
||||
use tonic::{transport::Server, Request, Response, Status};
|
||||
|
||||
use log::{debug, error, info, trace, warn};
|
||||
use std::time::SystemTime;
|
||||
|
||||
pub mod csi {
|
||||
tonic::include_proto!("csi.v1");
|
||||
}
|
||||
@ -35,7 +38,7 @@ fn mount_volume(volume_id: String, target_path: String) -> Result<(), Status> {
|
||||
// Code 0 means success
|
||||
// Code 32 means already mounted
|
||||
if output.status.code() != Some(0) && output.status.code() != Some(32) {
|
||||
println!(
|
||||
error!(
|
||||
"Mount failed with code: {:?} {}",
|
||||
output.status.code(),
|
||||
String::from_utf8_lossy(&output.stderr)
|
||||
@ -62,7 +65,7 @@ fn unmount_volume(target_path: String) -> Result<(), Status> {
|
||||
// Code 0 means success
|
||||
// Code 32 means already unmounted
|
||||
if output.status.code() != Some(0) && output.status.code() != Some(32) {
|
||||
println!(
|
||||
error!(
|
||||
"Unmount failed with code: {:?} {}",
|
||||
output.status.code(),
|
||||
String::from_utf8_lossy(&output.stderr)
|
||||
@ -86,7 +89,7 @@ impl Node for GlusterNode {
|
||||
&self,
|
||||
request: Request<csi::NodeGetInfoRequest>,
|
||||
) -> Result<Response<csi::NodeGetInfoResponse>, Status> {
|
||||
println!("Got a request: {:?}", request);
|
||||
debug!("Got a request: {:?}", request);
|
||||
|
||||
// Get hostname of system
|
||||
let hostname = hostname::get().unwrap().into_string().unwrap();
|
||||
@ -103,7 +106,7 @@ impl Node for GlusterNode {
|
||||
&self,
|
||||
request: Request<csi::NodeGetCapabilitiesRequest>,
|
||||
) -> Result<Response<csi::NodeGetCapabilitiesResponse>, Status> {
|
||||
println!("Got a request: {:?}", request);
|
||||
debug!("Got a request: {:?}", request);
|
||||
|
||||
let reply = csi::NodeGetCapabilitiesResponse {
|
||||
capabilities: vec![csi::NodeServiceCapability {
|
||||
@ -121,7 +124,7 @@ impl Node for GlusterNode {
|
||||
&self,
|
||||
request: Request<csi::NodePublishVolumeRequest>,
|
||||
) -> Result<Response<csi::NodePublishVolumeResponse>, Status> {
|
||||
println!("Got a request: {:?}", request);
|
||||
debug!("Got a request: {:?}", request);
|
||||
|
||||
let volume_id = request.get_ref().volume_id.clone();
|
||||
let target_path = request.get_ref().target_path.clone();
|
||||
@ -137,7 +140,7 @@ impl Node for GlusterNode {
|
||||
&self,
|
||||
request: Request<csi::NodeUnpublishVolumeRequest>,
|
||||
) -> Result<Response<csi::NodeUnpublishVolumeResponse>, Status> {
|
||||
println!("Got a request: {:?}", request);
|
||||
debug!("Got a request: {:?}", request);
|
||||
|
||||
let target_path = request.get_ref().target_path.clone();
|
||||
|
||||
@ -152,7 +155,7 @@ impl Node for GlusterNode {
|
||||
&self,
|
||||
request: Request<csi::NodeStageVolumeRequest>,
|
||||
) -> Result<Response<csi::NodeStageVolumeResponse>, Status> {
|
||||
println!("Got a request: {:?}", request);
|
||||
debug!("Got a request: {:?}", request);
|
||||
|
||||
let volume_id = request.get_ref().volume_id.clone();
|
||||
let target_path = request.get_ref().staging_target_path.clone();
|
||||
@ -168,7 +171,7 @@ impl Node for GlusterNode {
|
||||
&self,
|
||||
request: Request<csi::NodeUnstageVolumeRequest>,
|
||||
) -> Result<Response<csi::NodeUnstageVolumeResponse>, Status> {
|
||||
println!("Got a request: {:?}", request);
|
||||
debug!("Got a request: {:?}", request);
|
||||
|
||||
let target_path = request.get_ref().staging_target_path.clone();
|
||||
|
||||
@ -183,7 +186,7 @@ impl Node for GlusterNode {
|
||||
&self,
|
||||
request: Request<csi::NodeExpandVolumeRequest>,
|
||||
) -> Result<Response<csi::NodeExpandVolumeResponse>, Status> {
|
||||
println!("Got a request: {:?}", request);
|
||||
debug!("Got a request: {:?}", request);
|
||||
|
||||
Err(Status::unimplemented("Not implemented"))
|
||||
}
|
||||
@ -192,7 +195,7 @@ impl Node for GlusterNode {
|
||||
&self,
|
||||
request: Request<csi::NodeGetVolumeStatsRequest>,
|
||||
) -> Result<Response<csi::NodeGetVolumeStatsResponse>, Status> {
|
||||
println!("Got a request: {:?}", request);
|
||||
debug!("Got a request: {:?}", request);
|
||||
|
||||
Err(Status::unimplemented("Not implemented"))
|
||||
}
|
||||
@ -207,7 +210,7 @@ impl Controller for GlusterController {
|
||||
&self,
|
||||
request: Request<csi::ControllerGetCapabilitiesRequest>,
|
||||
) -> Result<Response<csi::ControllerGetCapabilitiesResponse>, Status> {
|
||||
println!("Got a request: {:?}", request);
|
||||
debug!("Got a request: {:?}", request);
|
||||
|
||||
// Return CREATE_DELETE_VOLUME capability
|
||||
let reply = csi::ControllerGetCapabilitiesResponse {
|
||||
@ -228,7 +231,7 @@ impl Controller for GlusterController {
|
||||
&self,
|
||||
request: Request<csi::CreateVolumeRequest>,
|
||||
) -> Result<Response<csi::CreateVolumeResponse>, Status> {
|
||||
println!("Got a request: {:?}", request);
|
||||
debug!("Got a request: {:?}", request);
|
||||
|
||||
let name = request.into_inner().name;
|
||||
|
||||
@ -250,7 +253,7 @@ impl Controller for GlusterController {
|
||||
&self,
|
||||
request: Request<csi::DeleteVolumeRequest>,
|
||||
) -> Result<Response<csi::DeleteVolumeResponse>, Status> {
|
||||
println!("Got a request: {:?}", request);
|
||||
debug!("Got a request: {:?}", request);
|
||||
|
||||
// let name = request.into_inner().volume_id;
|
||||
|
||||
@ -264,7 +267,7 @@ impl Controller for GlusterController {
|
||||
&self,
|
||||
request: Request<csi::ControllerPublishVolumeRequest>,
|
||||
) -> Result<Response<csi::ControllerPublishVolumeResponse>, Status> {
|
||||
println!("Got a request: {:?}", request);
|
||||
debug!("Got a request: {:?}", request);
|
||||
|
||||
Err(Status::unimplemented("not implemented"))
|
||||
}
|
||||
@ -273,7 +276,7 @@ impl Controller for GlusterController {
|
||||
&self,
|
||||
request: Request<csi::ControllerUnpublishVolumeRequest>,
|
||||
) -> Result<Response<csi::ControllerUnpublishVolumeResponse>, Status> {
|
||||
println!("Got a request: {:?}", request);
|
||||
debug!("Got a request: {:?}", request);
|
||||
|
||||
Err(Status::unimplemented("not implemented"))
|
||||
}
|
||||
@ -282,7 +285,7 @@ impl Controller for GlusterController {
|
||||
&self,
|
||||
request: Request<csi::ValidateVolumeCapabilitiesRequest>,
|
||||
) -> Result<Response<csi::ValidateVolumeCapabilitiesResponse>, Status> {
|
||||
println!("Got a request: {:?}", request);
|
||||
debug!("Got a request: {:?}", request);
|
||||
|
||||
Err(Status::unimplemented("not implemented"))
|
||||
}
|
||||
@ -291,7 +294,7 @@ impl Controller for GlusterController {
|
||||
&self,
|
||||
request: Request<csi::ListVolumesRequest>,
|
||||
) -> Result<Response<csi::ListVolumesResponse>, Status> {
|
||||
println!("Got a request: {:?}", request);
|
||||
debug!("Got a request: {:?}", request);
|
||||
|
||||
Err(Status::unimplemented("not implemented"))
|
||||
}
|
||||
@ -300,7 +303,7 @@ impl Controller for GlusterController {
|
||||
&self,
|
||||
request: Request<csi::GetCapacityRequest>,
|
||||
) -> Result<Response<csi::GetCapacityResponse>, Status> {
|
||||
println!("Got a request: {:?}", request);
|
||||
debug!("Got a request: {:?}", request);
|
||||
|
||||
Err(Status::unimplemented("not implemented"))
|
||||
}
|
||||
@ -309,7 +312,7 @@ impl Controller for GlusterController {
|
||||
&self,
|
||||
request: Request<csi::ControllerGetVolumeRequest>,
|
||||
) -> Result<Response<csi::ControllerGetVolumeResponse>, Status> {
|
||||
println!("Got a request: {:?}", request);
|
||||
debug!("Got a request: {:?}", request);
|
||||
|
||||
Err(Status::unimplemented("not implemented"))
|
||||
}
|
||||
@ -318,7 +321,7 @@ impl Controller for GlusterController {
|
||||
&self,
|
||||
request: Request<csi::CreateSnapshotRequest>,
|
||||
) -> Result<Response<csi::CreateSnapshotResponse>, Status> {
|
||||
println!("Got a request: {:?}", request);
|
||||
debug!("Got a request: {:?}", request);
|
||||
|
||||
Err(Status::unimplemented("not implemented"))
|
||||
}
|
||||
@ -327,7 +330,7 @@ impl Controller for GlusterController {
|
||||
&self,
|
||||
request: Request<csi::DeleteSnapshotRequest>,
|
||||
) -> Result<Response<csi::DeleteSnapshotResponse>, Status> {
|
||||
println!("Got a request: {:?}", request);
|
||||
debug!("Got a request: {:?}", request);
|
||||
|
||||
Err(Status::unimplemented("not implemented"))
|
||||
}
|
||||
@ -336,7 +339,7 @@ impl Controller for GlusterController {
|
||||
&self,
|
||||
request: Request<csi::ListSnapshotsRequest>,
|
||||
) -> Result<Response<csi::ListSnapshotsResponse>, Status> {
|
||||
println!("Got a request: {:?}", request);
|
||||
debug!("Got a request: {:?}", request);
|
||||
|
||||
Err(Status::unimplemented("not implemented"))
|
||||
}
|
||||
@ -345,7 +348,7 @@ impl Controller for GlusterController {
|
||||
&self,
|
||||
request: Request<csi::ControllerExpandVolumeRequest>,
|
||||
) -> Result<Response<csi::ControllerExpandVolumeResponse>, Status> {
|
||||
println!("Got a request: {:?}", request);
|
||||
debug!("Got a request: {:?}", request);
|
||||
|
||||
Err(Status::unimplemented("not implemented"))
|
||||
}
|
||||
@ -360,11 +363,11 @@ impl Identity for GlusterIdentity {
|
||||
&self,
|
||||
request: Request<csi::GetPluginInfoRequest>,
|
||||
) -> Result<Response<csi::GetPluginInfoResponse>, Status> {
|
||||
println!("Got a request: {:?}", request);
|
||||
debug!("Got a request: {:?}", request);
|
||||
|
||||
let reply = csi::GetPluginInfoResponse {
|
||||
name: "glusterf-dir-csi".to_string(),
|
||||
vendor_version: "0.1.0".to_string(),
|
||||
vendor_version: env!("CARGO_PKG_VERSION").to_string(),
|
||||
..Default::default()
|
||||
};
|
||||
|
||||
@ -375,7 +378,7 @@ impl Identity for GlusterIdentity {
|
||||
&self,
|
||||
request: Request<csi::GetPluginCapabilitiesRequest>,
|
||||
) -> Result<Response<csi::GetPluginCapabilitiesResponse>, Status> {
|
||||
println!("Got a request: {:?}", request);
|
||||
debug!("Got a request: {:?}", request);
|
||||
|
||||
let reply = csi::GetPluginCapabilitiesResponse {
|
||||
capabilities: vec![csi::PluginCapability {
|
||||
@ -394,7 +397,7 @@ impl Identity for GlusterIdentity {
|
||||
&self,
|
||||
request: Request<csi::ProbeRequest>,
|
||||
) -> Result<Response<csi::ProbeResponse>, Status> {
|
||||
println!("Got a request: {:?}", request);
|
||||
debug!("Got a request: {:?}", request);
|
||||
|
||||
let reply = csi::ProbeResponse { ready: Some(true) };
|
||||
|
||||
@ -402,8 +405,27 @@ impl Identity for GlusterIdentity {
|
||||
}
|
||||
}
|
||||
|
||||
fn setup_logger() -> Result<(), fern::InitError> {
|
||||
fern::Dispatch::new()
|
||||
.format(|out, message, record| {
|
||||
out.finish(format_args!(
|
||||
"[{} {} {}] {}",
|
||||
humantime::format_rfc3339_seconds(SystemTime::now()),
|
||||
record.level(),
|
||||
record.target(),
|
||||
message
|
||||
))
|
||||
})
|
||||
.level(log::LevelFilter::Debug)
|
||||
.chain(std::io::stdout())
|
||||
.apply()?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
setup_logger()?;
|
||||
|
||||
std::fs::create_dir_all("/mnt/main")?;
|
||||
// Mount glusterfs main
|
||||
let res = Command::new("mount")
|
||||
@ -419,9 +441,9 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
.expect("failed to mount glusterfs");
|
||||
|
||||
if res.status.success() {
|
||||
println!("Glusterfs mounted");
|
||||
info!("Glusterfs mounted");
|
||||
} else {
|
||||
println!(
|
||||
error!(
|
||||
"Glusterfs mount failed: {}",
|
||||
String::from_utf8_lossy(&res.stderr)
|
||||
);
|
||||
@ -432,13 +454,14 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let controller = GlusterController::default();
|
||||
let node = GlusterNode::default();
|
||||
|
||||
println!("Starting server...");
|
||||
info!("Starting server...");
|
||||
let csi_sock_base = std::env::var("CSI_PATH")
|
||||
.or_else(|_| Ok::<String, Error>("/csi/".to_owned()))
|
||||
.unwrap();
|
||||
|
||||
std::fs::create_dir_all(&csi_sock_base)?;
|
||||
let csi_sock: String = csi_sock_base + "csi.sock";
|
||||
info!("Listening on {},", csi_sock);
|
||||
|
||||
let uds = UnixListener::bind(csi_sock)?;
|
||||
let uds_stream = UnixListenerStream::new(uds);
|
||||
|
Reference in New Issue
Block a user