X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=usertools%2Fdpdk-telemetry-client.py;h=98d28fa89b94ff8a12e57f36806885a819f85ef7;hb=a617494eeb01ff;hp=572ff56bb17a4dca7f5bebe07726b52f185aceca;hpb=4080e46c807801435e6a86a0a6c38f3797984f4c;p=dpdk.git diff --git a/usertools/dpdk-telemetry-client.py b/usertools/dpdk-telemetry-client.py index 572ff56bb1..98d28fa89b 100755 --- a/usertools/dpdk-telemetry-client.py +++ b/usertools/dpdk-telemetry-client.py @@ -1,7 +1,10 @@ #! /usr/bin/env python -# SPDK-License-Identifier: BSD-3-Clause +# SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2018 Intel Corporation +from __future__ import print_function +from __future__ import unicode_literals + import socket import os import sys @@ -15,6 +18,15 @@ API_UNREG = "{\"action\":2,\"command\":\"clients\",\"data\":{\"client_path\":\"" GLOBAL_METRICS_REQ = "{\"action\":0,\"command\":\"global_stat_values\",\"data\":null}" DEFAULT_FP = "/var/run/dpdk/default_client" +try: + raw_input # Python 2 +except NameError: + raw_input = input # Python 3 + +if sys.version_info.major < 3: + print("WARNING: Python 2 is deprecated for use in DPDK, and will not work in future releases.", file=sys.stderr) + print("Please use Python 3 instead", file=sys.stderr) + class Socket: def __init__(self): @@ -58,22 +70,23 @@ class Client: 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:") - n_requests = int(input("\n:")) + n_requests = int(raw_input("\n:")) print("\033[F") #Removes the user input from screen, cleans it up print("\033[K") for i in range(n_requests): @@ -81,9 +94,9 @@ class Client: 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: @@ -94,7 +107,7 @@ class Client: print("[4] Unregister client") try: - self.choice = int(input("\n:")) + self.choice = int(raw_input("\n:")) print("\033[F") #Removes the user input for screen, cleans it up print("\033[K") if self.choice == 1: @@ -116,10 +129,10 @@ if __name__ == "__main__": sleep_time = 1 file_path = "" if (len(sys.argv) == 2): - file_path = sys.argv[1] + file_path = sys.argv[1] else: print("Warning - No filepath passed, using default (" + DEFAULT_FP + ").") - file_path = DEFAULT_FP + file_path = DEFAULT_FP client = Client() client.getFilepath(file_path) client.register()