Skip to content

Commit

Permalink
better tag handling jinja2 templates
Browse files Browse the repository at this point in the history
  • Loading branch information
Oguzhan Yilmaz committed Jun 22, 2023
1 parent a8a631b commit 463680e
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 24 deletions.
2 changes: 1 addition & 1 deletion balcony/custom_tf_import_configs/ec2.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@ import_configurations:
operation_name: DescribeInstances
to_resource_type: aws_instance
jmespath_query: "[].Reservations[].Instances[]"
to_resource_name_jinja2_template: "{{ name_tag or InstanceId }}"
to_resource_name_jinja2_template: "{{ tag_Name or InstanceId }}"
id_generator_jinja2_template: "{{ InstanceId }}"

6 changes: 2 additions & 4 deletions balcony/custom_tf_import_configs/s3.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,5 @@ import_configurations:
operation_name: ListBuckets
to_resource_type: aws_s3_bucket
jmespath_query: "[].Buckets[]"
to_resource_name_jinja2_template: |
{{ Name }}
id_generator_jinja2_template: |
{{ Name }}
to_resource_name_jinja2_template: "{{ Name }}"
id_generator_jinja2_template: "{{ Name }}"
32 changes: 13 additions & 19 deletions balcony/terraform_import/importer.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,23 +10,17 @@
logger = get_logger(__name__)


def extract_name_tag(data: dict) -> Union[str, bool]]:
"""_summary_
def extract_resource_tags_as_kwargs(data: dict) -> dict:
tags_as_kwargs = {}
tag_list = data.get("Tags", [])
if not tag_list:
return tags_as_kwargs

Args:
data (dict): An AWS resource data
Returns:
_type_: _description_
"""
tags = data.get("Tags", [])
if not tags:
return False
name_tag = list(filter(lambda tag: tag.get("Key") == "Name", tags))
if name_tag and len(name_tag) >= 1:
found_tag = name_tag[0].get("Value", False)
return found_tag
return False
for tag in tag_list:
key = tag.get("Key")
value = tag.get("Value")
tags_as_kwargs[f"tag_{key}"] = value
return tags_as_kwargs


def render_jinja2_template_with_data(data, jinja2_template_str):
Expand All @@ -38,9 +32,9 @@ def render_jinja2_template_with_data(data, jinja2_template_str):
kwargs.update(data)
kwargs["data"] = data
# if there's a tag.Name, add it as name_tag variable
name_tag = extract_name_tag(data)
logger.debug(f"Found name tag: {name_tag}")
kwargs["name_tag"] = name_tag
tags_as_kwargs = extract_resource_tags_as_kwargs(data)
logger.debug(f"Found name tag: {tags_as_kwargs}")
kwargs.update(tags_as_kwargs)

rendered_output = template.render(**kwargs).strip()
return rendered_output
Expand Down

0 comments on commit 463680e

Please sign in to comment.