aboutsummaryrefslogtreecommitdiffstats
path: root/resources/libraries/python/HTTPRequest.py
diff options
context:
space:
mode:
authorselias <samelias@cisco.com>2017-03-07 15:42:02 +0100
committerTibor Frank <tifrank@cisco.com>2017-03-21 12:00:46 +0000
commit4f4eaa1d52f3bdbe3caecdc1d6a024c369a2834a (patch)
tree44d1d559b187dbdf10eae12acc4da19affa1a5f4 /resources/libraries/python/HTTPRequest.py
parent8003aa2c3d1a0d4c1dbf3b6286d841a47b5fbb4c (diff)
CSIT-536 HC Test: support testing with ODL client
Reuses existing restconf test cases to test Honeycomb's netconf interface. When seding the requests to ODL's Honeycomb mountpoint, ODL translates these requests to netconf RPCs. Add new tag "honeycomb_odl" that excludes incompatible test cases. Change-Id: Ie293449da0129b02db85e30aa4f3266928d7d9f6 Signed-off-by: selias <samelias@cisco.com>
Diffstat (limited to 'resources/libraries/python/HTTPRequest.py')
-rw-r--r--resources/libraries/python/HTTPRequest.py33
1 files changed, 28 insertions, 5 deletions
diff --git a/resources/libraries/python/HTTPRequest.py b/resources/libraries/python/HTTPRequest.py
index 1f5df52c01..adf3d168eb 100644
--- a/resources/libraries/python/HTTPRequest.py
+++ b/resources/libraries/python/HTTPRequest.py
@@ -22,6 +22,7 @@ from enum import IntEnum, unique
from robot.api.deco import keyword
from robot.api import logger
+from robot.libraries.BuiltIn import BuiltIn
from requests import request, RequestException, Timeout, TooManyRedirects, \
HTTPError, ConnectionError
@@ -36,6 +37,7 @@ class HTTPCodes(IntEnum):
UNAUTHORIZED = 401
FORBIDDEN = 403
NOT_FOUND = 404
+ CONFLICT = 409
INTERNAL_SERVER_ERROR = 500
SERVICE_UNAVAILABLE = 503
@@ -167,8 +169,23 @@ class HTTPRequest(object):
5. there is any other unexpected HTTP request exception.
"""
timeout = kwargs["timeout"]
+
+ if BuiltIn().get_variable_value("${use_odl_client}"):
+ # TODO: node["honeycomb"]["odl_port"]
+ port = 8181
+ odl_url_part = "/network-topology:network-topology/topology/" \
+ "topology-netconf/node/vpp/yang-ext:mount"
+ else:
+ port = node["honeycomb"]["port"]
+ odl_url_part = ""
+
+ try:
+ path = path.format(odl_url_part=odl_url_part)
+ except KeyError:
+ pass
+
url = HTTPRequest.create_full_url(node['host'],
- node['honeycomb']['port'],
+ port,
path)
try:
auth = HTTPBasicAuth(node['honeycomb']['user'],
@@ -254,7 +271,8 @@ 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=10,
+ enable_logging=True):
"""Sends a POST request and returns the response and status code.
:param node: Honeycomb node.
@@ -265,18 +283,23 @@ class HTTPRequest(object):
: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.
+ :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.
: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
+ :type enable_logging: bool
:return: Status code and content of response.
:rtype: tuple
"""
- return HTTPRequest._http_request('POST', node, path, headers=headers,
- data=payload, json=json,
- timeout=timeout)
+ return HTTPRequest._http_request('POST', node, path,
+ enable_logging=enable_logging,
+ headers=headers, data=payload,
+ json=json, timeout=timeout)
@staticmethod
@keyword(name="HTTP Delete")