From 933dfb25bbc70b3cd1de43abbe27e4e8bea21332 Mon Sep 17 00:00:00 2001 From: jblu Date: Tue, 21 Mar 2023 12:16:01 -0500 Subject: [PATCH] mostly stable --- cclient.py | 6 ++++++ cprocess.py | 1 + crane.py | 2 +- test_crane.py | 7 ++++++- 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/cclient.py b/cclient.py index 05ed029..22e0bb9 100644 --- a/cclient.py +++ b/cclient.py @@ -8,6 +8,12 @@ def c_get_containers(req_obj, host, port, jwt, endpoint): c_get_containers_response = req_obj.get(url, headers={"Authorization": f"Bearer {jwt}"},verify=False) return c_get_containers_response.json() +#filters={"name": ["restic","qbittorrent"],"status": ["paused","dead","created","exited","removing","restarting","created"]} +def c_get_filtered_containers(req_obj, host, port, jwt, endpoint, containers, statuses): + url = f'https://{host}:{port}/api/endpoints/{endpoint}/docker/containers/json?filters={"name": {containers},"status": {statuses}}' + c_get_containers_response = req_obj.get(url, headers={"Authorization": f"Bearer {jwt}"},verify=False) + return c_get_containers_response.json() + def c_start_container(req_obj, host, port, jwt, endpoint, cid): url = f'https://{host}:{port}/api/endpoints/{endpoint}/docker/containers/{cid}/start' c_start_container_response = req_obj.post(url, headers={"Authorization": f"Bearer {jwt}"},verify=False) diff --git a/cprocess.py b/cprocess.py index 7429337..442a075 100644 --- a/cprocess.py +++ b/cprocess.py @@ -1,4 +1,5 @@ # TODO add file for containers that need to be started + def build_cont_list(obj, hypercare_containers): cont_list = [] for i, c in enumerate(obj): diff --git a/crane.py b/crane.py index da83e20..6440cb0 100644 --- a/crane.py +++ b/crane.py @@ -50,7 +50,7 @@ class Crn: self.tl.info('Authenticated successfully.') self.cont_obj = c_get_containers(self.cc, self.host, self.port, self.jwt, self.endpoint) self.tl.debug('Collected container data.') - self.cont_list = build_cont_list(self.cont_obj, self.observed_containers) + self.cont_list = build_full_cont_list(self.cont_obj, self.observed_containers) self.tl.debug('Building container list.') self.process_cont_list_response = process_cont_list(self.cont_list, c_start_container, self.cc, self.host, self.port, self.jwt, self.endpoint) if self.process_cont_list_response: diff --git a/test_crane.py b/test_crane.py index 98ff825..7824c76 100644 --- a/test_crane.py +++ b/test_crane.py @@ -1,7 +1,7 @@ import unittest import requests from tomllib import load -from cclient import c_auth, c_get_containers, c_start_container, c_stop_container +from cclient import c_auth, c_get_containers, c_start_container, c_stop_container, c_get_filtered_containers from cprocess import build_cont_list, process_cont_list, build_full_cont_list, process_cont_status unittest.TestLoader.sortTestMethodsUsing = None @@ -17,8 +17,10 @@ class TestCrane(unittest.TestCase): self.cid = 'aa5b217ca6217fd9d268396039da69ea9e4a5aff381b3dceb71edb5a1f4d429d' self.req_obj = requests self.hypercare_containers = ['hello-world'] + #self.status_filters = ["paused","dead","created","exited","removing","restarting","created"] self.jwt = c_auth(self.req_obj, self.host, self.port, self.username, self.password) self.cont_obj = c_get_containers(self.req_obj, self.host, self.port, self.jwt, self.endpoint) + #self.cont_obj_f = c_get_filtered_containers(self.req_obj, self.host, self.port, self.jwt, self.endpoint,self.hypercare_containers,self.status_filters) def test_c_auth(self): self.assertTrue(self.jwt, "No JWT returned by cauth.") @@ -26,6 +28,9 @@ class TestCrane(unittest.TestCase): def test_c_get_containers(self): self.assertTrue(self.cont_obj, "No cont object returned by c_get_containers.") + def test_c_get_containers_f(self): + self.assertTrue(self.cont_obj_f, "No cont object returned by c_get_containers.") + def test_a_is_hypercare_container_status(self): self.cont_full_list = build_full_cont_list(self.cont_obj, self.hypercare_containers) self.process_cont_status_response = process_cont_status(self.cont_full_list) -- 2.45.2