NetXMS Support Forum

Russian Support => Идеи и предложения по функциональности NetXMS => Topic started by: foxpdll on February 25, 2015, 02:11:21 PM

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

И подскажите плиз, копался в коде - не могу понять.
При добавлении новых интерфейсов в устройство своим ндд драйвером наблюдаю то что
netxms пытается взять статус интерфейсов по индексу из ифмиба.
а в моем случае статусы лежат в совершенно другом месте.
Как быть? хочется полноценную проверку статуса. Если бы в ндд была функция проверки статусов интерфейсов то можно было бы это реализовать.
Title: Re: Драйвер для Qtech OLT
Post by: foxpdll on February 25, 2015, 04:37:10 PM
На сколько я понимаю, проверка статуса интерфейса проводиться в
/src/server/core/snmp.cpp
если я допишу свою логику обработки моих интерфейсов у меня все заработает.
но это частное решение.
По моему логичней было бы проверять статус интерфейса в том же ндд что и породил его.
Title: Re: Драйвер для Qtech OLT
Post by: Alex Kirhenshtein on February 25, 2015, 05:11:08 PM
Добрый день.

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

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

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

И подскажите плиз, копался в коде - не могу понять.
При добавлении новых интерфейсов в устройство своим ндд драйвером наблюдаю то что
netxms пытается взять статус интерфейсов по индексу из ифмиба.
а в моем случае статусы лежат в совершенно другом месте.
Как быть? хочется полноценную проверку статуса. Если бы в ндд была функция проверки статусов интерфейсов то можно было бы это реализовать.
Title: Re: Драйвер для Qtech OLT
Post by: 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. Можно его переопределить и реализовать собственную логику опросов интерфейсов.
Title: Re: Драйвер для Qtech OLT
Post by: foxpdll on February 26, 2015, 04:20:39 PM
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. Можно его переопределить и реализовать собственную логику опросов интерфейсов.
Я вас практически люблю.
я только сделал патч
сейчас создам этот как его... фьючер реквест
Title: Re: Драйвер для Qtech OLT
Post by: foxpdll on April 10, 2015, 01:47:56 PM
Огромное спасибо.
Прошу меня простить, но не могли бы Вы добавить еще чуть чуть изменений.
в файле 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);


Буду крайне признателен
Title: Re: Драйвер для Qtech OLT
Post by: Victor Kirhenshtein on April 10, 2015, 04:14:09 PM
Добавил изменение в драйвере и Object Tools в текущий development branch.
Title: Re: Драйвер для Qtech OLT
Post by: foxpdll on April 10, 2015, 05:46:47 PM
СПАСИБО!!!
Title: Re: Драйвер для Qtech OLT
Post by: foxpdll on April 10, 2015, 06:35:21 PM
Простите. Наблюдаю не совсем понятное поведение.
Если интерфейс в состоянии DOWN то у него в таблице interfaces перетираются поля Alias и Description
Title: Re: Драйвер для Qtech OLT
Post by: Victor Kirhenshtein on April 13, 2015, 09:58:47 AM
А что он там показывает? Пустоту? Можно скриншоты в UP и v DOWN для одного и того-же интерфейса?