From 5dae0a6976c92f0aea17337aee48adb418b2f637 Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Tue, 13 Apr 2021 22:27:26 +0200 Subject: [PATCH] fix: add missing vault yaml tag (#113) --- ansiblelater/standard.py | 7 +++++++ ansiblelater/utils/yamlhelper.py | 13 +++++++++++++ 2 files changed, 20 insertions(+) diff --git a/ansiblelater/standard.py b/ansiblelater/standard.py index d398c0d..47de18e 100644 --- a/ansiblelater/standard.py +++ b/ansiblelater/standard.py @@ -20,6 +20,7 @@ from ansiblelater.exceptions import LaterError from ansiblelater.utils import Singleton from ansiblelater.utils import sysexit_with_message from ansiblelater.utils.yamlhelper import UnsafeTag +from ansiblelater.utils.yamlhelper import VaultTag from ansiblelater.utils.yamlhelper import action_tasks from ansiblelater.utils.yamlhelper import normalize_task from ansiblelater.utils.yamlhelper import normalized_yaml @@ -223,6 +224,9 @@ class StandardBase(object, metaclass=StandardExtendedMeta): yaml.add_constructor( UnsafeTag.yaml_tag, UnsafeTag.yaml_constructor, Loader=yaml.SafeLoader ) + yaml.add_constructor( + VaultTag.yaml_tag, VaultTag.yaml_constructor, Loader=yaml.SafeLoader + ) content = yaml.safe_load(f) except yaml.YAMLError as e: errors.append( @@ -244,6 +248,9 @@ class StandardBase(object, metaclass=StandardExtendedMeta): yaml.add_constructor( UnsafeTag.yaml_tag, UnsafeTag.yaml_constructor, Loader=yaml.SafeLoader ) + yaml.add_constructor( + VaultTag.yaml_tag, VaultTag.yaml_constructor, Loader=yaml.SafeLoader + ) yaml.safe_load(f) for problem in linter.run(f, YamlLintConfig(options)): diff --git a/ansiblelater/utils/yamlhelper.py b/ansiblelater/utils/yamlhelper.py index f842f95..fbb34c4 100644 --- a/ansiblelater/utils/yamlhelper.py +++ b/ansiblelater/utils/yamlhelper.py @@ -593,3 +593,16 @@ class UnsafeTag: @staticmethod def yaml_constructor(loader, node): return loader.construct_scalar(node) + + +class VaultTag: + """Handle custom yaml vault tag.""" + + yaml_tag = u"!vault" + + def __init__(self, value): + self.unsafe = value + + @staticmethod + def yaml_constructor(loader, node): + return loader.construct_scalar(node)