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

#Раскомментируйте код ниже,
#и внесите необходимые правки в версию и путь,
#чтобы работать с установленным вручную (не через 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_cb_sep" "s" {
  #grid id
  #обязательный параметр
  #тип - целое число
  #используется при создании
  gid = 212

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

  #тип sep
  #обязательный параметр
  #возможные значения - des, dorado, tatlin, hitachi, ovs, local, shared
  #тип - строка
  #используется при создании
  type = "des"

  #конфигурация sep
  #обязательный параметр
  #представляет собой json-строку
  #тип - строка
  #используется при создании
  config = file("./config.json")

  #описание sep
  #опциональный параметр
  #тип - строка
  #используется при создании
  #desc = "rrrrr"

  #предоставление/отключение доступа указанных аккаунтов к sep
  #опциональный параметр
  #тип - массив целых чисел
  #используется при создании
  #account_ids = [12, 245]

  #предоставление/отключение доступа к пулу на sep
  #опциональный параметр
  #тип - блок доступа к пулу
  #используется при создании
  #access_to_pool {
    #имя pool
    #обязательный параметр
    #тип - строка
    #pool_name  = "pool name"

    #id аккаунта
    #опциональный параметр
    #тип - целое число
    #account_id_pool = 123

    #id ресурсной группы
    #опциональный параметр
    #тип - целое число
    #rg_id = 1234
  #}

  #доступность sep
  #опциональный параметр
  #по умолчанию - false
  #тип - булев
  #используется при создании
  #enable = false

  #использование нодами
  #опциональный параметр
  #тип - массив целых чисел
  #используется при создании
  #consumed_by = []

  #id provided nodes
  #опциональный параметр
  #тип - массив целых чисел
  #используется при создании
  #provided_by = [16, 14, 15]

  #добавление/удаление pools к/из sep 
  #опциональный параметр
  #тип - блок pools
  #используется при создании
  #pools {
    #идентификаторы учетных записей доступа
    #обязательный параметр
    #тип - массив целых чисел
    #access_account_ids = [1, 2, 3]

    #идентификаторы групп ресурсов доступа
    #обязательный параметр
    #тип - массив целых чисел
    #access_res_group_ids = [10, 20, 30]

    #имя пула
    #опциональный параметр
    #тип - строка   
    #name = "example_pool_name"

    #тип пула
    #опциональный параметр
    #тип - массив строк                 
    #types = ["type1", "type2"]

    #адреса узлов хранения
    #опциональный параметр
    #тип - блок ip адресов   
    #uris {
      #ip адрес узла
      #обязательный параметр
      #тип - строка
      #ip = "192.168.1.1"
      
      #порт узла
      #обязательный параметр
      #тип - целое число
      #port = 8080
      #}

    #доступный объем пула
    #обязательный параметр
    #тип - целое число
    #usage_limit = 1000
  #}

}

output "test" {
  value = decort_cb_sep.s
}

output "config" {
  value = jsondecode(decort_cb_sep.s.config)
}
