Выполнение команд с помощью Обработчика управления устройством

Материал из BiTel WiKi

Версия от 09:53, 12 сентября 2014; Amir (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

В контекстном меню дерева устройств доступен пункт выполнить команду. Данный пункт вызывает метод у Обработчика управления устройством (DeviceManager), указанном в типе устройства. Таким методом, например, является uptime() из 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";
	}
Личные инструменты