|
11 | 11 | import requests |
12 | 12 | import yaml |
13 | 13 | from boto3.session import Session |
| 14 | +from flatdict import FlatDict, FlatterDict |
14 | 15 |
|
15 | 16 | from .aws_filters import msk_bootstrap |
16 | 17 |
|
@@ -91,7 +92,14 @@ def from_metadata_to_flat_keys(metadata): |
91 | 92 | return new_metadata |
92 | 93 |
|
93 | 94 |
|
94 | | -def get_property(metadata, property_key): |
| 95 | +def get_property(metadata, property_key, separator: str = None): |
| 96 | + if separator is None: |
| 97 | + separator = r"::" |
| 98 | + metadata_mapping = FlatterDict(metadata) |
| 99 | + metadata_mapping.set_delimiter(separator) |
| 100 | + if property_key in metadata_mapping: |
| 101 | + return metadata_mapping[property_key] |
| 102 | + |
95 | 103 | metadata_mapping = from_metadata_to_flat_keys(metadata) |
96 | 104 | property_re = re.compile(property_key) |
97 | 105 | for key, value in metadata_mapping.items(): |
@@ -170,13 +178,32 @@ def from_ssm_json(parameter_name: str) -> dict: |
170 | 178 | return {} |
171 | 179 |
|
172 | 180 |
|
| 181 | +def hostname(alternative_value: str = None) -> str: |
| 182 | + try: |
| 183 | + import platform |
| 184 | + |
| 185 | + return str(platform.node()) |
| 186 | + except Exception as error: |
| 187 | + print("Error with platform", error) |
| 188 | + try: |
| 189 | + import socket |
| 190 | + |
| 191 | + return str(socket.gethostname()) |
| 192 | + except Exception as error: |
| 193 | + print("Error with socket", error) |
| 194 | + pass |
| 195 | + if alternative_value: |
| 196 | + return alternative_value |
| 197 | + |
| 198 | + |
173 | 199 | JINJA_FUNCTIONS = { |
174 | 200 | "ecs_container_metadata": ecs_container_metadata, |
175 | 201 | "ecs_task_metadata": ecs_task_metadata, |
176 | 202 | "env_var": env_var, |
177 | 203 | "from_ssm": from_ssm, |
178 | 204 | "from_ssm_json": from_ssm_json, |
179 | 205 | "msk_bootstrap": msk_bootstrap, |
| 206 | + "hostname": hostname, |
180 | 207 | } |
181 | 208 |
|
182 | 209 | JINJA_FILTERS = {"to_yaml": to_yaml, "to_json": to_json, "env_override": env_override} |
0 commit comments