Skip to content
Snippets Groups Projects
Commit a87f48fe authored by JORGE SASIAIN's avatar JORGE SASIAIN
Browse files

NAT-329: fix mismatches with develop

parent d0550d6c
No related branches found
No related tags found
No related merge requests found
Pipeline #84644 failed
...@@ -62,7 +62,7 @@ def available_interfaces_choices(router_id: UUID, speed: str) -> Choice | None: ...@@ -62,7 +62,7 @@ def available_interfaces_choices(router_id: UUID, speed: str) -> Choice | None:
For Nokia routers, return a list of available interfaces. For Nokia routers, return a list of available interfaces.
For Juniper routers, return a string. For Juniper routers, return a string.
""" """
if Router.from_subscription(router_id).router.router_vendor != RouterVendor.NOKIA: if get_router_vendor(router_id) != RouterVendor.NOKIA:
return None return None
interfaces = { interfaces = {
interface["name"]: f"{interface['name']} - {interface['module']['display']} - {interface['description']}" interface["name"]: f"{interface['name']} - {interface['module']['display']} - {interface['description']}"
...@@ -71,8 +71,9 @@ def available_interfaces_choices(router_id: UUID, speed: str) -> Choice | None: ...@@ -71,8 +71,9 @@ def available_interfaces_choices(router_id: UUID, speed: str) -> Choice | None:
return Choice("ae member", zip(interfaces.keys(), interfaces.items(), strict=True)) # type: ignore[arg-type] return Choice("ae member", zip(interfaces.keys(), interfaces.items(), strict=True)) # type: ignore[arg-type]
def available_interfaces_choices_including_current_members( def available_interfaces_choices_including_current_members(
router_id: UUID | UUIDstr, router_id: UUID,
speed: str, speed: str,
interfaces: list[IptrunkInterfaceBlock], interfaces: list[IptrunkInterfaceBlock],
) -> Choice | None: ) -> Choice | None:
...@@ -81,7 +82,7 @@ def available_interfaces_choices_including_current_members( ...@@ -81,7 +82,7 @@ def available_interfaces_choices_including_current_members(
For Nokia routers, return a list of available interfaces. For Nokia routers, return a list of available interfaces.
For Juniper routers, return a string. For Juniper routers, return a string.
""" """
if Router.from_subscription(router_id).router.router_vendor != RouterVendor.NOKIA: if get_router_vendor(router_id) != RouterVendor.NOKIA:
return None return None
available_interfaces = list(NetboxClient().get_available_interfaces(router_id, speed)) available_interfaces = list(NetboxClient().get_available_interfaces(router_id, speed))
...@@ -101,13 +102,14 @@ def available_interfaces_choices_including_current_members( ...@@ -101,13 +102,14 @@ def available_interfaces_choices_including_current_members(
return Choice("ae member", zip(options.keys(), options.items(), strict=True)) # type: ignore[arg-type] return Choice("ae member", zip(options.keys(), options.items(), strict=True)) # type: ignore[arg-type]
def available_lags_choices(router_id: UUID) -> Choice | None: def available_lags_choices(router_id: UUID) -> Choice | None:
"""Return a list of available lags for a given router. """Return a list of available lags for a given router.
For Nokia routers, return a list of available lags. For Nokia routers, return a list of available lags.
For Juniper routers, return a string. For Juniper routers, return ``None``.
""" """
if Router.from_subscription(router_id).router.router_vendor != RouterVendor.NOKIA: if get_router_vendor(router_id) != RouterVendor.NOKIA:
return None return None
side_a_ae_iface_list = NetboxClient().get_available_lags(router_id) side_a_ae_iface_list = NetboxClient().get_available_lags(router_id)
return Choice("ae iface", zip(side_a_ae_iface_list, side_a_ae_iface_list, strict=True)) # type: ignore[arg-type] return Choice("ae iface", zip(side_a_ae_iface_list, side_a_ae_iface_list, strict=True)) # type: ignore[arg-type]
...@@ -120,9 +122,9 @@ def get_router_vendor(router_id: UUID) -> str: ...@@ -120,9 +122,9 @@ def get_router_vendor(router_id: UUID) -> str:
:type router_id: :class:`uuid.UUID` :type router_id: :class:`uuid.UUID`
:return: The vendor of the router. :return: The vendor of the router.
:rtype: str: :rtype: RouterVendor:
""" """
return Router.from_subscription(router_id).router.router_vendor return Router.from_subscription(router_id).vendor
def iso_from_ipv4(ipv4_address: IPv4Address) -> str: def iso_from_ipv4(ipv4_address: IPv4Address) -> str:
...@@ -148,9 +150,9 @@ def validate_router_in_netbox(subscription_id: UUIDstr) -> UUIDstr: ...@@ -148,9 +150,9 @@ def validate_router_in_netbox(subscription_id: UUIDstr) -> UUIDstr:
:return: The :term:`UUID` of the router subscription. :return: The :term:`UUID` of the router subscription.
:rtype: :class:`UUIDstr` :rtype: :class:`UUIDstr`
""" """
router = Router.from_subscription(subscription_id).router router_type = Router.from_subscription(subscription_id)
if router.router_vendor == RouterVendor.NOKIA: if router_type.vendor == RouterVendor.NOKIA:
device = NetboxClient().get_device_by_name(router.router_fqdn) device = NetboxClient().get_device_by_name(router_type.router.router_fqdn)
if not device: if not device:
msg = "The selected router does not exist in Netbox." msg = "The selected router does not exist in Netbox."
raise ValueError(msg) raise ValueError(msg)
......
from pydantic import BaseModel, validator, ModelField
from gso.utils.helpers import (
validate_country_code,
validate_ipv4_or_ipv6,
validate_site_fields_is_unique,
validate_site_name,
)
def common_ts_address_validator(cls, site_ts_address: str) -> str:
"""Validate that a terminal server address is valid."""
validate_ipv4_or_ipv6(site_ts_address)
return site_ts_address
def common_country_code_validator(cls, country_code: str) -> str:
"""Validate that the country code exists."""
validate_country_code(country_code)
return country_code
def common_unique_fields_validator(cls, value: str, field: ModelField) -> str | int:
"""Validate that the internal and :term:`BGP` community IDs are unique."""
return validate_site_fields_is_unique(field.name, value)
def common_site_name_validator(cls, site_name: str) -> str:
"""Validate the site name.
The site name must consist of three uppercase letters, followed by an optional single digit.
"""
validate_site_name(site_name)
return site_name
def validator_decorator(func):
def wrapper(cls, *args, **kwargs):
return validator(func.__name__, pre=True, allow_reuse=True)(*args, **kwargs)
return wrapper
...@@ -43,22 +43,21 @@ def _netbox_client_mock(): ...@@ -43,22 +43,21 @@ def _netbox_client_mock():
@pytest.fixture() @pytest.fixture()
def input_form_wizard_data(request, router_subscription_factory, faker): def input_form_wizard_data(request, nokia_router_subscription_factory, faker):
# only side b is set to JUNIPER # only side b is set to JUNIPER
vendor = getattr(request, "param", RouterVendor.NOKIA) vendor = getattr(request, "param", RouterVendor.NOKIA)
router_side_a = router_subscription_factory() router_side_a = nokia_router_subscription_factory()
router_side_b = router_subscription_factory(router_vendor=vendor) router_side_b = nokia_router_subscription_factory()
side_a_members = [ side_a_members = [
LAGMember(interface_name=f"Interface{interface}", interface_description=faker.sentence()) LAGMember(interface_name=f"Interface{interface}", interface_description=faker.sentence())
for interface in range(5)] for interface in range(2)]
side_b_members = None side_b_members = None
lag_name_side_b = "LAG4" lag_name_side_b = "LAG4"
if vendor == RouterVendor.JUNIPER: if vendor == RouterVendor.JUNIPER:
side_b_members = [ side_b_members = [
{"interface_name": "et-1/0/0", "interface_description": faker.sentence()}, LAGMember(interface_name="et-1/0/0", interface_description=faker.sentence()),
{"interface_name": "xe-1/0/0", "interface_description": faker.sentence()}] # type: ignore[assignment] LAGMember(interface_name="xe-1/0/0", interface_description=faker.sentence())] # type: ignore[assignment]
lag_name_side_b = "ae4"
else: else:
side_b_members = side_a_members side_b_members = side_a_members
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment