Skip to content

Commit b10065a

Browse files
committed
fix(cluster): delete dns record after failure to create
1 parent fb87011 commit b10065a

File tree

1 file changed

+40
-2
lines changed

1 file changed

+40
-2
lines changed

svc/pkg/cluster/worker/src/workers/datacenter_tls_issue.rs

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ const ENCRYPT_EMAIL: &str = "letsencrypt@rivet.gg";
2222
async fn worker(
2323
ctx: &OperationContext<cluster::msg::datacenter_tls_issue::Message>,
2424
) -> GlobalResult<()> {
25+
tracing::warn!("temp disabled");
2526
return Ok(());
2627

2728
let datacenter_id = unwrap_ref!(ctx.datacenter_id).as_uuid();
@@ -237,9 +238,46 @@ async fn create_dns_record(
237238
priority: None,
238239
},
239240
})
240-
.await?;
241+
.await;
242+
243+
match create_record_res {
244+
Ok(create_record_res) => Ok(create_record_res.result.id),
245+
// Try to delete record on error
246+
Err(err) => {
247+
if let cf_framework::response::ApiFailure::Error(
248+
http::status::StatusCode::BAD_REQUEST,
249+
_,
250+
) = err
251+
{
252+
tracing::info!(%record_name, "failed to create dns record, trying to delete");
253+
254+
let list_records_res = client
255+
.request(&cf::dns::ListDnsRecords {
256+
zone_identifier: zone_id,
257+
params: cf::dns::ListDnsRecordsParams {
258+
name: Some(record_name.to_string()),
259+
record_type: Some(cf::dns::DnsContent::TXT {
260+
// We aren't filtering by content
261+
content: "".to_string(),
262+
}),
263+
per_page: Some(1),
264+
..Default::default()
265+
},
266+
})
267+
.await?;
268+
269+
if let Some(record) = list_records_res.result.first() {
270+
delete_dns_record(client, zone_id, &record.id).await?;
271+
tracing::info!(%record_name, "deleted dns record");
272+
} else {
273+
tracing::warn!(%record_name, "failed to get matching dns record");
274+
}
275+
}
241276

242-
Ok(create_record_res.result.id)
277+
// Throw error
278+
Err(err.into())
279+
}
280+
}
243281
}
244282

245283
async fn delete_dns_record(

0 commit comments

Comments
 (0)