From 7d3ec60b1f3b8a79801f6d9d891f78d2220fda5a Mon Sep 17 00:00:00 2001 From: Tamer Ahmed Date: Thu, 27 Aug 2020 06:50:03 -0700 Subject: [PATCH] [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 --- files/image_config/hostcfgd/hostcfgd | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/files/image_config/hostcfgd/hostcfgd b/files/image_config/hostcfgd/hostcfgd index 29c88eb645..acfc3d0c80 100755 --- a/files/image_config/hostcfgd/hostcfgd +++ b/files/image_config/hostcfgd/hostcfgd @@ -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))