соннет вайб 1
This commit is contained in:
parent
23ee10a28e
commit
6c081d5580
1 changed files with 15 additions and 6 deletions
|
|
@ -488,13 +488,22 @@ async def discover_via_ssh(
|
||||||
return result
|
return result
|
||||||
|
|
||||||
# Step 2: SSH into each rack, parse config, upsert devices
|
# Step 2: SSH into each rack, parse config, upsert devices
|
||||||
# Build mapping of external_id -> Rack ID for device assignment
|
# Build mapping of external_id -> Rack.id for device assignment.
|
||||||
rack_id_mapping = {}
|
# If a rack with that name doesn't exist yet in our racks table, create it now.
|
||||||
from app.models.rack import Rack
|
from app.models.rack import Rack
|
||||||
all_racks = (await db.execute(select(Rack).where(Rack.object_id == obj.id))).scalars().all()
|
rack_id_mapping: dict[str, int] = {}
|
||||||
for rack in all_racks:
|
for ext_id, _, _ in rack_hosts:
|
||||||
if rack.external_id:
|
existing_rack_row = (await db.execute(
|
||||||
rack_id_mapping[rack.external_id] = rack.id
|
select(Rack).where(Rack.object_id == obj.id, Rack.name == ext_id)
|
||||||
|
)).scalar_one_or_none()
|
||||||
|
if existing_rack_row:
|
||||||
|
rack_id_mapping[ext_id] = existing_rack_row.id
|
||||||
|
else:
|
||||||
|
new_rack = Rack(object_id=obj.id, name=ext_id)
|
||||||
|
db.add(new_rack)
|
||||||
|
await db.flush() # get the new PK
|
||||||
|
rack_id_mapping[ext_id] = new_rack.id
|
||||||
|
logger.info(f"[ssh_discovery] Created rack entry '{ext_id}' (id={new_rack.id})")
|
||||||
|
|
||||||
for external_id, rack_host, rack_name in rack_hosts:
|
for external_id, rack_host, rack_name in rack_hosts:
|
||||||
# Resolve config_path override from the embedded device's connection_params
|
# Resolve config_path override from the embedded device's connection_params
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue