1
0
mirror of https://github.com/checktheroads/hyperglass synced 2024-05-11 05:55:08 +00:00

52 lines
1.5 KiB
Python
Raw Normal View History

"""Validate network configuration variables."""
2020-02-03 02:35:11 -07:00
# Third Party
# Third Party Imports
2020-02-03 02:35:11 -07:00
from pydantic import Field, StrictStr
2020-02-03 02:35:11 -07:00
# Project
# Project Imports
2020-02-03 02:35:11 -07:00
from hyperglass.configuration.models._utils import HyperglassModel, clean_name
2019-10-04 16:54:32 -07:00
class Network(HyperglassModel):
"""Validation Model for per-network/asn config in devices.yaml."""
2020-02-01 16:11:01 -10:00
name: StrictStr = Field(
...,
title="Network Name",
description="Internal name of the device's primary network.",
)
display_name: StrictStr = Field(
...,
title="Network Display Name",
description="Display name of the device's primary network.",
)
2019-10-04 16:54:32 -07:00
class Networks(HyperglassModel):
"""Base model for networks class."""
@classmethod
def import_params(cls, input_params):
"""Import loaded YAML, initialize per-network definitions.
Remove unsupported characters from network names, dynamically
set attributes for the networks class. Add cls.networks
attribute so network objects can be accessed inside a dict.
Arguments:
input_params {dict} -- Unvalidated network definitions
Returns:
{object} -- Validated networks object
"""
obj = Networks()
networks = {}
for (netname, params) in input_params.items():
netname = clean_name(netname)
setattr(Networks, netname, Network(**params))
networks.update({netname: Network(**params).dict()})
Networks.networks = networks
return obj