Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Task #4111576: Add TFS upgrade script #279

Merged
merged 14 commits into from
Nov 27, 2024
2 changes: 1 addition & 1 deletion plugins/fluentd_telemetry_plugin/build/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ COPY utils/ ${BASE_PATH}/utils/
COPY ufm_sdk_tools/ ${BASE_PATH}/ufm_sdk_tools/

COPY ${SRC_BASE_DIR}/conf/supervisord.conf /etc/supervisor/conf.d/
COPY ${SRC_BASE_DIR}/scripts/init.sh ${SRC_BASE_DIR}/scripts/deinit.sh /
COPY ${SRC_BASE_DIR}/scripts/init.sh ${SRC_BASE_DIR}/scripts/deinit.sh ${SRC_BASE_DIR}/scripts/upgrade.sh /
COPY ${SRC_BASE_DIR}/conf/tfs_httpd_proxy.conf ${SRC_BASE_DIR}/conf/fluentd_telemetry_plugin.cfg ${SRC_BASE_DIR}/conf/fluentd.conf ${BASE_PATH}/

COPY ${SRC_BASE_DIR}/lib/libfluent-bit.so ${SRC_BASE_DIR}/lib/libraw_msgpack_api.so ${TELEMETRY_BASE_PATH}/collectx/lib/
Expand Down
2 changes: 2 additions & 0 deletions plugins/fluentd_telemetry_plugin/scripts/upgrade.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#!/bin/bash
python3 /opt/ufm/ufm_plugin_tfs/ufm_sdk_tools/src/config_parser_utils/merge_configuration_files.py /config/fluentd_telemetry_conf.cfg /opt/ufm/ufm_plugin_tfs/fluentd_telemetry_plugin/conf/fluentd_telemetry_conf.cfg
Miryam-Schwartz marked this conversation as resolved.
Show resolved Hide resolved
68 changes: 68 additions & 0 deletions plugins/fluentd_telemetry_plugin/src/merge_configuration_files.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
"""
Miryam-Schwartz marked this conversation as resolved.
Show resolved Hide resolved
@copyright:
Copyright (C) Mellanox Technologies Ltd. 2014-2020. ALL RIGHTS RESERVED.
Miryam-Schwartz marked this conversation as resolved.
Show resolved Hide resolved

This software product is a proprietary product of Mellanox Technologies
Ltd. (the "Company") and all right, title, and interest in and to the
software product, including all associated intellectual property rights,
are and shall remain exclusively with the Company.

This software product is governed by the End User License Agreement
provided with the software product.

@author: Miryam Schwartz
@date: Oct 14, 2024
Miryam-Schwartz marked this conversation as resolved.
Show resolved Hide resolved
"""
import configparser
import logging
import sys
import os

def merge_ini_files(old_file_path, new_file_path):
# Check if files exist
if not os.path.isfile(old_file_path):
logging.error("file %s does not exist.", old_file_path)
sys.exit(1)
if not os.path.isfile(new_file_path):
logging.error("file %s does not exist.", new_file_path)
sys.exit(1)

# Create a configparser object
config_old = configparser.ConfigParser()
config_new = configparser.ConfigParser()

# Read the old and new files
try:
config_old.read(old_file_path)
config_new.read(new_file_path)

except configparser.Error as e:
logging.error("Failed to parse configurations files: %s", e)
sys.exit(1)

# Merge configurations
for section in config_new.sections():
if not config_old.has_section(section):
config_old.add_section(section)
for option in config_new.options(section):
# If option exists in the old file, retain the old value
if not config_old.has_option(section, option):
Miryam-Schwartz marked this conversation as resolved.
Show resolved Hide resolved
# Otherwise, add the new value
config_old.set(section, option, config_new.get(section, option))

# Write the merged configuration to the old file path
with open(old_file_path, 'w', encoding="utf-8") as configfile:
config_old.write(configfile)

logging.info("Configuration has been merged and saved to %s", old_file_path)

if __name__ == "__main__":
# Get file paths from command line arguments
if len(sys.argv) != 3:
logging.error("Usage: python merge_configuration_files.py <old_file_path> <new_file_path>")
sys.exit(1)

old_file = sys.argv[1]
new_file = sys.argv[2]

merge_ini_files(old_file, new_file)