diff --git a/svc/Cargo.lock b/svc/Cargo.lock index bb6904ed40..82733d1b87 100644 --- a/svc/Cargo.lock +++ b/svc/Cargo.lock @@ -967,7 +967,7 @@ checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.55", ] [[package]] @@ -2057,14 +2057,14 @@ version = "0.1.0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.55", ] [[package]] name = "chrono" -version = "0.4.37" +version = "0.4.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a0d04d43504c61aa6c7531f1871dd0d418d91130162063b789da00fd7057a5e" +checksum = "8eaf5903dcbc0a39312feb77df2ff4c76387d591b9fc7b04a238dcf8bb62639a" dependencies = [ "android-tzdata", "iana-time-zone", @@ -2743,7 +2743,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.55", ] [[package]] @@ -2797,7 +2797,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.58", + "syn 2.0.55", ] [[package]] @@ -2808,7 +2808,7 @@ checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" dependencies = [ "darling_core", "quote", - "syn 2.0.58", + "syn 2.0.55", ] [[package]] @@ -3473,7 +3473,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.55", ] [[package]] @@ -6099,7 +6099,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.55", ] [[package]] @@ -6110,9 +6110,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.102" +version = "0.9.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" +checksum = "dda2b0f344e78efc2facf7d195d098df0dd72151b26ab98da807afc26c198dff" dependencies = [ "cc", "libc", @@ -6289,7 +6289,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.55", ] [[package]] @@ -6330,7 +6330,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.55", ] [[package]] @@ -6384,6 +6384,12 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" +[[package]] +name = "portable-atomic" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" + [[package]] name = "posthog-core" version = "0.1.0" @@ -7230,7 +7236,7 @@ version = "0.1.0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.55", ] [[package]] @@ -7760,7 +7766,7 @@ checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.55", ] [[package]] @@ -7813,7 +7819,7 @@ checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.55", ] [[package]] @@ -7862,7 +7868,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.55", ] [[package]] @@ -8362,7 +8368,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.58", + "syn 2.0.55", ] [[package]] @@ -8384,9 +8390,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.58" +version = "2.0.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687" +checksum = "002a1b3dbf967edfafc32655d0f377ab0bb7b994aa1d32c8cc7e9b8bf3ebb8f0" dependencies = [ "proc-macro2", "quote", @@ -8692,7 +8698,7 @@ checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.55", ] [[package]] @@ -8858,7 +8864,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.55", ] [[package]] @@ -9090,7 +9096,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.55", ] [[package]] @@ -9961,7 +9967,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.55", "wasm-bindgen-shared", ] @@ -9995,7 +10001,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.55", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -10306,7 +10312,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.55", ] [[package]] diff --git a/svc/pkg/cluster/db/cluster/migrations/20231201000927_init.up.sql b/svc/pkg/cluster/db/cluster/migrations/20231201000927_init.up.sql index 02259d1460..b9a5c4a52d 100644 --- a/svc/pkg/cluster/db/cluster/migrations/20231201000927_init.up.sql +++ b/svc/pkg/cluster/db/cluster/migrations/20231201000927_init.up.sql @@ -54,7 +54,8 @@ CREATE TABLE linode_misc ( -- Stores data for destroying cloudflare resources CREATE TABLE cloudflare_misc ( server_id UUID PRIMARY KEY REFERENCES servers (server_id), - dns_record_id TEXT NOT NULL + dns_record_id TEXT NOT NULL, + secondary_dns_record_id TEXT ); CREATE TABLE server_images ( diff --git a/svc/pkg/cluster/util/gen/hash.txt b/svc/pkg/cluster/util/gen/hash.txt index 652200154b..95c8a34aa8 100644 --- a/svc/pkg/cluster/util/gen/hash.txt +++ b/svc/pkg/cluster/util/gen/hash.txt @@ -1 +1 @@ -45f7e902872ba12b086bbc92421c50a9ae1fd5cc \ No newline at end of file +45f7e902872ba12b086bbc92421c50a9ae1fd5cc diff --git a/svc/pkg/cluster/worker/src/workers/server_dns_create.rs b/svc/pkg/cluster/worker/src/workers/server_dns_create.rs index 889bc02551..61df7348f9 100644 --- a/svc/pkg/cluster/worker/src/workers/server_dns_create.rs +++ b/svc/pkg/cluster/worker/src/workers/server_dns_create.rs @@ -36,11 +36,6 @@ async fn worker( let cf_token = util::env::read_secret(&["cloudflare", "terraform", "auth_token"]).await?; let zone_id = unwrap!(util::env::cloudflare::zone::job::id(), "dns not configured"); - let record_name = format!( - "*.lobby.{}.{}", - server.datacenter_id, - unwrap!(util::env::domain_job()) - ); let public_ip = server.public_ip.as_str().parse::()?; // Create cloudflare HTTP client @@ -51,6 +46,11 @@ async fn worker( ) .map_err(crate::CloudflareError::from)?; + let record_name = format!( + "*.lobby.{}.{}", + server.datacenter_id, + unwrap!(util::env::domain_job()), + ); let create_record_res = client .request(&cf::dns::CreateDnsRecord { zone_identifier: zone_id, @@ -63,22 +63,50 @@ async fn worker( }, }) .await?; - - // Save record id for deletion let record_id = create_record_res.result.id; + + let secondary_record_name = format!( + "lobby.{}.{}", + server.datacenter_id, + unwrap!(util::env::domain_job()), + ); + let create_secondary_record_res = client + .request(&cf::dns::CreateDnsRecord { + zone_identifier: zone_id, + params: cf::dns::CreateDnsRecordParams { + name: &secondary_record_name, + content: cf::dns::DnsContent::A { content: public_ip }, + proxied: Some(false), + ttl: Some(60), + priority: None, + }, + }) + .await; + + // Optionally get secondary record id + let secondary_dns_record_id = create_secondary_record_res + .as_ref() + .ok() + .map(|res| res.result.id.clone()); + + // Save record ids for deletion sql_execute!( [ctx] " INSERT INTO db_cluster.cloudflare_misc ( server_id, - dns_record_id + dns_record_id, + dns_record_id_secondary ) VALUES ($1, $2) ", server_id, record_id, + secondary_dns_record_id ) .await?; + create_secondary_record_res?; + Ok(()) }