lmrc-cli 0.3.16

CLI tool for scaffolding LMRC Stack infrastructure projects
Documentation
//! Hetzner resource models for API responses

use serde::{Deserialize, Serialize};
use chrono::{DateTime, Utc};

#[derive(Debug, Serialize, Deserialize)]
pub struct ServerResponse {
    pub id: u64,
    pub name: String,
    pub status: String,
    pub server_type: String,
    pub public_ip: Option<String>,
    pub private_ip: Option<String>,
    pub created_at: DateTime<Utc>,
    pub datacenter: String,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct ServersListResponse {
    pub servers: Vec<ServerResponse>,
    pub total: usize,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct NetworkResponse {
    pub id: u64,
    pub name: String,
    pub ip_range: String,
    pub servers: Vec<u64>,
    pub subnets: Vec<SubnetResponse>,
    pub created_at: DateTime<Utc>,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct SubnetResponse {
    pub ip_range: String,
    pub network_zone: String,
    pub gateway: String,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct NetworksListResponse {
    pub networks: Vec<NetworkResponse>,
    pub total: usize,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct LoadBalancerResponse {
    pub id: u64,
    pub name: String,
    pub public_ip: String,
    pub algorithm: String,
    pub targets: Vec<LoadBalancerTargetResponse>,
    pub health_status: String,
    pub created_at: DateTime<Utc>,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct LoadBalancerTargetResponse {
    pub server_id: u64,
    pub server_name: String,
    pub health_status: String,
    pub use_private_ip: bool,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct LoadBalancersListResponse {
    pub load_balancers: Vec<LoadBalancerResponse>,
    pub total: usize,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct FirewallResponse {
    pub id: u64,
    pub name: String,
    pub rules_count: usize,
    pub applied_to: Vec<FirewallApplicationResponse>,
    pub created_at: DateTime<Utc>,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct FirewallApplicationResponse {
    pub server_id: Option<u64>,
    pub server_name: Option<String>,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct FirewallsListResponse {
    pub firewalls: Vec<FirewallResponse>,
    pub total: usize,
}