forum.bitel.ru
http://forum.bitel.ru/

[6.2] MikrotikServiceActivator
http://forum.bitel.ru/viewtopic.php?f=44&t=11842
Страница 1 из 2

Автор:  borisk [ 03 авг 2016, 19:15 ]
Заголовок сообщения:  [6.2] MikrotikServiceActivator

Добрый день!

Пытаюсь скрестить bgb с Mikrotik. Вроде все уже тысячи раз проделывал, но как всегда грабли поджидают в неожиданном месте. Итак:
1) Wiki про скрещивание с Mikrotik прочитал
2) Пока балуюсь, пытаясь понять как работает активатор. Создал тип устройства с нужным SA, создал устройство. Прописал логин и пароль. Создал сервис. В конфигурации устройства прописал две простые команды:
Цитата:
sa.command.serv.enable=/queue/simple/add\n=name=test\n=target=1.1.1.1/32
sa.command.serv.disable=/queue/simple/remove\n=numbers=test


Все, больше ничего не прописывал. Теперь тупо "открыт/закрыт" сервис. Так вот - почему-то выполняется только первая команда. То есть:
Перевел сервис в "закрыт" - сервис состояние поменял и в логе видно, что команда выполнилась и ответ !done получен.
Теперь делаем "открыт" - и ничего не происходит. Сервис состояние не меняет, в логах тоже тишина. Перезапускаем access - и опа, наша команда выполнилась и сервис состояние поменял.

Помогите люди добрые? уже всю голову сломал что за глюк такой.

Цитата:
Информация о версии:

Клиент: вер. 6.2.834 / 02.08.2016 15:13:52
os: Windows XP; java: Java HotSpot(TM) Client VM, v.1.8.0_101
Сервер: вер. 6.2.1103 / 03.08.2016 14:58:59
os: FreeBSD; java: OpenJDK 64-Bit Server VM, v.1.8.0_92
ВНИМАНИЕ: Виртуальная машина OpenJDK 64-Bit Server VM не рекомендуется

bill: вер. 6.2.87 / 10.06.2016 13:28:18
card: вер. 6.2.39 / 26.05.2016 14:50:45
dialup: вер. 6.2.315 / 01.03.2016 00:17:59
email: вер. 6.2.176 / 01.03.2016 00:18:32
inet: вер. 6.2.679 / 03.08.2016 14:59:10
ipn: вер. 6.2.259 / 06.07.2016 19:29:33
mps: вер. 6.2.214 / 14.07.2016 16:43:28
npay: вер. 6.2.196 / 20.07.2016 09:56:08
phone: вер. 6.2.279 / 06.06.2016 12:50:07
reports: вер. 6.2.210 / 02.08.2016 15:17:51
ru.bitel.bgbilling.plugins.documents: вер. 6.2.171 / 11.07.2016 17:46:28
ru.bitel.bgbilling.plugins.organizer: вер. 6.2.71 / 01.03.2016 00:18:34
voiceip: вер. 6.2.190 / 03.03.2016 18:32:27
wellpay: вер. ?

Окружение:

Клиент:
os: Windows XP x86, 5.1
java: Java HotSpot(TM) Client VM, v.1.8.0_101
jre home: C:\Program Files\Java\jre1.8.0_101
default tz: 03.08.2016 18:15 YEKT +0500 (Asia/Yekaterinburg)
user tz: 03.08.2016 18:15 UZT +0500 (Asia/Tashkent)
locale: ru_RU
Сервер:
os: FreeBSD amd64, 10.2-RELEASE-p9
java: OpenJDK 64-Bit Server VM, v.1.8.0_92
jre home: /usr/local/openjdk8/jre
default tz: 03.08.2016 18:15 YEKT +0500 (Asia/Yekaterinburg)
db time: master: 03.08.2016 18:15 YEKT
db charset: connection: utf8(utf8_unicode_ci), database: utf8(utf8_general_ci)
locale: ru_RU
uptime: Started: 03.08.2016 17:47:41 Uptime: 0 d 00:27:47


Автор:  snark [ 04 авг 2016, 14:44 ]
Заголовок сообщения:  Re: [6.2] MikrotikServiceActivator

На просторах этих ваших интернетов столько срачей на предмет того, что работа МТ-шного API ведет себя по разному в зависимости от версии ROS и иногда бывает вообще не работоспособной, что проще забить на API и использовать telnet/SSH.
Что именно в API есть такого, что нельзя реализовать через telnet/SSH?

Автор:  ok-2004 [ 04 авг 2016, 15:44 ]
Заголовок сообщения:  Re: [6.2] MikrotikServiceActivator

хм, а у меня почему-то вот так уже не первый год работаетъ:
Код:
a.command.serv.create.1=/ip/firewall/address-list/add\n=address=$ip/29\n=list=ACCESS_LIST\n=comment=!!$servId!!\n=disabled=yes
sa.command.serv.create.2=/queue/simple/add\n=max-limit=0/100M\n=target=vlan$vlan\n=name=vlan$vlan\n=comment=vlan$vlan
sa.command.serv.enable=/ip/firewall/address-list/enable\n=numbers="!!$servId!!"
sa.command.serv.disable=/ip/firewall/address-list/disable\n=numbers="!!$servId!!"
sa.command.serv.cancel.1=/ip/firewall/address-list/remove\n=numbers="!!$servId!!"
sa.command.serv.cancel.2=/queue/simple/remove\n=numbers=vlan$vlan
sa.command.inetOption.1.enable=/queue/simple/set\n=max-limit=0/100M\n=numbers=vlan$vlan
sa.command.inetOption.1.disable=/queue/simple/set\n=max-limit=0/99M\n=numbers=vlan$vlan
sa.command.inetOption.26.enable=/queue/simple/set\n=max-limit=0/100M\n=numbers=vlan$vlan
sa.command.inetOption.26.disable=/queue/simple/set\n=max-limit=0/99M\n=numbers=vlan$vlan
sa.command.inetOption.3.enable=/queue/simple/set\n=max-limit=0/10M\n=numbers=vlan$vlan
sa.command.inetOption.3.disable=/queue/simple/set\n=max-limit=0/99M\n=numbers=vlan$vlan
sa.command.inetOption.4.enable=/queue/simple/set\n=max-limit=0/20M\n=numbers=vlan$vlan
sa.command.inetOption.4.disable=/queue/simple/set\n=max-limit=0/99M\n=numbers=vlan$vlan
sa.command.inetOption.7.enable=/queue/simple/set\n=max-limit=0/40M\n=numbers=vlan$vlan
sa.command.inetOption.7.disable=/queue/simple/set\n=max-limit=0/99M\n=numbers=vlan$vlan
sa.command.inetOption.16.enable=/queue/simple/set\n=max-limit=0/6M\n=numbers=vlan$vlan
sa.command.inetOption.16.disable=/queue/simple/set\n=max-limit=0/99M\n=numbers=vlan$vlan
sa.command.inetOption.17.enable=/queue/simple/set\n=max-limit=0/15M\n=numbers=vlan$vlan
sa.command.inetOption.17.disable=/queue/simple/set\n=max-limit=0/99M\n=numbers=vlan$vlan
sa.command.inetOption.22.enable=/queue/simple/set\n=max-limit=0/4M\n=numbers=vlan$vlan
sa.command.inetOption.22.disable=/queue/simple/set\n=max-limit=0/99M\n=numbers=vlan$vlan
sa.command.inetOption.6.enable=/queue/simple/set\n=max-limit=0/25M\n=numbers=vlan$vlan
sa.command.inetOption.6.disable=/queue/simple/set\n=max-limit=0/99M\n=numbers=vlan$vlan
sa.command.inetOption.8.enable=/queue/simple/set\n=max-limit=0/55M\n=numbers=vlan$vlan
sa.command.inetOption.8.disable=/queue/simple/set\n=max-limit=0/99M\n=numbers=vlan$vlan
sa.command.inetOption.11.enable=/queue/simple/set\n=max-limit=0/70M\n=numbers=vlan$vlan
sa.command.inetOption.11.disable=/queue/simple/set\n=max-limit=0/99M\n=numbers=vlan$vlan
sa.command.inetOption.24.enable=/queue/simple/set\n=max-limit=0/2M\n=numbers=vlan$vlan
sa.command.inetOption.24.disable=/queue/simple/set\n=max-limit=0/99M\n=numbers=vlan$vlan
sa.command.inetOption.27.enable=/queue/simple/set\n=max-limit=0/2M\n=numbers=vlan$vlan
sa.command.inetOption.27.disable=/queue/simple/set\n=max-limit=0/99M\n=numbers=vlan$vlan
sa.command.inetOption.28.enable=/queue/simple/set\n=max-limit=0/8M\n=numbers=vlan$vlan
sa.command.inetOption.28.disable=/queue/simple/set\n=max-limit=0/99M\n=numbers=vlan$vlan


