Автовиявлення наповнювало inv.interfaces, але їх ніхто не опитував: на мапі були лінки й не було трафіку. Тепер сервер формує snmp.if-чек зі складу портів і штовхає його живій сесії як TaskDelta — без цього після кожного нового комутатора були б години порожніх графіків. Чек оновлюється, а не задвоюється: унікальний індекс core.checks включає md5(params). Склад портів порівнюється як множина, бо порядок ключів у jsonb не гарантований. Без SNMP-креденшела чек не створюється. Живий прогін знайшов помилку: OID у запиті йшов без провідної крапки, а pdu.Name повертається з нею — пошук у мапі мовчки не знаходив нічого, і чек виглядав як "жоден інтерфейс не відповів". Канонізація тепер у snmpx.Normalize, застосована з обох боків. Перевірено наскрізь: виявлення -> автостворення чека -> справжні HC-лічильники -> ts.if_counters, без жодного ручного кроку. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
19 lines
596 B
Modula-2
19 lines
596 B
Modula-2
module github.com/netpulse/netpulse/test/contract
|
||
|
||
go 1.25.0
|
||
|
||
require (
|
||
github.com/netpulse/netpulse/gen/go v0.0.0
|
||
google.golang.org/grpc v1.83.0
|
||
google.golang.org/protobuf v1.36.12
|
||
)
|
||
|
||
require (
|
||
golang.org/x/net v0.55.0 // indirect
|
||
golang.org/x/sys v0.45.0 // indirect
|
||
golang.org/x/text v0.37.0 // indirect
|
||
google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // indirect
|
||
)
|
||
|
||
// Згенерований код лежить у репозиторії поруч, а не тягнеться з проксі.
|
||
replace github.com/netpulse/netpulse/gen/go => ../../gen/go
|