Приватные сети разобраны на живом API

Раздел переписан по факту поведения платформы, а не по документации.

- номер сети лежит в resource_id, а не id, добавлен vpc_id_of()
- список сетей приходит голым массивом
- при создании принимается только имя, регион и участники только для чтения
- подключение сервера асинхронно и блокирует сервер, добавлен vpc_wait_member()
- отключение участника и удаление сети настойчивые, ждут снятия блокировки

Добавлен пример private_network.py.

Claude-Session: https://claude.ai/code/session_01Loz5stgQZH6ofBdMqTxiJu
Этот коммит содержится в:
2026-08-23 19:34:12 +09:00
родитель 7e798bb68f
Коммит 4d7a0f354d
3 изменённых файлов: 137 добавлений и 21 удалений
+29 -6
Просмотреть файл
@@ -104,20 +104,43 @@ api.delete_snapshot(snap["id"])
api.destroy_server(id) # дождётся снятия блокировки
```
## Адреса и сети
## Адреса
```python
api.ips(server_id)
api.add_ip(server_id, ipv4=1)
api.set_ptr("1.2.3.4", "mail.example.com")
api.delete_ip("1.2.3.4")
vpc = api.create_vpc("backoffice", region="openstack-msk1")
api.vpc_attach(vpc["id"], server_id)
api.vpc_members(vpc["id"])
api.vpc_detach(vpc["id"], server_id)
```
## Приватные сети
Серверы в одной приватной сети видят друг друга напрямую, минуя интернет. Трафик внутри
не тарифицируется, а машине-исполнителю можно не выдавать публичный адрес вовсе.
```python
net = api.create_vpc("backoffice") # кроме имени платформа ничего не принимает
net_id = RegCloud.vpc_id_of(net) # номер лежит в resource_id, а не в id
api.vpc_attach(net_id, server_id) # действие асинхронное
api.vpc_wait_member(net_id, server_id) # дожидаемся, пока сервер реально войдёт
api.vpc_members(net_id) # список номеров серверов
api.rename_vpc(net_id, "новое имя")
api.vpc_detach(net_id, server_id)
api.delete_vpc(net_id)
```
Что выяснено на живом API и чего нет в документации.
Номер сети лежит в поле `resource_id`, а не `id`. Список сетей приходит голым массивом,
без обёртки. При создании принимается только имя, а регион, участники и `resource_id`
объявлены только для чтения и проставляются платформой. Подключение сервера к сети
асинхронно, и пока оно не доиграет, сервер заблокирован, из-за чего не выйдет ни отключить
его, ни удалить сеть. Поэтому `vpc_detach()` и `delete_vpc()` тут настойчивые, повторяют
попытки, пока блокировка не снимется.
## Деньги
```python