|
|
|
@ -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())
|
|
|
|
|
|
|
|
|
|