def generate_settings(entry_point, nested_args, delimiter='-'): """Unifies all input into a single dict of Ansible extra-vars :param entry_point: All input will be nested under this key :param nested_args: dict. these values will be nested example: { foo-bar: value1, foo2: value2 foo-another-bar: value3 } :param delimiter: character to split keys by. :return: dict. nest input with keys splitted by delimiter >>> VarsDictManager.generate_settings( ... 'entry_point', {'foo-bar': 'value1', ... 'foo2': 'value2', ... 'foo-another-bar': 'value3'}) {'entry_point': {'foo': {'bar': 'value1', 'another':\ {'bar': 'value3'}}, 'foo2': 'value2'}} """ vars_dict = {entry_point: {}} try: for _name, argument in nested_args.items(): dict_utils.dict_insert(vars_dict[entry_point], argument, *_name.split(delimiter)) # handle errors here and provide more output for user if required except exceptions.IRKeyNotFoundException as key_exception: if key_exception and key_exception.key.startswith("private."): raise exceptions.IRPrivateSettingsMissingException( key_exception.key) else: raise return vars_dict
def generate_settings(cls, plugin_name, nested_args, settings_files, input_files=None, extra_vars=None, dump_file=None): try: settings = cls._collect_settings( plugin_name, nested_args, settings_files, input_files=input_files, extra_vars=extra_vars) cls._dump_settings(settings, dump_file=dump_file) return settings # handle errors here and provide more output for user if required except exceptions.IRKeyNotFoundException as key_exception: if key_exception and key_exception.key.startswith("private."): raise exceptions.IRPrivateSettingsMissingException( key_exception.key) else: raise