diff --git a/portainer/__init__.py b/portainer/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/portainer/base.py b/portainer/base.py new file mode 100644 index 0000000..290d04a --- /dev/null +++ b/portainer/base.py @@ -0,0 +1,15 @@ +import requests + + +class ApiBase: + def __init__(self, base_url, token): + self.base_url = f"{base_url}/api" + self.headers = {"X-API-Key": token} + + def request(self, method, url): + response = requests.request( + url=url, + method=method, + headers=self.headers + ) + \ No newline at end of file diff --git a/portainer/containers.py b/portainer/containers.py new file mode 100644 index 0000000..c08be95 --- /dev/null +++ b/portainer/containers.py @@ -0,0 +1,7 @@ +from .base import ApiBase + + +class ContainersApi(ApiBase): + def list_containers_by_endpoint(self, endpoint): + url = f"{self.base_url}/docker/{endpoint}/snapshot/containers" + return self.request("GET", url).json() diff --git a/portainer/endpoints.py b/portainer/endpoints.py new file mode 100644 index 0000000..223d7e2 --- /dev/null +++ b/portainer/endpoints.py @@ -0,0 +1,7 @@ +from .base import ApiBase + + +class EndpointApi(ApiBase): + def list_endpoints(self): + url = f"{self.base_url}/endpoints" + return self.request("GET", url).json() diff --git a/portainer/stacks.py b/portainer/stacks.py new file mode 100644 index 0000000..765b6d7 --- /dev/null +++ b/portainer/stacks.py @@ -0,0 +1,16 @@ +from .base import ApiBase + + +class StacksApi(ApiBase): + def list_stacks(self): + url = f"{self.base_url}/stacks" + return self.request("GET", url).json() + + def get_stack_by_id(self, stack_id): + url = f"{self.base_url}/stacks/{stack_id}" + return self.request("GET", url).json() + + def update_stack(self, webhook): + url = f"{self.base_url}/stacks/webhooks/{webhook}" + return self.request("POST", url) + \ No newline at end of file