Source code for troposphere_mate.core.metadata

# -*- coding: utf-8 -*-

from troposphere import BaseAWSObject, Template

TROPOSPHERE_METADATA_FIELD_NAME = "troposphere_mate"


class TemplateLevelField:
    PARAMETERS = "parameters"
    RESOURCES = "resources"
    OUTPUTS = "outputs"
    OUTPUTS_DEPENDS_ON = "depends_on_resources"
    CONDITIONS = "conditions"


class ResourceLevelField:
    LABELS = "troposphere_mate_labels"

    class ApiResource:
        #
        FULL_PATH = "resource_full_path"

    class CftStack:
        IS_NESTED_STACK = "is_nested_stack"


[docs]def initiate_default_template_metadata(template): """ Give :attr:`troposphere_mate.Template.metadata` a default value, without overwrite any existing value. :type template: Template """ if not isinstance(template, Template): raise TypeError try: metadata = template.metadata if not isinstance(metadata, dict): raise TypeError("`troposphere.Template.metadata` is not a dict!") except Exception as e: if "is not a dict!" in str(e): raise e metadata = {} metadata.setdefault(TROPOSPHERE_METADATA_FIELD_NAME, {}) for key, value in TemplateLevelField.__dict__.items(): if (not key.startswith("__")) and (key.upper() == key) and ("_" not in key): metadata[TROPOSPHERE_METADATA_FIELD_NAME].setdefault(value, {}) template.metadata = metadata return metadata
[docs]def initiate_default_resource_metadata(aws_resource): """ :type aws_resource: BaseAWSObject """ if not isinstance(aws_resource, BaseAWSObject): raise TypeError try: metadata = aws_resource.Metadata if not isinstance(metadata, dict): raise TypeError("`troposphere.BaseAWSObject.Metadata` is not a dict!") except Exception as e: if "is not a dict!" in str(e): raise e metadata = {} metadata.setdefault(TROPOSPHERE_METADATA_FIELD_NAME, {}) aws_resource.Metadata = metadata return metadata