[stable-2.14] ansible-test - Fix `--prime-containers` and `--explain` (#79581)

* Remove unused code.
* Fix explain errors.
* Fix `--prime-containers` with docker on cgroup v2.
(cherry picked from commit da3b1d3f50)

Co-authored-by: Matt Clay <matt@mystile.com>
pull/79605/head
Matt Clay 2 years ago
parent 578c96b854
commit 240156ff67

@ -255,8 +255,6 @@ class ContainerHostProperties:
audit_code: str audit_code: str
max_open_files: int max_open_files: int
loginuid: t.Optional[int] loginuid: t.Optional[int]
cgroups: tuple[CGroupEntry, ...]
mounts: tuple[MountEntry, ...]
cgroup_v1: SystemdControlGroupV1Status cgroup_v1: SystemdControlGroupV1Status
cgroup_v2: bool cgroup_v2: bool
@ -301,6 +299,16 @@ def detect_host_properties(args: CommonConfig) -> ContainerHostProperties:
cmd = ['sh', '-c', ' && echo "-" && '.join(multi_line_commands)] cmd = ['sh', '-c', ' && echo "-" && '.join(multi_line_commands)]
stdout = run_utility_container(args, f'ansible-test-probe-{args.session_name}', cmd, options)[0] stdout = run_utility_container(args, f'ansible-test-probe-{args.session_name}', cmd, options)[0]
if args.explain:
return ContainerHostProperties(
audit_code='???',
max_open_files=MAX_NUM_OPEN_FILES,
loginuid=LOGINUID_NOT_SET,
cgroup_v1=SystemdControlGroupV1Status.VALID,
cgroup_v2=False,
)
blocks = stdout.split('\n-\n') blocks = stdout.split('\n-\n')
values = blocks[0].split('\n') values = blocks[0].split('\n')
@ -383,8 +391,6 @@ def detect_host_properties(args: CommonConfig) -> ContainerHostProperties:
audit_code=audit_code, audit_code=audit_code,
max_open_files=hard_limit, max_open_files=hard_limit,
loginuid=loginuid, loginuid=loginuid,
cgroups=cgroups,
mounts=mounts,
cgroup_v1=cgroup_v1, cgroup_v1=cgroup_v1,
cgroup_v2=cgroup_v2, cgroup_v2=cgroup_v2,
) )
@ -768,6 +774,9 @@ class DockerInspect:
@property @property
def pid(self) -> int: def pid(self) -> int:
"""Return the PID of the init process.""" """Return the PID of the init process."""
if self.args.explain:
return 0
return self.state['Pid'] return self.state['Pid']
@property @property

@ -76,6 +76,7 @@ from .docker_util import (
run_utility_container, run_utility_container,
SystemdControlGroupV1Status, SystemdControlGroupV1Status,
LOGINUID_NOT_SET, LOGINUID_NOT_SET,
UTILITY_IMAGE,
) )
from .bootstrap import ( from .bootstrap import (
@ -455,6 +456,10 @@ class DockerProfile(ControllerHostProfile[DockerConfig], SshTargetHostProfile[Do
) )
if not container: if not container:
if self.args.prime_containers:
if init_config.command or init_probe:
docker_pull(self.args, UTILITY_IMAGE)
return return
self.container_name = container.name self.container_name = container.name

Loading…
Cancel
Save