mgr/cephadm: use a dedicated cephadm tmp dir to copy remote files

Fixes: https://tracker.ceph.com/issues/59189

Signed-off-by: Redouane Kachach <rkachach@redhat.com>
This commit is contained in:
Redouane Kachach 2023-03-29 10:48:30 +02:00
parent f5c5009eab
commit ef958d47b4
No known key found for this signature in database
GPG Key ID: 843EE0E7D13F5049

View File

@ -223,14 +223,15 @@ class SSHManager:
addr: Optional[str] = None, addr: Optional[str] = None,
) -> None: ) -> None:
try: try:
cephadm_tmp_dir = f"/tmp/cephadm-{self.mgr._cluster_fsid}"
dirname = os.path.dirname(path) dirname = os.path.dirname(path)
await self._check_execute_command(host, ['mkdir', '-p', dirname], addr=addr) await self._check_execute_command(host, ['mkdir', '-p', dirname], addr=addr)
await self._check_execute_command(host, ['mkdir', '-p', '/tmp' + dirname], addr=addr) await self._check_execute_command(host, ['mkdir', '-p', cephadm_tmp_dir + dirname], addr=addr)
tmp_path = '/tmp' + path + '.new' tmp_path = cephadm_tmp_dir + path + '.new'
await self._check_execute_command(host, ['touch', tmp_path], addr=addr) await self._check_execute_command(host, ['touch', tmp_path], addr=addr)
if self.mgr.ssh_user != 'root': if self.mgr.ssh_user != 'root':
assert self.mgr.ssh_user assert self.mgr.ssh_user
await self._check_execute_command(host, ['chown', '-R', self.mgr.ssh_user, tmp_path], addr=addr) await self._check_execute_command(host, ['chown', '-R', self.mgr.ssh_user, cephadm_tmp_dir], addr=addr)
await self._check_execute_command(host, ['chmod', str(644), tmp_path], addr=addr) await self._check_execute_command(host, ['chmod', str(644), tmp_path], addr=addr)
with NamedTemporaryFile(prefix='cephadm-write-remote-file-') as f: with NamedTemporaryFile(prefix='cephadm-write-remote-file-') as f:
os.fchmod(f.fileno(), 0o600) os.fchmod(f.fileno(), 0o600)