From 37d1091d015dd63206c9d2b9634fa9cc271d5054 Mon Sep 17 00:00:00 2001 From: Jay Doane Date: Tue, 22 May 2012 15:08:01 -0700 Subject: [PATCH] Expose force_ipv4 parameter (default True) in _wait_until_running() method. --- libcloud/compute/base.py | 20 +++++++++++++++++--- 1 files changed, 17 insertions(+), 3 deletions(-) diff --git a/libcloud/compute/base.py b/libcloud/compute/base.py index 90b56c5..d5714a7 100644 --- a/libcloud/compute/base.py +++ b/libcloud/compute/base.py @@ -618,7 +618,7 @@ class NodeDriver(BaseDriver): return node def _wait_until_running(self, node, wait_period=3, timeout=600, - ssh_interface='public_ips'): + ssh_interface='public_ips', force_ipv4=True): """ Block until node is fully booted and has an IP address assigned. @@ -638,9 +638,23 @@ class NodeDriver(BaseDriver): 'private_ips'. @type ssh_interface: C{str} + @keyword force_ipv4: Ignore ipv6 IP addresses (default is True) + @type force_ipv4: C{bool} + @return: C{(Node, ip_addresses)} tuple of Node instance and list of ip_address on success. """ + + def is_supported(address): + """Return True for supported address""" + if force_ipv4 and not len(address.split('.')) == 4: + return False + return True + + def filter_addresses(addresses): + """Return list of supported addresses""" + return [a for a in addresses if is_supported(a)] + start = time.time() end = start + timeout @@ -658,8 +672,8 @@ class NodeDriver(BaseDriver): driver=self) if (len(nodes) == 1 and nodes[0].state == NodeState.RUNNING and \ - getattr(nodes[0], ssh_interface)): - return (nodes[0], getattr(nodes[0], ssh_interface)) + filter_addresses(getattr(nodes[0], ssh_interface))): + return (nodes[0], filter_addresses(getattr(nodes[0], ssh_interface))) else: time.sleep(wait_period) continue -- 1.7.8.3