mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-04-25 11:51:26 -07:00
[PR #10005/e0a283bb backport][stable-9] Fix method exists in sysrc (#10033)
Fix method exists in sysrc (#10005)
* Fix method exists.
* Add changelog fragment.
* Update the exists method to pass the present method tests.
* Replace f-string formatting.
* Update changelogs/fragments/10005-fix-method-exists-in-sysrc.yml
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
* Add comment to the method exists.
* Update plugins/modules/sysrc.py
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
* Update changelogs/fragments/10005-fix-method-exists-in-sysrc.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
* The improved comment formatting fixed.
---------
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit e0a283bb36
)
Co-authored-by: Vladimir Botka <vbotka@gmail.com>
This commit is contained in:
parent
2448503e8b
commit
419893eb65
2 changed files with 16 additions and 12 deletions
|
@ -122,14 +122,19 @@ class Sysrc(object):
|
|||
return err.find("unknown variable") > 0 or out.find("unknown variable") > 0
|
||||
|
||||
def exists(self):
|
||||
# sysrc doesn't really use exit codes
|
||||
(rc, out, err) = self.run_sysrc(self.name)
|
||||
"""
|
||||
Tests whether the name is in the file. If parameter value is defined,
|
||||
then tests whether name=value is in the file. These tests are necessary
|
||||
because sysrc doesn't use exit codes. Instead, let sysrc read the
|
||||
file's content and create a dictionary comprising the configuration.
|
||||
Use this dictionary to preform the tests.
|
||||
"""
|
||||
(rc, out, err) = self.run_sysrc('-e', '-a')
|
||||
conf = dict([i.split('=') for i in out.splitlines()])
|
||||
if self.value is None:
|
||||
regex = "%s: " % re.escape(self.name)
|
||||
return self.name in conf
|
||||
else:
|
||||
regex = "%s: %s$" % (re.escape(self.name), re.escape(self.value))
|
||||
|
||||
return not self.has_unknown_variable(out, err) and re.match(regex, out) is not None
|
||||
return self.name in conf and conf[self.name] == '"%s"' % self.value
|
||||
|
||||
def contains(self):
|
||||
(rc, out, err) = self.run_sysrc('-n', self.name)
|
||||
|
@ -142,13 +147,10 @@ class Sysrc(object):
|
|||
if self.exists():
|
||||
return
|
||||
|
||||
if self.module.check_mode:
|
||||
self.changed = True
|
||||
return
|
||||
if not self.module.check_mode:
|
||||
(rc, out, err) = self.run_sysrc("%s=%s" % (self.name, self.value))
|
||||
|
||||
(rc, out, err) = self.run_sysrc("%s=%s" % (self.name, self.value))
|
||||
if out.find("%s:" % self.name) == 0 and re.search("-> %s$" % re.escape(self.value), out) is not None:
|
||||
self.changed = True
|
||||
self.changed = True
|
||||
|
||||
def absent(self):
|
||||
if not self.exists():
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue