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

_Resource_ функция **decort_cb_lb** служит для управления балансировщиком нагрузки (load balancer). Балансировщики нагрузки служат для равномерного распределения сетевой нагрузки между подключенными к ним сервисами.

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

| Аргумент     | Тип    |    Обязательный    | Описание                                                                                                                                                                                                                                                                     |
|--------------|--------|:------------------:|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| rg_id        | int    | :heavy_check_mark: | ID ресурсной группы                                                                                                                                                                                                                                                          |
| name         | string | :heavy_check_mark: | Название балансировщика                                                                                                                                                                                                                                                      |
| extnet_id    | int    | :heavy_check_mark: | ID внешней сети. extnet_id и vins_id не могут быть одновременно равны 0.                                                                                                                                                                                                     |
| vins_id      | int    | :heavy_check_mark: | ID виртуальной сети. extnet_id и vins_id не могут быть одновременно равны 0.                                                                                                                                                                                                 |
| start        | bool   | :heavy_check_mark: | Флаг запуска балансировщика. По умолчанию - true. Eсли load balancer был в статусе "stopped" (start = false), то для успешного старта, он должен быть доступен (enable = true)                                                                                               |
| desc         | string |        :x:         | Описание балансировщика                                                                                                                                                                                                                                                      |
| enable       | bool   |        :x:         | Флаг доступности балансировщика                                                                                                                                                                                                                                              |
| restart      | bool   |        :x:         | Флаг перезагрузки балансировщика. Можно использовать только на созданном ресурсе. По умолчанию - false. Перезагрузка происходит только при смене флага с false на true                                                                                                       |
| config_reset | bool   |        :x:         | Флаг сброса конфигурации балансировщика. По умолчанию - false. Сброс происходит только при изменении флага с false на true                                                                                                                                                   |
| ha_mode      | bool   |        :x:         | Использовать высокодоступную схему для развертывания LB                                                                                                                                                                                                                      |
| permanently  | bool   |        :x:         | Флаг моментального удаления балансировщика из платформы. По-умолчанию - false. При необходимости, после изменения значения флага, необходимо выполнить `terraform apply` для изменения значения флага в состоянии терраформа, а после этого - `terraform destroy`            |
| restore      | bool   |        :x:         | Флаг восстановления балансировщика после удаления. Восстановить возможно только балансировщики, удаленные с флагом permanently равным false. Предварительно, необходимо импортировать удаленный ресурс и изменить значение флага. После этого - выполнить `terraform apply`. |


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

