Commit Graph

98 Commits

Author SHA1 Message Date
Jeff Bradberry
81de931711 Add a new middleware to force-logout local-only users
when the DISABLE_LOCAL_AUTH setting is set.  This avoids the ugliness
of getting a SuspiciousOperation error for any request/response cycles
that are in flight when a user gets bounced.
2021-05-13 13:55:44 -04:00
Ryan Petrello
c2ef0a6500 move code linting to a stricter pep8-esque auto-formatting tool, black 2021-03-23 09:39:58 -04:00
Elijah DeLee
0e6c14e707 create performance logger to log api response time
this middleware allready existed, and we were trying to log this
data but it was not working.

Hope is these logs will be able to be shipped via external logging
and we could use kibana to track response time of different endpoints
2021-02-18 18:39:12 -05:00
Jake McDermott
704029459f Place some initial files for migration view
This restores some of the original files and routes from the migration
view of the classic ui with the eventual goal of fully reintegrating this
system with the new ui.

See: b39db745d4
2020-12-10 11:00:43 -05:00
Chris Meyers
eb47c8dbc6 centralize reusable profiling code 2020-10-27 08:21:41 -04:00
Ryan Petrello
860183f178 update the named URL code to properly return 404 vs 403 2020-07-22 12:15:34 -04:00
Ryan Petrello
9fe2211f82 get rid of the activity stream middleware
it has bugs and is very confusing

see: https://github.com/ansible/tower/issues/4037
2020-04-01 16:02:42 -04:00
Rebeccah
5bfe89be6e removed the to_representation and replaced with get_summary_fields per suggestion in PR comments 2020-03-23 14:57:07 -04:00
Rebeccah
47661fad51 added in summary fields into logging which will solve several issues related to needing more data in logging outputs 2020-03-23 14:57:07 -04:00
AlanCoding
daa9282790 Initial (editable) pass of adding JT.organization
This is the old version of this feature from 2019
  this allows setting the organization in the data sent
  to the API when creating a JT, and exposes the field
  in the UI as well

Subsequent commit changes the field from editable
  to read-only, but as of this commit, the machinery
  is not hooked up to infer it from project
2020-03-12 15:45:46 -04:00
Ryan Petrello
4a6147d4c2 add the ability to generate dot graphs for per-request profiling 2020-01-04 07:09:42 -05:00
AlanCoding
8d4425f056 Revert "Reduce API response times by caching migration flag"
This reverts commit 5433af6716.
2020-01-02 09:08:51 -05:00
AlanCoding
1f46878652 Revert "Apply migration flag check to task manager"
This reverts commit a0910eb6de.
2020-01-02 09:08:17 -05:00
AlanCoding
a0910eb6de Apply migration flag check to task manager 2019-12-15 22:56:57 -05:00
AlanCoding
5433af6716 Reduce API response times by caching migration flag 2019-12-15 22:56:57 -05:00
Jeff Bradberry
e0693d3746 is_anonymous and is_authenticated no longer support being called as methods 2019-07-12 15:11:21 -04:00
beeankha
20e5d8200e Subclass more middlware with deprecation mixin 2019-05-14 13:37:34 -04:00
beeankha
a6d3c0fd32 Remove redundant code and update URLModificationMiddleware 2019-05-14 13:37:34 -04:00
beeankha
318e0631b7 Add super() call 2019-05-14 13:37:34 -04:00
beeankha
da4153d653 Add mixin to ActivityStreamMiddleware class 2019-05-14 13:37:34 -04:00
beeankha
26e9dd307e Fix missing argument error 2019-05-14 13:37:34 -04:00
beeankha
68800d0e8e Make custom middleware use new style vs old 2019-05-14 13:37:34 -04:00
Ryan Petrello
be4705ef8b Merge branch 'downstream' into devel 2019-05-10 09:18:07 -04:00
AlanCoding
d2e67aea19 Fix server error for in-flight migration 2019-05-03 10:20:31 -04:00
AlanCoding
8c2b3e9b84 Fix Django 2.0 deprecation warnings 2019-04-22 14:17:14 -04:00
Jeff Bradberry
f2be4de544 Use Django's own logic to invalidate sessions of users when changing passwords
The key is django.contrib.auth.update_session_auth_hash(), which knows
how to inject a recalculated session hash back into the session if the
requesting user is changing their own password, in order to keep that
user logged in.
2019-03-27 10:06:13 -04:00
Ryan Petrello
6f43875e80 record profile data in /var/log/tower, not /var/lib/awx 2019-02-15 14:34:55 -05:00
Ryan Petrello
eed94b641e add a custom DB backend that provides system-level SQL profiling
run this command on _any_ node in an awx cluster:

