From 910f1c042e6a1817423e2a933a6f824393007d1c Mon Sep 17 00:00:00 2001 From: Jan-Piet Mens Date: Tue, 27 Nov 2012 11:29:21 +0100 Subject: [PATCH] ini_file: prohibit section name 'default' allow update of default section add blurb re template to create base file --- library/ini_file | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/library/ini_file b/library/ini_file index 63131d5232..ea78bff191 100644 --- a/library/ini_file +++ b/library/ini_file @@ -74,6 +74,10 @@ examples: notes: - While it is possible to add an I(option) without specifying a I(value), this makes no sense. + - A section named C(default) cannot be added by the module, but if it exists, individual + options within the section can be updated. (This is a limitation of Python's I(ConfigParser).) + Either use M(template) to create a base INI file with a C([default]) section, or use + M(lineinfile) to add the missing line. requirements: [ ConfigParser ] author: Jan-Piet Mens ''' @@ -112,6 +116,9 @@ def do_ini(module, filename, section=None, option=None, value=None, state='prese if state == 'present': if cp.has_section(section) == False: + if section.upper() == 'DEFAULT': + module.fail_json(msg="[DEFAULT] is an illegal section name") + cp.add_section(section) changed = True @@ -121,6 +128,9 @@ def do_ini(module, filename, section=None, option=None, value=None, state='prese if str(value) != str(oldvalue): cp.set(section, option, value) changed = True + except ConfigParser.NoSectionError: + cp.set(section, option, value) + changed = True except ConfigParser.NoOptionError: cp.set(section, option, value) changed = True