aboutsummaryrefslogtreecommitdiffstats
path: root/resources/libraries/python/honeycomb
diff options
context:
space:
mode:
authorselias <samelias@cisco.com>2017-03-14 12:00:01 +0100
committerTibor Frank <tifrank@cisco.com>2017-03-30 09:48:34 +0000
commitbd680a762d945b7970f7e62b7ee47776f0301f8c (patch)
treeba94d97f67c1075fa5968617633a1afb39a7cac3 /resources/libraries/python/honeycomb
parentd30aa3a0c0e64682266b0fbf5c8506952e39e414 (diff)
HC Test: support testing using ipv6 management interface and https
Change-Id: Ia38388a87171ad3bec7307f9ca74eaa99adc2624 Signed-off-by: selias <samelias@cisco.com>
Diffstat (limited to 'resources/libraries/python/honeycomb')
-rw-r--r--resources/libraries/python/honeycomb/HoneycombSetup.py34
1 files changed, 19 insertions, 15 deletions
diff --git a/resources/libraries/python/honeycomb/HoneycombSetup.py b/resources/libraries/python/honeycomb/HoneycombSetup.py
index 117b3e57c4..858aa21344 100644
--- a/resources/libraries/python/honeycomb/HoneycombSetup.py
+++ b/resources/libraries/python/honeycomb/HoneycombSetup.py
@@ -13,6 +13,8 @@
"""Implementation of keywords for Honeycomb setup."""
+from ipaddress import IPv6Address, AddressValueError
+
from robot.api import logger
from resources.libraries.python.HTTPRequest import HTTPRequest, HTTPCodes, \
@@ -228,31 +230,33 @@ class HoneycombSetup(object):
return True
@staticmethod
- def configure_unsecured_access(*nodes):
- """Configure Honeycomb to allow restconf requests through insecure HTTP
- used by tests. By default this is only allowed for localhost.
+ def configure_restconf_binding_address(node):
+ """Configure Honeycomb to accept restconf requests from all IP
+ addresses. IP version is determined by node data.
- :param nodes: All nodes in test topology.
- :type nodes: dict
+ :param node: Information about a DUT node.
+ :type node: dict
:raises HoneycombError: If the configuration could not be changed.
"""
- # TODO: Modify tests to use HTTPS instead.
- find = "restconf-binding-address"
- replace = '\\"restconf-binding-address\\": \\"0.0.0.0\\",'
+ find = "restconf-https-binding-address"
+ try:
+ IPv6Address(unicode(node["host"]))
+ # if management IP of the node is in IPv6 format
+ replace = '\\"restconf-https-binding-address\\": \\"0::0\\",'
+ except (AttributeError, AddressValueError):
+ replace = '\\"restconf-https-binding-address\\": \\"0.0.0.0\\",'
argument = '"/{0}/c\\ {1}"'.format(find, replace)
path = "{0}/config/honeycomb.json".format(Const.REMOTE_HC_DIR)
command = "sed -i {0} {1}".format(argument, path)
ssh = SSH()
- for node in nodes:
- if node['type'] == NodeType.DUT:
- ssh.connect(node)
- (ret_code, _, stderr) = ssh.exec_command_sudo(command)
- if ret_code != 0:
- raise HoneycombError("Failed to modify configuration on "
- "node {0}, {1}".format(node, stderr))
+ ssh.connect(node)
+ (ret_code, _, stderr) = ssh.exec_command_sudo(command)
+ if ret_code != 0:
+ raise HoneycombError("Failed to modify configuration on "
+ "node {0}, {1}".format(node, stderr))
@staticmethod
def print_environment(nodes):