X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=usertools%2Fdpdk-telemetry-client.py;h=d8e439027cfcf4331c2e51fa942ace7f1aabdb7f;hb=2ae23f564761248a17d3569e9425af1af4dd8710;hp=ce0c7a905b847a0fba5fd286079ac49f27e020ba;hpb=8a9a4eaf8390df62914f3bfd4ad957b4b7a80ce4;p=dpdk.git diff --git a/usertools/dpdk-telemetry-client.py b/usertools/dpdk-telemetry-client.py index ce0c7a905b..d8e439027c 100755 --- a/usertools/dpdk-telemetry-client.py +++ b/usertools/dpdk-telemetry-client.py @@ -1,5 +1,5 @@ -#! /usr/bin/env python -# SPDK-License-Identifier: BSD-3-Clause +#! /usr/bin/env python3 +# SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2018 Intel Corporation import socket @@ -12,6 +12,7 @@ BUFFER_SIZE = 200000 METRICS_REQ = "{\"action\":0,\"command\":\"ports_all_stat_values\",\"data\":null}" API_REG = "{\"action\":1,\"command\":\"clients\",\"data\":{\"client_path\":\"" 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" class Socket: @@ -57,18 +58,19 @@ 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:") @@ -79,12 +81,18 @@ class Client: self.requestMetrics() time.sleep(sleep_time) + def requestGlobalMetrics(self): #Requests global metrics for given client + 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 != 3: + while self.choice != 4: print("\nOptions Menu") print("[1] Send for Metrics for all ports") print("[2] Send for Metrics for all ports recursively") - print("[3] Unregister client") + print("[3] Send for global Metrics") + print("[4] Unregister client") try: self.choice = int(input("\n:")) @@ -95,6 +103,8 @@ class Client: elif self.choice == 2: self.repeatedlyRequestMetrics(sleep_time) elif self.choice == 3: + self.requestGlobalMetrics() + elif self.choice == 4: self.unregister() self.unregistered = 1 else: @@ -107,10 +117,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()