fix(host_agent): maintenance reads the swarm through the loaded Docker plugin, not by importing its models again (#5768)
Importing plugins.docker.models by path defines its tables a second time, because the plugin manager loaded them as _steward_plugin_docker.models. Inside the app that raises InvalidRequestError, not ImportError. The cadence integration test hit it, and #5767's _swarm (used when a job is planned) carried the same import. Both now go through maintenance.docker_models(). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -172,11 +172,9 @@ async def _back(session, host, job, reg, now: datetime) -> str | None:
|
||||
node = None
|
||||
services: list = []
|
||||
if job.node_id:
|
||||
try:
|
||||
from plugins.docker.models import DockerSwarmNode, DockerSwarmService
|
||||
except ImportError:
|
||||
DockerSwarmNode = DockerSwarmService = None
|
||||
if DockerSwarmNode is not None:
|
||||
models = maintenance.docker_models()
|
||||
if models is not None:
|
||||
DockerSwarmNode, DockerSwarmService = models.DockerSwarmNode, models.DockerSwarmService
|
||||
node = (await session.execute(select(DockerSwarmNode).where(
|
||||
DockerSwarmNode.node_id == job.node_id)
|
||||
.order_by(DockerSwarmNode.updated_at.desc()).limit(1))).scalar_one_or_none()
|
||||
|
||||
Reference in New Issue
Block a user