summaryrefslogtreecommitdiffstats
path: root/openstack/common/network_utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'openstack/common/network_utils.py')
-rw-r--r--openstack/common/network_utils.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/openstack/common/network_utils.py b/openstack/common/network_utils.py
index 0fbf171..dbed1ce 100644
--- a/openstack/common/network_utils.py
+++ b/openstack/common/network_utils.py
@@ -19,6 +19,8 @@
Network-related utilities and helper functions.
"""
+import urlparse
+
def parse_host_port(address, default_port=None):
"""Interpret a string as a host:port pair.
@@ -62,3 +64,18 @@ def parse_host_port(address, default_port=None):
port = default_port
return (host, None if port is None else int(port))
+
+
+def urlsplit(url, scheme='', allow_fragments=True):
+ """Parse a URL using urlparse.urlsplit(), splitting query and fragments.
+ This function papers over Python issue9374 when needed.
+
+ The parameters are the same as urlparse.urlsplit.
+ """
+ scheme, netloc, path, query, fragment = urlparse.urlsplit(
+ url, scheme, allow_fragments)
+ if allow_fragments and '#' in path:
+ path, fragment = path.split('#', 1)
+ if '?' in path:
+ path, query = path.split('?', 1)
+ return urlparse.SplitResult(scheme, netloc, path, query, fragment)