[dpdk-dev] [dpdk-stable] [PATCH] usertools: add telemetry python3 compatibility

Thomas Monjalon thomas at monjalon.net
Sun Jan 19 22:48:14 CET 2020


+Cc Robin, known Python expert :)

16/01/2020 18:24, Ciara Power:
> 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.
> 
> Cc: stable at dpdk.org
> 
> Signed-off-by: Ciara Power <ciara.power at intel.com>
> ---
>  usertools/dpdk-telemetry-client.py | 17 +++++++++--------
>  1 file changed, 9 insertions(+), 8 deletions(-)
> 
> diff --git a/usertools/dpdk-telemetry-client.py b/usertools/dpdk-telemetry-client.py
> index 290345dcc..71a8a8852 100755
> --- a/usertools/dpdk-telemetry-client.py
> +++ b/usertools/dpdk-telemetry-client.py
> @@ -65,18 +65,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 +89,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:
> 







More information about the dev mailing list