From f950b3719f5e28ae58c940dca03a7480c9b95fec Mon Sep 17 00:00:00 2001 From: Oscar Andersson Date: Thu, 27 Dec 2018 20:02:44 +0100 Subject: [PATCH] Add Ombi issues counter --- Varken.py | 2 ++ data/varken.example.ini | 3 +++ varken/iniparser.py | 6 +++++- varken/ombi.py | 30 +++++++++++++++++++++++++++++- varken/structures.py | 7 +++++++ 5 files changed, 46 insertions(+), 2 deletions(-) diff --git a/Varken.py b/Varken.py index 20aea2b..b0b5ab9 100644 --- a/Varken.py +++ b/Varken.py @@ -121,6 +121,8 @@ if __name__ == "__main__": schedule.every(server.request_type_run_seconds).seconds.do(threaded, OMBI.get_request_counts) if server.request_total_counts: schedule.every(server.request_total_run_seconds).seconds.do(threaded, OMBI.get_all_requests) + if server.request_issues_counts: + schedule.every(server.request_issues_type_run_seconds).seconds.do(threaded, OMBI.get_issues_counts) if CONFIG.sickchill_enabled: for server in CONFIG.sickchill_servers: diff --git a/data/varken.example.ini b/data/varken.example.ini index 39c382b..e1db4da 100644 --- a/data/varken.example.ini +++ b/data/varken.example.ini @@ -83,6 +83,9 @@ get_request_type_counts = true request_type_run_seconds = 300 get_request_total_counts = true request_total_run_seconds = 300 +get_request_issues_counts = true +request_type_issues_run_seconds = 300 + [sickchill-1] url = sickchill.domain.tld:8081 diff --git a/varken/iniparser.py b/varken/iniparser.py index c920d96..a304450 100644 --- a/varken/iniparser.py +++ b/varken/iniparser.py @@ -179,9 +179,13 @@ class INIParser(object): request_total_run_seconds = self.config.getint(section, 'request_total_run_seconds') + request_issues_counts = self.config.getboolean(section, 'get_request_issues_counts') + + request_issues_type_run_seconds = self.config.getint(section, 'request_type_issues_run_seconds') + server = OmbiServer(server_id, scheme + url, apikey, verify_ssl, request_type_counts, request_type_run_seconds, request_total_counts, - request_total_run_seconds) + request_total_run_seconds, request_issues_counts, request_issues_type_run_seconds) if service == 'sickchill': get_missing = self.config.getboolean(section, 'get_missing') diff --git a/varken/ombi.py b/varken/ombi.py index c535aba..03cd8c3 100644 --- a/varken/ombi.py +++ b/varken/ombi.py @@ -3,7 +3,7 @@ from requests import Session, Request from datetime import datetime, timezone from varken.helpers import connection_handler, hashit -from varken.structures import OmbiRequestCounts, OmbiMovieRequest, OmbiTVRequest +from varken.structures import OmbiRequestCounts, OmbiIssuesCounts, OmbiMovieRequest, OmbiTVRequest class OmbiAPI(object): @@ -165,3 +165,31 @@ class OmbiAPI(object): ] self.dbmanager.write_points(influx_payload) + + def get_issues_counts(self): + now = datetime.now(timezone.utc).astimezone().isoformat() + endpoint = '/api/v1/Issues/count' + + req = self.session.prepare_request(Request('GET', self.server.url + endpoint)) + get = connection_handler(self.session, req, self.server.verify_ssl) + + if not get: + return + + requests = OmbiIssuesCounts(**get) + influx_payload = [ + { + "measurement": "Ombi", + "tags": { + "type": "Issues_Counts" + }, + "time": now, + "fields": { + "pending": requests.pending, + "in_progress": requests.inProgress, + "resolved": requests.resolved + } + } + ] + + self.dbmanager.write_points(influx_payload) diff --git a/varken/structures.py b/varken/structures.py index bfc297c..7b57f85 100644 --- a/varken/structures.py +++ b/varken/structures.py @@ -61,6 +61,8 @@ class OmbiServer(NamedTuple): request_type_run_seconds: int = 30 request_total_counts: bool = False request_total_run_seconds: int = 30 + request_issues_counts: bool = False + request_issues_type_run_seconds: int = 30 class TautulliServer(NamedTuple): @@ -106,6 +108,11 @@ class OmbiRequestCounts(NamedTuple): approved: int = 0 available: int = 0 +class OmbiIssuesCounts(NamedTuple): + pending: int = 0 + inProgress: int = 0 + resolved: int = 0 + class TautulliStream(NamedTuple): rating: str = None