2019-09-11 01:35:31 -07:00
|
|
|
"""
|
|
|
|
Defines models for Networks config variables.
|
|
|
|
|
|
|
|
Imports config variables and overrides default class attributes.
|
|
|
|
|
|
|
|
Validates input for overridden parameters.
|
|
|
|
"""
|
|
|
|
|
|
|
|
# Project Imports
|
|
|
|
from hyperglass.configuration.models._utils import clean_name
|
2019-10-04 16:54:32 -07:00
|
|
|
from hyperglass.configuration.models._utils import HyperglassModel
|
2019-09-11 01:35:31 -07:00
|
|
|
|
|
|
|
|
2019-10-04 16:54:32 -07:00
|
|
|
class Network(HyperglassModel):
|
2019-09-11 01:35:31 -07:00
|
|
|
"""Model for per-network/asn config in devices.yaml"""
|
|
|
|
|
|
|
|
display_name: str
|
|
|
|
|
|
|
|
|
2019-10-04 16:54:32 -07:00
|
|
|
class Networks(HyperglassModel):
|
2019-09-11 01:35:31 -07:00
|
|
|
"""Base model for networks class"""
|
|
|
|
|
|
|
|
@classmethod
|
|
|
|
def import_params(cls, input_params):
|
|
|
|
"""
|
|
|
|
Imports passed dict from YAML config, removes unsupported
|
|
|
|
characters from device names, dynamically sets attributes for
|
|
|
|
the credentials class.
|
|
|
|
"""
|
|
|
|
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
|