From 68e11a4cd1eb6b029e224aebdda253d253d1d427 Mon Sep 17 00:00:00 2001 From: Azmy Ali Date: Wed, 23 Aug 2023 11:48:07 +0300 Subject: [PATCH] Expanding the manifest capabilities to include ports forwarding as well as docker network type configuration --- sonic_package_manager/manifest.py | 2 ++ sonic_package_manager/service_creator/creator.py | 7 +++++++ tests/sonic_package_manager/test_service_creator.py | 4 ++++ 3 files changed, 13 insertions(+) diff --git a/sonic_package_manager/manifest.py b/sonic_package_manager/manifest.py index 865db7ef5c..cbecf5dc92 100644 --- a/sonic_package_manager/manifest.py +++ b/sonic_package_manager/manifest.py @@ -213,6 +213,8 @@ def unmarshal(self, value): ManifestRoot('container', [ ManifestField('privileged', DefaultMarshaller(bool), False), ManifestArray('volumes', DefaultMarshaller(str)), + ManifestField('network', DefaultMarshaller(str), 'host'), + ManifestArray('ports', DefaultMarshaller(str)), ManifestArray('mounts', ManifestRoot('mounts', [ ManifestField('source', DefaultMarshaller(str)), ManifestField('target', DefaultMarshaller(str)), diff --git a/sonic_package_manager/service_creator/creator.py b/sonic_package_manager/service_creator/creator.py index 4b547b0578..a0ddbf39c6 100644 --- a/sonic_package_manager/service_creator/creator.py +++ b/sonic_package_manager/service_creator/creator.py @@ -231,6 +231,13 @@ def generate_container_mgmt(self, package: Package): run_opt.append('-t') + if container_spec['network']: + docker_network_type = container_spec['network'] + run_opt.append(f'--net={docker_network_type}') + + for port in container_spec['ports']: + run_opt.append(f'--publish {port}') + for volume in container_spec['volumes']: run_opt.append(f'-v {volume}') diff --git a/tests/sonic_package_manager/test_service_creator.py b/tests/sonic_package_manager/test_service_creator.py index 657e4aacdb..0e1c59c62d 100644 --- a/tests/sonic_package_manager/test_service_creator.py +++ b/tests/sonic_package_manager/test_service_creator.py @@ -43,6 +43,10 @@ def manifest(): }, 'container': { 'privileged': True, + 'network': 'bridge', + 'ports': [ + "8080:8080" + ], 'volumes': [ '/etc/sonic:/etc/sonic:ro' ]