From 3f07f0e08f741afd0444e822673c058a078a1325 Mon Sep 17 00:00:00 2001 From: Iain Learmonth Date: Sun, 23 Oct 2022 12:14:29 +0100 Subject: [PATCH] proxy/meta: only create proxies for providers that are enabled --- app/terraform/proxy/__init__.py | 9 +++++++++ app/terraform/proxy/azure_cdn.py | 1 + app/terraform/proxy/cloudfront.py | 1 + app/terraform/proxy/fastly.py | 1 + app/terraform/proxy/meta.py | 2 +- 5 files changed, 13 insertions(+), 1 deletion(-) diff --git a/app/terraform/proxy/__init__.py b/app/terraform/proxy/__init__.py index 2eb2f1b..c101d60 100644 --- a/app/terraform/proxy/__init__.py +++ b/app/terraform/proxy/__init__.py @@ -5,6 +5,7 @@ import datetime from collections import defaultdict from typing import Optional, Any, List, Dict +from flask import current_app from sqlalchemy import text from app import app @@ -65,10 +66,18 @@ class ProxyAutomation(TerraformAutomation): Whether this provider supports "smart" proxies. """ + cloud_name: str + """ + The name of the cloud provider used by this proxy provider. Used to determine if this provider can be enabled. + """ + @abstractmethod def import_state(self, state: Any) -> None: raise NotImplementedError() + def enabled(self) -> bool: + return current_app.config.get(self.cloud_name.upper() + "_ENABLED", False) + def tf_prehook(self) -> Optional[Any]: # pylint: disable=useless-return return None diff --git a/app/terraform/proxy/azure_cdn.py b/app/terraform/proxy/azure_cdn.py index 3e151e0..55097f5 100644 --- a/app/terraform/proxy/azure_cdn.py +++ b/app/terraform/proxy/azure_cdn.py @@ -11,6 +11,7 @@ class ProxyAzureCdnAutomation(ProxyAutomation): provider = "azure_cdn" subgroup_members_max = 25 parallelism = 1 + cloud_name = "azure" template_parameters = [ "azure_resource_group_name", diff --git a/app/terraform/proxy/cloudfront.py b/app/terraform/proxy/cloudfront.py index 041fd72..76dfae0 100644 --- a/app/terraform/proxy/cloudfront.py +++ b/app/terraform/proxy/cloudfront.py @@ -11,6 +11,7 @@ class ProxyCloudfrontAutomation(ProxyAutomation): description = "Deploy proxies to AWS CloudFront" provider = "cloudfront" smart_proxies = True + cloud_name = "aws" template_parameters = [ "aws_access_key", diff --git a/app/terraform/proxy/fastly.py b/app/terraform/proxy/fastly.py index 9d7dc00..4ccfbcb 100644 --- a/app/terraform/proxy/fastly.py +++ b/app/terraform/proxy/fastly.py @@ -12,6 +12,7 @@ class ProxyFastlyAutomation(ProxyAutomation): description = "Deploy proxies to Fastly" provider = "fastly" subgroup_members_max = 20 + cloud_name = "fastly" template_parameters = [ "aws_access_key", diff --git a/app/terraform/proxy/meta.py b/app/terraform/proxy/meta.py index ef55e8e..fa3735d 100644 --- a/app/terraform/proxy/meta.py +++ b/app/terraform/proxy/meta.py @@ -18,7 +18,7 @@ PROXY_PROVIDERS = {p.provider: p for p in [ # In order of preference ProxyCloudfrontAutomation, ProxyFastlyAutomation, ProxyAzureCdnAutomation -]} +] if p.enabled} def create_proxy(pool: Pool, origin: Origin) -> bool: