Функция доступна в провайдере версии 4.10.1 и выше.

_Resource_ функция **decort_sdn_logical_port** служит для управления логический портами сети. Функция позволяет:
- Создать логический порт
- Изменять логический порт
- Удалить логический порт
- Включить/отключить логический порт

## Аргументы

_Resource_ функция **decort_sdn_logical_port** принимает следующие аргументы:

| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| access_group_id | string | :heavy_check_mark: | ID группы доступа |
| description | string | :heavy_check_mark: | Описание логического порта |
| display_name | string | :heavy_check_mark: | Имя логического порта |
| enabled | bool | :heavy_check_mark: | Флаг доступности логического порта |
| is_excluded_from_firewall | bool | :heavy_check_mark: | Флаг исключения логического порта из файервола |
| hypervisor | string | :heavy_check_mark: | Выбранный гипервизор |
| port_security | bool | :heavy_check_mark: | Флаг безопасности порта |
| segment_id | string | :heavy_check_mark: | ID сегмента |
| adapter_mac | string | :x: | MAC adapter |
| unique_identifier | string | :x: | Уникальный идентификатор логического порта |
| force | bool | :x: | Флаг принудительного удаления |
| logical_port_addresses | Struct [см. ниже](#описание-блока-logical_port_addresses) | :x: | Адреса логического порта |


## Возвращаемые значения

В случае успешного выполнения _resource_ функция **decort_sdn_logical_port** возвращает в указанную при вызове переменную элемент, который состоит из следующих параметров:

| Параметр | Тип | Описание |
| --- | --- | --- | 
| id | int | ID логического порта |
| access_group_id | string | ID группы доступа |
| access_group_name | string | Имя группы доступа |
| adapter_mac | string | MAC adapter |
| address_detection | bool | Флаг обнаружения адреса |
| description | string | Описание логического порта | 
| created_at | int | Когда создан логический порт |
| display_name | string | Имя логического порта |
| enabled | bool | Флаг доступности логического порта |  
| external_network_id | string | ID внешней сети |
| hypervisor | string | Выбранный гипервизор |
| hypervisor_display_name | string | Имя выбранного гипервизора |
| live_migration_target_hv | string | Гипервизор для миграции |
| status | Struct [см. ниже](#описание-структуры-status) | Описание статуса |
| bindings | Struct [см. ниже](#описание-структуры-bindings) | Описание привязки логического порта |
| unique_identifier | string | Уникальный идентификатор логического порта | 
| version_id | int | Номер версии логического порта |  


### Описание структуры status
| Параметр | Тип | Описание |
| --- | --- | --- |
| status | string | Статус сегмента |
| hypervisors | []Struct [см. ниже](#описание-структуры-hypervisor) | Список гипервизоров |

### Описание структуры hypervisor
| Параметр | Тип | Описание |
| --- | --- | --- |
| status | string | Статус |
| name | string | Имя гипервизора |
| display_name | string | Отображаемое имя гипервизора |
| hypervisor_status | string | Статус гипервизора |
| synced_at | string | Время последней синхронизации |

### Описание структуры bindings
| Параметр | Тип | Описание |
| --- | --- | --- |
| id | string | ID привязки |
| segment_display_name | string | Отображаемое имя сегмента |
| segment_id | string | ID сегмента |
| port_security | bool | Флаг безопасности порта |
| address_detection | bool | Флаг обнаружения адреса |
| is_excluded_from_firewall | bool | Флаг исключения привязки из файервола |
| version_id | int | Номер версии привязки | 
| created_at | int | Когда создана привязка | 
| updated_at | string | Когда обновлена привязка |  
| logical_port_addresses | []Struct [см. ниже](#описание-структуры-logical_port_addresses) | Список адресов логического порта |

### Описание структуры logical_port_addresses
| Параметр | Тип | Описание |
| --- | --- | --- |
| ip | string | IP |
| ip_type | string | Тип IP |
| is_discovered | bool | Флаг обнаружения адреса |
| is_primary | bool | Флаг первичности адреса |
| mac | string | MAC |
| id | string | ID адреса |
| logical_port_id | string | ID логического порта |
| assigned_at | string | Когда был приписан адрес |       


### Описание блока logical_port_addresses
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| ip | string | :heavy_check_mark: | IP |
| ip_type | string | :heavy_check_mark: | Тип IP |
| is_primary |  bool | :heavy_check_mark: | Флаг первичности адреса |
| is_discovered | bool | :x: | Флаг обнаружения адреса |
| mac | string | :x: | MAC |


## Пример использования

Пример вызова _resource_ функции **decort_sdn_logical_port**:

```terraform
resource "decort_sdn_logical_port" "test" {
  #id группы доступа
  #обязательный параметр
  #тип - строка
  #используется при создании
  access_group_id = "b2c3d4e5-f6g7-8901-h2i3-j4k5l6m7n8o9"

  #описание логического порта
  #обязательный параметр
  #тип - строка
  #используется при создании и обновлении
  description = "description"

  #отображаемое имя логического порта
  #обязательный параметр
  #тип - строка
  #используется при создании и обновлении
  display_name = "name"

  #включенение порта
  #обязательный параметр
  #тип - булев
  #используется при создании и обновлении
  enabled = true

  #исключение порта из правил фаервола
  #обязательный параметр
  #тип - булев
  #используется при создании и обновлении
  is_excluded_from_firewall = true

  #связанный гипервизор
  #обязательный параметр
  #тип - строка
  #используется при создании и обновлении
  hypervisor = "hypervisor"

  #статус безопасности порта
  #обязательный параметр
  #тип - булев
  #используется при создании и обновлении
  port_security = true

  #id сегмента сети
  #обязательный параметр
  #тип - строка
  #используется при создании и обновлении
  segment_id = "a866059a-1900-4f7f-89c1-0f98880f5f4c"

  #MAC адрес адаптера
  #опциональный параметр
  #тип - строка
  #используется при создании и обновлении
  #adapter_mac = "^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$ default: null"

  #уникальный идентификатор порта
  #опциональный параметр
  #тип - строка
  #значение по умолчанию - null
  #используется при создании
  #unique_identifier = "b2c3d4e5-f6g7-8901-h2i3-j4k5l6m7n8o9"

  #управление списком адресов логических портов
  #опциональный параметр
  #тип - блок
  #используется при создании и обновлении
  #logical_port_addresses {
    #ip
    #обязательный параметр
    #тип - строка
    #ip = "192.168.0.1"

    #тип ip
    #обязательный параметр
    #тип - строка
    #возможные значения - IPv4, IPv6
    #ip_type = "IPv4"

    #является ли основным
    #обязательный параметр
    #тип - булев
    #значение по умолчанию - true
    #is_primary = true

    #обнаружен/не обнаружен
    #опциональный параметр
    #тип - булев
    #значение по умолчанию - false
    #is_discovered = false

    #MAC адрес
    #опциональный параметр
    #тип - строка
    #значение по умолчанию - null
    #mac = "^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$"
  #}

  #флаг принудительного удаления
  #опциональный параметр
  #тип - булев
  #значение по умолчанию - null
  #используется при обновлении
  #force = true
}

output "test" {
  value = decort_sdn_logical_port.test
}
```

Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DECORT см. соответствующий [раздел](https://repository.basistech.ru/BASIS/wiki-terraform-provider-decort/src/branch/main/4.11.3/04.02-Инициализация-Terraform-провайдера-DECORT.md)).

После успешного завершения такого вызова **decort_sdn_logical_port** в переменной `decort_sdn_logical_port.test` будут сохранены возвращаемые значения.

