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

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

provider "dynamix" {
  authenticator = "decs3o"
  #controller_url = <DYNAMIX_CONTROLLER_URL>
  controller_url = "https://ds1.digitalenergy.online"
  #oauth2_url = <DYNAMIX_OAUTH2_URL>
  oauth2_url           = "https://sso.digitalenergy.online"
  allow_unverified_ssl = true
}

resource "dynamix_account" "a" {
  #имя аккаунта
  #обязательный параметр
  #тип - строка
  #используется при создании и редактировании аккаунта
  account_name = "new_my_account"

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

  #доступность аккаунта
  #опциональный параметр
  #тип - булев
  #может применяться при редактировании аккаунта
  enable = true

  #id аккаунта, позволяет сформировать .tfstate, если аккаунт имеет в платформе
  #опциональный параметр
  #тип - целое число
  account_id = 11111

  #электронная почта, на которую будет отправлена информация о доступе
  #опциональный параметр
  #тип - строка
  #применяется при создании аккаунта
  emailaddress = "fff@fff.ff"

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

  #добавление/редактирование/удаление пользователей, к которым привязан аккаунт
  #опциональный параметр
  #тип - объект, кол-во таких объектов не ограничено
  users = [{
    #id пользователя
    #обязательный параметр
    #тип - строка
    user_id     = "username_2@decs3o"

    #тип доступа пользователя
    #обязательный параметр
    #тип - строка
    #возможные параметры:
    #R - чтение
    #RCX - запись
    #ARCXDU - админ
    access_type = "R"
  }]

  #ограничение используемых ресурсов
  #опциональный параметр
  #тип - объект
  #используется при создании и редактировании
  resource_limits = {
    #кол-во используемых ядер cpu
    #опциональный параметр
    #тип - целое число
    #если установлена -1 - кол-во неограиченно
    cu_c = 2

    #кол-во используемой RAM в МБ
    #опциональный параметр
    #тип - целое число
    #если установлена -1 - кол-во неограиченно
    cu_m = 1024

    #размер дисков, в ГБ
    #опциональный параметр
    #тип - целое число
    #если установлена -1 - размер неограичен
    cu_d = 23

    #кол-во используемых публичных IP
    #опциональный параметр
    #тип - целое число
    #если установлена -1 - кол-во неограиченно
    cu_i = 2

    #ограничения на кол-во передачи данных, в ГБ
    #опциональный параметр
    #тип - целое число
    #если установлена -1 - кол-во неограиченно
    cu_np = 2

    #кол-во графических процессоров
    #опциональный параметр
    #тип - целое число
    #если установлена -1 - кол-во неограиченно
    gpu_units = 2
  }

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

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

}

output "test" {
  value = dynamix_account.a
}
