Skip to content

Commit

Permalink
Merge branch 'explicit-datasets' into inventory-datasets
Browse files Browse the repository at this point in the history
  • Loading branch information
smklein committed Jul 25, 2024
2 parents 54b4658 + 29c4eb7 commit ff27801
Show file tree
Hide file tree
Showing 5 changed files with 239 additions and 9 deletions.
23 changes: 17 additions & 6 deletions openapi/nexus.json
Original file line number Diff line number Diff line change
Expand Up @@ -19797,12 +19797,23 @@
},
"Units": {
"description": "Measurement units for timeseries samples.",
"type": "string",
"enum": [
"count",
"bytes",
"seconds",
"nanoseconds"
"oneOf": [
{
"type": "string",
"enum": [
"count",
"bytes",
"seconds",
"nanoseconds"
]
},
{
"description": "No meaningful units, e.g. a dimensionless quanity.",
"type": "string",
"enum": [
"none"
]
}
]
},
"User": {
Expand Down
1 change: 1 addition & 0 deletions oximeter/impl/src/schema/codegen.rs
Original file line number Diff line number Diff line change
Expand Up @@ -515,6 +515,7 @@ fn quote_creation_time(created: DateTime<Utc>) -> TokenStream {
impl quote::ToTokens for Units {
fn to_tokens(&self, tokens: &mut TokenStream) {
let toks = match self {
Units::None => quote! { ::oximeter::schema::Units::None },
Units::Count => quote! { ::oximeter::schema::Units::Count },
Units::Bytes => quote! { ::oximeter::schema::Units::Bytes },
Units::Seconds => quote! { ::oximeter::schema::Units::Seconds },
Expand Down
2 changes: 2 additions & 0 deletions oximeter/impl/src/schema/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,8 @@ pub struct TimeseriesDescription {
// TODO-completeness: Decide whether and how to handle dimensional analysis
// during queries, if needed.
pub enum Units {
/// No meaningful units, e.g. a dimensionless quanity.
None,
Count,
Bytes,
Seconds,
Expand Down
213 changes: 213 additions & 0 deletions oximeter/oximeter/schema/switch-data-link.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,213 @@
format_version = 1

[target]
name = "switch_data_link"
description = "A network data link on an Oxide switch"
authz_scope = "fleet"
versions = [
{ version = 1, fields = [ "rack_id", "sled_id", "sled_model", "sled_revision", "sled_serial", "switch_id", "switch_model", "switch_revision", "switch_serial" ] },
]

[[metrics]]
name = "bytes_sent"
description = "Total number of bytes sent on the data link"
units = "bytes"
datum_type = "cumulative_u64"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id" ] }
]

[[metrics]]
name = "bytes_received"
description = "Total number of bytes received on the data link"
units = "bytes"
datum_type = "cumulative_u64"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id" ] }
]

[[metrics]]
name = "errors_sent"
description = "Total number of errors when sending on the data link"
units = "count"
datum_type = "cumulative_u64"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id" ] }
]

[[metrics]]
name = "errors_received"
description = "Total number of packets for the data link dropped due to any error"
units = "count"
datum_type = "cumulative_u64"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id" ] }
]

[[metrics]]
name = "receive_crc_error_drops"
description = "Total number of packets for the data link dropped due to CRC errors"
units = "count"
datum_type = "cumulative_u64"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id" ] }
]

[[metrics]]
name = "receive_buffer_full_drops"
description = "Total number of packets for the data link dropped due to ASIC buffer congestion"
units = "count"
datum_type = "cumulative_u64"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id" ] }
]

[[metrics]]
name = "packets_sent"
description = "Total number of packets sent on the data link"
units = "count"
datum_type = "cumulative_u64"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id" ] }
]

[[metrics]]
name = "packets_received"
description = "Total number of packets received on the data link"
units = "count"
datum_type = "cumulative_u64"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id" ] }
]

[[metrics]]
name = "link_up"
description = "Reports whether the link is currently up"
units = "none"
datum_type = "bool"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id" ] }
]

[[metrics]]
name = "link_fsm"
description = """\
Total entries into each state of the autonegotation / \
link-training finite state machine\
"""
units = "count"
datum_type = "cumulative_u64"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id", "state" ] }
]

[[metrics]]
name = "pcs_bad_sync_headers"
description = "Total number of bad PCS sync headers on the data link"
units = "count"
datum_type = "cumulative_u64"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id" ] }
]

[[metrics]]
name = "pcs_errored_blocks"
description = "Total number of PCS error blocks on the data link"
units = "count"
datum_type = "cumulative_u64"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id" ] }
]

[[metrics]]
name = "pcs_block_lock_loss"
description = "Total number of detected losses of block-lock on the data link"
units = "count"
datum_type = "cumulative_u64"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id" ] }
]

[[metrics]]
name = "pcs_high_ber"
description = "Total number of high bit-error-rate events on the data link"
units = "count"
datum_type = "cumulative_u64"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id" ] }
]

[[metrics]]
name = "pcs_valid_errors"
description = "Total number of valid error events on the data link"
units = "count"
datum_type = "cumulative_u64"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id" ] }
]

[[metrics]]
name = "pcs_invalid_errors"
description = "Total number of invalid error events on the data link"
units = "count"
datum_type = "cumulative_u64"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id" ] }
]

[[metrics]]
name = "pcs_unknown_errors"
description = "Total number of unknown error events on the data link"
units = "count"
datum_type = "cumulative_u64"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id" ] }
]

[fields.rack_id]
type = "uuid"
description = "ID of the rack the link's switch is in"

[fields.sled_id]
type = "uuid"
description = "ID of the sled managing the link's switch"

[fields.sled_model]
type = "string"
description = "Model number of the sled managing the link's switch"

[fields.sled_revision]
type = "u32"
description = "Revision number of the sled managing the link's switch"

[fields.sled_serial]
type = "string"
description = "Serial number of the sled managing the link's switch"

[fields.switch_id]
type = "uuid"
description = "ID of the switch the link is on"

[fields.switch_model]
type = "string"
description = "The model number switch the link is on"

[fields.switch_revision]
type = "u32"
description = "Revision number of the switch the link is on"

[fields.switch_serial]
type = "string"
description = "Serial number of the switch the link is on"

[fields.port_id]
type = "string"
description = "Physical switch port the link is on"

[fields.link_id]
type = "u8"
description = "ID of the link within its switch port"

[fields.state]
type = "string"
description = "Name of the data link FSM state"
9 changes: 6 additions & 3 deletions wicket/src/state/update.rs
Original file line number Diff line number Diff line change
Expand Up @@ -258,12 +258,15 @@ impl UpdateItem {
}
| StepEventKind::StepCompleted { step, outcome, .. } => {
if step.info.is_last_step_in_component() {
// The RoT and SP components each have two steps in
// them. If the second step ("Updating RoT/SP") is
// The RoT (and bootloader) and SP components each
// have two steps in them. If the second step
// ("Updating RoT Bootloader/RoT/SP") is
// skipped, then treat the component as skipped.
if matches!(
step.info.component,
UpdateComponent::Sp | UpdateComponent::Rot
UpdateComponent::Sp
| UpdateComponent::Rot
| UpdateComponent::RotBootloader
) {
assert_eq!(
step.info.id,
Expand Down

0 comments on commit ff27801

Please sign in to comment.