cleanup + added test script to demonstrate functioality + removed uncessary ping module
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
use crate::hetzner_api::{HetznerClient, WrappedServer};
|
||||
use std::net::IpAddr;
|
||||
use std::sync::mpsc::{Receiver, Sender};
|
||||
use tokio::runtime::Builder;
|
||||
|
||||
|
@@ -2,7 +2,6 @@ mod error;
|
||||
mod hetzner_api;
|
||||
mod rhai_api;
|
||||
mod async_handler;
|
||||
mod ping;
|
||||
|
||||
use crate::rhai_api::register_hetzner_api;
|
||||
use rhai::{Engine, Scope};
|
||||
|
129
src/rhai_api.rs
129
src/rhai_api.rs
@@ -41,38 +41,35 @@ pub fn register_hetzner_api(
|
||||
return Err("HETZNER_API_TOKEN cannot be empty.".into());
|
||||
}
|
||||
Ok(HetznerClient::new(api_token))
|
||||
})
|
||||
.register_fn("list_servers", {
|
||||
let bridge = api_bridge.clone();
|
||||
move |client: &mut HetznerClient| {
|
||||
bridge.call(Request::ListServers(client.clone()), |response| match response {
|
||||
Response::ListServers(result) => result.map_err(|e| e.into()),
|
||||
_ => Err("Unexpected response".into()),
|
||||
})
|
||||
}
|
||||
})
|
||||
.register_fn("get_server_status", {
|
||||
let bridge = api_bridge.clone();
|
||||
move |client: &mut HetznerClient, server_id: i64| {
|
||||
bridge.call(Request::GetServerStatus(client.clone(), server_id), |response| match response {
|
||||
Response::GetServerStatus(result) => result.map_err(|e| e.into()),
|
||||
_ => Err("Unexpected response".into()),
|
||||
})
|
||||
}
|
||||
})
|
||||
.register_fn("get_server", {
|
||||
let bridge = api_bridge.clone();
|
||||
move |client: &mut HetznerClient, server_id: i64| {
|
||||
bridge.call(Request::GetServer(client.clone(), server_id), |response| match response {
|
||||
Response::GetServer(result) => result.map_err(|e| e.into()),
|
||||
_ => Err("Unexpected response".into()),
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
let bridge = api_bridge.clone();
|
||||
engine.register_fn("list_servers", move |client: &mut HetznerClient| {
|
||||
bridge.call(Request::ListServers(client.clone()), |response| {
|
||||
match response {
|
||||
Response::ListServers(result) => result.map_err(|e| e.into()),
|
||||
_ => Err("Unexpected response".into()),
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
let bridge = api_bridge.clone();
|
||||
engine.register_fn("get_server_status", move |client: &mut HetznerClient, server_id: i64| {
|
||||
bridge.call(Request::GetServerStatus(client.clone(), server_id), |response| {
|
||||
match response {
|
||||
Response::GetServerStatus(result) => result.map_err(|e| e.into()),
|
||||
_ => Err("Unexpected response".into()),
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
let bridge = api_bridge.clone();
|
||||
engine.register_fn("get_server", move |client: &mut HetznerClient, server_id: i64| {
|
||||
bridge.call(Request::GetServer(client.clone(), server_id), |response| {
|
||||
match response {
|
||||
Response::GetServer(result) => result.map_err(|e| e.into()),
|
||||
_ => Err("Unexpected response".into()),
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
engine
|
||||
.register_type_with_name::<WrappedServer>("Server")
|
||||
.register_get("id", |server: &mut WrappedServer| server.0.id)
|
||||
@@ -86,46 +83,52 @@ pub fn register_hetzner_api(
|
||||
.register_get("outgoing_traffic", |server: &mut WrappedServer| server.0.outgoing_traffic.unwrap_or(0))
|
||||
.register_get("primary_disk_size", |server: &mut WrappedServer| server.0.primary_disk_size)
|
||||
.register_get("rescue_enabled", |server: &mut WrappedServer| server.0.rescue_enabled);
|
||||
|
||||
let bridge = api_bridge.clone();
|
||||
engine.register_fn("reboot", move |server: &mut WrappedServer, client: HetznerClient| {
|
||||
bridge.call(Request::RebootServer(client, server.0.id), |response| {
|
||||
match response {
|
||||
Response::RebootServer(result) => result.map_err(|e| e.into()),
|
||||
_ => Err("Unexpected response".into()),
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
let bridge = api_bridge.clone();
|
||||
engine.register_fn("reset", move |server: &mut WrappedServer, client: HetznerClient| {
|
||||
bridge.call(Request::ResetServer(client, server.0.id), |response| {
|
||||
match response {
|
||||
Response::ResetServer(result) => result.map_err(|e| e.into()),
|
||||
_ => Err("Unexpected response".into()),
|
||||
engine
|
||||
.register_fn("reboot", {
|
||||
let bridge = api_bridge.clone();
|
||||
move |client: &mut HetznerClient, server_id: i64| {
|
||||
bridge.call(Request::RebootServer(client.clone(), server_id), |response| {
|
||||
match response {
|
||||
Response::RebootServer(result) => result.map_err(|e| e.into()),
|
||||
_ => Err("Unexpected response".into()),
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
let bridge = api_bridge.clone();
|
||||
engine.register_fn("enable_rescue_mode", move |server: &mut WrappedServer, client: HetznerClient| {
|
||||
bridge.call(Request::EnableRescueMode(client, server.0.id), |response| {
|
||||
match response {
|
||||
Response::EnableRescueMode(result) => result.map_err(|e| e.into()),
|
||||
_ => Err("Unexpected response".into()),
|
||||
.register_fn("reset", {
|
||||
let bridge = api_bridge.clone();
|
||||
move |client: &mut HetznerClient, server_id: i64| {
|
||||
bridge.call(Request::ResetServer(client.clone(), server_id), |response| {
|
||||
match response {
|
||||
Response::ResetServer(result) => result.map_err(|e| e.into()),
|
||||
_ => Err("Unexpected response".into()),
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
let bridge = api_bridge.clone();
|
||||
engine.register_fn("disable_rescue_mode", move |server: &mut WrappedServer, client: HetznerClient| {
|
||||
bridge.call(Request::DisableRescueMode(client, server.0.id), |response| {
|
||||
match response {
|
||||
Response::DisableRescueMode(result) => result.map_err(|e| e.into()),
|
||||
_ => Err("Unexpected response".into()),
|
||||
.register_fn("enable_rescue_mode", {
|
||||
let bridge = api_bridge.clone();
|
||||
move |client: &mut HetznerClient, server_id: i64| {
|
||||
bridge.call(Request::EnableRescueMode(client.clone(), server_id), |response| {
|
||||
match response {
|
||||
Response::EnableRescueMode(result) => result.map_err(|e| e.into()),
|
||||
_ => Err("Unexpected response".into()),
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
});
|
||||
.register_fn("disable_rescue_mode", {
|
||||
let bridge = api_bridge.clone();
|
||||
move |client: &mut HetznerClient, server_id: i64| {
|
||||
bridge.call(Request::DisableRescueMode(client.clone(), server_id), |response| {
|
||||
match response {
|
||||
Response::DisableRescueMode(result) => result.map_err(|e| e.into()),
|
||||
_ => Err("Unexpected response".into()),
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
engine
|
||||
.register_iterator::<Vec<WrappedServer>>()
|
||||
|
Reference in New Issue
Block a user