feat: distribution is a dict and nodes and cluster are top level (#1288)
* feat: distribution is a dict and nodes and cluster are top level Signed-off-by: Devin Buhl <devin@buhl.casa> * chore: housekeeping Signed-off-by: Devin Buhl <devin@buhl.casa> --------- Signed-off-by: Devin Buhl <devin@buhl.casa>
This commit is contained in:
1 parent
cba35dc66a
commit
89673cd17b
55 files changed
+330
-302
No files matched your search
@@ -6,10 +6,15 @@ from typing import Any
|
||||
|
||||
from typing import Any
|
||||
from netaddr import IPNetwork
|
||||
from bcrypt import hashpw, gensalt
|
||||
|
||||
import makejinja
|
||||
import validation
|
||||
|
||||
def encrypt(value: str) -> str:
|
||||
return hashpw(value.encode(), gensalt(rounds=10)).decode("ascii")
|
||||
|
||||
|
||||
def nthhost(value: str, query: int) -> str:
|
||||
value = IPNetwork(value)
|
||||
try:
|
||||
@@ -20,6 +25,7 @@ def nthhost(value: str, query: int) -> str:
|
||||
return False
|
||||
return value
|
||||
|
||||
|
||||
def import_filter(file: Path) -> Callable[[dict[str, Any]], bool]:
|
||||
module_path = file.relative_to(Path.cwd()).with_suffix("")
|
||||
module_name = str(module_path).replace("/", ".")
|
||||
@@ -31,6 +37,7 @@ def import_filter(file: Path) -> Callable[[dict[str, Any]], bool]:
|
||||
spec.loader.exec_module(module)
|
||||
return module.main
|
||||
|
||||
|
||||
class Plugin(makejinja.plugin.Plugin):
|
||||
def __init__(self, data: dict[str, Any], config: makejinja.config.Config):
|
||||
self._data = data
|
||||
@@ -45,12 +52,15 @@ class Plugin(makejinja.plugin.Plugin):
|
||||
|
||||
validation.validate(data)
|
||||
|
||||
|
||||
def filters(self) -> makejinja.plugin.Filters:
|
||||
return [nthhost]
|
||||
return [encrypt, nthhost]
|
||||
|
||||
|
||||
def path_filters(self):
|
||||
return [self._mjfilter_func]
|
||||
|
||||
|
||||
def _mjfilter_func(self, path: Path) -> bool:
|
||||
return not any(
|
||||
path.is_relative_to(excluded_dir) for excluded_dir in self._excluded_dirs
|
||||
|
||||
Reference in new issue
Block a user