12345678910111213141516171819202122232425262728293031 |
- try:
- from .error import RenderError
- from .validations import valid_fs_path_or_raise, allowed_device_or_raise, valid_cgroup_perm_or_raise
- except ImportError:
- from error import RenderError
- from validations import valid_fs_path_or_raise, allowed_device_or_raise, valid_cgroup_perm_or_raise
- class Device:
- def __init__(self, host_device: str, container_device: str, cgroup_perm: str = "", allow_disallowed=False):
- hd = valid_fs_path_or_raise(host_device.rstrip("/"))
- cd = valid_fs_path_or_raise(container_device.rstrip("/"))
- if not hd or not cd:
- raise RenderError(
- "Expected [host_device] and [container_device] to be set. "
- f"Got host_device [{host_device}] and container_device [{container_device}]"
- )
- cgroup_perm = valid_cgroup_perm_or_raise(cgroup_perm)
- if not allow_disallowed:
- hd = allowed_device_or_raise(hd)
- self.cgroup_perm: str = cgroup_perm
- self.host_device: str = hd
- self.container_device: str = cd
- def render(self):
- result = f"{self.host_device}:{self.container_device}"
- if self.cgroup_perm:
- result += f":{self.cgroup_perm}"
- return result
|