From patchwork Tue Oct 5 15:00:17 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Conor Walsh X-Patchwork-Id: 100523 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 09A12A0C4C; Tue, 5 Oct 2021 17:00:29 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C262D4139F; Tue, 5 Oct 2021 17:00:28 +0200 (CEST) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mails.dpdk.org (Postfix) with ESMTP id 181884139D for ; Tue, 5 Oct 2021 17:00:26 +0200 (CEST) X-IronPort-AV: E=McAfee;i="6200,9189,10128"; a="311971332" X-IronPort-AV: E=Sophos;i="5.85,349,1624345200"; d="scan'208";a="311971332" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Oct 2021 08:00:21 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,349,1624345200"; d="scan'208";a="544876188" Received: from silpixa00401160.ir.intel.com ([10.55.129.96]) by fmsmga004.fm.intel.com with ESMTP; 05 Oct 2021 08:00:19 -0700 From: Conor Walsh To: ciara.power@intel.com, bruce.richardson@intel.com Cc: dev@dpdk.org, Conor Walsh Date: Tue, 5 Oct 2021 15:00:17 +0000 Message-Id: <20211005150017.2779845-1-conor.walsh@intel.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH] usertools/telemetry: add listing of available file prefixes X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This patch adds the option --list (-l) to dpdk-telemetry.py which will print all of the available dpdk file-prefixes that have telemetry enabled. The prefixes will also be printed if the user passes an incorrect prefix in the --file-prefix (-f) option. Depends-on: series-19390 ("improve telemetry support with in-memory mode") Signed-off-by: Conor Walsh Acked-by: Ciara Power --- usertools/dpdk-telemetry.py | 40 +++++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/usertools/dpdk-telemetry.py b/usertools/dpdk-telemetry.py index 7f22e21828..b7a7553f52 100755 --- a/usertools/dpdk-telemetry.py +++ b/usertools/dpdk-telemetry.py @@ -72,6 +72,31 @@ def print_socket_options(prefix, paths): s.split('.')[-1])) +def get_dpdk_runtime_dir(fp): + """ Using the same logic as in DPDK's EAL, get the DPDK runtime directory + based on the file-prefix and user """ + if (os.getuid() == 0): + return os.path.join('/var/run/dpdk', fp) + return os.path.join(os.environ.get('XDG_RUNTIME_DIR', '/tmp'), 'dpdk', fp) + + +def list_fp(): + """ List all available file-prefixes to user """ + print("Valid file-prefixes:\n") + path = get_dpdk_runtime_dir('') + + sockets = glob.glob(os.path.join(path, "*", SOCKET_NAME + "*")) + prefixes = [] + if not sockets: + print("\tNo DPDK apps with telemetry enabled available") + for s in sockets: + prefixes.append(os.path.relpath(os.path.dirname(s), start=path)) + for p in sorted(set(prefixes)): + print(p) + print_socket_options(p, glob.glob(os.path.join(path, p, + SOCKET_NAME + "*"))) + + def handle_socket(args, path): """ Connect to socket and handle user input """ prompt = '' # this evaluates to false in conditions @@ -95,6 +120,8 @@ def handle_socket(args, path): if socks: print("\nOther DPDK telemetry sockets found:") print_socket_options(args.file_prefix, socks) + else: + list_fp() return json_reply = read_socket(sock, 1024, prompt) output_buf_len = json_reply["max_output_len"] @@ -130,14 +157,6 @@ def readline_complete(text, state): return matches[state] -def get_dpdk_runtime_dir(fp): - """ Using the same logic as in DPDK's EAL, get the DPDK runtime directory - based on the file-prefix and user """ - if (os.getuid() == 0): - return os.path.join('/var/run/dpdk', fp) - return os.path.join(os.environ.get('XDG_RUNTIME_DIR', '/tmp'), 'dpdk', fp) - - readline.parse_and_bind('tab: complete') readline.set_completer(readline_complete) readline.set_completer_delims(readline.get_completer_delims().replace('/', '')) @@ -145,9 +164,14 @@ def get_dpdk_runtime_dir(fp): parser = argparse.ArgumentParser() parser.add_argument('-f', '--file-prefix', default=DEFAULT_PREFIX, help='Provide file-prefix for DPDK runtime directory') +parser.add_argument('-l', '--list', action="store_true", default=False, + help='List all possible file-prefixes and exit') parser.add_argument('-p', '--pid', help='Connect to DPDK process with the given pid') args = parser.parse_args() +if args.list: + list_fp() + sys.exit(0) rd = get_dpdk_runtime_dir(args.file_prefix) sock_path = os.path.join(rd, SOCKET_NAME) if args.pid: