use crate::ic::{IcDashboardReportProvenance, IcNodeStatusCounts};
use serde::Serialize;
#[cfg(feature = "dashboard-host")]
use crate::ic::IcSourceRequest;
pub type CloudEngineNodeRow = crate::ic::IcNodeStatusRow;
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct CloudEngineNodeListRequest {
pub network: String,
pub source_endpoint: String,
pub now_unix_secs: u64,
pub node_provider_id: Option<String>,
}
impl CloudEngineNodeListRequest {
#[must_use]
pub fn new(
network: impl Into<String>,
source_endpoint: impl Into<String>,
now_unix_secs: u64,
) -> Self {
Self {
network: network.into(),
source_endpoint: source_endpoint.into(),
now_unix_secs,
node_provider_id: None,
}
}
#[must_use]
pub fn with_node_provider_id(mut self, node_provider_id: impl Into<String>) -> Self {
self.node_provider_id = Some(node_provider_id.into());
self
}
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct CloudEngineNodeInfoRequest {
pub network: String,
pub source_endpoint: String,
pub now_unix_secs: u64,
pub node_id: String,
}
impl CloudEngineNodeInfoRequest {
#[must_use]
pub fn new(
network: impl Into<String>,
source_endpoint: impl Into<String>,
now_unix_secs: u64,
node_id: impl Into<String>,
) -> Self {
Self {
network: network.into(),
source_endpoint: source_endpoint.into(),
now_unix_secs,
node_id: node_id.into(),
}
}
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct CloudEngineNodeListReport {
#[serde(flatten)]
pub provenance: IcDashboardReportProvenance,
pub node_reward_type: String,
pub included_statuses: Vec<String>,
pub requested_node_provider_id: Option<String>,
pub node_count: usize,
pub status_counts: IcNodeStatusCounts,
pub node_provider_count: usize,
pub cloud_engine_subnet_count: usize,
pub unassigned_cloud_engine_node_count: usize,
pub nodes: Vec<CloudEngineNodeRow>,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct CloudEngineNodeInfoReport {
#[serde(flatten)]
pub provenance: IcDashboardReportProvenance,
pub node: CloudEngineNodeRow,
}
#[cfg(feature = "dashboard-host")]
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct CloudEngineNodeListSourceData {
pub source: IcSourceRequest,
pub requested_node_provider_id: Option<String>,
pub node_reward_type: String,
pub included_statuses: Vec<String>,
pub nodes: Vec<CloudEngineNodeRow>,
}
#[cfg(feature = "dashboard-host")]
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct CloudEngineNodeInfoSourceData {
pub source: IcSourceRequest,
pub node_id: String,
pub node: CloudEngineNodeRow,
}