Compare commits
2 Commits
smart
...
ci_build_i
Author | SHA1 | Date | |
---|---|---|---|
c7b748f34a | |||
f60033e02c |
@ -18,13 +18,14 @@ rust-latest:
|
||||
stage: build_backend
|
||||
image: rust:latest
|
||||
script:
|
||||
- mkdir ./lib/webroot
|
||||
- cp -r ./app/build/web/* ./lib/webroot
|
||||
- cargo build -r --manifest-path=lib/Cargo.toml --features static
|
||||
- mv ./lib/target/release/raid_manager ./lib/target/release/raid_manager_static
|
||||
- cargo build -r --manifest-path=lib/Cargo.toml
|
||||
- cargo test -r --manifest-path=lib/Cargo.toml
|
||||
- cp ./lib/target/release/raid_manager* .
|
||||
- cd lib
|
||||
- mkdir ./webroot
|
||||
- cp -r ../app/build/web/* ./webroot
|
||||
- cargo build -r --features static
|
||||
- mv ./target/release/raid_manager ./target/release/raid_manager_static
|
||||
- cargo build -r
|
||||
- cargo test -r
|
||||
- cp ./target/release/raid_manager* ..
|
||||
artifacts:
|
||||
expire_in: 2 days
|
||||
paths:
|
||||
|
@ -1,7 +1,7 @@
|
||||
use std::io::Cursor;
|
||||
use rust_embed::{EmbeddedFile, RustEmbed};
|
||||
use rust_embed::RustEmbed;
|
||||
use rocket::{Data, Request, Response, Route};
|
||||
use rocket::http::{ContentType, Method, Status};
|
||||
use rocket::http::{ContentType, Method};
|
||||
use rocket::http::uri::{Segments};
|
||||
use rocket::http::uri::fmt::Path;
|
||||
use rocket::route::{Handler, Outcome};
|
||||
@ -13,7 +13,8 @@ struct Asset;
|
||||
|
||||
#[cfg(feature = "static")]
|
||||
#[derive(Clone)]
|
||||
pub struct CustomHandler {}
|
||||
pub struct CustomHandler {
|
||||
}
|
||||
|
||||
#[cfg(feature = "static")]
|
||||
impl Into<Vec<Route>> for CustomHandler {
|
||||
@ -37,12 +38,8 @@ impl Handler for CustomHandler {
|
||||
path
|
||||
};
|
||||
|
||||
let file_content = <Asset as RustEmbed>::get(path.to_string_lossy().as_ref());
|
||||
let file_content = match file_content {
|
||||
None => return Outcome::Failure(Status::NotFound),
|
||||
Some(c) => c
|
||||
};
|
||||
|
||||
let file_content =
|
||||
<Asset as RustEmbed>::get(path.to_string_lossy().as_ref()).unwrap();
|
||||
let content_type: ContentType = path
|
||||
.extension()
|
||||
.map(|x| x.to_string_lossy())
|
||||
|
@ -7,6 +7,7 @@ mod embed;
|
||||
|
||||
use rocket::error::ErrorKind;
|
||||
use rocket::serde::json::Json;
|
||||
use rocket::config::{Config};
|
||||
#[cfg(feature = "static")]
|
||||
use crate::embed::CustomHandler;
|
||||
use crate::parser::lsblk_parser::{Disk, parse_lsblk};
|
||||
@ -26,7 +27,11 @@ fn get_disks() -> Json<Vec<Disk>> {
|
||||
async fn main() -> Result<(), rocket::Error> {
|
||||
println!("init server");
|
||||
println!("access at: http://127.0.0.1:8000/");
|
||||
let b = rocket::build();
|
||||
|
||||
let mut cfg = Config::default();
|
||||
cfg.address = "0.0.0.0".parse().unwrap();
|
||||
|
||||
let b = rocket::custom(cfg);
|
||||
let b = b.mount("/api", routes![get_raid_devices, get_disks]);
|
||||
#[cfg(feature = "static")]
|
||||
let b = b.mount("/", CustomHandler{});
|
||||
|
@ -1,3 +1,2 @@
|
||||
pub mod mdstat_parser;
|
||||
pub mod lsblk_parser;
|
||||
mod smart_parser;
|
||||
|
@ -1,39 +0,0 @@
|
||||
use std::process::Command;
|
||||
use rocket::serde::json::serde_json;
|
||||
|
||||
use rocket::serde::{Deserialize};
|
||||
|
||||
#[derive(Deserialize)]
|
||||
#[serde(crate = "rocket::serde")]
|
||||
struct DiskInfo {
|
||||
model_family: String,
|
||||
model_name: String,
|
||||
serial_number: String,
|
||||
rotation_rate: u32,
|
||||
}
|
||||
|
||||
fn get_disk_info(diskpath: &str) -> Option<DiskInfo> {
|
||||
let mut cmd = Command::new("smartctl");
|
||||
cmd.arg("-i")
|
||||
.arg("-json")
|
||||
.arg(diskpath);
|
||||
let output = match cmd.output() {
|
||||
Ok(output) => output,
|
||||
Err(err) => {
|
||||
println!("error while getting smart info: {}", err);
|
||||
return None;
|
||||
}
|
||||
};
|
||||
|
||||
let rawsmart = output.stdout;
|
||||
|
||||
let info: DiskInfo = match serde_json::from_slice(&rawsmart) {
|
||||
Ok(info) => info,
|
||||
Err(err) => {
|
||||
println!("{}", err);
|
||||
return None;
|
||||
}
|
||||
};
|
||||
|
||||
Some(info)
|
||||
}
|
Reference in New Issue
Block a user