From 51c0b090142ef05aa7a6442bcd48ef2dd99dc44f Mon Sep 17 00:00:00 2001 From: Andrea Mistrali Date: Mon, 22 Jul 2024 16:06:36 +0200 Subject: [PATCH] Fix nodeId type --- hsapi-client/TODO.md | 1 - hsapi-client/hsapi_client/model.py | 2 +- hsapi-client/hsapi_client/nodes.py | 16 ++++++++-------- hsapi-client/hsapi_client/schemas.py | 2 +- 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/hsapi-client/TODO.md b/hsapi-client/TODO.md index 3a5ce9d..e69de29 100644 --- a/hsapi-client/TODO.md +++ b/hsapi-client/TODO.md @@ -1 +0,0 @@ -- fix types for nodeId, ideally it should be an int diff --git a/hsapi-client/hsapi_client/model.py b/hsapi-client/hsapi_client/model.py index 724272c..eeb6a3b 100644 --- a/hsapi-client/hsapi_client/model.py +++ b/hsapi-client/hsapi_client/model.py @@ -33,7 +33,7 @@ class HSAPICall: self.base_path = f"{ self.api_settings.server}{self.api_settings.api_path}/{self.objectPath}" - def call(self, method, call_path: str = "", data=None, query: dict = {}): + def call(self, method, call_path: Union[str, int] = "", data=None, query: dict = {}): headers = { "Content-Type": "application/json", "Accept": "application/json", diff --git a/hsapi-client/hsapi_client/nodes.py b/hsapi-client/hsapi_client/nodes.py index a30fcc1..efff01d 100644 --- a/hsapi-client/hsapi_client/nodes.py +++ b/hsapi-client/hsapi_client/nodes.py @@ -45,7 +45,7 @@ class Node(HSAPICall): response = self.call('get') return v1ListNodesResponse(**response.json()) - def get(self, nodeId: str) -> v1Node: + def get(self, nodeId: int) -> v1Node: # There is a bug in headscale API # retrieving a specific node does not return the tags # so we get the full list of nodes and extract the node with the @@ -55,7 +55,7 @@ class Node(HSAPICall): node = next((n for n in nodelist.nodes if n.id == nodeId), v1Node()) return node # type: ignore - def _get(self, nodeId: str) -> v1Node: + def _get(self, nodeId: int) -> v1Node: # There is a bug in headscale API # retrieving a specific node does not return the tags # This does a real get @@ -69,25 +69,25 @@ class Node(HSAPICall): return v1ListNodesResponse(nodes=byUser) - def delete(self, nodeId: str) -> None: + def delete(self, nodeId: int) -> None: self.call('delete', call_path=nodeId) - def expire(self, nodeId: str) -> None: + def expire(self, nodeId: int) -> None: self.call('post', f'{nodeId}/expire') - def rename(self, nodeId: str, newName: str) -> v1NodeResponse: + def rename(self, nodeId: int, newName: str) -> v1NodeResponse: response = self.call('post', f'{nodeId}/rename/{newName}') return v1NodeResponse(**response.json()) - def move(self, nodeId: str, data: v1MoveNodeRequest) -> v1NodeResponse: + def move(self, nodeId: int, data: v1MoveNodeRequest) -> v1NodeResponse: response = self.call('post', f'{nodeId}/user', data) return v1NodeResponse(**response.json()) - def routes(self, nodeId: str) -> v1GetNodeRoutesResponse: + def routes(self, nodeId: int) -> v1GetNodeRoutesResponse: response = self.call('get', f'{nodeId}/routes') return v1GetNodeRoutesResponse(**response.json()) - def setTags(self, nodeId: str, data: v1SetTagsNodeRequest) -> v1NodeResponse: + def setTags(self, nodeId: int, data: v1SetTagsNodeRequest) -> v1NodeResponse: response = self.call('post', f'{nodeId}/tags', data) return v1NodeResponse(**response.json()) diff --git a/hsapi-client/hsapi_client/schemas.py b/hsapi-client/hsapi_client/schemas.py index 671d6dd..c64b38d 100644 --- a/hsapi-client/hsapi_client/schemas.py +++ b/hsapi-client/hsapi_client/schemas.py @@ -25,7 +25,7 @@ class v1ApiKey(BaseModel): def expired(self) -> bool: tzinfo = timezone(timedelta(hours=0)) # UTC now = datetime.now(tzinfo) - return self.expiration < now # type: ignore + return self.expiration < now class v1PreAuthKey(BaseModel):