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

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

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

  #id внешней сети
  #опциональный параметр
  #id внешней сети и id виртуальной сети не могут быть одновременно = 0
  #тип - целое число
  #используется при создании
  #extnet_id = 6

  #id виртуальной сети
  #опциональный параметр
  #id внешней сети и id виртуальной сети не могут быть одновременно = 0
  #тип - целое число
  #используется при создании
  #vins_id = 758

  #флаг запуска load balancer
  #обязательный параметр
  #если load balancer был в статусе "stopped" (start = false), 
  #то для успешного старта, он должен быть доступен (enable = true)
  #по умолчанию - true
  #тип - булев
  #используется при создании и обновлении
  start = true

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

  #описание
  #опциональный параметр
  #тип - строка
  #используется при создании и обновлении
  #desc = "temp super lb for testing tf provider"

  #флаг доступности load balancer
  #опциональный параметр
  #тип - булев
  #используется при создании и обновлении
  #enable = true

  #флаг перезапуска load balancer
  #перезагрузка срабатывает только при изменении флага с false на true
  #опциональный параметр
  #тип - булев
  #используется при обновлении
  #restart = false

  #флаг сброса конфигурации load balancer
  #сброс срабатывает только при изменении флага с false на true
  #опциональный параметр
  #тип - булев
  #используется при обновлении
  #config_reset = false

  #флаг для удаления load balancer, без возможности восстановления
  #опциональный параметр
  #по умолчанию - false
  #тип - булев
  #используется при удалении
  #permanently = false

  #флаг восстановления load balancer
  #опциональный параметр
  #восстановить можно load balancer, удаленным с флагом permanently = false
  #тип - булев
  #используется при обновлении
  #restore = true

  #флаг используемый при рестарте load balancer
  #опциональный параметр
  #при значении  "true" рестарт производится на обоих нодах в HA mode
  #по умолчанию - true
  #тип - булев
  #используется при обновлении
  #safe = true

  #пользовательские значения sysctl для LB
  #опциональный параметр
  #тип - список мап
  #используется при создании и обновлении
  #sysctl_params = [{ key1 = "value1", key2 = "value2" }]
}

output "test" {
  value = decort_lb.lb
}
