49 lines
2.1 KiB
Python
49 lines
2.1 KiB
Python
from .model import HSAPICall
|
|
from headscale_api_client.schemas import (v1ListNodesResponse,
|
|
v1GetNodeResponse,
|
|
v1DeleteNodeResponse,
|
|
v1ExpireNodeResponse, v1MoveNodeRequest,
|
|
v1RenameNodeResponse,
|
|
v1MoveNodeRequest,
|
|
v1MoveNodeResponse,
|
|
v1GetNodeRoutesResponse,
|
|
v1SetTagsResponse,
|
|
HeadscaleServiceSetTagsBody)
|
|
|
|
|
|
class Node(HSAPICall):
|
|
|
|
objectPath = "node"
|
|
|
|
def list(self) -> v1ListNodesResponse:
|
|
response = self.call('get')
|
|
return v1ListNodesResponse(**response.json())
|
|
|
|
def get(self, nodeId: str) -> v1GetNodeResponse:
|
|
response = self.call('get', call_path=nodeId)
|
|
return v1GetNodeResponse(**response.json())
|
|
|
|
def delete(self, nodeId: str) -> v1DeleteNodeResponse:
|
|
response = self.call('delete', call_path=nodeId)
|
|
return v1DeleteNodeResponse(**response.json())
|
|
|
|
def expire(self, nodeId: str) -> v1ExpireNodeResponse:
|
|
response = self.call('post', f'{nodeId}/expire')
|
|
return v1ExpireNodeResponse()(**response.json())
|
|
|
|
def rename(self, nodeId: str, newName: str) -> v1RenameNodeResponse:
|
|
response = self.call('post', f'{nodeId}/rename/{newName}')
|
|
return v1RenameNodeResponse(**response.json())
|
|
|
|
def move(self, nodeId: str, data: v1MoveNodeRequest) -> v1MoveNodeResponse:
|
|
response = self.call('post', f'{nodeId}/user', data)
|
|
return v1MoveNodeResponse()(**response.json())
|
|
|
|
def routes(self, nodeId: str) -> v1GetNodeRoutesResponse:
|
|
response = self.call('get', f'{nodeId}/routes')
|
|
return v1GetNodeRoutesResponse(**response.json())
|
|
|
|
def setTags(self, nodeId: str, data: HeadscaleServiceSetTagsBody) -> v1SetTagsResponse:
|
|
response = self.call('post', f'{nodeId}/tags', data)
|
|
return v1SetTagsResponse(**response.json())
|