def return_all_cluster_node_details(self):

        results             = build_dict("FAILED", "Not Found", { "Nodes" : [] })

        try:

            if self.m_channel == None:
                results     = build_dict("FAILED", "Not Connected", { "Nodes" : [] })
            else:
                    
                try:

                    proc        = subprocess.Popen("/bin/rabbitmqadmin list nodes name type proc_total proc_used  processors  run_queue  running sockets_total  sockets_used  statistics_level uptime fd_total fd_used memory", shell=True, stdout=subprocess.PIPE)
                    std_rows    = proc.communicate()[0].split("\n")

                    use_row     = False
                    cur_row     = 0
                    results     = build_dict("SUCCESS", "Found Nodes", {
                                                        "Nodes"  : [],
                                                })


                    self.lg("Building Nodes Rows(" + str(len(std_rows)) + ")", 6)
                    for row in std_rows:

                        if use_row:

                            row_arr         = row.split("|")

                            if len(row_arr) > 1:
                                self.dlg("Node Row(" + str(row_arr) + ")", 6)
                                node_name       = str(row_arr[0]).lstrip().strip()
                                type_name       = str(row_arr[1]).lstrip().strip()
                                proc_total      = str(row_arr[2]).lstrip().strip()
                                proc_used       = str(row_arr[3]).lstrip().strip()
                                processors      = str(row_arr[4]).lstrip().strip()
                                run_queue       = str(row_arr[5]).lstrip().strip()
                                status          = str(row_arr[6]).lstrip().strip()
                                sockets_total   = str(row_arr[7]).lstrip().strip()
                                sockets_used    = str(row_arr[8]).lstrip().strip()
                                stats_level     = str(row_arr[9]).lstrip().strip()
                                uptime          = str(row_arr[10]).lstrip().strip()
                                fd_total        = str(row_arr[11]).lstrip().strip()
                                fd_used         = str(row_arr[12]).lstrip().strip()
                                memory          = str(row_arr[13]).lstrip().strip()

                                new_node        = {
                                                    "Name"          : str(node_name),
                                                    "Type"          : str(type_name),
                                                    "ProcTotal"     : str(proc_total),
                                                    "ProcUsed"      : str(proc_used),
                                                    "Processors"    : str(processors),
                                                    "RunQueue"      : str(run_queue),
                                                    "Running"       : str(status),
                                                    "SocketsTotal"  : str(sockets_total),
                                                    "SocketsUsed"   : str(sockets_used),
                                                    "StatsLevel"    : str(stats_level),
                                                    "Uptime"        : str(uptime),
                                                    "FDs"           : str(fd_total),
                                                    "FDUsed"        : str(fd_used),
                                                    "Memory"        : str(memory)
                                                }
                        
                                results["Record"]["Nodes"].append(new_node)
                        else:
                            if cur_row > 1:
                                use_row = True

                        cur_row         += 1
                    # build all the bindings

                except Exception,h:
                    self.lg("Get All Nodes Failed with Ex(" + str(h) + ")", 6)
                    results     = build_dict("SUCCESS", "No Nodes", { "Nodes" : [] })
                # end of try/ex for getting the queue

        except Exception,k:
            err_msg             = "Failed to run return_all_cluster_node_details with Ex(" + str(k) + ")"
            self.lg("ERROR: " + str(err_msg), 0)
            self.m_status       = "Failed"
            results             = build_dict("FAILED", str(err_msg), { "Nodes" : [] })
        # end of try/ex

        return results
    # end of return_all_cluster_node_details
Getting all Cluster details requires running as root to access rabbitmqadmin
dataset/ETHPy150Open GetLevvel/message-simulator/src/rabbit_message_publisher.py/RabbitMessagePublisher.return_all_cluster_node_details