From fa2cf2987cccea9f152c04862fc684e146c4692e Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 18 May 2021 08:23:36 -0400 Subject: [PATCH] cephadm: write config files as utf-8 If we don't specify the encoding, python may use something like 'latin-1', which cannot handle unicode characters. Signed-off-by: Sage Weil --- src/cephadm/cephadm | 4 ++-- src/cephadm/tests/test_cephadm.py | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/cephadm/cephadm b/src/cephadm/cephadm index a7e4cc0aee7f2..ed92c0b017a23 100755 --- a/src/cephadm/cephadm +++ b/src/cephadm/cephadm @@ -350,7 +350,7 @@ def populate_files(config_dir, config_files, uid, gid): config_file = os.path.join(config_dir, fname) config_content = dict_get_join(config_files, fname) logger.info('Write file: %s' % (config_file)) - with open(config_file, 'w') as f: + with open(config_file, 'w', encoding='utf-8') as f: os.fchown(f.fileno(), uid, gid) os.fchmod(f.fileno(), 0o600) f.write(config_content) @@ -2221,7 +2221,7 @@ def create_daemon_dirs(ctx, fsid, daemon_type, daemon_id, uid, gid, fpath = os.path.join(data_dir_root, fname.lstrip(os.path.sep)) else: fpath = os.path.join(data_dir_root, config_dir, fname) - with open(fpath, 'w') as f: + with open(fpath, 'w', encoding='utf-8') as f: os.fchown(f.fileno(), uid, gid) os.fchmod(f.fileno(), 0o600) f.write(content) diff --git a/src/cephadm/tests/test_cephadm.py b/src/cephadm/tests/test_cephadm.py index 7e9861c2cc64b..75220957f53d4 100644 --- a/src/cephadm/tests/test_cephadm.py +++ b/src/cephadm/tests/test_cephadm.py @@ -1024,8 +1024,10 @@ class TestMonitoring(object): daemon_id=daemon_id ) assert _open.call_args_list == [ - call('{}/etc/prometheus/prometheus.yml'.format(prefix), 'w'), - call('{}/etc/prometheus/alerting/ceph_alerts.yml'.format(prefix), 'w'), + call('{}/etc/prometheus/prometheus.yml'.format(prefix), 'w', + encoding='utf-8'), + call('{}/etc/prometheus/alerting/ceph_alerts.yml'.format(prefix), 'w', + encoding='utf-8'), ] assert call().__enter__().write('foo') in _open.mock_calls assert call().__enter__().write('bar') in _open.mock_calls -- 2.39.5