feat: IPAM improvements - server/node subnet binding, theme color fixes

- IPAM link-allocations: filter networks by proxmox_server_id and proxmox_node
  to prevent cross-server/cross-node IP assignment
- IPAM link-allocations: add manual server+network selection modal before linking
- IPAM add-network forms: add Proxmox server and node selectors with dynamic
  cluster-info loading (ipam_dashboard.html, ipam_networks.html)
- models.py / schemas.py: add proxmox_node field to IPAMNetwork
- migrations: migration #16 adds proxmox_node column to ipam_networks table
- Theme fixes: replace all hardcoded rgba/color:#fff/color:white with CSS vars
  across base.html, virtual_machines.html, instance_detail.html,
  os_templates.html, proxmox_vms.html, ipam_network_detail.html,
  ipam_allocations.html
- i18n: add proxmox_node, node selector, link-allocations modal keys (ru/en)
- Version bump: 1.0.4 -> 1.0.5
This commit is contained in:
markmorado
2026-03-08 14:17:54 +01:00
parent 4bbc02982a
commit 91dbf0b81c
15 changed files with 542 additions and 119 deletions

View File

@@ -1710,6 +1710,26 @@ class I18nService:
"ru": "Proxmox Bridge",
"en": "Proxmox Bridge"
},
"proxmox_node": {
"ru": "Нода Proxmox",
"en": "Proxmox Node"
},
"proxmox_node_hint": {
"ru": "Нода внутри кластера, к которой привязана сеть. Привязка будет учтена при поиске IP.",
"en": "Cluster node the network is associated with. Used for IP matching."
},
"all_nodes": {
"ru": "— Все ноды —",
"en": "— All nodes —"
},
"select_node": {
"ru": "— Выберите ноду —",
"en": "— Select node —"
},
"loading_nodes": {
"ru": "Загрузка нод...",
"en": "Loading nodes..."
},
"proxmox_server": {
"ru": "Proxmox сервер",
"en": "Proxmox Server"
@@ -3606,6 +3626,26 @@ class I18nService:
"ru": "Привязать все несвязанные адреса к соответствующим VM по имени?",
"en": "Link all unlinked allocations to matching VMs by name?"
},
"link_allocations_title": {
"ru": "Привязать IP к VM",
"en": "Link IPs to VMs"
},
"link_scope_hint": {
"ru": "Выберите сервер (ноду) и подсеть. Будут привязаны только ВМ выбранного сервера к выбранной подсети.",
"en": "Select a server (node) and subnet. Only VMs from the selected server will be linked to the selected subnet."
},
"select_server_for_link": {
"ru": "— Выберите сервер —",
"en": "— Select server —"
},
"select_network_first_server": {
"ru": "— Сначала выберите сервер —",
"en": "— Select server first —"
},
"no_networks_for_server": {
"ru": "Нет сетей для этого сервера",
"en": "No networks for this server"
},
"cleaning": {
"ru": "Очистка",
"en": "Cleaning"