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

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

#Расскомментируйте этот код,
#и внесите необходимые правки в версию и путь,
#чтобы работать с установленным вручную (не через 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_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"

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

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

  #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
}
