Commit graph

15739 commits

Author SHA1 Message Date
Feanil Patel 892e230514 Don't convert nulls to strings.
This change is similar to https://github.com/ansible/ansible/pull/10465

It extends the logic there to also support none types.  Right now if you have
a '!!null' in yaml, and that var gets passed around, it will get converted to
a string.

eg. defaults/main.yml
```
ENABLE_AWESOME_FEATURE: !!null # Yaml Null
OTHER_CONFIG:
  secret1: "so_secret"
  secret2: "even_more_secret"

CONFIG:
  hostname: "some_hostname"
  features:
    awesame_feature: "{{ ENABLE_AWESOME_FEATURE}}"
  secrets: "{{ OTHER_CONFIG }}"
```

If you output `CONFIG` to json or yaml, the feature flag would get represented in the output
as a string instead of as a null, but secrets would get represented as a dictionary.  This is
a mis-match in behaviour where some "types" are retained and others are not.  This change
should fix the issue.

I also updated the template test to test for this and made the changes to v2.

Added a changelog entry specifically for the change from empty string to null as the default.

Made the null representation configurable.

It still defaults to the python NoneType but can be overriden to be an emptystring by updating
the DEFAULT_NULL_REPRESENTATION config.
2015-08-19 18:35:07 -04:00
Brian Coca 22a69e2498 fixes to delegation code 2015-08-19 15:49:37 -04:00
Brian Coca 36cbd771a4 changed fixme to deprecated 2015-08-19 15:49:37 -04:00
Brian Coca 6febca4383 added mention of settable vars to changelog 2015-08-19 15:49:37 -04:00
Brian Coca 961bee00d5 centralized the definition of 'localhost' 2015-08-19 15:49:37 -04:00
Brian Coca 29724f359b Merge pull request #12012 from resmo/for-ansible
cloudstack: fixes and consistency change
2015-08-19 15:45:49 -04:00
Rene Moser 9d3577a74a cloudstack: fix tests unhashable type: 'dict' 2015-08-19 21:39:58 +02:00
Rene Moser 8f3c181d90 cloudstack: tests: use resource_prefix 2015-08-19 21:37:54 +02:00
Rene Moser d16429b59c cloudstack: rename returns for consistency 2015-08-19 21:25:19 +02:00
Brian Coca fd361c7f5d Merge pull request #12002 from amenonsen/9437-rebase
Make get_group run in O(n*log(n)) instead of O(n^2) by using a cache (#9437 rebase)
2015-08-19 10:22:22 -04:00
Abhijit Menon-Sen 2641f70e47 Reset self._groups_cache in refresh_inventory 2015-08-19 11:35:27 +05:30
Harald Laabs 73d6da757f Make get_group run in O(n*log(n)) instead of O(n^2) by using a cache 2015-08-19 11:35:27 +05:30
Brian Coca 1b810e3101 Merge pull request #12000 from bcoca/local_action_connect
changed local_action to alias to connection=local vs delegate_to=locahost
2015-08-19 00:34:03 -04:00
Brian Coca 69f380da3a changed mod_args test to match connection 2015-08-19 00:34:37 -04:00
Brian Coca b1e8493e7d Merge pull request #12001 from amenonsen/10034-rebase
double the speed of loading a 10k host inventory file (#10034 rebase)
2015-08-19 00:20:35 -04:00
Will West b8865314ec improve ansible start up time for very large inventory
first off, we add an oddly slow basic test of 10k item inventory

Before:
```
Ran 229 tests in 13.214s

OK

real    0m13.403s
user    0m12.106s
sys 0m1.155s
```

After:
```
Ran 230 tests in 21.328s

OK

real    0m21.516s
user    0m20.099s
sys 0m1.275s
```

since that seems like a bit long for the test to add to runtime, lets profile

`python -m cProfile -s time ./bin/ansible all -i test/units/inventory_test_data/huge_range --list-hosts`

Before:
```
         1272607 function calls (1259689 primitive calls) in 8.497 seconds

   Ordered by: internal time

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
    10000    4.393    0.000    4.396    0.000 __init__.py:395(_get_host)
    20000    2.695    0.000    2.697    0.000 __init__.py:341(__append_host_to_results)
    40369    0.113    0.000    0.113    0.000 {posix.lstat}
    50006    0.102    0.000    0.153    0.000 __init__.py:1490(combine_vars)
    40008    0.089    0.000    0.202    0.000 __init__.py:1546(_load_vars_from_path)
    20195    0.088    0.000    0.088    0.000 {posix.stat}
    10011    0.087    0.000    0.087    0.000 {posix.getcwd}
```

The top two lines are promising optimization targets

- populate Inventory's host cache more in _get_host, as we are looping
  over all the groups anyways.

- eliminate duplicate check of whether we've already included a host
  in the construction around __append_host_to_results we can infer
  presence of a host in the results list implies the presence of its
  name in the hostnames set, allowing us to only to the less expensive
  of the two checks

After:
```
         1252610 function calls (1239692 primitive calls) in 1.320 seconds

   Ordered by: internal time

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
    40369    0.105    0.000    0.105    0.000 {posix.lstat}
    50006    0.094    0.000    0.141    0.000 __init__.py:1490(combine_vars)
    40008    0.081    0.000    0.184    0.000 __init__.py:1546(_load_vars_from_path)
    10011    0.080    0.000    0.080    0.000 {posix.getcwd}
    20195    0.074    0.000    0.074    0.000 {posix.stat}
    10002    0.069    0.000    0.261    0.000 __init__.py:1517(load_vars)
```
2015-08-19 09:45:02 +05:30
Brian Coca 7a4a156d91 changed local_action to alias to connection=local vs delegate_to=localhost
fixes #11998, but still leaves issue of delegate_to: localhost not working
2015-08-18 18:31:29 -04:00
Brian Coca 86100da3a0 Merge pull request #11446 from cchurch/windows_azure_from_tower
Updates to Windows Azure inventory from Tower.
2015-08-18 15:35:51 -04:00
Brian Coca 5eeeb87d82 removed dupe typoed line 2015-08-18 12:33:07 -04:00
Brian Coca f2c6785897 Merge pull request #11989 from bcoca/osx_queue_fix
changed check to avoid OS X broken sem_getvalue()
2015-08-18 09:58:21 -04:00
Brian Coca 26ed50ecdf fixed indent 2015-08-18 09:58:25 -04:00
Brian Coca 2198f48f54 changed check to avoid OS X broken sem_getvalue()
fixes #11988
2015-08-18 03:46:20 -04:00
Brian Coca ab355218a0 fixed test to new parser options 2015-08-18 03:34:38 -04:00
Brian Coca e081a73aa1 make new inventory config take precedence over old hostfile config
fixes #11907
2015-08-18 03:29:14 -04:00
Brian Coca 17b4b1f85c added ability to limit in ansilbe pull
refactored the options a bit, new inventory_opts made sense to always group
fixes #7917
2015-08-18 03:17:58 -04:00
Brian Coca 1acb29ff9b sequence will now run once for start=end, added test to suite
fixes #11979
2015-08-18 02:33:23 -04:00
Brian Coca 7eaacaf66e added some new features, rearranged the changelog sections 2015-08-17 21:50:02 -04:00
Brian Coca ee21ebaffc Merge pull request #11975 from mutemule/become_doas
Add become support for OpenBSD doas
2015-08-17 21:36:03 -04:00
Damian Gerow 1c5611100e Add become support for OpenBSD doas 2015-08-17 21:31:18 -04:00
Alphadelta14 77b60a1a67 Support any Mapping for with_dict lookup.
This resolves 3939348286 breaking `with_dict: hostvars`.
2015-08-17 20:11:24 -04:00
Brian Coca c419cacb04 check if host task is none before continuing
fixes #11982
2015-08-17 18:56:04 -04:00
James Cammarata e7b2308b66 Performance improvements
* Speed up serialization of hostvars by simply using the internal
  dictionary used for cached lookups
* Use blocking gets/puts on queues instead of spin locking
* Merge sequential implicitly created blocks
2015-08-17 13:46:57 -04:00
Brian Coca 1d402ae390 set script as executable 2015-08-17 13:42:16 -04:00
Brian Coca 4068598c15 Merge pull request #11977 from resmo/for-ansible
cloudstack: add more common returns
2015-08-17 12:32:44 -04:00
Brian Coca 21269e5efb Merge pull request #11980 from tbielawa/devel
Fix variable name mis-match in website docs for ANSIBLE_LIBRARY.
2015-08-17 11:43:28 -04:00
Tim Bielawa 5a84e61778 Fix variable name mis-match in website docs for ANSIBLE_LIBRARY. Clean up some dangling whitespace 2015-08-17 11:38:00 -04:00
Rene Moser 2913d2b44d cloudstack: add more common returns 2015-08-17 08:21:37 +02:00
Brian Coca 6058eaa92f removed unused poller 2015-08-16 20:12:06 -04:00
Brian Coca 9b61cf5840 implemented async tasks in adhoc v2 2015-08-16 20:05:10 -04:00
Brian Coca 43bf9c86d8 fixed typo 2015-08-16 13:15:23 -04:00
Brian Coca d38bb4152d fixed test to match new exception class used 2015-08-16 10:35:09 -04:00
Brian Coca ee2e31b37a now passes the test of skipping list when dict attribute is undefined, added deprecation warning as this seems like bad behaviour 2015-08-16 10:16:02 -04:00
Brian Coca 87926cbb33 added egg to cleanup 2015-08-16 09:33:20 -04:00
Brian Coca 950622cebd made sure they all look in files/vars/template dirs also when executed in play and not only from task 2015-08-16 02:37:21 -04:00
Brian Coca 861fdfc5ba updated callbacks to properly test diff no matter if dict or list 2015-08-16 02:37:21 -04:00
Brian Coca 79ea6d3a1e copy now passes a list of diffs 2015-08-16 02:37:21 -04:00
Brian Coca c3372936aa diff can now be a list 2015-08-16 02:37:21 -04:00
Brian Coca 13c91ef9d4 actually use the read source contents for the diff 2015-08-16 02:37:21 -04:00
Brian Coca 45cebd283f added remote_src to copy, now allows copying to be done on the target server 2015-08-16 02:37:21 -04:00
Brian Coca 1b7369cc8d added diff to assemble for remote_src=false 2015-08-16 02:37:21 -04:00