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

_Resource_ функция **decort_cb_rg** служит для управления ресурсными группами в облачной платформе DECORT.

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

| Аргумент                 | Тип                                                                                                                                 | Обязательный       | Описание                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|--------------------------|-------------------------------------------------------------------------------------------------------------------------------------|--------------------| |
| account_id               | int                                                                                                                                 | :heavy_check_mark: | Идентификатор подписчика (aka "account"), которому будет принадлежать создаваемая ресурсная группа.                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| rg_name                  | string                                                                                                                              | :heavy_check_mark: | Имя ресурсной группы. Должно быть уникальным в рамках одного и того же  подписчика ("account"), не может быть пустым.                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| gid                      | int                                                                                                                                 | :heavy_check_mark: | Идентификатор площадки (grid id)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| owner                    | string                                                                                                                              | :x:                | Имя пользователя – владелец этой РГ. Оставьте поле пустым, чтобы назначить текущего пользователя владельцем.                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| def_net_type             | string                                                                                                                              | :x:                | Тип сети по умолчанию для этой РГ. Виртуальные машины, созданные в этой РГ, будут по умолчанию подключены к этой сети. Допустимые значения: `PRIVATE`, `PUBLIC`, `NONE`. Значение по умолчанию: `PRIVATE`.                                                                                                                                                                                                                                                                                                                                                            |
| description              | string                                                                                                                              | :x:                | Текстовое описание данной ресурсной группы.<br/>Данный параметр не является обязательным, значение по умолчанию - пустая строка.                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| ext_ip                   | string                                                                                                                              | :x:                | IP адрес из диапазона, принадлежащего внешней сети, который будет присвоен подключению ViNS во внешнюю сеть в случае, когда `def_net_type = "PRIVATE"` и ненулевом `ext_net_id`. При других значениях `def_net_type` данный параметр игнорируется.<br/>Если данный параметр не указан явно, то платформа автоматически выберет свободный IP адрес.<br/>Если заданный `ext_ip` уже используется, платформа вернёт ошибку.                                                                                                                                              |
| ext_net_id               | int                                                                                                                                 | :x:                | Идентификатор внешней сети, в которую будет подключён ViNS, автоматически создаваемый платформой для данной ресурсной группы в случае, когда `def_net_type = "PRIVATE"`. При других значениях `def_net_type` данный параметр игнорируется.<br/>Если данный параметр не задан явно при `def_net_type = "PRIVATE"`, то платформа выберет первую из доступных данному пользователю внешних сетей.                                                                                                                                                                        |
| ipcidr                   | string                                                                                                                              | :x:                | Адрес сети внутри ViNS для случая `def_net_type = "PRIVATE"`<br/>Если данный параметр явно не задан, то платформа назначит адрес сети автоматически.                                                                                                                                                                                                                                                                                                                                                                                                                  |
| resource_limits          | []Struct{<br/>cu_c int;<br/>&nbsp;<br/>cu_dm int;<br/>&nbsp;<br/>cu_i int;<br/>&nbsp;<br/>cu_m int;<br/>&nbsp;<br/>cu_np int;<br/>} | :x:                | Квоты на объем ресурсов, устанавливаемые для данной ресурсной группы:<br/>&nbsp;<br/>Максимальное количество ядер процессора;<br/>&nbsp;<br/>Максимальный размер агрегированных виртуальных дисков в ГБ;<br/>&nbsp;<br/>Максимальное количество назначенных публичных IP-адресов;<br/>&nbsp;<br/>Максимальный объем памяти в МБ;<br/>&nbsp;<br/>Максимальный отправленный / полученный пиринг сетевой передачи.                                                                                                                                                       |
| reason                   | string                                                                                                                              | :x:                | Причина создания/изменения ресурсной группы.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| register_computes        | bool                                                                                                                                | :x:                | Флаг регистрации ВМ во внешней системе                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| uniq_pools               | []string                                                                                                                            | :x:                | Список пулов. Например, ["sep1_poolName1", "sep2_poolName2"]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| access                   | []Struct{<br/>user string;<br/>&nbsp;<br/>right string;<br/>&nbsp;<br/>reason string;<br/>}                                         | :x:                | Блок для предоставления пользователю или группе пользователей доступа к ресурсной группе:<br/>&nbsp;<br/>Имя пользователя или группы для предоставления доступа (обязательный параметр в блоке access);<br/>&nbsp;<br/>Права доступа: "R", "RCX" или "ARCXDU" (обязательный параметр в блоке access);<br/>&nbsp;<br/>Причина действия.                                                                                                                                                                                                                                |
| def_net                  | []Struct{<br/>&nbsp;<br/>net_type string;<br/>&nbsp;<br/>net_id int;<br/>&nbsp;<br/>reason string;<br/>&nbsp;<br/>}                 | :x:                | Блок для установки сети по умолчанию для подключения связанных виртуальных машин:<br/>&nbsp;<br/>Тип сети: `PRIVATE` или `PUBLIC` (обязательный параметр в блоке def_net);<br/>&nbsp;<br/>ID сегмента сети. Если `net_type` равен `PUBLIC`, а `net_id` равен 0, то будет выбран сегмент внешней сети по умолчанию. Если `net_type` = `PRIVATE` и `net_id` = 0, будет выбран первый ViNS, определенный для этой РГ. В противном случае `net_id` определяет либо существующий сегмент внешней сети, либо ViNS. Значние по умолчанию 0;<br/>&nbsp;<br/>Причина действия. |
| cpu_allocation_parameter | string                                                                                                                              | :x:                | Установить тип выделения ЦП:<br/>`strict` – ВМ не может быть запущена, если не хватает ресурсов ЦП;<br/>`loose` - можно запускать виртуальную машину, если не хватает ресурсов.                                                                                                                                                                                                                                                                                                                                                                                       |
| cpu_allocation_ratio     | float                                                                                                                               | :x:                | Установить коэффициент распределения ЦП для УЗ. Один pCPU = ratio*vCPU                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| enable                   | bool                                                                                                                                | :x:                | Флаг доступности ресурсной группы                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| restore                  | bool                                                                                                                                | :x:                | Флаг восстановления ресурсной группы<br/>Используется при редактировании                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| permanently              | bool                                                                                                                                | :x:                | Безвозвратное удаление ресурсной группы. Используется при удалении                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| force                    | bool                                                                                                                                | :x:                | Удаление ресурсной группы, в случае если она к чему-то присоединена произойдет отсоединение от других ресурсов и удаление                                                                                                                                                                                                                                                                                                                                                                                                                                             |

