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

#Раскомментируйте этот код,
#и внесите необходимые правки в версию и путь,
#чтобы работать с установленным вручную (не через 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_lb_backend" "lb" {
  #id балансировщика нагрузки
  #обязательный параметр
  #тип - целое число
  #используется при создании
  lb_id = 668

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

  #алгоритм балансировки
  #опциональный параметр
  #по умолчанию - "roundrobin"
  #доступные значения - "roundrobin", "static-rr", "leastconn"
  #тип - строка
  #используется при создании и обновлении
  #algorithm = "roundrobin"

  #-------------------
  #настройки для серверов по умолчанию
  #-------------------

  #интервал между проверками, в миллисекундах
  #опциональный параметр
  #по умолчанию - 5000
  #тип - целое число
  #используется при создании и обновлении
  #inter = 5000

  #интервал между проверками доступности сервера после восстановления, в миллисекундах
  #опциональный параметр
  #по умолчанию - 1000
  #тип - целое число
  #используется при создании и обновлении
  #downinter = 1000

  #кол-во проверок, которые сервер должен успешно пройти
  #опциональный параметр
  #по умолчанию - 2
  #тип - целое число
  #используется при создании и обновлении
  #rise = 2

  #кол-во проверок, которые сервер может не пройти и после этого получить статус "unavailable"
  #опциональный параметр
  #по умолчанию - 2
  #тип - целое число
  #используется при создании и обновлении
  #fall = 2

  #кол-во миллисекунд - время между получением сервера статуса "available" и открытием соединений
  #опциональный параметр
  #по умолчанию - 60000
  #тип - целое число
  #используется при создании и обновлении
  #slowstart = 60000

  #максимальное кол-во соединений сервера, при достижении этого кол-ва, сервер выходит из схемы балансирования
  #опциональный параметр
  #по умолчанию - 250
  #тип - целое число
  #используется при создании и обновлении
  #maxconn = 250

  #максимальное кол-во соединений в очереди серевера, при достижении этого кол-ва, соединения будут перенаправлены на другой сервер
  #опциональный параметр
  #по умолчанию - 256
  #тип - целое число
  #используется при создании и обновлении
  #maxqueue = 256

  #вес сервера для балансировки
  #опциональный параметр
  #мин - 0
  #макс - 255
  #по умолчанию - 100
  #тип - целое число
  #используется при создании и обновлении
  #weight = 100

  timeouts {
    create = "5m"
    read   = "5m"
    update = "5m"
    delete = "5m"
  }
  
}

output "test" {
  value = decort_lb_backend.lb
}
