config = data['config']
for filename in config:
if filename in self.agent.required_files:
- with open(os.path.join(self.agent.daemon_dir, filename), 'w') as f:
+ file_path = os.path.join(self.agent.daemon_dir, filename)
+ with open(os.open(file_path + '.new', os.O_CREAT | os.O_WRONLY, 0o600), 'w') as f:
f.write(config[filename])
+ os.rename(file_path + '.new', file_path)
self.agent.pull_conf_settings()
self.agent.wakeup()
# Create the required config files in the daemons dir, with restricted permissions
for filename in config:
if filename in self.required_files:
- with open(os.open(os.path.join(self.daemon_dir, filename), os.O_CREAT | os.O_WRONLY, 0o600), 'w') as f:
+ file_path = os.path.join(self.daemon_dir, filename)
+ with open(os.open(file_path + '.new', os.O_CREAT | os.O_WRONLY, 0o600), 'w') as f:
f.write(config[filename])
+ os.rename(file_path + '.new', file_path)
- with open(os.open(os.path.join(self.daemon_dir, 'unit.run'), os.O_CREAT | os.O_WRONLY, 0o600), 'w') as f:
+ unit_run_path = os.path.join(self.daemon_dir, 'unit.run')
+ with open(os.open(unit_run_path + '.new', os.O_CREAT | os.O_WRONLY, 0o600), 'w') as f:
f.write(self.unit_run())
+ os.rename(unit_run_path + '.new', unit_run_path)
meta: Dict[str, Any] = {}
+ meta_file_path = os.path.join(self.daemon_dir, 'unit.meta')
if 'meta_json' in self.ctx and self.ctx.meta_json:
meta = json.loads(self.ctx.meta_json) or {}
- with open(os.open(os.path.join(self.daemon_dir, 'unit.meta'), os.O_CREAT | os.O_WRONLY, 0o600), 'w') as f:
+ with open(os.open(meta_file_path + '.new', os.O_CREAT | os.O_WRONLY, 0o600), 'w') as f:
f.write(json.dumps(meta, indent=4) + '\n')
+ os.rename(meta_file_path + '.new', meta_file_path)
unit_file_path = os.path.join(self.ctx.unit_dir, self.unit_name())
with open(os.open(unit_file_path + '.new', os.O_CREAT | os.O_WRONLY, 0o600), 'w') as f: