Merge pull request #12618 from AdThrive/devel

Added an option to use the private network IP address for DigitalOcean dynamic inventory
This commit is contained in:
Brian Coca 2015-10-12 11:35:43 -04:00
commit 2c24fbbd6a
2 changed files with 10 additions and 2 deletions

View file

@ -22,3 +22,7 @@ cache_path = /tmp
# seconds, a new API call will be made, and the cache file will be updated. # seconds, a new API call will be made, and the cache file will be updated.
# #
cache_max_age = 300 cache_max_age = 300
# Use the private network IP address instead of the public when available.
#
use_private_network = False

View file

@ -167,6 +167,7 @@ class DigitalOceanInventory(object):
# Define defaults # Define defaults
self.cache_path = '.' self.cache_path = '.'
self.cache_max_age = 0 self.cache_max_age = 0
self.use_private_network = False
# Read settings, environment variables, and CLI arguments # Read settings, environment variables, and CLI arguments
self.read_settings() self.read_settings()
@ -256,6 +257,9 @@ or environment variables (DO_API_TOKEN)''')
if config.has_option('digital_ocean', 'cache_max_age'): if config.has_option('digital_ocean', 'cache_max_age'):
self.cache_max_age = config.getint('digital_ocean', 'cache_max_age') self.cache_max_age = config.getint('digital_ocean', 'cache_max_age')
# Private IP Address
if config.has_option('digital_ocean', 'use_private_network'):
self.use_private_network = config.get('digital_ocean', 'use_private_network')
def read_environment(self): def read_environment(self):
''' Reads the settings from environment variables ''' ''' Reads the settings from environment variables '''
@ -345,8 +349,8 @@ or environment variables (DO_API_TOKEN)''')
# add all droplets by id and name # add all droplets by id and name
for droplet in self.data['droplets']: for droplet in self.data['droplets']:
#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 #when using private_networking, the API reports the private one in "ip_address".
if 'private_networking' in droplet['features']: if 'private_networking' in droplet['features'] and not self.use_private_network:
for net in droplet['networks']['v4']: for net in droplet['networks']['v4']:
if net['type']=='public': if net['type']=='public':
dest=net['ip_address'] dest=net['ip_address']