|
|
|
@ -132,7 +132,7 @@ class TrafficDirectorManager: |
|
|
|
|
self.delete_health_check(force=force) |
|
|
|
|
|
|
|
|
|
@functools.lru_cache(None) |
|
|
|
|
def _make_resource_name(self, name: str) -> str: |
|
|
|
|
def make_resource_name(self, name: str) -> str: |
|
|
|
|
"""Make dash-separated resource name with resource prefix and suffix.""" |
|
|
|
|
parts = [self.resource_prefix, name] |
|
|
|
|
# Avoid trailing dash when the suffix is empty. |
|
|
|
@ -151,14 +151,14 @@ class TrafficDirectorManager: |
|
|
|
|
if protocol is None: |
|
|
|
|
protocol = _HealthCheckGRPC |
|
|
|
|
|
|
|
|
|
name = self._make_resource_name(self.HEALTH_CHECK_NAME) |
|
|
|
|
name = self.make_resource_name(self.HEALTH_CHECK_NAME) |
|
|
|
|
logger.info('Creating %s Health Check "%s"', protocol.name, name) |
|
|
|
|
resource = self.compute.create_health_check(name, protocol, port=port) |
|
|
|
|
self.health_check = resource |
|
|
|
|
|
|
|
|
|
def delete_health_check(self, force=False): |
|
|
|
|
if force: |
|
|
|
|
name = self._make_resource_name(self.HEALTH_CHECK_NAME) |
|
|
|
|
name = self.make_resource_name(self.HEALTH_CHECK_NAME) |
|
|
|
|
elif self.health_check: |
|
|
|
|
name = self.health_check.name |
|
|
|
|
else: |
|
|
|
@ -172,7 +172,7 @@ class TrafficDirectorManager: |
|
|
|
|
if protocol is None: |
|
|
|
|
protocol = _BackendGRPC |
|
|
|
|
|
|
|
|
|
name = self._make_resource_name(self.BACKEND_SERVICE_NAME) |
|
|
|
|
name = self.make_resource_name(self.BACKEND_SERVICE_NAME) |
|
|
|
|
logger.info('Creating %s Backend Service "%s"', protocol.name, name) |
|
|
|
|
resource = self.compute.create_backend_service_traffic_director( |
|
|
|
|
name, health_check=self.health_check, protocol=protocol) |
|
|
|
@ -180,13 +180,13 @@ class TrafficDirectorManager: |
|
|
|
|
self.backend_service_protocol = protocol |
|
|
|
|
|
|
|
|
|
def load_backend_service(self): |
|
|
|
|
name = self._make_resource_name(self.BACKEND_SERVICE_NAME) |
|
|
|
|
name = self.make_resource_name(self.BACKEND_SERVICE_NAME) |
|
|
|
|
resource = self.compute.get_backend_service_traffic_director(name) |
|
|
|
|
self.backend_service = resource |
|
|
|
|
|
|
|
|
|
def delete_backend_service(self, force=False): |
|
|
|
|
if force: |
|
|
|
|
name = self._make_resource_name(self.BACKEND_SERVICE_NAME) |
|
|
|
|
name = self.make_resource_name(self.BACKEND_SERVICE_NAME) |
|
|
|
|
elif self.backend_service: |
|
|
|
|
name = self.backend_service.name |
|
|
|
|
else: |
|
|
|
@ -226,7 +226,7 @@ class TrafficDirectorManager: |
|
|
|
|
self, protocol: Optional[BackendServiceProtocol] = _BackendGRPC): |
|
|
|
|
if protocol is None: |
|
|
|
|
protocol = _BackendGRPC |
|
|
|
|
name = self._make_resource_name(self.ALTERNATIVE_BACKEND_SERVICE_NAME) |
|
|
|
|
name = self.make_resource_name(self.ALTERNATIVE_BACKEND_SERVICE_NAME) |
|
|
|
|
logger.info('Creating %s Alternative Backend Service "%s"', |
|
|
|
|
protocol.name, name) |
|
|
|
|
resource = self.compute.create_backend_service_traffic_director( |
|
|
|
@ -235,13 +235,13 @@ class TrafficDirectorManager: |
|
|
|
|
self.alternative_backend_service_protocol = protocol |
|
|
|
|
|
|
|
|
|
def load_alternative_backend_service(self): |
|
|
|
|
name = self._make_resource_name(self.ALTERNATIVE_BACKEND_SERVICE_NAME) |
|
|
|
|
name = self.make_resource_name(self.ALTERNATIVE_BACKEND_SERVICE_NAME) |
|
|
|
|
resource = self.compute.get_backend_service_traffic_director(name) |
|
|
|
|
self.alternative_backend_service = resource |
|
|
|
|
|
|
|
|
|
def delete_alternative_backend_service(self, force=False): |
|
|
|
|
if force: |
|
|
|
|
name = self._make_resource_name( |
|
|
|
|
name = self.make_resource_name( |
|
|
|
|
self.ALTERNATIVE_BACKEND_SERVICE_NAME) |
|
|
|
|
elif self.alternative_backend_service: |
|
|
|
|
name = self.alternative_backend_service.name |
|
|
|
@ -286,8 +286,8 @@ class TrafficDirectorManager: |
|
|
|
|
src_port: int, |
|
|
|
|
) -> GcpResource: |
|
|
|
|
src_address = f'{src_host}:{src_port}' |
|
|
|
|
name = self._make_resource_name(self.URL_MAP_NAME) |
|
|
|
|
matcher_name = self._make_resource_name(self.URL_MAP_PATH_MATCHER_NAME) |
|
|
|
|
name = self.make_resource_name(self.URL_MAP_NAME) |
|
|
|
|
matcher_name = self.make_resource_name(self.URL_MAP_PATH_MATCHER_NAME) |
|
|
|
|
logger.info('Creating URL map "%s": %s -> %s', name, src_address, |
|
|
|
|
self.backend_service.name) |
|
|
|
|
resource = self.compute.create_url_map(name, matcher_name, |
|
|
|
@ -304,7 +304,7 @@ class TrafficDirectorManager: |
|
|
|
|
|
|
|
|
|
def delete_url_map(self, force=False): |
|
|
|
|
if force: |
|
|
|
|
name = self._make_resource_name(self.URL_MAP_NAME) |
|
|
|
|
name = self.make_resource_name(self.URL_MAP_NAME) |
|
|
|
|
elif self.url_map: |
|
|
|
|
name = self.url_map.name |
|
|
|
|
else: |
|
|
|
@ -314,7 +314,7 @@ class TrafficDirectorManager: |
|
|
|
|
self.url_map = None |
|
|
|
|
|
|
|
|
|
def create_target_proxy(self): |
|
|
|
|
name = self._make_resource_name(self.TARGET_PROXY_NAME) |
|
|
|
|
name = self.make_resource_name(self.TARGET_PROXY_NAME) |
|
|
|
|
if self.backend_service_protocol is BackendServiceProtocol.GRPC: |
|
|
|
|
target_proxy_type = 'GRPC' |
|
|
|
|
create_proxy_fn = self.compute.create_target_grpc_proxy |
|
|
|
@ -332,7 +332,7 @@ class TrafficDirectorManager: |
|
|
|
|
|
|
|
|
|
def delete_target_grpc_proxy(self, force=False): |
|
|
|
|
if force: |
|
|
|
|
name = self._make_resource_name(self.TARGET_PROXY_NAME) |
|
|
|
|
name = self.make_resource_name(self.TARGET_PROXY_NAME) |
|
|
|
|
elif self.target_proxy: |
|
|
|
|
name = self.target_proxy.name |
|
|
|
|
else: |
|
|
|
@ -344,7 +344,7 @@ class TrafficDirectorManager: |
|
|
|
|
|
|
|
|
|
def delete_target_http_proxy(self, force=False): |
|
|
|
|
if force: |
|
|
|
|
name = self._make_resource_name(self.TARGET_PROXY_NAME) |
|
|
|
|
name = self.make_resource_name(self.TARGET_PROXY_NAME) |
|
|
|
|
elif self.target_proxy: |
|
|
|
|
name = self.target_proxy.name |
|
|
|
|
else: |
|
|
|
@ -368,7 +368,7 @@ class TrafficDirectorManager: |
|
|
|
|
raise RuntimeError("Couldn't find unused forwarding rule port") |
|
|
|
|
|
|
|
|
|
def create_forwarding_rule(self, src_port: int): |
|
|
|
|
name = self._make_resource_name(self.FORWARDING_RULE_NAME) |
|
|
|
|
name = self.make_resource_name(self.FORWARDING_RULE_NAME) |
|
|
|
|
src_port = int(src_port) |
|
|
|
|
logging.info( |
|
|
|
|
'Creating forwarding rule "%s" in network "%s": 0.0.0.0:%s -> %s', |
|
|
|
@ -381,7 +381,7 @@ class TrafficDirectorManager: |
|
|
|
|
|
|
|
|
|
def delete_forwarding_rule(self, force=False): |
|
|
|
|
if force: |
|
|
|
|
name = self._make_resource_name(self.FORWARDING_RULE_NAME) |
|
|
|
|
name = self.make_resource_name(self.FORWARDING_RULE_NAME) |
|
|
|
|
elif self.forwarding_rule: |
|
|
|
|
name = self.forwarding_rule.name |
|
|
|
|
else: |
|
|
|
@ -391,7 +391,7 @@ class TrafficDirectorManager: |
|
|
|
|
self.forwarding_rule = None |
|
|
|
|
|
|
|
|
|
def create_firewall_rule(self, allowed_ports: List[str]): |
|
|
|
|
name = self._make_resource_name(self.FIREWALL_RULE_NAME) |
|
|
|
|
name = self.make_resource_name(self.FIREWALL_RULE_NAME) |
|
|
|
|
logging.info( |
|
|
|
|
'Creating firewall rule "%s" in network "%s" with allowed ports %s', |
|
|
|
|
name, self.network, allowed_ports) |
|
|
|
@ -403,7 +403,7 @@ class TrafficDirectorManager: |
|
|
|
|
def delete_firewall_rule(self, force=False): |
|
|
|
|
"""The firewall rule won't be automatically removed.""" |
|
|
|
|
if force: |
|
|
|
|
name = self._make_resource_name(self.FIREWALL_RULE_NAME) |
|
|
|
|
name = self.make_resource_name(self.FIREWALL_RULE_NAME) |
|
|
|
|
elif self.firewall_rule: |
|
|
|
|
name = self.firewall_rule.name |
|
|
|
|
else: |
|
|
|
@ -475,7 +475,7 @@ class TrafficDirectorSecureManager(TrafficDirectorManager): |
|
|
|
|
self.delete_client_tls_policy(force=force) |
|
|
|
|
|
|
|
|
|
def create_server_tls_policy(self, *, tls, mtls): |
|
|
|
|
name = self._make_resource_name(self.SERVER_TLS_POLICY_NAME) |
|
|
|
|
name = self.make_resource_name(self.SERVER_TLS_POLICY_NAME) |
|
|
|
|
logger.info('Creating Server TLS Policy %s', name) |
|
|
|
|
if not tls and not mtls: |
|
|
|
|
logger.warning( |
|
|
|
@ -498,7 +498,7 @@ class TrafficDirectorSecureManager(TrafficDirectorManager): |
|
|
|
|
|
|
|
|
|
def delete_server_tls_policy(self, force=False): |
|
|
|
|
if force: |
|
|
|
|
name = self._make_resource_name(self.SERVER_TLS_POLICY_NAME) |
|
|
|
|
name = self.make_resource_name(self.SERVER_TLS_POLICY_NAME) |
|
|
|
|
elif self.server_tls_policy: |
|
|
|
|
name = self.server_tls_policy.name |
|
|
|
|
else: |
|
|
|
@ -509,7 +509,7 @@ class TrafficDirectorSecureManager(TrafficDirectorManager): |
|
|
|
|
|
|
|
|
|
def create_endpoint_config_selector(self, server_namespace, server_name, |
|
|
|
|
server_port): |
|
|
|
|
name = self._make_resource_name(self.ENDPOINT_CONFIG_SELECTOR_NAME) |
|
|
|
|
name = self.make_resource_name(self.ENDPOINT_CONFIG_SELECTOR_NAME) |
|
|
|
|
logger.info('Creating Endpoint Config Selector %s', name) |
|
|
|
|
endpoint_matcher_labels = [{ |
|
|
|
|
"labelName": "app", |
|
|
|
@ -541,7 +541,7 @@ class TrafficDirectorSecureManager(TrafficDirectorManager): |
|
|
|
|
|
|
|
|
|
def delete_endpoint_config_selector(self, force=False): |
|
|
|
|
if force: |
|
|
|
|
name = self._make_resource_name(self.ENDPOINT_CONFIG_SELECTOR_NAME) |
|
|
|
|
name = self.make_resource_name(self.ENDPOINT_CONFIG_SELECTOR_NAME) |
|
|
|
|
elif self.ecs: |
|
|
|
|
name = self.ecs.name |
|
|
|
|
else: |
|
|
|
@ -551,7 +551,7 @@ class TrafficDirectorSecureManager(TrafficDirectorManager): |
|
|
|
|
self.ecs = None |
|
|
|
|
|
|
|
|
|
def create_client_tls_policy(self, *, tls, mtls): |
|
|
|
|
name = self._make_resource_name(self.CLIENT_TLS_POLICY_NAME) |
|
|
|
|
name = self.make_resource_name(self.CLIENT_TLS_POLICY_NAME) |
|
|
|
|
logger.info('Creating Client TLS Policy %s', name) |
|
|
|
|
if not tls and not mtls: |
|
|
|
|
logger.warning( |
|
|
|
@ -572,7 +572,7 @@ class TrafficDirectorSecureManager(TrafficDirectorManager): |
|
|
|
|
|
|
|
|
|
def delete_client_tls_policy(self, force=False): |
|
|
|
|
if force: |
|
|
|
|
name = self._make_resource_name(self.CLIENT_TLS_POLICY_NAME) |
|
|
|
|
name = self.make_resource_name(self.CLIENT_TLS_POLICY_NAME) |
|
|
|
|
elif self.client_tls_policy: |
|
|
|
|
name = self.client_tls_policy.name |
|
|
|
|
else: |
|
|
|
|