CLI: modified python binding example script to take user input; enhanced DroneProxy to assume a default request type of Void if none is provided by user to make it intuitive for end users

This commit is contained in:
Srivats P. 2014-06-10 18:24:39 +05:30
parent 3b4b5a19b9
commit f75a99c834
2 changed files with 36 additions and 22 deletions

View File

@ -26,9 +26,10 @@ class DroneProxy(object):
self.port = port_number self.port = port_number
self.channel = OstinatoRpcChannel() self.channel = OstinatoRpcChannel()
self.stub = ost_pb.OstService_Stub(self.channel) self.stub = ost_pb.OstService_Stub(self.channel)
self.void = ost_pb.Void()
for method in self.stub.GetDescriptor().methods: for method in self.stub.GetDescriptor().methods:
fn = lambda request, method_name=method.name: \ fn = lambda request=self.void, method_name=method.name: \
self.callRpcMethod(method_name, request) self.callRpcMethod(method_name, request)
self.__dict__[method.name] = fn self.__dict__[method.name] = fn

View File

@ -12,14 +12,18 @@ from core import ost_pb, DroneProxy
from protocols.mac_pb2 import mac from protocols.mac_pb2 import mac
from protocols.ip4_pb2 import ip4, Ip4 from protocols.ip4_pb2 import ip4, Ip4
# initialize defaults
host_name = '127.0.0.1' host_name = '127.0.0.1'
tx_port_number = 1 tx_port_number = 0
rx_port_number = 1 rx_port_number = 0
# setup logging # setup logging
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
logging.basicConfig(level=logging.DEBUG) logging.basicConfig(level=logging.DEBUG)
s = raw_input('Drone\'s Hostname/IP [%s]: ' % (host_name))
host_name = s or host_name
drone = DroneProxy(host_name) drone = DroneProxy(host_name)
try: try:
@ -28,29 +32,38 @@ try:
% (drone.hostName(), drone.portNumber())) % (drone.hostName(), drone.portNumber()))
drone.connect() drone.connect()
# retreive port id list
log.info('retreiving port list')
port_id_list = drone.getPortIdList()
# retreive port config list
log.info('retreiving port config for all ports')
port_config_list = drone.getPortConfig(port_id_list)
# print port list and get tx/rx port id
print 'Port List'
print '---------'
for port in port_config_list.port:
print '%d.%s (%s)' % (port.port_id.id, port.name, port.description)
# use a loopback port as default tx/rx port
if ('lo' in port.name or 'loopback' in port.description.lower()):
tx_port_number = port.port_id.id
rx_port_number = port.port_id.id
p = raw_input('Tx Port Id [%d]: ' % (tx_port_number))
if p:
tx_port_number = int(p)
p = raw_input('Rx Port Id [%d]: ' % (rx_port_number))
if p:
rx_port_number = int(p)
tx_port = ost_pb.PortIdList() tx_port = ost_pb.PortIdList()
tx_port.port_id.add().id = tx_port_number; tx_port.port_id.add().id = tx_port_number;
rx_port = ost_pb.PortIdList() rx_port = ost_pb.PortIdList()
rx_port.port_id.add().id = rx_port_number; rx_port.port_id.add().id = rx_port_number;
# verify tx and rx ports exist
log.info('verifying tx_port %d' % tx_port.port_id[0].id)
port_config_list = drone.getPortConfig(tx_port)
log.info('-->' + port_config_list.__str__())
if len(port_config_list.port) <= 0:
log.error('invalid tx_port'
+ tx_port_number)
sys.exit(1)
log.info('verifying rx_port %d' % rx_port.port_id[0].id)
port_config_list = drone.getPortConfig(rx_port)
log.info('-->' + port_config_list.__str__())
if len(port_config_list.port) <= 0:
log.error('invalid rx_port'
+ rx_port_number)
sys.exit(1)
# add a stream # add a stream
stream_id = ost_pb.StreamIdList() stream_id = ost_pb.StreamIdList()
stream_id.port_id.CopyFrom(tx_port.port_id[0]) stream_id.port_id.CopyFrom(tx_port.port_id[0])
@ -113,8 +126,8 @@ try:
tx_stats = drone.getStats(tx_port) tx_stats = drone.getStats(tx_port)
rx_stats = drone.getStats(rx_port) rx_stats = drone.getStats(rx_port)
log.info('--> (tx_stats)' + tx_stats.__str__()) #log.info('--> (tx_stats)' + tx_stats.__str__())
log.info('--> (rx_stats)' + rx_stats.__str__()) #log.info('--> (rx_stats)' + rx_stats.__str__())
log.info('tx pkts = %d, rx pkts = %d' % log.info('tx pkts = %d, rx pkts = %d' %
(tx_stats.port_stats[0].tx_pkts, rx_stats.port_stats[0].rx_pkts)) (tx_stats.port_stats[0].tx_pkts, rx_stats.port_stats[0].rx_pkts))