| import string |
| |
| |
| def parse(url): |
| """ |
| Parse ZooKeeper URL. |
| :param url: The URL in the form of "zk://username:password@servers/path". |
| :return: Tuple (credential, servers, path). |
| credential: Credential for authentication with "digest" scheme. Optional and default to |
| None. |
| servers: Compatible with Kazoo's 'hosts' argument. |
| path: Optional and default to '/'. |
| NOTE: This method doesn't validate the values in the returned tuple. |
| """ |
| index = string.find(url, "zk://") |
| if index != 0: |
| raise ValueError("Expecting 'zk://' at the beginning of the URL") |
| |
| url = string.lstrip(url, "zk://") |
| |
| try: |
| servers, path = string.split(url, '/', 1) |
| except ValueError: |
| servers = url |
| path = '' |
| |
| path = '/' + path |
| |
| try: |
| credential, servers = string.split(servers, '@', 1) |
| except ValueError: |
| credential = None |
| |
| return credential, servers, path |