]> git.proxmox.com Git - ceph.git/blame - ceph/src/pybind/mgr/cephadm/remotes.py
import ceph pacific 16.2.5
[ceph.git] / ceph / src / pybind / mgr / cephadm / remotes.py
CommitLineData
9f95a23c
TL
1# ceph-deploy ftw
2import os
adb31ebb
TL
3try:
4 from typing import Optional
5except ImportError:
6 pass
9f95a23c
TL
7
8PYTHONS = ['python3', 'python2', 'python']
9PATH = [
10 '/usr/bin',
11 '/usr/local/bin',
12 '/bin',
13 '/usr/sbin',
14 '/usr/local/sbin',
15 '/sbin',
16]
17
f6b5b4d7 18
9f95a23c 19def choose_python():
adb31ebb 20 # type: () -> Optional[str]
9f95a23c
TL
21 for e in PYTHONS:
22 for b in PATH:
23 p = os.path.join(b, e)
24 if os.path.exists(p):
25 return p
26 return None
27
f6b5b4d7 28
b3b6e05e
TL
29def write_file(path: str, content: bytes, mode: int, uid: int, gid: int,
30 mkdir_p: bool = True) -> Optional[str]:
31 try:
32 if mkdir_p:
33 dirname = os.path.dirname(path)
34 if not os.path.exists(dirname):
35 os.makedirs(dirname)
36 tmp_path = path + '.new'
37 with open(tmp_path, 'wb') as f:
38 os.fchown(f.fileno(), uid, gid)
39 os.fchmod(f.fileno(), mode)
40 f.write(content)
41 os.fsync(f.fileno())
42 os.rename(tmp_path, path)
43 except Exception as e:
44 return str(e)
45 return None
46
47
9f95a23c 48if __name__ == '__channelexec__':
f67539c2
TL
49 for item in channel: # type: ignore # noqa: F821
50 channel.send(eval(item)) # type: ignore # noqa: F821