24844 Commits

Author SHA1 Message Date
softwarefactory-project-zuul[bot]
d5bdfa908a
Merge pull request #6354 from chrismeyersfsu/redis-cleanup3
remove BROKER_URL special password handling

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-19 20:45:38 +00:00
softwarefactory-project-zuul[bot]
0a5acb6520
Merge pull request #6166 from fosterseth/feature-cleanup_jobs-perf
Improve performance of cleanup_jobs

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-19 20:09:39 +00:00
softwarefactory-project-zuul[bot]
debc339f75
Merge pull request #6295 from beeankha/module_utils_updates
Update module_utils Functionality

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-19 19:49:33 +00:00
chris meyers
06f065766f remove BROKER_URL special password handling
* BROKER_URL now describes how to connect to redis. We use a unix socket
to connect to redis. Therefore, no longer need to support fancy uri's
that contain fancy characters in the password.
2020-03-19 15:12:45 -04:00
softwarefactory-project-zuul[bot]
3d7420959e
Merge pull request #6347 from squidboylan/fix_collection_test
Collection: Fix some tests that broke during the random name update

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-19 19:01:03 +00:00
Seth Foster
88fb30e0da
Delete jobs without loading objects first
The commit is intended to speed up the cleanup_jobs command in awx. Old
methods takes 7+ hours to delete 1 million old jobs. New method takes
around 6 minutes.

Leverages a sub-classed Collector, called AWXCollector, that does not
load in objects before deleting them. Instead querysets, which are
lazily evaluated, are used in places where Collector normally keeps a
list of objects.

Finally, a couple of tests to ensure parity between old Collector and
AWXCollector. That is, any object that is updated/removed from the
database using Collector should be have identical operations using
AWXCollector.

tower issue 1103
2020-03-19 14:14:02 -04:00
AlanCoding
558814ef3b tower_group relationships
rollback some module_utils changes
add runtime error for 404 type things
2020-03-19 13:53:08 -04:00
beeankha
ace5a0a2b3 Update module utils, part of collections conversion work 2020-03-19 13:53:08 -04:00
softwarefactory-project-zuul[bot]
8a917a5b70
Merge pull request #6343 from AlanCoding/fix_sanity
Fix sanity error

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-19 17:28:12 +00:00
Caleb Boylan
1bd74a96d6 Collection: Fix some tests that broke during the random name update 2020-03-19 09:40:48 -07:00
softwarefactory-project-zuul[bot]
74ebb0ae59
Merge pull request #6290 from ryanpetrello/notification-host-summary-race
change when we send job notifications to avoid a race condition

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-19 15:36:24 +00:00
Ryan Petrello
d40a5dec8f
change when we send job notifications to avoid a race condition
success/failure notifications for *playbooks* include summary data about
the hosts in based on the contents of the playbook_on_stats event

the current implementation suffers from a number of race conditions that
sometimes can cause that data to be missing or incomplete; this change
makes it so that for *playbooks* we build (and send) the notification in
response to the playbook_on_stats event, not the EOF event
2020-03-19 10:01:52 -04:00
softwarefactory-project-zuul[bot]
a725778b17
Merge pull request #6327 from ryanpetrello/py2-minus-minus-cli
remove python2 support from awxkit

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-19 13:58:02 +00:00
softwarefactory-project-zuul[bot]
3b520a8ee8
Merge pull request #6341 from egmar/fix-pgsql-connect-options
Jobs not running with external PostgreSQL database after PR #6034

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-19 13:55:54 +00:00
Ryan Petrello
06b3e54fb1
remove python2 support from awxkit 2020-03-19 09:02:39 -04:00
Egor Margineanu
f858eda6b1 Made OPTIONS optional 2020-03-19 13:43:06 +01:00
AlanCoding
c5297b0b86
Fix sanity error 2020-03-19 08:42:07 -04:00
Egor Margineanu
e0633c9122 Merge branch 'fix-pgsql-connect-options' of github.com:egmar/awx into fix-pgsql-connect-options 2020-03-19 13:29:39 +01:00
Egor Margineanu
3a208a0be2 Added support for PG port and options. related #6340 2020-03-19 13:29:06 +01:00
Egor Margineanu
cfdfd96793 Added support for PG port and options 2020-03-19 13:26:59 +01:00
Ryan Petrello
db7f0f9421
Merge pull request #6034 from chrismeyersfsu/pg2_no_pubsub
Replace rabbitmq with redis
2020-03-18 17:19:51 -04:00
Ryan Petrello
f1ee963bd0
fix up rebased migrations 2020-03-18 16:19:04 -04:00
Ryan Petrello
7c3cbe6e58
add a license for redis-cli 2020-03-18 16:10:20 -04:00
chris meyers
87de0cf0b3
flake8, pytest, license fixes 2020-03-18 16:10:20 -04:00
chris meyers
18f5dd6e04
add websocket backplane documentation 2020-03-18 16:10:20 -04:00
chris meyers
89163f2915
remove redis broker url test
* We use sockets everywhere. Thus, password special characters no longer
are an issue.
2020-03-18 16:10:20 -04:00
chris meyers
59c9de2761
awxkit python2.7 compatible print
* awxkit still supports python2.7 so do not use fancy f"" yet; instead,
use .format()
2020-03-18 16:10:20 -04:00
chris meyers
b58c71bb74
remove broadcast websockets view 2020-03-18 16:10:20 -04:00
Ryan Petrello
1caa2e0287
work around a limitation in postgres notify to properly support copying
postgres has a limitation on its notify message size (8k), and the
messages we generate for deep copying functionality easily go over this
limit; instead of passing a giant nested data structure across the
message bus, this change makes it so that we temporarily store the JSON
structure in memcached, and look it up from *within* the task

