mirror of
				https://github.com/Telecominfraproject/ols-nos.git
				synced 2025-10-30 01:32:35 +00:00 
			
		
		
		
	Add gbsyncd container for broncos (#11154)
* Add docker-gbsyncd-broncos support * Address review comments * Add socket to gbsyncd * Upgrade gbsyncd-broncos to bullseye
This commit is contained in:
		| @@ -36,7 +36,7 @@ function updateSyslogConf() | ||||
|         TARGET_IP=$(docker network inspect bridge --format={{ "'{{(index .IPAM.Config 0).Gateway}}'" }}) | ||||
|         CONTAINER_NAME="$DOCKERNAME" | ||||
|         TMP_FILE="/tmp/rsyslog.$CONTAINER_NAME.conf" | ||||
|         {%- if docker_container_name == "database" %}  | ||||
|         {%- if docker_container_name == "database" %} | ||||
|         python -c "import jinja2, os; paths=['/usr/share/sonic/templates']; loader = jinja2.FileSystemLoader(paths); env = jinja2.Environment(loader=loader, trim_blocks=True); template_file='/usr/share/sonic/templates/rsyslog-container.conf.j2'; template = env.get_template(os.path.basename(template_file)); data=template.render({\"target_ip\":\"$TARGET_IP\",\"container_name\":\"$CONTAINER_NAME\"}); print(data)" > $TMP_FILE | ||||
|         {%- else %} | ||||
|         sonic-cfggen -t /usr/share/sonic/templates/rsyslog-container.conf.j2 -a "{\"target_ip\": \"$TARGET_IP\", \"container_name\": \"$CONTAINER_NAME\" }"  > $TMP_FILE | ||||
| @@ -105,7 +105,7 @@ function preStartAction() | ||||
|     if [[ $(/bin/systemctl status watchdog-control.service | grep -c running) -gt 0 ]]; then | ||||
|         echo "Stopping watchdog-control.service before starting PDE" | ||||
|         systemctl stop watchdog-control.service | ||||
|     fi    | ||||
|     fi | ||||
| {%- elif docker_container_name == "snmp" %} | ||||
|     $SONIC_DB_CLI STATE_DB HSET 'DEVICE_METADATA|localhost' chassis_serial_number $(decode-syseeprom -s) | ||||
| {%- else %} | ||||
| @@ -127,7 +127,7 @@ function waitForAllInstanceDatabaseConfigJsonFilesReady() | ||||
| 	cnt=0 | ||||
| 	SONIC_DB_GLOBAL_JSON="/var/run/redis/sonic-db/database_global.json" | ||||
| 	if [ -f "$SONIC_DB_GLOBAL_JSON" ]; then | ||||
|             # Create a separate python script to get a list of location of all instance database_config.json file  | ||||
|             # Create a separate python script to get a list of location of all instance database_config.json file | ||||
|             redis_database_cfg_list=`/usr/bin/python -c "import sys; import os; import json; f=open(sys.argv[1]); \ | ||||
|             		    global_db_dir = os.path.dirname(sys.argv[1]); data=json.load(f); \ | ||||
|                             print(\" \".join([os.path.normpath(global_db_dir+'/'+elem['include']) \ | ||||
| @@ -297,6 +297,20 @@ start() { | ||||
|         source $PLATFORM_ENV_CONF | ||||
|     fi | ||||
|  | ||||
|     {%- if docker_container_name == "gbsyncd" %} | ||||
|     GBSYNCD_CONF=/usr/share/sonic/device/$PLATFORM/gbsyncd.ini | ||||
|     GBSYNCD_PLATFORM=gbsyncd-vs | ||||
|     if [ -f "$GBSYNCD_CONF" ]; then | ||||
|         while IFS="=" read -r key value; do | ||||
|             case "$key" in | ||||
|                 platform) | ||||
|                     GBSYNCD_PLATFORM="$value" | ||||
|                     ;; | ||||
|             esac | ||||
|        done < "$GBSYNCD_CONF" | ||||
|     fi | ||||
|     {%- endif %} | ||||
|  | ||||
|     {%- if docker_container_name == "database" %} | ||||
|     # Don't mount HWSKU in {{docker_container_name}} container. | ||||
|     HWSKU="" | ||||
| @@ -522,7 +536,10 @@ start() { | ||||
|         --env "NAMESPACE_PREFIX"="$NAMESPACE_PREFIX" \ | ||||
|         --env "NAMESPACE_COUNT"=$NUM_ASIC \ | ||||
|         --name=$DOCKERNAME \ | ||||
| {%- if docker_image_name is defined %} | ||||
| {%- if docker_container_name == "gbsyncd" %} | ||||
|         -v /var/run/docker-syncd$DEV:/var/run/sswsyncd \ | ||||
|         "docker-$GBSYNCD_PLATFORM":latest \ | ||||
| {%- elif docker_image_name is defined %} | ||||
|         {{docker_image_name}}:latest \ | ||||
| {%- else %} | ||||
|         {{docker_image_id}} \ | ||||
|   | ||||
| @@ -30,3 +30,6 @@ include $(PLATFORM_PATH)/libsaithrift-dev.dep | ||||
| include $(PLATFORM_PATH)/docker-syncd-brcm-dnx.dep | ||||
| include $(PLATFORM_PATH)/docker-syncd-brcm-dnx-rpc.dep | ||||
| include $(PLATFORM_PATH)/../components/docker-gbsyncd-credo.dep | ||||
| ifeq ($(INCLUDE_GBSYNCD_BRONCOS), y) | ||||
| include $(PLATFORM_PATH)/../components/docker-gbsyncd-broncos.dep | ||||
| endif | ||||
|   | ||||
| @@ -29,6 +29,9 @@ include $(PLATFORM_PATH)/libsaithrift-dev.mk | ||||
| include $(PLATFORM_PATH)/docker-syncd-brcm-dnx.mk | ||||
| include $(PLATFORM_PATH)/docker-syncd-brcm-dnx-rpc.mk | ||||
| include $(PLATFORM_PATH)/../components/docker-gbsyncd-credo.mk | ||||
| ifeq ($(INCLUDE_GBSYNCD_BRONCOS), y) | ||||
| include $(PLATFORM_PATH)/../components/docker-gbsyncd-broncos.mk | ||||
| endif | ||||
|  | ||||
| BCMCMD = bcmcmd | ||||
| $(BCMCMD)_URL = "https://sonicstorage.blob.core.windows.net/packages/20190307/bcmcmd?sv=2015-04-05&sr=b&sig=sUdbU7oVbh5exbXXHVL5TDFBTWDDBASHeJ8Cp0B0TIc%3D&se=2038-05-06T22%3A34%3A19Z&sp=r" | ||||
|   | ||||
							
								
								
									
										12
									
								
								platform/components/docker-gbsyncd-broncos.dep
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								platform/components/docker-gbsyncd-broncos.dep
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| DPATH       := $($(DOCKER_GBSYNCD_BRONCOS)_PATH) | ||||
| DEP_FILES   := $(SONIC_COMMON_FILES_LIST) | ||||
| DEP_FILES   += platform/components/docker-gbsyncd-broncos.mk | ||||
| DEP_FILES   += platform/components/docker-gbsyncd-broncos.dep | ||||
| DEP_FILES   += $(SONIC_COMMON_BASE_FILES_LIST) | ||||
| DEP_FILES   += $(shell git ls-files $(DPATH)) | ||||
|  | ||||
| $(DOCKER_GBSYNCD_BRONCOS)_CACHE_MODE  := GIT_CONTENT_SHA | ||||
| $(DOCKER_GBSYNCD_BRONCOS)_DEP_FLAGS   := $(SONIC_COMMON_FLAGS_LIST) | ||||
| $(DOCKER_GBSYNCD_BRONCOS)_DEP_FILES   := $(DEP_FILES) | ||||
|  | ||||
| $(eval $(call add_dbg_docker,$(DOCKER_GBSYNCD_BRONCOS),$(DOCKER_GBSYNCD_BRONCOS_DBG))) | ||||
							
								
								
									
										37
									
								
								platform/components/docker-gbsyncd-broncos.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								platform/components/docker-gbsyncd-broncos.mk
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,37 @@ | ||||
| LIBSAI_BRONCOS = libsaibroncos_0.0.1_amd64.deb | ||||
| $(LIBSAI_BRONCOS)_URL = | ||||
|  | ||||
| ifneq ($($(LIBSAI_BRONCOS)_URL),) | ||||
|  | ||||
| DOCKER_GBSYNCD_BRONCOS_STEM = docker-gbsyncd-broncos | ||||
| DOCKER_GBSYNCD_BRONCOS = $(DOCKER_GBSYNCD_BRONCOS_STEM).gz | ||||
| DOCKER_GBSYNCD_BRONCOS_DBG = $(DOCKER_GBSYNCD_BRONCOS_STEM)-$(DBG_IMAGE_MARK).gz | ||||
|  | ||||
| $(DOCKER_GBSYNCD_BRONCOS)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) | ||||
|  | ||||
| $(DOCKER_GBSYNCD_BRONCOS)_LOAD_DOCKERS += $(DOCKER_CONFIG_ENGINE_BULLSEYE) | ||||
|  | ||||
| $(DOCKER_GBSYNCD_BRONCOS)_DBG_DEPENDS += $($(DOCKER_CONFIG_ENGINE_BULLSEYE)_DBG_DEPENDS) | ||||
|  | ||||
| $(DOCKER_GBSYNCD_BRONCOS)_DBG_IMAGE_PACKAGES = $($(DOCKER_CONFIG_ENGINE_BULLSEYE)_DBG_IMAGE_PACKAGES) | ||||
|  | ||||
| SONIC_DOCKER_IMAGES += $(DOCKER_GBSYNCD_BRONCOS) | ||||
| SONIC_BULLSEYE_DOCKERS += $(DOCKER_GBSYNCD_BRONCOS) | ||||
| SONIC_INSTALL_DOCKER_IMAGES += $(DOCKER_GBSYNCD_BRONCOS) | ||||
|  | ||||
| SONIC_DOCKER_DBG_IMAGES += $(DOCKER_GBSYNCD_BRONCOS_DBG) | ||||
| SONIC_BULLSEYE_DBG_DOCKERS += $(DOCKER_GBSYNCD_BRONCOS_DBG) | ||||
| SONIC_INSTALL_DOCKER_DBG_IMAGES += $(DOCKER_GBSYNCD_BRONCOS_DBG) | ||||
|  | ||||
| $(DOCKER_GBSYNCD_BRONCOS)_CONTAINER_NAME = gbsyncd | ||||
| $(DOCKER_GBSYNCD_BRONCOS)_RUN_OPT += --privileged -t | ||||
| $(DOCKER_GBSYNCD_BRONCOS)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf | ||||
| $(DOCKER_GBSYNCD_BRONCOS)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro | ||||
|  | ||||
| SONIC_ONLINE_DEBS += $(LIBSAI_BRONCOS) | ||||
|  | ||||
| $(DOCKER_GBSYNCD_BRONCOS)_VERSION = 1.0.0 | ||||
| $(DOCKER_GBSYNCD_BRONCOS)_PACKAGE_NAME = gbsyncd-broncos | ||||
| $(DOCKER_GBSYNCD_BRONCOS)_PATH = $(PLATFORM_PATH)/../components/docker-gbsyncd-broncos | ||||
| $(DOCKER_GBSYNCD_BRONCOS)_DEPENDS += $(SYNCD) $(LIBSAI_BRONCOS) | ||||
| endif | ||||
							
								
								
									
										40
									
								
								platform/components/docker-gbsyncd-broncos/Dockerfile.j2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								platform/components/docker-gbsyncd-broncos/Dockerfile.j2
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,40 @@ | ||||
| FROM docker-config-engine-bullseye | ||||
|  | ||||
| ARG docker_container_name | ||||
| RUN [ -f /etc/rsyslog.conf ] && sed -ri "s/%syslogtag%/$docker_container_name#%syslogtag%/;" /etc/rsyslog.conf | ||||
|  | ||||
| ## Make apt-get non-interactive | ||||
| ENV DEBIAN_FRONTEND=noninteractive | ||||
|  | ||||
| RUN apt-get update | ||||
|  | ||||
| RUN apt-get install -f -y iproute2 libcap2-bin libprotobuf-dev | ||||
|  | ||||
| COPY \ | ||||
| {% for deb in docker_gbsyncd_broncos_debs.split(' ') -%} | ||||
| {% if 'libsaibcm' not in deb -%} | ||||
| debs/{{ deb }}{{' '}} | ||||
| {%- endif %} | ||||
| {%- endfor -%} | ||||
| debs/ | ||||
|  | ||||
| RUN dpkg -i \ | ||||
| {% for deb in docker_gbsyncd_broncos_debs.split(' ') -%} | ||||
| {% if 'libsaibcm' not in deb -%} | ||||
| debs/{{ deb }}{{' '}} | ||||
| {%- endif %} | ||||
| {%- endfor %} | ||||
|  | ||||
| COPY ["docker-init.sh", "/usr/bin/"] | ||||
| COPY ["start.sh", "/usr/bin/"] | ||||
|  | ||||
| COPY ["critical_processes.j2", "/usr/share/sonic/templates"] | ||||
| COPY ["supervisord.conf.j2", "/usr/share/sonic/templates"] | ||||
|  | ||||
| COPY ["files/supervisor-proc-exit-listener", "/usr/bin"] | ||||
|  | ||||
| ## Clean up | ||||
| RUN apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y | ||||
| RUN rm -rf /debs | ||||
|  | ||||
| ENTRYPOINT ["/usr/bin/docker-init.sh"] | ||||
| @@ -0,0 +1 @@ | ||||
| program:syncd | ||||
							
								
								
									
										16
									
								
								platform/components/docker-gbsyncd-broncos/docker-init.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										16
									
								
								platform/components/docker-gbsyncd-broncos/docker-init.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,16 @@ | ||||
| #! /bin/sh | ||||
|  | ||||
| GB_CONFIG=/usr/share/sonic/hwsku/gearbox_config.json | ||||
|  | ||||
| if [ ! -f $GB_CONFIG ]; then | ||||
|    exit 0 | ||||
| fi | ||||
|  | ||||
| CFGGEN_ARG="-j $GB_CONFIG" | ||||
|  | ||||
| mkdir -p /etc/supervisor/conf.d/ | ||||
|  | ||||
| sonic-cfggen $CFGGEN_ARG -t /usr/share/sonic/templates/supervisord.conf.j2 > /etc/supervisor/conf.d/supervisord.conf | ||||
| sonic-cfggen $CFGGEN_ARG -t /usr/share/sonic/templates/critical_processes.j2 > /etc/supervisor/critical_processes | ||||
|  | ||||
| exec /usr/local/bin/supervisord | ||||
							
								
								
									
										14
									
								
								platform/components/docker-gbsyncd-broncos/start.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										14
									
								
								platform/components/docker-gbsyncd-broncos/start.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,14 @@ | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| HWSKU_DIR=/usr/share/sonic/hwsku | ||||
|  | ||||
| mkdir -p /etc/sai.d/ | ||||
|  | ||||
| # Create/Copy the psai.profile to /etc/sai.d/psai.profile | ||||
| if [ -f $HWSKU_DIR/psai.profile.j2 ]; then | ||||
|     sonic-cfggen -d -t $HWSKU_DIR/psai.profile.j2 > /etc/sai.d/psai.profile | ||||
| else | ||||
|     if [ -f $HWSKU_DIR/psai.profile ]; then | ||||
|         cp $HWSKU_DIR/psai.profile /etc/sai.d/psai.profile | ||||
|     fi | ||||
| fi | ||||
| @@ -0,0 +1,43 @@ | ||||
| [supervisord] | ||||
| logfile_maxbytes=1MB | ||||
| logfile_backups=2 | ||||
| nodaemon=true | ||||
|  | ||||
| [eventlistener:dependent-startup] | ||||
| command=python3 -m supervisord_dependent_startup | ||||
| autostart=true | ||||
| autorestart=unexpected | ||||
| startretries=0 | ||||
| exitcodes=0,3 | ||||
| events=PROCESS_STATE | ||||
|  | ||||
| [program:rsyslogd] | ||||
| command=/usr/sbin/rsyslogd -n -iNONE | ||||
| priority=1 | ||||
| autostart=false | ||||
| autorestart=unexpected | ||||
| stdout_logfile=syslog | ||||
| stderr_logfile=syslog | ||||
| dependent_startup=true | ||||
|  | ||||
| [program:start] | ||||
| command=/usr/bin/start.sh | ||||
| priority=2 | ||||
| autostart=false | ||||
| autorestart=false | ||||
| startsecs=0 | ||||
| stdout_logfile=syslog | ||||
| stderr_logfile=syslog | ||||
| dependent_startup=true | ||||
| dependent_startup_wait_for=rsyslogd:running | ||||
|  | ||||
| [program:syncd] | ||||
| environment=BRONCOS_DEVICE_PATH=/usr/lib | ||||
| command=/usr/bin/syncd -s -p /etc/sai.d/psai.profile -x /usr/share/sonic/hwsku/context_config.json -g 1 | ||||
| priority=3 | ||||
| autostart=false | ||||
| autorestart=false | ||||
| stdout_logfile=syslog | ||||
| stderr_logfile=syslog | ||||
| dependent_startup=true | ||||
| dependent_startup_wait_for=start:exited | ||||
		Reference in New Issue
	
	Block a user
	 andywongarista
					andywongarista