:param port: controller's restconf port
- :param uri: URI without /restconf/ to complete URL
+ :param uri: URI without /rests/ to complete URL
Returns:
:returns url: full restconf url corresponding to params
"""
- url = "http://" + str(odl_ip) + ":" + port + "/restconf/" + uri
+ url = "http://" + str(odl_ip) + ":" + port + "/rests/" + uri
return url
logger.debug("...streaming chunk %s (prefix: %s)", chunk, prefix_str)
logger.debug("xml data\n%s", xml_data)
total_build_data_time_counter += time.time() - build_data_timestamp
- yield xml_data
+ yield xml_data.encode()
def send_request(
- operation, odl_ip, port, uri, auth, xml_data=None, expect_status_code=200
+ operation, odl_ip, port, uri, auth, xml_data=None, expect_status_code=None
):
"""Send a http request.
:param port: controller's restconf port
- :param uri: URI without /restconf/ to complete URL
+ :param uri: URI without /rests/ to complete URL
:param auth: authentication credentials
Returns:
:returns http response object
"""
+ if expect_status_code is None:
+ expect_status_code = [200]
+
global total_response_time_counter
global total_number_of_responses_counter
except requests.exceptions.Timeout:
logger.error("No response from %s", odl_ip)
else:
- if rsp.status_code == expect_status_code:
+ if rsp.status_code in expect_status_code:
logger.debug("%s %s", rsp.request, rsp.request.url)
logger.debug("Request headers: %s:", rsp.request.headers)
logger.debug("Response: %s", rsp.text)
:param port: controller's restconf port
- :param uri: URI without /restconf/ to complete URL
+ :param uri: URI without /rests/ to complete URL
:param auth: authentication tupple as (user, password)
:returns None
"""
- logger.info("Get all prefixes from %s:%s/restconf/%s", odl_ip, port, uri)
+ logger.info("Get all prefixes from %s:%s/rests/%s", odl_ip, port, uri)
rsp = send_request("GET", odl_ip, port, uri, auth)
if rsp is not None:
s = rsp.text
:param port: controller's restconf port
- :param uri: URI without /restconf/ to complete URL
+ :param uri: URI without /rests/ to complete URL
:param auth: authentication tupple as (user, password)
:returns None
"""
logger.info(
- "Post %s prefix(es) in a single request (starting from %s/%s) into %s:%s/restconf/%s",
+ "Post %s prefix(es) in a single request (starting from %s/%s) into %s:%s/rests/%s",
count,
prefix_base,
prefix_len,
)
xml_stream = _stream_data(xml_template, prefix_base, prefix_len, count, route_key)
send_request(
- "POST", odl_ip, port, uri, auth, xml_data=xml_stream, expect_status_code=204
+ "POST", odl_ip, port, uri, auth, xml_data=xml_stream, expect_status_code=[201]
)
:param port: controller's restconf port
- :param uri: URI without /restconf/ to complete URL
+ :param uri: URI without /rests/ to complete URL
:param auth: authentication tupple as (user, password)
Returns:
:returns None
"""
- uri_add_prefix = uri + _uri_suffix_ipv4_routes
+ uri_add_prefix = f"{uri}/{_uri_suffix_ipv4_routes}"
logger.info(
- "Put %s prefix(es) in a single request (starting from %s/%s) into %s:%s/restconf/%s",
+ "Put %s prefix(es) in a single request (starting from %s/%s) into %s:%s/rests/%s",
count,
prefix_base,
prefix_len,
uri_add_prefix,
)
xml_stream = _stream_data(xml_template, prefix_base, prefix_len, count, route_key)
- send_request("PUT", odl_ip, port, uri_add_prefix, auth, xml_data=xml_stream)
+ send_request(
+ "PUT",
+ odl_ip,
+ port,
+ uri_add_prefix,
+ auth,
+ xml_data=xml_stream,
+ expect_status_code=[201, 204],
+ )
def add_prefixes(
:param port: controller's restconf port
- :param uri: URI without /restconf/ to complete URL
+ :param uri: URI without /rests/ to complete URL
:param auth: authentication tupple as (user, password)
:returns None
"""
logger.info(
- "Add %s prefixes (starting from %s/%s) into %s:%s/restconf/%s",
+ "Add %s prefixes (starting from %s/%s) into %s:%s/rests/%s",
count,
prefix_base,
prefix_len,
port,
uri,
)
- uri_add_prefix = uri + _uri_suffix_ipv4_routes
+ uri_add_prefix = f"{uri}/{_uri_suffix_ipv4_routes}"
prefix_gap = 2 ** (32 - prefix_len)
for prefix_index in range(count):
prefix = prefix_base + prefix_index * prefix_gap
logger.info(
- "Adding prefix %s/%s to %s:%s/restconf/%s",
+ "Adding prefix %s/%s to %s:%s/rests/%s",
prefix,
prefix_len,
odl_ip,
uri_add_prefix,
auth,
xml_data=xml_stream,
- expect_status_code=204,
+ expect_status_code=[201],
)
:param port: controller's restconf port
- :param uri: URI without /restconf/ to complete URL
+ :param uri: URI without /rests/ to complete URL
:param auth: authentication tupple as (user, password)
:returns None
"""
logger.info(
- "Delete %s prefix(es) (starting from %s/%s) from %s:%s/restconf/%s",
+ "Delete %s prefix(es) (starting from %s/%s) from %s:%s/rests/%s",
count,
prefix_base,
prefix_len,
port,
uri,
)
- partkey = "/0"
- uri_del_prefix = uri + _uri_suffix_ipv4_routes + _uri_suffix_ipv4_route
+ partkey = ",0"
+ uri_del_prefix = f"{uri}/{_uri_suffix_ipv4_routes}/{_uri_suffix_ipv4_route}"
prefix_gap = 2 ** (32 - prefix_len)
for prefix_index in range(count):
prefix = prefix_base + prefix_index * prefix_gap
logger.info(
- "Deleting prefix %s/%s/%s from %s:%s/restconf/%s",
+ "Deleting prefix %s/%s/%s from %s:%s/rests/%s",
prefix,
prefix_len,
partkey,
"DELETE",
odl_ip,
port,
- uri_del_prefix + str(prefix) + "%2F" + str(prefix_len) + partkey,
+ f"{uri_del_prefix}={prefix}%2F{prefix_len}{partkey}",
auth,
+ expect_status_code=[204],
)
:param port: controller's restconf port
- :param uri: URI without /restconf/ to complete URL
+ :param uri: URI without /rests/ to complete URL
:param auth: authentication tupple as (user, password)
Returns:
:returns None
"""
- logger.info("Delete all prefixes from %s:%s/restconf/%s", odl_ip, port, uri)
- uri_del_all_prefixes = uri + _uri_suffix_ipv4_routes
- send_request("DELETE", odl_ip, port, uri_del_all_prefixes, auth)
+ logger.info("Delete all prefixes from %s:%s/rests/%s", odl_ip, port, uri)
+ uri_del_all_prefixes = f"{uri}/{_uri_suffix_ipv4_routes}"
+ send_request(
+ "DELETE", odl_ip, port, uri_del_all_prefixes, auth, expect_status_code=[204]
+ )
_commands = ["post", "put", "add", "delete", "delete-all", "get"]
-_uri_suffix_ipv4_routes = "bgp-inet:ipv4-routes/"
+_uri_suffix_ipv4_routes = "bgp-inet:ipv4-routes"
_uri_suffix_ipv4_route = (
- "bgp-inet:ipv4-route/" # followed by IP address like 1.1.1.1%2F32
+ "bgp-inet:ipv4-route" # followed by IP address like 1.1.1.1%2F32
)
if __name__ == "__main__":
parser.add_argument(
"--uri",
help="The uri part of requests",
- default="config/bgp-rib:application-rib/example-app-rib/"
- "tables/bgp-types:ipv4-address-family/"
- "bgp-types:unicast-subsequent-address-family/",
+ default="data/bgp-rib:application-rib=example-app-rib/"
+ "tables=bgp-types%3Aipv4-address-family,"
+ "bgp-types%3Aunicast-subsequent-address-family",
)
parser.add_argument(
"--xml",
prefix_base = args.prefix
prefix_len = args.prefixlen
count = args.count
- uri = args.uri
+ uri = args.uri[:-1] if len(args.uri) > 0 and args.uri[-1] == "/" else args.uri
stream = args.stream
xml_template = args.xml