/*
Пример использования
Ресурс позволяет:
1. Создавать сегмент
2. Изменять сегмент
3. Удалять сегмент
*/

#Расскомментируйте этот код,
#и внесите необходимые правки в версию и путь,
#чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером
/*
terraform {
  required_providers {
    decort = {
      source  = "basis/decort/decort"
      version = "<VERSION>"
    }
  }
}
*/

provider "decort" {
  authenticator = "decs3o"
  #controller_url = <DECORT_CONTROLLER_URL>
  controller_url = "https://ds1.digitalenergy.online"
  #oauth2_url = <DECORT_SSO_URL>
  oauth2_url           = "https://sso.digitalenergy.online"
  allow_unverified_ssl = true
}

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
}

output "test" {
  value = decort_sdn_segment.name
}



