Skip to content

Commit dd1e161

Browse files
[containercfgd] Add multi ASIC support for syslog rate limit feature (#18438)
- Why I did it For multi asic platform, the container name is not the same as service name. For example, service name swss, the container in namespace asic0 will have container name swss0. This PR is to support multi ASIC platform. - How I did it Add a global variable service_name and use it to match DB key. - How to verify it Manual test Unit test
1 parent 7a483a7 commit dd1e161

2 files changed

Lines changed: 12 additions & 4 deletions

File tree

src/sonic-containercfgd/containercfgd/containercfgd.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
# Container name
2525
container_name = None
26+
service_name = None
2627

2728

2829
def run_command(command):
@@ -117,7 +118,7 @@ def handle_config(self, table, key, data):
117118
data (dict): Data of the entry: {<field_name>: <field_value>}
118119
"""
119120
try:
120-
if key != container_name:
121+
if key != service_name:
121122
return
122123
self.update_syslog_config(data)
123124
except Exception as e:
@@ -130,8 +131,8 @@ def handle_init_data(self, init_data):
130131
init_data (dict): Initial data when first time connecting to CONFIG DB. {<table_name>: {<field_name>: <field_value>}}
131132
"""
132133
if SYSLOG_CONFIG_FEATURE_TABLE in init_data:
133-
if container_name in init_data[SYSLOG_CONFIG_FEATURE_TABLE]:
134-
self.update_syslog_config(init_data[SYSLOG_CONFIG_FEATURE_TABLE][container_name])
134+
if service_name in init_data[SYSLOG_CONFIG_FEATURE_TABLE]:
135+
self.update_syslog_config(init_data[SYSLOG_CONFIG_FEATURE_TABLE][service_name])
135136

136137
def update_syslog_config(self, data):
137138
"""Parse existing syslog conf and apply new syslog conf.
@@ -151,7 +152,7 @@ def update_syslog_config(self, data):
151152
if os.path.exists(self.TMP_SYSLOG_CONF_PATH):
152153
os.remove(self.TMP_SYSLOG_CONF_PATH)
153154
with open(self.TMP_SYSLOG_CONF_PATH, 'w+') as f:
154-
json_args = f'{{"container_name": "{container_name}" }}'
155+
json_args = f'{{"container_name": "{service_name}" }}'
155156
output = run_command(['sonic-cfggen', '-d', '-t', '/usr/share/sonic/templates/rsyslog-container.conf.j2', '-a', json_args])
156157
f.write(output)
157158
run_command(['cp', self.TMP_SYSLOG_CONF_PATH, self.SYSLOG_CONF_PATH])
@@ -185,7 +186,13 @@ def parse_syslog_conf(self):
185186

186187
def main():
187188
global container_name
189+
global service_name
190+
namespace_id = os.environ['NAMESPACE_ID']
188191
container_name = os.environ['CONTAINER_NAME']
192+
if not namespace_id:
193+
service_name = container_name
194+
else:
195+
service_name = container_name.rstrip(namespace_id)
189196
daemon = ContainerConfigDaemon()
190197
daemon.run()
191198

src/sonic-containercfgd/tests/test_syslog_config.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
from containercfgd import containercfgd
1313

1414
containercfgd.container_name = 'swss'
15+
containercfgd.service_name = 'swss'
1516

1617

1718
def test_handle_config():

0 commit comments

Comments
 (0)