From 35e710f9e435e3b7ad7402a1697baee8a695f621 Mon Sep 17 00:00:00 2001 From: uccuz Date: Tue, 7 Jun 2022 00:42:30 +0800 Subject: [PATCH] chore: implement device parse --- compose_viz/parser.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/compose_viz/parser.py b/compose_viz/parser.py index 6f296d4..c67186c 100644 --- a/compose_viz/parser.py +++ b/compose_viz/parser.py @@ -5,6 +5,7 @@ from pydantic import ValidationError import compose_viz.spec.compose_spec as spec from compose_viz.models.compose import Compose, Service +from compose_viz.models.device import Device from compose_viz.models.extends import Extends from compose_viz.models.port import Port, Protocol from compose_viz.models.volume import Volume, VolumeType @@ -202,6 +203,24 @@ class Parser: if type(service_data.profiles) is spec.ListOfStrings: profiles = service_data.profiles.__root__ + devices: List[Device] = [] + if service_data.devices is not None: + for device_data in service_data.devices: + if type(device_data) is str: + assert ":" in device_data, "Invalid volume input, aborting." + + spilt_data = device_data.split(":") + if len(spilt_data) == 2: + devices.append(Device(host_path=spilt_data[0], container_path=spilt_data[1])) + elif len(spilt_data) == 3: + devices.append( + Device( + host_path=spilt_data[0], + container_path=spilt_data[1], + cgroup_permissions=spilt_data[2], + ) + ) + services.append( Service( name=service_name, @@ -217,6 +236,7 @@ class Parser: env_file=env_file, expose=expose, profiles=profiles, + devices=devices, ) )