Драйвер для Qtech OLT

Started by foxpdll, February 25, 2015, 02:11:21 PM

Previous topic - Next topic

foxpdll

Доброе время суток.
Вынужден использовать крайне редкое и неадекватное железо от Qtech.
Родной поддержки нет. Некоторое время жил на Дьюде от микротика. Но перерос его.
Пришел на netxms. Написал свой драйвер для вышеуказанного железа.
Подскажите плиз кому и куда сдать исходник, чтобы добавили его в сырцы?
И не будет ли великой наглостью такая просьба?

И подскажите плиз, копался в коде - не могу понять.
При добавлении новых интерфейсов в устройство своим ндд драйвером наблюдаю то что
netxms пытается взять статус интерфейсов по индексу из ифмиба.
а в моем случае статусы лежат в совершенно другом месте.
Как быть? хочется полноценную проверку статуса. Если бы в ндд была функция проверки статусов интерфейсов то можно было бы это реализовать.

foxpdll

На сколько я понимаю, проверка статуса интерфейса проводиться в
/src/server/core/snmp.cpp
если я допишу свою логику обработки моих интерфейсов у меня все заработает.
но это частное решение.
По моему логичней было бы проверять статус интерфейса в том же ндд что и породил его.

Alex Kirhenshtein

Добрый день.

Мы с радостью примем патч и включим в основное дерево, патч должен быть под MIT лицензией. Сделайте пожалуйста feature request в багтрекере: https://dev.raden.solutions/projects/netxms/issues

Да, правильным решением будет добавить еще одни метод в драйвер, мы это сделаем в ближайшее время.

Quote from: foxpdll on February 25, 2015, 02:11:21 PM
Доброе время суток.
Вынужден использовать крайне редкое и неадекватное железо от Qtech.
Родной поддержки нет. Некоторое время жил на Дьюде от микротика. Но перерос его.
Пришел на netxms. Написал свой драйвер для вышеуказанного железа.
Подскажите плиз кому и куда сдать исходник, чтобы добавили его в сырцы?
И не будет ли великой наглостью такая просьба?

И подскажите плиз, копался в коде - не могу понять.
При добавлении новых интерфейсов в устройство своим ндд драйвером наблюдаю то что
netxms пытается взять статус интерфейсов по индексу из ифмиба.
а в моем случае статусы лежат в совершенно другом месте.
Как быть? хочется полноценную проверку статуса. Если бы в ндд была функция проверки статусов интерфейсов то можно было бы это реализовать.

Victor Kirhenshtein

Я добавил метод

virtual void getInterfaceState(SNMP_Transport *snmp, StringMap *attributes, DriverData *driverData, UINT32 ifIndex, InterfaceAdminState *adminState, InterfaceOperState *operState);

в класс NetworkDeviceDriver. Можно его переопределить и реализовать собственную логику опросов интерфейсов.

foxpdll

Quote from: Victor Kirhenshtein on February 25, 2015, 11:48:06 PM
Я добавил метод

virtual void getInterfaceState(SNMP_Transport *snmp, StringMap *attributes, DriverData *driverData, UINT32 ifIndex, InterfaceAdminState *adminState, InterfaceOperState *operState);

в класс NetworkDeviceDriver. Можно его переопределить и реализовать собственную логику опросов интерфейсов.
Я вас практически люблю.
я только сделал патч
сейчас создам этот как его... фьючер реквест

foxpdll

#5
Огромное спасибо.
Прошу меня простить, но не могли бы Вы добавить еще чуть чуть изменений.
в файле qtech-olt.cpp в 91 строке заменить строку
           oid[15] = iface->index;
на строку             
           oid[15] = iface->index - info->slot * 1000;


и принять следующий sql
если конечно это возможно

