Skip to content

Commit

Permalink
ceph-defaults: fix handlers that are always triggered
Browse files Browse the repository at this point in the history
Handlers are always triggered in ceph-ansible because ceph.conf file is
generated with a randomly order for the different keys/values pairs
in sections.

In python, a dict is not sorted. It means in our case each time we try
to generate the ceph.conf file it will be rendered with a random order
since the mecanism behind consist of rendering a file from a python dict
with keys/values. Therefore, as a quick workaround, forcing this dict to be
sorted before rendering the configuration file will ensure that it will be
rendered always the same way.

Signed-off-by: Guillaume Abrioux <gabrioux@redhat.com>
  • Loading branch information
guits committed Oct 13, 2017
1 parent 80c62e0 commit ec04221
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 6 deletions.
6 changes: 3 additions & 3 deletions plugins/actions/_v1_config_template.py
Expand Up @@ -26,7 +26,7 @@
from ansible.runner.return_data import ReturnData
from ansible import utils
from ansible.utils import template

from collections import OrderedDict

CONFIG_TYPES = {
'ini': 'return_config_overrides_ini',
Expand Down Expand Up @@ -145,14 +145,14 @@ def _write_check(self, fp, key, value, section=False):
def write(self, fp):
if self._defaults:
fp.write("[%s]\n" % 'DEFAULT')
for key, value in self._defaults.items():
for key, value in OrderedDict(sorted(self._defaults.items())).items():
self._write_check(fp, key=key, value=value)
else:
fp.write("\n")

for section in self._sections:
fp.write("[%s]\n" % section)
for key, value in self._sections[section].items():
for key, value in OrderedDict(sorted(self._sections[section].items())).items():
self._write_check(fp, key=key, value=value, section=True)
else:
fp.write("\n")
Expand Down
6 changes: 3 additions & 3 deletions plugins/actions/_v2_config_template.py
Expand Up @@ -37,7 +37,7 @@
from ansible.utils.unicode import to_bytes, to_unicode
from ansible import constants as C
from ansible import errors

from collections import OrderedDict

CONFIG_TYPES = {
'ini': 'return_config_overrides_ini',
Expand Down Expand Up @@ -173,14 +173,14 @@ def _write_check(self, fp, key, value, section=False):
def write(self, fp):
if self._defaults:
fp.write("[%s]\n" % 'DEFAULT')
for key, value in self._defaults.items():
for key, value in OrderedDict(sorted(self._defaults.items())).items():
self._write_check(fp, key=key, value=value)
else:
fp.write("\n")

for section in self._sections:
fp.write("[%s]\n" % section)
for key, value in self._sections[section].items():
for key, value in OrderedDict(sorted(self._sections[section].items())).items():
self._write_check(fp, key=key, value=value, section=True)
else:
fp.write("\n")
Expand Down

0 comments on commit ec04221

Please sign in to comment.