aboutsummaryrefslogtreecommitdiffstats
path: root/resources
diff options
context:
space:
mode:
Diffstat (limited to 'resources')
-rw-r--r--resources/libraries/python/HTTPRequest.py33
-rw-r--r--resources/libraries/python/constants.py3
-rw-r--r--resources/libraries/python/honeycomb/HcAPIKwInterfaces.py2
-rw-r--r--resources/libraries/python/honeycomb/HcPersistence.py40
-rw-r--r--resources/libraries/python/honeycomb/HoneycombSetup.py138
-rw-r--r--resources/libraries/robot/honeycomb/access_control_lists.robot2
-rw-r--r--resources/libraries/robot/honeycomb/honeycomb.robot36
-rw-r--r--resources/templates/honeycomb/add_vpp_to_topology.xml9
-rw-r--r--resources/templates/honeycomb/config_bridge_domain.url2
-rw-r--r--resources/templates/honeycomb/config_classify_table.url2
-rw-r--r--resources/templates/honeycomb/config_lisp.url2
-rw-r--r--resources/templates/honeycomb/config_nat.url2
-rw-r--r--resources/templates/honeycomb/config_network_topology.url2
-rw-r--r--resources/templates/honeycomb/config_nsh.url2
-rw-r--r--resources/templates/honeycomb/config_plugin_acl.url2
-rw-r--r--resources/templates/honeycomb/config_topology.url1
-rw-r--r--resources/templates/honeycomb/config_topology_node.url1
-rw-r--r--resources/templates/honeycomb/config_vpp_interfaces.url2
-rw-r--r--resources/templates/honeycomb/odl_client/mount_honeycomb.xml33
-rw-r--r--resources/templates/honeycomb/odl_client/odl_netconf_connector.url1
-rw-r--r--resources/templates/honeycomb/oper_bridge_domains.url2
-rw-r--r--resources/templates/honeycomb/oper_classify_table.url2
-rw-r--r--resources/templates/honeycomb/oper_disabled_interfaces.url2
-rw-r--r--resources/templates/honeycomb/oper_lisp.url2
-rw-r--r--resources/templates/honeycomb/oper_nat.url2
-rw-r--r--resources/templates/honeycomb/oper_network_topology.url2
-rw-r--r--resources/templates/honeycomb/oper_nsh.url2
-rw-r--r--resources/templates/honeycomb/oper_vpp_interfaces.url2
-rw-r--r--resources/templates/honeycomb/oper_vpp_version.url2
-rw-r--r--resources/templates/honeycomb/poll_oper_data.url1
30 files changed, 295 insertions, 39 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")
diff --git a/resources/libraries/python/constants.py b/resources/libraries/python/constants.py
index a280b51beb..4c3a8ff451 100644
--- a/resources/libraries/python/constants.py
+++ b/resources/libraries/python/constants.py
@@ -37,3 +37,6 @@ class Constants(object):
# Honeycomb templates location
RESOURCES_TPL_HC = 'resources/templates/honeycomb'
+
+ # ODL Client Restconf listener port
+ ODL_PORT = 8181
diff --git a/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py b/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py
index 3351ebf5d3..b4746e2118 100644
--- a/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py
+++ b/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py
@@ -1544,7 +1544,7 @@ class InterfaceKeywords(object):
"""
interface = intf.replace("/", "%2F")
- path = "/interface/{0}/pbb-rewrite/".format(interface)
+ path = "/interface/{0}/pbb-rewrite".format(interface)
status_code, resp = HcUtil. \
put_honeycomb_data(node, "config_vpp_interfaces", params, path,
data_representation=DataRepresentation.JSON)
diff --git a/resources/libraries/python/honeycomb/HcPersistence.py b/resources/libraries/python/honeycomb/HcPersistence.py
index c76a276098..83d756f9d3 100644
--- a/resources/libraries/python/honeycomb/HcPersistence.py
+++ b/resources/libraries/python/honeycomb/HcPersistence.py
@@ -102,3 +102,43 @@ class HcPersistence(object):
for command in commands:
(_, stdout, _) = ssh.exec_command_sudo(command)
logger.info(stdout)
+
+
+ @staticmethod
+ def configure_persistence(node, state):
+ """Enable or disable Honeycomb configuration data persistence.
+
+ :param node: Honeycomb node.
+ :param state: Enable or Disable.
+ :type node: dict
+ :type state: str
+ :raises ValueError: If the state argument is incorrect.
+ :raises HoneycombError: If the operation fails.
+ """
+
+ state = state.lower()
+ if state == "enable":
+ state = "true"
+ elif state == "disable":
+ state = "false"
+ else:
+ raise ValueError("Unexpected value of state argument:"
+ " {0} provided. Must be enable or disable."
+ .format(state))
+
+ for setting in ("persist-config", "persist-context"):
+ # find the setting, replace entire line with 'setting: state'
+ find = '\\"{setting}\\":'.format(setting=setting)
+ replace = '\\"{setting}\\": \\"{state}\\",'.format(
+ setting=setting, state=state)
+
+ 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()
+ 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))
diff --git a/resources/libraries/python/honeycomb/HoneycombSetup.py b/resources/libraries/python/honeycomb/HoneycombSetup.py
index 239ac10191..117b3e57c4 100644
--- a/resources/libraries/python/honeycomb/HoneycombSetup.py
+++ b/resources/libraries/python/honeycomb/HoneycombSetup.py
@@ -104,6 +104,36 @@ class HoneycombSetup(object):
format(errors))
@staticmethod
+ def restart_honeycomb_and_vpp_on_duts(*nodes):
+ """Restart the Honeycomb service on specified DUT nodes.
+
+ Use the keyword "Check Honeycomb Startup State" to check when Honeycomb
+ is fully restarted.
+ :param nodes: List of nodes to restart Honeycomb on.
+ :type nodes: list
+ :raises HoneycombError: If Honeycomb failed to restart.
+ """
+ logger.console("\nRestarting Honeycomb service ...")
+
+ cmd = "sudo service honeycomb restart && sudo service vpp restart"
+ errors = []
+
+ for node in nodes:
+ if node['type'] == NodeType.DUT:
+ ssh = SSH()
+ ssh.connect(node)
+ (ret_code, _, _) = ssh.exec_command_sudo(cmd)
+ if int(ret_code) != 0:
+ errors.append(node['host'])
+ else:
+ logger.info("Restart of Honeycomb and VPP on node {0} is "
+ "in progress ...".format(node['host']))
+ if errors:
+ raise HoneycombError('Node(s) {0} failed to restart Honeycomb'
+ ' and/or VPP.'.
+ format(errors))
+
+ @staticmethod
def check_honeycomb_startup_state(*nodes):
"""Check state of Honeycomb service during startup on specified nodes.
@@ -372,3 +402,111 @@ class HoneycombSetup(object):
if ret_code != 0:
raise HoneycombError("Failed to copy JVPP libraries on "
"node {0}, {1}".format(node, stderr))
+
+ @staticmethod
+ def find_odl_client(node):
+ """Check if there is a karaf directory in home.
+
+ :param node: Honeycomb node.
+ :type node: dict
+ :returns: True if ODL client is present on node, else False.
+ :rtype: bool
+ """
+
+ ssh = SSH()
+ ssh.connect(node)
+ (ret_code, stdout, _) = ssh.exec_command_sudo(
+ "ls ~ | grep karaf")
+
+ logger.debug(stdout)
+ return not bool(ret_code)
+
+ @staticmethod
+ def start_odl_client(node):
+ """Start ODL client on the specified node.
+
+ karaf should be located in home directory, and VPP and Honeycomb should
+ already be running, otherwise the start will fail.
+ :param node: Nodes to start ODL client on.
+ :type node: dict
+ :raises HoneycombError: If Honeycomb fails to start.
+ """
+
+ logger.console("\nStarting ODL client ...")
+
+ cmd = "~/*karaf*/bin/start"
+
+ ssh = SSH()
+ ssh.connect(node)
+ (ret_code, _, _) = ssh.exec_command_sudo(cmd)
+ if int(ret_code) != 0:
+ raise HoneycombError('Node {0} failed to start ODL.'.
+ format(node['host']))
+ else:
+ logger.info("Starting the ODL client on node {0} is "
+ "in progress ...".format(node['host']))
+
+ @staticmethod
+ def check_odl_startup_state(node):
+ """Check the status of ODL client startup.
+
+ :param node: Honeycomb node.
+ :param node: dict
+ :returns: True when ODL is started.
+ :rtype: bool
+ :raises HoneycombError: When the response is not code 200: OK.
+ """
+
+ path = HcUtil.read_path_from_url_file(
+ "odl_client/odl_netconf_connector")
+ expected_status_codes = (HTTPCodes.UNAUTHORIZED,
+ HTTPCodes.FORBIDDEN,
+ HTTPCodes.NOT_FOUND,
+ HTTPCodes.SERVICE_UNAVAILABLE,
+ HTTPCodes.INTERNAL_SERVER_ERROR)
+
+ status_code, _ = HTTPRequest.get(node, path, timeout=10,
+ enable_logging=False)
+ if status_code == HTTPCodes.OK:
+ logger.info("ODL client on node {0} is up and running".
+ format(node['host']))
+ elif status_code in expected_status_codes:
+ if status_code == HTTPCodes.UNAUTHORIZED:
+ logger.info('Unauthorized. If this triggers keyword '
+ 'timeout, verify username and password.')
+ raise HoneycombError('ODL client on node {0} running but '
+ 'not yet ready.'.format(node['host']),
+ enable_logging=False)
+ else:
+ raise HoneycombError('Unexpected return code: {0}.'.
+ format(status_code))
+ return True
+
+ @staticmethod
+ def mount_honeycomb_on_odl(node):
+ """Tell ODL client to mount Honeycomb instance over netconf.
+
+ :param node: Honeycomb node.
+ :type node: dict
+ :raises HoneycombError: When the response is not code 200: OK.
+ """
+
+ path = HcUtil.read_path_from_url_file(
+ "odl_client/odl_netconf_connector")
+
+ url_file = "{0}/{1}".format(Const.RESOURCES_TPL_HC,
+ "odl_client/mount_honeycomb.xml")
+
+ with open(url_file) as template:
+ data = template.read()
+
+ status_code, _ = HTTPRequest.post(
+ node, path, headers={"Content-Type": "application/xml"},
+ payload=data, timeout=10, enable_logging=False)
+
+ if status_code == HTTPCodes.OK:
+ logger.info("ODL mount point configured successfully.")
+ elif status_code == HTTPCodes.CONFLICT:
+ logger.warn("ODL mount point was already configured.")
+ else:
+ raise HoneycombError('Mount point configuration not successful')
diff --git a/resources/libraries/robot/honeycomb/access_control_lists.robot b/resources/libraries/robot/honeycomb/access_control_lists.robot
index d45c1f8948..a62ea0f2e8 100644
--- a/resources/libraries/robot/honeycomb/access_control_lists.robot
+++ b/resources/libraries/robot/honeycomb/access_control_lists.robot
@@ -155,7 +155,7 @@
| | ... | \| ACL table from Honeycomb should not exist \| ${nodes['DUT1']} \
| | ... | \| table0 \|
| | [Arguments] | ${node} | ${table_name}
-| | Run keyword and expect error | ValueError: No JSON object could be decoded
+| | Run keyword and expect error | *
| | ... | Get classify table oper data | ${node} | ${table_name}
| ACL table from VAT should not exist
diff --git a/resources/libraries/robot/honeycomb/honeycomb.robot b/resources/libraries/robot/honeycomb/honeycomb.robot
index 7d807f8df9..919c6f5e2a 100644
--- a/resources/libraries/robot/honeycomb/honeycomb.robot
+++ b/resources/libraries/robot/honeycomb/honeycomb.robot
@@ -37,7 +37,7 @@
| | ...
| | [Arguments] | @{duts}
| | Start honeycomb on DUTs | @{duts}
-| | Wait until keyword succeeds | 4min | 15sec
+| | Wait until keyword succeeds | 4min | 20sec
| | ... | Check honeycomb startup state | @{duts}
| Stop honeycomb service on DUTs
@@ -59,7 +59,7 @@
| | ...
| | [Arguments] | @{duts}
| | Stop honeycomb on DUTs | @{duts}
-| | Wait until keyword succeeds | 30sec | 5sec
+| | Wait until keyword succeeds | 60sec | 10sec
| | ... | Check honeycomb shutdown state | @{duts}
| Clear persisted Honeycomb configuration
@@ -91,6 +91,21 @@
| | Setup DUT | ${node}
| | Setup Honeycomb service on DUTs | ${node}
+| Restart Honeycomb and VPP
+| | [Documentation] | Restarts Honeycomb service and wait until it starts up.
+| | ...
+| | ... | *Arguments:*
+| | ... | - node - information about a DUT node. Type: dictionary
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Restart Honeycomb and VPP \| ${nodes['DUT1']} \|
+| | [Arguments] | ${node}
+| | Log | Performing clean restart of Honeycomb and VPP. | console=True
+| | Restart Honeycomb and VPP on DUTs | ${node}
+| | Wait until keyword succeeds | 4min | 20sec
+| | ... | Check honeycomb startup state | ${node}
+
| Archive Honeycomb log file
| | [Documentation] | Copy honeycomb.log file from Honeycomb node\
| | ... | to test executor.
@@ -101,4 +116,19 @@
| | ...
| | ... | \| Archive Honeycomb log file \| ${nudes['DUT1']} \|
| | [Arguments] | ${node}
-| | Archive Honeycomb log | ${node} \ No newline at end of file
+| | Archive Honeycomb log | ${node}
+
+| Find ODL client on node
+| | [Arguments] | ${node}
+| | ${odl_present}= | Find ODL Client | ${node}
+| | Return from keyword | ${odl_present}
+
+| Start ODL client on node
+| | [Arguments] | ${node}
+| | Start ODL client | ${node}
+| | Wait until keyword succeeds | 4min | 20sec
+| | ... | Mount Honeycomb on ODL | ${node}
+| | Wait until keyword succeeds | 2min | 10sec
+| | ... | Check ODL startup state | ${node}
+| | Wait until keyword succeeds | 2min | 10sec
+| | ... | Check honeycomb startup state | ${node}
diff --git a/resources/templates/honeycomb/add_vpp_to_topology.xml b/resources/templates/honeycomb/add_vpp_to_topology.xml
deleted file mode 100644
index 46a84f28e8..0000000000
--- a/resources/templates/honeycomb/add_vpp_to_topology.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<node xmlns="urn:TBD:params:xml:ns:yang:network-topology">
- <node-id>{vpp_host}</node-id>
- <host xmlns="urn:opendaylight:netconf-node-topology">{vpp_ip}</host>
- <port xmlns="urn:opendaylight:netconf-node-topology">{vpp_port}</port>
- <username xmlns="urn:opendaylight:netconf-node-topology">{user}</username>
- <password xmlns="urn:opendaylight:netconf-node-topology">{passwd}</password>
- <tcp-only xmlns="urn:opendaylight:netconf-node-topology">false</tcp-only>
- <keepalive-delay xmlns="urn:opendaylight:netconf-node-topology">0</keepalive-delay>
-</node> \ No newline at end of file
diff --git a/resources/templates/honeycomb/config_bridge_domain.url b/resources/templates/honeycomb/config_bridge_domain.url
index 03d8f241cd..8e37a503b0 100644
--- a/resources/templates/honeycomb/config_bridge_domain.url
+++ b/resources/templates/honeycomb/config_bridge_domain.url
@@ -1 +1 @@
-/restconf/config/v3po:vpp/bridge-domains \ No newline at end of file
+/restconf/config{odl_url_part}/v3po:vpp/bridge-domains \ No newline at end of file
diff --git a/resources/templates/honeycomb/config_classify_table.url b/resources/templates/honeycomb/config_classify_table.url
index 986b1173ac..042055f335 100644
--- a/resources/templates/honeycomb/config_classify_table.url
+++ b/resources/templates/honeycomb/config_classify_table.url
@@ -1 +1 @@
-/restconf/config/vpp-classifier:vpp-classifier \ No newline at end of file
+/restconf/config{odl_url_part}/vpp-classifier:vpp-classifier \ No newline at end of file
diff --git a/resources/templates/honeycomb/config_lisp.url b/resources/templates/honeycomb/config_lisp.url
index 69e3d512e6..16652af8c6 100644
--- a/resources/templates/honeycomb/config_lisp.url
+++ b/resources/templates/honeycomb/config_lisp.url
@@ -1 +1 @@
-/restconf/config/lisp:lisp \ No newline at end of file
+/restconf/config{odl_url_part}/lisp:lisp \ No newline at end of file
diff --git a/resources/templates/honeycomb/config_nat.url b/resources/templates/honeycomb/config_nat.url
index e323aedea9..5471493c2d 100644
--- a/resources/templates/honeycomb/config_nat.url
+++ b/resources/templates/honeycomb/config_nat.url
@@ -1 +1 @@
-/restconf/config/ietf-nat:nat-config \ No newline at end of file
+/restconf/config{odl_url_part}/ietf-nat:nat-config \ No newline at end of file
diff --git a/resources/templates/honeycomb/config_network_topology.url b/resources/templates/honeycomb/config_network_topology.url
index fe1b9310c2..4232361f54 100644
--- a/resources/templates/honeycomb/config_network_topology.url
+++ b/resources/templates/honeycomb/config_network_topology.url
@@ -1 +1 @@
-/restconf/config/network-topology:network-topology \ No newline at end of file
+/restconf/config{odl_url_part}/network-topology:network-topology \ No newline at end of file
diff --git a/resources/templates/honeycomb/config_nsh.url b/resources/templates/honeycomb/config_nsh.url
index ad14e953e8..647c46120b 100644
--- a/resources/templates/honeycomb/config_nsh.url
+++ b/resources/templates/honeycomb/config_nsh.url
@@ -1 +1 @@
-/restconf/config/vpp-nsh:vpp-nsh \ No newline at end of file
+/restconf/config{odl_url_part}/vpp-nsh:vpp-nsh \ No newline at end of file
diff --git a/resources/templates/honeycomb/config_plugin_acl.url b/resources/templates/honeycomb/config_plugin_acl.url
index 79a9670f44..19a49f2b04 100644
--- a/resources/templates/honeycomb/config_plugin_acl.url
+++ b/resources/templates/honeycomb/config_plugin_acl.url
@@ -1 +1 @@
-/restconf/config/ietf-access-control-list:access-lists \ No newline at end of file
+/restconf/config{odl_url_part}/ietf-access-control-list:access-lists \ No newline at end of file
diff --git a/resources/templates/honeycomb/config_topology.url b/resources/templates/honeycomb/config_topology.url
deleted file mode 100644
index e76f47ce8c..0000000000
--- a/resources/templates/honeycomb/config_topology.url
+++ /dev/null
@@ -1 +0,0 @@
-/restconf/config/network-topology:network-topology/topology/topology-netconf \ No newline at end of file
diff --git a/resources/templates/honeycomb/config_topology_node.url b/resources/templates/honeycomb/config_topology_node.url
deleted file mode 100644
index 89b7aa851e..0000000000
--- a/resources/templates/honeycomb/config_topology_node.url
+++ /dev/null
@@ -1 +0,0 @@
-/restconf/config/network-topology:network-topology/topology/topology-netconf/node \ No newline at end of file
diff --git a/resources/templates/honeycomb/config_vpp_interfaces.url b/resources/templates/honeycomb/config_vpp_interfaces.url
index 3789f5e535..03ddc4f88b 100644
--- a/resources/templates/honeycomb/config_vpp_interfaces.url
+++ b/resources/templates/honeycomb/config_vpp_interfaces.url
@@ -1 +1 @@
-/restconf/config/ietf-interfaces:interfaces \ No newline at end of file
+/restconf/config{odl_url_part}/ietf-interfaces:interfaces \ No newline at end of file
diff --git a/resources/templates/honeycomb/odl_client/mount_honeycomb.xml b/resources/templates/honeycomb/odl_client/mount_honeycomb.xml
new file mode 100644
index 0000000000..97f43e1119
--- /dev/null
+++ b/resources/templates/honeycomb/odl_client/mount_honeycomb.xml
@@ -0,0 +1,33 @@
+<module xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">
+ <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">prefix:sal-netconf-connector</type>
+ <name>vpp</name>
+ <address xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">127.0.0.1</address>
+ <port xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">2831</port>
+ <username xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">admin</username>
+ <password xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">admin</password>
+ <tcp-only xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">false</tcp-only>
+ <event-executor xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">
+ <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:netty">prefix:netty-event-executor</type>
+ <name>global-event-executor</name>
+ </event-executor>
+ <binding-registry xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">
+ <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">prefix:binding-broker-osgi-registry</type>
+ <name>binding-osgi-broker</name>
+ </binding-registry>
+ <dom-registry xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">
+ <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom">prefix:dom-broker-osgi-registry</type>
+ <name>dom-broker</name>
+ </dom-registry>
+ <client-dispatcher xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">
+ <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:config:netconf">prefix:netconf-client-dispatcher</type>
+ <name>global-netconf-dispatcher</name>
+ </client-dispatcher>
+ <processing-executor xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">
+ <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:threadpool">prefix:threadpool</type>
+ <name>global-netconf-processing-executor</name>
+ </processing-executor>
+ <keepalive-executor xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">
+ <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:threadpool">prefix:scheduled-threadpool</type>
+ <name>global-netconf-ssh-scheduled-executor</name>
+ </keepalive-executor>
+</module> \ No newline at end of file
diff --git a/resources/templates/honeycomb/odl_client/odl_netconf_connector.url b/resources/templates/honeycomb/odl_client/odl_netconf_connector.url
new file mode 100644
index 0000000000..4d7e7d0732
--- /dev/null
+++ b/resources/templates/honeycomb/odl_client/odl_netconf_connector.url
@@ -0,0 +1 @@
+/restconf/config/network-topology:network-topology/topology/topology-netconf/node/controller-config/yang-ext:mount/config:modules \ No newline at end of file
diff --git a/resources/templates/honeycomb/oper_bridge_domains.url b/resources/templates/honeycomb/oper_bridge_domains.url
index 7c8584326c..f0fedb4039 100644
--- a/resources/templates/honeycomb/oper_bridge_domains.url
+++ b/resources/templates/honeycomb/oper_bridge_domains.url
@@ -1 +1 @@
-/restconf/operational/v3po:vpp-state/bridge-domains \ No newline at end of file
+/restconf/operational{odl_url_part}/v3po:vpp-state/bridge-domains \ No newline at end of file
diff --git a/resources/templates/honeycomb/oper_classify_table.url b/resources/templates/honeycomb/oper_classify_table.url
index f9fd294a8f..a7a0c7e3fd 100644
--- a/resources/templates/honeycomb/oper_classify_table.url
+++ b/resources/templates/honeycomb/oper_classify_table.url
@@ -1 +1 @@
-/restconf/operational/vpp-classifier:vpp-classifier-state \ No newline at end of file
+/restconf/operational{odl_url_part}/vpp-classifier:vpp-classifier-state \ No newline at end of file
diff --git a/resources/templates/honeycomb/oper_disabled_interfaces.url b/resources/templates/honeycomb/oper_disabled_interfaces.url
index d885c203a2..276830d7a7 100644
--- a/resources/templates/honeycomb/oper_disabled_interfaces.url
+++ b/resources/templates/honeycomb/oper_disabled_interfaces.url
@@ -1 +1 @@
-/restconf/operational/v3po-context:disabled-interfaces \ No newline at end of file
+/restconf/operational{odl_url_part}/v3po-context:disabled-interfaces \ No newline at end of file
diff --git a/resources/templates/honeycomb/oper_lisp.url b/resources/templates/honeycomb/oper_lisp.url
index 850d3174a1..95d19c05a8 100644
--- a/resources/templates/honeycomb/oper_lisp.url
+++ b/resources/templates/honeycomb/oper_lisp.url
@@ -1 +1 @@
-/restconf/operational/lisp:lisp-state \ No newline at end of file
+/restconf/operational{odl_url_part}/lisp:lisp-state \ No newline at end of file
diff --git a/resources/templates/honeycomb/oper_nat.url b/resources/templates/honeycomb/oper_nat.url
index 1445f4064b..a0101bb6de 100644
--- a/resources/templates/honeycomb/oper_nat.url
+++ b/resources/templates/honeycomb/oper_nat.url
@@ -1 +1 @@
-/restconf/operational/ietf-nat:nat-state \ No newline at end of file
+/restconf/operational{odl_url_part}/ietf-nat:nat-state \ No newline at end of file
diff --git a/resources/templates/honeycomb/oper_network_topology.url b/resources/templates/honeycomb/oper_network_topology.url
index e165d3f259..14e74ee3c7 100644
--- a/resources/templates/honeycomb/oper_network_topology.url
+++ b/resources/templates/honeycomb/oper_network_topology.url
@@ -1 +1 @@
-/restconf/operational/network-topology:network-topology \ No newline at end of file
+/restconf/operational{odl_url_part}/network-topology:network-topology \ No newline at end of file
diff --git a/resources/templates/honeycomb/oper_nsh.url b/resources/templates/honeycomb/oper_nsh.url
index 5be706d9df..1b511b3a5a 100644
--- a/resources/templates/honeycomb/oper_nsh.url
+++ b/resources/templates/honeycomb/oper_nsh.url
@@ -1 +1 @@
-/restconf/operational/vpp-nsh:vpp-nsh-state \ No newline at end of file
+/restconf/operational{odl_url_part}/vpp-nsh:vpp-nsh-state \ No newline at end of file
diff --git a/resources/templates/honeycomb/oper_vpp_interfaces.url b/resources/templates/honeycomb/oper_vpp_interfaces.url
index de6f950c0d..cae9e41b68 100644
--- a/resources/templates/honeycomb/oper_vpp_interfaces.url
+++ b/resources/templates/honeycomb/oper_vpp_interfaces.url
@@ -1 +1 @@
-/restconf/operational/ietf-interfaces:interfaces-state \ No newline at end of file
+/restconf/operational{odl_url_part}/ietf-interfaces:interfaces-state \ No newline at end of file
diff --git a/resources/templates/honeycomb/oper_vpp_version.url b/resources/templates/honeycomb/oper_vpp_version.url
index 59759be8ea..fbb8820975 100644
--- a/resources/templates/honeycomb/oper_vpp_version.url
+++ b/resources/templates/honeycomb/oper_vpp_version.url
@@ -1 +1 @@
-/restconf/operational/v3po:vpp-state/version \ No newline at end of file
+/restconf/operational{odl_url_part}/v3po:vpp-state/version \ No newline at end of file
diff --git a/resources/templates/honeycomb/poll_oper_data.url b/resources/templates/honeycomb/poll_oper_data.url
deleted file mode 100644
index 2fe04386f3..0000000000
--- a/resources/templates/honeycomb/poll_oper_data.url
+++ /dev/null
@@ -1 +0,0 @@
-/restconf/operations/v3po:vpp-poll-oper-data \ No newline at end of file