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

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

## Аргументы

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

| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| access_group_id | string | :heavy_check_mark: | ID группы доступа |
| description | string | :heavy_check_mark: | Описание сегмента |
| display_name | string | :heavy_check_mark: | Отображаемое имя сегмента |
| enabled | bool | :heavy_check_mark: | Включение/отключение сегмента |
| subnet_v4 | string | :x: | Подсеть IPv4 для текущего сегмента |
| subnet_v6 | string | :x: | Подсеть IPv6 для текущего сегмента |
| dhcp_v4 | Struct [см. ниже](#описание-блока-dhcp_v4) | :x: | Описание конфигурации dhcp v4 |
| dhcp_v6 | Struct [см. ниже](#описание-блока-dhcp_v6) | :x: | Описание конфигурации dhcp v6 |
| force | bool | :x: | Доступность устройства, может использоваться на уже созданном ресурсе |

### Описание блока dhcp_v4
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| gateway | string | :heavy_check_mark: | Шлюз |
| enabled | bool | :heavy_check_mark: | Флаг активности конфигурации |
| server_ip | string | :heavy_check_mark: | IP адрес сервера |
| dns | []string | :x: | Список DNS |
| excluded_address_ranges | []string | :x: | Список адресов для исключений |
| lease_time | int | :x: | Время на которое выдается адрес в секундах |
| server_mac | string | :x: | MAC адрес сервера |

### Описание блока dhcp_v6
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| address_prefix | string | :heavy_check_mark: | IPv6 префикс, в рамках которого выделяются IPv6 адреса |
| enabled | bool | :heavy_check_mark: | Флаг активности конфигурации |
| dns | []string |:x: | Список DNS |
| lease_time | int |:x: | Время на которое выдается адрес в секундах |
| server_mac | string |:x: | MAC адрес сервера |


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

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

| Параметр | Тип | Описание |
| --- | --- | --- | 
| access_group_id | int | Уникальный идентификатор группы доступа |
| access_group_name | int | Имя группы доступа |
| created_at | int | Когда создан сегмент |
| description | string | Описание сегмента | 
| dhcp_v4 | Struct [см. ниже](#описание-структуры-dhcp_v4) | Описание конфигурации dhcp v4 |
| dhcp_v6 | Struct [см. ниже](#описание-структуры-dhcp_v6) | Описание конфигурации dhcp v6 |
| display_name | string | Имя сегмента | 
| enabled | bool | Флаг доступности сегмента | 
| logical_ports_info | []Struct [см. ниже](#описание-структуры-entity) | Информация о логических портах |  
| routers | []Struct [см. ниже](#описание-структуры-entity) | Информация о роутерах |  
| status | []Struct [см. ниже](#описание-структуры-status) | Информация о статусе сегмента | 
| segment_id | int | Идентификатор экземпляра segment |
| subnet_v4 | string | Подсеть IPv4 для текущего сегмента |  
| subnet_v6 | string | Подсеть IPv6 для текущего сегмента |  
| updated_at | string | Когда обновлён сегмент |  
| version_id | int | Номер версии сегмента |          

### Описание структуры dhcp_v4
| Параметр | Тип | Описание |
| --- | --- | --- |
| dns | []string | Список DNS |
| excluded_address_ranges | []string | Список адресов для исключений |
| gateway | string | Шлюз |
| id | string | Уникальный идентификатор конфигурации |
| lease_time | int | Время на которое выдается адрес в секундах |
| server_ip | string | IP адрес сервера |
| server_mac | string | MAC адрес сервера |
| enabled | bool | Флаг активности конфигурации |

### Описание структуры dhcp_v6
| Параметр | Тип | Описание |
| --- | --- | --- |
| address_prefix | string | IPv6 префикс, в рамках которого выделяются IPv6 адреса |
| dns | []string | Список DNS |
| id | string | Уникальный идентификатор конфигурации |
| lease_time | int | Время на которое выдается адрес в секундах |
| server_mac | string | MAC адрес сервера |
| enabled | bool | Флаг активности конфигурации |

### Описание структуры entity
| Параметр | Тип | Описание |
| --- | --- | --- |
| display_name | string | Имя сущности | 
| id | string | Уникальный идентификатор сущности |

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

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

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

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

```terraform
resource "decort_sdn_segment" "name" {
  #id группы доступа
  #обязательный параметр
  #тип - строка
  #используется при создании и обновлении
  access_group_id = "a1b2c3d4-e5f6-7890-g1h2-i3j4k5l6m7n8"

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

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

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

  #подсеть IPv4 для текущего сегмента
  #опциональный параметр
  #тип - строка
  #используется при создании и обновлении
  #subnet_v4 = "192.168.1.0/24"

  #подсеть IPv6 для текущего сегмента
  #опциональный параметр
  #тип - строка
  #используется при создании и обновлении
  #subnet_v6 = "aef0::/64"

  #настройка DHCPv4
  #опциональный параметр
  #тип - блок
  #используется при создании и обновлении
  #dhcp_v4 {
    #DNS
    #опциональный параметр
    #тип - массив строк
    #dns = ["198.51.100.42","8.8.8.8"]

    #исключенные диапазоны адресов
    #опциональный параметр
    #тип - массив строк
    #excluded_address_ranges = ["198.51.100.42","8.8.8.8"]

    #шлюз
    #обязательный параметр
    #тип - строка
    #gateway = "192.168.0.1"

    #время аренды
    #опциональный параметр
    #тип - целое число
    #lease_time = 86400

    #ip сервера
    #обязательный параметр
    #тип - строка
    #server_ip = "192.168.1.100"

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

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

  #настройка DHCPv6
  #опциональный параметр
  #тип - блок
  #используется при создании и обновлении
  #dhcp_v6 {
    #префикс IPv6
    #обязательный параметр
    #тип - строка
    #address_prefix = "2001:db8::/64"

    #DNS
    #опциональный параметр
    #тип - массив строк
    #dns = ["198.51.100.42","8.8.8.8"]

    #время аренды
    #опциональный параметр
    #тип - целое число
    #lease_time = 86400

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

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

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

# once the above directive completes, pcidevice will be accessible
# as decort_sdn_segment.name
```

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

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