mirror of
https://github.com/jlengrand/engine.git
synced 2026-03-10 08:11:21 +00:00
feat: create DNS providers errors types (#655)
This commit is contained in:
@@ -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())
|
||||
}
|
||||
}
|
||||
|
||||
7
src/dns_provider/errors.rs
Normal file
7
src/dns_provider/errors.rs
Normal file
@@ -0,0 +1,7 @@
|
||||
use thiserror::Error;
|
||||
|
||||
#[derive(Error, Debug, PartialEq)]
|
||||
pub enum DnsProviderError {
|
||||
#[error("Invalid credentials error.")]
|
||||
InvalidCredentials,
|
||||
}
|
||||
@@ -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)]
|
||||
|
||||
@@ -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),
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user