Для создания ресурсной группы пользователь облачной платформы, от лица которого происходит обращение к данной функции, должен иметь как минимум доступ на запись к указанному подписчику. В противном случае возникнет ошибка доступа.

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

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

| Параметр                 | Тип                                                      | Описание                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
|--------------------------|----------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| account_id               | int                                                      | Уникальный идентификатор подписчика-владельца данной ресурсной группы.                                                                                                                                                                                                                                                                                                                                                                                                  |
| account_name             | string                                                   | Имя подписчика ("account"), которому принадлежит данная ресурсная группа.                                                                                                                                                                                                                                                                                                                                                                                               |
| acl                      | []Struct [см. ниже](#описание-структуры-acl)             | Cписок Acces Control                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| cpu_allocation_parameter | string                                                   | Параметр выделения CPU                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| cpu_allocation_ratio     | float                                                    | Отношение выделения CPU                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| created_by               | string                                                   | Пользователь - создатель ресурсной группы                                                                                                                                                                                                                                                                                                                                                                                                                               |
| created_time             | int                                                      | Время создания ресурсной группы                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| def_net_id               | int                                                      | Уникальный идентификатор сети, установленной по умолчанию для данной ресурсной группы. Экземпляры _compute_, создаваемые в данной ресурсной группе, по умолчанию будут иметь подключение к данной сети, если при их создании явно не указано иное.<br/>Для `def_net_type = "EXTNET" в этом параметре указан идентификатор внешней сети. Для `def_net_type = "PRIVATE" - идентификатор ViNS.                                                                             |
| def_net_type             | string                                                   | Тип сети, установленной по умолчанию для данной ресурсной группы. Может принимать одно из следующих значений:<br> * EXTNET - подключение во внешнюю сеть с идентификатором `def_net_id`<br> * PRIVATE - подключение в виртуальный сетевой сегмент (ViNS ) с идентификатором `def_net_id`<br> * NONE - сеть по умолчанию не задана, экземпляры _compute_ в данной ресурсной группе будут создаваться без сетевых подключений, если при их создании явно не указано иное. |
| deleted_by               | string                                                   | Информация о том, кто удалил группу                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| deleted_time             | int                                                      | Время удаления группы                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| description              | string                                                   | Текстовое описание данной ресурсной группы.                                                                                                                                                                                                                                                                                                                                                                                                                             |
| gid                      | int                                                      | GRID ID                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| guid                     | int                                                      | ID ресурса                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| lock_status              | string                                                   | Статус доступности                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| milestones               | int                                                      | Вехи                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| rg_name                  | string                                                   | Имя данной ресурсной группы. Обратите внимание, что имя ресурсной группы является уникальным только в рамках одного и того же подписчика ("account").                                                                                                                                                                                                                                                                                                                   |
| rg_id                    | int                                                      | Идентификатор данной ресурсной группы.                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| register_computes        | bool                                                     | Флаг регистрации ВМ во внешней системе                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| resource_limits          | []Struct [см. ниже](#описание-структуры-resource_limits) | Лимиты ресурсов                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| resource_types           | []string                                                 | Типы ресурсов                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| secret                   | string                                                   | Секрет                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| status                   | string                                                   | Статус ресурсной группы                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| uniq_pools               | []string                                                 | Список пулов. Например, ["sep1_poolName1", "sep2_poolName2"]                                                                                                                                                                                                                                                                                                                                                                                                            |
| updated_by               | string                                                   | Кем был обновлен ресурс                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| updated_time             | int                                                      | Время последнего обновления ресурса                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| vins                     | []int                                                    | Список виртуальных сетей                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| vms                      | []int                                                    | Список id компьютов                                                                                                                                                                                                                                                                                                                                                                                                                                                     |

### Описание структуры acl
| Параметр | Тип | Описание |
| --- | --- | --- |
| explicit | bool | Видимость аккаунта |
| guid | string | GUID |
| right | string | Права |
| status | string | Статус |
| type | string | Тип |
| user_group_id | string | ID группы юзеров |

### Описание структуры 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_rg** создаётся ресурсная группа со следующими характеристиками:
* Имя создаваемой ресурсной группы - "testing_rg_1"
* Идентификатор подписчика-владельца ("account") - 123
* Gid площадки - 1234
* Квоты на объёмы ресурсов отсутствуют (нет ограничений).

```terraform
resource "decort_cb_rg" "my_new_rg" {
  rg_name = "testing_rg_1"
  account_id = 123
  gid = 1234
  
/*
  resource_limits  {
  #cu_c = 12
  #cu_dm = 12
  #cu_i = 12
  #cu_m = 12
  #cu_np = 12
  }
*/

  #owner = "owner name"
  #def_net_type = "NONE"
  #ipcidr = "1.1.1.1"
  #description = "qwerty"
  #ext_net_id = 123
  #ext_ip = "1.1.1.1"
  #reason = "TEST"
  #register_computes = true
  #uniq_pools = ["sep1_poolName1", "sep2_poolName2"]

/*
  access  {
    user = "kasim_baybikov_1@decs3o"
    right = "RCX"
    #reason = "test"
  }
*/

/*
  def_net {
    net_type = "PUBLIC"
    #net_id = 1234
    #reason = "TEST"
  }
*/

  #cpu_allocation_parameter = "loose"
  #cpu_allocation_ratio = 1
  
  #enable = true
  #restore = false
  #force = true
  #permanently = true
}
```

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

После успешного завершения такого вызова _resource_ функции **decort_cb_rg** в переменной `decort_cb_rg.my_new_rg` будут сохранены возвращаемые значения. В частности, для получения идентификатора ресурсной группы следует использовать конструкцию `decort_resgroup.my_new_rg.rg_id`.
