Ryan Petrello
479448ff09
remove an old, unused migration file
2018-10-31 11:15:09 -04:00
Ryan Petrello
a1012b365c
pin docker-compose to a working version
2018-10-31 10:47:45 -04:00
Ryan Petrello
28512e042b
remove DeprecatedAuthTokenMiddleware
2018-10-26 10:11:53 -04:00
Ryan Petrello
c695ba2e10
fix flake8
2018-10-24 10:11:53 -04:00
Ryan Petrello
3b7336c570
drop old celery/djcelery tables we no longer need
2018-10-22 09:20:10 -04:00
Ryan Petrello
9316c9ea3e
implement simple retries for wayward inventory deletes
2018-10-19 10:10:52 -04:00
Ryan Petrello
3be9113d6b
fix a bug that breaks job cancel on single node jobs
...
1. Install awx w/ a single node.
2. Start a long-running job.
3. Forcibly kill the `awx-manage run_dispatcher` process (e.g.,
SIGKILL) and do not start it again.
4. The job remains in running - without a second cluster to discover
the job, it is never reaped.
5. This PR allows you to cancel the job from the UI+API.
2018-10-19 09:10:33 -04:00
Ryan Petrello
0d29bbfdc6
make the dispatcher more fault-tolerant to prolonged database outages
2018-10-18 20:00:07 -04:00
Ryan Petrello
53ae05094e
use the proper logger for the callback receiver
2018-10-17 10:56:29 -04:00
Ryan Petrello
79002ae563
upgrade to the latest kombu + celery
2018-10-16 16:14:58 -04:00
Ryan Petrello
6e4f3efc4b
silence the noisy error that's printed w/ awx-manage check_migrations
2018-10-16 13:48:03 -04:00
Ryan Petrello
6ff1fe8548
allow users to specify BROKER_URL with passwords that contain : and @
2018-10-16 11:56:57 -04:00
Ryan Petrello
f3e73bbed8
don't call rabbitmqctl forget_cluster_node for isolated instances
2018-10-16 09:47:53 -04:00
Ryan Petrello
00cae104b3
remove over-eager survey choices validation
...
it looks like choices can also be a list and _maybe_ comma delimited;
clearly there's a lot of history here; let's verify and test what's _really_ supported and _then_ add any necessary validation
2018-10-15 16:40:17 -04:00
Ryan Petrello
720a634702
don't attempt to recover special QUIT messages in the worker pool
...
when `--reload` is sent to the dispatcher, it sends a special QUIT
message to each worker in the pool so that it will exit gracefully at
the next opportunity
when a worker process exits unexpectedly, the dispatcher attempts to
recover its queued messages and sends them to another worker in the
pool; in this scenario, we should _never_ re-enqueue these special
QUIT messages (because the process doesn't need to quit, it's already
gone)
To reproduce this race condition:
1. Launch an adhoc that does `sleep 60`
2. Run `awx-manage run_dispatcher --reload` to enqueue a `QUIT` message
into the worker's queue
3. Find the pid of the worker running the `sleep 60` and `SIGKILL` it.
4. Observe that dispatcher attempts to requeue the `QUIT` message and
logs a confusing error.
2018-10-15 12:17:52 -04:00
Ryan Petrello
011c8ae822
fix a typo on the JT add page that breaks the custom venv field
2018-10-15 11:04:31 -04:00
Ryan Petrello
ac80bc874a
more shippable -> zuul cleanup
2018-10-12 11:50:29 -04:00
Ryan Petrello
517043e209
update to the latest stable 1.1 django-oauth-toolkit
...
see: https://github.com/jazzband/django-oauth-toolkit/pull/629
2018-10-12 10:21:57 -04:00
Ryan Petrello
1167361128
some minor README updates
2018-10-11 16:05:29 -04:00
Ryan Petrello
10c76e2337
update Azure inventory script to latest from Ansible
...
rebased version of https://github.com/ansible/awx/pull/2234
2018-10-11 11:47:55 -04:00
Ryan Petrello
ff1e8cc356
replace celery task decorators with a kombu-based publisher
...
this commit implements the bulk of `awx-manage run_dispatcher`, a new
command that binds to RabbitMQ via kombu and balances messages across
a pool of workers that are similar to celeryd workers in spirit.
Specifically, this includes:
- a new decorator, `awx.main.dispatch.task`, which can be used to
decorate functions or classes so that they can be designated as
"Tasks"
- support for fanout/broadcast tasks (at this point in time, only
`conf.Setting` memcached flushes use this functionality)
- support for job reaping
- support for success/failure hooks for job runs (i.e.,
`handle_work_success` and `handle_work_error`)
- support for auto scaling worker pool that scale processes up and down
on demand
- minimal support for RPC, such as status checks and pool recycle/reload
2018-10-11 10:53:30 -04:00
Ryan Petrello
da74f1d01f
refactor and test the callback receiver as a base for a task dispatcher
2018-10-11 10:53:26 -04:00
Ryan Petrello
f87a09c46a
build swagger docs as part of CI
2018-10-10 10:27:54 -04:00
Ryan Petrello
29b90b700e
minor docker-compose fix
2018-10-05 13:40:10 -04:00
Ryan Petrello
7752446067
fix busted notification tests
2018-10-05 10:18:27 -04:00
Ryan Petrello
16e89ed081
send test notifications after the transaction closes to avoid a race
2018-09-28 09:43:10 -04:00
Ryan Petrello
23d4122574
properly support deprecated Authorization: Token xyz
2018-09-24 14:50:33 -04:00
Ryan Petrello
43aa0fc741
consolidate celery init signals to avoid an instance registration race
2018-09-07 09:29:53 -04:00
Ryan Petrello
ec873dd28c
fix LicenseForbids 401/402 precendence for other features
2018-08-31 11:23:11 -04:00
Ryan Petrello
1f8736ce1d
workflow endpoints should return 401 on invalid credentials
...
if you have a license that doesn't allow use of workflows, invalid
credentials yielded an HTTP 402; this commit changes the precedence
see: https://github.com/ansible/tower/issues/2950
2018-08-31 10:57:27 -04:00
Ryan Petrello
34ceaf4551
fix a subtle bug in awx.main.access.OAuth2ApplicationAccess.can_read
...
see: https://github.com/ansible/tower/issues/2952
2018-08-30 14:21:03 -04:00
Ryan Petrello
24f8cb49b5
don't access the database in our custom route_for_task
...
If database connectivity is lost/interrupted in this block of celery
internals, beat is *not* smart enough to recover, and it gets stuck in
an endless fail loop. We don't _need_ to talk to the database here
anyways; just use settings.CLUSTER_HOST_ID to get what we need.
see: https://github.com/ansible/tower/issues/2957
2018-08-30 11:40:43 -04:00
Ryan Petrello
9ae41dc3ba
write custom inventory scripts to AWX_PRIVATE_DATA_DIR
...
this makes it so that custom inventory scripts can access credential
files laid down in `/tmp/awx_N_<xyz>`
see: https://github.com/ansible/tower/issues/2951
2018-08-30 08:32:27 -04:00
Ryan Petrello
6eb406ac39
make awx-manage instance_list easier to read and more useful
2018-08-29 15:00:05 -04:00
Ryan Petrello
c69e41b261
more UI i18n
...
see: https://github.com/ansible/tower/issues/1383
2018-08-28 12:47:18 -04:00
Ryan Petrello
2acc488adf
properly sanitize long event keys
...
see: https://github.com/ansible/tower/issues/1775
2018-08-27 13:40:26 -04:00
Ryan Petrello
4561fd7270
fix an auth-related typo in a docstring
2018-08-24 11:56:11 -04:00
Ryan Petrello
5561eb30f7
emulate /api/v2/authtoken/ to help customers transition to OAuth2.0
2018-08-24 11:05:41 -04:00
Ryan Petrello
d564a268fd
sprinkle in more i18n translation for the workflow editor
...
see: https://github.com/ansible/tower/issues/775
2018-08-23 14:07:15 -04:00
Ryan Petrello
a271837007
set the session cookie expiry *properly* on each request
...
see: https://github.com/ansible/tower/issues/2907
2018-08-22 15:26:03 -04:00
Ryan Petrello
4bc63cc37e
fix a bug that broke bot avatars for Slack notifications
...
when a *color* is specified for a Slack notification template, we use
the *web* not the RTM API; when you use a bot with the web API, you have
to specify the `as_user=True` argument to have the message use the bot's
name and avatar
see: https://github.com/ansible/tower/issues/2883
see: https://github.com/ansible/awx/issues/2187
2018-08-22 10:57:13 -04:00
Ryan Petrello
67d1267d98
enforce 0 <= Instance.capacity_adjustment
...
see: https://github.com/ansible/tower/issues/2839
2018-08-21 15:34:19 -04:00
Ryan Petrello
4eeb62766e
apply sensitive field filtering to /api/v2/hosts/?host_filter
...
see: https://github.com/ansible/tower/issues/2874
see: https://github.com/ansible/tower/issues/2889
2018-08-21 08:17:14 -04:00
Ryan Petrello
a36b0061fa
fix failing unit tests
2018-08-20 19:57:28 -04:00
Ryan Petrello
30fbeb43bb
fail CI if the change includes model changes that are missing migrations
2018-08-16 17:43:32 -04:00
Ryan Petrello
14043f792a
fix up remaining Django migrations
...
these don't really change anything in the schema; they just look like
Django ORM idiosyncrancies that `makemigrations` needs to be happy
see: https://github.com/ansible/tower/issues/2203
2018-08-16 13:59:06 -04:00
Ryan Petrello
4c7c8b6db3
make inventory updates considerably less verbose by default
...
see: https://github.com/ansible/tower/issues/2858
2018-08-15 16:04:15 -04:00
Ryan Petrello
87adfe5889
close DB and cache sockets _immediately_ before we fork callback workers
2018-08-15 15:10:08 -04:00
Ryan Petrello
6ba1b170d2
provide friendlier help messages if you set up custom venvs wrong
2018-08-15 14:11:48 -04:00
Ryan Petrello
5f6907ba83
show a better error when a custom venv doesn't exist on an isolated node
...
see: https://github.com/ansible/tower/issues/2852
2018-08-15 13:31:25 -04:00
Ryan Petrello
cffa324762
show custom_virtualenvs at /api/v2/config if you have Project/Org access
...
see: https://github.com/ansible/tower/issues/2843
2018-08-15 13:12:12 -04:00
Ryan Petrello
3b997cdd3a
remove extraneous OPTIONS content re: the new named URL feature
2018-08-15 10:22:42 -04:00
Ryan Petrello
79a29ebcc8
add indexes for new event types
...
not sure why this didn't happen in the original migration that was
generated - may be related to differences in behavior across Django
versions?
2018-08-14 16:57:13 -04:00
Ryan Petrello
8723508225
fix failing tests related to 2c4f7911a6
2018-08-10 12:45:35 -04:00
Ryan Petrello
18f6f68540
Merge remote-tracking branch 'tower/release_3.3.0' into devel
2018-08-10 11:54:34 -04:00
Ryan Petrello
d95f1283b5
redact sensitive URLs from stdout at /api/v2/project_updates/N/events/
...
see: https://github.com/ansible/tower/issues/2805
2018-08-09 17:31:09 -04:00
Ryan Petrello
91c92d57e3
fix a bug in isolated job launches when there are no controllers online
...
see: https://github.com/ansible/tower/issues/2782
2018-08-07 17:27:23 -04:00
Ryan Petrello
2d4fbffb91
set the correct X-Forwarded-Port header to fix SAML auth
...
see: https://github.com/ansible/tower/issues/2314
2018-08-07 10:07:06 -04:00
Ryan Petrello
87d6940158
pin django-oauth-toolkit to our fork w/ a security fix
...
see: https://github.com/jazzband/django-oauth-toolkit/issues/625
2018-08-06 14:54:46 -04:00
Ryan Petrello
ec735b7b47
check oauth_scopes in _every_ view
...
see: https://github.com/ansible/tower/issues/2759
2018-08-06 11:05:59 -04:00
Ryan Petrello
7df027f826
fix to handle nonexistent system_id
2018-08-03 16:08:40 -04:00
Ryan Petrello
a3566b4270
fix up a minor OAuth2 token serializer nit
...
see: https://github.com/ansible/tower/issues/2751
2018-08-03 14:50:37 -04:00
Ryan Petrello
27f4e487ec
simpilfy LDAP GROUP_SEARCH misconfiguration failure handling
2018-08-02 10:11:18 -04:00
Ryan Petrello
2102c1ef0a
fix a bug in multi-LDAP authentication
...
see: https://github.com/ansible/tower/issues/2738
2018-08-01 17:55:13 -04:00
Ryan Petrello
0a400ca339
sprinkle some more i18n love for the credential form
...
see: https://github.com/ansible/tower/issues/2731
2018-07-31 22:13:17 -04:00
Ryan Petrello
5610cbe735
prevent host deletion when the related inventory is pending deletion
...
see: https://github.com/ansible/tower/issues/2690
2018-07-31 15:54:46 -04:00
Ryan Petrello
0aaa3807a9
allow access to JT labels if you have read access to the JT
...
see: https://github.com/ansible/tower/issues/2180
2018-07-31 15:13:24 -04:00
Ryan Petrello
8e3b72e1e5
more network UI cleanup (whoops)
2018-07-31 14:53:11 -04:00
Ryan Petrello
184db58fa3
set workflow status to failed if we find a node w/ a missing UJT
...
see: https://github.com/ansible/tower/issues/2576
2018-07-30 16:37:24 -04:00
Ryan Petrello
b99f211c7e
add some additional validation to JT.credentials
...
see: https://github.com/ansible/tower/issues/2612
2018-07-30 14:08:27 -04:00
Ryan Petrello
aee986d53c
fail immediately if an isolated host is unreachable at launch time
...
see: https://github.com/ansible/tower/issues/2643
2018-07-30 12:40:26 -04:00
Ryan Petrello
1a1b9e9138
redact the license key from settings.LICENSE activity stream entries
...
see: https://github.com/ansible/tower/issues/2671
2018-07-30 11:43:42 -04:00
Ryan Petrello
6f5259d017
remove the network UI
2018-07-30 11:03:53 -04:00
Ryan Petrello
78eb0444ae
fix a bug that causes orphaned auth_user rows when LDAP is misconfigured
...
see: https://github.com/ansible/tower/issues/2465
2018-07-30 09:59:20 -04:00
Ryan Petrello
3cdd0a94bd
simplify dynamic queue binding
...
we recently made a change so that instances no longer bind to
instance-group specific queues, but now instead they each bind to
a direct queue for their specific hostname
(https://github.com/ansible/tower/pull/1922 )
Because of this, we shouldn't *need* to reconfigure the queue binds at
runtime anymore when group membership changes. Under our new model,
every celeryd listens on a queue named after its hostname; when the
scheduler finds a task to run, it picks an Instance in the target
Instance Group and sends the task to the queue for that Instance's
hostname.
2018-07-28 00:48:37 -04:00
Ryan Petrello
7588e65786
change openshift edge termination policy to redirect (enforce https)
...
see: https://github.com/ansible/tower/issues/2591
related: https://docs.openshift.org/latest/architecture/networking/routes.html
2018-07-27 10:34:07 -04:00
Ryan Petrello
9b1961f60d
some celery-watcher tweaks
...
* give celery more time to reply over AMQP (the default timeout is 1s)
* record datestamps in celery watcher logs for debugging purposes
2018-07-26 17:16:05 -04:00
Ryan Petrello
bb034f007a
show the manual instance tag based on the correct instance attribute
...
see: https://github.com/ansible/tower/issues/2583
2018-07-26 10:24:35 -04:00
Ryan Petrello
15aaca8f03
make InstanceGroup.policy_instance_list non-exclusive by default
...
see: https://github.com/ansible/tower/issues/2583
2018-07-25 17:26:13 -04:00
Ryan Petrello
af84b25726
prevent cross site request forgery in websockets w/ the CSRF token
...
now that we have the CSRF middleware, we have a reliable token
available to us which we can use to verify individual ws_receive
payloads; this is _simpler_ than making sure you've properly configured
trusted origins, and it's also more secure than Origin header checks
see: https://github.com/ansible/tower/issues/2661
2018-07-25 09:47:53 -04:00
Ryan Petrello
c81d2f53c5
slightly refactor origin validity checks
2018-07-24 15:16:09 -04:00
Ryan Petrello
4b3ca080d4
improve robustness of host comparision for wss:// Origin headers
...
see: https://github.com/ansible/tower/issues/2647
2018-07-24 13:30:04 -04:00
Ryan Petrello
e7279f2fe2
reject ws:// connections w/ origin mismatches
...
see: https://github.com/ansible/tower/issues/2647
2018-07-23 21:56:31 -04:00
Ryan Petrello
7adc6c6f73
properly set InventorySource.status for CLI-based inventory_import
...
see: https://github.com/ansible/tower/issues/2476
2018-07-17 14:04:50 -04:00
Ryan Petrello
f0707ad701
Makefile update.
2018-07-16 14:55:07 -04:00
Ryan Petrello
34fe54c6e0
Makefile update.
2018-07-16 14:45:44 -04:00
Ryan Petrello
55be530e27
awx metavars for job.created_by should be more robust to DoesNotExist
...
see: https://github.com/ansible/tower/issues/2509
2018-07-16 11:35:35 -04:00
Ryan Petrello
df0e28ec65
don't allow OAuth2 token creation for "external" users
...
see: https://github.com/ansible/tower/issues/2326
2018-07-12 14:33:59 -04:00
Ryan Petrello
090c585be5
remove unnecessary spaces
2018-07-11 09:50:50 -04:00
Ryan Petrello
387f7d3d67
don't allow isolated instances in IG.policy_instance_list
...
see: https://github.com/ansible/tower/issues/2394
2018-07-11 09:29:46 -04:00
Ryan Petrello
acd045379c
Revert "enforce JT/Job.timeout >= 0"
...
This reverts commit 1fb41cf8d0 .
2018-07-10 15:06:13 -04:00
Ryan Petrello
1fb41cf8d0
enforce JT/Job.timeout >= 0
...
see: https://github.com/ansible/tower/issues/2421
2018-07-10 08:25:36 -04:00
Ryan Petrello
1d09c6b25a
make the API browser direct you to the proper location post-login
2018-07-09 13:58:38 -04:00
Ryan Petrello
6bd9792518
default HTTP-based log emits to HTTPS
...
see: https://github.com/ansible/awx/issues/2048
2018-07-09 11:52:04 -04:00
Ryan Petrello
2916edd70f
Add a Location header to HTTP 201 for POST to copy endpoints
2018-07-09 08:47:01 -04:00
Ryan Petrello
9a2c359274
add instructions for running the UI webpack server on an external host
2018-07-06 14:52:34 -04:00
Ryan Petrello
ef211a4dc8
add a missing Location header on HTTP 201 in a few places
2018-07-06 11:34:48 -04:00
Ryan Petrello
172defa0d4
don't use codecs.open for syncing isolated stdout data
...
see: https://github.com/ansible/tower/issues/2315
2018-07-06 08:25:51 -04:00
Ryan Petrello
d1f5485b96
properly check read permissions in GET /api/v2/wfjt/N/copy/
...
see: https://github.com/ansible/tower/issues/2323
2018-07-03 15:15:00 -04:00
Ryan Petrello
b8dbf62abc
delete some old, dead code
2018-07-03 10:30:22 -04:00