Skip to content

Commit 654fe27

Browse files
committed
Add new endpoints to authz tests
Signed-off-by: Trey Aspelund <trey@oxidecomputer.com>
1 parent 94fcfb9 commit 654fe27

5 files changed

Lines changed: 325 additions & 2 deletions

File tree

nexus/external-api/output/nexus_tags.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,9 @@ networking_bgp_exported GET /v1/system/networking/bgp-expo
283283
networking_bgp_imported GET /v1/system/networking/bgp-imported
284284
networking_bgp_message_history GET /v1/system/networking/bgp-message-history
285285
networking_bgp_status GET /v1/system/networking/bgp-status
286+
networking_bgp_unnumbered_interface_list GET /v1/system/networking/bgp/unnumbered/interfaces
287+
networking_bgp_unnumbered_interface_view GET /v1/system/networking/bgp/unnumbered/interfaces/{switch_slot}/{interface_name}
288+
networking_bgp_unnumbered_manager_status GET /v1/system/networking/bgp/unnumbered/manager
286289
networking_inbound_icmp_update PUT /v1/system/networking/inbound-icmp
287290
networking_inbound_icmp_view GET /v1/system/networking/inbound-icmp
288291
networking_loopback_address_create POST /v1/system/networking/loopback-address

nexus/tests/integration_tests/endpoints.rs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1035,6 +1035,12 @@ pub const DEMO_BGP_ROUTES_IPV4_URL: &'static str =
10351035
"/v1/system/networking/bgp-imported?asn=47";
10361036
pub const DEMO_BGP_MESSAGE_HISTORY_URL: &'static str =
10371037
"/v1/system/networking/bgp-message-history?asn=47";
1038+
pub const DEMO_BGP_UNNUMBERED_MANAGER_URL: &'static str =
1039+
"/v1/system/networking/bgp/unnumbered/manager";
1040+
pub const DEMO_BGP_UNNUMBERED_INTERFACES_URL: &'static str =
1041+
"/v1/system/networking/bgp/unnumbered/interfaces";
1042+
pub const DEMO_BGP_UNNUMBERED_INTERFACE_URL: &'static str =
1043+
"/v1/system/networking/bgp/unnumbered/interfaces/switch0/qsfp0";
10381044

