Skip to content

Commit

Permalink
Expanding the manifest capabilities to include
Browse files Browse the repository at this point in the history
ports forwarding as well as docker network type
configuration
  • Loading branch information
azmyali98 committed Aug 29, 2023
1 parent 7f8779d commit 34eea1c
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 0 deletions.
2 changes: 2 additions & 0 deletions sonic_package_manager/manifest.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)),
Expand Down
13 changes: 13 additions & 0 deletions sonic_package_manager/service_creator/creator.py
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,7 @@ def generate_container_mgmt(self, package: Package):
image_id = package.image_id
name = package.manifest['service']['name']
container_spec = package.manifest['container']
is_asic_service = package.manifest['service']['asic-service']
script_path = os.path.join(DOCKER_CTL_SCRIPT_LOCATION, f'{name}.sh')
script_template = get_tmpl_path(DOCKER_CTL_SCRIPT_TEMPLATE)
run_opt = []
Expand All @@ -231,6 +232,18 @@ def generate_container_mgmt(self, package: Package):

run_opt.append('-t')

if not is_asic_service:
if container_spec['network']:
docker_network_type = container_spec['network']
run_opt.append(f'--net={docker_network_type}')

if is_asic_service:
if container_spec['network']:
raise ServiceCreatorError(f"Invalid Configuration, asic-service must not contain 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}')

Expand Down
15 changes: 15 additions & 0 deletions tests/sonic_package_manager/test_service_creator.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,10 @@ def manifest():
},
'container': {
'privileged': True,
'network': 'bridge',
'ports': [
"8080:8080"
],
'volumes': [
'/etc/sonic:/etc/sonic:ro'
]
Expand Down Expand Up @@ -114,6 +118,17 @@ def read_file(name):
assert read_file('test_reconcile') == 'test-process test-process-3'


def test_service_creator_asic_service_network_type_err(sonic_fs, manifest, service_creator, package_manager):
new_manifest = copy.deepcopy(manifest)
new_manifest['service']['asic-service'] = True
entry = PackageEntry('test', 'azure/sonic-test')
package = Package(entry, Metadata(new_manifest))
installed_packages = package_manager._get_installed_packages_and(package)

with pytest.raises(ServiceCreatorError) as e:
service_creator.create(package)


def test_service_creator_with_timer_unit(sonic_fs, manifest, service_creator):
entry = PackageEntry('test', 'azure/sonic-test')
package = Package(entry, Metadata(manifest))
Expand Down

0 comments on commit 34eea1c

Please sign in to comment.