AddOkdNodeScore identified the just-discovered host by diffing "mappings before discovery" against "mappings after". On a re-run where the operator re-picks the same host (DiscoverHostForRoleScore's overwrite prompt does DELETE+INSERT, keeping the same host_id), the diff is empty and the score bails with "no new host mapped for this role". Add InventoryRepository::get_latest_host_for_role(role) that returns the highest-id row for a role, and use it after discovery. The auto-increment id makes this robust whether the host is brand new or a replacement, and drops the HashSet snapshot plumbing from the caller. SQLite impl mirrors get_role_mapping's shape (ORDER BY id DESC LIMIT 1, deserialize NetworkConfig JSON). .sqlx/ offline cache regenerated. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
33 lines
682 B
JSON
33 lines
682 B
JSON
{
|
|
"db_name": "SQLite",
|
|
"query": "SELECT host_id, installation_device, network_config FROM host_role_mapping WHERE role = ? ORDER BY id DESC LIMIT 1",
|
|
"describe": {
|
|
"columns": [
|
|
{
|
|
"name": "host_id",
|
|
"ordinal": 0,
|
|
"type_info": "Text"
|
|
},
|
|
{
|
|
"name": "installation_device",
|
|
"ordinal": 1,
|
|
"type_info": "Text"
|
|
},
|
|
{
|
|
"name": "network_config",
|
|
"ordinal": 2,
|
|
"type_info": "Text"
|
|
}
|
|
],
|
|
"parameters": {
|
|
"Right": 1
|
|
},
|
|
"nullable": [
|
|
false,
|
|
true,
|
|
true
|
|
]
|
|
},
|
|
"hash": "3caebb777887adea0fccc71108b235e49354086857390290753bc22d90d287a0"
|
|
}
|