From cdee6a194252758bfec395a1ae36749b67424358 Mon Sep 17 00:00:00 2001 From: gonzalezzfelipe Date: Mon, 19 Aug 2024 16:13:15 -0300 Subject: [PATCH 1/2] fix: Handle networks without prefix --- .../configs/{mainnet.toml => cardano-mainnet.toml} | 0 .../configs/{preprod.toml => cardano-preprod.toml} | 0 .../configs/{preview.toml => cardano-preview.toml} | 0 bootstrap/configs/main.tf | 6 +++--- bootstrap/proxy/monitor.tf | 4 ++-- bootstrap/services/main.tf | 2 +- bootstrap/variables.tf | 2 +- operator/src/controller.rs | 11 ++++++++++- proxy/src/main.rs | 11 ++++++++++- 9 files changed, 27 insertions(+), 9 deletions(-) rename bootstrap/configs/{mainnet.toml => cardano-mainnet.toml} (100%) rename bootstrap/configs/{preprod.toml => cardano-preprod.toml} (100%) rename bootstrap/configs/{preview.toml => cardano-preview.toml} (100%) diff --git a/bootstrap/configs/mainnet.toml b/bootstrap/configs/cardano-mainnet.toml similarity index 100% rename from bootstrap/configs/mainnet.toml rename to bootstrap/configs/cardano-mainnet.toml diff --git a/bootstrap/configs/preprod.toml b/bootstrap/configs/cardano-preprod.toml similarity index 100% rename from bootstrap/configs/preprod.toml rename to bootstrap/configs/cardano-preprod.toml diff --git a/bootstrap/configs/preview.toml b/bootstrap/configs/cardano-preview.toml similarity index 100% rename from bootstrap/configs/preview.toml rename to bootstrap/configs/cardano-preview.toml diff --git a/bootstrap/configs/main.tf b/bootstrap/configs/main.tf index b1a7355..3aadcc7 100644 --- a/bootstrap/configs/main.tf +++ b/bootstrap/configs/main.tf @@ -1,8 +1,8 @@ locals { default_address_by_network = { - "mainnet" : "node-mainnet-stable.ext-nodes-m1.svc.cluster.local:3000" - "preprod" : "node-preprod-stable.ext-nodes-m1.svc.cluster.local:3000" - "preview" : "node-preview-stable.ext-nodes-m1.svc.cluster.local:3000" + "cardano-mainnet" : "node-mainnet-stable.ext-nodes-m1.svc.cluster.local:3000" + "cardano-preprod" : "node-preprod-stable.ext-nodes-m1.svc.cluster.local:3000" + "cardano-preview" : "node-preview-stable.ext-nodes-m1.svc.cluster.local:3000" "vector-testnet" : "85.90.225.26:7532" } } diff --git a/bootstrap/proxy/monitor.tf b/bootstrap/proxy/monitor.tf index 337b784..3a47ef7 100644 --- a/bootstrap/proxy/monitor.tf +++ b/bootstrap/proxy/monitor.tf @@ -7,13 +7,13 @@ resource "kubernetes_manifest" "proxy_monitor" { "app.kubernetes.io/component" = "o11y" "app.kubernetes.io/part-of" = "demeter" } - name = "proxy" + name = local.name namespace = var.namespace } spec = { selector = { matchLabels = { - role = "proxy" + role = local.role } } podMetricsEndpoints = [ diff --git a/bootstrap/services/main.tf b/bootstrap/services/main.tf index 04cafdb..f942302 100644 --- a/bootstrap/services/main.tf +++ b/bootstrap/services/main.tf @@ -4,7 +4,7 @@ variable "namespace" { variable "networks" { type = list(string) - default = ["mainnet", "preprod", "preview", "vector-testnet"] + default = ["cardano-mainnet", "cardano-preprod", "cardano-preview", "cardano-vector-testnet"] } resource "kubernetes_service_v1" "well_known_service_grpc" { diff --git a/bootstrap/variables.tf b/bootstrap/variables.tf index 11b7215..9254e3c 100644 --- a/bootstrap/variables.tf +++ b/bootstrap/variables.tf @@ -4,7 +4,7 @@ variable "namespace" { variable "networks" { type = list(string) - default = ["mainnet", "preprod", "preview", "vector-testnet"] + default = ["cardano-mainnet", "cardano-preprod", "cardano-preview", "vector-testnet"] } variable "network_addresses" { diff --git a/operator/src/controller.rs b/operator/src/controller.rs index 7d6534a..692e92c 100644 --- a/operator/src/controller.rs +++ b/operator/src/controller.rs @@ -61,7 +61,16 @@ async fn reconcile(crd: Arc, ctx: Arc) -> Result { Some(key) => key.clone(), None => build_api_key(&crd).await?, }; - let (hostname, _) = build_hostname(&key, &crd.spec.network); + let host_network = if &crd.spec.network == "mainnet" { + "cardano-mainnet" + } else if &crd.spec.network == "preprod" { + "cardano-preprod" + } else if &crd.spec.network == "preview" { + "cardano-preview" + } else { + &crd.spec.network + }; + let (hostname, _) = build_hostname(&key, host_network); let status = UtxoRpcPortStatus { grpc_endpoint_url: hostname, diff --git a/proxy/src/main.rs b/proxy/src/main.rs index 1a9b8a9..2d5f1db 100644 --- a/proxy/src/main.rs +++ b/proxy/src/main.rs @@ -89,7 +89,16 @@ impl Display for Consumer { } impl From<&UtxoRpcPort> for Consumer { fn from(value: &UtxoRpcPort) -> Self { - let network = value.spec.network.to_string(); + let network = if value.spec.network == "mainnet" { + "cardano-mainnet".to_string() + } else if value.spec.network == "preprod" { + "cardano-preprod".to_string() + } else if value.spec.network == "preview" { + "cardano-preview".to_string() + } else { + value.spec.network.to_string() + }; + let tier = value .spec .throughput_tier From e4eae45edfd249ada8fb4b6291fc33ea2709aa04 Mon Sep 17 00:00:00 2001 From: gonzalezzfelipe Date: Mon, 19 Aug 2024 16:32:55 -0300 Subject: [PATCH 2/2] Use hashmap --- operator/src/controller.rs | 17 ++++++----------- operator/src/utils.rs | 17 +++++++++++++++++ proxy/src/main.rs | 13 ++----------- 3 files changed, 25 insertions(+), 22 deletions(-) diff --git a/operator/src/controller.rs b/operator/src/controller.rs index 692e92c..fdaab4b 100644 --- a/operator/src/controller.rs +++ b/operator/src/controller.rs @@ -8,7 +8,10 @@ use serde::{Deserialize, Serialize}; use std::{sync::Arc, time::Duration}; use tracing::{error, info, instrument}; -use crate::{build_api_key, build_hostname, patch_resource_status, Error, Metrics, Result, State}; +use crate::{ + build_api_key, build_hostname, handle_legacy_networks, patch_resource_status, Error, Metrics, + Result, State, +}; pub static UTXORPX_PORT_FINALIZER: &str = "utxorpcports.demeter.run"; @@ -61,16 +64,8 @@ async fn reconcile(crd: Arc, ctx: Arc) -> Result { Some(key) => key.clone(), None => build_api_key(&crd).await?, }; - let host_network = if &crd.spec.network == "mainnet" { - "cardano-mainnet" - } else if &crd.spec.network == "preprod" { - "cardano-preprod" - } else if &crd.spec.network == "preview" { - "cardano-preview" - } else { - &crd.spec.network - }; - let (hostname, _) = build_hostname(&key, host_network); + let host_network = handle_legacy_networks(&crd.spec.network); + let (hostname, _) = build_hostname(&key, &host_network); let status = UtxoRpcPortStatus { grpc_endpoint_url: hostname, diff --git a/operator/src/utils.rs b/operator/src/utils.rs index 42e7135..4a951cc 100644 --- a/operator/src/utils.rs +++ b/operator/src/utils.rs @@ -7,10 +7,22 @@ use kube::{ discovery::ApiResource, Api, Client, ResourceExt, }; +use lazy_static::lazy_static; use serde_json::json; +use std::collections::HashMap; use crate::{get_config, Error, UtxoRpcPort}; +lazy_static! { + static ref LEGACY_NETWORKS: HashMap<&'static str, String> = { + let mut m = HashMap::new(); + m.insert("mainnet", "cardano-mainnet".into()); + m.insert("preprod", "cardano-preprod".into()); + m.insert("preview", "cardano-preview".into()); + m + }; +} + pub async fn patch_resource_status( client: Client, namespace: &str, @@ -27,6 +39,11 @@ pub async fn patch_resource_status( Ok(()) } +pub fn handle_legacy_networks(network: &str) -> String { + let default = network.to_string(); + LEGACY_NETWORKS.get(network).unwrap_or(&default).to_string() +} + pub fn build_hostname(key: &str, network: &str) -> (String, String) { let config = get_config(); let extension_subdomain = &config.extension_subdomain; diff --git a/proxy/src/main.rs b/proxy/src/main.rs index 2d5f1db..e9d60a8 100644 --- a/proxy/src/main.rs +++ b/proxy/src/main.rs @@ -2,7 +2,7 @@ use auth::AuthBackgroundService; use config::Config; use dotenv::dotenv; use health::HealthBackgroundService; -use operator::{kube::ResourceExt, UtxoRpcPort}; +use operator::{handle_legacy_networks, kube::ResourceExt, UtxoRpcPort}; use pingora::{ server::{configuration::Opt, Server}, services::background::background_service, @@ -89,16 +89,7 @@ impl Display for Consumer { } impl From<&UtxoRpcPort> for Consumer { fn from(value: &UtxoRpcPort) -> Self { - let network = if value.spec.network == "mainnet" { - "cardano-mainnet".to_string() - } else if value.spec.network == "preprod" { - "cardano-preprod".to_string() - } else if value.spec.network == "preview" { - "cardano-preview".to_string() - } else { - value.spec.network.to_string() - }; - + let network = handle_legacy_networks(&value.spec.network); let tier = value .spec .throughput_tier