| Параметр        | Тип                                                               | Описание                                     |
|-----------------|-------------------------------------------------------------------|----------------------------------------------|
| ha_mode         | bool                                                              | Флаг, показывающий, включен ли режим haproxy |
| ckey            | string                                                            | CKey                                         |
| meta            | []string                                                          | Мета информация                              |
| acl             | string                                                            | Cписок Acces Control                         |
| backend_haip    | string                                                            | Backend highly available ip                  |
| backends        | []Struct{} [см. ниже](#описание-структуры-backends)               | Список бекендов                              |
| desc            | string                                                            | Описание                                     |
| dp_api_user     | string                                                            | Имя пользователя для работы                  |
| dp_api_password | string                                                            | Пароль пользователя для работы               |
| extnet_id       | int                                                               | ID внешней сети                              |
| frontend_haip   | string                                                            | Frontend highly available ip                 |
| frontends       | []Struct{} [см. ниже](#описание-структуры-frontends)              | Список фронтендов                            |
| gid             | int                                                               | Grid ID балансировщика                       |
| guid            | int                                                               | ID балансировщика                            |
| lb_id           | int                                                               | ID балансировщика                            |
| image_id        | int                                                               | ID образа                                    |
| milestones      | int                                                               | Вехи                                         |
| name            | string                                                            | Имя балансировщика                           |
| part_k8s        | bool                                                              | Является ли балансироващик частью кластера   |
| primary_node    | Struct{} [см. описание узлов](#описание-структуры-primary_node)   | Главный узел                                 |
| rg_id           | int                                                               | ID ресурсной группы                          |
| secondary_node  | Struct{} [см. описание узлов](#описание-структуры-secondary_node) | Второй узел                                  |
| status          | string                                                            | Статус                                       |
| tech_status     | string                                                            | Технический статус                           |
| vins_id         | int                                                               | ID виртуальной сети                          |

### Описание структуры backends
| Параметр                | Тип                                                              | Описание                                        |
|-------------------------|------------------------------------------------------------------|-------------------------------------------------|
| algorithm               | string                                                           | Алгоритм работы бекенда                         |
| guid                    | string                                                           | ID ресурса                                      |
| name                    | string                                                           | Имя бекенда                                     |
| server_default_settings | Struct{} [см. ниже](#описание-структуры-server_default_settings) | Описание настроек серверов бекенда по умолчанию |
| servers                 | []Struct{} [см. ниже](#описание-структуры-servers)               | Список серверов                                 |

### Описание структуры server_default_settings
| Параметр  | Тип    | Описание                                                                                         |
|-----------|--------|--------------------------------------------------------------------------------------------------|
| guid      | string | ID ресурса                                                                                       |
| downinter | int    | Интервал между проверками на недоступность сервера                                               |
| inter     | int    | Интервал между проверками на доступность сервера                                                 |
| rise      | int    | Кол-во попыток, после которых, сервер будет вновь включен в схему балансирования                 |
| fall      | int    | Кол-во неудачных попыток, после которых, сервер получит статус "unavailable"                     |
| slowstart | int    | Интервал, в мс, в через который сервер получит статус "available"                                |
| maxconn   | int    | Кол-во соединений к северу, при достижении этого кол-ва, сервера выходит из схемы балансирования |
| maxqueue  | int    | Кол-во соедений в очереди к серверу                                                              |
| weight    | int    | Вес сервера для работы алгоритма балансирования по весу                                          |

### Описание структуры servers
| Параметр        | Тип                                             | Описание             |
|-----------------|-------------------------------------------------|----------------------|
| address         | string                                          | Адрес сервера        |
| check           | string                                          | Включены ли проверки |
| name            | string                                          | Имя сервера          |
| guid            | string                                          | ID ресурса           |
| port            | int                                             | Порт сервера         |
| server_settings | [см. ниже](#описание-структуры-server_settings) | Настройки сервера    |

### Описание структуры server_settings
| Параметр  | Тип    | Описание                                                                                         |
|-----------|--------|--------------------------------------------------------------------------------------------------|
| guid      | string | ID ресурса                                                                                       |
| downinter | int    | Интервал между проверками на недоступность сервера                                               |
| inter     | int    | Интервал между проверками на доступность сервера                                                 |
| rise      | int    | Кол-во попыток, после которых, сервер будет вновь включен в схему балансирования                 |
| fall      | int    | Кол-во неудачных попыток, после которых, сервер получит статус "unavailable"                     |
| slowstart | int    | Интервал, в мс, в через который сервер получит статус "available"                                |
| maxconn   | int    | Кол-во соединений к северу, при достижении этого кол-ва, сервера выходит из схемы балансирования |
| maxqueue  | int    | Кол-во соедений в очереди к серверу                                                              |
| weight    | int    | Вес сервера для работы алгоритма балансирования по весу                                          |

### Описание структуры frontends
| Параметр | Тип                                                 | Описание                                   |
|----------|-----------------------------------------------------|--------------------------------------------|
| backend  | string                                              | Имя бекенда, к которому подключен фронтенд |
| guid     | string                                              | ID ресурса                                 |
| name     | string                                              | Имя фронтенда                              |
| bindings | []Struct{} [см. ниже](#описание-структуры-bindings) | Привязки фронтенда                         |

### Описание структуры bindings
| Параметр | Тип    | Описание                            |
|----------|--------|-------------------------------------|
| address  | string | Адрес, к которому привязан фронтенд |
| name     | string | Имя привязки                        |
| guid     | string | ID ресурса                          |
| port     | int    | Порт привязки                       |

### Описание структуры primary_node
| Параметр    | Тип    | Описание              |
|-------------|--------|-----------------------|
| backend_ip  | string | IP адрес бекенда      |
| compute_id  | int    | ID виртуальной машины |
| frontend_ip | string | IP адрес фронтенда    |
| guid        | string | ID ресурса            |
| mgmt_ip     | string | IP адрес              |
| network_id  | int    | ID сети               |

### Описание структуры secondary_node
| Параметр    | Тип    | Описание              |
|-------------|--------|-----------------------|
| backend_ip  | string | IP адрес бекенда      |
| compute_id  | int    | ID виртуальной машины |
| frontend_ip | string | IP адрес фронтенда    |
| guid        | string | ID ресурса            |
| mgmt_ip     | string | IP адрес              |
| network_id  | int    | ID сети               |

## Ограничение на наименование ресурса
Ресурс не должен содержать в названии символ `#`


## Пример использования
Пример вызова _resource_ функции **decort_cb_lb**:

```terraform
resource "decort_cb_lb" "lb" {
  rg_id = 1111
  name = "tf-test-lb"
  extnet_id = 6
  vins_id = 758
  start = true
  #ha_mode = true
  #desc = "temp super lb for testing tf provider"
  #enable = true
  #restart      = false
  #config_reset = false
  #permanently = false
  #restore = true
}
```

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