from moto.core.responses import BaseResponse
from ..exceptions import NoLoadBalancersProvided
class VPCEndpointServiceConfiguration(BaseResponse):
def create_vpc_endpoint_service_configuration(self):
gateway_lbs = self._get_multi_param("GatewayLoadBalancerArn")
network_lbs = self._get_multi_param("NetworkLoadBalancerArn")
if not gateway_lbs and not network_lbs:
raise NoLoadBalancersProvided
tags = self._get_multi_param("TagSpecification")
if tags:
tags = tags[0].get("Tag")
acceptance_required = (
str(self._get_param("AcceptanceRequired", "true")).lower() == "true"
)
private_dns_name = self._get_param("PrivateDnsName")
config = self.ec2_backend.create_vpc_endpoint_service_configuration(
gateway_lbs or network_lbs,
acceptance_required=acceptance_required,
private_dns_name=private_dns_name,
tags=tags,
)
template = self.response_template(CREATE_VPC_ENDPOINT_SERVICE_CONFIGURATION)
return template.render(config=config)
def describe_vpc_endpoint_service_configurations(self):
service_ids = self._get_multi_param("ServiceId")
configs = self.ec2_backend.describe_vpc_endpoint_service_configurations(
service_ids
)
template = self.response_template(DESCRIBE_VPC_ENDPOINT_SERVICE_CONFIGURATION)
return template.render(configs=configs)
def delete_vpc_endpoint_service_configurations(self):
service_ids = self._get_multi_param("ServiceId")
missing_configs = self.ec2_backend.delete_vpc_endpoint_service_configurations(
service_ids
)
template = self.response_template(DELETE_VPC_ENDPOINT_SERVICE_CONFIGURATION)
return template.render(missing=missing_configs)
def describe_vpc_endpoint_service_permissions(self):
service_id = self._get_param("ServiceId")
principals = self.ec2_backend.describe_vpc_endpoint_service_permissions(
service_id
)
template = self.response_template(DESCRIBE_VPC_ENDPOINT_SERVICE_PERMISSIONS)
return template.render(principals=principals)
def modify_vpc_endpoint_service_configuration(self):
service_id = self._get_param("ServiceId")
private_dns_name = self._get_param("PrivateDnsName")
acceptance_required = self._get_param("AcceptanceRequired")
add_network_lbs = self._get_multi_param("AddNetworkLoadBalancerArn")
remove_network_lbs = self._get_multi_param("RemoveNetworkLoadBalancerArn")
add_gateway_lbs = self._get_multi_param("AddGatewayLoadBalancerArn")
remove_gateway_lbs = self._get_multi_param("RemoveGatewayLoadBalancerArn")
self.ec2_backend.modify_vpc_endpoint_service_configuration(
service_id,
acceptance_required=acceptance_required,
private_dns_name=private_dns_name,
add_network_lbs=add_network_lbs,
remove_network_lbs=remove_network_lbs,
add_gateway_lbs=add_gateway_lbs,
remove_gateway_lbs=remove_gateway_lbs,
)
return MODIFY_VPC_ENDPOINT_SERVICE_CONFIGURATION
def modify_vpc_endpoint_service_permissions(self):
service_id = self._get_param("ServiceId")
add_principals = self._get_multi_param("AddAllowedPrincipals")
remove_principals = self._get_multi_param("RemoveAllowedPrincipals")
self.ec2_backend.modify_vpc_endpoint_service_permissions(
service_id, add_principals, remove_principals
)
return MODIFY_VPC_ENDPOINT_SERVICE_PERMISSIONS
CREATE_VPC_ENDPOINT_SERVICE_CONFIGURATION = """
7a62c49f-347e-4fc4-9331-6e8eEXAMPLE
- {{ config.service_type }}
{{ config.id }}
{{ config.service_name }}
{{ config.service_state }}
{% for zone in config.availability_zones %}- {{ zone }}
{% endfor %}
{{ 'true' if config.acceptance_required else 'false' }}
{{ 'true' if config.manages_vpc_endpoints else 'false' }}
{%- if config.network_load_balancer_arns %}
{% for lb in config.network_load_balancer_arns %}- {{ lb }}
{% endfor %}
{% endif -%}
{%- if config.gateway_load_balancer_arns %}
{% for lb in config.gateway_load_balancer_arns %}- {{ lb }}
{% endfor %}
{% endif -%}
- {{ config.endpoint_dns_name }}
{{ config.private_dns_name }}
{% if config.private_dns_name %}
verified
TXT
val
n
{% endif %}
"""
DESCRIBE_VPC_ENDPOINT_SERVICE_CONFIGURATION = """
{% for config in configs %}
-
- {{ config.service_type }}
{{ config.id }}
{{ config.service_name }}
{{ config.service_state }}
{% for zone in config.availability_zones %}- {{ zone }}
{% endfor %}
{{ 'true' if config.acceptance_required else 'false' }}
{{ 'true' if config.manages_vpc_endpoints else 'false' }}
{%- if config.network_load_balancer_arns %}
{% for lb in config.network_load_balancer_arns %}- {{ lb }}
{% endfor %}
{% endif -%}
{%- if config.gateway_load_balancer_arns %}
{% for lb in config.gateway_load_balancer_arns %}- {{ lb }}
{% endfor %}
{% endif -%}
- {{ config.endpoint_dns_name }}
{{ config.private_dns_name }}
{% if config.private_dns_name %}
verified
TXT
val
n
{% endif %}
{% for tag in config.get_tags() %}
-
{{ tag.key }}
{{ tag.value }}
{% endfor %}
{% endfor %}
"""
DELETE_VPC_ENDPOINT_SERVICE_CONFIGURATION = """
{% for m in missing %}
-
InvalidVpcEndpointService.NotFound
The VpcEndpointService Id '{{ m }}' does not exist
{{ m }}
{% endfor %}
"""
DESCRIBE_VPC_ENDPOINT_SERVICE_PERMISSIONS = """
{% for principal in principals %}
-
{{ principal }}
{% endfor %}
"""
MODIFY_VPC_ENDPOINT_SERVICE_PERMISSIONS = """
true
"""
MODIFY_VPC_ENDPOINT_SERVICE_CONFIGURATION = """
true
"""