From 603c5c3ff666e428aec27ac28a53d80a4b98dfcb Mon Sep 17 00:00:00 2001 From: Romain GERARD Date: Fri, 25 Mar 2022 14:50:27 +0100 Subject: [PATCH] fmt --- rustfmt.toml | 4 +- src/build_platform/local_docker.rs | 34 +++- src/build_platform/mod.rs | 7 +- .../aws/kubernetes/helm_charts.rs | 15 +- src/cloud_provider/aws/kubernetes/mod.rs | 91 ++++++--- src/cloud_provider/aws/kubernetes/roles.rs | 5 +- src/cloud_provider/aws/regions.rs | 5 +- .../digitalocean/databases/mongodb.rs | 7 +- .../digitalocean/databases/mysql.rs | 7 +- .../digitalocean/databases/postgresql.rs | 7 +- .../digitalocean/databases/redis.rs | 7 +- .../digitalocean/do_api_common.rs | 6 +- .../digitalocean/kubernetes/doks_api.rs | 10 +- .../digitalocean/kubernetes/helm_charts.rs | 10 +- .../digitalocean/kubernetes/mod.rs | 82 ++++++--- .../digitalocean/network/vpc.rs | 18 +- src/cloud_provider/helm.rs | 29 ++- src/cloud_provider/kubernetes.rs | 73 +++++--- src/cloud_provider/qovery.rs | 15 +- .../scaleway/databases/mongodb.rs | 7 +- .../scaleway/databases/redis.rs | 7 +- .../scaleway/kubernetes/helm_charts.rs | 10 +- src/cloud_provider/scaleway/kubernetes/mod.rs | 105 +++++++---- src/cloud_provider/service.rs | 51 ++++-- src/cloud_provider/utilities.rs | 47 +++-- src/cmd/command.rs | 11 +- src/cmd/docker.rs | 33 +++- src/cmd/helm.rs | 9 +- src/cmd/kubectl.rs | 34 +++- src/cmd/structs.rs | 10 +- src/cmd/terraform.rs | 9 +- src/container_registry/docr.rs | 7 +- src/dns_provider/cloudflare.rs | 4 +- src/error.rs | 6 +- src/errors/mod.rs | 173 +++++++++++++++--- src/events/mod.rs | 32 +++- src/fs.rs | 6 +- src/git.rs | 43 ++++- src/logger.rs | 35 +++- src/models.rs | 12 +- src/object_storage/s3.rs | 6 +- src/template.rs | 5 +- test_utilities/src/aws.rs | 9 +- test_utilities/src/digitalocean.rs | 9 +- test_utilities/src/scaleway.rs | 19 +- test_utilities/src/utilities.rs | 22 ++- tests/aws/aws_databases.rs | 5 +- tests/aws/aws_environment.rs | 40 +++- tests/aws/aws_kubernetes.rs | 5 +- tests/aws/aws_s3.rs | 6 +- tests/digitalocean/do_databases.rs | 13 +- tests/digitalocean/do_environment.rs | 57 +++++- tests/digitalocean/do_spaces.rs | 6 +- tests/scaleway/scw_databases.rs | 13 +- tests/scaleway/scw_environment.rs | 73 ++++++-- tests/scaleway/scw_object_storage.rs | 7 +- 56 files changed, 1067 insertions(+), 311 deletions(-) diff --git a/rustfmt.toml b/rustfmt.toml index d5057429..abb6a864 100644 --- a/rustfmt.toml +++ b/rustfmt.toml @@ -1,5 +1,5 @@ edition = "2018" max_width = 120 -fn_call_width = 100 -attr_fn_like_width = 100 +fn_call_width = 80 +attr_fn_like_width = 80 use_field_init_shorthand = true diff --git a/src/build_platform/local_docker.rs b/src/build_platform/local_docker.rs index 4c6d00b2..e627f123 100644 --- a/src/build_platform/local_docker.rs +++ b/src/build_platform/local_docker.rs @@ -131,7 +131,11 @@ impl LocalDocker { // Going to inject only env var that are used by the dockerfile // so extracting it and modifying the image tag and env variables let dockerfile_content = fs::read(dockerfile_complete_path).map_err(|err| { - BuildError::IoError(build.image.application_id.clone(), "reading dockerfile content".to_string(), err) + BuildError::IoError( + build.image.application_id.clone(), + "reading dockerfile content".to_string(), + err, + ) })?; let dockerfile_args = match extract_dockerfile_args(dockerfile_content) { Ok(dockerfile_args) => dockerfile_args, @@ -324,7 +328,11 @@ impl LocalDocker { format!("build/{}", build.image.name.as_str()), ) .map_err(|err| { - BuildError::IoError(build.image.application_id.clone(), "when creating build workspace".to_string(), err) + BuildError::IoError( + build.image.application_id.clone(), + "when creating build workspace".to_string(), + err, + ) }) } } @@ -358,15 +366,20 @@ impl BuildPlatform for LocalDocker { // LOGGING let repository_root_path = PathBuf::from(self.get_repository_build_root_path(build)?); - let msg = format!("📥 Cloning repository: {} to {:?}", build.git_repository.url, repository_root_path); + let msg = format!( + "📥 Cloning repository: {} to {:?}", + build.git_repository.url, repository_root_path + ); listeners_helper.deployment_in_progress(ProgressInfo::new( ProgressScope::Application { id: app_id.clone() }, ProgressLevel::Info, Some(msg.clone()), self.context.execution_id(), )); - self.logger - .log(LogLevel::Info, EngineEvent::Info(event_details, EventMessage::new_from_safe(msg))); + self.logger.log( + LogLevel::Info, + EngineEvent::Info(event_details, EventMessage::new_from_safe(msg)), + ); // LOGGING // Create callback that will be called by git to provide credentials per user @@ -382,7 +395,10 @@ impl BuildPlatform for LocalDocker { } if let Some(Credentials { login, password }) = &build.git_repository.credentials { - creds.push((CredentialType::USER_PASS_PLAINTEXT, Cred::userpass_plaintext(login, password).unwrap())); + creds.push(( + CredentialType::USER_PASS_PLAINTEXT, + Cred::userpass_plaintext(login, password).unwrap(), + )); } creds @@ -448,8 +464,10 @@ impl BuildPlatform for LocalDocker { // If the dockerfile does not exist, abort if !dockerfile_absolute_path.is_file() { - let msg = - format!("Specified dockerfile path {:?} does not exist within the repository", &dockerfile_path); + let msg = format!( + "Specified dockerfile path {:?} does not exist within the repository", + &dockerfile_path + ); return Err(BuildError::InvalidConfig(app_id, msg)); } diff --git a/src/build_platform/mod.rs b/src/build_platform/mod.rs index eeedb4a1..be1ce938 100644 --- a/src/build_platform/mod.rs +++ b/src/build_platform/mod.rs @@ -138,7 +138,12 @@ impl Image { &self.repository_name } pub fn full_image_name_with_tag(&self) -> String { - format!("{}/{}:{}", self.registry_url.host_str().unwrap_or_default(), self.name, self.tag) + format!( + "{}/{}:{}", + self.registry_url.host_str().unwrap_or_default(), + self.name, + self.tag + ) } pub fn full_image_name(&self) -> String { diff --git a/src/cloud_provider/aws/kubernetes/helm_charts.rs b/src/cloud_provider/aws/kubernetes/helm_charts.rs index 6e9f7b71..081a9c7d 100644 --- a/src/cloud_provider/aws/kubernetes/helm_charts.rs +++ b/src/cloud_provider/aws/kubernetes/helm_charts.rs @@ -67,7 +67,10 @@ pub fn aws_helm_charts( Ok(x) => x, Err(e) => { let message_safe = "Can't deploy helm chart as Qovery terraform config file has not been rendered by Terraform. Are you running it in dry run mode?"; - return Err(CommandError::new(format!("{}, error: {:?}", message_safe, e), Some(message_safe.to_string()))); + return Err(CommandError::new( + format!("{}, error: {:?}", message_safe, e), + Some(message_safe.to_string()), + )); } }; let chart_prefix = chart_prefix_path.unwrap_or("./"); @@ -77,7 +80,10 @@ pub fn aws_helm_charts( Ok(config) => config, Err(e) => { let message_safe = format!("Error while parsing terraform config file {}", qovery_terraform_config_file); - return Err(CommandError::new(format!("{}, error: {:?}", message_safe, e), Some(message_safe))); + return Err(CommandError::new( + format!("{}, error: {:?}", message_safe, e), + Some(message_safe), + )); } }; @@ -1348,7 +1354,10 @@ impl AwsVpcCniChart { "Error while getting daemonset info for chart {}, won't deploy CNI chart.", &self.chart_info.name ); - Err(CommandError::new(format!("{}, error: {:?}", message_safe, e), Some(message_safe))) + Err(CommandError::new( + format!("{}, error: {:?}", message_safe, e), + Some(message_safe), + )) } } } diff --git a/src/cloud_provider/aws/kubernetes/mod.rs b/src/cloud_provider/aws/kubernetes/mod.rs index 11676b2f..12243714 100644 --- a/src/cloud_provider/aws/kubernetes/mod.rs +++ b/src/cloud_provider/aws/kubernetes/mod.rs @@ -391,7 +391,10 @@ impl EKS { // Qovery features context.insert("log_history_enabled", &self.context.is_feature_enabled(&Features::LogsHistory)); - context.insert("metrics_history_enabled", &self.context.is_feature_enabled(&Features::MetricsHistory)); + context.insert( + "metrics_history_enabled", + &self.context.is_feature_enabled(&Features::MetricsHistory), + ); // DNS configuration let managed_dns_list = vec![self.dns_provider.name()]; @@ -406,8 +409,14 @@ impl EKS { context.insert("managed_dns_domains_helm_format", &managed_dns_domains_helm_format); context.insert("managed_dns_domains_root_helm_format", &managed_dns_domains_root_helm_format); context.insert("managed_dns_domains_terraform_format", &managed_dns_domains_terraform_format); - context.insert("managed_dns_domains_root_terraform_format", &managed_dns_domains_root_terraform_format); - context.insert("managed_dns_resolvers_terraform_format", &managed_dns_resolvers_terraform_format); + context.insert( + "managed_dns_domains_root_terraform_format", + &managed_dns_domains_root_terraform_format, + ); + context.insert( + "managed_dns_resolvers_terraform_format", + &managed_dns_resolvers_terraform_format, + ); match self.dns_provider.kind() { dns_provider::Kind::Cloudflare => { @@ -478,8 +487,10 @@ impl EKS { .secret_access_key .as_str(), ); - context - .insert("aws_region_tfstates_account", self.cloud_provider().terraform_state_credentials().region.as_str()); + context.insert( + "aws_region_tfstates_account", + self.cloud_provider().terraform_state_credentials().region.as_str(), + ); context.insert("aws_region", &self.region()); context.insert("aws_terraform_backend_bucket", "qovery-terrafom-tfstates"); @@ -784,9 +795,10 @@ impl EKS { ); match kubectl_exec_get_events(kubeconfig_path, None, environment_variables) { - Ok(ok_line) => self - .logger() - .log(LogLevel::Info, EngineEvent::Deploying(event_details, EventMessage::new(ok_line, None))), + Ok(ok_line) => self.logger().log( + LogLevel::Info, + EngineEvent::Deploying(event_details, EventMessage::new(ok_line, None)), + ), Err(err) => self.logger().log( LogLevel::Error, EngineEvent::Deploying( @@ -984,8 +996,10 @@ impl EKS { Ok(_) => { let message = format!("Kubernetes cluster {} successfully paused", self.name()); self.send_to_customer(&message, &listeners_helper); - self.logger() - .log(LogLevel::Info, EngineEvent::Pausing(event_details, EventMessage::new_from_safe(message))); + self.logger().log( + LogLevel::Info, + EngineEvent::Pausing(event_details, EventMessage::new_from_safe(message)), + ); Ok(()) } Err(e) => Err(EngineError::new_terraform_error_while_executing_pipeline(event_details, e)), @@ -1072,11 +1086,16 @@ impl EKS { // should apply before destroy to be sure destroy will compute on all resources // don't exit on failure, it can happen if we resume a destroy process - let message = - format!("Ensuring everything is up to date before deleting cluster {}/{}", self.name(), self.id()); + let message = format!( + "Ensuring everything is up to date before deleting cluster {}/{}", + self.name(), + self.id() + ); self.send_to_customer(&message, &listeners_helper); - self.logger() - .log(LogLevel::Info, EngineEvent::Deleting(event_details.clone(), EventMessage::new_from_safe(message))); + self.logger().log( + LogLevel::Info, + EngineEvent::Deleting(event_details.clone(), EventMessage::new_from_safe(message)), + ); self.logger().log( LogLevel::Info, @@ -1161,8 +1180,10 @@ impl EKS { } } Err(e) => { - let message_safe = - format!("Error while getting all namespaces for Kubernetes cluster {}", self.name_with_id(),); + let message_safe = format!( + "Error while getting all namespaces for Kubernetes cluster {}", + self.name_with_id(), + ); self.logger().log( LogLevel::Error, EngineEvent::Deleting( @@ -1185,9 +1206,11 @@ impl EKS { ); // delete custom metrics api to avoid stale namespaces on deletion - let helm = - Helm::new(&kubernetes_config_file_path, &self.cloud_provider.credentials_environment_variables()) - .map_err(|e| to_engine_error(&event_details, e))?; + let helm = Helm::new( + &kubernetes_config_file_path, + &self.cloud_provider.credentials_environment_variables(), + ) + .map_err(|e| to_engine_error(&event_details, e))?; let chart = ChartInfo::new_from_release_name("metrics-server", "kube-system"); helm.uninstall(&chart, &[]) .map_err(|e| to_engine_error(&event_details, e))?; @@ -1325,8 +1348,10 @@ impl EKS { let message = format!("Deleting Kubernetes cluster {}/{}", self.name(), self.id()); self.send_to_customer(&message, &listeners_helper); - self.logger() - .log(LogLevel::Info, EngineEvent::Deleting(event_details.clone(), EventMessage::new_from_safe(message))); + self.logger().log( + LogLevel::Info, + EngineEvent::Deleting(event_details.clone(), EventMessage::new_from_safe(message)), + ); self.logger().log( LogLevel::Info, @@ -1356,9 +1381,10 @@ impl EKS { ); Ok(()) } - Err(Operation { error, .. }) => { - Err(EngineError::new_terraform_error_while_executing_destroy_pipeline(event_details, error)) - } + Err(Operation { error, .. }) => Err(EngineError::new_terraform_error_while_executing_destroy_pipeline( + event_details, + error, + )), Err(retry::Error::Internal(msg)) => Err(EngineError::new_terraform_error_while_executing_destroy_pipeline( event_details, CommandError::new(msg, None), @@ -1473,7 +1499,12 @@ impl Kubernetes for EKS { let listeners_helper = ListenersHelper::new(&self.listeners); self.send_to_customer( - format!("Start preparing EKS upgrade process {} cluster with id {}", self.name(), self.id()).as_str(), + format!( + "Start preparing EKS upgrade process {} cluster with id {}", + self.name(), + self.id() + ) + .as_str(), &listeners_helper, ); self.logger().log( @@ -1631,7 +1662,10 @@ impl Kubernetes for EKS { // disable cluster autoscaler to avoid interfering with AWS upgrade procedure context.insert("enable_cluster_autoscaler", &false); - context.insert("eks_workers_version", format!("{}", &kubernetes_upgrade_status.requested_version).as_str()); + context.insert( + "eks_workers_version", + format!("{}", &kubernetes_upgrade_status.requested_version).as_str(), + ); if let Err(e) = crate::template::generate_and_copy_all_files_into_dir( self.template_directory.as_str(), @@ -1661,7 +1695,10 @@ impl Kubernetes for EKS { )); } - self.send_to_customer(format!("Upgrading Kubernetes {} worker nodes", self.name()).as_str(), &listeners_helper); + self.send_to_customer( + format!("Upgrading Kubernetes {} worker nodes", self.name()).as_str(), + &listeners_helper, + ); self.logger().log( LogLevel::Info, EngineEvent::Deploying( diff --git a/src/cloud_provider/aws/kubernetes/roles.rs b/src/cloud_provider/aws/kubernetes/roles.rs index 99439ae3..e4593425 100644 --- a/src/cloud_provider/aws/kubernetes/roles.rs +++ b/src/cloud_provider/aws/kubernetes/roles.rs @@ -79,7 +79,10 @@ impl Role { Ok(_) => Ok(true), Err(e) => { let safe_message = format!("Unable to know if `{}` exist on AWS Account", &self.role_name); - return Err(CommandError::new(format!("{}, error: {:?}", safe_message, e), Some(safe_message))); + return Err(CommandError::new( + format!("{}, error: {:?}", safe_message, e), + Some(safe_message), + )); } }; } diff --git a/src/cloud_provider/aws/regions.rs b/src/cloud_provider/aws/regions.rs index 8a942c26..3ede17b0 100644 --- a/src/cloud_provider/aws/regions.rs +++ b/src/cloud_provider/aws/regions.rs @@ -429,7 +429,10 @@ mod tests { let current_zone = AwsZones::from_string(sanitized_zone.to_lowercase()); assert_eq!(current_zone.unwrap(), zone); } - assert_eq!(AwsZones::from_string("eu-west-3x".to_string()), Err(RegionAndZoneErrors::ZoneNotSupported)); + assert_eq!( + AwsZones::from_string("eu-west-3x".to_string()), + Err(RegionAndZoneErrors::ZoneNotSupported) + ); } #[test] diff --git a/src/cloud_provider/digitalocean/databases/mongodb.rs b/src/cloud_provider/digitalocean/databases/mongodb.rs index a526f2bf..61c68859 100644 --- a/src/cloud_provider/digitalocean/databases/mongodb.rs +++ b/src/cloud_provider/digitalocean/databases/mongodb.rs @@ -66,7 +66,12 @@ impl MongoDo { } fn matching_correct_version(&self, event_details: EventDetails) -> Result { - check_service_version(get_self_hosted_mongodb_version(self.version()), self, event_details, self.logger()) + check_service_version( + get_self_hosted_mongodb_version(self.version()), + self, + event_details, + self.logger(), + ) } fn cloud_provider_name(&self) -> &str { diff --git a/src/cloud_provider/digitalocean/databases/mysql.rs b/src/cloud_provider/digitalocean/databases/mysql.rs index f49b78a0..b6d19aad 100644 --- a/src/cloud_provider/digitalocean/databases/mysql.rs +++ b/src/cloud_provider/digitalocean/databases/mysql.rs @@ -66,7 +66,12 @@ impl MySQLDo { } fn matching_correct_version(&self, event_details: EventDetails) -> Result { - check_service_version(get_self_hosted_mysql_version(self.version()), self, event_details, self.logger()) + check_service_version( + get_self_hosted_mysql_version(self.version()), + self, + event_details, + self.logger(), + ) } fn cloud_provider_name(&self) -> &str { diff --git a/src/cloud_provider/digitalocean/databases/postgresql.rs b/src/cloud_provider/digitalocean/databases/postgresql.rs index 44b0309f..db1837d1 100644 --- a/src/cloud_provider/digitalocean/databases/postgresql.rs +++ b/src/cloud_provider/digitalocean/databases/postgresql.rs @@ -66,7 +66,12 @@ impl PostgresDo { } fn matching_correct_version(&self, event_details: EventDetails) -> Result { - check_service_version(get_self_hosted_postgres_version(self.version()), self, event_details, self.logger()) + check_service_version( + get_self_hosted_postgres_version(self.version()), + self, + event_details, + self.logger(), + ) } fn cloud_provider_name(&self) -> &str { diff --git a/src/cloud_provider/digitalocean/databases/redis.rs b/src/cloud_provider/digitalocean/databases/redis.rs index 3437f4a5..0ae77e6f 100644 --- a/src/cloud_provider/digitalocean/databases/redis.rs +++ b/src/cloud_provider/digitalocean/databases/redis.rs @@ -66,7 +66,12 @@ impl RedisDo { } fn matching_correct_version(&self, event_details: EventDetails) -> Result { - check_service_version(get_self_hosted_redis_version(self.version()), self, event_details, self.logger()) + check_service_version( + get_self_hosted_redis_version(self.version()), + self, + event_details, + self.logger(), + ) } fn cloud_provider_name(&self) -> &str { diff --git a/src/cloud_provider/digitalocean/do_api_common.rs b/src/cloud_provider/digitalocean/do_api_common.rs index 296f9202..69471800 100644 --- a/src/cloud_provider/digitalocean/do_api_common.rs +++ b/src/cloud_provider/digitalocean/do_api_common.rs @@ -37,8 +37,10 @@ pub fn do_get_from_api(token: &str, api_type: DoApiType, url_api: String) -> Res match response.status() { StatusCode::OK => Ok(response.text().expect("Cannot get response text")), StatusCode::UNAUTHORIZED => { - let message_safe = - format!("Could not get {} information, ensure your DigitalOcean token is valid.", api_type); + let message_safe = format!( + "Could not get {} information, ensure your DigitalOcean token is valid.", + api_type + ); return Err(CommandError::new( format!("{}, response: {:?}", message_safe, response), Some(message_safe), diff --git a/src/cloud_provider/digitalocean/kubernetes/doks_api.rs b/src/cloud_provider/digitalocean/kubernetes/doks_api.rs index c87b3f1e..3f393de8 100644 --- a/src/cloud_provider/digitalocean/kubernetes/doks_api.rs +++ b/src/cloud_provider/digitalocean/kubernetes/doks_api.rs @@ -26,7 +26,10 @@ pub fn get_doks_info_from_name( } Err(e) => { let safe_message = "Error while trying to deserialize json received from Digital Ocean DOKS API"; - return Err(CommandError::new(format!("{}, error: {}", safe_message, e), Some(safe_message.to_string()))); + return Err(CommandError::new( + format!("{}, error: {}", safe_message, e), + Some(safe_message.to_string()), + )); } } } @@ -47,7 +50,10 @@ fn get_doks_versions_from_api_output(json_content: &str) -> Result Ok(options.options.versions), Err(e) => { let safe_message = "Error while trying to deserialize json received from Digital Ocean DOKS API"; - return Err(CommandError::new(format!("{}, error: {}", safe_message, e), Some(safe_message.to_string()))); + return Err(CommandError::new( + format!("{}, error: {}", safe_message, e), + Some(safe_message.to_string()), + )); } } } diff --git a/src/cloud_provider/digitalocean/kubernetes/helm_charts.rs b/src/cloud_provider/digitalocean/kubernetes/helm_charts.rs index 14024738..4bac2c68 100644 --- a/src/cloud_provider/digitalocean/kubernetes/helm_charts.rs +++ b/src/cloud_provider/digitalocean/kubernetes/helm_charts.rs @@ -121,7 +121,10 @@ pub fn do_helm_charts( Ok(x) => x, Err(e) => { let message_safe = "Can't deploy helm chart as Qovery terraform config file has not been rendered by Terraform. Are you running it in dry run mode?"; - return Err(CommandError::new(format!("{}, error: {:?}", message_safe, e), Some(message_safe.to_string()))); + return Err(CommandError::new( + format!("{}, error: {:?}", message_safe, e), + Some(message_safe.to_string()), + )); } }; let chart_prefix = chart_prefix_path.unwrap_or("./"); @@ -131,7 +134,10 @@ pub fn do_helm_charts( Ok(config) => config, Err(e) => { let message_safe = format!("Error while parsing terraform config file {}", qovery_terraform_config_file); - return Err(CommandError::new(format!("{}, error: {:?}", message_safe, e), Some(message_safe))); + return Err(CommandError::new( + format!("{}, error: {:?}", message_safe, e), + Some(message_safe), + )); } }; diff --git a/src/cloud_provider/digitalocean/kubernetes/mod.rs b/src/cloud_provider/digitalocean/kubernetes/mod.rs index 73b93782..85256d82 100644 --- a/src/cloud_provider/digitalocean/kubernetes/mod.rs +++ b/src/cloud_provider/digitalocean/kubernetes/mod.rs @@ -248,8 +248,14 @@ impl DOKS { context.insert("managed_dns_domains_helm_format", &managed_dns_domains_helm_format); context.insert("managed_dns_domains_root_helm_format", &managed_dns_domains_root_helm_format); context.insert("managed_dns_domains_terraform_format", &managed_dns_domains_terraform_format); - context.insert("managed_dns_domains_root_terraform_format", &managed_dns_domains_root_terraform_format); - context.insert("managed_dns_resolvers_terraform_format", &managed_dns_resolvers_terraform_format); + context.insert( + "managed_dns_domains_root_terraform_format", + &managed_dns_domains_root_terraform_format, + ); + context.insert( + "managed_dns_resolvers_terraform_format", + &managed_dns_resolvers_terraform_format, + ); match self.dns_provider.kind() { dns_provider::Kind::Cloudflare => { context.insert("external_dns_provider", self.dns_provider.provider_name()); @@ -290,7 +296,10 @@ impl DOKS { // Qovery features context.insert("log_history_enabled", &self.context.is_feature_enabled(&Features::LogsHistory)); - context.insert("metrics_history_enabled", &self.context.is_feature_enabled(&Features::MetricsHistory)); + context.insert( + "metrics_history_enabled", + &self.context.is_feature_enabled(&Features::MetricsHistory), + ); if self.context.resource_expiration_in_seconds().is_some() { context.insert("resource_expiration_in_seconds", &self.context.resource_expiration_in_seconds()) } @@ -320,8 +329,10 @@ impl DOKS { .as_str(), ); - context - .insert("aws_region_tfstates_account", self.cloud_provider().terraform_state_credentials().region.as_str()); + context.insert( + "aws_region_tfstates_account", + self.cloud_provider().terraform_state_credentials().region.as_str(), + ); context.insert("nginx_enable_horizontal_autoscaler", "true"); context.insert("nginx_minimum_replicas", "2"); @@ -427,7 +438,9 @@ impl DOKS { // TODO(benjaminch): `qovery-` to be added into Rust name directly everywhere match get_doks_info_from_name(json_content.as_str(), format!("qovery-{}", self.id())) { Ok(cluster_result) => match cluster_result { - None => Err(CommandError::new_from_safe_message("Cluster doesn't exist on DO side.".to_string())), + None => Err(CommandError::new_from_safe_message( + "Cluster doesn't exist on DO side.".to_string(), + )), Some(cluster) => Ok(cluster), }, Err(e) => Err(e), @@ -443,7 +456,11 @@ impl DOKS { execution_id: self.context.execution_id().to_string(), }, ProgressLevel::Info, - Some(format!("start to create Digital Ocean Kubernetes cluster {} with id {}", self.name(), self.id())), + Some(format!( + "start to create Digital Ocean Kubernetes cluster {} with id {}", + self.name(), + self.id() + )), self.context.execution_id(), )); self.logger().log( @@ -753,9 +770,10 @@ impl DOKS { ); match kubectl_exec_get_events(kubeconfig_path, None, environment_variables) { - Ok(ok_line) => self - .logger() - .log(LogLevel::Info, EngineEvent::Deploying(event_details, EventMessage::new(ok_line, None))), + Ok(ok_line) => self.logger().log( + LogLevel::Info, + EngineEvent::Deploying(event_details, EventMessage::new(ok_line, None)), + ), Err(err) => self.logger().log( LogLevel::Error, EngineEvent::Deploying( @@ -866,11 +884,16 @@ impl DOKS { // should apply before destroy to be sure destroy will compute on all resources // don't exit on failure, it can happen if we resume a destroy process - let message = - format!("Ensuring everything is up to date before deleting cluster {}/{}", self.name(), self.id()); + let message = format!( + "Ensuring everything is up to date before deleting cluster {}/{}", + self.name(), + self.id() + ); self.send_to_customer(&message, &listeners_helper); - self.logger() - .log(LogLevel::Info, EngineEvent::Deleting(event_details.clone(), EventMessage::new_from_safe(message))); + self.logger().log( + LogLevel::Info, + EngineEvent::Deleting(event_details.clone(), EventMessage::new_from_safe(message)), + ); self.logger().log( LogLevel::Info, @@ -958,8 +981,10 @@ impl DOKS { } } Err(e) => { - let message_safe = - format!("Error while getting all namespaces for Kubernetes cluster {}", self.name_with_id(),); + let message_safe = format!( + "Error while getting all namespaces for Kubernetes cluster {}", + self.name_with_id(), + ); self.logger().log( LogLevel::Error, EngineEvent::Deleting( @@ -1121,8 +1146,10 @@ impl DOKS { let message = format!("Deleting Kubernetes cluster {}/{}", self.name(), self.id()); self.send_to_customer(&message, &listeners_helper); - self.logger() - .log(LogLevel::Info, EngineEvent::Deleting(event_details.clone(), EventMessage::new_from_safe(message))); + self.logger().log( + LogLevel::Info, + EngineEvent::Deleting(event_details.clone(), EventMessage::new_from_safe(message)), + ); self.logger().log( LogLevel::Info, @@ -1152,9 +1179,10 @@ impl DOKS { ); Ok(()) } - Err(Operation { error, .. }) => { - Err(EngineError::new_terraform_error_while_executing_destroy_pipeline(event_details, error)) - } + Err(Operation { error, .. }) => Err(EngineError::new_terraform_error_while_executing_destroy_pipeline( + event_details, + error, + )), Err(retry::Error::Internal(msg)) => Err(EngineError::new_terraform_error_while_executing_destroy_pipeline( event_details, CommandError::new(msg, None), @@ -1391,7 +1419,12 @@ impl Kubernetes for DOKS { let event_details = self.get_event_details(Infrastructure(InfrastructureStep::Upgrade)); let listeners_helper = ListenersHelper::new(&self.listeners); self.send_to_customer( - format!("Start preparing DOKS upgrade process {} cluster with id {}", self.name(), self.id()).as_str(), + format!( + "Start preparing DOKS upgrade process {} cluster with id {}", + self.name(), + self.id() + ) + .as_str(), &listeners_helper, ); self.logger().log( @@ -1482,7 +1515,10 @@ impl Kubernetes for DOKS { )); } - self.send_to_customer(format!("Upgrading Kubernetes {} nodes", self.name()).as_str(), &listeners_helper); + self.send_to_customer( + format!("Upgrading Kubernetes {} nodes", self.name()).as_str(), + &listeners_helper, + ); self.logger().log( LogLevel::Info, EngineEvent::Deploying( diff --git a/src/cloud_provider/digitalocean/network/vpc.rs b/src/cloud_provider/digitalocean/network/vpc.rs index 3ac4931e..563b9e26 100644 --- a/src/cloud_provider/digitalocean/network/vpc.rs +++ b/src/cloud_provider/digitalocean/network/vpc.rs @@ -128,7 +128,10 @@ fn do_get_vpcs_from_api_output(json_content: &str) -> Result, CommandEr Ok(vpcs) => Ok(vpcs.vpcs), Err(e) => { let message_safe = "Error while trying to deserialize json received from Digital Ocean VPC API"; - Err(CommandError::new(format!("{}, error: {}", message_safe, e), Some(message_safe.to_string()))) + Err(CommandError::new( + format!("{}, error: {}", message_safe, e), + Some(message_safe.to_string()), + )) } } } @@ -255,7 +258,10 @@ mod tests_do_vpcs { let vpc_subnets: Vec = vpcs.into_iter().map(|x| x.ip_range).collect(); let joined_subnets = vpc_subnets.join(","); - assert_eq!(joined_subnets, "10.2.0.0/16,10.110.0.0/20,10.116.0.0/20,10.1.0.0/16,10.0.0.0/16"); + assert_eq!( + joined_subnets, + "10.2.0.0/16,10.110.0.0/20,10.116.0.0/20,10.1.0.0/16,10.0.0.0/16" + ); } #[test] @@ -264,9 +270,11 @@ mod tests_do_vpcs { let vpcs = do_get_vpcs_from_api_output(&json_content).unwrap(); // available - assert!(get_do_vpc_from_subnet("10.3.0.0/16".to_string(), vpcs.clone(), DoRegion::Frankfurt) - .unwrap() - .is_none()); + assert!( + get_do_vpc_from_subnet("10.3.0.0/16".to_string(), vpcs.clone(), DoRegion::Frankfurt) + .unwrap() + .is_none() + ); // already used assert_eq!( get_do_vpc_from_subnet("10.2.0.0/16".to_string(), vpcs.clone(), DoRegion::Frankfurt) diff --git a/src/cloud_provider/helm.rs b/src/cloud_provider/helm.rs index 41ddd4dd..fb3be15b 100644 --- a/src/cloud_provider/helm.rs +++ b/src/cloud_provider/helm.rs @@ -157,7 +157,10 @@ pub trait HelmChart: Send { if let Err(e) = fs::metadata(file) { let safe_message = format!("Can't access helm chart override file `{}` for chart `{}`", file, chart.name,); - return Err(CommandError::new(format!("{}, error: {:?}", safe_message, e), Some(safe_message))); + return Err(CommandError::new( + format!("{}, error: {:?}", safe_message, e), + Some(safe_message), + )); } } Ok(None) @@ -224,7 +227,10 @@ pub trait HelmChart: Send { match chart_info.action { HelmAction::Deploy => { if let Err(e) = helm.uninstall_chart_if_breaking_version(chart_info, &[]) { - warn!("error while trying to destroy chart if breaking change is detected: {:?}", e.to_string()); + warn!( + "error while trying to destroy chart if breaking change is detected: {:?}", + e.to_string() + ); } helm.upgrade(chart_info, &[]).map_err(to_command_error)?; @@ -299,8 +305,10 @@ fn deploy_parallel_charts( } Err(e) => { let safe_message = "Thread panicked during parallel charts deployments."; - let error = - Err(CommandError::new(format!("{}, error: {:?}", safe_message, e), Some(safe_message.to_string()))); + let error = Err(CommandError::new( + format!("{}, error: {:?}", safe_message, e), + Some(safe_message.to_string()), + )); errors.push(error); } } @@ -587,7 +595,10 @@ impl HelmChart for PrometheusOperatorConfigChart { match chart_info.action { HelmAction::Deploy => { if let Err(e) = helm.uninstall_chart_if_breaking_version(chart_info, &[]) { - warn!("error while trying to destroy chart if breaking change is detected: {}", e.to_string()); + warn!( + "error while trying to destroy chart if breaking change is detected: {}", + e.to_string() + ); } helm.upgrade(chart_info, &[]).map_err(to_command_error)?; @@ -653,8 +664,12 @@ pub fn get_chart_for_shell_agent( context: ShellAgentContext, chart_path: impl Fn(&str) -> String, ) -> Result { - let shell_agent_version: QoveryShellAgent = - get_qovery_app_version(QoveryAppName::ShellAgent, context.api_token, context.api_url, context.cluster_id)?; + let shell_agent_version: QoveryShellAgent = get_qovery_app_version( + QoveryAppName::ShellAgent, + context.api_token, + context.api_url, + context.cluster_id, + )?; let shell_agent = CommonChart { chart_info: ChartInfo { name: "shell-agent".to_string(), diff --git a/src/cloud_provider/kubernetes.rs b/src/cloud_provider/kubernetes.rs index f8068df8..7dfc441d 100644 --- a/src/cloud_provider/kubernetes.rs +++ b/src/cloud_provider/kubernetes.rs @@ -795,7 +795,11 @@ where EngineEvent::Deleting( event_details.clone(), EventMessage::new( - format!("Encountering issues while trying to get objects kind {}: {:?}", object, e.message()), + format!( + "Encountering issues while trying to get objects kind {}: {:?}", + object, + e.message() + ), None, ), ), @@ -804,8 +808,9 @@ where } // delete if resource exists - match retry::retry(Fibonacci::from_millis(5000).take(3), || { - match kubectl_delete_objects_in_all_namespaces(&kubernetes_config, object, envs.clone()) { + match retry::retry( + Fibonacci::from_millis(5000).take(3), + || match kubectl_delete_objects_in_all_namespaces(&kubernetes_config, object, envs.clone()) { Ok(_) => OperationResult::Ok(()), Err(e) => { logger.log( @@ -817,8 +822,8 @@ where ); OperationResult::Retry(e) } - } - }) { + }, + ) { Ok(_) => {} Err(Operation { error, .. }) => { return Err(EngineError::new_cannot_uninstall_helm_chart( @@ -861,7 +866,10 @@ where let masters_version = match VersionsNumber::from_str(raw_version.as_str()) { Ok(vn) => vn, Err(_) => { - return Err(EngineError::new_cannot_determine_k8s_master_version(event_details, raw_version.to_string())) + return Err(EngineError::new_cannot_determine_k8s_master_version( + event_details, + raw_version.to_string(), + )) } }; @@ -1057,12 +1065,14 @@ fn check_kubernetes_upgrade_status( } } Err(e) => { - return Err(EngineError::new_k8s_version_upgrade_deployed_vs_requested_versions_inconsistency( - event_details, - deployed_masters_version, - wished_version, - e, - )) + return Err( + EngineError::new_k8s_version_upgrade_deployed_vs_requested_versions_inconsistency( + event_details, + deployed_masters_version, + wished_version, + e, + ), + ) } }; @@ -1108,12 +1118,14 @@ fn check_kubernetes_upgrade_status( non_up_to_date_workers += 1; } Err(e) => { - return Err(EngineError::new_k8s_version_upgrade_deployed_vs_requested_versions_inconsistency( - event_details, - node, - wished_version, - e, - )) + return Err( + EngineError::new_k8s_version_upgrade_deployed_vs_requested_versions_inconsistency( + event_details, + node, + wished_version, + e, + ), + ) } } } @@ -1253,9 +1265,18 @@ where F: Fn() -> R, { let waiting_message = match action { - Action::Create => Some(format!("Infrastructure '{}' deployment is in progress...", kubernetes.name_with_id())), - Action::Pause => Some(format!("Infrastructure '{}' pause is in progress...", kubernetes.name_with_id())), - Action::Delete => Some(format!("Infrastructure '{}' deletion is in progress...", kubernetes.name_with_id())), + Action::Create => Some(format!( + "Infrastructure '{}' deployment is in progress...", + kubernetes.name_with_id() + )), + Action::Pause => Some(format!( + "Infrastructure '{}' pause is in progress...", + kubernetes.name_with_id() + )), + Action::Delete => Some(format!( + "Infrastructure '{}' deletion is in progress...", + kubernetes.name_with_id() + )), Action::Nothing => None, }; @@ -1393,7 +1414,10 @@ pub fn validate_k8s_required_cpu_and_burstable( context_id, )); - logger.log(LogLevel::Warning, EngineEvent::Warning(event_details, EventMessage::new_from_safe(message))); + logger.log( + LogLevel::Warning, + EngineEvent::Warning(event_details, EventMessage::new_from_safe(message)), + ); set_cpu_burst = total_cpu.clone(); } @@ -1414,7 +1438,10 @@ pub fn convert_k8s_cpu_value_to_f32(value: String) -> Result } Err(e) => Err(CommandError::new( e.to_string(), - Some(format!("Error while trying to parse `{}` to float 32.", value_number_string.as_str())), + Some(format!( + "Error while trying to parse `{}` to float 32.", + value_number_string.as_str() + )), )), }; } diff --git a/src/cloud_provider/qovery.rs b/src/cloud_provider/qovery.rs index 314b3d2f..d9a27611 100644 --- a/src/cloud_provider/qovery.rs +++ b/src/cloud_provider/qovery.rs @@ -52,15 +52,24 @@ pub fn get_qovery_app_version( QoveryAppName::ShellAgent => "shellAgent", }; - let url = format!("https://{}/api/v1/{}-version?type=cluster&clusterId={}", api_fqdn, app_type, cluster_id); + let url = format!( + "https://{}/api/v1/{}-version?type=cluster&clusterId={}", + api_fqdn, app_type, cluster_id + ); let message_safe = format!("Error while trying to get `{}` version.", app_type); match reqwest::blocking::Client::new().get(&url).headers(headers).send() { Ok(x) => match x.json::() { Ok(qa) => Ok(qa), - Err(e) => Err(CommandError::new(format!("{}, error: {:?}", message_safe, e), Some(message_safe))), + Err(e) => Err(CommandError::new( + format!("{}, error: {:?}", message_safe, e), + Some(message_safe), + )), }, - Err(e) => Err(CommandError::new(format!("{}, error: {:?}", message_safe, e), Some(message_safe))), + Err(e) => Err(CommandError::new( + format!("{}, error: {:?}", message_safe, e), + Some(message_safe), + )), } } diff --git a/src/cloud_provider/scaleway/databases/mongodb.rs b/src/cloud_provider/scaleway/databases/mongodb.rs index 0e552ce4..160094a0 100644 --- a/src/cloud_provider/scaleway/databases/mongodb.rs +++ b/src/cloud_provider/scaleway/databases/mongodb.rs @@ -66,7 +66,12 @@ impl MongoDbScw { } fn matching_correct_version(&self, event_details: EventDetails) -> Result { - check_service_version(get_self_hosted_mongodb_version(self.version()), self, event_details, self.logger()) + check_service_version( + get_self_hosted_mongodb_version(self.version()), + self, + event_details, + self.logger(), + ) } fn cloud_provider_name(&self) -> &str { diff --git a/src/cloud_provider/scaleway/databases/redis.rs b/src/cloud_provider/scaleway/databases/redis.rs index 287b5162..6c7bc8a8 100644 --- a/src/cloud_provider/scaleway/databases/redis.rs +++ b/src/cloud_provider/scaleway/databases/redis.rs @@ -66,7 +66,12 @@ impl RedisScw { } fn matching_correct_version(&self, event_details: EventDetails) -> Result { - check_service_version(get_self_hosted_redis_version(self.version()), self, event_details, self.logger()) + check_service_version( + get_self_hosted_redis_version(self.version()), + self, + event_details, + self.logger(), + ) } fn cloud_provider_name(&self) -> &str { diff --git a/src/cloud_provider/scaleway/kubernetes/helm_charts.rs b/src/cloud_provider/scaleway/kubernetes/helm_charts.rs index 68cf8da6..089322c6 100644 --- a/src/cloud_provider/scaleway/kubernetes/helm_charts.rs +++ b/src/cloud_provider/scaleway/kubernetes/helm_charts.rs @@ -116,7 +116,10 @@ pub fn scw_helm_charts( Ok(x) => x, Err(e) => { let message_safe = "Can't deploy helm chart as Qovery terraform config file has not been rendered by Terraform. Are you running it in dry run mode?"; - return Err(CommandError::new(format!("{}, error: {:?}", message_safe, e), Some(message_safe.to_string()))); + return Err(CommandError::new( + format!("{}, error: {:?}", message_safe, e), + Some(message_safe.to_string()), + )); } }; let chart_prefix = chart_prefix_path.unwrap_or("./"); @@ -126,7 +129,10 @@ pub fn scw_helm_charts( Ok(config) => config, Err(e) => { let message_safe = format!("Error while parsing terraform config file {}", qovery_terraform_config_file); - return Err(CommandError::new(format!("{}, error: {:?}", message_safe, e), Some(message_safe))); + return Err(CommandError::new( + format!("{}, error: {:?}", message_safe, e), + Some(message_safe), + )); } }; diff --git a/src/cloud_provider/scaleway/kubernetes/mod.rs b/src/cloud_provider/scaleway/kubernetes/mod.rs index a4679af5..9de13154 100644 --- a/src/cloud_provider/scaleway/kubernetes/mod.rs +++ b/src/cloud_provider/scaleway/kubernetes/mod.rs @@ -271,9 +271,9 @@ impl Kapsule { let error_cluster_id = "expected cluster id for this Scaleway cluster".to_string(); let cluster_id = match cluster_info.id { None => { - return Err(ScwNodeGroupErrors::NodeGroupValidationError(CommandError::new_from_safe_message( - error_cluster_id, - ))) + return Err(ScwNodeGroupErrors::NodeGroupValidationError( + CommandError::new_from_safe_message(error_cluster_id), + )) } Some(x) => x, }; @@ -292,7 +292,10 @@ impl Kapsule { Err(e) => { let msg = format!("error while trying to get SCW pool info from cluster {}", &cluster_id); let msg_with_error = format!("{}. {:?}", msg, e); - return Err(ScwNodeGroupErrors::CloudProviderApiError(CommandError::new(msg_with_error, Some(msg)))); + return Err(ScwNodeGroupErrors::CloudProviderApiError(CommandError::new( + msg_with_error, + Some(msg), + ))); } }; @@ -311,7 +314,10 @@ impl Kapsule { for ng in pools.pools.unwrap() { if ng.id.is_none() { let msg = format!("error while trying to validate SCW pool ID from cluster {}", &cluster_id); - return Err(ScwNodeGroupErrors::NodeGroupValidationError(CommandError::new(msg.clone(), Some(msg)))); + return Err(ScwNodeGroupErrors::NodeGroupValidationError(CommandError::new( + msg.clone(), + Some(msg), + ))); } let ng_sanitized = self.get_node_group_info(ng.id.unwrap().as_str())?; nodegroup_pool.push(ng_sanitized) @@ -439,8 +445,14 @@ impl Kapsule { context.insert("managed_dns_domains_helm_format", &managed_dns_domains_helm_format); context.insert("managed_dns_domains_root_helm_format", &managed_dns_domains_root_helm_format); context.insert("managed_dns_domains_terraform_format", &managed_dns_domains_terraform_format); - context.insert("managed_dns_domains_root_terraform_format", &managed_dns_domains_root_terraform_format); - context.insert("managed_dns_resolvers_terraform_format", &managed_dns_resolvers_terraform_format); + context.insert( + "managed_dns_domains_root_terraform_format", + &managed_dns_domains_root_terraform_format, + ); + context.insert( + "managed_dns_resolvers_terraform_format", + &managed_dns_resolvers_terraform_format, + ); match self.dns_provider.kind() { dns_provider::Kind::Cloudflare => { context.insert("external_dns_provider", self.dns_provider.provider_name()); @@ -471,7 +483,10 @@ impl Kapsule { // Qovery features context.insert("log_history_enabled", &self.context.is_feature_enabled(&Features::LogsHistory)); - context.insert("metrics_history_enabled", &self.context.is_feature_enabled(&Features::MetricsHistory)); + context.insert( + "metrics_history_enabled", + &self.context.is_feature_enabled(&Features::MetricsHistory), + ); if self.context.resource_expiration_in_seconds().is_some() { context.insert("resource_expiration_in_seconds", &self.context.resource_expiration_in_seconds()) } @@ -491,8 +506,10 @@ impl Kapsule { .secret_access_key .as_str(), ); - context - .insert("aws_region_tfstates_account", self.cloud_provider().terraform_state_credentials().region.as_str()); + context.insert( + "aws_region_tfstates_account", + self.cloud_provider().terraform_state_credentials().region.as_str(), + ); context.insert("aws_terraform_backend_dynamodb_table", "qovery-terrafom-tfstates"); context.insert("aws_terraform_backend_bucket", "qovery-terrafom-tfstates"); @@ -768,7 +785,10 @@ impl Kapsule { Err(e) => { match e { ScwNodeGroupErrors::CloudProviderApiError(c) => { - return Err(EngineError::new_missing_api_info_from_cloud_provider_error(event_details, Some(c))) + return Err(EngineError::new_missing_api_info_from_cloud_provider_error( + event_details, + Some(c), + )) } ScwNodeGroupErrors::ClusterDoesNotExists(_) => self.logger().log( LogLevel::Info, @@ -1028,9 +1048,10 @@ impl Kapsule { ); match kubectl_exec_get_events(kubeconfig_path, None, environment_variables) { - Ok(ok_line) => self - .logger() - .log(LogLevel::Info, EngineEvent::Deploying(event_details, EventMessage::new_from_safe(ok_line))), + Ok(ok_line) => self.logger().log( + LogLevel::Info, + EngineEvent::Deploying(event_details, EventMessage::new_from_safe(ok_line)), + ), Err(err) => self.logger().log( LogLevel::Error, EngineEvent::Deploying( @@ -1229,8 +1250,10 @@ impl Kapsule { Ok(_) => { let message = format!("Kubernetes cluster {} successfully paused", self.name()); self.send_to_customer(&message, &listeners_helper); - self.logger() - .log(LogLevel::Info, EngineEvent::Pausing(event_details, EventMessage::new_from_safe(message))); + self.logger().log( + LogLevel::Info, + EngineEvent::Pausing(event_details, EventMessage::new_from_safe(message)), + ); Ok(()) } Err(e) => Err(EngineError::new_terraform_error_while_executing_pipeline(event_details, e)), @@ -1300,11 +1323,16 @@ impl Kapsule { // should apply before destroy to be sure destroy will compute on all resources // don't exit on failure, it can happen if we resume a destroy process - let message = - format!("Ensuring everything is up to date before deleting cluster {}/{}", self.name(), self.id()); + let message = format!( + "Ensuring everything is up to date before deleting cluster {}/{}", + self.name(), + self.id() + ); self.send_to_customer(&message, &listeners_helper); - self.logger() - .log(LogLevel::Info, EngineEvent::Deleting(event_details.clone(), EventMessage::new_from_safe(message))); + self.logger().log( + LogLevel::Info, + EngineEvent::Deleting(event_details.clone(), EventMessage::new_from_safe(message)), + ); self.logger().log( LogLevel::Info, @@ -1392,8 +1420,10 @@ impl Kapsule { } } Err(e) => { - let message_safe = - format!("Error while getting all namespaces for Kubernetes cluster {}", self.name_with_id(),); + let message_safe = format!( + "Error while getting all namespaces for Kubernetes cluster {}", + self.name_with_id(), + ); self.logger().log( LogLevel::Error, EngineEvent::Deleting( @@ -1555,8 +1585,10 @@ impl Kapsule { let message = format!("Deleting Kubernetes cluster {}/{}", self.name(), self.id()); self.send_to_customer(&message, &listeners_helper); - self.logger() - .log(LogLevel::Info, EngineEvent::Deleting(event_details.clone(), EventMessage::new_from_safe(message))); + self.logger().log( + LogLevel::Info, + EngineEvent::Deleting(event_details.clone(), EventMessage::new_from_safe(message)), + ); self.logger().log( LogLevel::Info, @@ -1586,9 +1618,10 @@ impl Kapsule { ); Ok(()) } - Err(Operation { error, .. }) => { - Err(EngineError::new_terraform_error_while_executing_destroy_pipeline(event_details, error)) - } + Err(Operation { error, .. }) => Err(EngineError::new_terraform_error_while_executing_destroy_pipeline( + event_details, + error, + )), Err(retry::Error::Internal(msg)) => Err(EngineError::new_terraform_error_while_executing_destroy_pipeline( event_details, CommandError::new(msg, None), @@ -1702,7 +1735,12 @@ impl Kubernetes for Kapsule { let event_details = self.get_event_details(Infrastructure(InfrastructureStep::Upgrade)); let listeners_helper = ListenersHelper::new(&self.listeners); self.send_to_customer( - format!("Start preparing Kapsule upgrade process {} cluster with id {}", self.name(), self.id()).as_str(), + format!( + "Start preparing Kapsule upgrade process {} cluster with id {}", + self.name(), + self.id() + ) + .as_str(), &listeners_helper, ); self.logger().log( @@ -1744,8 +1782,10 @@ impl Kubernetes for Kapsule { ), ); - context - .insert("kubernetes_cluster_version", format!("{}", &kubernetes_upgrade_status.requested_version).as_str()); + context.insert( + "kubernetes_cluster_version", + format!("{}", &kubernetes_upgrade_status.requested_version).as_str(), + ); if let Err(e) = crate::template::generate_and_copy_all_files_into_dir( self.template_directory.as_str(), @@ -1773,7 +1813,10 @@ impl Kubernetes for Kapsule { )); } - self.send_to_customer(format!("Upgrading Kubernetes {} nodes", self.name()).as_str(), &listeners_helper); + self.send_to_customer( + format!("Upgrading Kubernetes {} nodes", self.name()).as_str(), + &listeners_helper, + ); self.logger().log( LogLevel::Info, EngineEvent::Deploying( diff --git a/src/cloud_provider/service.rs b/src/cloud_provider/service.rs index 3d975b89..3332a852 100644 --- a/src/cloud_provider/service.rs +++ b/src/cloud_provider/service.rs @@ -418,9 +418,11 @@ where })?; // do exec helm upgrade and return the last deployment status - let helm = - helm::Helm::new(&kubernetes_config_file_path, &kubernetes.cloud_provider().credentials_environment_variables()) - .map_err(|e| helm::to_engine_error(&event_details, e))?; + let helm = helm::Helm::new( + &kubernetes_config_file_path, + &kubernetes.cloud_provider().credentials_environment_variables(), + ) + .map_err(|e| helm::to_engine_error(&event_details, e))?; let chart = ChartInfo::new_from_custom_namespace( helm_release_name, workspace_dir.clone(), @@ -926,7 +928,11 @@ where )) } Err(_err) => { - let message = format!("{} version {} is not supported!", service.service_type().name(), service.version(),); + let message = format!( + "{} version {} is not supported!", + service.service_type().name(), + service.version(), + ); let progress_info = ProgressInfo::new( service.progress_scope(), @@ -988,7 +994,12 @@ pub fn check_kubernetes_service_error( where T: Service + ?Sized, { - let message = format!("{} {} {}", action_verb, service.service_type().name().to_lowercase(), service.name()); + let message = format!( + "{} {} {}", + action_verb, + service.service_type().name().to_lowercase(), + service.name() + ); let progress_info = ProgressInfo::new( service.progress_scope(), @@ -1007,8 +1018,10 @@ where } CheckAction::Pause => { listeners_helper.pause_in_progress(progress_info); - logger - .log(LogLevel::Info, EngineEvent::Pausing(event_details.clone(), EventMessage::new_from_safe(message))); + logger.log( + LogLevel::Info, + EngineEvent::Pausing(event_details.clone(), EventMessage::new_from_safe(message)), + ); } CheckAction::Delete => { listeners_helper.delete_in_progress(progress_info); @@ -1242,12 +1255,16 @@ where service.service_type().name(), service.name_with_id() )), - Action::Pause => { - Some(format!("{} '{}' pause is in progress...", service.service_type().name(), service.name_with_id())) - } - Action::Delete => { - Some(format!("{} '{}' deletion is in progress...", service.service_type().name(), service.name_with_id())) - } + Action::Pause => Some(format!( + "{} '{}' pause is in progress...", + service.service_type().name(), + service.name_with_id() + )), + Action::Delete => Some(format!( + "{} '{}' deletion is in progress...", + service.service_type().name(), + service.name_with_id() + )), Action::Nothing => None, }; @@ -1270,8 +1287,12 @@ where let logger = service.logger().clone_dyn(); let listeners = std::clone::Clone::clone(service.listeners()); - let progress_info = - ProgressInfo::new(service.progress_scope(), Info, waiting_message.clone(), service.context().execution_id()); + let progress_info = ProgressInfo::new( + service.progress_scope(), + Info, + waiting_message.clone(), + service.context().execution_id(), + ); let (tx, rx) = mpsc::channel(); diff --git a/src/cloud_provider/utilities.rs b/src/cloud_provider/utilities.rs index a1ee5989..87e0cb2b 100644 --- a/src/cloud_provider/utilities.rs +++ b/src/cloud_provider/utilities.rs @@ -183,8 +183,10 @@ pub fn generate_supported_version( } else { for minor in minor_min..minor_max + 1 { // add short minor format targeting latest version - supported_versions - .insert(format!("{}.{}", major, minor), format!("{}.{}.{}", major, minor, update_max.unwrap())); + supported_versions.insert( + format!("{}.{}", major, minor), + format!("{}.{}.{}", major, minor, update_max.unwrap()), + ); if update_min.unwrap() == update_max.unwrap() { let version = format!("{}.{}.{}", major, minor, update_min.unwrap()); supported_versions.insert(version.clone(), format!("{}{}", version, suffix)); @@ -238,7 +240,11 @@ impl VersionsNumber { } pub fn to_major_minor_version_string(&self, default_minor: &str) -> String { - let test = format!("{}.{}", self.major.clone(), self.minor.as_ref().unwrap_or(&default_minor.to_string())); + let test = format!( + "{}.{}", + self.major.clone(), + self.minor.as_ref().unwrap_or(&default_minor.to_string()) + ); test } @@ -374,7 +380,11 @@ pub fn check_cname_for( }; send_deployment_progress( - format!("Checking CNAME resolution of '{}'. Please wait, it can take some time...", cname_to_check).as_str(), + format!( + "Checking CNAME resolution of '{}'. Please wait, it can take some time...", + cname_to_check + ) + .as_str(), ); // Trying for 5 min to resolve CNAME @@ -385,12 +395,14 @@ pub fn check_cname_for( resolver }; let fixed_iterable = Fixed::from_millis(Duration::seconds(5).num_milliseconds() as u64).take(6 * 5); - let check_result = retry::retry(fixed_iterable, || match get_cname_record_value(next_resolver(), cname_to_check) { - Some(domain) => OperationResult::Ok(domain), - None => { - let msg = format!("Cannot find domain under CNAME {}. Retrying in 5 seconds...", cname_to_check); - send_deployment_progress(msg.as_str()); - OperationResult::Retry(msg) + let check_result = retry::retry(fixed_iterable, || { + match get_cname_record_value(next_resolver(), cname_to_check) { + Some(domain) => OperationResult::Ok(domain), + None => { + let msg = format!("Cannot find domain under CNAME {}. Retrying in 5 seconds...", cname_to_check); + send_deployment_progress(msg.as_str()); + OperationResult::Retry(msg) + } } }); @@ -422,7 +434,10 @@ pub fn check_domain_for( let resolvers = dns_resolvers(); for domain in domains_to_check { - let message = format!("Let's check domain resolution for '{}'. Please wait, it can take some time...", domain); + let message = format!( + "Let's check domain resolution for '{}'. Please wait, it can take some time...", + domain + ); listener_helper.deployment_in_progress(ProgressInfo::new( ProgressScope::Environment { @@ -537,8 +552,14 @@ pub fn print_action( ) { let msg = format!("{}.{}.{} called for {}", cloud_provider_name, struct_name, fn_name, item_name); match fn_name.contains("error") { - true => logger.log(LogLevel::Warning, EngineEvent::Warning(event_details, EventMessage::new_from_safe(msg))), - false => logger.log(LogLevel::Info, EngineEvent::Info(event_details, EventMessage::new_from_safe(msg))), + true => logger.log( + LogLevel::Warning, + EngineEvent::Warning(event_details, EventMessage::new_from_safe(msg)), + ), + false => logger.log( + LogLevel::Info, + EngineEvent::Info(event_details, EventMessage::new_from_safe(msg)), + ), } } diff --git a/src/cmd/command.rs b/src/cmd/command.rs index 5167d215..83cd74a8 100644 --- a/src/cmd/command.rs +++ b/src/cmd/command.rs @@ -116,7 +116,11 @@ impl QoveryCommand { } pub fn exec(&mut self) -> Result<(), CommandError> { - self.exec_with_abort(&mut |line| info!("{}", line), &mut |line| warn!("{}", line), &CommandKiller::never()) + self.exec_with_abort( + &mut |line| info!("{}", line), + &mut |line| warn!("{}", line), + &CommandKiller::never(), + ) } pub fn exec_with_output( @@ -273,7 +277,10 @@ impl QoveryCommand { } if !exit_status.success() { - debug!("command: {:?} terminated with error exist status {:?}", self.command, exit_status); + debug!( + "command: {:?} terminated with error exist status {:?}", + self.command, exit_status + ); return Err(ExitStatusError(exit_status)); } diff --git a/src/cmd/docker.rs b/src/cmd/docker.rs index d523ac77..fa435cd6 100644 --- a/src/cmd/docker.rs +++ b/src/cmd/docker.rs @@ -81,8 +81,13 @@ impl Docker { // First check that the buildx plugin is correctly installed let args = vec!["buildx", "version"]; - let buildx_cmd_exist = - docker_exec(&args, &docker.get_all_envs(&[]), &mut |_| {}, &mut |_| {}, &CommandKiller::never()); + let buildx_cmd_exist = docker_exec( + &args, + &docker.get_all_envs(&[]), + &mut |_| {}, + &mut |_| {}, + &CommandKiller::never(), + ); if buildx_cmd_exist.is_err() { return Err(DockerError::InvalidConfig( "Docker buildx plugin for buildkit is not correctly installed".to_string(), @@ -101,7 +106,13 @@ impl Docker { "--bootstrap", "--use", ]; - let _ = docker_exec(&args, &docker.get_all_envs(&[]), &mut |_| {}, &mut |_| {}, &CommandKiller::never()); + let _ = docker_exec( + &args, + &docker.get_all_envs(&[]), + &mut |_| {}, + &mut |_| {}, + &CommandKiller::never(), + ); Ok(docker) } @@ -188,7 +199,13 @@ impl Docker { { info!("Docker pull {:?}", image); - docker_exec(&["pull", &image.image_name()], &self.get_all_envs(&[]), stdout_output, stderr_output, should_abort) + docker_exec( + &["pull", &image.image_name()], + &self.get_all_envs(&[]), + stdout_output, + stderr_output, + should_abort, + ) } pub fn build( @@ -406,7 +423,13 @@ impl Docker { let mut errored_commands = vec![]; for prune in all_prunes_commands { - let ret = docker_exec(&prune, &self.get_all_envs(&[]), &mut |_| {}, &mut |_| {}, &CommandKiller::never()); + let ret = docker_exec( + &prune, + &self.get_all_envs(&[]), + &mut |_| {}, + &mut |_| {}, + &CommandKiller::never(), + ); if let Err(e) = ret { errored_commands.push(e); } diff --git a/src/cmd/helm.rs b/src/cmd/helm.rs index 54b6024a..16d319c2 100644 --- a/src/cmd/helm.rs +++ b/src/cmd/helm.rs @@ -129,9 +129,12 @@ impl Helm { let mut stdout = String::new(); let mut stderr = String::new(); - match helm_exec_with_output(&args, &self.get_all_envs(envs), &mut |line| stdout.push_str(&line), &mut |line| { - stderr.push_str(&line) - }) { + match helm_exec_with_output( + &args, + &self.get_all_envs(envs), + &mut |line| stdout.push_str(&line), + &mut |line| stderr.push_str(&line), + ) { Err(_) if stderr.contains("release: not found") => Err(ReleaseDoesNotExist(chart.name.clone())), Err(err) => { stderr.push_str(&err.message()); diff --git a/src/cmd/kubectl.rs b/src/cmd/kubectl.rs index f49b4616..369488f6 100644 --- a/src/cmd/kubectl.rs +++ b/src/cmd/kubectl.rs @@ -412,7 +412,9 @@ where P: AsRef, { if labels.is_empty() { - return Err(CommandError::new_from_safe_message("No labels were defined, can't set them".to_string())); + return Err(CommandError::new_from_safe_message( + "No labels were defined, can't set them".to_string(), + )); }; if !kubectl_exec_is_namespace_present(kubernetes_config.as_ref(), namespace, envs.clone()) { @@ -436,8 +438,9 @@ where _envs.push((KUBECONFIG, kubernetes_config.as_ref().to_str().unwrap())); _envs.extend(envs.clone()); - let _ = - kubectl_exec_with_output(command_args, _envs, &mut |line| info!("{}", line), &mut |line| error!("{}", line))?; + let _ = kubectl_exec_with_output(command_args, _envs, &mut |line| info!("{}", line), &mut |line| { + error!("{}", line) + })?; Ok(()) } @@ -545,10 +548,12 @@ where _envs.push((KUBECONFIG, kubernetes_config.as_ref().to_str().unwrap())); _envs.extend(envs); - let _ = - kubectl_exec_with_output(vec!["delete", "crd", crd_name], _envs, &mut |line| info!("{}", line), &mut |line| { - error!("{}", line) - })?; + let _ = kubectl_exec_with_output( + vec!["delete", "crd", crd_name], + _envs, + &mut |line| info!("{}", line), + &mut |line| error!("{}", line), + )?; Ok(()) } @@ -668,7 +673,9 @@ where environment_variables.push(("KUBECONFIG", kubernetes_config.as_ref().to_str().unwrap())); let args = vec!["-n", namespace, "rollout", "restart", "deployment", name]; - kubectl_exec_with_output(args, environment_variables, &mut |line| info!("{}", line), &mut |line| error!("{}", line)) + kubectl_exec_with_output(args, environment_variables, &mut |line| info!("{}", line), &mut |line| { + error!("{}", line) + }) } pub fn kubectl_exec_get_node

( @@ -767,7 +774,11 @@ pub fn kubectl_exec_get_configmap

( where P: AsRef, { - kubectl_exec::(vec!["get", "configmap", "-o", "json", "-n", namespace, name], kubernetes_config, envs) + kubectl_exec::( + vec!["get", "configmap", "-o", "json", "-n", namespace, name], + kubernetes_config, + envs, + ) } pub fn kubectl_exec_get_json_events

( @@ -857,7 +868,10 @@ where P: AsRef, { let pods = specific_pod_name.unwrap_or("*"); - let api_url = format!("/apis/custom.metrics.k8s.io/v1beta1/namespaces/{}/pods/{}/{}", namespace, pods, metric_name); + let api_url = format!( + "/apis/custom.metrics.k8s.io/v1beta1/namespaces/{}/pods/{}/{}", + namespace, pods, metric_name + ); kubectl_exec::(vec!["get", "--raw", api_url.as_str()], kubernetes_config, envs) } diff --git a/src/cmd/structs.rs b/src/cmd/structs.rs index 54c7ff67..ea39b03f 100644 --- a/src/cmd/structs.rs +++ b/src/cmd/structs.rs @@ -1311,7 +1311,10 @@ mod tests { assert_eq!(pod_status.is_ok(), true); let pod_status = pod_status.unwrap(); assert_eq!(pod_status.items[0].status.conditions[0].status, "False"); - assert_eq!(pod_status.items[0].status.conditions[0].reason, KubernetesPodStatusReason::CrashLoopBackOff); + assert_eq!( + pod_status.items[0].status.conditions[0].reason, + KubernetesPodStatusReason::CrashLoopBackOff + ); let payload = r#"{ "apiVersion": "v1", @@ -1584,7 +1587,10 @@ mod tests { let pod_status = serde_json::from_str::>(payload); assert!(pod_status.is_ok()); - assert_eq!(pod_status.unwrap().items[0].status.conditions[0].reason, KubernetesPodStatusReason::Unknown(None)); + assert_eq!( + pod_status.unwrap().items[0].status.conditions[0].reason, + KubernetesPodStatusReason::Unknown(None) + ); } #[test] diff --git a/src/cmd/terraform.rs b/src/cmd/terraform.rs index c9af2b30..8662d99e 100644 --- a/src/cmd/terraform.rs +++ b/src/cmd/terraform.rs @@ -27,7 +27,10 @@ fn manage_common_issues(terraform_provider_lock: &str, err: &CommandError) -> Re Ok(_) => Ok(()), Err(e) => Err(CommandError::new( format!("Wasn't able to delete terraform lock file {}", &terraform_provider_lock), - Some(format!("Wasn't able to delete terraform lock file {}, error: {:?}", &terraform_provider_lock, e)), + Some(format!( + "Wasn't able to delete terraform lock file {}, error: {:?}", + &terraform_provider_lock, e + )), )), }; } else if err.message().contains("Plugin reinitialization required") { @@ -35,7 +38,9 @@ fn manage_common_issues(terraform_provider_lock: &str, err: &CommandError) -> Re return Ok(()); } - Err(CommandError::new_from_safe_message("Not known method to fix this Terraform issue".to_string())) + Err(CommandError::new_from_safe_message( + "Not known method to fix this Terraform issue".to_string(), + )) } fn terraform_init_validate(root_dir: &str) -> Result<(), CommandError> { diff --git a/src/container_registry/docr.rs b/src/container_registry/docr.rs index 4eb68f5e..e369495a 100644 --- a/src/container_registry/docr.rs +++ b/src/container_registry/docr.rs @@ -148,8 +148,11 @@ impl DOCR { } pub fn exec_docr_login(&self) -> Result<(), ContainerRegistryError> { - let mut cmd = - QoveryCommand::new("doctl", &["registry", "login", self.name.as_str(), "-t", self.api_key.as_str()], &[]); + let mut cmd = QoveryCommand::new( + "doctl", + &["registry", "login", self.name.as_str(), "-t", self.api_key.as_str()], + &[], + ); match cmd.exec() { Ok(_) => Ok(()), diff --git a/src/dns_provider/cloudflare.rs b/src/dns_provider/cloudflare.rs index 5e257c11..134c7b7a 100644 --- a/src/dns_provider/cloudflare.rs +++ b/src/dns_provider/cloudflare.rs @@ -73,7 +73,9 @@ impl DnsProvider for Cloudflare { fn is_valid(&self) -> Result<(), EngineError> { 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(EngineError::new_client_invalid_cloud_provider_credentials( + self.get_event_details(), + )) } else { Ok(()) } diff --git a/src/error.rs b/src/error.rs index 00fd95a5..0cc266dd 100644 --- a/src/error.rs +++ b/src/error.rs @@ -111,7 +111,11 @@ pub fn cast_simple_error_to_engine_error>( Err(simple_error) => { let message = match simple_error.kind { SimpleErrorKind::Command(exit_status) => { - format!("{} ({})", simple_error.message.unwrap_or_else(|| "".into()), exit_status) + format!( + "{} ({})", + simple_error.message.unwrap_or_else(|| "".into()), + exit_status + ) } SimpleErrorKind::Other => simple_error.message.unwrap_or_else(|| "".into()), }; diff --git a/src/errors/mod.rs b/src/errors/mod.rs index 2871e4e8..9cc9c1eb 100644 --- a/src/errors/mod.rs +++ b/src/errors/mod.rs @@ -469,7 +469,15 @@ impl EngineError { link: Option, hint_message: Option, ) -> EngineError { - EngineError::new(event_details, Tag::Unknown, qovery_log_message, user_log_message, message, link, hint_message) + EngineError::new( + event_details, + Tag::Unknown, + qovery_log_message, + user_log_message, + message, + link, + hint_message, + ) } /// Creates new error for missing required env variable. @@ -482,7 +490,15 @@ impl EngineError { /// * `variable_name`: Variable name which is not set. pub fn new_missing_required_env_variable(event_details: EventDetails, variable_name: String) -> EngineError { let message = format!("`{}` environment variable wasn't found.", variable_name); - EngineError::new(event_details, Tag::MissingRequiredEnvVariable, message.to_string(), message, None, None, None) + EngineError::new( + event_details, + Tag::MissingRequiredEnvVariable, + message.to_string(), + message, + None, + None, + None, + ) } /// Creates new error for cluster has no worker nodes. @@ -1175,7 +1191,15 @@ impl EngineError { selector, namespace ); - EngineError::new(event_details, Tag::K8sGetLogs, message.to_string(), message, Some(raw_error), None, None) + EngineError::new( + event_details, + Tag::K8sGetLogs, + message.to_string(), + message, + Some(raw_error), + None, + None, + ) } /// Creates new error for kubernetes get events. @@ -1192,7 +1216,15 @@ impl EngineError { ) -> EngineError { let message = format!("Error, unable to retrieve events in namespace `{}`.", namespace); - EngineError::new(event_details, Tag::K8sGetLogs, message.to_string(), message, Some(raw_error), None, None) + EngineError::new( + event_details, + Tag::K8sGetLogs, + message.to_string(), + message, + Some(raw_error), + None, + None, + ) } /// Creates new error for kubernetes describe. @@ -1209,10 +1241,20 @@ impl EngineError { namespace: String, raw_error: CommandError, ) -> EngineError { - let message = - format!("Error, unable to describe pod with selector `{}` in namespace `{}`.", selector, namespace); + let message = format!( + "Error, unable to describe pod with selector `{}` in namespace `{}`.", + selector, namespace + ); - EngineError::new(event_details, Tag::K8sDescribe, message.to_string(), message, Some(raw_error), None, None) + EngineError::new( + event_details, + Tag::K8sDescribe, + message.to_string(), + message, + Some(raw_error), + None, + None, + ) } /// Creates new error for kubernetes history. @@ -1225,7 +1267,15 @@ impl EngineError { pub fn new_k8s_history(event_details: EventDetails, namespace: String, raw_error: CommandError) -> EngineError { let message = format!("Error, unable to get history in namespace `{}`.", namespace); - EngineError::new(event_details, Tag::K8sHistory, message.to_string(), message, Some(raw_error), None, None) + EngineError::new( + event_details, + Tag::K8sHistory, + message.to_string(), + message, + Some(raw_error), + None, + None, + ) } /// Creates new error for kubernetes namespace creation issue. @@ -1267,7 +1317,10 @@ impl EngineError { namespace: String, raw_error: CommandError, ) -> EngineError { - let message = format!("Error, pod with selector `{}` in namespace `{}` is not ready.", selector, namespace); + let message = format!( + "Error, pod with selector `{}` in namespace `{}` is not ready.", + selector, namespace + ); EngineError::new( event_details, @@ -1364,7 +1417,15 @@ impl EngineError { pub fn new_missing_required_binary(event_details: EventDetails, missing_binary_name: String) -> EngineError { let message = format!("`{}` binary is required but was not found.", missing_binary_name); - EngineError::new(event_details, Tag::CannotFindRequiredBinary, message.to_string(), message, None, None, None) + EngineError::new( + event_details, + Tag::CannotFindRequiredBinary, + message.to_string(), + message, + None, + None, + None, + ) } /// Creates new error for subnets count not being even. Subnets count should be even to get the same number as private and public. @@ -1384,7 +1445,15 @@ impl EngineError { zone_name, subnets_count, ); - EngineError::new(event_details, Tag::SubnetsCountShouldBeEven, message.to_string(), message, None, None, None) + EngineError::new( + event_details, + Tag::SubnetsCountShouldBeEven, + message.to_string(), + message, + None, + None, + None, + ) } /// Creates new error for IAM role which cannot be retrieved or created. @@ -1568,8 +1637,10 @@ impl EngineError { parameter_value: String, raw_error: Option, ) -> EngineError { - let message = - format!("{} value `{}` not supported for parameter `{}`", service_type, parameter_value, parameter_name,); + let message = format!( + "{} value `{}` not supported for parameter `{}`", + service_type, parameter_value, parameter_name, + ); EngineError::new( event_details, @@ -1667,7 +1738,15 @@ impl EngineError { /// * `event_details`: Error linked event details. /// * `error`: Raw error message. pub fn new_build_error(event_details: EventDetails, error: BuildError) -> EngineError { - EngineError::new(event_details, Tag::BuilderError, error.to_string(), error.to_string(), None, None, None) + EngineError::new( + event_details, + Tag::BuilderError, + error.to_string(), + error.to_string(), + None, + None, + None, + ) } /// Creates new error from an Container Registry error @@ -1732,8 +1811,10 @@ impl EngineError { namespace: String, raw_error: CommandError, ) -> EngineError { - let message = - format!("Error while trying to get helm chart `{}` history in namespace `{}`.", helm_chart, namespace); + let message = format!( + "Error while trying to get helm chart `{}` history in namespace `{}`.", + helm_chart, namespace + ); EngineError::new( event_details, @@ -1805,7 +1886,15 @@ impl EngineError { ) -> EngineError { let message = format!("Error, version `{}` is not supported for `{}`.", version, product_name); - EngineError::new(event_details, Tag::UnsupportedVersion, message.to_string(), message, None, None, None) + EngineError::new( + event_details, + Tag::UnsupportedVersion, + message.to_string(), + message, + None, + None, + None, + ) } /// Creates new error while trying to get cluster. @@ -1868,7 +1957,10 @@ impl EngineError { service_name: String, ) -> EngineError { // TODO(benjaminch): Service should probably passed otherwise, either inside event_details or via a new dedicated struct. - let message = format!("Service `{}` (id `{}`) failed to deploy (before start).", service_name, service_id); + let message = format!( + "Service `{}` (id `{}`) failed to deploy (before start).", + service_name, service_id + ); EngineError::new( event_details, @@ -1895,8 +1987,10 @@ impl EngineError { service_type: String, raw_error: Option, ) -> EngineError { - let message = - format!("Database `{}` (id `{}`) failed to start after several retries.", service_type, service_id); + let message = format!( + "Database `{}` (id `{}`) failed to start after several retries.", + service_type, service_id + ); EngineError::new( event_details, @@ -2203,7 +2297,15 @@ impl EngineError { /// * `event_details`: Error linked event details. /// * `error`: Raw error message. pub fn new_docker_error(event_details: EventDetails, error: DockerError) -> EngineError { - EngineError::new(event_details, Tag::DockerError, error.to_string(), error.to_string(), None, None, None) + EngineError::new( + event_details, + Tag::DockerError, + error.to_string(), + error.to_string(), + None, + None, + None, + ) } /// Creates new error when trying to push a Docker image. @@ -2220,8 +2322,10 @@ impl EngineError { repository_url: String, raw_error: CommandError, ) -> EngineError { - let message = - format!("Error, trying to push Docker image `{}` to repository `{}`.", image_name, repository_url); + let message = format!( + "Error, trying to push Docker image `{}` to repository `{}`.", + image_name, repository_url + ); EngineError::new( event_details, @@ -2248,8 +2352,10 @@ impl EngineError { repository_url: String, raw_error: CommandError, ) -> EngineError { - let message = - format!("Error, trying to pull Docker image `{}` from repository `{}`.", image_name, repository_url); + let message = format!( + "Error, trying to pull Docker image `{}` from repository `{}`.", + image_name, repository_url + ); EngineError::new( event_details, @@ -2399,8 +2505,10 @@ impl EngineError { event_details: EventDetails, repository_name: String, ) -> EngineError { - let message = - format!("Failed to retrieve credentials and endpoint URL from container registry `{}`.", repository_name,); + let message = format!( + "Failed to retrieve credentials and endpoint URL from container registry `{}`.", + repository_name, + ); EngineError::new( event_details, @@ -2617,7 +2725,10 @@ impl EngineError { file_name: String, raw_error: ObjectStorageError, ) -> EngineError { - let message = format!("Error, cannot put file `{}` into object storage bucket `{}`.", file_name, bucket_name,); + let message = format!( + "Error, cannot put file `{}` into object storage bucket `{}`.", + file_name, bucket_name, + ); EngineError::new( event_details, @@ -2692,8 +2803,10 @@ impl EngineError { bucket_name: String, raw_error: CommandError, ) -> EngineError { - let message = - format!("Error while trying to activate versioning for object storage bucket `{}`.", bucket_name,); + let message = format!( + "Error while trying to activate versioning for object storage bucket `{}`.", + bucket_name, + ); EngineError::new( event_details, diff --git a/src/events/mod.rs b/src/events/mod.rs index b8c9e2ab..b043939e 100644 --- a/src/events/mod.rs +++ b/src/events/mod.rs @@ -458,7 +458,12 @@ mod tests { fn test_event_message() { // setup: let test_cases: Vec<(String, Option, EventMessageVerbosity, String)> = vec![ - ("safe".to_string(), Some("raw".to_string()), EventMessageVerbosity::SafeOnly, "safe".to_string()), + ( + "safe".to_string(), + Some("raw".to_string()), + EventMessageVerbosity::SafeOnly, + "safe".to_string(), + ), ("safe".to_string(), None, EventMessageVerbosity::SafeOnly, "safe".to_string()), ("safe".to_string(), None, EventMessageVerbosity::FullDetails, "safe".to_string()), ( @@ -483,11 +488,26 @@ mod tests { fn test_stage_sub_step_name() { // setup: let test_cases: Vec<(Stage, String)> = vec![ - (Stage::Infrastructure(InfrastructureStep::Create), InfrastructureStep::Create.to_string()), - (Stage::Infrastructure(InfrastructureStep::Upgrade), InfrastructureStep::Upgrade.to_string()), - (Stage::Infrastructure(InfrastructureStep::Delete), InfrastructureStep::Delete.to_string()), - (Stage::Infrastructure(InfrastructureStep::Resume), InfrastructureStep::Resume.to_string()), - (Stage::Infrastructure(InfrastructureStep::Pause), InfrastructureStep::Pause.to_string()), + ( + Stage::Infrastructure(InfrastructureStep::Create), + InfrastructureStep::Create.to_string(), + ), + ( + Stage::Infrastructure(InfrastructureStep::Upgrade), + InfrastructureStep::Upgrade.to_string(), + ), + ( + Stage::Infrastructure(InfrastructureStep::Delete), + InfrastructureStep::Delete.to_string(), + ), + ( + Stage::Infrastructure(InfrastructureStep::Resume), + InfrastructureStep::Resume.to_string(), + ), + ( + Stage::Infrastructure(InfrastructureStep::Pause), + InfrastructureStep::Pause.to_string(), + ), ( Stage::Infrastructure(InfrastructureStep::LoadConfiguration), InfrastructureStep::LoadConfiguration.to_string(), diff --git a/src/fs.rs b/src/fs.rs index e5364cca..7a68a48f 100644 --- a/src/fs.rs +++ b/src/fs.rs @@ -113,7 +113,11 @@ pub fn cleanup_workspace_directory(working_root_dir: &str, execution_id: &str) - Err(err) => { error!( "{}", - format!("error trying to remove workspace directory '{}', error: {}", workspace_dir.as_str(), err) + format!( + "error trying to remove workspace directory '{}', error: {}", + workspace_dir.as_str(), + err + ) ); Err(err) } diff --git a/src/git.rs b/src/git.rs index 8831df13..44a50978 100644 --- a/src/git.rs +++ b/src/git.rs @@ -49,7 +49,10 @@ fn checkout<'a>(repo: &'a Repository, commit_id: &'a str) -> Result, .find_remote("origin") .map(|remote| remote.url().unwrap_or_default().to_string()) .unwrap_or_default(); - let msg = format!("Unable to use git object commit ID {} on repository {}: {}", &commit_id, &repo_url, &err); + let msg = format!( + "Unable to use git object commit ID {} on repository {}: {}", + &commit_id, &repo_url, &err + ); Error::from_str(&msg) })?; @@ -188,11 +191,19 @@ mod tests { let repo_path = repo_dir.path(); // We only allow https:// at the moment - let repo = clone(&Url::parse("ssh://git@github.com/Qovery/engine.git").unwrap(), &repo_path, &|_| vec![]); + let repo = clone( + &Url::parse("ssh://git@github.com/Qovery/engine.git").unwrap(), + &repo_path, + &|_| vec![], + ); assert!(matches!(repo, Err(e) if e.message().contains("https://"))); // Repository must be empty - let repo = clone(&Url::parse("https://github.com/Qovery/engine-testing.git").unwrap(), &repo_path, &|_| vec![]); + let repo = clone( + &Url::parse("https://github.com/Qovery/engine-testing.git").unwrap(), + &repo_path, + &|_| vec![], + ); assert!(repo.is_ok()); // clone makes sure to empty the directory // Working case @@ -210,10 +221,16 @@ mod tests { { let clone_dir = DirectoryForTests::new_with_random_suffix("/tmp/engine_test_clone".to_string()); let get_credentials = |_: &str| { - vec![(CredentialType::USER_PASS_PLAINTEXT, Cred::userpass_plaintext("FAKE", "FAKE").unwrap())] + vec![( + CredentialType::USER_PASS_PLAINTEXT, + Cred::userpass_plaintext("FAKE", "FAKE").unwrap(), + )] }; - let repo = - clone(&Url::parse("https://gitlab.com/qovery/q-core.git").unwrap(), clone_dir.path(), &get_credentials); + let repo = clone( + &Url::parse("https://gitlab.com/qovery/q-core.git").unwrap(), + clone_dir.path(), + &get_credentials, + ); assert!(matches!(repo, Err(repo) if repo.message().contains("authentication"))); } @@ -246,9 +263,12 @@ mod tests { #[test] fn test_git_checkout() { let clone_dir = DirectoryForTests::new_with_random_suffix("/tmp/engine_test_checkout".to_string()); - let repo = - clone(&Url::parse("https://github.com/Qovery/engine-testing.git").unwrap(), clone_dir.path(), &|_| vec![]) - .unwrap(); + let repo = clone( + &Url::parse("https://github.com/Qovery/engine-testing.git").unwrap(), + clone_dir.path(), + &|_| vec![], + ) + .unwrap(); // Invalid commit for this repository let check = checkout(&repo, "c2c2101f8e4c4ffadb326dc440ba8afb4aeb1310"); @@ -305,7 +325,10 @@ mod tests { CredentialType::SSH_MEMORY, Cred::ssh_key_from_memory(user, None, &invalid_ssh_key, Some("toto")).unwrap(), ), - (CredentialType::SSH_MEMORY, Cred::ssh_key_from_memory(user, None, &ssh_key, None).unwrap()), + ( + CredentialType::SSH_MEMORY, + Cred::ssh_key_from_memory(user, None, &ssh_key, None).unwrap(), + ), ( CredentialType::SSH_MEMORY, Cred::ssh_key_from_memory(user, None, &invalid_ssh_key, Some("toto")).unwrap(), diff --git a/src/logger.rs b/src/logger.rs index e99ea075..2d96b8d3 100644 --- a/src/logger.rs +++ b/src/logger.rs @@ -129,7 +129,10 @@ mod tests { ), qovery_message.to_string(), user_message.to_string(), - Some(errors::CommandError::new(safe_message.to_string(), Some(raw_message.to_string()))), + Some(errors::CommandError::new( + safe_message.to_string(), + Some(raw_message.to_string()), + )), Some(link), Some(hint.to_string()), ), @@ -205,9 +208,21 @@ mod tests { tc.description ); - assert!(logs_contain(format!("organization_id=\"{}\"", orga_id.short()).as_str()), "{}", tc.description); - assert!(logs_contain(format!("cluster_id=\"{}\"", cluster_id.short()).as_str()), "{}", tc.description); - assert!(logs_contain(format!("execution_id=\"{}\"", execution_id).as_str()), "{}", tc.description); + assert!( + logs_contain(format!("organization_id=\"{}\"", orga_id.short()).as_str()), + "{}", + tc.description + ); + assert!( + logs_contain(format!("cluster_id=\"{}\"", cluster_id.short()).as_str()), + "{}", + tc.description + ); + assert!( + logs_contain(format!("execution_id=\"{}\"", execution_id).as_str()), + "{}", + tc.description + ); let details = tc.event.get_details(); assert!( @@ -240,13 +255,21 @@ mod tests { tc.description ); - assert!(logs_contain(format!("stage=\"{}\"", details.stage()).as_str()), "{}", tc.description); + assert!( + logs_contain(format!("stage=\"{}\"", details.stage()).as_str()), + "{}", + tc.description + ); assert!( logs_contain(format!("step=\"{}\"", details.stage().sub_step_name()).as_str()), "{}", tc.description ); - assert!(logs_contain(format!("transmitter=\"{}\"", details.transmitter()).as_str()), "{}", tc.description); + assert!( + logs_contain(format!("transmitter=\"{}\"", details.transmitter()).as_str()), + "{}", + tc.description + ); // Logger should display everything assert!(logs_contain(safe_message), "{}", tc.description); diff --git a/src/models.rs b/src/models.rs index 109c410d..c2126e5d 100644 --- a/src/models.rs +++ b/src/models.rs @@ -1426,8 +1426,16 @@ mod tests { let result = QoveryIdentifier::new_from_long_id(tc.input.clone()); // verify: - assert_eq!(tc.expected_long_id_output, result.raw_long_id, "case {} : '{}'", tc.description, tc.input); - assert_eq!(tc.expected_short_output, result.short, "case {} : '{}'", tc.description, tc.input); + assert_eq!( + tc.expected_long_id_output, result.raw_long_id, + "case {} : '{}'", + tc.description, tc.input + ); + assert_eq!( + tc.expected_short_output, result.short, + "case {} : '{}'", + tc.description, tc.input + ); } } } diff --git a/src/object_storage/s3.rs b/src/object_storage/s3.rs index 5d4fbbcb..886d962f 100644 --- a/src/object_storage/s3.rs +++ b/src/object_storage/s3.rs @@ -60,8 +60,10 @@ impl S3 { fn get_s3_client(&self) -> S3Client { let region = RusotoRegion::from_str(&self.region.to_aws_format()) .unwrap_or_else(|_| panic!("S3 region `{}` doesn't seems to be valid.", self.region.to_aws_format())); - let client = - Client::new_with(self.get_credentials(), HttpClient::new().expect("unable to create new Http client")); + let client = Client::new_with( + self.get_credentials(), + HttpClient::new().expect("unable to create new Http client"), + ); S3Client::new_with_client(client, region) } diff --git a/src/template.rs b/src/template.rs index 1cf101fd..670da04c 100644 --- a/src/template.rs +++ b/src/template.rs @@ -23,7 +23,10 @@ where tera::ErrorKind::TemplateNotFound(x) => format!("template not found: {}", x), tera::ErrorKind::Msg(x) => format!("tera error: {}", x), tera::ErrorKind::CircularExtend { tpl, inheritance_chain } => { - format!("circular extend - template: {}, inheritance chain: {:?}", tpl, inheritance_chain) + format!( + "circular extend - template: {}, inheritance chain: {:?}", + tpl, inheritance_chain + ) } tera::ErrorKind::MissingParent { current, parent } => { format!("missing parent - current: {}, parent: {}", current, parent) diff --git a/test_utilities/src/aws.rs b/test_utilities/src/aws.rs index d2eae14f..41f59b17 100644 --- a/test_utilities/src/aws.rs +++ b/test_utilities/src/aws.rs @@ -93,7 +93,14 @@ impl Cluster for AWS { vpc_network_mode, ); - EngineConfig::new(context.clone(), build_platform, container_registry, cloud_provider, dns_provider, k) + EngineConfig::new( + context.clone(), + build_platform, + container_registry, + cloud_provider, + dns_provider, + k, + ) } fn cloud_provider(context: &Context) -> Box { diff --git a/test_utilities/src/digitalocean.rs b/test_utilities/src/digitalocean.rs index 8339566b..15eb7f30 100644 --- a/test_utilities/src/digitalocean.rs +++ b/test_utilities/src/digitalocean.rs @@ -76,7 +76,14 @@ impl Cluster for DO { vpc_network_mode, ); - EngineConfig::new(context.clone(), build_platform, container_registry, cloud_provider, dns_provider, k) + EngineConfig::new( + context.clone(), + build_platform, + container_registry, + cloud_provider, + dns_provider, + k, + ) } fn cloud_provider(context: &Context) -> Box { diff --git a/test_utilities/src/scaleway.rs b/test_utilities/src/scaleway.rs index 31da6441..1941a90b 100644 --- a/test_utilities/src/scaleway.rs +++ b/test_utilities/src/scaleway.rs @@ -104,7 +104,14 @@ impl Cluster for Scaleway { vpc_network_mode, ); - EngineConfig::new(context.clone(), build_platform, container_registry, cloud_provider, dns_provider, cluster) + EngineConfig::new( + context.clone(), + build_platform, + container_registry, + cloud_provider, + dns_provider, + cluster, + ) } fn cloud_provider(context: &Context) -> Box { @@ -222,8 +229,14 @@ pub fn clean_environments( let secret_token = secrets.SCALEWAY_SECRET_KEY.unwrap(); let project_id = secrets.SCALEWAY_DEFAULT_PROJECT_ID.unwrap(); - let container_registry_client = - ScalewayCR::new(context.clone(), "test", "test", secret_token.as_str(), project_id.as_str(), zone)?; + let container_registry_client = ScalewayCR::new( + context.clone(), + "test", + "test", + secret_token.as_str(), + project_id.as_str(), + zone, + )?; // delete images created in registry let registry_url = container_registry_client.registry_info(); diff --git a/test_utilities/src/utilities.rs b/test_utilities/src/utilities.rs index 42b6d3ac..58bf34f4 100644 --- a/test_utilities/src/utilities.rs +++ b/test_utilities/src/utilities.rs @@ -169,13 +169,21 @@ impl FuncTestsSecrets { fn get_vault_config() -> Result { let vault_addr = match env::var_os("VAULT_ADDR") { Some(x) => x.into_string().unwrap(), - None => return Err(Error::new(ErrorKind::NotFound, format!("VAULT_ADDR environment variable is missing"))), + None => { + return Err(Error::new( + ErrorKind::NotFound, + format!("VAULT_ADDR environment variable is missing"), + )) + } }; let vault_token = match env::var_os("VAULT_TOKEN") { Some(x) => x.into_string().unwrap(), None => { - return Err(Error::new(ErrorKind::NotFound, format!("VAULT_TOKEN environment variable is missing"))) + return Err(Error::new( + ErrorKind::NotFound, + format!("VAULT_TOKEN environment variable is missing"), + )) } }; @@ -370,7 +378,10 @@ pub fn init() -> Instant { None => tracing_subscriber::fmt().try_init(), }; - info!("running from current directory: {}", std::env::current_dir().unwrap().to_str().unwrap()); + info!( + "running from current directory: {}", + std::env::current_dir().unwrap().to_str().unwrap() + ); Instant::now() } @@ -701,7 +712,10 @@ fn get_cloud_provider_credentials(provider_kind: Kind, secrets: &FuncTestsSecret Kind::Scw => vec![ (SCALEWAY_ACCESS_KEY, secrets.SCALEWAY_ACCESS_KEY.as_ref().unwrap().as_str()), (SCALEWAY_SECRET_KEY, secrets.SCALEWAY_SECRET_KEY.as_ref().unwrap().as_str()), - (SCALEWAY_DEFAULT_PROJECT_ID, secrets.SCALEWAY_DEFAULT_PROJECT_ID.as_ref().unwrap().as_str()), + ( + SCALEWAY_DEFAULT_PROJECT_ID, + secrets.SCALEWAY_DEFAULT_PROJECT_ID.as_ref().unwrap().as_str(), + ), ], } } diff --git a/tests/aws/aws_databases.rs b/tests/aws/aws_databases.rs index 37fb5292..5e7a8d51 100644 --- a/tests/aws/aws_databases.rs +++ b/tests/aws/aws_databases.rs @@ -330,7 +330,10 @@ fn postgresql_deploy_a_working_environment_and_redeploy() { } let ret = environment_delete.delete_environment(&ea_delete, logger, &engine_config_for_delete); - assert!(matches!(ret, TransactionResult::Ok | TransactionResult::UnrecoverableError(_, _))); + assert!(matches!( + ret, + TransactionResult::Ok | TransactionResult::UnrecoverableError(_, _) + )); test_name.to_string() }) diff --git a/tests/aws/aws_environment.rs b/tests/aws/aws_environment.rs index 40fe92ce..67189f37 100644 --- a/tests/aws/aws_environment.rs +++ b/tests/aws/aws_environment.rs @@ -117,7 +117,13 @@ fn deploy_a_working_environment_and_pause_it_eks() { let ret = environment.deploy_environment(&ea, logger.clone(), &engine_config); assert!(matches!(ret, TransactionResult::Ok)); - let ret = get_pods(context.clone(), Kind::Aws, environment.clone(), selector.as_str(), secrets.clone()); + let ret = get_pods( + context.clone(), + Kind::Aws, + environment.clone(), + selector.as_str(), + secrets.clone(), + ); assert_eq!(ret.is_ok(), true); assert_eq!(ret.unwrap().items.is_empty(), false); @@ -125,7 +131,13 @@ fn deploy_a_working_environment_and_pause_it_eks() { assert!(matches!(ret, TransactionResult::Ok)); // Check that we have actually 0 pods running for this app - let ret = get_pods(context.clone(), Kind::Aws, environment.clone(), selector.as_str(), secrets.clone()); + let ret = get_pods( + context.clone(), + Kind::Aws, + environment.clone(), + selector.as_str(), + secrets.clone(), + ); assert_eq!(ret.is_ok(), true); assert_eq!(ret.unwrap().items.is_empty(), true); @@ -268,7 +280,10 @@ fn deploy_a_not_working_environment_with_no_router_on_aws_eks() { assert!(matches!(ret, TransactionResult::UnrecoverableError(_, _))); let ret = environment_delete.delete_environment(&ea_delete, logger, &engine_config_for_delete); - assert!(matches!(ret, TransactionResult::Ok | TransactionResult::UnrecoverableError(_, _))); + assert!(matches!( + ret, + TransactionResult::Ok | TransactionResult::UnrecoverableError(_, _) + )); test_name.to_string() }) @@ -626,8 +641,13 @@ fn redeploy_same_app_with_ebs() { }; let app_name = format!("{}-0", &environment_check1.applications[0].name); - let (_, number) = - is_pod_restarted_env(context.clone(), Kind::Aws, environment_check1, app_name.as_str(), secrets.clone()); + let (_, number) = is_pod_restarted_env( + context.clone(), + Kind::Aws, + environment_check1, + app_name.as_str(), + secrets.clone(), + ); let ret = environment_redeploy.deploy_environment(&ea2, logger.clone(), &engine_config_bis); assert!(matches!(ret, TransactionResult::Ok)); @@ -796,12 +816,18 @@ fn deploy_ok_fail_fail_ok_environment() { // FAIL and rollback let ret = not_working_env_1.deploy_environment(&ea_not_working_1, logger.clone(), &engine_config_for_not_working_1); - assert!(matches!(ret, TransactionResult::Rollback(_) | TransactionResult::UnrecoverableError(_, _))); + assert!(matches!( + ret, + TransactionResult::Rollback(_) | TransactionResult::UnrecoverableError(_, _) + )); // FAIL and Rollback again let ret = not_working_env_2.deploy_environment(&ea_not_working_2, logger.clone(), &engine_config_for_not_working_2); - assert!(matches!(ret, TransactionResult::Rollback(_) | TransactionResult::UnrecoverableError(_, _))); + assert!(matches!( + ret, + TransactionResult::Rollback(_) | TransactionResult::UnrecoverableError(_, _) + )); // Should be working let ret = environment.deploy_environment(&ea, logger.clone(), &engine_config); diff --git a/tests/aws/aws_kubernetes.rs b/tests/aws/aws_kubernetes.rs index 4e0d67bc..53f790b8 100644 --- a/tests/aws/aws_kubernetes.rs +++ b/tests/aws/aws_kubernetes.rs @@ -25,7 +25,10 @@ fn create_and_destroy_eks_cluster( cluster_test( test_name, Kind::Aws, - context(generate_id().as_str(), generate_cluster_id(region.to_string().as_str()).as_str()), + context( + generate_id().as_str(), + generate_cluster_id(region.to_string().as_str()).as_str(), + ), logger(), region.to_aws_format().as_str(), Some(zones), diff --git a/tests/aws/aws_s3.rs b/tests/aws/aws_s3.rs index fb0b699f..33ac7aa7 100644 --- a/tests/aws/aws_s3.rs +++ b/tests/aws/aws_s3.rs @@ -172,7 +172,11 @@ fn test_put_file() { let temp_file = NamedTempFile::new().expect("error while creating tempfile"); // compute: - let result = aws_os.put(bucket_name.as_str(), object_key.as_str(), temp_file.into_temp_path().to_str().unwrap()); + let result = aws_os.put( + bucket_name.as_str(), + object_key.as_str(), + temp_file.into_temp_path().to_str().unwrap(), + ); // validate: assert!(result.is_ok()); diff --git a/tests/digitalocean/do_databases.rs b/tests/digitalocean/do_databases.rs index 0341671c..fcd475b7 100644 --- a/tests/digitalocean/do_databases.rs +++ b/tests/digitalocean/do_databases.rs @@ -131,7 +131,13 @@ fn deploy_an_environment_with_db_and_pause_it() { // Check that we have actually 0 pods running for this db let app_name = format!("postgresql{}-0", environment.databases[0].name); - let ret = get_pods(context.clone(), ProviderKind::Do, environment.clone(), app_name.as_str(), secrets.clone()); + let ret = get_pods( + context.clone(), + ProviderKind::Do, + environment.clone(), + app_name.as_str(), + secrets.clone(), + ); assert_eq!(ret.is_ok(), true); assert_eq!(ret.unwrap().items.is_empty(), true); @@ -362,7 +368,10 @@ fn postgresql_deploy_a_working_environment_and_redeploy() { } let ret = environment_delete.delete_environment(&env_action_delete, logger, &engine_config_for_delete); - assert!(matches!(ret, TransactionResult::Ok | TransactionResult::UnrecoverableError(_, _))); + assert!(matches!( + ret, + TransactionResult::Ok | TransactionResult::UnrecoverableError(_, _) + )); // delete images created during test from registries if let Err(e) = clean_environments(&context, vec![environment], secrets, DO_TEST_REGION) { diff --git a/tests/digitalocean/do_environment.rs b/tests/digitalocean/do_environment.rs index 28eee4e5..b3df0295 100644 --- a/tests/digitalocean/do_environment.rs +++ b/tests/digitalocean/do_environment.rs @@ -125,7 +125,10 @@ fn digitalocean_doks_deploy_a_not_working_environment_with_no_router() { let result = environment_for_delete.delete_environment(&env_action_for_delete, logger, &engine_config_for_delete); - assert!(matches!(result, TransactionResult::Ok | TransactionResult::UnrecoverableError(_, _))); + assert!(matches!( + result, + TransactionResult::Ok | TransactionResult::UnrecoverableError(_, _) + )); if let Err(e) = clean_environments(&context, vec![environment], secrets, DO_TEST_REGION) { warn!("cannot clean environments, error: {:?}", e); @@ -176,7 +179,13 @@ fn digitalocean_doks_deploy_a_working_environment_and_pause() { let ret = environment.deploy_environment(&env_action, logger.clone(), &engine_config); assert!(matches!(ret, TransactionResult::Ok)); - let ret = get_pods(context.clone(), Kind::Do, environment.clone(), selector.as_str(), secrets.clone()); + let ret = get_pods( + context.clone(), + Kind::Do, + environment.clone(), + selector.as_str(), + secrets.clone(), + ); assert_eq!(ret.is_ok(), true); assert_eq!(ret.unwrap().items.is_empty(), false); @@ -184,7 +193,13 @@ fn digitalocean_doks_deploy_a_working_environment_and_pause() { assert!(matches!(ret, TransactionResult::Ok)); // Check that we have actually 0 pods running for this app - let ret = get_pods(context.clone(), Kind::Do, environment.clone(), selector.as_str(), secrets.clone()); + let ret = get_pods( + context.clone(), + Kind::Do, + environment.clone(), + selector.as_str(), + secrets.clone(), + ); assert_eq!(ret.is_ok(), true); assert_eq!(ret.unwrap().items.is_empty(), true); @@ -194,7 +209,13 @@ fn digitalocean_doks_deploy_a_working_environment_and_pause() { let ret = environment.deploy_environment(&env_action, logger.clone(), &engine_config_resume); assert!(matches!(ret, TransactionResult::Ok)); - let ret = get_pods(context.clone(), Kind::Do, environment.clone(), selector.as_str(), secrets.clone()); + let ret = get_pods( + context.clone(), + Kind::Do, + environment.clone(), + selector.as_str(), + secrets.clone(), + ); assert_eq!(ret.is_ok(), true); assert_eq!(ret.unwrap().items.is_empty(), false); @@ -497,14 +518,24 @@ fn digitalocean_doks_redeploy_same_app() { }; let app_name = format!("{}-0", &environment_check1.applications[0].name); - let (_, number) = - is_pod_restarted_env(context.clone(), Kind::Do, environment_check1, app_name.as_str(), secrets.clone()); + let (_, number) = is_pod_restarted_env( + context.clone(), + Kind::Do, + environment_check1, + app_name.as_str(), + secrets.clone(), + ); let result = environment_redeploy.deploy_environment(&env_action_redeploy, logger.clone(), &engine_config_bis); assert!(matches!(result, TransactionResult::Ok)); - let (_, number2) = - is_pod_restarted_env(context.clone(), Kind::Do, environment_check2, app_name.as_str(), secrets.clone()); + let (_, number2) = is_pod_restarted_env( + context.clone(), + Kind::Do, + environment_check2, + app_name.as_str(), + secrets.clone(), + ); // nothing changed in the app, so, it shouldn't be restarted assert!(number.eq(&number2)); @@ -677,7 +708,10 @@ fn digitalocean_doks_deploy_ok_fail_fail_ok_environment() { logger.clone(), &engine_config_for_not_working_1, ); - assert!(matches!(result, TransactionResult::Rollback(_) | TransactionResult::UnrecoverableError(_, _))); + assert!(matches!( + result, + TransactionResult::Rollback(_) | TransactionResult::UnrecoverableError(_, _) + )); // FAIL and Rollback again let result = not_working_env_2.deploy_environment( @@ -685,7 +719,10 @@ fn digitalocean_doks_deploy_ok_fail_fail_ok_environment() { logger.clone(), &engine_config_for_not_working_2, ); - assert!(matches!(result, TransactionResult::Rollback(_) | TransactionResult::UnrecoverableError(_, _))); + assert!(matches!( + result, + TransactionResult::Rollback(_) | TransactionResult::UnrecoverableError(_, _) + )); // Should be working let result = environment.deploy_environment(&env_action, logger.clone(), &engine_config); diff --git a/tests/digitalocean/do_spaces.rs b/tests/digitalocean/do_spaces.rs index 54f853b1..e214ede1 100644 --- a/tests/digitalocean/do_spaces.rs +++ b/tests/digitalocean/do_spaces.rs @@ -170,7 +170,11 @@ fn test_put_file() { let temp_file = NamedTempFile::new().expect("error while creating tempfile"); // compute: - let result = spaces.put(bucket_name.as_str(), object_key.as_str(), temp_file.into_temp_path().to_str().unwrap()); + let result = spaces.put( + bucket_name.as_str(), + object_key.as_str(), + temp_file.into_temp_path().to_str().unwrap(), + ); // validate: assert!(result.is_ok()); diff --git a/tests/scaleway/scw_databases.rs b/tests/scaleway/scw_databases.rs index 5bed5672..489d7e4b 100644 --- a/tests/scaleway/scw_databases.rs +++ b/tests/scaleway/scw_databases.rs @@ -137,7 +137,13 @@ fn deploy_an_environment_with_db_and_pause_it() { // Check that we have actually 0 pods running for this db let app_name = format!("postgresql{}-0", environment.databases[0].name); - let ret = get_pods(context.clone(), ProviderKind::Scw, environment.clone(), app_name.as_str(), secrets.clone()); + let ret = get_pods( + context.clone(), + ProviderKind::Scw, + environment.clone(), + app_name.as_str(), + secrets.clone(), + ); assert_eq!(ret.is_ok(), true); assert_eq!(ret.unwrap().items.is_empty(), true); @@ -367,7 +373,10 @@ fn postgresql_deploy_a_working_environment_and_redeploy() { } let result = environment_delete.delete_environment(&env_action_delete, logger, &engine_config_for_delete); - assert!(matches!(result, TransactionResult::Ok | TransactionResult::UnrecoverableError(_, _))); + assert!(matches!( + result, + TransactionResult::Ok | TransactionResult::UnrecoverableError(_, _) + )); // delete images created during test from registries if let Err(e) = clean_environments(&context, vec![environment], secrets, SCW_TEST_ZONE) { diff --git a/tests/scaleway/scw_environment.rs b/tests/scaleway/scw_environment.rs index 791bc5d7..68114006 100644 --- a/tests/scaleway/scw_environment.rs +++ b/tests/scaleway/scw_environment.rs @@ -129,7 +129,10 @@ fn scaleway_kapsule_deploy_a_not_working_environment_with_no_router() { let result = environment_for_delete.delete_environment(&env_action_for_delete, logger, &engine_config_for_delete); - assert!(matches!(result, TransactionResult::Ok | TransactionResult::UnrecoverableError(_, _))); + assert!(matches!( + result, + TransactionResult::Ok | TransactionResult::UnrecoverableError(_, _) + )); if let Err(e) = clean_environments(&context, vec![environment], secrets, SCW_TEST_ZONE) { warn!("cannot clean environments, error: {:?}", e); @@ -182,7 +185,13 @@ fn scaleway_kapsule_deploy_a_working_environment_and_pause() { let result = environment.deploy_environment(&env_action, logger.clone(), &engine_config); assert!(matches!(result, TransactionResult::Ok)); - let ret = get_pods(context.clone(), Kind::Scw, environment.clone(), selector.as_str(), secrets.clone()); + let ret = get_pods( + context.clone(), + Kind::Scw, + environment.clone(), + selector.as_str(), + secrets.clone(), + ); assert_eq!(ret.is_ok(), true); assert_eq!(ret.unwrap().items.is_empty(), false); @@ -190,7 +199,13 @@ fn scaleway_kapsule_deploy_a_working_environment_and_pause() { assert!(matches!(result, TransactionResult::Ok)); // Check that we have actually 0 pods running for this app - let ret = get_pods(context.clone(), Kind::Scw, environment.clone(), selector.as_str(), secrets.clone()); + let ret = get_pods( + context.clone(), + Kind::Scw, + environment.clone(), + selector.as_str(), + secrets.clone(), + ); assert_eq!(ret.is_ok(), true); assert_eq!(ret.unwrap().items.is_empty(), true); @@ -200,7 +215,13 @@ fn scaleway_kapsule_deploy_a_working_environment_and_pause() { let result = environment.deploy_environment(&env_action, logger.clone(), &engine_config_resume); assert!(matches!(result, TransactionResult::Ok)); - let ret = get_pods(context.clone(), Kind::Scw, environment.clone(), selector.as_str(), secrets.clone()); + let ret = get_pods( + context.clone(), + Kind::Scw, + environment.clone(), + selector.as_str(), + secrets.clone(), + ); assert_eq!(ret.is_ok(), true); assert_eq!(ret.unwrap().items.is_empty(), false); @@ -475,7 +496,13 @@ fn deploy_a_working_environment_and_pause_it() { let result = environment.deploy_environment(&ea, logger.clone(), &engine_config); assert!(matches!(result, TransactionResult::Ok)); - let ret = get_pods(context.clone(), Kind::Scw, environment.clone(), selector.as_str(), secrets.clone()); + let ret = get_pods( + context.clone(), + Kind::Scw, + environment.clone(), + selector.as_str(), + secrets.clone(), + ); assert_eq!(ret.is_ok(), true); assert_eq!(ret.unwrap().items.is_empty(), false); @@ -483,7 +510,13 @@ fn deploy_a_working_environment_and_pause_it() { assert!(matches!(result, TransactionResult::Ok)); // Check that we have actually 0 pods running for this app - let ret = get_pods(context.clone(), Kind::Scw, environment.clone(), selector.as_str(), secrets.clone()); + let ret = get_pods( + context.clone(), + Kind::Scw, + environment.clone(), + selector.as_str(), + secrets.clone(), + ); assert_eq!(ret.is_ok(), true); assert_eq!(ret.unwrap().items.is_empty(), true); @@ -583,14 +616,24 @@ fn scaleway_kapsule_redeploy_same_app() { }; let app_name = format!("{}-0", &environment_check1.applications[0].name); - let (_, number) = - is_pod_restarted_env(context.clone(), Kind::Scw, environment_check1, app_name.as_str(), secrets.clone()); + let (_, number) = is_pod_restarted_env( + context.clone(), + Kind::Scw, + environment_check1, + app_name.as_str(), + secrets.clone(), + ); let result = environment_redeploy.deploy_environment(&env_action_redeploy, logger.clone(), &engine_config_bis); assert!(matches!(result, TransactionResult::Ok)); - let (_, number2) = - is_pod_restarted_env(context.clone(), Kind::Scw, environment_check2, app_name.as_str(), secrets.clone()); + let (_, number2) = is_pod_restarted_env( + context.clone(), + Kind::Scw, + environment_check2, + app_name.as_str(), + secrets.clone(), + ); // nothing changed in the app, so, it shouldn't be restarted assert!(number.eq(&number2)); @@ -770,7 +813,10 @@ fn scaleway_kapsule_deploy_ok_fail_fail_ok_environment() { logger.clone(), &engine_config_for_not_working_1, ); - assert!(matches!(result, TransactionResult::Rollback(_) | TransactionResult::UnrecoverableError(_, _))); + assert!(matches!( + result, + TransactionResult::Rollback(_) | TransactionResult::UnrecoverableError(_, _) + )); // FAIL and Rollback again let result = not_working_env_2.deploy_environment( @@ -778,7 +824,10 @@ fn scaleway_kapsule_deploy_ok_fail_fail_ok_environment() { logger.clone(), &engine_config_for_not_working_2, ); - assert!(matches!(result, TransactionResult::Rollback(_) | TransactionResult::UnrecoverableError(_, _))); + assert!(matches!( + result, + TransactionResult::Rollback(_) | TransactionResult::UnrecoverableError(_, _) + )); // Should be working let result = environment.deploy_environment(&env_action, logger.clone(), &engine_config); diff --git a/tests/scaleway/scw_object_storage.rs b/tests/scaleway/scw_object_storage.rs index 632e0aaa..35d232af 100644 --- a/tests/scaleway/scw_object_storage.rs +++ b/tests/scaleway/scw_object_storage.rs @@ -191,8 +191,11 @@ fn test_put_file() { let temp_file = NamedTempFile::new().expect("error while creating tempfile"); // compute: - let result = - scaleway_os.put(bucket_name.as_str(), object_key.as_str(), temp_file.into_temp_path().to_str().unwrap()); + let result = scaleway_os.put( + bucket_name.as_str(), + object_key.as_str(), + temp_file.into_temp_path().to_str().unwrap(), + ); // validate: assert!(result.is_ok());