Add capabilities support to Docker support

This commit is contained in:
Olivier 'reivilibre' 2021-07-15 00:36:57 +01:00
parent 51067aeaa0
commit 9a4fe3f42d
2 changed files with 11 additions and 1 deletions

View File

@ -25,6 +25,8 @@ class DockerContainer(Recipe):
self.ports = check_type(args.get("ports", dict()), dict) self.ports = check_type(args.get("ports", dict()), dict)
self.environment = check_type(args.get("environment", dict()), dict) self.environment = check_type(args.get("environment", dict()), dict)
self.restart_policy = check_type(args.get("restart_policy", "on-failure"), str) self.restart_policy = check_type(args.get("restart_policy", "on-failure"), str)
self.cap_add = check_type(args.get("cap_add", list()), list)
self.cap_drop = check_type(args.get("cap_drop", list()), list)
def prepare(self, preparation: Preparation, head: Head) -> None: def prepare(self, preparation: Preparation, head: Head) -> None:
super().prepare(preparation, head) super().prepare(preparation, head)
@ -47,6 +49,8 @@ class DockerContainer(Recipe):
self.volumes, self.volumes,
{k: str(v) for k, v in self.environment.items()}, {k: str(v) for k, v in self.environment.items()},
self.restart_policy, self.restart_policy,
self.cap_add,
self.cap_drop,
), ),
DockerContainerRun.Result, DockerContainerRun.Result,
) )

View File

@ -1,5 +1,5 @@
from enum import Enum from enum import Enum
from typing import Dict, Optional, Tuple, Union from typing import Dict, List, Optional, Tuple, Union
import attr import attr
@ -84,6 +84,10 @@ class DockerContainerRun(Utensil):
environment: Dict[str, str] environment: Dict[str, str]
# Restart policy # Restart policy
restart_policy: str restart_policy: str
# Capabilities to add
cap_add: List[str]
# Capabilities to drop
cap_drop: List[str]
@attr.s(auto_attribs=True) @attr.s(auto_attribs=True)
class Result: class Result:
@ -105,6 +109,8 @@ class DockerContainerRun(Utensil):
volumes=self.volumes, volumes=self.volumes,
environment=self.environment, environment=self.environment,
restart_policy=restart_policy, restart_policy=restart_policy,
cap_add=self.cap_add,
cap_drop=self.cap_drop,
) )
await channel.send(DockerContainerRun.Result(name=container.name)) await channel.send(DockerContainerRun.Result(name=container.name))