1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
// This file was generated by Cobalt's Registry parser based on the registry YAML
// in the cobalt_config repository. Edit the YAML there to make changes.
pub const CUSTOMER_NAME: &str = "fuchsia";
pub const CUSTOMER_ID: u32 = 1;
pub const PROJECT_NAME: &str = "network_policy";
pub const PROJECT_ID: u32 = 18;

// Linear bucket constants for duration_metric_template fleetwide_histograms_minutely_buckets
pub const DURATION_METRIC_TEMPLATE_FLEETWIDE_HISTOGRAMS_MINUTELY_BUCKETS_INT_BUCKETS_FLOOR: i64 = 0;
pub const DURATION_METRIC_TEMPLATE_FLEETWIDE_HISTOGRAMS_MINUTELY_BUCKETS_INT_BUCKETS_NUM_BUCKETS: u32 = 60;
pub const DURATION_METRIC_TEMPLATE_FLEETWIDE_HISTOGRAMS_MINUTELY_BUCKETS_INT_BUCKETS_STEP_SIZE: u32 = 60000000;

// Linear bucket constants for duration_metric_template fleetwide_histograms_15_minutely_buckets
pub const DURATION_METRIC_TEMPLATE_FLEETWIDE_HISTOGRAMS_15_MINUTELY_BUCKETS_INT_BUCKETS_FLOOR: i64 = 0;
pub const DURATION_METRIC_TEMPLATE_FLEETWIDE_HISTOGRAMS_15_MINUTELY_BUCKETS_INT_BUCKETS_NUM_BUCKETS: u32 = 24;
pub const DURATION_METRIC_TEMPLATE_FLEETWIDE_HISTOGRAMS_15_MINUTELY_BUCKETS_INT_BUCKETS_STEP_SIZE: u32 = 900000000;

// Linear bucket constants for duration_metric_template fleetwide_histograms_hourly_buckets
pub const DURATION_METRIC_TEMPLATE_FLEETWIDE_HISTOGRAMS_HOURLY_BUCKETS_INT_BUCKETS_FLOOR: i64 = 0;
pub const DURATION_METRIC_TEMPLATE_FLEETWIDE_HISTOGRAMS_HOURLY_BUCKETS_INT_BUCKETS_NUM_BUCKETS: u32 = 96;
pub const DURATION_METRIC_TEMPLATE_FLEETWIDE_HISTOGRAMS_HOURLY_BUCKETS_INT_BUCKETS_STEP_SIZE: u32 = 3600000000;

// Linear bucket constants for occurrence_metric_template device_daily_sum_histograms
pub const OCCURRENCE_METRIC_TEMPLATE_DEVICE_DAILY_SUM_HISTOGRAMS_INT_BUCKETS_FLOOR: i64 = 0;
pub const OCCURRENCE_METRIC_TEMPLATE_DEVICE_DAILY_SUM_HISTOGRAMS_INT_BUCKETS_NUM_BUCKETS: u32 = 100;
pub const OCCURRENCE_METRIC_TEMPLATE_DEVICE_DAILY_SUM_HISTOGRAMS_INT_BUCKETS_STEP_SIZE: u32 = 1;

// Linear bucket constants for reachability_lost device_daily_sum_histograms
pub const REACHABILITY_LOST_DEVICE_DAILY_SUM_HISTOGRAMS_INT_BUCKETS_FLOOR: i64 = 0;
pub const REACHABILITY_LOST_DEVICE_DAILY_SUM_HISTOGRAMS_INT_BUCKETS_NUM_BUCKETS: u32 = 100;
pub const REACHABILITY_LOST_DEVICE_DAILY_SUM_HISTOGRAMS_INT_BUCKETS_STEP_SIZE: u32 = 1;

// Linear bucket constants for reachability_lost_duration fleetwide_histograms_minutely_buckets
pub const REACHABILITY_LOST_DURATION_FLEETWIDE_HISTOGRAMS_MINUTELY_BUCKETS_INT_BUCKETS_FLOOR: i64 = 0;
pub const REACHABILITY_LOST_DURATION_FLEETWIDE_HISTOGRAMS_MINUTELY_BUCKETS_INT_BUCKETS_NUM_BUCKETS: u32 = 60;
pub const REACHABILITY_LOST_DURATION_FLEETWIDE_HISTOGRAMS_MINUTELY_BUCKETS_INT_BUCKETS_STEP_SIZE: u32 = 60000000;

