diff --git a/plugins/inventory/digital_ocean.py b/plugins/inventory/digital_ocean.py index 9bfb184d57..1323a384ba 100755 --- a/plugins/inventory/digital_ocean.py +++ b/plugins/inventory/digital_ocean.py @@ -226,6 +226,9 @@ or environment variables (DO_API_TOKEN)''' self.build_inventory() json_data = self.inventory + if self.cache_refreshed: + self.write_to_cache() + if self.args.pretty: print json.dumps(json_data, sort_keys=True, indent=2) else: @@ -309,23 +312,30 @@ or environment variables (DO_API_TOKEN)''' '''Get JSON from DigitalOcean API''' if self.args.force_cache: return + # We always get fresh droplets + if self.is_cache_valid() and not (resource=='droplets' or resource is None): + return if self.args.refresh_cache: resource=None if resource == 'droplets' or resource is None: self.data['droplets'] = self.manager.all_active_droplets() + self.cache_refreshed = True if resource == 'regions' or resource is None: self.data['regions'] = self.manager.all_regions() + self.cache_refreshed = True if resource == 'images' or resource is None: self.data['images'] = self.manager.all_images(filter=None) + self.cache_refreshed = True if resource == 'sizes' or resource is None: self.data['sizes'] = self.manager.sizes() + self.cache_refreshed = True if resource == 'ssh_keys' or resource is None: self.data['ssh_keys'] = self.manager.all_ssh_keys() + self.cache_refreshed = True if resource == 'domains' or resource is None: self.data['domains'] = self.manager.all_domains() - - self.write_to_cache() + self.cache_refreshed = True def build_inventory(self):