Merge "Cleanup leaked floating ips periodically"
This commit is contained in:
commit
6b2636a0b5
|
@ -440,6 +440,11 @@ provider, the Nodepool image types are also defined (see
|
||||||
``rate``
|
``rate``
|
||||||
In seconds. Default 1.0.
|
In seconds. Default 1.0.
|
||||||
|
|
||||||
|
``clean-floating-ips``
|
||||||
|
If it is set to True, nodepool will assume it is the only user of the
|
||||||
|
OpenStack project and will attempt to clean unattached floating ips that
|
||||||
|
may have leaked around restarts.
|
||||||
|
|
||||||
.. _images:
|
.. _images:
|
||||||
|
|
||||||
images
|
images
|
||||||
|
|
|
@ -47,6 +47,7 @@ class Provider(ConfigValue):
|
||||||
other.launch_timeout != self.launch_timeout or
|
other.launch_timeout != self.launch_timeout or
|
||||||
other.networks != self.networks or
|
other.networks != self.networks or
|
||||||
other.ipv6_preferred != self.ipv6_preferred or
|
other.ipv6_preferred != self.ipv6_preferred or
|
||||||
|
other.clean_floating_ips != self.clean_floating_ips or
|
||||||
other.azs != self.azs):
|
other.azs != self.azs):
|
||||||
return False
|
return False
|
||||||
new_images = other.images
|
new_images = other.images
|
||||||
|
@ -184,6 +185,7 @@ def loadConfig(config_path):
|
||||||
n.id = None
|
n.id = None
|
||||||
n.public = network.get('public', False)
|
n.public = network.get('public', False)
|
||||||
p.ipv6_preferred = provider.get('ipv6-preferred')
|
p.ipv6_preferred = provider.get('ipv6-preferred')
|
||||||
|
p.clean_floating_ips = provider.get('clean_floating_ips')
|
||||||
p.azs = provider.get('availability-zones')
|
p.azs = provider.get('availability-zones')
|
||||||
p.template_hostname = provider.get(
|
p.template_hostname = provider.get(
|
||||||
'template-hostname',
|
'template-hostname',
|
||||||
|
|
|
@ -2083,6 +2083,8 @@ class NodePool(threading.Thread):
|
||||||
server['name'], server['id'],
|
server['name'], server['id'],
|
||||||
provider.name))
|
provider.name))
|
||||||
continue
|
continue
|
||||||
|
if provider.clean_floating_ips:
|
||||||
|
manager.cleanupLeakedFloaters()
|
||||||
|
|
||||||
def cleanupOneNode(self, session, node):
|
def cleanupOneNode(self, session, node):
|
||||||
now = time.time()
|
now = time.time()
|
||||||
|
|
|
@ -342,6 +342,10 @@ class ProviderManager(TaskManager):
|
||||||
self.log.debug('Deleting server %s' % server_id)
|
self.log.debug('Deleting server %s' % server_id)
|
||||||
self.deleteServer(server_id)
|
self.deleteServer(server_id)
|
||||||
|
|
||||||
|
def cleanupLeakedFloaters(self):
|
||||||
|
with shade_inner_exceptions():
|
||||||
|
self._client.delete_unattached_floating_ips()
|
||||||
|
|
||||||
|
|
||||||
class FakeProviderManager(ProviderManager):
|
class FakeProviderManager(ProviderManager):
|
||||||
def __init__(self, provider):
|
def __init__(self, provider):
|
||||||
|
|
|
@ -15,6 +15,6 @@ PrettyTable>=0.6,<0.8
|
||||||
# shade has a looser requirement on six than nodepool, so install six first
|
# shade has a looser requirement on six than nodepool, so install six first
|
||||||
six>=1.7.0
|
six>=1.7.0
|
||||||
os-client-config>=1.2.0
|
os-client-config>=1.2.0
|
||||||
shade>=1.6.2
|
shade>=1.8.0
|
||||||
diskimage-builder
|
diskimage-builder
|
||||||
voluptuous
|
voluptuous
|
||||||
|
|
Loading…
Reference in New Issue