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

_Resource_ функция **decort_cb_vins** служит для управления виртуальными сетевыми сегментами (Virtual Network Segment) в платформе DECORT.

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

| Аргумент             | Тип                                                                                                                                                                         | Обязательный | Описание                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
|----------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| --- |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| name                 | string                                                                                                                                                                      | :heavy_check_mark: | Имя виртуального сетевого сегмента (ViNS), по которому требуется получить информацию. Имя не может быть пустым.<br/>ViNS идентифицируется по комбинации имени и идентификатора ресурсной группы (`rg_id`) или подписчика (`account_id`).<br>Обратите внимание, что имя ViNS является уникальным в рамках "account" и ресурсной группы.                                                                                                                                                                                                                      |
| account_id           | int                                                                                                                                                                         | :heavy_check_mark: | ID аккаунта, в котором будет создан vins. Для создания vins должен быть указан или account_id, или rg_id.                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| rg_id                | int                                                                                                                                                                         | :heavy_check_mark: | Идентификатор ресурсной группы, в которой будет создан vins. Для создания vins должен быть указан или account_id, или rg_id.                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ext_net_id           | int                                                                                                                                                                         | :x: | Идентификатор внешней сети, в которую должен быть подключён ViNS. ViNS, созданные на уровне "account", не могут иметь подключений к внешним сетям.<br/>-1 – не подключаться к extnet;<br/>0 – автоматический выбор;<br/>1+ – extnet ID.<br/>Значение по умолчанию -1.                                                                                                                                                                                                                                                                                       |
| ext_ip               | string                                                                                                                                                                      | :x: | IP внешней сети, относится только к extNetId >= 0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ipcidr               | string                                                                                                                                                                      | :x: | IP CIDR, который требуется присвоить внутреннему сегменту данного ViNS. <br/>Данный параметр не является обязательным и принимается во внимание только на стадии создания нового ViNS. Если он не задан, то платформа установит значение самостоятельно.                                                                                                                                                                                                                                                                                                    |
| pre_reservations_num | int                                                                                                                                                                         |:x:| Количество предварительно созданных резерваций. Значение по умолчанию 32.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| gid                  | int                                                                                                                                                                         |:x:| ID кластера                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | 
| description          | string                                                                                                                                                                      |:x:| Текстовое описание vins.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| reason               | string                                                                                                                                                                      |:x:| Причина создания/изменения vins.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| routes               | []Struct{<br/>destination string;<br/>netmask string;<br/>gateway string<br/>}                                                                                              |:x:| Список статических маршрутов. Элемент списка состоит из:<br/>&nbsp;<br/>адреса сети назначения,<br/>&nbsp;<br/>маски сети,<br/>&nbsp;<br/>шлюза по умолчанию.                                                                                                                                                                                                                                                                                                                                                                                               |
|default_qos| Struct{<br/>in_rate int;<br/>&nbsp;<br/>in_burst int;<br/>&nbsp;<br/>e_rate int<br/>}                                                                                       |:x:| Обновить значения QoS по умолчанию:<br/>&nbsp;<br/>Внутренний трафик, Кбит<br/>&nbsp;<br/>Burst внутреннего трафика, Кбит<br/>&nbsp;<br/>Rate внешнего трафика, Кбит                                                                                                                                                                                                                                                                                                                                                                                        |
|enable| bool                                                                                                                                                                        |:x:| Флаг включения внутренней сети                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|permanently| bool                                                                                                                                                                        |:x:| Флаг для удаления ресурса vins без возможности восстановления.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|force| bool                                                                                                                                                                        |:x:| Флаг для принудительного удаления ресурса vins.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
|ip| []Struct{<br/>&nbsp;<br/>type string;<br/>&nbsp;<br/>ip_addr string;<br/>&nbsp;<br/>mac string;<br/>&nbsp;<br/>compute_id int;<br/>&nbsp;<br/>reason string;<br/>&nbsp;<br/>} |:x:| Создать/удалить резервирование DHCP на внутренней сети:<br/>&nbsp;<br/>Тип резервирования (обязательный параметр структуры ip)<br/>&nbsp;<br/>Используемый IP-адрес. Для типа "EXCLUDE" требуется непустая строка. Игнорируется для типов "DHCP" и "VIP".<br/>&nbsp;<br/>MAC-адрес для связи с резервированием IP-адресов. Игнорируется для типа "EXCLUDE", непустая строка требуется для "DHCP" и "VIP"<br/>&nbsp;<br/>ID виртуальной машины, связанной с этим резервированием типа "DHCP". Игнорируется для других типов.<br/>&nbsp;<br/>Причина действия |
|nat_rule| []Struct{<br/>int_ip string;<br/>&nbsp;<br/>int_port int;<br/>&nbsp;<br/>ext_port_start int;<br/>&nbsp;<br/>ext_port_end int<br/>&nbsp;<br/>proto string;<br/>}             |:x:| Добавить/удалить правило NAT (переадресации портов) для внутренней сети.<br/>&nbsp;<br/>Внутренний IP-адрес (обязательный параметр структуры nat_rule)<br/>&nbsp;<br/>Внутренний порт (обязательный параметр структуры nat_rule)<br/>&nbsp;<br/>Внешний начальный порт (обязательный параметр структуры nat_rule)<br/>&nbsp;<br/>Внешний конечный порт, Значение по умолчанию -1<br/>&nbsp;<br/>Протокол: tcp или udp. Значение по умолчанию tcp.                                                                                                           |
|vnfdev_start| bool                                                                                                                                                                        |:x:| Флаг запуска основного виртуального маршрутизатора внутренней сети.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
|vnfdev_restart|bool|:x:| Флаг перезагрузки основного виртуального маршрутизатора внутренней сети.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
|vnfdev_reset|bool|:x:| Флаг сброса основного виртуального маршрутизатора внутренней сети.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
|vnfdev_redeploy|bool|:x:| Флаг повторного разворачивания основного виртуального маршрутизатора внутренней сети.                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |


