initial commit

This commit is contained in:
Christian Manivong
2026-05-29 09:24:39 +02:00
commit f3ecf14c8d
18 changed files with 4206 additions and 0 deletions
+89
View File
@@ -0,0 +1,89 @@
"""Tests for SDN-related methods: get_vlans, get_network_instances."""
from __future__ import annotations
import pytest
from tests.conftest import _build_mock_api, SDN_ZONES, SDN_VNETS
class TestGetVlans:
def test_sdn_vnets_appear_as_vlans(self, driver):
result = driver.get_vlans()
# vnet0 tag=10, vnet1 tag=20
assert "10" in result
assert "20" in result
def test_vlan_name_is_vnet_id(self, driver):
result = driver.get_vlans()
assert result["10"]["name"] == "vnet0"
assert result["20"]["name"] == "vnet1"
def test_vlan_100000_for_vxlan(self, driver):
result = driver.get_vlans()
assert "100000" in result
def test_bridge_vlan_show_parsing(self, driver):
# Simulate bridge vlan output
bridge_output = (
"vmbr0 1\n"
" 10\n"
" 20\n"
"eth0 1\n"
)
driver._node_api().execute.post.return_value = {"data": bridge_output}
result = driver.get_vlans()
# Interface vmbr0 should appear in vlan 1
entry = result.get("1", {})
assert "vmbr0" in entry.get("interfaces", [])
def test_empty_sdn_returns_dict(self):
from unittest.mock import patch
from napalm_proxmox.driver import ProxmoxDriver
from tests.conftest import _build_mock_api
mock_api = _build_mock_api(sdn_vnets=[], sdn_zones=[])
drv = ProxmoxDriver("pve1", "root", "secret", optional_args={"verify_ssl": False})
with patch("napalm_proxmox.driver.ProxmoxAPI", return_value=mock_api):
drv.open()
result = drv.get_vlans()
assert isinstance(result, dict)
class TestGetNetworkInstances:
def test_default_instance_always_present(self, driver):
result = driver.get_network_instances()
assert "default" in result
assert result["default"]["type"] == "DEFAULT_INSTANCE"
def test_sdn_zones_as_instances(self, driver):
result = driver.get_network_instances()
assert "zone-vlan" in result
assert "zone-vxlan" in result
assert "zone-evpn" in result
def test_zone_type_mapping(self, driver):
result = driver.get_network_instances()
assert result["zone-vlan"]["type"] == "L2VPN"
assert result["zone-evpn"]["type"] == "L3VRF"
def test_vnet_appears_in_zone_interfaces(self, driver):
result = driver.get_network_instances()
zone_ifaces = result["zone-vlan"]["interfaces"]["interface"]
assert "vnet0" in zone_ifaces
assert "vnet1" in zone_ifaces
def test_filter_by_name(self, driver):
result = driver.get_network_instances(name="zone-vlan")
assert "zone-vlan" in result
assert "zone-vxlan" not in result
def test_evpn_route_distinguisher(self, driver):
result = driver.get_network_instances()
rd = result["zone-evpn"]["state"]["route_distinguisher"]
assert rd == 10001
def test_default_interfaces_include_node_ifaces(self, driver):
result = driver.get_network_instances()
default_ifaces = result["default"]["interfaces"]["interface"]
assert "eth0" in default_ifaces
assert "vmbr0" in default_ifaces