def convert_template()

in ShortHand/lambda/convert.py [0:0]


def convert_template(template):
    resources = {}
    counts = {}

    for ident, props in convert(template.get("Resources", [])):
        resource = {}

        if len(ident) == 1:
            name = None
            resource["Type"] = ident[0]
        else:
            name = ident[0]
            resource["Type"] = ident[1]

        resource["Properties"] = props

        types = resolve.resource(resource["Type"])

        if len(types) != 1:
            raise Exception("Ambiguous or unknown resource type: {}".format(resource["Type"]))

        resource["Type"] = types[0]

        # Handle un-named resources
        if not name:
            name = resource["Type"].split("::")[-1]
            if resource["Type"] not in counts:
                counts[resource["Type"]] = 1
            else:
                counts[resource["Type"]] += 1

            while "{}{}".format(name, counts[resource["Type"]]) in resources:
                counts[resource["Type"]] += 1

            name = "{}{}".format(name, counts[resource["Type"]])

        resources[name] = resource

    template["Resources"] = resources

    return template