X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=blobdiff_plain;f=resources%2Flibraries%2Fpython%2Fhoneycomb%2FNetconf.py;h=303361034ea4d913d1b2ca7ff6fe716fd30e7648;hp=e3cdbe5dce624deaddf6d49e710b1c2979f82fc7;hb=ae7e4fc1d7766027cf9cc7fcd3b5a3ad29af964e;hpb=cf561a6e3d4c4fbd78ab6c9d0a9aa817bb3300fc diff --git a/resources/libraries/python/honeycomb/Netconf.py b/resources/libraries/python/honeycomb/Netconf.py index e3cdbe5dce..303361034e 100644 --- a/resources/libraries/python/honeycomb/Netconf.py +++ b/resources/libraries/python/honeycomb/Netconf.py @@ -1,4 +1,4 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. +# Copyright (c) 2018 Cisco and/or its affiliates. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at: @@ -19,7 +19,6 @@ from time import time import paramiko from robot.api import logger -from interruptingcow import timeout from resources.libraries.python.honeycomb.HoneycombUtil import HoneycombError @@ -82,7 +81,6 @@ class Netconf(object): # read OpenDaylight's hello message and capability list self.get_response( size=131072, - time_out=time_out, err="Timeout on getting hello message." ) @@ -90,17 +88,15 @@ class Netconf(object): if not self.channel.active: raise HoneycombError("Channel closed on capabilities exchange.") - def get_response(self, size=4096, time_out=10, err="Unspecified Error."): + def get_response(self, size=4096, err="Unspecified Error."): """Iteratively read data from the receive buffer and catenate together until message ends with the message delimiter, or until timeout is reached. :param size: Maximum number of bytes to read in one iteration. - :param time_out: Timeout value for getting the complete response. :param err: Error message to provide when timeout is reached. - :type size:int - :type time_out:int - :type err:str + :type size: int + :type err: str :returns: Content of response. :rtype: str :raises HoneycombError: If the read process times out. @@ -109,20 +105,19 @@ class Netconf(object): reply = '' try: - with timeout(time_out, exception=RuntimeError): - while not reply.endswith(self.delimiter) or \ - self.channel.recv_ready(): - try: - chunk = self.channel.recv(size) - if not chunk: - break - reply += chunk - if self.channel.exit_status_ready(): - logger.debug('Channel exit status ready.') - break - except socket.timeout: - raise HoneycombError("Socket timeout.", - enable_logging=False) + while not reply.endswith(self.delimiter) or \ + self.channel.recv_ready(): + try: + chunk = self.channel.recv(size) + if not chunk: + break + reply += chunk + if self.channel.exit_status_ready(): + logger.debug('Channel exit status ready.') + break + except socket.timeout: + raise HoneycombError("Socket timeout.", + enable_logging=False) except RuntimeError: raise HoneycombError(err + " Content of buffer: {0}".format(reply), @@ -133,12 +128,12 @@ class Netconf(object): def get_all_responses(self, size=4096, time_out=3): """Read responses from the receive buffer and catenate together - until a read operation times out. + until a read operation times out. :param size: Maximum number of bytes to read in one iteration. :param time_out: Timeout value for getting the complete response. - :type size:int - :type time_out:int + :type size: int + :type time_out: int :returns: Content of response. :rtype: str """ @@ -148,20 +143,26 @@ class Netconf(object): while True: try: - response += self.get_response(size, time_out, err) + response += self.get_response(size, err) except HoneycombError: break return response - def send(self, message): + def send(self, message, **params): """Sends provided message through the channel. :param message: Message to be sent to Honeycomb. + :param params: Format the message string with these parameters. :type message: str + :type params: dict """ + message = message.format(**params) + if not message.endswith(self.delimiter): message += self.delimiter + logger.debug(message) + self.channel.send(message)