Выполнение команд с помощью Обработчика управления устройством
Материал из BiTel WiKi
Amir (Обсуждение | вклад) (Новая страница: «В контекстном меню дерева устройств доступен пункт выполнить команду. Данный пункт вызыв…») |
Amir (Обсуждение | вклад) |
||
| Строка 1: | Строка 1: | ||
В контекстном меню дерева устройств доступен пункт выполнить команду. Данный пункт вызывает метод у Обработчика управления устройством (DeviceManager), указанном в типе устройства. | В контекстном меню дерева устройств доступен пункт выполнить команду. Данный пункт вызывает метод у Обработчика управления устройством (DeviceManager), указанном в типе устройства. | ||
| - | Таким методом, например, является uptime() из SnmpDeviceManager, хотя нужен он не для ручного вызова из контекстного меню. | + | Таким методом, например, является uptime() из ru.bitel.bgbilling.modules.inet.dyn.device.snmp.SnmpDeviceManager, хотя нужен он не для ручного вызова из контекстного меню. |
@Override | @Override | ||
Версия 09:54, 12 сентября 2014
В контекстном меню дерева устройств доступен пункт выполнить команду. Данный пункт вызывает метод у Обработчика управления устройством (DeviceManager), указанном в типе устройства. Таким методом, например, является uptime() из ru.bitel.bgbilling.modules.inet.dyn.device.snmp.SnmpDeviceManager, хотя нужен он не для ручного вызова из контекстного меню.
@Override
public Object uptime()
throws Exception
{
return snmpClient.get( uptimeOid, -1, Long.class );
}
Команды-методы можно именовать с помощью аннотации ru.bitel.oss.systems.inventory.resource.server.DeviceManagerMethod, в этом случае они будут сразу доступны в контекстном меню:
import ru.bitel.oss.systems.inventory.resource.server.DeviceManagerMethod;
@DeviceManagerMethod(title = "Перезагрузить")
public Object reboot()
throws Exception
{
return return snmpClient.set( new AsnObjectId( "1.2.3.4.5.6.7.8.9" ).getOid(), -1, Long.class );
}
После выполнения можно вернуть строку определенного вида, чтобы клиент биллинга попытался открыть браузер с указанным URL:
@DeviceManagerMethod(title = "Статус")
public Object status()
throws Exception
{
return "browse:http://google.ru";
}
Или telnet:
@DeviceManagerMethod(title = "Telnet")
public Object telnet()
throws Exception
{
return "telnet:google.ru 80";
}
Как аргумент в методе можно указать ru.bitel.bgbilling.modules.inet.access.manage.event.InetDeviceManageEvent, чтобы узнать, например, userId пользователя, выполняющего команду:
import ru.bitel.bgbilling.modules.inet.access.manage.event.InetDeviceManageEvent;
@DeviceManagerMethod(title = "Telnet")
public Object telnet2( InetDeviceManageEvent e )
throws Exception
{
logger.info( e.getUserId() );
return "telnet:google.ru 80";
}
