Skip to content

Support Monitor Client and Fetch Entity Metrics #569

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 7 commits into
base: dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion linode_api4/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# isort: skip_file
from linode_api4.objects import *
from linode_api4.errors import ApiError, UnexpectedResponseError
from linode_api4.linode_client import LinodeClient
from linode_api4.linode_client import LinodeClient, MonitorClient
from linode_api4.login_client import LinodeLoginClient, OAuthScopes
from linode_api4.paginated_list import PaginatedList
from linode_api4.polling import EventPoller
1 change: 1 addition & 0 deletions linode_api4/groups/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
from .lke_tier import *
from .longview import *
from .monitor import *
from .monitor_api import *
from .networking import *
from .nodebalancer import *
from .object_storage import *
Expand Down
4 changes: 2 additions & 2 deletions linode_api4/groups/group.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
from typing import TYPE_CHECKING

if TYPE_CHECKING:
from linode_api4 import LinodeClient
from linode_api4.linode_client import BaseClient


class Group:
def __init__(self, client: LinodeClient):
def __init__(self, client: BaseClient):
self.client = client
4 changes: 1 addition & 3 deletions linode_api4/groups/monitor.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,7 @@
]
from typing import Any, Optional

from linode_api4 import (
PaginatedList,
)
from linode_api4 import PaginatedList
from linode_api4.errors import UnexpectedResponseError
from linode_api4.groups import Group
from linode_api4.objects import (
Expand Down
50 changes: 50 additions & 0 deletions linode_api4/groups/monitor_api.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
__all__ = [
"MetricsGroup",
]

from typing import Optional

from linode_api4.groups import Group
from linode_api4.objects.monitor_api import EntityMetrics


class MetricsGroup(Group):
"""
Encapsulates Monitor-related methods of the :any:`MonitorClient`.

This group contains all features related to metrics in the API monitor-api.
"""

def fetch_metrics(
self,
service_type: str,
entity_ids: list,
**kwargs,
) -> Optional[EntityMetrics]:
"""
Returns metrics information for the individual entities within a specific service type.

API documentation: https://techdocs.akamai.com/linode-api/reference/post-read-metric

:param service_type: The service being monitored.
Currently, only the Managed Databases (dbaas) service type is supported.
:type service_type: str

:param entity_ids: The id for each individual entity from a service_type.
:type entity_ids: list

:param kwargs: Any other arguments accepted by the api. Please refer to the API documentation for full info.

:returns: Service metrics requested.
:rtype: EntityMetrics or None
"""

params = {"entity_ids": entity_ids}

params.update(kwargs)

result = self.client.post(
f"/monitor/services/{service_type}/metrics", data=params
)

return EntityMetrics.from_json(result)
Loading