// Linear bucket constants for reachability_lost_duration fleetwide_histograms_15_minutely_buckets
pub const REACHABILITY_LOST_DURATION_FLEETWIDE_HISTOGRAMS_15_MINUTELY_BUCKETS_INT_BUCKETS_FLOOR: i64 = 0;
pub const REACHABILITY_LOST_DURATION_FLEETWIDE_HISTOGRAMS_15_MINUTELY_BUCKETS_INT_BUCKETS_NUM_BUCKETS: u32 = 24;
pub const REACHABILITY_LOST_DURATION_FLEETWIDE_HISTOGRAMS_15_MINUTELY_BUCKETS_INT_BUCKETS_STEP_SIZE: u32 = 900000000;

// Linear bucket constants for reachability_lost_duration fleetwide_histograms_hourly_buckets
pub const REACHABILITY_LOST_DURATION_FLEETWIDE_HISTOGRAMS_HOURLY_BUCKETS_INT_BUCKETS_FLOOR: i64 = 0;
pub const REACHABILITY_LOST_DURATION_FLEETWIDE_HISTOGRAMS_HOURLY_BUCKETS_INT_BUCKETS_NUM_BUCKETS: u32 = 96;
pub const REACHABILITY_LOST_DURATION_FLEETWIDE_HISTOGRAMS_HOURLY_BUCKETS_INT_BUCKETS_STEP_SIZE: u32 = 3600000000;

// Metric ID Constants
// device_counts_metric_template
pub const DEVICE_COUNTS_METRIC_TEMPLATE_METRIC_ID: u32 = 1;
// duration_metric_template
pub const DURATION_METRIC_TEMPLATE_METRIC_ID: u32 = 2;
// occurrence_metric_template
pub const OCCURRENCE_METRIC_TEMPLATE_METRIC_ID: u32 = 3;
// reachability_global_snapshot_duration
pub const REACHABILITY_GLOBAL_SNAPSHOT_DURATION_METRIC_ID: u32 = 100;
// reachability_state_up_or_above_duration
pub const REACHABILITY_STATE_UP_OR_ABOVE_DURATION_METRIC_ID: u32 = 101;
// reachability_global_default_route_duration
pub const REACHABILITY_GLOBAL_DEFAULT_ROUTE_DURATION_METRIC_ID: u32 = 102;
// reachability_global_default_route_occurrence
pub const REACHABILITY_GLOBAL_DEFAULT_ROUTE_OCCURRENCE_METRIC_ID: u32 = 103;
// reachability_lost
pub const REACHABILITY_LOST_METRIC_ID: u32 = 104;
// internet_available_gateway_lost
pub const INTERNET_AVAILABLE_GATEWAY_LOST_METRIC_ID: u32 = 105;
// internet_available_gateway_not_pingable
pub const INTERNET_AVAILABLE_GATEWAY_NOT_PINGABLE_METRIC_ID: u32 = 106;
// internet_available_gateway_not_discoverable
pub const INTERNET_AVAILABLE_GATEWAY_NOT_DISCOVERABLE_METRIC_ID: u32 = 107;
// reachability_lost_duration
pub const REACHABILITY_LOST_DURATION_METRIC_ID: u32 = 108;

// Enum for reachability_global_snapshot_duration (Metric Dimension route_config)
#[derive(Clone, Copy, PartialEq, PartialOrd, Eq, Ord, Debug, Hash)]
pub enum ReachabilityGlobalSnapshotDurationMetricDimensionRouteConfig {
  Ipv4Only = 1,
  Ipv6Only = 2,
  Ipv4Ipv6 = 3,
}

impl cobalt_client::traits::AsEventCode for ReachabilityGlobalSnapshotDurationMetricDimensionRouteConfig {
  fn as_event_code(&self) -> u32 {
    *self as u32
  }
}

