|
9 | 9 | Includes reverse import from existing env files and lookup helpers. |
10 | 10 | """ |
11 | 11 |
|
| 12 | +try: |
| 13 | + from collections.abc import Iterable |
| 14 | +except ImportError: |
| 15 | + from collections import Iterable |
12 | 16 | from collections import defaultdict |
13 | 17 | from dataclasses import dataclass, field |
14 | 18 | from typing import Any, Callable, Dict, List, Optional |
@@ -51,6 +55,23 @@ def _default_string_reverse_transform(value: str): |
51 | 55 | return value |
52 | 56 |
|
53 | 57 |
|
| 58 | +def _default_list_of_strings_transform(value: Any) -> List[str]: |
| 59 | + if value is None: |
| 60 | + result = [] |
| 61 | + elif isinstance(value, str): |
| 62 | + result = [value] |
| 63 | + elif isinstance(value, Iterable): |
| 64 | + result = [str(v) for v in value] |
| 65 | + else: |
| 66 | + result = [str(value)] |
| 67 | + |
| 68 | + return ",".join([true_or_false_no_quotes(x).strip() for x in result]) |
| 69 | + |
| 70 | + |
| 71 | +def _default_list_of_strings_reverse_transform(value: str) -> List[str]: |
| 72 | + return [s.strip() for s in value.split(",") if s.strip()] if value.strip() else [] |
| 73 | + |
| 74 | + |
54 | 75 | # 1. Boolean transform logic (single config item only) |
55 | 76 | _BOOLEAN_VARS = [ |
56 | 77 | KEY_ENV_ARKIME_MANAGE_PCAP_FILES, |
@@ -130,8 +151,13 @@ def _default_string_reverse_transform(value: str): |
130 | 151 | KEY_ENV_ZEEK_VTOT_API2_KEY, |
131 | 152 | ] |
132 | 153 |
|
| 154 | +# 3. List-of-strings transform logic |
| 155 | +_LIST_OF_STRING_VARS = [ |
| 156 | + KEY_ENV_EXTRA_TAGS, |
| 157 | +] |
| 158 | + |
133 | 159 |
|
134 | | -# 3. Custom transform logic |
| 160 | +# 4. Custom transform logic |
135 | 161 | @dataclass(frozen=True) |
136 | 162 | class TransformHook: |
137 | 163 | forward: Callable |
@@ -366,6 +392,9 @@ def __init__(self): |
366 | 392 |
|
367 | 393 | if map_key_constant_value in _CUSTOM_VARS: |
368 | 394 | self._handle_custom_transform(env_var_instance, map_key_constant_value) |
| 395 | + elif map_key_constant_value in _LIST_OF_STRING_VARS: |
| 396 | + env_var_instance.transform = _default_list_of_strings_transform |
| 397 | + env_var_instance.reverse_transform = _default_list_of_strings_reverse_transform |
369 | 398 | elif map_key_constant_value in _STRING_VARS: |
370 | 399 | env_var_instance.transform = _default_string_transform |
371 | 400 | env_var_instance.reverse_transform = _default_string_reverse_transform |
@@ -568,6 +597,7 @@ def __init__(self): |
568 | 597 | self.env_var_by_map_key[KEY_ENV_PCAP_IFACE].config_items = [KEY_CONFIG_ITEM_PCAP_IFACE] |
569 | 598 | self.env_var_by_map_key[KEY_ENV_PCAP_FILTER].config_items = [KEY_CONFIG_ITEM_PCAP_FILTER] |
570 | 599 | self.env_var_by_map_key[KEY_ENV_PCAP_NODE_NAME].config_items = [KEY_CONFIG_ITEM_PCAP_NODE_NAME] |
| 600 | + self.env_var_by_map_key[KEY_ENV_EXTRA_TAGS].config_items = [KEY_CONFIG_ITEM_EXTRA_TAGS] |
571 | 601 | self.env_var_by_map_key[KEY_ENV_PCAP_PIPELINE_POLLING].config_items = [ |
572 | 602 | KEY_CONFIG_ITEM_DOCKER_ORCHESTRATION_MODE |
573 | 603 | ] |
|
0 commit comments