From adc21e7ffbc9dbae0133c55634f90cc5238c49a0 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 26 Sep 2019 17:35:17 -0500 Subject: [PATCH] ceph-daemon: be careful overwriting live files Signed-off-by: Sage Weil --- src/ceph-daemon | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/ceph-daemon b/src/ceph-daemon index 80562633c26..45c6e974fe7 100755 --- a/src/ceph-daemon +++ b/src/ceph-daemon @@ -141,26 +141,33 @@ def deploy_daemon(daemon_type, daemon_id, c, config=None, keyring=None): install_base_units() unit = get_unit_file() unit_file = 'ceph-%s@.service' % (args.fsid) - with open(args.unit_dir + '/' + unit_file, 'w') as f: + with open(args.unit_dir + '/' + unit_file + '.new', 'w') as f: f.write(unit) + os.rename(args.unit_dir + '/' + unit_file + '.new', + args.unit_dir + '/' + unit_file) check_output(['systemctl', 'daemon-reload']) unit_name = 'ceph-%s@%s.%s' % (args.fsid, daemon_type, daemon_id) check_output(['systemctl', 'enable', unit_name]) check_output(['systemctl', 'start', unit_name]) def install_base_units(): + """ + Set up ceph.target and ceph-$fsid.target units. + """ existed = os.path.exists(args.unit_dir + '/ceph.target') - with open(args.unit_dir + '/ceph.target', 'w') as f: + with open(args.unit_dir + '/ceph.target.new', 'w') as f: f.write('[Unit]\n' 'Description=all ceph service\n' '[Install]\n' 'WantedBy=multi-user.target\n') + os.rename(args.unit_dir + '/ceph.target.new', + args.unit_dir + '/ceph.target') if not existed: check_output(['systemctl', 'enable', 'ceph.target']) check_output(['systemctl', 'start', 'ceph.target']) existed = os.path.exists(args.unit_dir + '/ceph-%s.target' % args.fsid) - with open(args.unit_dir + '/ceph-%s.target' % args.fsid, 'w') as f: + with open(args.unit_dir + '/ceph-%s.target.new' % args.fsid, 'w') as f: f.write('[Unit]\n' 'Description=ceph cluster {fsid}\n' 'PartOf=ceph.target\n' @@ -169,6 +176,8 @@ def install_base_units(): 'WantedBy=multi-user.target ceph.target\n'.format( fsid=args.fsid) ) + os.rename(args.unit_dir + '/ceph-%s.target.new' % args.fsid, + args.unit_dir + '/ceph-%s.target' % args.fsid) if not existed: check_output(['systemctl', 'enable', 'ceph-%s.target' % args.fsid]) check_output(['systemctl', 'start', 'ceph-%s.target' % args.fsid]) -- 2.39.5