Skip to content

Commit 6c76fdc

Browse files
committed
Refactor code for improved type handling and error management across multiple modules
1 parent da5a8b0 commit 6c76fdc

14 files changed

Lines changed: 38 additions & 42 deletions

File tree

netpalm/backend/core/confload/confload.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,8 +169,8 @@ def ensure_non_empty_bootstrap(cls, v: str) -> str:
169169
@classmethod
170170
def parse_webhook_headers(cls, v: Any) -> dict[str, str]:
171171
if isinstance(v, str):
172-
return json.loads(v)
173-
return v
172+
return json.loads(v) # type: ignore[no-any-return]
173+
return v # type: ignore[no-any-return]
174174

175175
def model_post_init(self, __context: Any) -> None:
176176
self.whitelist = DeviceWhitelist(self.device_whitelist)

netpalm/backend/core/manager/netpalm_manager.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,10 @@
1818

1919
from netpalm.backend.core.cache.store import CacheStore
2020
from netpalm.backend.core.confload.confload import NetpalmSettings, get_settings
21+
from pydantic import BaseModel
22+
2123
from netpalm.backend.core.models.models import (
22-
GetConfig,
2324
QueueStrategy,
24-
Script,
25-
SetConfig,
2625
)
2726
from netpalm.backend.core.queue.broker import QueueBroker
2827
from netpalm.backend.core.queue.broker import TaskResponse as BrokerTaskResponse
@@ -51,7 +50,7 @@ def __init__(
5150

5251
# ── task operations ───────────────────────────────────────────────────────
5352

54-
async def get_config(self, request: GetConfig) -> dict[str, Any]:
53+
async def get_config(self, request: BaseModel) -> dict[str, Any]:
5554
"""
5655
Enqueue a getconfig job.
5756
If cache is enabled and a result exists, return it without enqueuing.
@@ -66,7 +65,7 @@ async def get_config(self, request: GetConfig) -> dict[str, Any]:
6665
cached = self._cache.get(cache_key)
6766
if cached is not None:
6867
log.debug(f"NetpalmManager.get_config: cache hit for {cache_key}")
69-
return cached
68+
return cached # type: ignore[no-any-return]
7069

7170
strategy = req_data.get("queue_strategy", QueueStrategy.fifo)
7271
pinned_host = host if strategy == QueueStrategy.pinned else None
@@ -79,7 +78,7 @@ async def get_config(self, request: GetConfig) -> dict[str, Any]:
7978
)
8079
return _task_to_response(task)
8180

82-
async def set_config(self, request: SetConfig) -> dict[str, Any]:
81+
async def set_config(self, request: BaseModel) -> dict[str, Any]:
8382
req_data = request.model_dump(exclude_none=True)
8483
conn = req_data.get("connection_args", {})
8584
host = conn.get("host", "")
@@ -98,7 +97,7 @@ async def set_config(self, request: SetConfig) -> dict[str, Any]:
9897
)
9998
return _task_to_response(task)
10099

101-
async def execute_script(self, request: Script) -> dict[str, Any]:
100+
async def execute_script(self, request: BaseModel) -> dict[str, Any]:
102101
req_data = request.model_dump(exclude_none=True)
103102
strategy = req_data.get("queue_strategy", QueueStrategy.fifo)
104103
pinned_host = req_data.get("script") if strategy == QueueStrategy.pinned else None

netpalm/backend/core/operations/getconfig.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ def execute(
3030
driver_obj = driver_cls(**kwargs)
3131
sesh = driver_obj.connect()
3232

33-
commandlst = [command] if isinstance(command, str) else command
34-
result = driver_obj.sendcommand(sesh, commandlst) if commandlst else driver_obj.sendcommand(sesh)
33+
commandlst = [command] if isinstance(command, str) else (command or [])
34+
result = driver_obj.sendcommand(sesh, commandlst)
3535

3636
if post_checks:
3737
run_checks(driver_obj, sesh, post_checks, "PostCheck")

netpalm/backend/core/operations/script.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,4 @@ def execute(
6666
if webhook:
6767
exec_webhook_func(jobdata={"task_result": result}, webhook_payload=webhook)
6868

69-
return result
69+
return result # type: ignore[no-any-return]

netpalm/backend/core/operations/setconfig.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ def execute(
2929
settings: NetpalmSettings,
3030
) -> dict[str, Any]:
3131
library = kwargs.get("library", "")
32-
config = kwargs.get("config")
32+
config: str | list[str] = kwargs.get("config", "")
3333
j2conf = kwargs.get("j2config")
3434
webhook = kwargs.get("webhook")
3535
pre_checks = kwargs.get("pre_checks")

netpalm/backend/core/utilities/rediz_meta.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,17 @@
88
from __future__ import annotations
99

1010
import logging
11+
from typing import NoReturn
1112

1213
log = logging.getLogger(__name__)
1314

1415

15-
def write_meta_error(exception: Exception) -> None:
16+
def write_meta_error(exception: Exception) -> NoReturn:
1617
"""Re-raise the exception so the executor can handle it."""
1718
log.exception("write_meta_error: driver error")
1819
raise exception
1920

2021

21-
def write_meta_error_string(data: str) -> None:
22+
def write_meta_error_string(data: str) -> NoReturn:
2223
"""Raise a plain exception with the given message."""
2324
raise Exception(f"failed: {data}")

netpalm/backend/core/utilities/universal_template_mgr/unvrsl.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,14 @@ def add_template(self, payload: dict[str, str]):
2828
with open(template_path, "w") as file:
2929
file.write(raw_base)
3030
reload_extensibles_func()
31-
resultdata = ResponseBasic(status="success", data={"task_result": {"added": payload["name"]}}).model_dump()
31+
resultdata = ResponseBasic(
32+
status=TaskResponseEnum.success, data={"task_result": {"added": payload["name"]}}
33+
).model_dump()
3234
return resultdata
3335
except Exception as e:
34-
error = ResponseBasic(status="error", data={"task_result": {"error": str(e)}}).model_dump()
36+
error = ResponseBasic(
37+
status=TaskResponseEnum.error, data={"task_result": {"error": str(e)}}
38+
).model_dump()
3539
return error
3640

3741
def remove_template(self, payload: dict[str, str]):
@@ -43,12 +47,14 @@ def remove_template(self, payload: dict[str, str]):
4347
)
4448
os.remove(template_path)
4549
resultdata = ResponseBasic(
46-
status="success", data={"task_result": {"removed": payload["name"]}}
50+
status=TaskResponseEnum.success, data={"task_result": {"removed": payload["name"]}}
4751
).model_dump()
4852
reload_extensibles_func()
4953
return resultdata
5054
except Exception as e:
51-
error = ResponseBasic(status="error", data={"task_result": {"error": str(e)}}).model_dump()
55+
error = ResponseBasic(
56+
status=TaskResponseEnum.error, data={"task_result": {"error": str(e)}}
57+
).model_dump()
5258
return error
5359

5460
def get_template(self, payload: dict[str, str]):
@@ -63,9 +69,11 @@ def get_template(self, payload: dict[str, str]):
6369
result = file.read()
6470
raw_base = base64.b64encode(result.encode("utf-8"))
6571
resultdata = ResponseBasic(
66-
status="success", data={"task_result": {"base64_payload": raw_base}}
72+
status=TaskResponseEnum.success, data={"task_result": {"base64_payload": raw_base}}
6773
).model_dump()
6874
return resultdata
6975
except Exception as e:
70-
error = ResponseBasic(status="error", data={"task_result": {"error": str(e)}}).model_dump()
76+
error = ResponseBasic(
77+
status=TaskResponseEnum.error, data={"task_result": {"error": str(e)}}
78+
).model_dump()
7179
return error

netpalm/backend/core/utilities/webhook/webhook.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ def __init__(self, whook_payload: dict):
1515
self.webhook_args = whook_payload.get("args", False)
1616
if not self.webhook_raw_name:
1717
self.webhook_name = config.default_webhook_name
18-
self.webhook_name = self.webhook_dir_path.replace("/", ".") + self.webhook_raw_name
18+
self.webhook_name = self.webhook_dir_path.replace("/", ".") + (self.webhook_raw_name or "")
1919
self.webhook_j2_name = whook_payload.get("j2template")
2020

2121
def webhook_exec(self, job_data: dict):

netpalm/backend/plugins/drivers/napalm/napalm_drvr.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,6 @@ def config(
7878

7979
def logout(self, session: Any) -> None:
8080
try:
81-
response = session.close()
82-
return response
81+
session.close()
8382
except Exception as e:
8483
write_meta_error(e)

netpalm/backend/plugins/drivers/ncclient/ncclient_drvr.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,6 @@ def config(
132132

133133
def logout(self, session: Any) -> None:
134134
try:
135-
response = session.close_session()
136-
return response
135+
session.close_session()
137136
except Exception as e:
138137
write_meta_error(e)

0 commit comments

Comments
 (0)