$ awx-manage profile_sql --threshold=2.0 --minutes=1

...and for 1 minute, the timing for _every_ SQL query in _every_ awx
Python process that uses the Django ORM will be measured

queries that run longer than (in this example) 2 seconds will be
written to a per-process sqlite database in /var/lib/awx/profile, and
the file will contain an EXPLAIN VERBOSE for the query and the full
Python stack that led to that SQL query's execution (this includes not
just WSGI requests, but background processes like the runworker and
dispatcher)

$ awx-manage profile_sql --threshold=0

...can be used to disable profiling again (if you don't want to wait for
the minute to expire)
2019-02-14 15:04:46 -05:00
Ryan Petrello
daeeaf413a clean up unnecessary usage of the six library (awx only supports py3) 2019-01-25 00:19:48 -05:00
Ryan Petrello
c2660af60d stop various async background requests from bumping the session expiry
if a user has an active session that just sits on the dashboard or job
list, websocket messages that come in (for e.g., job status changes)
will trigger AJAX requests for more data; this process causes a user
with an idle login to continue to generate API requests, which in turn
ticks their expiry timer.  As a result, users with active sessions
sitting on these two (popular) pages will never be automatically logged
out via SESSION_MAX_AGE.

this change introduces a special header that the UI can use to signify
that a request shouldn't bump the expiry timer
2018-12-11 09:15:58 -05:00
Ryan Petrello
28512e042b remove DeprecatedAuthTokenMiddleware 2018-10-26 10:11:53 -04:00
Ryan Petrello
23d4122574 properly support deprecated Authorization: Token xyz 2018-09-24 14:50:33 -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
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
adamscmRH
762ce04b0a catch empty session case 2018-07-10 13:50:39 -04:00
adamscmRH
ae0793f374 Hookup UI session expiration 2018-07-03 16:53:27 -04:00
Ben Thomasson
0e32644a27 Check for missing environ in request 2018-03-23 17:00:27 -04:00
chris meyers
746a2c1eea short-circuit middleware if migration loading url
* Had to monkey patch django middleware logic.
* Left checks to tell coders to use new middleware behavior in favor of
monkey patching.
2018-03-02 11:21:26 -05:00
adamscmRH
310f37dd37 clears authtoken & add PAT 2018-02-22 15:18:12 -05:00
AlanCoding
9fb24f1a4c add hack to TimingMiddlWare for Shippable tests 2017-12-13 18:49:26 -05:00
Matthew Jones
9dbcc5934e Merge remote-tracking branch 'tower/release_3.2.2' into devel 2017-12-13 12:25:47 -05:00
AlanCoding
9ee18d02c8 new method of performance logging 2017-10-10 14:38:45 -04:00
Matthew Jones
b39db745d4 Integrate a migration-detector middleware
This attempts to detect if there are migrations in-progress and will
force display an interstitial page in the process that attempts to
load the index page every 10s until it succeeds.

This is only attached in production settings so the development
environment can proceed even if the migrations haven't been applied yet
2017-09-11 11:09:45 -04:00
Aaron Tan
c321819547 Handle named URL processing corner case where identifier is empty string 2017-08-22 10:40:45 -04:00
Aaron Tan
2ed3be0aab Add the ability to programmatically generate named URLs on client-side. 2017-06-14 10:37:40 -04:00
Aaron Tan
ceab33df80 Prevent generating named URL from non-existing endpoints. 2017-06-02 12:25:37 -04:00
Aaron Tan
f25391fe86 Implement named URL feature. 2017-05-31 12:09:54 -04:00
Ryan Petrello
e7c5dfeaa4 fix a bug which causes activitystream actor assignment to be invalid
Resolves #4660
2017-01-25 11:45:12 -05:00
AlanCoding
f3427d1359 Logging Integration, ELK docker-compose as update file 2016-11-29 13:09:47 -05:00