see: https://github.com/ansible/tower/issues/4162
2020-03-18 16:10:20 -04:00
chris meyers
770b457430
redis socket support 2020-03-18 16:10:19 -04:00
chris meyers
d58df0f34a
fix sliding window calculation 2020-03-18 16:10:19 -04:00
chris meyers
3f5e2a3cd3
try to make openshift build happy 2020-03-18 16:10:19 -04:00
chris meyers
2b59af3808
safely operate in async or sync context 2020-03-18 16:10:19 -04:00
chris meyers
9e5fe7f5c6
translate Instance hostname to safe analytics name
* More robust translation of Instance hostname to analytics safe name by
replacing all non-alpha numeric characters with _
2020-03-18 16:10:19 -04:00
chris meyers
093d204d19
fix flake8 2020-03-18 16:10:19 -04:00
chris meyers
e25bd931a1
change dispatcher test to make required queue
* No fallback-default queue anymore. Queue must be explicitly provided.
2020-03-18 16:10:19 -04:00
chris meyers
8350bb3371
robust broadcast websocket error hanndling 2020-03-18 16:10:18 -04:00
chris meyers
d6594ab602
add broadcast websocket metrics
* Gather brroadcast websocket metrics and push them into redis every
configurable seconds.
* Pop metrics from redis in web view layer to display via the api on
demand
2020-03-18 16:10:18 -04:00
chris meyers
b6b9802f9e
increase per-channel capacity
* 100 is the default capacity for a channel. If the client doesn't read
the socket fast enough, websocket messages can and will be lost. This
increases the default to 10,000
2020-03-18 16:10:18 -04:00
chris meyers
0da94ada2b
add missing service name to dev env
* Dev env was bringing the wsbroadcast service up but not under the
tower-process dependency. This is cleaner.
2020-03-18 16:10:18 -04:00
chris meyers
3b9e67ed1b
remove channel group model
* Websocket user session <-> group subscription membership now resides
in Redis rather than the database.
2020-03-18 16:10:18 -04:00
chris meyers
14320bc8e6
handle websocket unsubscribe
* Do not return from blocking unsubscribe until _after_ putting the
gotten unsubscribe message on the queue so that it can be read by the
thread of execution that was unblocked.
2020-03-18 16:10:18 -04:00
chris meyers
3c5c9c6fde
move broadcast websocket out into its own process 2020-03-18 16:10:18 -04:00
chris meyers
f5193e5ea5
resolve rebase errors 2020-03-18 16:10:17 -04:00
chris meyers
03b73027e8
websockets aware of Instance changes
* New tower nodes that are (de)registered in the Instance table are seen
by the websocket layer and connected to or disconnected from by the
websocket broadcast backplane using a polling mechanism.
* This is especially useful for openshift and kubernetes. This will be
useful for standalone Tower in the future when the restarting of Tower
services is not required.
2020-03-18 16:10:17 -04:00
chris meyers
c06b6306ab
remove health info
* Sending health about websockets over websockets is not a great idea.
* I tried sending health data via prometheus and encountered problems
that will need PR's to prometheus_client library to solve. Circle back
to this later.
2020-03-18 16:10:17 -04:00
Shane McDonald
45ce6d794e
Initial migration of rabbitmq -> redis for k8s installs 2020-03-18 16:10:17 -04:00
chris meyers
e94bb44082
replace rabbitmq with redis
* local awx docker-compose and image build only.
2020-03-18 16:10:17 -04:00
chris meyers
be58906aed
remove kombu 2020-03-18 16:10:17 -04:00
chris meyers
403e9bbfb5
add websocket health information 2020-03-18 16:10:16 -04:00