If we don't specify the encoding, python may use something like 'latin-1',
which cannot handle unicode characters.
Signed-off-by: Sage Weil <sage@newdream.net>
(cherry picked from commit
fa2cf2987cccea9f152c04862fc684e146c4692e)
Conflicts:
src/cephadm/cephadm
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)
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