ЧЯДН ?

пысы :ROS 6.xxx

Автор:  borisk [ 04 авг 2016, 16:43 ]
Заголовок сообщения:  Re: [6.2] MikrotikServiceActivator

Я верю что работает :) Я не понимаю почему у меня не работает :) И RoutersOS последняя 6.36

Автор:  borisk [ 04 авг 2016, 16:47 ]
Заголовок сообщения:  Re: [6.2] MikrotikServiceActivator

snark писал(а):
На просторах этих ваших интернетов столько срачей на предмет того, что работа МТ-шного API ведет себя по разному в зависимости от версии ROS и иногда бывает вообще не работоспособной, что проще забить на API и использовать telnet/SSH.
Что именно в API есть такого, что нельзя реализовать через telnet/SSH?


Все бы хорошо, но я взял с сайта mikrotik клиент python, в котором ввожу те же самые команды, что и в bgb - и все прекрасно отрабатывает без каких либо последствий.

Вот про API и telnet/ssh конечно полностью соглашусь, что все то же самое. Просто есть API, есть готовая обертка к нему, думал воспользоваться. И в этой вот обертке есть переменная prevIdList которая действительно полезна.

Автор:  ok-2004 [ 04 авг 2016, 17:01 ]
Заголовок сообщения:  Re: [6.2] MikrotikServiceActivator

попробуйте для simple queue дописать comment=test

пысы: у меня BGB управляет 14 брасами на микротик по 256 юзеров на каждом. Раньше это делалось по telnet/ssh. Связка access+accounting крутилась на отделом сервере. Это были чёрные дни, не знал откуда ещё волосы на себе вырвать от отчаяния, пока Бител на добавил библиотеку api для микротика. Сразу перешёл на неё и неделю пил от счастья..

Автор:  stark [ 04 авг 2016, 17:08 ]
Заголовок сообщения:  Re: [6.2] MikrotikServiceActivator

borisk писал(а):
Добрый день!

Все, больше ничего не прописывал. Теперь тупо "открыт/закрыт" сервис. Так вот - почему-то выполняется только первая команда. То есть:
Перевел сервис в "закрыт" - сервис состояние поменял и в логе видно, что команда выполнилась и ответ !done получен.
Теперь делаем "открыт" - и ничего не происходит. Сервис состояние не меняет, в логах тоже тишина. Перезапускаем access - и опа, наша команда выполнилась и сервис состояние поменял.

Помогите люди добрые? уже всю голову сломал что за глюк такой.


Если все так как вы описываете то это не проблема конкретных команд. Или у вас что-то повисает там.

Автор:  borisk [ 04 авг 2016, 17:22 ]
Заголовок сообщения:  Re: [6.2] MikrotikServiceActivator

А почему именно там, а не в bgb? Ведь после рестарта access он выполняет предыдущую "зависшую" команду?

Автор:  stark [ 04 авг 2016, 17:46 ]
Заголовок сообщения:  Re: [6.2] MikrotikServiceActivator

borisk писал(а):
А почему именно там, а не в bgb? Ведь после рестарта access он выполняет предыдущую "зависшую" команду?


гадать не получится. надо логи смотреть. И как именно вы открываете/закрываете сервис ? Правой кнопкой в подменю "отладка" ?

Автор:  borisk [ 04 авг 2016, 18:00 ]
Заголовок сообщения:  Re: [6.2] MikrotikServiceActivator

Нет, захожу на сервис и "открыт/закрыт" делаю. Я бы рад смотреть логи, только их нет практически :)
Вот что удалось нарыть... вставил свои куски кода в MikrotikServiceActivator, так вот... все работает до тех пор, пока вот сюда
protected Object executeCommands( ServiceActivatorEvent e, InetServ serv, InetConnection connection, Set<Integer> options, String[] commands )
throws Exception
{
if( commands == null )
{
logger.error("MktSA: no commands");
return null;
}

не приходит commands == null. Как только оно приходит, вся дальнейшая работа прекращается. Соответственно вопрос, что же за такие commands == null приходят и от куда?

Автор:  borisk [ 04 авг 2016, 18:06 ]
Заголовок сообщения:  Re: [6.2] MikrotikServiceActivator

И еще, если смотреть по логам микротик, то нормальная работа выглядит так:
user bgbill logged in via api
user.... changed ....
user bgbill logged out

а при глюке сточки logged out не появляется

Автор:  Amir [ 04 авг 2016, 18:18 ]
Заголовок сообщения:  Re: [6.2] MikrotikServiceActivator

Нужен лог.
Т.е. перезапустить, открыть и закрыть - и сохранить лог.
Также желательно вывод jstack сохранить после того как откроете/закроете.

Автор:  borisk [ 04 авг 2016, 18:20 ]
Заголовок сообщения:  Re: [6.2] MikrotikServiceActivator

Amir, в логе нет ничего вразумительного. Может опишите более подробно что именно включить и что снять (включая jstack), потому что мое знакомство я java весьма поверхностное.

Автор:  Amir [ 04 авг 2016, 18:28 ]
Заголовок сообщения:  Re: [6.2] MikrotikServiceActivator

Перезапустите InetAccess, в log4j.xml включите DEBUG, откройте/закройте сервис.
Сохраните вывод /opt/java/jdk8/bin/jstack <кодпроцесса> > stack.txt

Отправьте нам all.log и stack.txt

Автор:  borisk [ 04 авг 2016, 18:35 ]
Заголовок сообщения:  Re: [6.2] MikrotikServiceActivator

Вот

Вложения:
bglog.tar [1.23 МБ]
Скачиваний: 243

Автор:  stark [ 08 авг 2016, 16:02 ]
Заголовок сообщения:  Re: [6.2] MikrotikServiceActivator

borisk писал(а):
Вот


В вашем логе я вижу событие и команды на выключение, но не вижу на включение.
Цитата:
connection 08-04/17:32:46 INFO [sa-p-13-t-79] ServiceActivatorSet - Connecting to device
connection 08-04/17:32:46 DEBUG [sa-p-13-t-79] AcknowledgeConsumer - Caught BGBillingServer:Event[ru.bitel.bgbilling.modules.inet.access.sa.event.InetSaServModifyEvent] moduleId: 14; pluginId: no; cid: 391; scid: -1; userId: -1; oldInetServ: -1:SNR-S2960-24G: 00030F25FCC0 [172.16.3.1]:4; newInetServ: -1:SNR-S2960-24G: 00030F25FCC0 [172.16.3.1]:4; newInetServState: 0; newInetServOptionList: ; timestamp: 1470313966519
connection 08-04/17:32:46 INFO [sa-p-13-t-79] ServiceActivatorDeviceWorker - Do task deviceId: 189; Event[ru.bitel.bgbilling.modules.inet.access.sa.event.InetSaServModifyEvent] moduleId: 14; pluginId: no; cid: 391; scid: -1; userId: -1; oldInetServ: -1:SNR-S2960-24G: 00030F25FCC0 [172.16.3.1]:4; newInetServ: -1:SNR-S2960-24G: 00030F25FCC0 [172.16.3.1]:4; newInetServState: 0; newInetServOptionList: ; timestamp: 1470313966519
connection 08-04/17:32:46 INFO [sa-p-13-t-79] InetApplication - TariffOptionMap: {}
connection 08-04/17:32:46 INFO [sa-p-13-t-79] InetApplication - OptionSet: [10]
connection 08-04/17:32:46 INFO [sa-p-13-t-79] ServiceActivatorDeviceWorker - Command result event: ServiceActivatorEvent type=2; inetServId: 1022; call: false; oldState: 1; newState: 0; oldOptionSet: 10; newOptionSet: 10
connection 08-04/17:32:46 INFO [sa-p-13-t-79] ServiceActivatorDeviceWorker - Processing deviceId:189; command ServiceActivatorEvent type=2; inetServId: 1022; call: false; oldState: 1; newState: 0; oldOptionSet: 10; newOptionSet: 10
connection 08-04/17:32:46 INFO [sa-p-13-t-79] ServiceActivatorSet - Invoking serviceModify
connection 08-04/17:32:46 INFO [sa-p-13-t-79] AbstractTerminalServiceActivator - serviceModify
connection 08-04/17:32:46 INFO [sa-p-13-t-79] AbstractTerminalServiceActivator - serviceDisable
connection 08-04/17:32:46 INFO [sa-p-13-t-79] AbstractTerminalServiceActivator - switchOptions
connection 08-04/17:32:46 ERROR [sa-p-13-t-79] MikrotikServiceActivator - execute: /queue/simple/disable\n=numbers=test
connection 08-04/17:32:46 ERROR [sa-p-13-t-79] MikrotikServiceActivator - result=
!done
connection 08-04/17:32:46 INFO [sa-p-13-t-79] ServiceActivatorDeviceWorker - Process event type[2] result=true
connection 08-04/17:32:46 INFO [sa-p-13-t-79] ServiceActivatorDeviceWorker - Changing InetServ:1022 state and/or options


надо посмотреть почему сервер не шлет событие InetSaServModifyEvent на включение и нет ли каких-то проблем в activemq

Автор:  stark [ 08 авг 2016, 16:05 ]
Заголовок сообщения:  Re: [6.2] MikrotikServiceActivator

настройте сервер в режиме debug и посмотрите пишет ли он
Код:
Publish : InetSaServModifyEvent

Автор:  borisk [ 08 авг 2016, 17:22 ]
Заголовок сообщения:  Re: [6.2] MikrotikServiceActivator

Включение
Код:
08-08/16:16:26 DEBUG [http-bio-80.64.16.4-45443-exec-6] EventProcessor - Publish: Event[ru.bitel.bgbilling.modules.inet.api.server.event.InetServModifiedEvent] moduleId: 14; pluginId: no; cid: 391; scid: -1; userId: 2; timestamp: 1470654986842
08-08/16:16:26 DEBUG [http-bio-80.64.16.4-45443-exec-6] EventProcessor - Publish: Event[ru.bitel.bgbilling.modules.inet.access.sa.event.InetSaServModifyEvent] moduleId: 14; pluginId: no; cid: 391; scid: -1; userId: -1; oldInetServ: -1:SNR-S2960-24G: 00030F25FCC0 [172.16.3.1]:4; newInetServ: -1:SNR-S2960-24G: 00030F25FCC0 [172.16.3.1]:4; newInetServState: 1; newInetServOptionList: ; timestamp: 1470654986846


Выключение
Код:
08-08/16:17:35 DEBUG [http-bio-80.64.16.4-45443-exec-1] EventProcessor - Publish: Event[ru.bitel.bgbilling.modules.inet.api.server.event.InetServModifiedEvent] moduleId: 14; pluginId: no; cid: 391; scid: -1; userId: 2; timestamp: 1470655055400
08-08/16:17:35 DEBUG [http-bio-80.64.16.4-45443-exec-1] EventProcessor - Publish: Event[ru.bitel.bgbilling.modules.inet.access.sa.event.InetSaServModifyEvent] moduleId: 14; pluginId: no; cid: 391; scid: -1; userId: -1; oldInetServ: -1:SNR-S2960-24G: 00030F25FCC0 [172.16.3.1]:4; newInetServ: -1:SNR-S2960-24G: 00030F25FCC0 [172.16.3.1]:4; newInetServState: 0; newInetServOptionList: ; timestamp: 1470655055403

Автор:  borisk [ 08 авг 2016, 17:23 ]
Заголовок сообщения:  Re: [6.2] MikrotikServiceActivator

То есть события публикуются => проблемы в mq? Но все остальные задачи работают и проблем не возникает. У меня самописный активатор сессий для freebsd работает на ура.
Опять таки не понимаю - после перезапуска ведь access откуда-то считывает событие?

Автор:  stark [ 08 авг 2016, 17:44 ]
Заголовок сообщения:  Re: [6.2] MikrotikServiceActivator

Вы посмотрите web-интерфейс activemq, не копятся ли там события .

Автор:  borisk [ 08 авг 2016, 22:26 ]
Заголовок сообщения:  Re: [6.2] MikrotikServiceActivator

Во всех очередях "number of messages pending" - 0

Автор:  stark [ 09 авг 2016, 11:48 ]
Заголовок сообщения:  Re: [6.2] MikrotikServiceActivator

меня в вашем jstack смущает 2 потока :
Код:
"listener" #374 daemon prio=5 os_prio=15 tid=0x00000008848bc800 nid=0x18e89 runnable [0x00007fffd0907000]
   java.lang.Thread.State: RUNNABLE
   at java.net.SocketInputStream.socketRead0(Native Method)
   at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
   at java.net.SocketInputStream.read(SocketInputStream.java:170)
   at java.net.SocketInputStream.read(SocketInputStream.java:141)
   at java.net.SocketInputStream.read(SocketInputStream.java:223)
   at java.io.FilterInputStream.read(FilterInputStream.java:83)
   at bitel.billing.server.util.mikrotik.ReadCommand.run(ReadCommand.java:54)
   at java.lang.Thread.run(Thread.java:745)


Код:
"sa-p-13-t-79" #136 prio=5 os_prio=15 tid=0x0000000879c97000 nid=0x18b1f waiting on condition [0x00007fffd8280000]
   java.lang.Thread.State: WAITING (parking)
   at sun.misc.Unsafe.park(Native Method)
   - parking to wait for  <0x00000008312a47a8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
   at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
   at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
   at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
   at bitel.billing.server.util.mikrotik.ApiConn.getData(ApiConn.java:151)
   at bitel.billing.server.util.mikrotik.MikrotikApiSession.readFromInput(MikrotikApiSession.java:117)
   at bitel.billing.server.util.mikrotik.MikrotikApiSession.doCommand(MikrotikApiSession.java:82)
   at ru.bitel.bgbilling.modules.inet.dyn.device.mikrotik.MikrotikServiceActivator.disconnect(MikrotikServiceActivator.java:59)
   at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorSet.disconnect(ServiceActivatorSet.java:226)
   at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.runWorker(ServiceActivatorDeviceWorker.java:259)
   at ru.bitel.bgbilling.kernel.event.EventWorker.internalRunWorker(EventWorker.java:139)
   - locked <0x0000000813ce4718> (a ru.bitel.bgbilling.kernel.event.AcknowledgeConsumer)
   at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.runImpl(ServiceActivatorDeviceWorker.java:152)
   - locked <0x0000000813ce4648> (a ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker)
   at ru.bitel.common.worker.WorkerTask.run(WorkerTask.java:86)
   at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
   at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
   at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
   at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
   at java.lang.Thread.run(Thread.java:745)
   at ru.bitel.common.worker.WorkerThread.run(WorkerThread.java:46)


Если несколько раз подряд снять jstack с интервалом секунд в 30, то там что-то меняется ?

Автор:  stark [ 09 авг 2016, 11:51 ]
Заголовок сообщения:  Re: [6.2] MikrotikServiceActivator

Лучше напишите в helpdesk и дайте доступ, возможно там что-то нестандартное.

Автор:  stark [ 10 авг 2016, 18:49 ]
Заголовок сообщения:  Re: [6.2] MikrotikServiceActivator

Исправлено, будет в следующем обновлении.

Автор:  borisk [ 12 авг 2016, 13:00 ]
Заголовок сообщения:  Re: [6.2] MikrotikServiceActivator

Да, спасибо, работает. А вот еще появился вопросик: используем схему с родительским сервисом (без ip, просто учет ресурсов), а к нему дочерние сервисы IP. И получается, MikrotikServiceActivator не умеет с таким работать, или я не нашел как?

Автор:  stark [ 12 авг 2016, 13:20 ]
Заголовок сообщения:  Re: [6.2] MikrotikServiceActivator

borisk писал(а):
Да, спасибо, работает. А вот еще появился вопросик: используем схему с родительским сервисом (без ip, просто учет ресурсов), а к нему дочерние сервисы IP. И получается, MikrotikServiceActivator не умеет с таким работать, или я не нашел как?


Не умеет, как ssh и все остальные . Это по хорошему надо делать в базовом предке всех этих сервисов. Какая-то схема делалась отдельно в Manad для этого ( привет, skyb), но заброшена.

Автор:  borisk [ 12 авг 2016, 13:27 ]
Заголовок сообщения:  Re: [6.2] MikrotikServiceActivator

Хорошо, я попробую реализовать это как макрос в AbstractTerminalServiceActivator, потом представлю на ваш суд. Если понравится - добавите в следующие сборки.

Автор:  borisk [ 15 авг 2016, 20:45 ]
Заголовок сообщения:  Re: [6.2] MikrotikServiceActivator

Господа разработчики, проконсультируйте, пожалуйста. Пытаюсь сделать свой макрос с параметрами, по аналогии с deviceAttr
вызов моего макроса $ipChild(0)
код обработки:
Код:
         switch( args.length )
         {
            case 1:
               processRoot = ((Integer)args[0]) >= 1;

копия вашего из deviceAttr, но я получаю Exception в последней строке кода что
Цитата:
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
. Макросы где-то надо еще регистрировать чтобы система понимала типы их параметров?

Автор:  borisk [ 15 авг 2016, 21:19 ]
Заголовок сообщения:  Re: [6.2] MikrotikServiceActivator

И еще какая-то странность. Делаю "закрыть сервис", все отрабатывает как надо, сервис закрывается и
Код:
connection 08-15/20:12:53 ERROR [sa-p-13-t-74] MikrotikServiceActivator - execute: /queue/simple/disable\n=numbers=391:1027
connection 08-15/20:12:53 ERROR [sa-p-13-t-74] MikrotikServiceActivator - result=
!done

Я ничего больше с договором не делаю, жду, и через секунд 30 в логе:
Код:
connection 08-15/20:13:17 ERROR [sa-p-13-t-65] MikrotikServiceActivator - execute: /queue/simple/enable\n=numbers=391:1027
connection 08-15/20:13:17 ERROR [sa-p-13-t-65] MikrotikServiceActivator - result=
!done


При этом сам сервис в биллинге в состоянии "закрыт/включен". Почему??? Куда копать?
Определены только вот эти команды:
Код:
sa.command.serv.create=/queue/simple/add\n=name=$contractId:$servId\n=target=$ipChild(0)
sa.command.serv.enable=/queue/simple/enable\n=numbers=$contractId:$servId
sa.command.serv.disable=/queue/simple/disable\n=numbers=$contractId:$servId
sa.command.serv.cancel=/queue/simple/remove\n=numbers=$contractId:$servId

Автор:  Artur [ 16 авг 2016, 11:44 ]
Заголовок сообщения:  Re: [6.2] MikrotikServiceActivator

Попробуйте вот так:
Код:
Integer.valueOf(args[0])


Либо, что более предпочтительно:

Код:
Utils.parseInt(args[0])


В последнем случае, если в аргументе будет не число, то вернется значение 0, а не NumberFormatException.
Также можно использовать перегруженный метод:
Utils.parseInt(args[0], <custom_default_value>)

где <custom_default_value> - число, которое будет возвращено, если не получится прочитать число из строки args[0]

Страница 1 из 2 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/