]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/cephadm: use _write_remote_file for ceph.conf
authorSage Weil <sage@newdream.net>
Tue, 20 Apr 2021 22:19:00 +0000 (18:19 -0400)
committerSage Weil <sage@newdream.net>
Thu, 22 Apr 2021 02:13:02 +0000 (22:13 -0400)
Signed-off-by: Sage Weil <sage@newdream.net>
src/pybind/mgr/cephadm/serve.py
src/pybind/mgr/cephadm/tests/test_cephadm.py

index c1b9feca457bec6cbb10abd20888e448e0aa21f9..5db1207f91ab67b4cd4d62efe44e7618d096b02f 100644 (file)
@@ -386,22 +386,10 @@ class CephadmServe:
         config = self.mgr.get_minimal_ceph_conf()
 
         try:
-            with self._remote_connection(host) as tpl:
-                conn, connr = tpl
-                out, err, code = remoto.process.check(
-                    conn,
-                    ['mkdir', '-p', '/etc/ceph'])
-                if code:
-                    return f'failed to create /etc/ceph on {host}: {err}'
-                out, err, code = remoto.process.check(
-                    conn,
-                    ['dd', 'of=/etc/ceph/ceph.conf'],
-                    stdin=config.encode('utf-8')
-                )
-                if code:
-                    return f'failed to create /etc/ceph/ceph.conf on {host}: {err}'
-                self.mgr.cache.update_last_etc_ceph_ceph_conf(host)
-                self.mgr.cache.save_host(host)
+            self._write_remote_file(host, '/etc/ceph/ceph.conf',
+                                    config.encode('utf-8'), 0o644, 0, 0)
+            self.mgr.cache.update_last_etc_ceph_ceph_conf(host)
+            self.mgr.cache.save_host(host)
         except OrchestratorError as e:
             return f'failed to create /etc/ceph/ceph.conf on {host}: {str(e)}'
         return None
index 8c1949e74db69aa3688d8b2a26d9d8e108d87cf5..34394ef3d13bec3d173603795f5ae1711ee4eee8 100644 (file)
@@ -1,6 +1,5 @@
 import json
 from contextlib import contextmanager
-from unittest.mock import ANY
 
 import pytest
 
@@ -1028,9 +1027,11 @@ class TestCephadm(object):
 
     @mock.patch("cephadm.module.CephadmOrchestrator._get_connection")
     @mock.patch("remoto.process.check")
-    def test_etc_ceph(self, _check, _get_connection, cephadm_module):
+    @mock.patch("cephadm.module.CephadmServe._write_remote_file")
+    def test_etc_ceph(self, _write_file, _check, _get_connection, cephadm_module):
         _get_connection.return_value = mock.Mock(), mock.Mock()
         _check.return_value = '{}', '', 0
+        _write_file.return_value = None
 
         assert cephadm_module.manage_etc_ceph_ceph_conf is False
 
@@ -1043,15 +1044,16 @@ class TestCephadm(object):
             assert cephadm_module.manage_etc_ceph_ceph_conf is True
 
             CephadmServe(cephadm_module)._refresh_hosts_and_daemons()
-            _check.assert_called_with(ANY, ['dd', 'of=/etc/ceph/ceph.conf'], stdin=b'')
+            _write_file.assert_called_with('test', '/etc/ceph/ceph.conf', b'',
+                                           0o644, 0, 0)
 
             assert not cephadm_module.cache.host_needs_new_etc_ceph_ceph_conf('test')
 
             # set extra config and expect that we deploy another ceph.conf
             cephadm_module._set_extra_ceph_conf('[mon]\nk=v')
             CephadmServe(cephadm_module)._refresh_hosts_and_daemons()
-            _check.assert_called_with(
-                ANY, ['dd', 'of=/etc/ceph/ceph.conf'], stdin=b'\n\n[mon]\nk=v\n')
+            _write_file.assert_called_with('test', '/etc/ceph/ceph.conf',
+                                           b'\n\n[mon]\nk=v\n', 0o644, 0, 0)
 
             # reload
             cephadm_module.cache.last_etc_ceph_ceph_conf = {}