summaryrefslogtreecommitdiffstats
path: root/scripts/automation/trex_control_plane/client_utils
diff options
context:
space:
mode:
authorimarom <imarom@cisco.com>2015-09-21 16:13:27 +0300
committerimarom <imarom@cisco.com>2015-09-21 16:13:27 +0300
commit3f4249b20c0edfb6902d1e4b5ebd13244f5a17b7 (patch)
treedc21c07a537e4d980398ba1d4065701d65648523 /scripts/automation/trex_control_plane/client_utils
parent30c686d5de018612cf404520d139a9b5a021ea32 (diff)
some python console modifications
Diffstat (limited to 'scripts/automation/trex_control_plane/client_utils')
-rw-r--r--scripts/automation/trex_control_plane/client_utils/jsonrpc_client.py63
1 files changed, 50 insertions, 13 deletions
diff --git a/scripts/automation/trex_control_plane/client_utils/jsonrpc_client.py b/scripts/automation/trex_control_plane/client_utils/jsonrpc_client.py
index 96a4154b..0d46ba11 100644
--- a/scripts/automation/trex_control_plane/client_utils/jsonrpc_client.py
+++ b/scripts/automation/trex_control_plane/client_utils/jsonrpc_client.py
@@ -250,7 +250,11 @@ class TrexStatelessClient(JsonRpcClient):
self.user = user
self.port_handlers = {}
- self.system_info = None
+
+ self.supported_cmds = []
+ self.system_info = None
+ self.server_version = None
+
def whoami (self):
return self.user
@@ -260,13 +264,13 @@ class TrexStatelessClient(JsonRpcClient):
return self.invoke_rpc_method("ping", block = False)
def get_rpc_server_version (self):
- return self.invoke_rpc_method("get_version")
+ return self.server_version
def get_system_info (self):
- return self.invoke_rpc_method("get_system_info")
+ return self.system_info
def get_supported_cmds(self):
- return self.invoke_rpc_method("get_supported_cmds")
+ return self.supported_cmds
def get_port_count (self):
if not self.system_info:
@@ -274,27 +278,27 @@ class TrexStatelessClient(JsonRpcClient):
return self.system_info["port_count"]
- def connect (self):
- rc, err = super(TrexStatelessClient, self).connect()
- if not rc:
- return rc, err
+ # refresh the client for transient data
+ def refresh (self):
- # ping the server
- rc, msg = self.ping_rpc_server()
+ # get server versionrc, msg = self.get_supported_cmds()
+ rc, msg = self.invoke_rpc_method("get_version")
if not rc:
self.disconnect()
return rc, msg
+ self.server_version = msg
+
# get supported commands
- rc, msg = self.get_supported_cmds()
+ rc, msg = self.invoke_rpc_method("get_supported_cmds")
if not rc:
self.disconnect()
return rc, msg
- self.supported_rpc = [str(x) for x in msg if x]
+ self.supported_cmds = [str(x) for x in msg if x]
# get system info
- rc, msg = self.get_system_info()
+ rc, msg = self.invoke_rpc_method("get_system_info")
if not rc:
self.disconnect()
return rc, msg
@@ -303,6 +307,14 @@ class TrexStatelessClient(JsonRpcClient):
return True, ""
+ def connect (self):
+ rc, err = super(TrexStatelessClient, self).connect()
+ if not rc:
+ return rc, err
+
+ return self.refresh()
+
+
# take ownership over ports
def take_ownership (self, port_id_array, force = False):
if not self.connected:
@@ -324,6 +336,30 @@ class TrexStatelessClient(JsonRpcClient):
return True, resp_list
+ def release_ports (self, port_id_array):
+ batch = self.create_batch()
+
+ for port_id in port_id_array:
+
+ # let the server handle un-acquired errors
+ if self.port_handlers.get(port_id):
+ handler = self.port_handlers[port_id]
+ else:
+ handler = ""
+
+ batch.add("release", params = {"port_id":port_id, "handler":handler})
+
+
+ rc, resp_list = batch.invoke()
+ if not rc:
+ return rc, resp_list
+
+ for i, rc in enumerate(resp_list):
+ if rc[0]:
+ self.port_handlers.pop(port_id_array[i])
+
+ return True, resp_list
+
def get_owned_ports (self):
return self.port_handlers.keys()
@@ -353,3 +389,4 @@ class TrexStatelessClient(JsonRpcClient):
return rc, resp_list
+ \ No newline at end of file