[hostcfgd] Fix Boolean String Evaluation (#5248)

New attribute 'has_timer' introduced to init_cfg.json does not evaluate
as Bool, rather it evaluates as string. This PR fixes this issue. Also,
this PR fixes an issue when there is system config unit (snmp, telemetry) that
has no installation config (WantedBy=, RequiredBy=, Also=, Alias=) settings
in the [Install] section. In the latter case, the .service should not be enabled.

signed-off-by: Tamer Ahmed <tamer.ahmed@microsoft.com>
This commit is contained in:
Tamer Ahmed 2020-08-27 06:50:03 -07:00 committed by GitHub
parent a8016a6987
commit 7d3ec60b1f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,6 +1,7 @@
#!/usr/bin/python -u
# -*- coding: utf-8 -*-
import ast
import os
import sys
import subprocess
@ -41,15 +42,15 @@ def obfuscate(data):
return data
def update_feature_state(feature_name, state, has_timer=False):
feature_suffixes = ["service"] + (["timer"] if has_timer else [])
def update_feature_state(feature_name, state, has_timer):
feature_suffixes = ["service"] + (["timer"] if ast.literal_eval(has_timer) else [])
if state == "enabled":
start_cmds = []
for suffix in feature_suffixes:
start_cmds.append("sudo systemctl unmask {}.{}".format(feature_name, suffix))
start_cmds.append("sudo systemctl enable {}.{}".format(feature_name, suffix))
# If feature has timer associated with it, start corresponding systemd .timer unit
# otherwise, start corresponding systemd .service unit
# If feature has timer associated with it, start/enable corresponding systemd .timer unit
# otherwise, start/enable corresponding systemd .service unit
start_cmds.append("sudo systemctl enable {}.{}".format(feature_name, feature_suffixes[-1]))
start_cmds.append("sudo systemctl start {}.{}".format(feature_name, feature_suffixes[-1]))
for cmd in start_cmds:
syslog.syslog(syslog.LOG_INFO, "Running cmd: '{}'".format(cmd))