@@ -38,7 +38,6 @@ use nexus_db_lookup::LookupPath;
3838use nexus_db_lookup:: lookup;
3939use nexus_db_queries:: authz;
4040use nexus_db_queries:: context:: OpContext ;
41- use nexus_db_queries:: db:: model:: AlertClass ;
4241use nexus_db_queries:: db:: model:: AlertDeliveryState ;
4342use nexus_db_queries:: db:: model:: AlertDeliveryTrigger ;
4443use nexus_db_queries:: db:: model:: AlertReceiver ;
@@ -49,6 +48,8 @@ use nexus_db_queries::db::model::WebhookDeliveryAttemptResult;
4948use nexus_db_queries:: db:: model:: WebhookReceiverConfig ;
5049use nexus_db_queries:: db:: model:: WebhookSecret ;
5150use nexus_types:: alert as alert_types;
51+ use nexus_types:: alert:: AlertClass ;
52+ use nexus_types:: alert:: AlertPayload ;
5253use nexus_types:: external_api:: alert;
5354use nexus_types:: identity:: Asset ;
5455use nexus_types:: identity:: Resource ;
@@ -192,11 +193,13 @@ impl Nexus {
192193 ) ?;
193194 let mut delivery = WebhookDelivery :: new_probe ( & rx_id, & self . id ) ;
194195
195- const CLASS : AlertClass = AlertClass :: Probe ;
196- const VERSION : u32 =
197- <alert_types:: Probe as alert_types:: AlertPayload >:: VERSION ;
198- static DATA : LazyLock < serde_json:: Value > =
199- LazyLock :: new ( || serde_json:: json!( { } ) ) ;
196+ const CLASS : AlertClass = <alert_types:: Probe as AlertPayload >:: CLASS ;
197+ const VERSION : u32 = <alert_types:: Probe as AlertPayload >:: VERSION ;
198+ static DATA : LazyLock < serde_json:: Value > = LazyLock :: new ( || {
199+ serde_json:: to_value ( & alert_types:: Probe { } ) . expect (
200+ "a struct with no fields should always serialize properly" ,
201+ )
202+ } ) ;
200203
201204 let attempt = match client
202205 . send_delivery_request ( opctx, & delivery, CLASS , VERSION , & DATA )
@@ -378,7 +381,7 @@ impl<'a> ReceiverClient<'a> {
378381 & mut self ,
379382 opctx : & OpContext ,
380383 delivery : & WebhookDelivery ,
381- alert_class : AlertClass ,
384+ alert_class : impl Into < AlertClass > ,
382385 alert_version : u32 ,
383386 data : & serde_json:: Value ,
384387 ) -> Result < WebhookDeliveryAttempt , anyhow:: Error > {
@@ -415,6 +418,7 @@ impl<'a> ReceiverClient<'a> {
415418 }
416419
417420 // okay, actually do the thing...
421+ let alert_class = alert_class. into ( ) ;
418422 let time_attempted = Utc :: now ( ) ;
419423 let sent_at = time_attempted. to_rfc3339 ( ) ;
420424 let payload = Payload {
0 commit comments