From: Ciara Power <ciara.power@intel.com>
To: kevin.laatz@intel.com
Cc: dev@dpdk.org, Ciara Power <ciara.power@intel.com>,
andrius.sirvys@intel.com, robin.jarry@6wind.com,
reshma.pattan@intel.com, stable@dpdk.org
Subject: [dpdk-dev] [PATCH v2] usertools: fix telemetry python3 compatibility
Date: Tue, 21 Jan 2020 17:03:10 +0000 [thread overview]
Message-ID: <20200121170310.25382-1-ciara.power@intel.com> (raw)
In-Reply-To: <20200116172425.19246-1-ciara.power@intel.com>
The client script for use with the telemetry library did not support
Python3, as the data being sent over the socket was in string format.
Python3 requires the data be explicitly converted to bytes before being
sent. Similarily, the received bytes need to be decoded into string
format.
Fixes: 53f293c9a783 ("usertools: replace unsafe input function")
Fixes: fe35622659ed ("usertools: fix telemetry client with python 3")
Fixes: d1b94da4a4e0 ("usertools: add client script for telemetry")
Fixes: 4080e46c8078 ("telemetry: support global metrics")
Cc: andrius.sirvys@intel.com
Cc: robin.jarry@6wind.com
Cc: reshma.pattan@intel.com
Cc: stable@dpdk.org
Signed-off-by: Ciara Power <ciara.power@intel.com>
Reviewed-by: Robin Jarry <robin.jarry@6wind.com>
---
V2: added future import for unicode literals to ensure consistency of
data types for Python2 and Python3.
---
usertools/dpdk-telemetry-client.py | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/usertools/dpdk-telemetry-client.py b/usertools/dpdk-telemetry-client.py
index 290345dcc..35edb7cd2 100755
--- a/usertools/dpdk-telemetry-client.py
+++ b/usertools/dpdk-telemetry-client.py
@@ -3,6 +3,7 @@
# Copyright(c) 2018 Intel Corporation
from __future__ import print_function
+from __future__ import unicode_literals
import socket
import os
@@ -65,18 +66,19 @@ def register(self): # Connects a client to DPDK-instance
self.socket.recv_fd.settimeout(2)
self.socket.send_fd.connect("/var/run/dpdk/rte/telemetry")
JSON = (API_REG + self.file_path + "\"}}")
- self.socket.send_fd.sendall(JSON)
+ self.socket.send_fd.sendall(JSON.encode())
+
self.socket.recv_fd.listen(1)
self.socket.client_fd = self.socket.recv_fd.accept()[0]
def unregister(self): # Unregister a given client
- self.socket.client_fd.send(API_UNREG + self.file_path + "\"}}")
+ self.socket.client_fd.send((API_UNREG + self.file_path + "\"}}").encode())
self.socket.client_fd.close()
def requestMetrics(self): # Requests metrics for given client
- self.socket.client_fd.send(METRICS_REQ)
- data = self.socket.client_fd.recv(BUFFER_SIZE)
- print("\nResponse: \n", str(data))
+ self.socket.client_fd.send(METRICS_REQ.encode())
+ data = self.socket.client_fd.recv(BUFFER_SIZE).decode()
+ print("\nResponse: \n", data)
def repeatedlyRequestMetrics(self, sleep_time): # Recursively requests metrics for given client
print("\nPlease enter the number of times you'd like to continuously request Metrics:")
@@ -88,9 +90,9 @@ def repeatedlyRequestMetrics(self, sleep_time): # Recursively requests metrics f
time.sleep(sleep_time)
def requestGlobalMetrics(self): #Requests global metrics for given client
- self.socket.client_fd.send(GLOBAL_METRICS_REQ)
- data = self.socket.client_fd.recv(BUFFER_SIZE)
- print("\nResponse: \n", str(data))
+ self.socket.client_fd.send(GLOBAL_METRICS_REQ.encode())
+ data = self.socket.client_fd.recv(BUFFER_SIZE).decode()
+ print("\nResponse: \n", data)
def interactiveMenu(self, sleep_time): # Creates Interactive menu within the script
while self.choice != 4:
--
2.17.1
next prev parent reply other threads:[~2020-01-21 17:11 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-16 17:24 [dpdk-dev] [PATCH] usertools: add " Ciara Power
2020-01-19 21:48 ` [dpdk-dev] [dpdk-stable] " Thomas Monjalon
2020-01-20 8:47 ` Robin Jarry
2020-01-21 17:03 ` Ciara Power [this message]
2020-01-24 10:11 ` [dpdk-dev] [PATCH v2] usertools: fix " Laatz, Kevin
2020-02-16 21:25 ` Thomas Monjalon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200121170310.25382-1-ciara.power@intel.com \
--to=ciara.power@intel.com \
--cc=andrius.sirvys@intel.com \
--cc=dev@dpdk.org \
--cc=kevin.laatz@intel.com \
--cc=reshma.pattan@intel.com \
--cc=robin.jarry@6wind.com \
--cc=stable@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).