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

[6.0] Свободный IP-адрес в ресурсах
http://forum.bitel.ru/viewtopic.php?f=44&t=11216
Страница 1 из 1

Автор:  oldb0y [ 09 дек 2015, 11:17 ]
Заголовок сообщения:  [6.0] Свободный IP-адрес в ресурсах

Здравствуйте.

Не удается найти метод для получения свободного IP-адреса из ресурсов. Есть что-нибудь подобное?

Сервис по Логину и Паролю, IP-адрес статический (выбирается в ручную при заведении).

Есть обработчик, который создает сервис, и вот в нем требуется получить свободный IP-адрес.

Автор:  Amir [ 09 дек 2015, 17:09 ]
Заголовок сообщения:  Re: [6.0] Свободный IP-адрес в ресурсах

Код:
         import ru.bitel.bgbilling.modules.inet.api.common.service.InetServService;
         import ru.bitel.oss.systems.inventory.resource.common.ResourceService;

         ...

         final InetServService servService = ctx.getService( InetServService.class, moduleId );
         final ResourceService resourceService = ctx.getService( ResourceService.class, moduleId );

         ...

         switch( servType.getAddressType() )
         {
            case InetServType.ADDRESS_TYPE_SINGLE:
            {
               List<Integer> ipResourceCategoryIds = servService.ipResourceCategoryIds( serv.getDeviceId(), serv.getInterfaceId(), serv.getTypeId() );
               
               List<IpResourceRange> rangeList = resourceService.freeIpResourceRangeList(
                  ipResourceCategoryIds, null, serv.getDateFrom(), serv.getDateTo(), 1, 1 );

               if( rangeList != null && rangeList.size() > 0 )
               {
                  IpResourceRange range = rangeList.get( 0 );
                  serv.setIpResourceId( range.getIpResourceId() );
                  serv.setAddressFrom( range.getAddressFrom() );
               }
               else
               {
                  e.setError( "Невозможно назначить IP-адрес сервису." );
                  return;
               }
            }
               break;

            default:
               break;
         }

         ...

Автор:  oldb0y [ 11 дек 2015, 09:33 ]
Заголовок сообщения:  Re: [6.0] Свободный IP-адрес в ресурсах

Amir
Спасибо!

Может кому пригодится "готовый кусок"
serv - это InetServ
Ошибки не отрабатываю, не определились что возвращать

Код:
// Get Free IP
import ru.bitel.bgbilling.modules.inet.api.common.service.InetServService;
import ru.bitel.oss.systems.inventory.resource.common.ResourceService;
import ru.bitel.bgbilling.kernel.container.managed.ServerContext;
import ru.bitel.oss.systems.inventory.resource.common.bean.IpResourceRange;

........

// Get Free IP
int MODUL_ID = 4;
ServerContext context = new ServerContext( setup, MODUL_ID, 0 );

final InetServService servService = context.getService( InetServService.class, MODUL_ID );
final ResourceService resourceService = context.getService( ResourceService.class, MODUL_ID );

List<Integer> ipResourceCategoryIds = servService.ipResourceCategoryIds( serv.getDeviceId(), serv.getInterfaceId(), serv.getTypeId() );
List<IpResourceRange> rangeList = resourceService.freeIpResourceRangeList( ipResourceCategoryIds, null, serv.getDateFrom(), serv.getDateTo(), 1, 1 );
if( rangeList != null && rangeList.size() > 0 ) {
                  IpResourceRange range = rangeList.get(0);
                  serv.setIpResourceId( range.getIpResourceId() );
                  serv.setAddressFrom( range.getAddressFrom() );
}

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