INSERT INTO object_tools (tool_id,tool_name,tool_type,tool_data,description,flags,tool_filter)
VALUES (10001,'QtechOLTsONT',2,'','Show ONTs on PON ports',5,'<objectToolFilter>
   <toolOS></toolOS>
   <toolTemplate></toolTemplate>
   <snmpOid>.1.3.6.1.4.1.27514.1.10.4.1</snmpOid>
</objectToolFilter>');
INSERT INTO object_tools_table_columns (tool_id,col_number,col_name,col_oid,col_format,col_substr)
VALUES (10001,0,'Num','.1.3.6.1.4.1.27514.1.11.4.1.1.1',1,1);
INSERT INTO object_tools_table_columns (tool_id,col_number,col_name,col_oid,col_format,col_substr)
VALUES (10001,1,'SN','.1.3.6.1.4.1.27514.1.11.4.1.1.2',0,1);
INSERT INTO object_tools_table_columns (tool_id,col_number,col_name,col_oid,col_format,col_substr)
VALUES (10001,2,'FW','.1.3.6.1.4.1.27514.1.11.4.1.1.12',0,1);
INSERT INTO object_tools_table_columns (tool_id,col_number,col_name,col_oid,col_format,col_substr)
VALUES (10001,3,'Description','.1.3.6.1.4.1.27514.1.11.4.1.1.13',0,1);
INSERT INTO object_tools_table_columns (tool_id,col_number,col_name,col_oid,col_format,col_substr)
VALUES (10001,4,'Uptime','.1.3.6.1.4.1.27514.1.11.4.1.1.19',0,1);
INSERT INTO object_tools_table_columns (tool_id,col_number,col_name,col_oid,col_format,col_substr)
VALUES (10001,5,'Distance','.1.3.6.1.4.1.27514.1.11.4.1.1.32',0,1);
INSERT INTO object_tools_table_columns (tool_id,col_number,col_name,col_oid,col_format,col_substr)
VALUES (10001,6,'RSSI','.1.3.6.1.4.1.27514.1.11.4.1.1.22',0,1);
INSERT INTO object_tools_table_columns (tool_id,col_number,col_name,col_oid,col_format,col_substr)
VALUES (10001,7,'Temp','.1.3.6.1.4.1.27514.1.11.4.1.1.24',0,1);
INSERT INTO object_tools_table_columns (tool_id,col_number,col_name,col_oid,col_format,col_substr)
VALUES (10001,8,'Status','.1.3.6.1.4.1.27514.1.11.4.1.1.3',0,1);
INSERT INTO object_tools (tool_id,tool_name,tool_type,tool_data,description,flags,tool_filter)
VALUES (10002,'QtechOLTsSFP',2,'','Show GPON SFP modules in PON ports',5,'<objectToolFilter>
   <toolOS></toolOS>
   <toolTemplate></toolTemplate>
   <snmpOid>.1.3.6.1.4.1.27514.1.10.4.1</snmpOid>
</objectToolFilter>');
INSERT INTO object_tools_table_columns (tool_id,col_number,col_name,col_oid,col_format,col_substr)
VALUES (10002,0,'Num','.1.3.6.1.4.1.27514.1.11.3.1.1.1.0',5,1);
INSERT INTO object_tools_table_columns (tool_id,col_number,col_name,col_oid,col_format,col_substr)
VALUES (10002,1,'Presence','.1.3.6.1.4.1.27514.1.11.3.1.1.15.0',0,1);
INSERT INTO object_tools_table_columns (tool_id,col_number,col_name,col_oid,col_format,col_substr)
VALUES (10002,2,'SN','.1.3.6.1.4.1.27514.1.11.3.1.1.16.0',0,1);
INSERT INTO object_tools_table_columns (tool_id,col_number,col_name,col_oid,col_format,col_substr)
VALUES (10002,3,'Distance','.1.3.6.1.4.1.27514.1.11.3.1.1.14.0',0,1);
INSERT INTO object_tools_table_columns (tool_id,col_number,col_name,col_oid,col_format,col_substr)
VALUES (10002,4,'Manufacturer','.1.3.6.1.4.1.27514.1.11.3.1.1.18.0',0,1);
INSERT INTO object_tools_table_columns (tool_id,col_number,col_name,col_oid,col_format,col_substr)
VALUES (10002,5,'Temp','.1.3.6.1.4.1.27514.1.11.3.1.1.19.0',0,1);
INSERT INTO object_tools_table_columns (tool_id,col_number,col_name,col_oid,col_format,col_substr)
VALUES (10002,6,'ManufacturedDate','.1.3.6.1.4.1.27514.1.11.3.1.1.17.0',0,1);


Буду крайне признателен

Victor Kirhenshtein

Добавил изменение в драйвере и Object Tools в текущий development branch.

foxpdll


foxpdll

Простите. Наблюдаю не совсем понятное поведение.
Если интерфейс в состоянии DOWN то у него в таблице interfaces перетираются поля Alias и Description

Victor Kirhenshtein

А что он там показывает? Пустоту? Можно скриншоты в UP и v DOWN для одного и того-же интерфейса?