feat: create DNS providers errors types (#655)

This commit is contained in:
BenjaminCh
2022-03-25 16:34:38 +01:00
committed by GitHub
parent ef8636830a
commit 69b9d9d50c
4 changed files with 17 additions and 30 deletions

View File

@@ -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())
}
}

View File

@@ -0,0 +1,7 @@
use thiserror::Error;
#[derive(Error, Debug, PartialEq)]
pub enum DnsProviderError {
#[error("Invalid credentials error.")]
InvalidCredentials,
}

View File

@@ -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<Ipv4Addr>;
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)]

View File

@@ -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),
}