X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=blobdiff_plain;f=resources%2Flibraries%2Fpython%2FHTTPRequest.py;h=0f650a89a193d6920571cf68432f153059918537;hp=5f87484fa298611135ac9ee1d2e87e9b0ef129ba;hb=cc0c2870a18fb74a56410eca2d1870bddc945397;hpb=bd680a762d945b7970f7e62b7ee47776f0301f8c diff --git a/resources/libraries/python/HTTPRequest.py b/resources/libraries/python/HTTPRequest.py index 5f87484fa2..0f650a89a1 100644 --- a/resources/libraries/python/HTTPRequest.py +++ b/resources/libraries/python/HTTPRequest.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: @@ -27,15 +27,13 @@ from robot.libraries.BuiltIn import BuiltIn from requests import request, RequestException, Timeout, TooManyRedirects, \ HTTPError, ConnectionError -from requests.packages.urllib3 import disable_warnings -from requests.packages.urllib3.exceptions import InsecureRequestWarning from requests.auth import HTTPBasicAuth @unique class HTTPCodes(IntEnum): """HTTP status codes""" - OK = 200 + OK = 200 # HTTP standard code name. # pylint: disable=invalid-name ACCEPTED = 201 UNAUTHORIZED = 401 FORBIDDEN = 403 @@ -50,10 +48,12 @@ class HTTPRequestError(Exception): When raising this exception, put this information to the message in this order: - - short description of the encountered problem, - - relevant messages if there are any collected, e.g., from caught - exception, - - relevant data if there are any collected. + + - short description of the encountered problem, + - relevant messages if there are any collected, e.g., from caught + exception, + - relevant data if there are any collected. + The logging is performed on two levels: 1. error - short description of the problem; 2. debug - detailed information. """ @@ -67,7 +67,7 @@ class HTTPRequestError(Exception): :param msg: Message to be displayed and logged. :param enable_logging: When True, logging is enabled, otherwise - logging is disabled. + logging is disabled. :type msg: str :type enable_logging: bool """ @@ -75,12 +75,9 @@ class HTTPRequestError(Exception): self._msg = "{0}: {1}".format(self.__class__.__name__, msg) self._details = details if enable_logging: - logger.error(self._msg) + logger.info(self._msg) logger.debug(self._details) - # suppress warnings about disabled SSL verification - disable_warnings(InsecureRequestWarning) - def __repr__(self): return repr(self._msg) @@ -118,7 +115,7 @@ class HTTPRequest(object): :type ip_addr: str :type port: str or int :type path: str - :return: Full url. + :returns: Full url. :rtype: str """ @@ -129,8 +126,8 @@ class HTTPRequest(object): except (AttributeError, AddressValueError): pass - return "https://{ip}:{port}{path}".format(ip=ip_addr, port=port, - path=path) + return "http://{ip}:{port}{path}".format(ip=ip_addr, port=port, + path=path) @staticmethod def _http_request(method, node, path, enable_logging=True, **kwargs): @@ -173,7 +170,7 @@ class HTTPRequest(object): :type path: str :type enable_logging: bool :type kwargs: dict - :return: Status code and content of response. + :returns: Status code and content of response. :rtype: tuple :raises HTTPRequestError: If 1. it is not possible to connect, @@ -184,9 +181,12 @@ class HTTPRequest(object): """ timeout = kwargs["timeout"] - if BuiltIn().get_variable_value("${use_odl_client}"): - # TODO: node["honeycomb"]["odl_port"] + use_odl = BuiltIn().get_variable_value("${use_odl_client}") + + if use_odl: port = 8181 + # Using default ODL Restconf port + # TODO: add node["honeycomb"]["odl_port"] to topology, use it here odl_url_part = "/network-topology:network-topology/topology/" \ "topology-netconf/node/vpp/yang-ext:mount" else: @@ -233,23 +233,23 @@ class HTTPRequest(object): @staticmethod @keyword(name="HTTP Get") - def get(node, path, headers=None, timeout=10, enable_logging=True): + def get(node, path, headers=None, timeout=15, enable_logging=True): """Sends a GET request and returns the response and status code. :param node: Honeycomb node. :param path: URL path, e.g. /index.html. :param headers: Dictionary of HTTP Headers to send with the Request. :param timeout: How long to wait for the server to send data before - giving up, as a float, or a (connect timeout, read timeout) tuple. + giving up, as a float, or a (connect timeout, read timeout) tuple. :param enable_logging: Used to suppress errors when checking Honeycomb - state during suite setup and teardown. When True, logging is enabled, - otherwise logging is disabled. + state during suite setup and teardown. When True, + logging is enabled, otherwise logging is disabled. :type node: dict :type path: str :type headers: dict :type timeout: float or tuple :type enable_logging: bool - :return: Status code and content of response. + :returns: Status code and content of response. :rtype: tuple """ @@ -259,24 +259,24 @@ class HTTPRequest(object): @staticmethod @keyword(name="HTTP Put") - def put(node, path, headers=None, payload=None, json=None, timeout=10): + def put(node, path, headers=None, payload=None, json=None, timeout=15): """Sends a PUT request and returns the response and status code. :param node: Honeycomb node. :param path: URL path, e.g. /index.html. :param headers: Dictionary of HTTP Headers to send with the Request. :param payload: Dictionary, bytes, or file-like object to send in - the body of the Request. + the body of the Request. :param json: JSON formatted string to send in the body of the Request. :param timeout: How long to wait for the server to send data before - giving up, as a float, or a (connect timeout, read timeout) tuple. + giving up, as a float, or a (connect timeout, read timeout) tuple. :type node: dict :type path: str :type headers: dict :type payload: dict, bytes, or file-like object :type json: str :type timeout: float or tuple - :return: Status code and content of response. + :returns: Status code and content of response. :rtype: tuple """ return HTTPRequest._http_request('PUT', node, path, headers=headers, @@ -285,7 +285,7 @@ class HTTPRequest(object): @staticmethod @keyword(name="HTTP Post") - def post(node, path, headers=None, payload=None, json=None, timeout=10, + def post(node, path, headers=None, payload=None, json=None, timeout=15, enable_logging=True): """Sends a POST request and returns the response and status code. @@ -293,13 +293,13 @@ class HTTPRequest(object): :param path: URL path, e.g. /index.html. :param headers: Dictionary of HTTP Headers to send with the Request. :param payload: Dictionary, bytes, or file-like object to send in - the body of the Request. + the body of the Request. :param json: JSON formatted string to send in the body of the Request. :param timeout: How long to wait for the server to send data before - giving up, as a float, or a (connect timeout, read timeout) tuple. + giving up, as a float, or a (connect timeout, read timeout) tuple. :param enable_logging: Used to suppress errors when checking ODL - state during suite setup and teardown. When True, logging is enabled, - otherwise logging is disabled. + state during suite setup and teardown. When True, + logging is enabled, otherwise logging is disabled. :type node: dict :type path: str :type headers: dict @@ -307,7 +307,7 @@ class HTTPRequest(object): :type json: str :type timeout: float or tuple :type enable_logging: bool - :return: Status code and content of response. + :returns: Status code and content of response. :rtype: tuple """ return HTTPRequest._http_request('POST', node, path, @@ -317,17 +317,17 @@ class HTTPRequest(object): @staticmethod @keyword(name="HTTP Delete") - def delete(node, path, timeout=10): + def delete(node, path, timeout=15): """Sends a DELETE request and returns the response and status code. :param node: Honeycomb node. :param path: URL path, e.g. /index.html. :param timeout: How long to wait for the server to send data before - giving up, as a float, or a (connect timeout, read timeout) tuple. + giving up, as a float, or a (connect timeout, read timeout) tuple. :type node: dict :type path: str :type timeout: float or tuple - :return: Status code and content of response. + :returns: Status code and content of response. :rtype: tuple """ return HTTPRequest._http_request('DELETE', node, path, timeout=timeout)