Пользователь облачной платформы, от лица которого происходит обращение к данной функции, должен иметь доступ к указанной учётной записи ("account") и/или ресурсной группе. В противном случае возникнет ошибка доступа.

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

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

| Параметр             | Тип                                                | Описание                                                                                                                                  |
|----------------------|----------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------|
| vins_id              | int                                                | id vins                                                                                                                                   |
| vnf_dev              | []Struct [см. ниже](#описание-структуры-vnf_dev)   | Виртуальный маршрутизатор внутренней сети                                                                                                 |
| account_id           | int                                                | ID подписчика ("account"), которому принадлежит ViNS.                                                                                     |
| account_name         | string                                             | Имя подписчика ("account"), которому принадлежит ViNS.                                                                                    |
| created_by           | string                                             | Аккаунт, создавший vins                                                                                                                   |
| created_time         | int                                                | Время создания vins                                                                                                                       |
| default_gw           | string                                             | Шлюз по умолчанию                                                                                                                         |
| default_qos          | Struct [см. ниже](#описание-структуры-default_qos) | QOS по умолчанию                                                                                                                          |
| deleted_by           | string                                             | Пользователь, удаливший vins                                                                                                              |
| deleted_time         | int                                                | Время удаления vins                                                                                                                       |
| description          | string                                             | Текстовое описание ViNS.                                                                                                                  |
| gid                  | int                                                | GRID ID                                                                                                                                   |
| guid                 | int                                                | ID ресурса                                                                                                                                |
| lock_status          | string                                             | Статус доступности                                                                                                                        |
| manager_id           | int                                                | Manager id                                                                                                                                |
| manager_type         | string                                             | Type of manager                                                                                                                           |
| milestones           | int                                                | Вехи                                                                                                                                      |
| name                 | string                                             | Имя ViNS.                                                                                                                                 |
| netmask              | int                                                | Маска сети                                                                                                                                |
| network              | string                                             | Информация о сети                                                                                                                         |
| pre_reservations_num | int                                                | Кол-во зарезервированных ip адресов                                                                                                       |
| redundant            | bool                                               | Redudant                                                                                                                                  |
| rg_id                | int                                                | Идентификатор ресурсной группы, на уровне которой создан ViNS. Для ViNS, существующих на уровне "account", данный параметр будет равен 0. |
| rg_name              | string                                             | Имя ресурсной группы                                                                                                                      |
| sec_vnf_dev_id       | int                                                | ID sec внутренней сети для разработки                                                                                                     |
| status               | string                                             | Статус vins                                                                                                                               |
| updated_by           | string                                             | Кем был обновлен vins                                                                                                                     |
| updated_time         | int                                                | Время последнего обновления vins                                                                                                          |
| user_managed         | bool                                               | Флаг, управляется ли пользователем                                                                                                        |
| vnfs                 | []Struct [см. ниже](#описание-структуры-vnfs)      | Список VNFs                                                                                                                               |
| vxlan_id             | int                                                | Идентификатор vxlan                                                                                                                       |

### Описание структуры vnf_dev
| Параметр      | Тип                                                     | Описание                                             |
|---------------|---------------------------------------------------------|------------------------------------------------------|
| ckey          | string                                                  | CKey                                                 |
| meta          | []string                                                | Мета информация                                      |
| account_id    | int                                                     | ID учетной записи                                    |
| capabilities  | []string                                                | Возможности vnf_dev                                  |
| config        | []Struct [см. ниже](#описание-структуры-vnf_dev_config) | Конфигурация                                         |
| config_saved  | bool                                                    | Флаг, отвечающий за то сохранен ли конфиг            |
| custom_precfg | bool                                                    | Флаг, отвечающий за то, есть ли кастомный пре-конфиг |
| description   | string                                                  | Описание                                             |
| gid           | int                                                     | GRID ID                                              |
| guid          | int                                                     | ID ресурса                                           |
| id            | int                                                     | ID виртуального маршрутизатора внутренней сети       |
| interfaces    | []Struct [см. ниже](#описание-структуры-interfaces)     | Список интерфейсов подключений                       |
| lock_status   | string                                                  | Статус доступности                                   |
| milestones    | int                                                     | Вехи                                                 |
| name          | string                                                  | Название виртуального маршрутизатора внутренней сети |
| status        | string                                                  | Статус виртуального маршрутизатора внутренней сети   |
| tech_status   | string                                                  | Технический статус                                   | 
| type          | string                                                  | Тип виртуального маршрутизатора внутренней сети      |
| vins          | []int                                                   | Список виртуальных сетей                             |

### Описание структуры vnf_dev_config
| Параметр  | Тип                                                | Описание    |
|-----------|----------------------------------------------------|-------------|
| mgmt      | []Struct [см. ниже](#описание-структуры-mgmt)      | Config Mgmt |
| resources | []Struct [см. ниже](#описание-структуры-resources) | Ресурсы     |

### Описание структуры mgmt
| Параметр | Тип    | Описание           |
|----------|--------|--------------------|
| ip_addr  | string | ip-адрес           |
| password | string | Пароль             |
| ssh_key  | string | Публичный SSH ключ |
| user     | string | Имя пользователя   |

### Описание структуры resources
| Параметр | Тип    | Описание       |
|----------|--------|----------------|
| cpu      | int    | Количество CPU |
| ram      | int    | Количество RAM |
| stack_id | int    | id стэка       |
| uuid     | string | UUID ресурса   |

### Описание структуры interfaces
| Параметр     | Тип                                          | Описание                         |
|--------------|----------------------------------------------|----------------------------------|
| conn_id      | int                                          | ID подключения                   |
| conn_type    | string                                       | Тип соединения                   |
| def_gw       | string                                       | Шлюз по умолчанию                |
| enabled      | bool                                         | Флаг доступности                 |
| flipgroup_id | int                                          | ID группы с плавающим ip-адресом |
| guid         | string                                       | ID ресурса                       |
| ip_address   | string                                       | IP адрес                         |
| listen_ssh   | bool                                         | открыт ли ssh connect            |
| mac          | string                                       | MAC адрес интерфейса             |
| name         | string                                       | Название интерфейса              |
| net_id       | int                                          | ID сети                          |
| net_mask     | int                                          | Маска подсети                    |
| net_type     | string                                       | Тип сети                         |
| pci_slot     | int                                          | id pci слота                     |
| qos          | []Struct [см. ниже](#описание-структуры-qos) | QOS                              |
| target       | string                                       | Цель сети                        |
| type         | string                                       | Тип интерфейса                   |
| vnfs         | []int                                        |  Список VNFs                     |

### Описание структуры qos
| Параметр | Тип    | Описание    |
|----------|--------|-------------|
| e_rate   | int    | Egress Rate |
| guid     | string | ID ресурса  |
| in_brust | int    | In brust    |
| in_rate  | int    | In rate     |

### Описание структуры default_qos
| Параметр | Тип    | Описание    |
|----------|--------|-------------|
| e_rate   | int    | Egress Rate |
| guid     | string | ID ресурса  |
| in_brust | int    | In brust    |
| in_rate  | int    | In rate     |

### Описание структуры vnfs
| Параметр | Тип                                           | Описание           |
|----------|-----------------------------------------------|--------------------|
| dhcp     | []Struct [см. ниже](#описание-структуры-dhcp) | Информация о DHCP  |
| gw       | []Struct [см. ниже](#описание-структуры-gw)   | Информация о шлюзе |
| nat      | []Struct [см. ниже](#описание-структуры-nat)  | NAT                |

### Описание структуры nat
| Параметр     | Тип                                                 | Описание                                                |
|--------------|-----------------------------------------------------|---------------------------------------------------------|
| ckey         | string                                              | CKey                                                    |
| meta         | []string                                            | Мета информация                                         |
| account_id   | int                                                 | Уникальный идентификатор подписчика-владельца ViNS.     |
| created_time | int                                                 | Время создания                                          |
| config       | Struct{} [см. ниже](#описание-структуры-nat_config) | Информация о конфиге                                    |
| devices      | []Struct{} [см. ниже](#описание-структуры-devices)  | Информация о девайсах                                   |
| gid          | int                                                 | GRID ID                                                 |
| guid         | int                                                 | ID ресурса                                              |
| id           | int                                                 | ID NAT                                                  |
| lock_status  | string                                              | Статус доступа виртуальной сети                         |
| milestones   | int                                                 | Milestones                                              |
| owner_id     | int                                                 | ID владельца                                            |
| owner_type   | string                                              | Тип владельца                                           |
| pure_virtual | bool                                                | Флаг, показывающий является ли ресурс чисто виртуальным |
| status       | string                                              | Статус                                                  |
| tech_status  | string                                              | Технический статус                                      |
| type         | string                                              | Тип ресурса                                             |
| routes       | []Struct{} [см. ниже](#описание-структуры-routes)   | Список статических маршрутов                            |

### Описание структуры nat_config
| Параметр | Тип                                              | Описание    |
|----------|--------------------------------------------------|-------------|
| net_mask | int                                              | Маска сети  |
| network  | string                                           | Сеть        |
| rules    | []Struct{} [см. ниже](#описание-структуры-rules) | Правила NAT |

### Описание структуры rules
| Параметр          | Тип    | Описание                |
|-------------------|--------|-------------------------|
| rule_id           | int    | ID правила              |
| local_ip          | string | Локальный IP адрес      |
| local_port        | int    | Локальный порт          |
| protocol          | string | Протокол                |
| public_port_end   | int    | Конец диапазона портов  |
| public_port_start | int    | Начало диапазона портов |
| vm_id             | int    | ID виртуальной машины   |
| vm_name           | string | Имя виртуальной машины  |

### Описание структуры gw
| Параметр     | Тип                                                | Описание                                                |
|--------------|----------------------------------------------------|---------------------------------------------------------|
| ckey         | string                                             | CKey                                                    |
| meta         | []string                                           | Мета информация о шлюзе                                 |
| account_id   | int                                                | Уникальный идентификатор владельца                      |
| config       | Struct{} [см. ниже](#писание-структуры-gw_config)  | Информация о конфиге                                    |
| created_time | int                                                | Время создания                                          |
| devices      | []Struct{} [см. ниже](#описание-структуры-devices) | Информация о девайсах                                   |
| gid          | int                                                | Grid ID                                                 |
| guid         | int                                                | ID ресурса                                              |
| id           | int                                                | ID gw                                                   |
| lock_status  | string                                             | Статус доступа gw                                       |
| milestones   | int                                                | Вехи                                                    |
| owner_id     | int                                                | ID владельца                                            |
| owner_type   | string                                             | Тип владельца                                           |
| pure_virtual | bool                                               | Флаг, показывающий является ли ресурс чисто виртуальным |
| routes       | []Struct{} [см. ниже](#описание-структуры-routes)  | Список статических маршрутов                            |
| status       | string                                             | Статус gw                                               |
| tech_status  | string                                             | Технический статус gw                                   |
| type         | string                                             | Тип gw                                                  |

### Описание структуры gw_config
| Параметр    | Тип                                          | Описание           |
|-------------|----------------------------------------------|--------------------|
| default_gw  | string                                       | Шлюз по умолчанию  |
| ext_net_id  | int                                          | ID внешней сети    |
| ext_net_ip  | string                                       | IP внешней сети    |
| ext_netmask | int                                          | Маска внешней сети |
| qos         | Struct{} [см. ниже](#описание-структуры-qos) | QOS                |

### Описание структуры dhcp
| Параметр     | Тип                                                  | Описание                                                |
|--------------|------------------------------------------------------|---------------------------------------------------------|
| ckey         | string                                               | CKey                                                    |
| meta         | []string                                             | Мета информация о dhcp                                  |
| account_id   | int                                                  | id аккаунта                                             |
| config       | []Struct [см. ниже](#описание-структуры-dhcp_config) | Конфигурация dhcp                                       |
| created_time | int                                                  | Время создания                                          |
| devices      | []Struct{} [см. ниже](#описание-структуры-devices)   | Информация о девайсах                                   |
| gid          | int                                                  | Grid ID                                                 |
| guid         | int                                                  | ID ресурса                                              |
| id           | int                                                  | ID dhcp                                                 |
| lock_status  | string                                               | Статус доступа dhcp                                     |
| milestones   | int                                                  | Вехи                                                    |
| owner_id     | int                                                  | ID владельца                                            |
| owner_type   | string                                               | Тип владельца                                           |
| pure_virtual | bool                                                 | Флаг, показывающий является ли ресурс чисто виртуальным |
| routes       | []Struct{} [см. ниже](#описание-структуры-routes)    | Список статических маршрутов                            |
| status       | string                                               | Статус dhcp                                             |
| tech_status  | string                                               | Технический статус dhcp                                 |
| type         | string                                               | Тип dhcp                                                |

### Описание структуры routes
| Параметр    | Тип    | Описание                                        |
|-------------|--------|-------------------------------------------------|
| compute_ids | []int  | Список ID compute, которым предоствавлен доступ |
| route_id    | int    | ID статического маршрута                        |
| guid        | int    | ID ресурса                                      |
| destination | string | IP целевой сети                                 |
| netmask     | int    | Маска сети                                      |
| gateway     | string | IP шлюза                                        |

### Описание структуры devices
| Параметр | Тип                                              | Описание             |
|----------|--------------------------------------------------|----------------------|
| primary  | Struct{} [см. ниже](#описание-структуры-primary) | Первичная информация |

### Описание структуры primary
| Параметр | Тип    | Описание    |
|----------|--------|-------------|
| dev_id   | int    | ID dev      |
| iface01  | string | Интерфейс 1 |
| iface02  | string | Интерфейс 2 |

### Описание структуры dhcp_config
| Параметр     | Тип                                                   | Описание                   |
|--------------|-------------------------------------------------------|----------------------------|
| default_gw   | string                                                | Шлюз по умолчанию          |
| dns          | []string                                              | Список dns                 |
| ip_end       | string                                                | Конец диапазона IP адресов |
| ip_start     | string                                                | Старт диапазона IP адресов |
| lease        | int                                                   | Срок                       |
| net_mask     | int                                                   | Маска подсети              |
| network      | string                                                | Информация о сети          |
| reservations | []Struct [см. ниже](#описание-структуры-reservations) | Информация о резервациях   |

### Описание структуры reservations
| Параметр    | Тип    | Описание              |
|-------------|--------|-----------------------|
| client_type | string | Тип клиента           |
| description | string | Описание              |
| domain_name | string | Имя домена            |
| host_name   | string | Имя хоста             |
| ip          | string | IP адрес              |
| mac         | string | MAC адрес             |
| type        | string | Тип сети              |
| vm_id       | int    | ID виртуальной машины |

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

```terraform
resource "decort_cb_vins "my_vins" {
  name = "Test_name"
  account_id = 2023 #для создания ресурса обязательно должен быть указан или rg_id, или account_id
  rg_id = 10101 #для создания ресурса обязательно должен быть указан или rg_id, или account_id
  
  #ext_net_id  = 2222
  #ext_ip = "1.1.1.1"
  #ipcidr      = "192.168.0.1"
  #pre_reservations_num = 2
  #gid                  = 2002
  #description = "Description"
  #reason = "test"
  
  #блок для указания списка routes
/*
  routes = [{
  #destination     = "DHCP"
  #netmask  = "192.168.5.5"
  #gateway = "192.168.5.5"
  }]
*/

  # Default qos
/*
  default_qos = {
  #in_rate = 1
  #in_burst = 1
  #e_rate = 1
  }
*/

  # Enable, delete parameters
  #enable               = true
  #permanently          = true
  #force                = true

  # IP release, IP reserve parameters
/*
  ip {
  type     = "DHCP"
  #ip_addr  = "192.168.5.5"
  #mac = "ff:ff:ff:ff:ff:ff"
  #compute_id = 1234
  #reason = "one more reason"
  }
*/

  # Добавление и удаление NAT Rules
/*
  nat_rule {
  int_ip         = "192.168.0.28"
  int_port       = 80
  ext_port_start = 8001
  #ext_port_end   = 8001
  #proto          = "tcp"
  }
*/

  # vnf dev start, stop, restart, reset, redeploy parameters
  #vnfdev_start = true
  #vnfdev_restart  = true
  #vnfdev_reset  = true
  #vnfdev_redeploy = true
}
# Once the above directive completes, ViNS ID will be accessible as
# decort_cb_vins.my_vins.id
```

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

После успешного завершения такого вызова **decort_cb_vins** в переменной `data.decort_cb_vins.my_vins` будут сохранены возвращаемые значения. В частности, для получения идентификатора ViNS следует использовать конструкцию `data.decort_cb_vins.my_vins.id`
