From f189106ef620e0152da4979919ddfe60a303b56e Mon Sep 17 00:00:00 2001 From: Brian Coca Date: Fri, 5 Jan 2018 17:58:05 -0500 Subject: [PATCH] optimize config yaml loading (#34481) fixes #34147 --- lib/ansible/config/manager.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/ansible/config/manager.py b/lib/ansible/config/manager.py index 6255c47faba..49972adb68a 100644 --- a/lib/ansible/config/manager.py +++ b/lib/ansible/config/manager.py @@ -7,10 +7,16 @@ __metaclass__ = type import os import sys import tempfile -import yaml from collections import namedtuple +from yaml import load as yaml_load +try: + # use C version if possible for speedup + from yaml import CSafeLoader as SafeLoader +except ImportError: + from yaml import SafeLoader + from ansible.config.data import ConfigData from ansible.errors import AnsibleOptionsError, AnsibleError from ansible.module_utils.six import string_types @@ -181,7 +187,7 @@ class ConfigManager(object): # consume definitions if os.path.exists(b_defs_file): with open(b_defs_file, 'rb') as config_def: - self._base_defs = yaml.safe_load(config_def) + self._base_defs = yaml_load(config_def, Loader=SafeLoader) else: raise AnsibleError("Missing base configuration definition file (bad install?): %s" % to_native(b_defs_file))