Skip to main content

ic_query/nns/data_center/report/model/
report.rs

1#[cfg(feature = "host")]
2use crate::cache_file::JsonCacheReport;
3use serde::{Deserialize, Serialize};
4
5///
6/// NnsDataCenterListReport
7///
8/// Complete NNS data center inventory report with source metadata.
9///
10
11#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
12pub struct NnsDataCenterListReport {
13    pub schema_version: u32,
14    pub network: String,
15    pub registry_canister_id: String,
16    pub registry_version: u64,
17    pub fetched_at: String,
18    pub source_endpoint: String,
19    pub fetched_by: String,
20    pub data_center_count: usize,
21    pub data_centers: Vec<NnsDataCenterRow>,
22}
23
24#[cfg(feature = "host")]
25impl JsonCacheReport for NnsDataCenterListReport {
26    fn schema_version(&self) -> u32 {
27        self.schema_version
28    }
29
30    fn network(&self) -> &str {
31        &self.network
32    }
33}
34
35///
36/// NnsDataCenterRow
37///
38/// One data center row projected from the NNS registry inventory.
39///
40
41#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
42pub struct NnsDataCenterRow {
43    pub data_center_id: String,
44    pub region: String,
45    pub owner: String,
46    pub latitude: Option<f32>,
47    pub longitude: Option<f32>,
48    pub node_operator_count: u32,
49    pub node_provider_count: u32,
50    pub node_count: u32,
51}
52
53///
54/// NnsDataCenterInfoReport
55///
56/// Detailed report for one resolved NNS data center.
57///
58
59#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
60pub struct NnsDataCenterInfoReport {
61    pub schema_version: u32,
62    pub input: String,
63    pub resolved_from: String,
64    pub network: String,
65    pub registry_canister_id: String,
66    pub registry_version: u64,
67    pub fetched_at: String,
68    pub source_endpoint: String,
69    pub fetched_by: String,
70    pub data_center_id: String,
71    pub region: String,
72    pub owner: String,
73    pub latitude: Option<f32>,
74    pub longitude: Option<f32>,
75    pub node_operator_count: u32,
76    pub node_provider_count: u32,
77    pub node_count: u32,
78}
79
80///
81/// NnsDataCenterRefreshReport
82///
83/// Outcome of refreshing the cached NNS data center inventory.
84///
85
86#[cfg(feature = "host")]
87#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
88pub struct NnsDataCenterRefreshReport {
89    pub schema_version: u32,
90    pub network: String,
91    pub cache_path: String,
92    pub refresh_lock_path: String,
93    pub output_path: Option<String>,
94    pub registry_canister_id: String,
95    pub registry_version: u64,
96    pub fetched_at: String,
97    pub source_endpoint: String,
98    pub fetched_by: String,
99    pub dry_run: bool,
100    pub wrote_cache: bool,
101    pub replaced_existing_cache: bool,
102    pub data_center_count: usize,
103}