From 7bd1749f48055e46dc5d8b5cfd8ca025fc726fad Mon Sep 17 00:00:00 2001 From: Marcos Garcia Date: Sat, 1 Aug 2015 23:21:20 -0400 Subject: [PATCH] Bug #11830, keep working even if we use private_networking --- contrib/inventory/digital_ocean.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/contrib/inventory/digital_ocean.py b/contrib/inventory/digital_ocean.py index 4f312e7c246..1927f09fdf3 100755 --- a/contrib/inventory/digital_ocean.py +++ b/contrib/inventory/digital_ocean.py @@ -55,6 +55,7 @@ When run against a specific host, this script returns the following variables: - do_id - do_image - object - do_ip_address + - do_private_ip_address - do_kernel - object - do_locked - de_memory @@ -344,7 +345,15 @@ or environment variables (DO_API_TOKEN)''' # add all droplets by id and name for droplet in self.data['droplets']: - dest = droplet['ip_address'] + #when using private_networking, the API reports the private one in "ip_address", which is useless. We need the public one for Ansible to work + if 'private_networking' in droplet['features']: + for net in droplet['networks']['v4']: + if net['type']=='public': + dest=net['ip_address'] + else: + continue + else: + dest = droplet['ip_address'] self.inventory[droplet['id']] = [dest] self.push(self.inventory, droplet['name'], dest)