fix: pass SSH keys and config profile to startInstance in create form

The create-session-form was calling startInstance() without passing the
selected config profile and SSH keys. This caused the backend to receive
ssh_key_ids=[] and clear the keys that were stored during createInstance.
The .ssh directory was never mounted because instance.ssh_key_ids was
wiped during the start call.

Also includes minor formatting cleanup on the data migration.

Quality gates: pytest (18 passed)
This commit is contained in:
Alex Blank
2026-05-29 16:14:40 +02:00
parent 23769e6ad4
commit 1e2c5a68cf
2 changed files with 29 additions and 13 deletions
@@ -25,14 +25,18 @@ def upgrade() -> None:
# Get the pi-agent manifest
result = conn.execute(
sa.text("SELECT id, manifest FROM tool_definition_manifests WHERE name = 'pi-agent'")
sa.text(
"SELECT id, manifest FROM tool_definition_manifests WHERE name = 'pi-agent'"
)
)
row = result.fetchone()
if not row:
return
manifest_id, manifest_json = row
manifest = manifest_json if isinstance(manifest_json, dict) else json.loads(manifest_json)
manifest = (
manifest_json if isinstance(manifest_json, dict) else json.loads(manifest_json)
)
mounts = manifest.get("mounts", [])
original_count = len(mounts)
@@ -58,14 +62,18 @@ def downgrade() -> None:
conn = op.get_bind()
result = conn.execute(
sa.text("SELECT id, manifest FROM tool_definition_manifests WHERE name = 'pi-agent'")
sa.text(
"SELECT id, manifest FROM tool_definition_manifests WHERE name = 'pi-agent'"
)
)
row = result.fetchone()
if not row:
return
manifest_id, manifest_json = row
manifest = manifest_json if isinstance(manifest_json, dict) else json.loads(manifest_json)
manifest = (
manifest_json if isinstance(manifest_json, dict) else json.loads(manifest_json)
)
mounts = manifest.get("mounts", [])
@@ -74,14 +82,16 @@ def downgrade() -> None:
return
# Add the ssh_keys mount back
mounts.append({
"name": "ssh_keys",
"target": "/home/user/.ssh",
"source_type": "ssh_key",
"mode": "0700",
"file_mode": "0600",
"readonly": True,
})
mounts.append(
{
"name": "ssh_keys",
"target": "/home/user/.ssh",
"source_type": "ssh_key",
"mode": "0700",
"file_mode": "0600",
"readonly": True,
}
)
manifest["mounts"] = mounts
conn.execute(