From 7c2d777dab0175729708af1b0eadf10fd72dc11c Mon Sep 17 00:00:00 2001 From: Terrell Russell Date: Mon, 20 Apr 2026 23:13:19 -0400 Subject: [PATCH] [#817] add zone_report capability to zone manager --- irods/api_number.py | 1 + irods/manager/zone_manager.py | 17 +++++++++++++++++ irods/test/admin_test.py | 10 ++++++++++ 3 files changed, 28 insertions(+) diff --git a/irods/api_number.py b/irods/api_number.py index 03ac3de86..af8fe277b 100644 --- a/irods/api_number.py +++ b/irods/api_number.py @@ -181,4 +181,5 @@ "TOUCH_APN": 20007, "AUTH_PLUG_REQ_AN": 1201, "AUTHENTICATION_APN": 110000, + "ZONE_REPORT_AN": 10205, } diff --git a/irods/manager/zone_manager.py b/irods/manager/zone_manager.py index 25cd106a1..ad96b30fa 100644 --- a/irods/manager/zone_manager.py +++ b/irods/manager/zone_manager.py @@ -41,3 +41,20 @@ def remove(self, zone_name): conn.send(request) response = conn.recv() logger.debug(response.int_info) + + def zone_report(self): + """ + Get zone report. + + Requires rodsadmin privileges. + + Returns: + dict: Contains zone configuration. + """ + message_body = "" + request = iRODSMessage("RODS_API_REQ", msg=message_body, int_info=api_number["ZONE_REPORT_AN"]) + with self.sess.pool.get_connection() as conn: + conn.send(request) + response = conn.recv() + logger.debug(response.int_info) + return response.get_json_encoded_struct() diff --git a/irods/test/admin_test.py b/irods/test/admin_test.py index 7634f5df9..d524ff41f 100644 --- a/irods/test/admin_test.py +++ b/irods/test/admin_test.py @@ -52,6 +52,16 @@ def test_create_delete_local_user(self): with self.assertRaises(UserDoesNotExist): self.sess.users.get(self.new_user_name) + def test_zone_report(self): + # get zone report + report = self.sess.zones.zone_report() + + # confirm it is a dict + self.assertTrue(isinstance(report, dict)) + + # confirm zone name matches + self.assertEqual(report["zones"][0]["servers"][0]["server_config"]["zone_name"], self.sess.zone) + def test_create_delete_user_zone(self): # user should not be already present with self.assertRaises(UserDoesNotExist):