From a9397d3f144ec013f1501a66f127f357e8b7cfd1 Mon Sep 17 00:00:00 2001 From: 6a6f656c Date: Fri, 24 May 2024 10:58:42 -0400 Subject: [PATCH 1/9] mq__enum module --- pacu/modules/mq__enum/__init__.py | 0 pacu/modules/mq__enum/main.py | 100 ++++++++++++++++++++++++++++++ 2 files changed, 100 insertions(+) create mode 100644 pacu/modules/mq__enum/__init__.py create mode 100755 pacu/modules/mq__enum/main.py diff --git a/pacu/modules/mq__enum/__init__.py b/pacu/modules/mq__enum/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/pacu/modules/mq__enum/main.py b/pacu/modules/mq__enum/main.py new file mode 100755 index 00000000..9df8020c --- /dev/null +++ b/pacu/modules/mq__enum/main.py @@ -0,0 +1,100 @@ +#!/usr/bin/env python3 +import argparse +import time +import json + +from pacu.core.lib import downloads_dir +from pacu.core.lib import strip_lines +from pacu import Main + +module_info = { + "name": "mq__enum", + "author": "6a6f656c & h00die of nDepth Security", + "category": "ENUM", # or maybe persistence? kind of depends what may come over the topic, like creds + "one_liner": "List and describer brokers", + "description": strip_lines( + """ + This module will attempt to list and gather information from available brokers. + """ + ), + "services": ["MQ"], + "prerequisite_modules": [], + "arguments_to_autocomplete": [], +} + +parser = argparse.ArgumentParser(add_help=False, description=module_info["description"]) + + +def main(args, pacu_main: "Main"): + session = pacu_main.get_active_session() + + # Don't modify these. They can be removed if you are not using the function. + # args = parser.parse_args(args) + print = pacu_main.print + + key_info = pacu_main.key_info + fetch_data = pacu_main.fetch_data + + # End don't modify + + client = pacu_main.get_boto3_client("mq") + + # Prepare output file to store ECR data + now = time.time() + outfile_path = str(downloads_dir() / f"mq_enum_{now}.json") + + try: + response = client.list_brokers( + MaxResults=10_000, + ) + + except Exception as error: + print( + "Unable to list brokers; Check credentials or No brokers are available. Error: {}".format( + error + ) + ) + return + + summary_data = {} + summary_data["mq"] = {} + + for broker in response["BrokerSummaries"]: + broker_details = client.describe_broker(BrokerId=broker["BrokerId"]) + summary_data["mq"][broker["BrokerId"]] = {} + summary_data["mq"][broker["BrokerId"]]["AuthenticationStrategy"] = ( + broker_details["AuthenticationStrategy"] + ) + summary_data["mq"][broker["BrokerId"]]["PubliclyAccessible"] = broker_details[ + "PubliclyAccessible" + ] + summary_data["mq"][broker["BrokerId"]]["BrokerName"] = broker_details[ + "BrokerName" + ] + summary_data["mq"][broker["BrokerId"]]["BrokerState"] = broker_details[ + "BrokerState" + ] + summary_data["mq"][broker["BrokerId"]]["Users"] = broker_details["Users"] + summary_data["mq"][broker["BrokerId"]]["EngineType"] = broker_details[ + "EngineType" + ] + summary_data["mq"][broker["BrokerId"]]["ConsoleURL"] = [ + url["ConsoleURL"] for url in broker_details["BrokerInstances"] + ] + + # Write all the data to the output file + print("Writing all MQ results to file: {}".format(outfile_path)) + with open(outfile_path, "w+") as f: + f.write(json.dumps(summary_data, indent=4, default=str)) + + return summary_data + + +def summary(data, pacu_main): + out = "" + out += "Num of MQ brokers found: {} \n".format(len(data["mq"])) + total_users = 0 + for broker in data["mq"]: + total_users += len(broker["Users"]) + out += "Num of MQ users found: {} \n".format(total_users) + return out From dba59f40db007fa29d9e08d68d22b7f4013e5710 Mon Sep 17 00:00:00 2001 From: 6a6f656c Date: Fri, 24 May 2024 12:07:16 -0400 Subject: [PATCH 2/9] added regions --- pacu/modules/mq__enum/main.py | 107 ++++++++++++++++++++-------------- 1 file changed, 63 insertions(+), 44 deletions(-) diff --git a/pacu/modules/mq__enum/main.py b/pacu/modules/mq__enum/main.py index 9df8020c..75f043b5 100755 --- a/pacu/modules/mq__enum/main.py +++ b/pacu/modules/mq__enum/main.py @@ -24,63 +24,79 @@ parser = argparse.ArgumentParser(add_help=False, description=module_info["description"]) +parser.add_argument('--regions', required=False, default=None, help=strip_lines(''' + One or more (comma separated) AWS regions in the format "us-east-1". Defaults to all session regions. +''')) def main(args, pacu_main: "Main"): session = pacu_main.get_active_session() # Don't modify these. They can be removed if you are not using the function. - # args = parser.parse_args(args) + args = parser.parse_args(args) print = pacu_main.print key_info = pacu_main.key_info fetch_data = pacu_main.fetch_data # End don't modify + get_regions = pacu_main.get_regions + if not args.regions: + regions = get_regions('mq') + else: + regions = args.regions.split(',') - client = pacu_main.get_boto3_client("mq") + summary_data = {} + summary_data["mq"] = {} - # Prepare output file to store ECR data - now = time.time() - outfile_path = str(downloads_dir() / f"mq_enum_{now}.json") + for region in regions: + print('Starting region {}...'.format(region)) + summary_data["mq"][region] = {} - try: - response = client.list_brokers( - MaxResults=10_000, - ) + try: + client = pacu_main.get_boto3_client("mq", region) + except Exception as error: + print("Unable to connect to MQ service. Error: {}".format(error)) + continue - except Exception as error: - print( - "Unable to list brokers; Check credentials or No brokers are available. Error: {}".format( - error - ) - ) - return + # Prepare output file to store ECR data + now = time.time() + outfile_path = str(downloads_dir() / f"mq_enum_{now}.json") - summary_data = {} - summary_data["mq"] = {} + try: + response = client.list_brokers( + MaxResults=100, + ) - for broker in response["BrokerSummaries"]: - broker_details = client.describe_broker(BrokerId=broker["BrokerId"]) - summary_data["mq"][broker["BrokerId"]] = {} - summary_data["mq"][broker["BrokerId"]]["AuthenticationStrategy"] = ( - broker_details["AuthenticationStrategy"] - ) - summary_data["mq"][broker["BrokerId"]]["PubliclyAccessible"] = broker_details[ - "PubliclyAccessible" - ] - summary_data["mq"][broker["BrokerId"]]["BrokerName"] = broker_details[ - "BrokerName" - ] - summary_data["mq"][broker["BrokerId"]]["BrokerState"] = broker_details[ - "BrokerState" - ] - summary_data["mq"][broker["BrokerId"]]["Users"] = broker_details["Users"] - summary_data["mq"][broker["BrokerId"]]["EngineType"] = broker_details[ - "EngineType" - ] - summary_data["mq"][broker["BrokerId"]]["ConsoleURL"] = [ - url["ConsoleURL"] for url in broker_details["BrokerInstances"] - ] + except Exception as error: + print( + "Unable to list brokers; Check credentials or No brokers are available. Error: {}".format( + error + ) + ) + continue + print("Found {} brokers".format(len(response["BrokerSummaries"]))) + for broker in response["BrokerSummaries"]: + broker_details = client.describe_broker(BrokerId=broker["BrokerId"]) + summary_data["mq"][region][broker["BrokerId"]] = {} + summary_data["mq"][region][broker["BrokerId"]]["AuthenticationStrategy"] = ( + broker_details["AuthenticationStrategy"] + ) + summary_data["mq"][region][broker["BrokerId"]]["PubliclyAccessible"] = broker_details[ + "PubliclyAccessible" + ] + summary_data["mq"][region][broker["BrokerId"]]["BrokerName"] = broker_details[ + "BrokerName" + ] + summary_data["mq"][region][broker["BrokerId"]]["BrokerState"] = broker_details[ + "BrokerState" + ] + summary_data["mq"][region][broker["BrokerId"]]["Users"] = broker_details["Users"] + summary_data["mq"][region][broker["BrokerId"]]["EngineType"] = broker_details[ + "EngineType" + ] + summary_data["mq"][region][broker["BrokerId"]]["ConsoleURL"] = [ + url["ConsoleURL"] for url in broker_details["BrokerInstances"] + ] # Write all the data to the output file print("Writing all MQ results to file: {}".format(outfile_path)) @@ -89,12 +105,15 @@ def main(args, pacu_main: "Main"): return summary_data - def summary(data, pacu_main): out = "" - out += "Num of MQ brokers found: {} \n".format(len(data["mq"])) + total_users = 0 - for broker in data["mq"]: - total_users += len(broker["Users"]) + total_brokers = 0 + for region in data["mq"]: + total_brokers += len(data["mq"][region]) + for broker in data["mq"][region]: + total_users += len(data["mq"][region][broker]["Users"]) + out += "Num of MQ brokers found: {} \n".format(total_brokers) out += "Num of MQ users found: {} \n".format(total_users) return out From ae9338e9865e2ca167b5b6ed71c6cab5a80ff75b Mon Sep 17 00:00:00 2001 From: 6a6f656c Date: Tue, 28 May 2024 09:52:19 -0400 Subject: [PATCH 3/9] saving to database --- pacu/core/models.py | 4 +++ pacu/modules/mq__enum/main.py | 59 ++++++++++++++++++++++------------- 2 files changed, 42 insertions(+), 21 deletions(-) diff --git a/pacu/core/models.py b/pacu/core/models.py index 5d29cd48..a02da939 100644 --- a/pacu/core/models.py +++ b/pacu/core/models.py @@ -36,6 +36,7 @@ class AWSKey(Base, ModelUpdateMixin): permissions_confirmed = Column(JSONType) allow_permissions = Column(JSONType, nullable=False, default=dict) deny_permissions = Column(JSONType, nullable=False, default=dict) + mq = Column(JSONType) def __repr__(self): return ''.format(self.id, self.key_alias) @@ -60,6 +61,7 @@ def get_fields_as_camel_case_dictionary(self) -> dict: 'Allow': remove_empty_from_dict(self.allow_permissions), 'Deny': remove_empty_from_dict(self.deny_permissions), }, + 'MQ':self.mq }) @@ -84,6 +86,7 @@ class PacuSession(Base, ModelUpdateMixin): 'Inspector', 'Lambda', 'Lightsail', + 'MQ', 'S3', 'SecretsManager', 'Shield', @@ -129,6 +132,7 @@ class PacuSession(Base, ModelUpdateMixin): Inspector = Column(JSONType, nullable=False, default=dict) Lambda = Column(JSONType, nullable=False, default=dict) Lightsail = Column(JSONType, nullable=False, default=dict) + MQ = Column(JSONType, nullable=False, default=dict) RDS = Column(JSONType, nullable=False, default=dict) S3 = Column(JSONType, nullable=False, default=dict) SecretsManager = Column(JSONType, nullable=False, default=dict) diff --git a/pacu/modules/mq__enum/main.py b/pacu/modules/mq__enum/main.py index 75f043b5..0e659323 100755 --- a/pacu/modules/mq__enum/main.py +++ b/pacu/modules/mq__enum/main.py @@ -6,12 +6,13 @@ from pacu.core.lib import downloads_dir from pacu.core.lib import strip_lines from pacu import Main +from copy import deepcopy module_info = { "name": "mq__enum", "author": "6a6f656c & h00die of nDepth Security", - "category": "ENUM", # or maybe persistence? kind of depends what may come over the topic, like creds - "one_liner": "List and describer brokers", + "category": "ENUM", + "one_liner": "Listo and describe brokers", "description": strip_lines( """ This module will attempt to list and gather information from available brokers. @@ -24,9 +25,17 @@ parser = argparse.ArgumentParser(add_help=False, description=module_info["description"]) -parser.add_argument('--regions', required=False, default=None, help=strip_lines(''' +parser.add_argument( + "--regions", + required=False, + default=None, + help=strip_lines( + """ One or more (comma separated) AWS regions in the format "us-east-1". Defaults to all session regions. -''')) +""" + ), +) + def main(args, pacu_main: "Main"): session = pacu_main.get_active_session() @@ -41,15 +50,15 @@ def main(args, pacu_main: "Main"): # End don't modify get_regions = pacu_main.get_regions if not args.regions: - regions = get_regions('mq') + regions = get_regions("mq") else: - regions = args.regions.split(',') + regions = args.regions.split(",") summary_data = {} summary_data["mq"] = {} for region in regions: - print('Starting region {}...'.format(region)) + print("Starting region {}...".format(region)) summary_data["mq"][region] = {} try: @@ -58,7 +67,7 @@ def main(args, pacu_main: "Main"): print("Unable to connect to MQ service. Error: {}".format(error)) continue - # Prepare output file to store ECR data + # Prepare output file to store MQ data now = time.time() outfile_path = str(downloads_dir() / f"mq_enum_{now}.json") @@ -81,19 +90,21 @@ def main(args, pacu_main: "Main"): summary_data["mq"][region][broker["BrokerId"]]["AuthenticationStrategy"] = ( broker_details["AuthenticationStrategy"] ) - summary_data["mq"][region][broker["BrokerId"]]["PubliclyAccessible"] = broker_details[ - "PubliclyAccessible" - ] - summary_data["mq"][region][broker["BrokerId"]]["BrokerName"] = broker_details[ - "BrokerName" - ] - summary_data["mq"][region][broker["BrokerId"]]["BrokerState"] = broker_details[ - "BrokerState" - ] - summary_data["mq"][region][broker["BrokerId"]]["Users"] = broker_details["Users"] - summary_data["mq"][region][broker["BrokerId"]]["EngineType"] = broker_details[ - "EngineType" + summary_data["mq"][region][broker["BrokerId"]]["PubliclyAccessible"] = ( + broker_details["PubliclyAccessible"] + ) + summary_data["mq"][region][broker["BrokerId"]]["BrokerName"] = ( + broker_details["BrokerName"] + ) + summary_data["mq"][region][broker["BrokerId"]]["BrokerState"] = ( + broker_details["BrokerState"] + ) + summary_data["mq"][region][broker["BrokerId"]]["Users"] = broker_details[ + "Users" ] + summary_data["mq"][region][broker["BrokerId"]]["EngineType"] = ( + broker_details["EngineType"] + ) summary_data["mq"][region][broker["BrokerId"]]["ConsoleURL"] = [ url["ConsoleURL"] for url in broker_details["BrokerInstances"] ] @@ -103,11 +114,17 @@ def main(args, pacu_main: "Main"): with open(outfile_path, "w+") as f: f.write(json.dumps(summary_data, indent=4, default=str)) + mq_data = deepcopy(session.MQ) + for key, value in summary_data.items(): + mq_data[key] = value + session.update(pacu_main.database, MQ=mq_data) + return summary_data + def summary(data, pacu_main): out = "" - + total_users = 0 total_brokers = 0 for region in data["mq"]: From 3bc28bd3e59d90a64a075ba08fb0ddf347060f11 Mon Sep 17 00:00:00 2001 From: 6a6f656c Date: Tue, 28 May 2024 10:17:29 -0400 Subject: [PATCH 4/9] __Found --- pacu/modules/mq__enum/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pacu/modules/mq__enum/main.py b/pacu/modules/mq__enum/main.py index 0e659323..d5d74ffd 100755 --- a/pacu/modules/mq__enum/main.py +++ b/pacu/modules/mq__enum/main.py @@ -83,7 +83,7 @@ def main(args, pacu_main: "Main"): ) ) continue - print("Found {} brokers".format(len(response["BrokerSummaries"]))) + print(" Found {} brokers".format(len(response["BrokerSummaries"]))) for broker in response["BrokerSummaries"]: broker_details = client.describe_broker(BrokerId=broker["BrokerId"]) summary_data["mq"][region][broker["BrokerId"]] = {} From e2e4a71562d3473cbdaa4e394115c2b5b5c7cd09 Mon Sep 17 00:00:00 2001 From: 6a6f656c Date: Tue, 28 May 2024 14:30:43 -0400 Subject: [PATCH 5/9] removed output file --- pacu/modules/mq__enum/main.py | 8 -------- 1 file changed, 8 deletions(-) diff --git a/pacu/modules/mq__enum/main.py b/pacu/modules/mq__enum/main.py index d5d74ffd..69dac9ff 100755 --- a/pacu/modules/mq__enum/main.py +++ b/pacu/modules/mq__enum/main.py @@ -67,10 +67,6 @@ def main(args, pacu_main: "Main"): print("Unable to connect to MQ service. Error: {}".format(error)) continue - # Prepare output file to store MQ data - now = time.time() - outfile_path = str(downloads_dir() / f"mq_enum_{now}.json") - try: response = client.list_brokers( MaxResults=100, @@ -109,10 +105,6 @@ def main(args, pacu_main: "Main"): url["ConsoleURL"] for url in broker_details["BrokerInstances"] ] - # Write all the data to the output file - print("Writing all MQ results to file: {}".format(outfile_path)) - with open(outfile_path, "w+") as f: - f.write(json.dumps(summary_data, indent=4, default=str)) mq_data = deepcopy(session.MQ) for key, value in summary_data.items(): From fb0cb8128d72c020ec573123a750b4d5e8026b01 Mon Sep 17 00:00:00 2001 From: 6a6f656c Date: Tue, 28 May 2024 14:35:10 -0400 Subject: [PATCH 6/9] Listo to List --- pacu/modules/mq__enum/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pacu/modules/mq__enum/main.py b/pacu/modules/mq__enum/main.py index 69dac9ff..3b13f0ce 100755 --- a/pacu/modules/mq__enum/main.py +++ b/pacu/modules/mq__enum/main.py @@ -12,7 +12,7 @@ "name": "mq__enum", "author": "6a6f656c & h00die of nDepth Security", "category": "ENUM", - "one_liner": "Listo and describe brokers", + "one_liner": "List and describe brokers", "description": strip_lines( """ This module will attempt to list and gather information from available brokers. From 6d19777356ee0e0fa0216dee1af64805f8af749a Mon Sep 17 00:00:00 2001 From: 6a6f656c Date: Tue, 28 May 2024 15:41:13 -0400 Subject: [PATCH 7/9] added paginator and brokerId --- pacu/modules/mq__enum/main.py | 58 +++++++++++++++++++---------------- 1 file changed, 31 insertions(+), 27 deletions(-) diff --git a/pacu/modules/mq__enum/main.py b/pacu/modules/mq__enum/main.py index 3b13f0ce..01d3c91b 100755 --- a/pacu/modules/mq__enum/main.py +++ b/pacu/modules/mq__enum/main.py @@ -68,10 +68,9 @@ def main(args, pacu_main: "Main"): continue try: - response = client.list_brokers( - MaxResults=100, - ) - + paginator = client.get_paginator("list_brokers") + # Create a PageIterator from the paginator + page_iterator = paginator.paginate() except Exception as error: print( "Unable to list brokers; Check credentials or No brokers are available. Error: {}".format( @@ -80,31 +79,36 @@ def main(args, pacu_main: "Main"): ) continue print(" Found {} brokers".format(len(response["BrokerSummaries"]))) + broker_id = broker["BrokerId"] for broker in response["BrokerSummaries"]: - broker_details = client.describe_broker(BrokerId=broker["BrokerId"]) - summary_data["mq"][region][broker["BrokerId"]] = {} - summary_data["mq"][region][broker["BrokerId"]]["AuthenticationStrategy"] = ( - broker_details["AuthenticationStrategy"] - ) - summary_data["mq"][region][broker["BrokerId"]]["PubliclyAccessible"] = ( - broker_details["PubliclyAccessible"] - ) - summary_data["mq"][region][broker["BrokerId"]]["BrokerName"] = ( - broker_details["BrokerName"] - ) - summary_data["mq"][region][broker["BrokerId"]]["BrokerState"] = ( - broker_details["BrokerState"] - ) - summary_data["mq"][region][broker["BrokerId"]]["Users"] = broker_details[ - "Users" - ] - summary_data["mq"][region][broker["BrokerId"]]["EngineType"] = ( - broker_details["EngineType"] - ) - summary_data["mq"][region][broker["BrokerId"]]["ConsoleURL"] = [ - url["ConsoleURL"] for url in broker_details["BrokerInstances"] - ] + for response in page_iterator: + if broker_id["BrokerState"] == "CREATION_IN_PROGRESS": + continue + broker_details = client.describe_broker(BrokerId=broker_id["BrokerId"]) + + summary_data["mq"][region][broker_id["BrokerId"]] = {} + summary_data["mq"][region][broker_id["BrokerId"]][ + "AuthenticationStrategy" + ] = broker_details["AuthenticationStrategy"] + summary_data["mq"][region][broker_id["BrokerId"]][ + "PubliclyAccessible" + ] = broker_details["PubliclyAccessible"] + summary_data["mq"][region][broker_id["BrokerId"]]["BrokerName"] = ( + broker_details["BrokerName"] + ) + summary_data["mq"][region][broker_id["BrokerId"]]["BrokerState"] = ( + broker_details["BrokerState"] + ) + summary_data["mq"][region][broker_id["BrokerId"]]["Users"] = ( + broker_details["Users"] + ) + summary_data["mq"][region][broker_id["BrokerId"]]["EngineType"] = ( + broker_details["EngineType"] + ) + summary_data["mq"][region][broker_id["BrokerId"]]["ConsoleURL"] = [ + url["ConsoleURL"] for url in broker_details["BrokerInstances"] + ] mq_data = deepcopy(session.MQ) for key, value in summary_data.items(): From 373a43a413594bf436b3454a2349652b66de80d8 Mon Sep 17 00:00:00 2001 From: DaveYesland Date: Tue, 28 May 2024 13:31:31 -0700 Subject: [PATCH 8/9] Adjust error handeling and fix broker_id --- pacu/modules/mq__enum/main.py | 71 ++++++++++++++++++++--------------- 1 file changed, 40 insertions(+), 31 deletions(-) diff --git a/pacu/modules/mq__enum/main.py b/pacu/modules/mq__enum/main.py index 01d3c91b..16552c83 100755 --- a/pacu/modules/mq__enum/main.py +++ b/pacu/modules/mq__enum/main.py @@ -71,44 +71,53 @@ def main(args, pacu_main: "Main"): paginator = client.get_paginator("list_brokers") # Create a PageIterator from the paginator page_iterator = paginator.paginate() + # This also allows the page_iterator to throw any errors + broker_summaries = [brkr_summary for response in page_iterator for brkr_summary in response["BrokerSummaries"]] + number_of_brokers = len(broker_summaries) except Exception as error: print( - "Unable to list brokers; Check credentials or No brokers are available. Error: {}".format( + "Unable to list brokers in {}; Check credentials or No brokers are available. Error: {}".format( + region, error ) ) continue - print(" Found {} brokers".format(len(response["BrokerSummaries"]))) - broker_id = broker["BrokerId"] - for broker in response["BrokerSummaries"]: - - for response in page_iterator: - if broker_id["BrokerState"] == "CREATION_IN_PROGRESS": - continue - broker_details = client.describe_broker(BrokerId=broker_id["BrokerId"]) - - summary_data["mq"][region][broker_id["BrokerId"]] = {} - summary_data["mq"][region][broker_id["BrokerId"]][ - "AuthenticationStrategy" - ] = broker_details["AuthenticationStrategy"] - summary_data["mq"][region][broker_id["BrokerId"]][ - "PubliclyAccessible" - ] = broker_details["PubliclyAccessible"] - summary_data["mq"][region][broker_id["BrokerId"]]["BrokerName"] = ( - broker_details["BrokerName"] + + for broker in broker_summaries: + broker_id = broker["BrokerId"] + if broker["BrokerState"] == "CREATION_IN_PROGRESS": + print( + "Broker {} is still being created. Skipping.".format( + broker["BrokerName"] + ) ) - summary_data["mq"][region][broker_id["BrokerId"]]["BrokerState"] = ( - broker_details["BrokerState"] - ) - summary_data["mq"][region][broker_id["BrokerId"]]["Users"] = ( - broker_details["Users"] - ) - summary_data["mq"][region][broker_id["BrokerId"]]["EngineType"] = ( - broker_details["EngineType"] - ) - summary_data["mq"][region][broker_id["BrokerId"]]["ConsoleURL"] = [ - url["ConsoleURL"] for url in broker_details["BrokerInstances"] - ] + continue + + broker_details = client.describe_broker(BrokerId=broker_id) + + summary_data["mq"][region][broker_id] = {} + summary_data["mq"][region][broker_id][ + "AuthenticationStrategy" + ] = broker_details["AuthenticationStrategy"] + summary_data["mq"][region][broker_id][ + "PubliclyAccessible" + ] = broker_details["PubliclyAccessible"] + summary_data["mq"][region][broker_id]["BrokerName"] = ( + broker_details["BrokerName"] + ) + summary_data["mq"][region][broker_id]["BrokerState"] = ( + broker_details["BrokerState"] + ) + summary_data["mq"][region][broker_id]["Users"] = ( + broker_details["Users"] + ) + summary_data["mq"][region][broker_id]["EngineType"] = ( + broker_details["EngineType"] + ) + summary_data["mq"][region][broker_id]["ConsoleURL"] = [ + url["ConsoleURL"] for url in broker_details["BrokerInstances"] + ] + print(" Found {} brokers".format(number_of_brokers)) mq_data = deepcopy(session.MQ) for key, value in summary_data.items(): From 45f705ab75917ed2a6843a593ac3ed467e42e2b8 Mon Sep 17 00:00:00 2001 From: DaveYesland Date: Tue, 28 May 2024 13:49:04 -0700 Subject: [PATCH 9/9] Remove uneeded entries --- pacu/core/models.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/pacu/core/models.py b/pacu/core/models.py index 16cba907..c0ee1a3f 100644 --- a/pacu/core/models.py +++ b/pacu/core/models.py @@ -62,8 +62,6 @@ def get_fields_as_camel_case_dictionary(self) -> dict: 'Allow': remove_empty_from_dict(self.allow_permissions), 'Deny': remove_empty_from_dict(self.deny_permissions), }, - 'MQ':self.mq, - 'SNS': self.sns, })