ic_query/nns/node_provider/report/model/
report.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
10#[serde(deny_unknown_fields)]
11pub struct NnsNodeProviderListReport {
12 pub schema_version: u32,
13 #[serde(flatten)]
15 pub provenance: crate::nns::registry::NnsRegistryInventoryProvenance,
16 pub governance_canister_id: String,
17 pub node_providers: Vec<NnsNodeProviderRow>,
18}
19
20#[cfg(feature = "nns-host")]
21impl_nns_inventory_report!(
22 NnsNodeProviderListReport,
23 super::super::NNS_NODE_PROVIDER_LIST_REPORT_SCHEMA_VERSION,
24 "node_provider",
25 super::super::COLLECTION,
26 node_providers,
27 |report: &NnsNodeProviderListReport| Some(report.governance_canister_id.clone()),
28 |report: &NnsNodeProviderListReport| {
29 if report.governance_canister_id != crate::nns::MAINNET_GOVERNANCE_CANISTER_ID {
30 return Err(format!(
31 "governance_canister_id is {}, expected {}",
32 report.governance_canister_id,
33 crate::nns::MAINNET_GOVERNANCE_CANISTER_ID
34 ));
35 }
36 Ok(())
37 },
38);
39
40#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
47pub struct NnsNodeProviderRow {
48 pub node_provider_principal: String,
49 pub name: Option<String>,
50 pub node_count: Option<u32>,
51 pub reward_account_hex: Option<String>,
52}
53
54#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
61pub struct NnsNodeProviderInfoReport {
62 pub schema_version: u32,
63 pub input: String,
64 pub resolved_from: String,
65 #[serde(flatten)]
67 pub provenance: crate::nns::registry::NnsRegistryInventoryProvenance,
68 pub governance_canister_id: String,
69 #[serde(flatten)]
71 pub node_provider: NnsNodeProviderRow,
72}