Source code for ecs_composex.vpc.vpc_cloudmap
       
       
        
#  SPDX-License-Identifier: MPL-2.0
#  Copyright 2020-2022 John Mille <john@compose-x.io>
"""
Handles mapping x-vpc to cloudmap resource
"""
import re
from troposphere import Ref
from .vpc_params import VPC_ID
[docs]def x_vpc_to_x_cloudmap(
    x_vpc, x_resource, property_stack, properties_to_update, property_name, settings
):
    """
    Updates properties of given resource with the VPC settings accordingly
    :param Vpc x_vpc:
    :param x_resource: The resource to update the attribute / property for
    :param ecs_composex.common.stacks.ComposeXStack property_stack:
    :param list properties_to_update:
    :param str property_name:
    :param ecs_composex.common.settings.ComposeXSettings settings:
    """
    vpc_prop_re = re.compile(r"^x-vpc(?:::(?P<attribute>[a-zA-Z0-9]+))?$")
    for prop in properties_to_update:
        if not isinstance(prop, str):
            continue
        parts = vpc_prop_re.match(prop)
        if not parts:
            continue
        if parts.group("attribute"):
            for attr_parameter, attr_value in x_vpc.attributes_outputs.items():
                if attr_parameter.title == parts.group("attribute"):
                    setattr(x_resource, property_name, Ref(attr_parameter))
        else:
            setattr(x_resource, property_name, Ref(x_vpc.attributes_outputs[VPC_ID]))