lunatic_control/
api.rs

1use std::{collections::HashMap, net::SocketAddr};
2
3use serde::{Deserialize, Serialize};
4
5use crate::NodeInfo;
6
7#[derive(Clone, Debug, Serialize, Deserialize)]
8pub struct Register {
9    pub node_name: uuid::Uuid,
10    pub csr_pem: String,
11}
12
13#[derive(Clone, Debug, Serialize, Deserialize)]
14pub struct Registration {
15    pub node_name: uuid::Uuid,
16    pub cert_pem_chain: Vec<String>,
17    pub authentication_token: String,
18    pub root_cert: String,
19    pub urls: ControlUrls,
20}
21
22#[derive(Clone, Debug, Serialize, Deserialize)]
23pub struct ControlUrls {
24    pub api_base: String,
25    pub nodes: String,
26    pub node_started: String,
27    pub node_stopped: String,
28    pub get_module: String,
29    pub add_module: String,
30    pub get_nodes: String,
31}
32
33#[derive(Clone, Debug, Serialize, Deserialize)]
34pub struct NodeStart {
35    pub node_address: SocketAddr,
36    pub attributes: HashMap<String, String>,
37}
38
39#[derive(Clone, Debug, Serialize, Deserialize)]
40pub struct NodeStarted {
41    // TODO u64 ids should be JSON string but parsed into u64?
42    pub node_id: i64,
43}
44
45#[derive(Clone, Debug, Serialize, Deserialize)]
46pub struct NodesList {
47    pub nodes: Vec<NodeInfo>,
48}
49
50#[derive(Clone, Debug, Serialize, Deserialize)]
51pub struct ModuleBytes {
52    pub bytes: Vec<u8>,
53}
54
55#[derive(Clone, Debug, Serialize, Deserialize)]
56pub struct AddModule {
57    pub bytes: Vec<u8>,
58}
59
60#[derive(Clone, Debug, Serialize, Deserialize)]
61pub struct ModuleId {
62    pub module_id: u64,
63}