diff --git a/src/dns_provider/cloudflare.rs b/src/dns_provider/cloudflare.rs index 134c7b7a..48e8939c 100644 --- a/src/dns_provider/cloudflare.rs +++ b/src/dns_provider/cloudflare.rs @@ -1,8 +1,7 @@ use std::net::Ipv4Addr; +use crate::dns_provider::errors::DnsProviderError; use crate::dns_provider::{DnsProvider, Kind}; -use crate::errors::EngineError; -use crate::events::{ToTransmitter, Transmitter}; use crate::models::{Context, Domain}; pub struct Cloudflare { @@ -71,19 +70,11 @@ impl DnsProvider for Cloudflare { vec![Ipv4Addr::new(1, 1, 1, 1), Ipv4Addr::new(1, 0, 0, 1)] } - fn is_valid(&self) -> Result<(), EngineError> { + fn is_valid(&self) -> Result<(), DnsProviderError> { if self.cloudflare_api_token.is_empty() || self.cloudflare_email.is_empty() { - Err(EngineError::new_client_invalid_cloud_provider_credentials( - self.get_event_details(), - )) + Err(DnsProviderError::InvalidCredentials) } else { Ok(()) } } } - -impl ToTransmitter for Cloudflare { - fn to_transmitter(&self) -> Transmitter { - Transmitter::DnsProvider(self.id().to_string(), self.name().to_string()) - } -} diff --git a/src/dns_provider/errors.rs b/src/dns_provider/errors.rs new file mode 100644 index 00000000..8d97bedd --- /dev/null +++ b/src/dns_provider/errors.rs @@ -0,0 +1,7 @@ +use thiserror::Error; + +#[derive(Error, Debug, PartialEq)] +pub enum DnsProviderError { + #[error("Invalid credentials error.")] + InvalidCredentials, +} diff --git a/src/dns_provider/mod.rs b/src/dns_provider/mod.rs index c8233c78..ce52fa81 100644 --- a/src/dns_provider/mod.rs +++ b/src/dns_provider/mod.rs @@ -1,14 +1,14 @@ use std::net::Ipv4Addr; -use crate::errors::EngineError; -use crate::events::{EnvironmentStep, EventDetails, Stage, ToTransmitter}; +use crate::dns_provider::errors::DnsProviderError; use serde::{Deserialize, Serialize}; -use crate::models::{Context, Domain, QoveryIdentifier}; +use crate::models::{Context, Domain}; pub mod cloudflare; +pub mod errors; -pub trait DnsProvider: ToTransmitter { +pub trait DnsProvider { fn context(&self) -> &Context; fn provider_name(&self) -> &str; fn kind(&self) -> Kind; @@ -21,19 +21,7 @@ pub trait DnsProvider: ToTransmitter { fn token(&self) -> &str; fn domain(&self) -> &Domain; fn resolvers(&self) -> Vec; - fn is_valid(&self) -> Result<(), EngineError>; - fn get_event_details(&self) -> EventDetails { - let context = self.context(); - EventDetails::new( - None, - QoveryIdentifier::from(context.organization_id().to_string()), - QoveryIdentifier::from(context.cluster_id().to_string()), - QoveryIdentifier::from(context.execution_id().to_string()), - None, - Stage::Environment(EnvironmentStep::Deploy), - self.to_transmitter(), - ) - } + fn is_valid(&self) -> Result<(), DnsProviderError>; } #[derive(Serialize, Deserialize, Clone, Debug)] diff --git a/src/engine.rs b/src/engine.rs index 58a11192..a4c22bfe 100644 --- a/src/engine.rs +++ b/src/engine.rs @@ -7,6 +7,7 @@ use crate::cloud_provider::kubernetes::Kubernetes; use crate::cloud_provider::CloudProvider; use crate::container_registry::errors::ContainerRegistryError; use crate::container_registry::ContainerRegistry; +use crate::dns_provider::errors::DnsProviderError; use crate::dns_provider::DnsProvider; use crate::errors::EngineError; use crate::models::Context; @@ -20,7 +21,7 @@ pub enum EngineConfigError { #[error("Cloud provider is not valid error: {0}")] CloudProviderNotValid(EngineError), #[error("DNS provider is not valid error: {0}")] - DnsProviderNotValid(EngineError), + DnsProviderNotValid(DnsProviderError), #[error("Kubernetes is not valid error: {0}")] KubernetesNotValid(EngineError), }