Skip to content

Commit

Permalink
Merge pull request #112 from atlanticwave-sdx/10.logging
Browse files Browse the repository at this point in the history
Add logging
  • Loading branch information
sajith authored Jan 8, 2024
2 parents 1a18311 + 6119b53 commit 44498db
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 8 deletions.
21 changes: 15 additions & 6 deletions src/sdx_datamodel/parsing/porthandler.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import json
import logging
import pathlib
from os import PathLike
from typing import List, Union
Expand All @@ -15,6 +16,9 @@ class PortHandler:
Handler for parsing the connection request descritpion in JSON.
"""

def __init__(self):
self._logger = logging.getLogger(__name__)

def import_port_data(self, data: dict) -> Port:
try:
id = data["id"]
Expand All @@ -35,7 +39,7 @@ def import_port_data(self, data: dict) -> Port:
# SDX-LC's OpenAPI spec, so the spec will have to be
# updated.
services = self._validate_l2vpn_services(
services=data.get("services")
services=data.get("services"), port_id=id
)

except KeyError as e:
Expand All @@ -51,7 +55,7 @@ def import_port_data(self, data: dict) -> Port:
private_attributes=private_attributes,
)

def _validate_l2vpn_services(self, services: Union[dict, None]):
def _validate_l2vpn_services(self, services: Union[dict, None], port_id):
"""
Validate any "service" attached to a port definition.
Expand All @@ -65,11 +69,13 @@ def _validate_l2vpn_services(self, services: Union[dict, None]):
service.
"""
if not services:
print("No services defined")
self._logger.warning(f"No services defined in port '{port_id}'")
return None

if not isinstance(services, dict):
print(f"Service {services} is not a dict")
self._logger.warning(
f"Service {services} is not a dict in {port_id}"
)
return None

if services and services.get("l2vpn-ptp"):
Expand All @@ -84,8 +90,11 @@ def _validate_l2vpn_services(self, services: Union[dict, None]):
else:
l2vpn_ptmp_vlan_range = None

print(f"l2vpn_ptp_vlan_range: {l2vpn_ptp_vlan_range}")
print(f"l2vpn_ptmp_vlan_range: {l2vpn_ptmp_vlan_range}")
self._logger.info(
f"Found l2vpn_ptp_vlan_range: {l2vpn_ptp_vlan_range}, "
f"l2vpn_ptmp_vlan_range: {l2vpn_ptmp_vlan_range} "
f"in port '{port_id}'"
)

# TODO: Perhaps return a Service, or maybe a L2VPN Service?
# The models.Service class seems to refer to domain services
Expand Down
5 changes: 4 additions & 1 deletion src/sdx_datamodel/validation/connectionvalidator.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"""""
Checks for Connection objects to be in the expected format.
"""
import logging
from re import match

from sdx_datamodel.models.connection import Connection
Expand All @@ -24,10 +25,12 @@ def __init__(self, connection):

self._connection = connection

self._logger = logging.getLogger(__name__)

def is_valid(self) -> bool:
errors = self.validate(raise_error=True)
for error in errors:
print(error)
self._logger.error(error)
return not bool(errors)

def validate(self, raise_error=True) -> [str]:
Expand Down
5 changes: 4 additions & 1 deletion src/sdx_datamodel/validation/topologyvalidator.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"""
Checks for Topology objects to be in the expected format.
"""
import logging
from re import match

from sdx_datamodel.models.link import Link
Expand All @@ -20,12 +21,14 @@ class TopologyValidator:
def __init__(self, topology: Topology):
if not isinstance(topology, Topology):
raise ValueError("TopologyValidator expects a Topology object")

self._topology = topology
self._logger = logging.getLogger(__name__)

def is_valid(self) -> bool:
errors = self.validate(self._topology, raise_error=False)
for error in errors:
print(error)
self._logger.error(f"{error} in topology '{self._topology.id}'")
return not bool(errors)

def validate(self, topology=None, raise_error=True) -> [str]:
Expand Down

0 comments on commit 44498db

Please sign in to comment.