Функция доступна в провайдере версии 4.5.1 и выше.

_Resource_ функция **decort_cb_account** служит для управления аккаунтами. Аккаунты в платформе позволяют создавать ресурсные группы, вычислительные мощности, виртуальные сети, управлять ресурсами и так далее. Аккаунты создают пользователи (user). Все административное взаимодействие внутри платформы строится на аккаунтах.

## Аргументы
_Resource_ функция **decort_cb_account** принимает следующие аргументы:

| Аргумент | Тип                                             | Обязательный | Описание                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| --- |-------------------------------------------------| :---: |------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| account_name | string                                          | :heavy_check_mark: | Имя аккаунта<br/>Используется при создании и редактировании                                                                                                                                                                                                                                                                                                                                                                                    |
| username | string                                          | :heavy_check_mark: | Имя пользователя - владельца аккаунта<br/>Используется при создании                                                                                                                                                                                                                                                                                                                                                                            |
| emailaddress | string                                          | :x: | Адрес электронной почты<br/>Используется при создании                                                                                                                                                                                                                                                                                                                                                                                          |
| send_access_emails | bool                                            | :x: | Флаг отправки электронного письма<br/>Используется при создании и редактировании<br/>По-умолчанию: true                                                                                                                                                                                                                                                                                                                                        |
| uniq_pools               | []string                                        | :x: | Список пулов. Например, ["sep1_poolName1", "sep2_poolName2"]                                                                                                                                                                                                                                                                                                                                                                                   |
| users | []Struct [см. ниже](#описание-блока-users-args) | :x: | Добавление/удаление пользователей в аккаунт                                                                                                                                                                                                                                                                                                                                                                                                    |
| cpu_allocation_parameter | string | :x:| Установить тип выделения ЦП:<br/>`strict` – ВМ не может быть запущена, если не хватает ресурсов ЦП;<br/>`loose` - можно запускать виртуальную машину, если не хватает ресурсов.                                                                                                                                                                                                                                                                                                                                                                                                                        |
| cpu_allocation_ratio | float | :x:| Установить коэффициент распределения ЦП для УЗ. Один pCPU = ratio*vCPU                                                                                                                                                                                                                                                                                                                                                                                                                     |
| restore | bool | :x: | Флаг восстановления аккаунта<br/>Используется при редактировании                                                                                                                                                                                                                                                                                                                                                                               |
| permanently | bool | :x: | Флаг удаления аккаунта<br/>Если выставлен в true, то аккаунт и все с ним связанное удаляется моментально<br/>Если false - то аккаунт попадает в "корзину", где хранится некоторое время. Из "корзины" аккаунт можно восстановить<br/>По-умолчанию: false<br/>Используется при удалении                                                                                                                                                         |
| enable | bool | :x: | Флаг доступности аккаунта<br/>Используется при редактировании                                                                                                                                                                                                                                                                                                                                                                                  |
| resource_limits | []Struct [см. ниже](#описание-блока-resource_limits-args)| :x: | Ресурсы аккаунта. Используется при создании и редактировании аккаунта<br/>По-умолчанию, все ресурсы выставлены в -1, что обозначает их использование без ограничений.<br/>Значение 0 недопустимо. Должен быть использован хотя бы минимальные экземпляр ресурса. |
| account_id | int | :x: | ID аккаунта, используется для формирования .tfstate, если аккаунт уже был создан в платформе<br/>Может использоваться при создании аккаунта |

### Описание блока users args
| Аргумент         | Тип    | Обязательный       | Описание                                                                                                                                                                                                                                           |
|------------------|--------|--------------------| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| user_id          | string | :heavy_check_mark: | ID пользователя(его имя)                                                                                                                                                                                                                                 |
| access_type      | string | :heavy_check_mark: |Тип доступа пользователя. R - чтение, RCX - запись, ARCXDU - админ| 
| recursive_delete | bool   | :x:               | Флаг рекурсивного удаления пользователя |

### Описание блока resource_limits args
| Аргумент  | Тип   | Обязательный | Описание                                           |
|-----------|-------|--------------|----------------------------------------------------|
| cu_c      | float | :x:          | Количество ядер CPU                                |
| cu_d      | float | :x:          | Размер диска                                       |
| cu_dm     | float | :x:          | Использованный размер хранилища виртуального диска |
| cu_i      | float | :x:          | Количество публичных IP адресов                    |
| cu_m      | float | :x:          | размер RAM                                         |
| cu_np     | float | :x:          | Хранилище траффика                                 |
| gpu_units | float | :x:          | количество GPU ядер                                |

## Возвращаемые значения
В случае успешного выполнения _resource_ функция **decort_cb_account** возвращает в указанную при вызове переменную элемент, который состоит из следующих параметров:

| Параметр | Тип | Описание                                                                                                                                                                                                                                                                                                                                                                                  |
| --- | --- |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| account_id | int | ID аккаунта                                                                                                                                                                                                                                                                                                                                                                               |
|dc_location|string| dc location                                                                                                                                                                                                                                                                                                                                                                               |
| ckey | string | CKey                                       |
| acl | []Struct [см. ниже](#описание-структуры-acl)| Cписок Acces Control |
| company | string | Название компании, которой принадлежит аккаунт                                                                                                                                                                                                                                                                                                                                            |
| companyurl | string | url-адрес компани                                                                                                                                                                                                                                                                                                                                                                         |
| cpu_allocation_parameter | string | Параметр выделения CPU |
| cpu_allocation_ratio | float | Отношение выделения CPU |
| created_by | string | Пользователь - создателя аккаунта                                                                                                                                                                                                                                                                                                                                                         |
| created_time | int | Время создания аккаунта                                                                                                                                                                                                                                                                                                                                                                   |
| deactivation_time | float | Время деактивации аккаунта                                                                                                                                                                                                                                                                                                                                                                |
| deleted_by | string | Пользователь, удаливший аккаунт                                                                                                                                                                                                                                                                                                                                                           |
| deleted_time | int | Время удаления аккаунта                                                                                                                                                                                                                                                                                                                                                                   |
| displayname | string | Отображаемое имя аккаунта                                                                                                                                                                                                                                                                                                                                                                 |
| guid | int | Внутренний guid аккаунта                                                                                                                                                                                                                                                                                                                                                                  |
| account_name | string | Название аккаунта                                                                                                                                                                                                                                                                                                                                                                         |
| resource_limits | Struct{} [см. ниже](#описание-структуры-resource_limits) | Лимиты ресурсов |
| resource_types           | []string                                                 | Типы ресурсов                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| send_access_emails | bool | Флаг, отправлять ли на указанную почту письмо о доступе                                                                                                                                                                                                                                                                                                                                   |
| status | string | Статус аккаунта                                                                                                                                                                                                                                                                                                                                                                           |
| uniq_pools               | []string                                                 | Список пулов                                                                                                                                                                                                                                                                                                                                                                                                        |
| updated_time | int | Время последнего обновления                                                                                                                                                                                                                                                                                                                                                               |
| version | int | Версия аккаунта                                                                                                                                                                                                                                                                                                                                                                           |
| vins | []int | Список id виртуальных сетей                                                                                                                                                                                                                                                                                                                                                               |

### Описание структуры acl
| Параметр | Тип | Описание |
| --- | --- | --- |
| explicit | bool | Явно ли указан доступ |
| guid | string | guid Ресурса |
| right | string | Права на ресурс |
| status | string | Статус ресурса |
| type | string | Тип ресурса |
| user_group_id | string | ID user group |

### Описание структуры resource_limits
| Параметр | Тип | Описание |
| --- | --- | --- |
| cu_c | float | Количество ядер CPU |
| cu_d | float | Размер диска |
| cu_dm | float | Использованный размер хранилища виртуального диска | 
| cu_i | float | Количество публичных IP адресов |
| cu_m | float | размер RAM |
| cu_np | float | Хранилище траффика |
| gpu_units | float | количество GPU ядер |

## Пример использования
Пример вызова _resource_ функции **decort_cb_account**:
```terraform
resource "decort_cb_account" "a" {
  #имя аккаунта
  #обязательный параметр
  #тип - строка
  #используется при создании и редактировании аккаунта
  account_name = "new_my_account"

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

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

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

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

  #пары sep_id и sep_pool_name
  #необязательный параметр
  #тип - список строк
  #применяется при создании аккаунта и редактировании аккаунта
  #каждая строка представляет собой пару, sepID_sepPoolName
  uniq_pools = ["sep1_poolName1", "sep2_poolName2"]

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

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

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

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

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

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

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

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

    #рекурсивное удаление пользователя из всех ресурсов аккаунтов
    #необязательный параметр
    #тип - булев тип
    #по-умолчанию - false
    #применяется при удалении пользователя из аккаунта
    recursive_delete = true
  }
  */

  #параметр распределения CPU 
  #необязательный параметр
  #тип - строка
  #если "strict" виртуальная машина не может быть запущена из-за нехватки ресурсов.
  #"loose" позволяет запускать виртуальную машину, если недостаточно ресурсов.
  #cpu_allocation_parameter = "strict"

  #параметр коэффициента распределения CPU 
  #необязательный параметр
  #тип - число
  #один pCPU = коэффициент*vCPU (принимает нулевое или положительное значение)
  #cpu_allocation_ratio = 1

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

  #флаг для восстановление аккаунта из корзины
  #необязательный параметр
  #тип - булев тип
  #restore = true
}
# once the above directive completes, account will be accessible 
# as decort_cb_account.a
```

Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DECORT см. соответствующий [раздел](https://repository.basistech.ru/BASIS/wiki-terraform-provider-decort/src/branch/main/4.5.2/04.02-Инициализация-Terraform-провайдера-DECORT.md)). 

После успешного завершения такого вызова **decort_cb_account** в переменной `decort_cb_account.a` будут сохранены возвращаемые значения.
