Skip to main content

ic_query/nns/node_operator/report/model/
report.rs

1use serde::{Deserialize, Serialize};
2
3///
4/// NnsNodeOperatorListReport
5///
6/// Complete NNS node operator inventory report with source metadata.
7///
8
9#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
10#[serde(deny_unknown_fields)]
11pub struct NnsNodeOperatorListReport {
12    pub schema_version: u32,
13    /// Registry acquisition metadata, flattened in JSON.
14    #[serde(flatten)]
15    pub provenance: crate::nns::registry::NnsRegistryInventoryProvenance,
16    pub node_operator_count: usize,
17    pub node_operators: Vec<NnsNodeOperatorRow>,
18}
19
20#[cfg(feature = "nns-host")]
21impl_nns_inventory_report!(
22    NnsNodeOperatorListReport,
23    super::super::NNS_NODE_OPERATOR_LIST_REPORT_SCHEMA_VERSION,
24    "node_operator",
25    super::super::COLLECTION,
26    node_operator_count,
27    node_operators,
28    |_report: &NnsNodeOperatorListReport| None,
29);
30
31///
32/// NnsNodeOperatorRow
33///
34/// One node operator row projected from the NNS registry inventory.
35///
36
37#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
38pub struct NnsNodeOperatorRow {
39    pub node_operator_principal: String,
40    pub node_provider_principal: String,
41    pub node_allowance: u64,
42    pub data_center_id: String,
43    pub node_count: Option<u32>,
44}
45
46///
47/// NnsNodeOperatorInfoReport
48///
49/// Detailed report for one resolved NNS node operator.
50///
51
52#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
53pub struct NnsNodeOperatorInfoReport {
54    pub schema_version: u32,
55    pub input: String,
56    pub resolved_from: String,
57    /// Registry acquisition metadata, flattened in JSON.
58    #[serde(flatten)]
59    pub provenance: crate::nns::registry::NnsRegistryInventoryProvenance,
60    /// Resolved inventory row.
61    #[serde(flatten)]
62    pub node_operator: NnsNodeOperatorRow,
63}