// Alias for reachability_global_default_route_duration (Metric Dimension default_route) which has the same event codes
pub use ReachabilityGlobalSnapshotDurationMetricDimensionRouteConfig as ReachabilityGlobalDefaultRouteDurationMetricDimensionDefaultRoute;

// Alias for reachability_global_default_route_occurrence (Metric Dimension default_route) which has the same event codes
pub use ReachabilityGlobalSnapshotDurationMetricDimensionRouteConfig as ReachabilityGlobalDefaultRouteOccurrenceMetricDimensionDefaultRoute;

// Alias for reachability_lost (Metric Dimension route_config) which has the same event codes
pub use ReachabilityGlobalSnapshotDurationMetricDimensionRouteConfig as ReachabilityLostMetricDimensionRouteConfig;

// Alias for reachability_lost_duration (Metric Dimension route_config) which has the same event codes
pub use ReachabilityGlobalSnapshotDurationMetricDimensionRouteConfig as ReachabilityLostDurationMetricDimensionRouteConfig;

// Enum for reachability_global_snapshot_duration (Metric Dimension internet_available)
#[derive(Clone, Copy, PartialEq, PartialOrd, Eq, Ord, Debug, Hash)]
pub enum ReachabilityGlobalSnapshotDurationMetricDimensionInternetAvailable {
  Yes = 1,
  No = 2,
}

impl cobalt_client::traits::AsEventCode for ReachabilityGlobalSnapshotDurationMetricDimensionInternetAvailable {
  fn as_event_code(&self) -> u32 {
    *self as u32
  }
}

// Alias for reachability_global_snapshot_duration (Metric Dimension gateway_reachable) which has the same event codes
pub use ReachabilityGlobalSnapshotDurationMetricDimensionInternetAvailable as ReachabilityGlobalSnapshotDurationMetricDimensionGatewayReachable;

// Alias for reachability_global_snapshot_duration (Metric Dimension dns_active) which has the same event codes
pub use ReachabilityGlobalSnapshotDurationMetricDimensionInternetAvailable as ReachabilityGlobalSnapshotDurationMetricDimensionDnsActive;

// Enum for network_policy (Metric Dimension http_status)
#[derive(Clone, Copy, PartialEq, PartialOrd, Eq, Ord, Debug, Hash)]
pub enum NetworkPolicyMetricDimensionHttpStatus {
  Neither = 1,
  HttpOnly = 2,
  HttpsOnly = 3,
  Both = 4,
}

impl cobalt_client::traits::AsEventCode for NetworkPolicyMetricDimensionHttpStatus {
  fn as_event_code(&self) -> u32 {
    *self as u32
  }
}
// Alias for reachability_global_snapshot_duration (Metric Dimension http_status) which has the same event codes
pub use NetworkPolicyMetricDimensionHttpStatus as ReachabilityGlobalSnapshotDurationMetricDimensionHttpStatus;

#[derive(Clone, Copy, PartialEq, PartialOrd, Eq, Ord, Debug, Hash)]
pub struct ReachabilityGlobalSnapshotDurationEventCodes {
  pub route_config: ReachabilityGlobalSnapshotDurationMetricDimensionRouteConfig,
  pub internet_available: ReachabilityGlobalSnapshotDurationMetricDimensionInternetAvailable,
  pub gateway_reachable: ReachabilityGlobalSnapshotDurationMetricDimensionGatewayReachable,
  pub dns_active: ReachabilityGlobalSnapshotDurationMetricDimensionDnsActive,
  pub http_status: ReachabilityGlobalSnapshotDurationMetricDimensionHttpStatus,
}

impl cobalt_client::traits::AsEventCodes for ReachabilityGlobalSnapshotDurationEventCodes {
  fn as_event_codes(&self) -> Vec<u32> {
    use cobalt_client::traits::AsEventCode;
    vec![
      self.route_config.as_event_code(),
      self.internet_available.as_event_code(),
      self.gateway_reachable.as_event_code(),
      self.dns_active.as_event_code(),
      self.http_status.as_event_code(),
    ]
  }
}