@@ -15,6 +15,7 @@ use omicron_common::backoff::BackoffError;
1515use omicron_common:: backoff:: retry_notify;
1616use omicron_common:: backoff:: retry_policy_local;
1717use sled_agent_config_reconciler:: InternalDisksReceiver ;
18+ use sled_agent_config_reconciler:: MeasurementsReceiver ;
1819use sled_agent_types:: rack_init:: RackInitializeRequestParams ;
1920use sled_agent_types:: rack_ops:: RssStep ;
2021use sled_agent_types:: sled:: StartSledAgentRequest ;
@@ -52,11 +53,16 @@ impl RssHandle {
5253 config : RackInitializeRequestParams ,
5354 our_bootstrap_address : Ipv6Addr ,
5455 internal_disks_rx : InternalDisksReceiver ,
56+ measurements_rx : MeasurementsReceiver ,
5557 bootstore : bootstore:: NodeHandle ,
5658 trust_quorum : trust_quorum:: NodeTaskHandle ,
5759 step_tx : watch:: Sender < RssStep > ,
5860 ) -> Result < ( ) , SetupServiceError > {
59- let ( tx, rx) = rss_channel ( our_bootstrap_address, sprockets) ;
61+ let ( tx, rx) = rss_channel (
62+ our_bootstrap_address,
63+ sprockets,
64+ measurements_rx. clone ( ) ,
65+ ) ;
6066
6167 let rss = RackSetupService :: new (
6268 log. new ( o ! ( "component" => "RSS" ) ) ,
@@ -77,8 +83,13 @@ impl RssHandle {
7783 log : & Logger ,
7884 our_bootstrap_address : Ipv6Addr ,
7985 sprockets : SprocketsConfig ,
86+ measurements_rx : MeasurementsReceiver ,
8087 ) -> Result < ( ) , SetupServiceError > {
81- let ( tx, rx) = rss_channel ( our_bootstrap_address, sprockets) ;
88+ let ( tx, rx) = rss_channel (
89+ our_bootstrap_address,
90+ sprockets,
91+ measurements_rx. clone ( ) ,
92+ ) ;
8293
8394 let rss = RackSetupService :: new_reset_rack (
8495 log. new ( o ! ( "component" => "RSS" ) ) ,
@@ -95,11 +106,13 @@ async fn initialize_sled_agent(
95106 log : & Logger ,
96107 bootstrap_addr : SocketAddrV6 ,
97108 sprockets : SprocketsConfig ,
109+ measurements_rx : MeasurementsReceiver ,
98110 request : & StartSledAgentRequest ,
99111) -> Result < ( ) , bootstrap_agent_client:: Error > {
100112 let client = bootstrap_agent_client:: Client :: new (
101113 bootstrap_addr,
102114 sprockets,
115+ measurements_rx,
103116 log. new ( o ! ( "BootstrapAgentClient" => bootstrap_addr. to_string( ) ) ) ,
104117 ) ;
105118
@@ -131,11 +144,12 @@ async fn initialize_sled_agent(
131144fn rss_channel (
132145 our_bootstrap_address : Ipv6Addr ,
133146 sprockets : SprocketsConfig ,
147+ measurements_rx : MeasurementsReceiver ,
134148) -> ( BootstrapAgentHandle , BootstrapAgentHandleReceiver ) {
135149 let ( tx, rx) = mpsc:: channel ( 32 ) ;
136150 (
137151 BootstrapAgentHandle { inner : tx, our_bootstrap_address } ,
138- BootstrapAgentHandleReceiver { inner : rx, sprockets } ,
152+ BootstrapAgentHandleReceiver { inner : rx, sprockets, measurements_rx } ,
139153 )
140154}
141155
@@ -207,6 +221,7 @@ impl BootstrapAgentHandle {
207221struct BootstrapAgentHandleReceiver {
208222 inner : mpsc:: Receiver < Request > ,
209223 sprockets : SprocketsConfig ,
224+ measurements_rx : MeasurementsReceiver ,
210225}
211226
212227impl BootstrapAgentHandleReceiver {
@@ -227,10 +242,12 @@ impl BootstrapAgentHandleReceiver {
227242 // of the initialization requests, allowing them to run concurrently.
228243
229244 let s = self . sprockets . clone ( ) ;
245+ let mx = self . measurements_rx . clone ( ) ;
230246 let mut futs = requests
231247 . into_iter ( )
232248 . map ( |( bootstrap_addr, request) | {
233249 let value = s. clone ( ) ;
250+ let measurements_rx = mx. clone ( ) ;
234251 async move {
235252 info ! (
236253 log, "Received initialization request from RSS" ;
@@ -242,6 +259,7 @@ impl BootstrapAgentHandleReceiver {
242259 log,
243260 bootstrap_addr,
244261 value,
262+ measurements_rx,
245263 & request,
246264 )
247265 . await
0 commit comments