Ryan Petrello
a1fa9243bc
split machine CredentialType into two distinct (ssh and vault) kinds
2017-05-02 10:26:37 -04:00
Ryan Petrello
f6046d47c9
work around a change in ansible 2.3 to Task.get_name()
...
Properly detect setup tasks so that we can filter out sensitive
variables from the `ansible_facts` portion of the event payload.
2017-05-01 10:38:05 -04:00
Ryan Petrello
def2034883
add a new vault_credential relationship to Job/JobTemplate
...
additionally, properly assign vault credentials to Jobs and JobTemplates
as they're migrated to the new split model
see: #5807
see: #5878
2017-04-28 15:00:01 -04:00
Ryan Petrello
03460b311e
treat tower as a reserved field name for custom CredentialTypes
2017-04-28 11:26:18 -04:00
Ryan Petrello
66e004a9db
fix a few more migration-related issues for credentials
2017-04-26 09:24:33 -04:00
Ryan Petrello
c0add33212
properly migrate vault credentials to the new credentialtype model
2017-04-25 15:03:16 -04:00
Ryan Petrello
80df1523b0
refactor API v2 version detection and feature inclusion
2017-04-25 09:35:03 -04:00
Ryan Petrello
83dc4f6757
for /api/v1/ requests, filter out v2 (custom) credentials
...
see: #5877
2017-04-24 15:21:30 -04:00
Ryan Petrello
aff25c914e
blacklist special env vars from being used in CredentialType injectors
...
see: #5877
2017-04-24 15:03:50 -04:00
Ryan Petrello
a36a53fe40
implement CredentialType env, file, and extra_vars injectors
...
see: #5877
2017-04-24 15:03:33 -04:00
Ryan Petrello
97b2524156
migrate v1 credentials to the new v2 credentialtype + credential model
...
see: #5878
2017-04-24 13:00:13 -04:00
Ryan Petrello
3067435799
add additional test coverage for tasks.py credential usage
2017-04-21 15:42:27 -04:00
Ryan Petrello
7e64a6fd60
add "added_in_api_version" metadata to OPTIONS requests
2017-04-21 15:42:27 -04:00
Ryan Petrello
ba259e0ad4
Introduce a new CredentialTemplate model
...
Credentials now have a required CredentialType, which defines inputs
(i.e., username, password) and injectors (i.e., assign the username to
SOME_ENV_VARIABLE at job runtime)
This commit only implements the model changes necessary to support the
new inputs model, and includes code for the credential serializer that
allows backwards-compatible support for /api/v1/credentials/; tasks.py
still needs to be updated to actually respect CredentialType injectors.
This change *will* break the UI for credentials (because it needs to be
updated to use the new v2 endpoint).
see: #5877
see: #5876
see: #5805
2017-04-21 15:42:26 -04:00
Ryan Petrello
9f46b3c704
add tacacs_plus package as a dependency
2017-04-12 15:39:11 -04:00
Ryan Petrello
d1eb33bca0
Be more restrictive in catching LDAP exceptions.
...
django-auth-ldap can throw exceptions, like TypeError if it's
misconfigured. If we encounter an exception attempting to log into an
LDAP server, log it and move on (otherwise, an uncaught exception will
cause local login to fail, too).
see: #5933
2017-04-11 16:43:26 -04:00
Ryan Petrello
5623f16249
fix a bug in the v1/v2 API switch
2017-04-07 13:58:17 -04:00
Ryan Petrello
95ea370e5e
add API versioning for /api/v2/
2017-03-30 15:11:12 -04:00
Ryan Petrello
f9b5b9aa91
property filter no_log for item event loops
...
see: #5691
2017-03-22 11:15:33 -04:00
Ryan Petrello
a69dfced74
Merge remote-tracking branch 'origin/release_3.1.2' into devel
2017-03-21 10:39:16 -04:00
Ryan Petrello
ba0e9ab775
copy extra_vars when relaunching ad-hoc commands
...
see: #1744
2017-03-21 09:45:30 -04:00
Ryan Petrello
d0ae818685
show extra variables (if any) in the adhoc command results UI
...
see: #1744
2017-03-21 09:45:25 -04:00
Ryan Petrello
6a7743b274
fix a callback bug that causes a task_args leak between job events
...
see: #5802
2017-03-20 12:05:41 -04:00
Ryan Petrello
999a304c3b
add no_log filtering for runner_item_on_xyz events
...
see: #5691
2017-03-17 09:54:46 -04:00
Ryan Petrello
75ba0208ad
output logs to /logstash.conf in our default compose file
2017-03-16 13:20:33 -04:00
Ryan Petrello
98ad2684d3
when async log shipping fails, log an explanation
2017-03-15 17:23:44 -04:00
Ryan Petrello
b3733d233e
always use async http logging - even in celery workers
...
additionally, add a timeout to requests to avoid thread starvation
see: #5718
see: #5729
2017-03-15 13:17:01 -04:00
Ryan Petrello
ba9ce56c35
add callback plugin tests to CI
2017-03-14 14:07:56 -04:00
Ryan Petrello
66c786b971
simplify memcache patching in our callback plugin tests
2017-03-14 14:07:53 -04:00
Ryan Petrello
a5ea468bfe
add a test to ensure that job events properly strip out environment vars
...
see: #5601
2017-03-14 12:56:44 -04:00
Ryan Petrello
5bbb824865
add tests for no_log filtering
...
see: #5691
2017-03-14 12:56:44 -04:00
Ryan Petrello
1005782ee9
add tests for our custom ansible callback plugin
2017-03-14 12:56:40 -04:00
Ryan Petrello
6af9638d81
job event data marked with _ansible_no_log should be censored
...
see: #5691
2017-03-10 15:47:39 -05:00
Ryan Petrello
d4cd9d355f
add ui support for specifying extra vars for ad-hoc commands
...
see: #1744
2017-03-10 15:29:42 -05:00
Ryan Petrello
bad9670a0b
Merge remote-tracking branch 'origin/release_3.1.2' into devel
2017-03-10 10:57:03 -05:00
Ryan Petrello
f4d4c43d94
prohibit order_by= for sensitive fields
...
see: #5526
2017-03-10 08:49:59 -05:00
Ryan Petrello
9bc162cada
start a CHANGELOG
2017-03-09 16:29:40 -05:00
Ryan Petrello
8c1de7f109
add an API endpoint for testing external log aggregrator connectivity
...
see: #5164
2017-03-09 13:19:56 -05:00
Ryan Petrello
9a6913f184
don't toggle the dropdown when removing items from multiselect fields
...
see: #5466
2017-03-08 17:37:16 -05:00
Ryan Petrello
255d6afb49
fix a traceback if tower doesn't have LOG_AGGREGATOR_TOWER_UUID set
...
see: #5527
2017-03-07 16:48:51 -05:00
Ryan Petrello
ec52e18be8
allow is_system_auditor with AUTH_LDAP_USER_FLAGS_BY_GROUP
...
see: #4959
2017-03-07 16:48:51 -05:00
Ryan Petrello
ae321536cd
fix a regex that doesn't properly strip certain environment variables
...
see: #5601
2017-03-07 16:48:48 -05:00
Ryan Petrello
ed5a01c0cf
strip ansible_env from job event callback data
...
this often contains sensitive details, and the data is already filtered
and stored on the job itself
see: #5601
2017-03-07 16:48:48 -05:00
Ryan Petrello
d97ff57cda
prohibit API payloads that represent something other than a JSON object
...
The JSON serializer for our API uses ``json.loads``, which permits *any*
valid JSON (including bare integers, boolean values, etc). Lots of our
code, however, assumes that inbound JSON content will be a dict.
see: #4756
2017-02-28 13:23:03 -05:00
Ryan Petrello
45819f6b9a
requeue websocket messages that don't (yet) have an established user
...
There's a race between our `ws_connect` and `ws_receive` methods;
it's possible to fall into a scenario where we're handling a legitimate
message *before* django-channels is able to persist the `user_id` into
the channel session. This results in a scenario where a user can open
a browser tab and never receive new websocket messages. In this
scenario, we should just toss the message back into the queue and try
again later (up to a reasonable limit of retries).
2017-02-28 11:12:59 -05:00
Ryan Petrello
e8ecc4226b
use Unicode apostrophes - not single quotes - for French i18n strings
...
see: #5536
2017-02-27 12:23:07 -05:00
Ryan Petrello
30a3439aa9
pin appdirs==1.4.2
...
setuptools requires appdirs >= 1.4.0
https://github.com/pypa/setuptools/commit/ff371f18f0076bc63da05334f7e551c1cc29e10d#diff-2eeaed663bd0d25b7e608891384b7298
2017-02-27 12:06:35 -05:00
Ryan Petrello
5dfdef6e6b
retain the default interstitial value for TOWER_URL_BASE
...
to support #5470 , check for the presence of this special interstitial
value and replace it with the request hostname for settings OPTIONS
requests
2017-02-23 16:38:16 -05:00
Ryan Petrello
b7e48c437d
always refetch license config
...
see: #4931
2017-02-23 12:22:44 -05:00
Ryan Petrello
0c0f3b236f
allow idempotent save when editing an inventory script
...
see: #5094
2017-02-23 11:34:04 -05:00
Ryan Petrello
fc583ead21
allow AD_HOC_COMMANDS to be set to [] in the settings ui
...
see: #4975
2017-02-23 10:51:54 -05:00
Ryan Petrello
6b75ed3dcb
move a tall tooltip's placement on the credentials UI to avoid cutoff
...
when browser text size is increased, this tooltip gets cut off at the
top of the browser window
see: #4979
2017-02-23 09:48:52 -05:00
Ryan Petrello
94ad12ab0d
set the default in OPTIONS for TOWER_URL_BASE to the request hostname
...
see: #5470
2017-02-22 11:16:08 -05:00
Ryan Petrello
c8d943ccb1
mark ON/OFF i18n for certain toggle switches
2017-02-21 16:32:12 -05:00
Ryan Petrello
73a5a1e61e
mark i18n strings for denied API search parameters
2017-02-21 16:18:06 -05:00
Ryan Petrello
d24fb32358
blacklist certain sensitive fields and relations as search arguments
...
see: #5465
see: #5478
2017-02-21 16:18:02 -05:00
Ryan Petrello
8abf084211
disable the on/off toggle button for hosts from dynamic inventory.
...
see: #5420
2017-02-21 16:15:47 -05:00
Ryan Petrello
e36cd17c16
fix a minor bug in survey_spec password field handling
...
see: #5477
2017-02-20 16:50:07 -05:00
Ryan Petrello
46fdc123f4
more i18n string marking for host forms
...
see: #5476
2017-02-20 16:12:58 -05:00
Ryan Petrello
e13e817984
mark i18n strings for the inventory host form
...
see: #5453
2017-02-20 16:03:01 -05:00
Ryan Petrello
e4e599c891
mark i18n strings for the dashboard host list
...
see: #5453
2017-02-20 16:03:01 -05:00
Ryan Petrello
176a0aa84b
mark i18n strings for the dashboard host form
...
see: #5453
2017-02-20 16:02:55 -05:00
Ryan Petrello
d08fd82260
fix a visual bug for limited screen widths on the job view UI
...
see: #5431
2017-02-17 17:13:08 -05:00
Ryan Petrello
bda089e3f5
properly count hosts based on job event task state
...
the intention of the host summary view is that each host belongs in at
most *one* state - determined by the state of the tasks that ran on it.
this change examines each host for a job and determines its state based
on whether tasks passed, resulted in changes, were skipped, failed,
etc...
see: #5407
2017-02-17 11:36:52 -05:00
Ryan Petrello
689dd45c28
don't trim newlines from custom inventory scripts; they may be relevant
...
see: #5387
angular defaults ngTrim to `true` for <textarea>:
https://docs.angularjs.org/api/ng/directive/textarea
override this for the custom inventory script form
2017-02-15 16:26:08 -05:00
Ryan Petrello
4cbdeb0d30
don't allow private key passphrases for unencrypted private ssh keys
...
see: #5311
2017-02-15 12:27:27 -05:00
Ryan Petrello
28f3f178f0
only allow single selection for LOG_AGGREGATOR_TYPE
...
see: #5000
2017-02-14 17:06:44 -05:00
Ryan Petrello
045994a472
properly detect the backend name in failed social_auth callbacks
...
don't assume that the callback URL contains the correct social_auth
backend name; instead, store it temporarily in the session at
`/login/sso/`
see: #5324
2017-02-14 16:19:39 -05:00
Ryan Petrello
ee8c82df4a
fix a test that fails due to a race between async logging requests
2017-02-14 15:18:03 -05:00
Ryan Petrello
cae8950723
don't cache social-auth-core backends
...
social-auth-core uses a global variable to cache backend settings:
https://github.com/python-social-auth/social-core/blob/78da4eb201dd22fd2d8a4e38a1d17a73beabad24/social_core/backends/utils.py#L9
when loading backends, forcibly ignore this behavior to avoid
a thread-safety issue that causes #4788 #4045
2017-02-14 11:35:42 -05:00
Ryan Petrello
5a8a647cf0
default log aggregator username and password to an empty string
...
other configuration options seem to follow this pattern; the UI code
seems to expect that it can send across an empty string
see: #5276
2017-02-13 16:09:31 -05:00
Ryan Petrello
64a973ae02
work around a unicode handling bug in python-memcached that affects py2
...
see: https://github.com/linsomniac/python-memcached/issues/79
see: #5276
2017-02-13 16:09:31 -05:00
Ryan Petrello
2c7cb4a370
add utf-8 support to utils.common.encrypt_field/decrypt_field
2017-02-13 16:09:31 -05:00
Ryan Petrello
1ebb641c1e
work around a DRF issue that causes CharField to cast None to "None"
...
see: #5322
2017-02-13 12:43:13 -05:00
Ryan Petrello
a69815faa0
fix a typo in a log handler test
2017-02-09 15:50:28 -05:00
Ryan Petrello
cee0b29fef
clarify a logging handler docstring
2017-02-09 15:16:58 -05:00
Ryan Petrello
1b9a2e4a36
correctly set the Authorization header for non-async log handling
...
see: #5276
2017-02-09 15:14:39 -05:00
Ryan Petrello
4932310ad1
map docker container ports to allow access easier to memcache
...
this eases memcached interaction from your host, e.g.,
$ echo "get :1:LICENSE" | nc localhost 11211
2017-02-09 11:00:06 -05:00
Ryan Petrello
56433fd2ca
move log handling tests from functional -> unit
2017-02-08 16:34:06 -05:00
Ryan Petrello
669012138e
refactor utils.handlers.HTTPSHandler's usage of django settings
2017-02-08 16:34:00 -05:00
Ryan Petrello
2c447942d5
add tests for our custom log aggregator/handler
2017-02-08 14:19:32 -05:00
Ryan Petrello
34492d677d
remove unnecessary hashes included in "CUSTOM_LOGO" help text
...
see: #5239
2017-02-08 13:46:55 -05:00
Ryan Petrello
866fe7e265
only loop over project OPTIONS response if the response is valid
...
see: #5194
2017-02-07 16:15:03 -05:00
Ryan Petrello
52ff35ab3f
fix a CTinT bug in static config parsing
...
see: #5223
2017-02-07 14:42:04 -05:00
Ryan Petrello
f4d55659f0
enforce a sane default OPT_NETWORK_TIMEOUT for LDAP connections
...
see: #5208
2017-02-07 12:37:05 -05:00
Ryan Petrello
ea4682e782
catch and log LDAP auth plugin misconfigurations
...
see: #5204
2017-02-06 16:27:22 -05:00
Ryan Petrello
8615c1e999
add the max_page_size value to the OPTIONS response for list views
...
see: #4356
2017-02-06 15:18:42 -05:00
Ryan Petrello
80ac25f26b
only hide scm revision for manual projects if the key already exists
...
see: #5141
2017-02-06 12:16:23 -05:00
Ryan Petrello
5bd670291b
default certain LDAP settings to None instead of an empty string
...
Related: #5148 #4678
2017-02-02 13:06:59 -05:00
Ryan Petrello
afc0f16e58
add a field to OPTIONS that tells if the setting came from a .py file
...
additionally, update help_text with a helpful message about this
See: #4876
2017-02-02 12:47:53 -05:00
Ryan Petrello
58d19ea654
add tests for encryption/decryption in awx.main.utils.common
2017-02-01 16:24:18 -05:00
Ryan Petrello
9d98ac5e37
clean up a few complicated mocks
2017-02-01 12:56:20 -05:00
Ryan Petrello
557bc8006d
automatically encrypt/decrypt CTinT settings that are stored in memcached
...
addresses #4246
2017-02-01 12:53:10 -05:00
Ryan Petrello
f4a21a2650
don't stringify source_vars['private'] for Openstack inventory updates
...
shade's OS_CLIENT_CONFIG_FILE expects the generated YAML value to be
a boolean, not a stringified boolean
Addresses #5030
2017-01-31 14:57:12 -05:00
Ryan Petrello
51b50ce735
map docker container ports to allow usage of celery.contrib.rdb
...
http://docs.celeryproject.org/en/latest/reference/celery.contrib.rdb.html
allows you to remotely debug running celery tasks with:
from celery.contrib import rdb
rdb.set_trace()
this will bind a remote Python debugger on a random TCP port between
6899-6999, which you can telnet into for remote task debugging
2017-01-31 09:13:07 -05:00
Ryan Petrello
73cbcc2de0
add awx.conf tests to our various test run environments
2017-01-30 12:37:17 -05:00
Ryan Petrello
d6857cf65a
add some more inline comments and minor refactoring to awx.conf
2017-01-30 12:37:17 -05:00
Ryan Petrello
836ca21b7e
add unit tests for awx.conf
2017-01-30 12:37:11 -05:00
Ryan Petrello
4fcc74012d
display read-only settings in the API settings endpoint
...
References #4665
2017-01-30 10:09:15 -05:00
Ryan Petrello
f061505895
move the uwsgi master FIFO from /tmp/awxfifo to /var/lib/awx/awxfifo
...
Resolves #4900
2017-01-25 16:37:11 -05:00