Fix inventory plugin cache + add tests (#38229)

* Fix setting the cache when refresh_cache or --flush-cache are used

* Use jsonify function that handles datetime objects in jsonfile cache plugin

* Don't access self._options directly

* Add initial integration tests for aws_ec2 inventory plugin

* Add CI alias

* Fix and add a few more unit tests

* Add integration tests for constructed

* Fix typo

* Use inventory config templates

* Collect all instances that are not terminated by default

* Create separate playbook for setting up the VPC, subnet, security group, and finding an image for the host

Create a separate playbook for removing the resources

* Allow easier grouping by region and add an example

* use a unified json encode/decode that can handle unsafe and vault
This commit is contained in:
Sloane Hertel 2018-05-24 15:34:54 -04:00 committed by Ryan Brown
parent 0ad4b7b785
commit cba64f5869
19 changed files with 633 additions and 54 deletions

View file

@ -49,7 +49,7 @@ try:
except ImportError:
import json
from ansible.parsing.utils.jsonify import jsonify
from ansible.parsing.ajson import AnsibleJSONEncoder, AnsibleJSONDecoder
from ansible.plugins.cache import BaseFileCacheModule
@ -61,8 +61,8 @@ class CacheModule(BaseFileCacheModule):
def _load(self, filepath):
# Valid JSON is always UTF-8 encoded.
with codecs.open(filepath, 'r', encoding='utf-8') as f:
return json.load(f)
return json.load(f, cls=AnsibleJSONDecoder)
def _dump(self, value, filepath):
with codecs.open(filepath, 'w', encoding='utf-8') as f:
f.write(jsonify(value, format=True))
f.write(json.dumps(value, cls=AnsibleJSONEncoder, sort_keys=True, indent=4))