10391045
pub const DEMO_BFD_STATUS_URL: &'static str =
10401046
"/v1/system/networking/bfd-status";
@@ -3485,6 +3491,24 @@ pub static VERIFY_ENDPOINTS: LazyLock<Vec<VerifyEndpoint>> = LazyLock::new(
34853491
unprivileged_access: UnprivilegedAccess::None,
34863492
allowed_methods: vec![AllowedMethod::GetNonexistent],
34873493
},
3494+
VerifyEndpoint {
3495+
url: &DEMO_BGP_UNNUMBERED_MANAGER_URL,
3496+
visibility: Visibility::Public,
3497+
unprivileged_access: UnprivilegedAccess::None,
3498+
allowed_methods: vec![AllowedMethod::GetNonexistent],
3499+
},
3500+
VerifyEndpoint {
3501+
url: &DEMO_BGP_UNNUMBERED_INTERFACES_URL,
3502+
visibility: Visibility::Public,
3503+
unprivileged_access: UnprivilegedAccess::None,
3504+
allowed_methods: vec![AllowedMethod::GetNonexistent],
3505+
},
3506+
VerifyEndpoint {
3507+
url: &DEMO_BGP_UNNUMBERED_INTERFACE_URL,
3508+
visibility: Visibility::Public,
3509+
unprivileged_access: UnprivilegedAccess::None,
3510+
allowed_methods: vec![AllowedMethod::GetNonexistent],
3511+
},
34883512
VerifyEndpoint {
34893513
url: &DEMO_BFD_STATUS_URL,
34903514
visibility: Visibility::Public,
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
456b293ebc28e8419ce4829e90318a7ab500754e:openapi/nexus/nexus-2026060800.0.0-f1db6e.json

openapi/nexus/nexus-2026060800.0.0-f1db6e.json renamed to openapi/nexus/nexus-2026062500.0.0-a32ff9.json

Lines changed: 296 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"url": "https://oxide.computer",
88
"email": "api@oxide.computer"
99
},
10-
"version": "2026060800.0.0"
10+
"version": "2026062500.0.0"
1111
},
1212
"paths": {
1313
"/device/auth": {
@@ -10740,6 +10740,113 @@
1074010740
}
1074110741
}
1074210742
},
10743+
"/v1/system/networking/bgp/unnumbered/interfaces": {
10744+
"get": {
10745+
"tags": [
10746+
"system/networking"
10747+
],
10748+
"summary": "List BGP Unnumbered interfaces",
10749+
"operationId": "networking_bgp_unnumbered_interface_list",
10750+
"responses": {
10751+
"200": {
10752+
"description": "successful operation",
10753+
"content": {
10754+
"application/json": {
10755+
"schema": {
10756+
"title": "Array_of_SwitchUnnumberedInterface",
10757+
"type": "array",
10758+
"items": {
10759+
"$ref": "#/components/schemas/SwitchUnnumberedInterface"
10760+
}
10761+
}
10762+
}
10763+
}
10764+
},
10765+
"4XX": {
10766+
"$ref": "#/components/responses/Error"
10767+
},
10768+
"5XX": {
10769+
"$ref": "#/components/responses/Error"
10770+
}
10771+
}
10772+
}
10773+
},
10774+
"/v1/system/networking/bgp/unnumbered/interfaces/{switch_slot}/{interface_name}": {
10775+
"get": {
10776+
"tags": [
10777+
"system/networking"
10778+
],
10779+
"summary": "Get BGP Unnumbered interface state",
10780+
"operationId": "networking_bgp_unnumbered_interface_view",
10781+
"parameters": [
10782+
{
10783+
"in": "path",
10784+
"name": "interface_name",
10785+
"required": true,
10786+
"schema": {
10787+
"type": "string"
10788+
}
10789+
},
10790+
{
10791+
"in": "path",
10792+
"name": "switch_slot",
10793+
"required": true,
10794+
"schema": {
10795+
"$ref": "#/components/schemas/SwitchSlot"
10796+
}
10797+
}
10798+
],
10799+
"responses": {
10800+
"200": {
10801+
"description": "successful operation",
10802+
"content": {
10803+
"application/json": {
10804+
"schema": {
10805+
"$ref": "#/components/schemas/SwitchUnnumberedInterface"
10806+
}
10807+
}
10808+
}
10809+
},
10810+
"4XX": {
10811+
"$ref": "#/components/responses/Error"
10812+
},
10813+
"5XX": {
10814+
"$ref": "#/components/responses/Error"
10815+
}
10816+
}
10817+
}
10818+
},
10819+
"/v1/system/networking/bgp/unnumbered/manager": {
10820+
"get": {
10821+
"tags": [
10822+
"system/networking"
10823+
],
10824+
"summary": "Get BGP Unnumbered manager state",
10825+
"operationId": "networking_bgp_unnumbered_manager_status",
10826+
"responses": {
10827+
"200": {
10828+
"description": "successful operation",
10829+
"content": {
10830+
"application/json": {
10831+
"schema": {
10832+
"title": "Array_of_SwitchUnnumberedManagerState",
10833+
"type": "array",
10834+
"items": {
10835+
"$ref": "#/components/schemas/SwitchUnnumberedManagerState"
10836+
}
10837+
}
10838+
}
10839+
}
10840+
},
10841+
"4XX": {
10842+
"$ref": "#/components/responses/Error"
10843+
},
10844+
"5XX": {
10845+
"$ref": "#/components/responses/Error"
10846+
}
10847+
}
10848+
}
10849+
},
1074310850
"/v1/system/networking/bgp-announce-set": {
1074410851
"get": {
1074510852
"tags": [
@@ -19831,6 +19938,60 @@
1983119938
}
1983219939
]
1983319940
},
19941+
"DiscoveredRouter": {
19942+
"type": "object",
19943+
"properties": {
19944+
"address": {
19945+
"description": "Peer IPv6 address",
19946+
"type": "string",
19947+
"format": "ipv6"
19948+
},
19949+
"discovered_at": {
19950+
"description": "When the peer was first discovered (ISO 8601 timestamp)",
19951+
"type": "string"
19952+
},
19953+
"expired": {
19954+
"description": "Whether the peer entry has expired",
19955+
"type": "boolean"
19956+
},
19957+
"last_advertisement": {
19958+
"description": "When the most recent Router Advertisement was received (ISO 8601 timestamp)",
19959+
"type": "string"
19960+
},
19961+
"reachable_time": {
19962+
"description": "Reachable time from RA (milliseconds)",
19963+
"type": "integer",
19964+
"format": "uint32",
19965+
"minimum": 0
19966+
},
19967+
"retrans_timer": {
19968+
"description": "Retransmit timer from RA (milliseconds)",
19969+
"type": "integer",
19970+
"format": "uint32",
19971+
"minimum": 0
19972+
},
19973+
"router_lifetime": {
19974+
"description": "Router lifetime from RA (seconds)",
19975+
"type": "integer",
19976+
"format": "uint16",
19977+
"minimum": 0
19978+
},
19979+
"time_until_expiry": {
19980+
"nullable": true,
19981+
"description": "Time until expiry (human-readable), or None if already expired",
19982+
"type": "string"
19983+
}
19984+
},
19985+
"required": [
19986+
"address",
19987+
"discovered_at",
19988+
"expired",
19989+
"last_advertisement",
19990+
"reachable_time",
19991+
"retrans_timer",
19992+
"router_lifetime"
19993+
]
19994+
},
1983419995
"Disk": {
1983519996
"description": "View of a Disk",
1983619997
"type": "object",
@@ -25369,6 +25530,25 @@
2536925530
"type": "string",
2537025531
"maxLength": 512
2537125532
},
25533+
"PendingUnnumberedInterface": {
25534+
"type": "object",
25535+
"properties": {
25536+
"interface": {
25537+
"description": "Interface name",
25538+
"type": "string"
25539+
},
25540+
"router_lifetime": {
25541+
"description": "Configured router lifetime (seconds)",
25542+
"type": "integer",
25543+
"format": "uint16",
25544+
"minimum": 0
25545+
}
25546+
},
25547+
"required": [
25548+
"interface",
25549+
"router_lifetime"
25550+
]
25551+
},
2537225552
"PhysicalDisk": {
2537325553
"description": "View of a Physical Disk\n\nPhysical disks reside in a particular sled and are used to store both Instance Disk data as well as internal metadata.",
2537425554
"type": "object",
@@ -26835,6 +27015,23 @@
2683527015
}
2683627016
]
2683727017
},
27018+
"RouterDiscoveryRuntimeState": {
27019+
"type": "object",
27020+
"properties": {
27021+
"rx": {
27022+
"description": "ICMPv6 Router Advertisement receive loop is running",
27023+
"type": "boolean"
27024+
},
27025+
"tx": {
27026+
"description": "ICMPv6 Router Advertisement transmit loop is running",
27027+
"type": "boolean"
27028+
}
27029+
},
27030+
"required": [
27031+
"rx",
27032+
"tx"
27033+
]
27034+
},
2683827035
"RouterLifetimeConfig": {
2683927036
"description": "Router lifetime in seconds for unnumbered BGP peers",
2684027037
"type": "integer",
@@ -29667,6 +29864,36 @@
2966729864
}
2966829865
]
2966929866
},
29867+
"SwitchUnnumberedInterface": {
29868+
"type": "object",
29869+
"properties": {
29870+
"interface": {
29871+
"$ref": "#/components/schemas/UnnumberedInterface"
29872+
},
29873+
"switch_slot": {
29874+
"$ref": "#/components/schemas/SwitchSlot"
29875+
}
29876+
},
29877+
"required": [
29878+
"interface",
29879+
"switch_slot"
29880+
]
29881+
},
29882+
"SwitchUnnumberedManagerState": {
29883+
"type": "object",
29884+
"properties": {
29885+
"state": {
29886+
"$ref": "#/components/schemas/UnnumberedManagerState"
29887+
},
29888+
"switch_slot": {
29889+
"$ref": "#/components/schemas/SwitchSlot"
29890+
}
29891+
},
29892+
"required": [
29893+
"state",
29894+
"switch_slot"
29895+
]
29896+
},
2967029897
"SystemNetworkingSettings": {
2967129898
"description": "Fleet-wide networking settings. Only fleet viewers may view these settings. Only fleet admins can modify them.",
2967229899
"type": "object",
@@ -30078,6 +30305,74 @@
3007830305
}
3007930306
]
3008030307
},
30308+
"UnnumberedInterface": {
30309+
"type": "object",
30310+
"properties": {
30311+
"discovered_peer": {
30312+
"nullable": true,
30313+
"description": "Information about discovered peer",
30314+
"allOf": [
30315+
{
30316+
"$ref": "#/components/schemas/DiscoveredRouter"
30317+
}
30318+
]
30319+
},
30320+
"interface": {
30321+
"description": "Interface name (e.g. \"qsfp0\")",
30322+
"type": "string"
30323+
},
30324+
"local_address": {
30325+
"description": "IPv6 link-local address of this interface.",
30326+
"type": "string",
30327+
"format": "ipv6"
30328+
},
30329+
"ndp_state": {
30330+
"description": "State of rx/tx loops (None if interface not active in NDP)",
30331+
"allOf": [
30332+
{
30333+
"$ref": "#/components/schemas/RouterDiscoveryRuntimeState"
30334+
}
30335+
]
30336+
},
30337+
"router_lifetime": {
30338+
"description": "Router Lifetime advertised in ICMPv6 Router Advertisements sent on this interface.",
30339+
"type": "integer",
30340+
"format": "uint16",
30341+
"minimum": 0
30342+
}
30343+
},
30344+
"required": [
30345+
"interface",
30346+
"local_address",
30347+
"ndp_state",
30348+
"router_lifetime"
30349+
]
30350+
},
30351+
"UnnumberedManagerState": {
30352+
"type": "object",
30353+
"properties": {
30354+
"active_interfaces": {
30355+
"type": "array",
30356+
"items": {
30357+
"type": "string"
30358+
}
30359+
},
30360+
"monitor_running": {
30361+
"type": "boolean"
30362+
},
30363+
"pending_interfaces": {
30364+
"type": "array",
30365+
"items": {
30366+
"$ref": "#/components/schemas/PendingUnnumberedInterface"
30367+
}
30368+
}
30369+
},
30370+
"required": [
30371+
"active_interfaces",
30372+
"monitor_running",
30373+
"pending_interfaces"
30374+
]
30375+
},
3008130376
"UpdateStatus": {
3008230377
"type": "object",
3008330378
"properties": {

0 commit comments

Comments
 (0)