From 9bc446462a40ed0c48b22e7f2fa5c1635da99172 Mon Sep 17 00:00:00 2001 From: Stepan Blyschak Date: Mon, 18 Jan 2021 09:26:35 +0000 Subject: [PATCH 1/9] [dhcp-relay] make DHCP relay an extension Signed-off-by: Stepan Blyschak --- Makefile.work | 1 + .../cli/config/plugins/dhcp_relay.py | 84 +++++++++++++++++++ .../cli/show/plugins/dhcp_relay.py | 22 +++++ dockers/docker-dhcp-relay/manifest.json.j2 | 27 ++++++ files/build_templates/init_cfg.json.j2 | 3 +- .../build_templates/sonic_debian_extension.j2 | 22 +++++ files/scripts/swss.sh | 11 ++- rules/config | 3 + rules/docker-dhcp-relay.mk | 18 ++-- rules/sonic-packages.mk | 9 ++ slave.mk | 15 +++- 11 files changed, 204 insertions(+), 11 deletions(-) create mode 100644 dockers/docker-dhcp-relay/cli/config/plugins/dhcp_relay.py create mode 100644 dockers/docker-dhcp-relay/cli/show/plugins/dhcp_relay.py create mode 100644 rules/sonic-packages.mk diff --git a/Makefile.work b/Makefile.work index 0d7f62af391..4a768fc717a 100644 --- a/Makefile.work +++ b/Makefile.work @@ -241,6 +241,7 @@ SONIC_BUILD_INSTRUCTION := make \ HTTP_PROXY=$(http_proxy) \ HTTPS_PROXY=$(https_proxy) \ SONIC_INCLUDE_SYSTEM_TELEMETRY=$(INCLUDE_SYSTEM_TELEMETRY) \ + INCLUDE_DHCP_RELAY=$(INCLUDE_DHCP_RELAY) \ SONIC_INCLUDE_RESTAPI=$(INCLUDE_RESTAPI) \ TELEMETRY_WRITABLE=$(TELEMETRY_WRITABLE) \ EXTRA_DOCKER_TARGETS=$(EXTRA_DOCKER_TARGETS) \ diff --git a/dockers/docker-dhcp-relay/cli/config/plugins/dhcp_relay.py b/dockers/docker-dhcp-relay/cli/config/plugins/dhcp_relay.py new file mode 100644 index 00000000000..e3cdd830465 --- /dev/null +++ b/dockers/docker-dhcp-relay/cli/config/plugins/dhcp_relay.py @@ -0,0 +1,84 @@ +import click +import utilities_common.cli as clicommon + +@click.group(cls=clicommon.AbbreviationGroup, name='dhcp_relay') +def vlan_dhcp_relay(): + pass + +@vlan_dhcp_relay.command('add') +@click.argument('vid', metavar='', required=True, type=int) +@click.argument('dhcp_relay_destination_ip', metavar='', required=True) +@clicommon.pass_db +def add_vlan_dhcp_relay_destination(db, vid, dhcp_relay_destination_ip): + """ Add a destination IP address to the VLAN's DHCP relay """ + + ctx = click.get_current_context() + + if not clicommon.is_ipaddress(dhcp_relay_destination_ip): + ctx.fail('{} is invalid IP address'.format(dhcp_relay_destination_ip)) + + vlan_name = 'Vlan{}'.format(vid) + vlan = db.cfgdb.get_entry('VLAN', vlan_name) + if len(vlan) == 0: + ctx.fail("{} doesn't exist".format(vlan_name)) + + dhcp_relay_dests = vlan.get('dhcp_servers', []) + if dhcp_relay_destination_ip in dhcp_relay_dests: + click.echo("{} is already a DHCP relay destination for {}".format(dhcp_relay_destination_ip, vlan_name)) + return + + dhcp_relay_dests.append(dhcp_relay_destination_ip) + vlan['dhcp_servers'] = dhcp_relay_dests + db.cfgdb.set_entry('VLAN', vlan_name, vlan) + click.echo("Added DHCP relay destination address {} to {}".format(dhcp_relay_destination_ip, vlan_name)) + try: + click.echo("Restarting DHCP relay service...") + clicommon.run_command("systemctl stop dhcp_relay", display_cmd=False) + clicommon.run_command("systemctl reset-failed dhcp_relay", display_cmd=False) + clicommon.run_command("systemctl start dhcp_relay", display_cmd=False) + except SystemExit as e: + ctx.fail("Restart service dhcp_relay failed with error {}".format(e)) + +@vlan_dhcp_relay.command('del') +@click.argument('vid', metavar='', required=True, type=int) +@click.argument('dhcp_relay_destination_ip', metavar='', required=True) +@clicommon.pass_db +def del_vlan_dhcp_relay_destination(db, vid, dhcp_relay_destination_ip): + """ Remove a destination IP address from the VLAN's DHCP relay """ + + ctx = click.get_current_context() + + if not clicommon.is_ipaddress(dhcp_relay_destination_ip): + ctx.fail('{} is invalid IP address'.format(dhcp_relay_destination_ip)) + + vlan_name = 'Vlan{}'.format(vid) + vlan = db.cfgdb.get_entry('VLAN', vlan_name) + if len(vlan) == 0: + ctx.fail("{} doesn't exist".format(vlan_name)) + + dhcp_relay_dests = vlan.get('dhcp_servers', []) + if not dhcp_relay_destination_ip in dhcp_relay_dests: + ctx.fail("{} is not a DHCP relay destination for {}".format(dhcp_relay_destination_ip, vlan_name)) + + dhcp_relay_dests.remove(dhcp_relay_destination_ip) + if len(dhcp_relay_dests) == 0: + del vlan['dhcp_servers'] + else: + vlan['dhcp_servers'] = dhcp_relay_dests + db.cfgdb.set_entry('VLAN', vlan_name, vlan) + click.echo("Removed DHCP relay destination address {} from {}".format(dhcp_relay_destination_ip, vlan_name)) + try: + click.echo("Restarting DHCP relay service...") + clicommon.run_command("systemctl stop dhcp_relay", display_cmd=False) + clicommon.run_command("systemctl reset-failed dhcp_relay", display_cmd=False) + clicommon.run_command("systemctl start dhcp_relay", display_cmd=False) + except SystemExit as e: + ctx.fail("Restart service dhcp_relay failed with error {}".format(e)) + + +def register(cli): + cli.commands['vlan'].add_command(vlan_dhcp_relay) + + +if __name__ == '__main__': + vlan_dhcp_relay() diff --git a/dockers/docker-dhcp-relay/cli/show/plugins/dhcp_relay.py b/dockers/docker-dhcp-relay/cli/show/plugins/dhcp_relay.py new file mode 100644 index 00000000000..a1240dc57a1 --- /dev/null +++ b/dockers/docker-dhcp-relay/cli/show/plugins/dhcp_relay.py @@ -0,0 +1,22 @@ +from natsort import natsorted +from .. import vlan + + +def get_dhcp_helper_address(ctx, vlan): + cfg, _ = ctx + vlan_dhcp_helper_data, _, _ = cfg + vlan_config = vlan_dhcp_helper_data.get(vlan) + if not vlan_config: + return "" + + dhcp_helpers = vlan_config.get('dhcp_servers', []) + + return '\n'.join(natsorted(dhcp_helpers)) + + +vlan.VlanBrief.COLUMNS.append(('DHCP Helper Address', get_dhcp_helper_address)) + + +def register(cli): + pass + diff --git a/dockers/docker-dhcp-relay/manifest.json.j2 b/dockers/docker-dhcp-relay/manifest.json.j2 index 11e5a832d39..f290c220bad 100644 --- a/dockers/docker-dhcp-relay/manifest.json.j2 +++ b/dockers/docker-dhcp-relay/manifest.json.j2 @@ -10,7 +10,34 @@ }, "service": { "name": "{{ name }}", + "requires": [ + "updategraph" + ], + "after": [ + "swss", + "syncd", + "teamd" + ], + "before": [ + "ntp-config" + ], + "dependent-of": ["swss"], "asic-service": false, "host-service": true + }, + "container": { + "privileged": true, + "volumes": [ + "/etc/sonic:/etc/sonic:ro", + "/usr/share/sonic/scripts:/usr/share/sonic/scripts:ro" + ], + "tmpfs": [ + "/tmp/", + "/var/tmp/" + ] + }, + "cli": { + "config": "/cli/config/plugins/dhcp_relay.py", + "show": "/cli/show/plugins/dhcp_relay.py" } } diff --git a/files/build_templates/init_cfg.json.j2 b/files/build_templates/init_cfg.json.j2 index 0cf85cd8ab0..bc45dd9a43a 100644 --- a/files/build_templates/init_cfg.json.j2 +++ b/files/build_templates/init_cfg.json.j2 @@ -20,7 +20,6 @@ }, {%- set features = [("bgp", "enabled", false, "enabled"), ("database", "always_enabled", false, "always_enabled"), - ("dhcp_relay", "enabled", false, "enabled"), ("lldp", "enabled", false, "enabled"), ("pmon", "enabled", false, "enabled"), ("radv", "enabled", false, "enabled"), @@ -45,7 +44,7 @@ "has_per_asic_scope": {% if feature + '@.service' in installer_services.split(' ') %}true{% else %}false{% endif %}, "auto_restart": "{{autorestart}}", {%- if include_kubernetes == "y" %} -{%- if feature in ["dhcp_relay", "lldp", "pmon", "radv", "snmp", "telemetry"] %} +{%- if feature in ["lldp", "pmon", "radv", "snmp", "telemetry"] %} "set_owner": "kube", {% else %} "set_owner": "local", {% endif %} {% endif %} "high_mem_alert": "disabled" diff --git a/files/build_templates/sonic_debian_extension.j2 b/files/build_templates/sonic_debian_extension.j2 index 83f34217435..8395bf9beed 100644 --- a/files/build_templates/sonic_debian_extension.j2 +++ b/files/build_templates/sonic_debian_extension.j2 @@ -605,6 +605,28 @@ sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT docker pull k8s.gcr echo "docker images pull complete" {% endif %} +{% macro get_install_options(default_owner, enabled) -%} +{% set args = ["-y", "-v", "DEBUG"] -%} +{% if default_owner -%} +{% set args = args + ["--default-owner", default_owner] -%} +{% endif -%} +{% if enabled == "y" -%} +{% set args = args + ["--enabled"] -%} +{% endif -%} +{{ args | join(' ') }} +{% endmacro -%} + +{% for package in sonic_packages.strip().split() -%} +{% set name, repo, version, default_owner, enabled = package.split('|') -%} +sudo LANG=C chroot $FILESYSTEM_ROOT sonic-package-manager repository add {{ name }} {{ repo }} +sudo LANG=C chroot $FILESYSTEM_ROOT sonic-package-manager install {{ name }}=={{ version }} {{ get_install_options(default_owner, enabled) }} +{% endfor -%} + +{% for package in sonic_local_packages.strip().split() -%} +{% set name, path, default_owner, enabled = package.split('|') -%} +sudo LANG=C chroot $FILESYSTEM_ROOT sonic-package-manager install {{ path }} {{ get_install_options(default_owner, enabled) }} +{% endfor -%} + sudo umount $FILESYSTEM_ROOT/target sudo rm -r $FILESYSTEM_ROOT/target if [[ $CONFIGURED_ARCH == armhf || $CONFIGURED_ARCH == arm64 ]]; then diff --git a/files/scripts/swss.sh b/files/scripts/swss.sh index 1c54aefb0c0..521d26f0ea7 100755 --- a/files/scripts/swss.sh +++ b/files/scripts/swss.sh @@ -1,8 +1,17 @@ #!/bin/bash -DEPENDENT="radv dhcp_relay" +DEPENDENT="radv" MULTI_INST_DEPENDENT="teamd" +# Update dependent list based on other packages requirements +if [[ -f /etc/sonic/${SERVICE}_dependent ]]; then + DEPENDENT="${DEPENDENT} $(cat /etc/sonic/${SERVICE}_dependent)" +fi + +if [[ -f /etc/sonic/${SERVICE}_multi_inst_dependent ]]; then + MULTI_INST_DEPENDENT="${MULTI_INST_DEPENDENT} cat /etc/sonic/${SERVICE}_multi_inst_dependent" +fi + function debug() { /usr/bin/logger $1 diff --git a/rules/config b/rules/config index 39eb786f2ff..5a93064cf1e 100644 --- a/rules/config +++ b/rules/config @@ -139,6 +139,9 @@ INCLUDE_RESTAPI = n # INCLUDE_NAT - build docker-nat for nat support INCLUDE_NAT = y +# INCLUDE_DHCP_RELAY - build and install dhcp-relay package +INCLUDE_DHCP_RELAY = y + # TELEMETRY_WRITABLE - Enable write/config operations via the gNMI interface. # Uncomment to enable: # TELEMETRY_WRITABLE = y diff --git a/rules/docker-dhcp-relay.mk b/rules/docker-dhcp-relay.mk index a4cb3573e46..bdde3afae0d 100644 --- a/rules/docker-dhcp-relay.mk +++ b/rules/docker-dhcp-relay.mk @@ -19,13 +19,19 @@ $(DOCKER_DHCP_RELAY)_VERSION = 1.0.0 $(DOCKER_DHCP_RELAY)_PACKAGE_NAME = dhcp-relay SONIC_DOCKER_IMAGES += $(DOCKER_DHCP_RELAY) -SONIC_INSTALL_DOCKER_IMAGES += $(DOCKER_DHCP_RELAY) - SONIC_DOCKER_DBG_IMAGES += $(DOCKER_DHCP_RELAY_DBG) -SONIC_INSTALL_DOCKER_DBG_IMAGES += $(DOCKER_DHCP_RELAY_DBG) + +ifeq ($(INCLUDE_KUBERNETES),y) +$(DOCKER_DHCP_RELAY)_DEFAULT_FEATURE_OWNER = kube +endif + +$(DOCKER_DHCP_RELAY)_DEFAULT_FEATURE_STATE_ENABLED = y + +ifeq ($(INSTALL_DEBUG_TOOLS),y) +SONIC_PACKAGES_LOCAL += $(DOCKER_DHCP_RELAY_DBG) +else +SONIC_PACKAGES_LOCAL += $(DOCKER_DHCP_RELAY) +endif $(DOCKER_DHCP_RELAY)_CONTAINER_NAME = dhcp_relay -$(DOCKER_DHCP_RELAY)_RUN_OPT += --privileged -t -$(DOCKER_DHCP_RELAY)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro -$(DOCKER_DHCP_RELAY)_RUN_OPT += -v /usr/share/sonic/scripts:/usr/share/sonic/scripts:ro $(DOCKER_DHCP_RELAY)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) diff --git a/rules/sonic-packages.mk b/rules/sonic-packages.mk new file mode 100644 index 00000000000..47e02001f93 --- /dev/null +++ b/rules/sonic-packages.mk @@ -0,0 +1,9 @@ +# rules to define remote packages that need to be installed +# during SONiC image build + +## Example: +## PACKAGE = my-package +## $(PACKAGE)_REPOSITORY = myrepo/mypackage +## $(PACKAGE)_VERSION = 1.0.0 +## SONIC_PACKAGES += $(PACKAGE) + diff --git a/slave.mk b/slave.mk index 362f4bd0560..b57a44719a0 100644 --- a/slave.mk +++ b/slave.mk @@ -251,6 +251,7 @@ $(info "INCLUDE_HOST_SERVICE" : "$(INCLUDE_HOST_SERVICE)") $(info "INCLUDE_RESTAPI" : "$(INCLUDE_RESTAPI)") $(info "INCLUDE_SFLOW" : "$(INCLUDE_SFLOW)") $(info "INCLUDE_NAT" : "$(INCLUDE_NAT)") +$(info "INCLUDE_DHCP_RELAY" : "$(INCLUDE_DHCP_RELAY)") $(info "INCLUDE_KUBERNETES" : "$(INCLUDE_KUBERNETES)") $(info "TELEMETRY_WRITABLE" : "$(TELEMETRY_WRITABLE)") $(info "PDDF_SUPPORT" : "$(PDDF_SUPPORT)") @@ -862,6 +863,7 @@ $(addprefix $(TARGET_PATH)/, $(SONIC_INSTALLERS)) : $(TARGET_PATH)/% : \ $(SONIC_UTILITIES_DATA) \ $(SONIC_HOST_SERVICES_DATA)) \ $$(addprefix $(TARGET_PATH)/,$$($$*_DOCKERS)) \ + $$(addprefix $(TARGET_PATH)/,$$(SONIC_PACKAGES_LOCAL)) \ $$(addprefix $(FILES_PATH)/,$$($$*_FILES)) \ $(if $(findstring y,$(ENABLE_ZTP)),$(addprefix $(IMAGE_DISTRO_DEBS_PATH)/,$(SONIC_ZTP))) \ $(if $(findstring y,$(INCLUDE_HOST_SERVICE)),$(addprefix $(IMAGE_DISTRO_DEBS_PATH)/,$(SONIC_HOST_SERVICE))) \ @@ -913,8 +915,17 @@ $(addprefix $(TARGET_PATH)/, $(SONIC_INSTALLERS)) : $(TARGET_PATH)/% : \ export lazy_installer_debs="$(foreach deb, $($*_LAZY_INSTALLS),$(foreach device, $($(deb)_PLATFORM),$(addprefix $(device)@, $(IMAGE_DISTRO_DEBS_PATH)/$(deb))))" export installer_images="$(foreach docker, $($*_DOCKERS),\ $(addprefix $($(docker)_PACKAGE_NAME)|,\ - $(addprefix $($(docker)_PATH)|,\ - $(addprefix $(TARGET_PATH)/,$(addsuffix :$($(docker)_VERSION),$(docker))))))" + $(addprefix $($(docker)_PATH)|,\ + $(addprefix $(TARGET_PATH)/,$(addsuffix :$($(docker)_VERSION),$(docker))))))" + export sonic_packages="$(foreach package, $(SONIC_PACKAGES),\ + $(addsuffix |$($(package)_DEFAULT_FEATURE_STATE_ENABLED),\ + $(addsuffix |$($(package)_DEFAULT_FEATURE_OWNER),\ + $(addsuffix |$($(package)_VERSION),\ + $(addsuffix |$($(package)_REPOSITORY), $(package))))))" + export sonic_local_packages="$(foreach package, $(SONIC_PACKAGES_LOCAL),\ + $(addsuffix |$($(package)_DEFAULT_FEATURE_STATE_ENABLED),\ + $(addsuffix |$($(package)_DEFAULT_FEATURE_OWNER) \ + $(addsuffix |$($(package)_PATH)), $(package))))" export sonic_py_common_py2_wheel_path="$(addprefix $(PYTHON_WHEELS_PATH)/,$(SONIC_PY_COMMON_PY2))" export sonic_py_common_py3_wheel_path="$(addprefix $(PYTHON_WHEELS_PATH)/,$(SONIC_PY_COMMON_PY3))" export config_engine_py2_wheel_path="$(addprefix $(PYTHON_WHEELS_PATH)/,$(SONIC_CONFIG_ENGINE_PY2))" From efc69f5deaa042b6a0670f79fd2a609b21cdd2e3 Mon Sep 17 00:00:00 2001 From: Stepan Blyshchak Date: Wed, 20 Jan 2021 18:57:18 +0200 Subject: [PATCH 2/9] [slave.mk] align lines in dependencies Signed-off-by: Stepan Blyshchak --- slave.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/slave.mk b/slave.mk index b57a44719a0..86a3220585c 100644 --- a/slave.mk +++ b/slave.mk @@ -863,7 +863,7 @@ $(addprefix $(TARGET_PATH)/, $(SONIC_INSTALLERS)) : $(TARGET_PATH)/% : \ $(SONIC_UTILITIES_DATA) \ $(SONIC_HOST_SERVICES_DATA)) \ $$(addprefix $(TARGET_PATH)/,$$($$*_DOCKERS)) \ - $$(addprefix $(TARGET_PATH)/,$$(SONIC_PACKAGES_LOCAL)) \ + $$(addprefix $(TARGET_PATH)/,$$(SONIC_PACKAGES_LOCAL)) \ $$(addprefix $(FILES_PATH)/,$$($$*_FILES)) \ $(if $(findstring y,$(ENABLE_ZTP)),$(addprefix $(IMAGE_DISTRO_DEBS_PATH)/,$(SONIC_ZTP))) \ $(if $(findstring y,$(INCLUDE_HOST_SERVICE)),$(addprefix $(IMAGE_DISTRO_DEBS_PATH)/,$(SONIC_HOST_SERVICE))) \ From e966fefb8ea82b1cd189dbd34eedd556f4d44f37 Mon Sep 17 00:00:00 2001 From: Stepan Blyshchak Date: Thu, 21 Jan 2021 17:49:35 +0200 Subject: [PATCH 3/9] [slave.mk] fix missing comma Signed-off-by: Stepan Blyshchak --- slave.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/slave.mk b/slave.mk index 86a3220585c..f69a8f6dae3 100644 --- a/slave.mk +++ b/slave.mk @@ -924,7 +924,7 @@ $(addprefix $(TARGET_PATH)/, $(SONIC_INSTALLERS)) : $(TARGET_PATH)/% : \ $(addsuffix |$($(package)_REPOSITORY), $(package))))))" export sonic_local_packages="$(foreach package, $(SONIC_PACKAGES_LOCAL),\ $(addsuffix |$($(package)_DEFAULT_FEATURE_STATE_ENABLED),\ - $(addsuffix |$($(package)_DEFAULT_FEATURE_OWNER) \ + $(addsuffix |$($(package)_DEFAULT_FEATURE_OWNER), \ $(addsuffix |$($(package)_PATH)), $(package))))" export sonic_py_common_py2_wheel_path="$(addprefix $(PYTHON_WHEELS_PATH)/,$(SONIC_PY_COMMON_PY2))" export sonic_py_common_py3_wheel_path="$(addprefix $(PYTHON_WHEELS_PATH)/,$(SONIC_PY_COMMON_PY3))" From d79293e7696833e207b1a510288eb92adba49901 Mon Sep 17 00:00:00 2001 From: Stepan Blyshchak Date: Thu, 21 Jan 2021 17:52:05 +0200 Subject: [PATCH 4/9] [slave.mk] fix missing comma Signed-off-by: Stepan Blyshchak --- slave.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/slave.mk b/slave.mk index f69a8f6dae3..45fbeeb4469 100644 --- a/slave.mk +++ b/slave.mk @@ -924,7 +924,7 @@ $(addprefix $(TARGET_PATH)/, $(SONIC_INSTALLERS)) : $(TARGET_PATH)/% : \ $(addsuffix |$($(package)_REPOSITORY), $(package))))))" export sonic_local_packages="$(foreach package, $(SONIC_PACKAGES_LOCAL),\ $(addsuffix |$($(package)_DEFAULT_FEATURE_STATE_ENABLED),\ - $(addsuffix |$($(package)_DEFAULT_FEATURE_OWNER), \ + $(addsuffix |$($(package)_DEFAULT_FEATURE_OWNER),\ $(addsuffix |$($(package)_PATH)), $(package))))" export sonic_py_common_py2_wheel_path="$(addprefix $(PYTHON_WHEELS_PATH)/,$(SONIC_PY_COMMON_PY2))" export sonic_py_common_py3_wheel_path="$(addprefix $(PYTHON_WHEELS_PATH)/,$(SONIC_PY_COMMON_PY3))" From a90f9b42823d8aec27a667e2a06ecb6c58bf947e Mon Sep 17 00:00:00 2001 From: Stepan Blyshchak Date: Thu, 21 Jan 2021 18:10:25 +0200 Subject: [PATCH 5/9] [slave.mk] fix missing comma Signed-off-by: Stepan Blyshchak --- slave.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/slave.mk b/slave.mk index 45fbeeb4469..72765837dc2 100644 --- a/slave.mk +++ b/slave.mk @@ -925,7 +925,7 @@ $(addprefix $(TARGET_PATH)/, $(SONIC_INSTALLERS)) : $(TARGET_PATH)/% : \ export sonic_local_packages="$(foreach package, $(SONIC_PACKAGES_LOCAL),\ $(addsuffix |$($(package)_DEFAULT_FEATURE_STATE_ENABLED),\ $(addsuffix |$($(package)_DEFAULT_FEATURE_OWNER),\ - $(addsuffix |$($(package)_PATH)), $(package))))" + $(addsuffix |$($(package)_PATH), $(package)))))" export sonic_py_common_py2_wheel_path="$(addprefix $(PYTHON_WHEELS_PATH)/,$(SONIC_PY_COMMON_PY2))" export sonic_py_common_py3_wheel_path="$(addprefix $(PYTHON_WHEELS_PATH)/,$(SONIC_PY_COMMON_PY3))" export config_engine_py2_wheel_path="$(addprefix $(PYTHON_WHEELS_PATH)/,$(SONIC_CONFIG_ENGINE_PY2))" From 74cd8759f3da2441194d7456cd164608d900f342 Mon Sep 17 00:00:00 2001 From: Stepan Blyshchak Date: Thu, 21 Jan 2021 18:43:29 +0200 Subject: [PATCH 6/9] [sonic_debian_extension.j2] use --enable instead of --enabled Signed-off-by: Stepan Blyshchak --- files/build_templates/sonic_debian_extension.j2 | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/files/build_templates/sonic_debian_extension.j2 b/files/build_templates/sonic_debian_extension.j2 index 8395bf9beed..f56f2549732 100644 --- a/files/build_templates/sonic_debian_extension.j2 +++ b/files/build_templates/sonic_debian_extension.j2 @@ -393,7 +393,7 @@ sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install watchd {% if include_kubernetes == "y" %} # Install remote Container mgmt package -# Required even if include_kubernetes != y, as it contains the +# Required even if include_kubernetes != y, as it contains the # the container wrapper for docker start/stop/wait commands. # SONIC_CTRMGMT_WHEEL_NAME=$(basename {{sonic_ctrmgmt_py3_wheel_path}}) @@ -417,7 +417,7 @@ sudo LANG=C chroot $FILESYSTEM_ROOT systemctl enable ctrmgrd.service # kubelet service is controlled by ctrmgrd daemon. sudo LANG=C chroot $FILESYSTEM_ROOT systemctl disable kubelet.service {% else %} -# container script for docker commands, which is required as +# container script for docker commands, which is required as # all docker commands are replaced with container commands. # So just copy that file only. # @@ -611,7 +611,7 @@ echo "docker images pull complete" {% set args = args + ["--default-owner", default_owner] -%} {% endif -%} {% if enabled == "y" -%} -{% set args = args + ["--enabled"] -%} +{% set args = args + ["--enable"] -%} {% endif -%} {{ args | join(' ') }} {% endmacro -%} @@ -619,12 +619,12 @@ echo "docker images pull complete" {% for package in sonic_packages.strip().split() -%} {% set name, repo, version, default_owner, enabled = package.split('|') -%} sudo LANG=C chroot $FILESYSTEM_ROOT sonic-package-manager repository add {{ name }} {{ repo }} -sudo LANG=C chroot $FILESYSTEM_ROOT sonic-package-manager install {{ name }}=={{ version }} {{ get_install_options(default_owner, enabled) }} +sudo LANG=C chroot $FILESYSTEM_ROOT sonic-package-manager install {{ name }}=={{ version }} {{ get_install_options(default_owner, enabled) }} {% endfor -%} {% for package in sonic_local_packages.strip().split() -%} {% set name, path, default_owner, enabled = package.split('|') -%} -sudo LANG=C chroot $FILESYSTEM_ROOT sonic-package-manager install {{ path }} {{ get_install_options(default_owner, enabled) }} +sudo LANG=C chroot $FILESYSTEM_ROOT sonic-package-manager install {{ path }} {{ get_install_options(default_owner, enabled) }} {% endfor -%} sudo umount $FILESYSTEM_ROOT/target From 2e5f097f0e3f1bd0c1e71e135081e5f2f41b40aa Mon Sep 17 00:00:00 2001 From: Stepan Blyshchak Date: Thu, 21 Jan 2021 19:11:55 +0200 Subject: [PATCH 7/9] [slave.mk] fix target path Signed-off-by: Stepan Blyshchak --- slave.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/slave.mk b/slave.mk index 72765837dc2..af1efe6987c 100644 --- a/slave.mk +++ b/slave.mk @@ -925,7 +925,7 @@ $(addprefix $(TARGET_PATH)/, $(SONIC_INSTALLERS)) : $(TARGET_PATH)/% : \ export sonic_local_packages="$(foreach package, $(SONIC_PACKAGES_LOCAL),\ $(addsuffix |$($(package)_DEFAULT_FEATURE_STATE_ENABLED),\ $(addsuffix |$($(package)_DEFAULT_FEATURE_OWNER),\ - $(addsuffix |$($(package)_PATH), $(package)))))" + $(addsuffix |$(addprefix $(TARGET_PATH)/, $(package)), $(package)))))" export sonic_py_common_py2_wheel_path="$(addprefix $(PYTHON_WHEELS_PATH)/,$(SONIC_PY_COMMON_PY2))" export sonic_py_common_py3_wheel_path="$(addprefix $(PYTHON_WHEELS_PATH)/,$(SONIC_PY_COMMON_PY3))" export config_engine_py2_wheel_path="$(addprefix $(PYTHON_WHEELS_PATH)/,$(SONIC_CONFIG_ENGINE_PY2))" From e1b2c29c51f445f5f4f9143033cd8d0ff6d543b1 Mon Sep 17 00:00:00 2001 From: Stepan Blyshchak Date: Thu, 21 Jan 2021 19:39:07 +0200 Subject: [PATCH 8/9] [docker-dhcp-relay] add cli to docker Signed-off-by: Stepan Blyshchak --- dockers/docker-dhcp-relay/Dockerfile.j2 | 1 + 1 file changed, 1 insertion(+) diff --git a/dockers/docker-dhcp-relay/Dockerfile.j2 b/dockers/docker-dhcp-relay/Dockerfile.j2 index d7de3016b6f..396cd6abeb2 100644 --- a/dockers/docker-dhcp-relay/Dockerfile.j2 +++ b/dockers/docker-dhcp-relay/Dockerfile.j2 @@ -34,6 +34,7 @@ COPY ["docker_init.sh", "start.sh", "/usr/bin/"] COPY ["docker-dhcp-relay.supervisord.conf.j2", "port-name-alias-map.txt.j2", "wait_for_intf.sh.j2", "/usr/share/sonic/templates/"] COPY ["files/supervisor-proc-exit-listener", "/usr/bin"] COPY ["critical_processes", "/etc/supervisor"] +COPY ["cli", "/"] LABEL com.azure.sonic.manifest="$manifest" From db7ef7ded216c8a3add399a65a6043615771b476 Mon Sep 17 00:00:00 2001 From: Stepan Blyshchak Date: Thu, 21 Jan 2021 19:46:52 +0200 Subject: [PATCH 9/9] [docker-dhcp-relay] add cli to docker Signed-off-by: Stepan Blyshchak --- dockers/docker-dhcp-relay/Dockerfile.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dockers/docker-dhcp-relay/Dockerfile.j2 b/dockers/docker-dhcp-relay/Dockerfile.j2 index 396cd6abeb2..c2b1e51f352 100644 --- a/dockers/docker-dhcp-relay/Dockerfile.j2 +++ b/dockers/docker-dhcp-relay/Dockerfile.j2 @@ -34,7 +34,7 @@ COPY ["docker_init.sh", "start.sh", "/usr/bin/"] COPY ["docker-dhcp-relay.supervisord.conf.j2", "port-name-alias-map.txt.j2", "wait_for_intf.sh.j2", "/usr/share/sonic/templates/"] COPY ["files/supervisor-proc-exit-listener", "/usr/bin"] COPY ["critical_processes", "/etc/supervisor"] -COPY ["cli", "/"] +COPY ["cli", "/cli/"] LABEL com.azure.sonic.manifest="$manifest"