Compare commits

...

4326 Commits

Author SHA1 Message Date
softwarefactory-project-zuul[bot]
d58a66d587 Merge pull request #7838 from ryanpetrello/bump-14-0-0
Bump version to 14.0.0

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-08-06 15:45:35 +00:00
softwarefactory-project-zuul[bot]
2c5d3ff64a Merge pull request #7477 from AlanCoding/ee_req
Add execution environment metadata to AWX collection

Reviewed-by: Alan Rominger <arominge@redhat.com>
             https://github.com/AlanCoding
2020-08-06 14:24:39 +00:00
AlanCoding
f953e6ab55 Add execution environment metadata to AWX collection 2020-08-05 22:46:23 -04:00
Ryan Petrello
99e417d748 Bump version to 14.0.0 2020-08-05 16:22:03 -04:00
softwarefactory-project-zuul[bot]
1c0dc1cccb Merge pull request #7836 from ryanpetrello/downstream-merge
merge in a few downstream fixes

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-08-05 19:42:53 +00:00
Ryan Petrello
6067fc36f6 begin a 14.0.0 changelog 2020-08-05 14:53:01 -04:00
Ryan Petrello
0c6be1f4d7 Merge branch 'downstream' into devel 2020-08-05 14:48:36 -04:00
softwarefactory-project-zuul[bot]
57732d4630 Merge pull request #7824 from shanemcd/fix-isolated-dev-env
Fix isolated dev env

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-08-04 23:30:56 +00:00
softwarefactory-project-zuul[bot]
3af31df2c9 Merge pull request #7823 from john-westcott-iv/cancel_500_error
Catching runtime error

Reviewed-by: Ryan Petrello
             https://github.com/ryanpetrello
2020-08-04 22:25:50 +00:00
Shane McDonald
00ea453ccd Fix isolated dev env 2020-08-04 17:25:57 -04:00
John Westcott IV
27676b0634 Adding RuntimeError which is returned from a connection error in awx/main/dispatch/control.py 2020-08-04 17:17:38 -04:00
softwarefactory-project-zuul[bot]
2a9804e589 Merge pull request #7768 from wenottingham/add-some-nozzles
Create marginally more realistic event data with firehose

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-08-04 16:02:27 +00:00
softwarefactory-project-zuul[bot]
b990271dec Merge pull request #7811 from ryanpetrello/deprecate-galaxy-basic-auth
mark PRIMARY_GALAXY_USERNAME and PRIMARY_GALAXY_PASSWORD as deprecated

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-08-04 14:45:58 +00:00
Ryan Petrello
76ba363513 mark PRIMARY_GALAXY_USERNAME and PRIMARY_GALAXY_PASSWORD as deprecated 2020-08-04 10:18:40 -04:00
Bill Nottingham
bd6cac966a Create marginally more realistic event data with firehose 2020-08-03 20:57:10 -04:00
softwarefactory-project-zuul[bot]
15c4ab3a9b Merge pull request #7802 from ryanpetrello/vnnn-minus
remove vNNN from example migration files

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-08-03 20:09:24 +00:00
Ryan Petrello
820c0782ad remove vNNN from example migration files 2020-08-03 15:30:37 -04:00
softwarefactory-project-zuul[bot]
b11908ed1f Merge pull request #7577 from AlexSCorey/RemovesInventoryScripts
Removes Inventory Script screens, routes, stubs etc.

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-08-03 18:37:25 +00:00
softwarefactory-project-zuul[bot]
e20ea5edba Merge pull request #7724 from AlexSCorey/7434-UserTokensDelete
Adds delete functionality to user tokens list

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-08-03 18:14:28 +00:00
Alex Corey
3d08754be5 Removes Inventory Script screens, routes, stubs etc. 2020-08-03 14:07:44 -04:00
Alex Corey
164d4e6419 Adds delete functionality to user tokens list 2020-08-03 13:46:34 -04:00
softwarefactory-project-zuul[bot]
d5ab54977c Merge pull request #7796 from zedr/fix-py3-yaml-bytes-decoded
Fix garbage being printed when exporting as YAML - related #7795

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-08-03 16:38:16 +00:00
Rigel Di Scala
490746fe8c Fix garbage being printed when exporting as YAML - related #7795
This resolves issue #7795, by passing the `encoding` keyword argument
only when the code is run on a Python 2 interpreter.

related #7795.
2020-08-03 11:57:45 -04:00
softwarefactory-project-zuul[bot]
def79de72b Merge pull request #7785 from mabashian/convert-NotificationList-functional
Converts NotificationList to functional component and now uses useRequest

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-31 19:29:56 +00:00
softwarefactory-project-zuul[bot]
f2fa28e9dc Merge pull request #7786 from mabashian/convert-OrganizationLookup-useRequest
Updates OrganizationLookup to use useRequest

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-31 19:29:50 +00:00
softwarefactory-project-zuul[bot]
fed02ef14a Merge pull request #7634 from norpol/patch-1
Fix requirements updater.sh "sourcing" snippet

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-31 17:54:17 +00:00
softwarefactory-project-zuul[bot]
1077e218bd Merge pull request #7782 from ryanpetrello/galaxy-collection-install-29
only support ansible-galaxy collection in 2.9+

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-31 17:54:10 +00:00
softwarefactory-project-zuul[bot]
76f75f1745 Merge pull request #7787 from squidboylan/collection_test_fix
Fix collection test inventory

Reviewed-by: Alan Rominger <arominge@redhat.com>
             https://github.com/AlanCoding
2020-07-31 17:26:25 +00:00
softwarefactory-project-zuul[bot]
1bb597bba4 Merge pull request #7788 from ryanpetrello/eff-string
fix a typo in an f-string

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-31 17:22:35 +00:00
Ryan Petrello
a0e5e74cab fix a typo in an f-string 2020-07-31 12:48:45 -04:00
Caleb Boylan
d935e3c5a3 Fix collection test inventory 2020-07-31 09:47:10 -07:00
mabashian
460ce7fcfa Updates OrganizationLookup to use useRequest 2020-07-31 12:01:55 -04:00
softwarefactory-project-zuul[bot]
ec8725d54f Merge pull request #7614 from vjanssens/5626-add-item-count
Add pagination/item count to DataListToolbar

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-31 14:58:29 +00:00
mabashian
d8af8baae3 Converts NotificationList to functional component and now uses useRequest 2020-07-31 10:49:27 -04:00
softwarefactory-project-zuul[bot]
d36999acc7 Merge pull request #7784 from ryanpetrello/comments
make these issue template sentences comments

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-31 14:34:06 +00:00
Ryan Petrello
5b8cfa353f make these issue template sentences comments
(because people are filing issues and leaving this text at the top)
2020-07-31 09:58:52 -04:00
softwarefactory-project-zuul[bot]
07e86adbb7 Merge pull request #7750 from Orabig/devel
Allow to use an existing PVC for postgresql install with Helm

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-31 13:53:09 +00:00
Ryan Petrello
1ad623f253 only support ansible-galaxy collection in 2.9+
see: https://github.com/ansible/awx/issues/7769
2020-07-31 09:42:07 -04:00
softwarefactory-project-zuul[bot]
c0a0e16ba0 Merge pull request #7742 from nixocio/ui_rebased_issue_7640
Add details page for instance group

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-30 20:07:54 +00:00
softwarefactory-project-zuul[bot]
91d3f954cd Merge pull request #7772 from mabashian/convert-ResourceAccessList-functional
Converts ResourceAccessList to functional component

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-30 18:10:29 +00:00
softwarefactory-project-zuul[bot]
b5f87b1bac Merge pull request #7774 from ryanpetrello/bug-filing-extra
update the bug report and feature templates w/ additional instructions

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-30 18:03:43 +00:00
Ryan Petrello
173628c709 update the bug report and feature templates w/ additional instructions 2020-07-30 13:24:54 -04:00
softwarefactory-project-zuul[bot]
2cabaf8727 Merge pull request #7732 from AlexSCorey/7728-TeamsUsers
Adds Teams Access List and renames Tabs and files under teams

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-30 16:09:14 +00:00
softwarefactory-project-zuul[bot]
d38b3afd21 Merge pull request #7764 from fosterseth/add-kubernetes_web_svc_type
Add kubernetes_web_svc_type variable to installer/inventory

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-30 14:59:39 +00:00
softwarefactory-project-zuul[bot]
162aab7272 Merge pull request #7738 from mabashian/test-console-cleanup
Test console cleanup

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-30 14:20:20 +00:00
mabashian
dcaab9bc8b Converts ResourceAccessList to functional component 2020-07-30 10:10:56 -04:00
softwarefactory-project-zuul[bot]
8f1c071acf Merge pull request #7733 from nixocio/ui_update_delete
Update delete button variant to secondary

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-30 14:03:36 +00:00
softwarefactory-project-zuul[bot]
efdee6ed1f Merge pull request #7770 from AlanCoding/falsy_inv
Handle not-provided falsy values in tower_inventory_source

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-30 12:24:20 +00:00
AlanCoding
750c22a150 Handle not-provided falsy values in tower_inventory_source 2020-07-29 21:55:20 -04:00
softwarefactory-project-zuul[bot]
b444d10369 Merge pull request #7745 from mabashian/convert-WFJTList-useRequest
Converts WorkflowJobTemplatesList to use useRequest in preparation for advanced search

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-29 23:48:10 +00:00
softwarefactory-project-zuul[bot]
2f81a1d803 Merge pull request #7752 from mabashian/convert-ProjectList-useRequest
Converts ProjectsList to use useRequest in preparation for advanced search

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-29 23:12:51 +00:00
softwarefactory-project-zuul[bot]
902566ccfb Merge pull request #7761 from mabashian/convert-OrganizationTeamList-useRequest
Converts OrganizationTeamList to use useRequest in preparation for advanced search

Reviewed-by: Jake McDermott <yo@jakemcdermott.me>
             https://github.com/jakemcdermott
2020-07-29 23:04:23 +00:00
softwarefactory-project-zuul[bot]
dd828cba26 Merge pull request #7754 from mabashian/convert-JobTemplatesList-useRequest
Converts JobTemplatesList to use useRequest in preparation for advanced search

Reviewed-by: Jake McDermott <yo@jakemcdermott.me>
             https://github.com/jakemcdermott
2020-07-29 23:04:18 +00:00
softwarefactory-project-zuul[bot]
45809abc6f Merge pull request #7743 from mabashian/convert-UserList-functional
Converts UserList to functional component

Reviewed-by: Jake McDermott <yo@jakemcdermott.me>
             https://github.com/jakemcdermott
2020-07-29 22:52:45 +00:00
softwarefactory-project-zuul[bot]
3bcad7be81 Merge pull request #7759 from mabashian/convert-ProjectJobTemplatesList-hooks
Update ProjectJobTemplatesList to use useSelected, useRequest, useDeleteItems hooks

Reviewed-by: Jake McDermott <yo@jakemcdermott.me>
             https://github.com/jakemcdermott
2020-07-29 22:50:06 +00:00
softwarefactory-project-zuul[bot]
21a2b1a630 Merge pull request #7755 from mabashian/convert-InventorySourcesList-useRequest
Converts InventorySourcesList to use useRequest in preparation for advanced search

Reviewed-by: Jake McDermott <yo@jakemcdermott.me>
             https://github.com/jakemcdermott
2020-07-29 22:48:32 +00:00
softwarefactory-project-zuul[bot]
0d75e1540c Merge pull request #7765 from mabashian/convert-InventoryGroupsList-useRequest
Convert InventoryGroupsList to use useRequest and useSelected hooks

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-29 22:48:27 +00:00
softwarefactory-project-zuul[bot]
d43ea41b7f Merge pull request #7748 from jakemcdermott/noportal
Delete portal mode

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-29 20:45:04 +00:00
softwarefactory-project-zuul[bot]
aca1e73d84 Merge pull request #7753 from rooftopcellist/fix_unmarked_strings
Use quotations when marking strings for translation

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-29 19:37:05 +00:00
Christian Adams
6e75d25b74 Merge pull request #4492 from rooftopcellist/fix_broken_ui_links
Use quotations when marking strings for translation [3.7.2]
2020-07-29 15:28:18 -04:00
mabashian
ccecd90015 Convert InventoryGroupsList to use useRequest and useSelected hooks 2020-07-29 15:07:06 -04:00
softwarefactory-project-zuul[bot]
5c400b96fe Merge pull request #7762 from gamuniz/add_helpful_dialog_profilesql
Add helpful dialog profilesql

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-29 18:28:15 +00:00
Seth Foster
07160d9719 Add kubernetes_web_svc_type variable to installer/inventory
awx-web-svc is now settable, e.g. ClusterIP or NodePort. Default
is NodePort
2020-07-29 14:18:10 -04:00
nixocio
a4dd20872c Add details page for instance group
This PR also:

* Modify routing system to add `container_groups` as well.
* Add `DetailBadge` component.
* Add container group files as placeholder.

See: https://github.com/ansible/awx/issues/7640
Also: https://github.com/ansible/awx/issues/7467
2020-07-29 13:27:57 -04:00
Gabe Muniz
0de900a021 fixed for flake8 compliance 2020-07-29 13:13:01 -04:00
mabashian
b35aa1ac83 Converts OrganizationTeamList to use useRequest in preparation for advanced search 2020-07-29 13:12:10 -04:00
Gabe Muniz
9b06fb1e6a added helpful messaging using profile sql 2020-07-29 12:48:01 -04:00
Alex Corey
24acacbcb6 Renames files to match the tabs better. 2020-07-29 12:24:09 -04:00
mabashian
98e44de7a1 Update capitalization to match PF guidelines 2020-07-29 11:45:58 -04:00
mabashian
b11f2f017f Update capitalization to match PF guidelines 2020-07-29 11:44:17 -04:00
mabashian
9d8a177c75 Update capitalization to match PF guidelines 2020-07-29 11:43:28 -04:00
mabashian
7d8963388f Update capitalization to match PF guidelines 2020-07-29 11:41:16 -04:00
mabashian
3e0d0ec62d Update capitalization to match PF guidelines 2020-07-29 11:39:32 -04:00
mabashian
a34953cd6c Update list to use useSelected, useRequest, useDeleteItems hooks 2020-07-29 11:32:08 -04:00
mabashian
48b29352d7 Converts InventorySourcesList to use useRequest in preparation for advanced search 2020-07-29 10:08:45 -04:00
mabashian
8addc6bb59 Converts JobTemplatesList to use useRequest in preparation for advanced search 2020-07-29 09:48:54 -04:00
Christian Adams
76b25d8c96 Use quotations when marking strings for translation 2020-07-29 09:42:18 -04:00
mabashian
e343c9698d Converts ProjectsList to use useRequest in preparation for advanced search 2020-07-29 09:09:27 -04:00
mabashian
bc02321689 Adopt useSelected 2020-07-29 08:45:06 -04:00
Benoît Chauvet
e917cffb5f Allow to use an existing PersistanceVolumeClaim for postgresql install with Helm
Signed-off-by: Benoît Chauvet <benoit.chauvet@gmail.com>
2020-07-29 14:11:12 +02:00
Alan Rominger
b4c3da55d2 Merge pull request #4474 from AlanCoding/per_update_cache_37
[3.7] Per update roles and collections cache
2020-07-29 06:58:25 -04:00
Christian Adams
b1481ec6e3 Use quotations when marking strings for translation 2020-07-28 21:23:14 -04:00
Jake McDermott
3b597cd80a Delete portal mode 2020-07-28 20:27:25 -04:00
softwarefactory-project-zuul[bot]
b009b01251 Merge pull request #7707 from nixocio/ui_update_per_mockup
Update wording to equal mock up

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-29 00:06:59 +00:00
mabashian
2409bc5ee3 Converts WorkflowJobTemplatesList to use useRequest in preparation for advanced search 2020-07-28 17:13:56 -04:00
mabashian
f775ed3f77 Converts UserList to functional component 2020-07-28 16:22:51 -04:00
nixocio
d373cbdca9 Update delete button variant to secondary
Update delete button variant to secondary, except in Modals.

see: https://github.com/ansible/awx/issues/7722
2020-07-28 14:05:12 -04:00
AlanCoding
daaa0c8efe Avoid using long name of option not in 2.8 2020-07-28 13:57:31 -04:00
Bill Nottingham
c6eb8cf59b Cache downloaded roles & collections
Populate the cache the first time the job is run for a revision
that needs them, and for future runs for that revision just
copy it into the private directory.

Delete the cache on project deletion.

Invalidate the cache on a new project revision

Also download roles/collections during the sync job

Since we're writing into a per-revision cache, we can do this easily now.

Don't try and install content if there aren't any requirements expecting it

Adjust pathing to the proper location.

Force install if doing a manual sync.

Requirements may be unversioned.

Remove the cache when delete-on-update is set

Integrate content caching with existing task logic

Revert the --force flags

use the update id as metric for role caching

Shift the movement of cache to job folder from rsync task to python

Only install roles and collections if needed

Deal with roles and collections for jobs without sync
Skip local copy if roles or collections turned off

update docs for content caching

Design pivot - use empty cache dir to indicate lack of content

Do not cache content if we did not install content

Test changes to allay concerns about reliability of local_path

Do not blow away cache for SCM inventory updates

Remove project update vars no longer used

Remove job pre-creation of content folders

code style edit, always use cache_id as property in tasks

Fix log message
2020-07-28 13:57:28 -04:00
Alex Corey
8e27e0ce28 Teams Access List using Resource Access component 2020-07-28 13:17:11 -04:00
Alex Corey
a070d57080 Adds Teams Roles List and Disassociate functionality 2020-07-28 13:17:11 -04:00
mabashian
721c8d98f8 Prevents debug messages from being logged while tests are running 2020-07-28 13:13:00 -04:00
softwarefactory-project-zuul[bot]
196368d89b Merge pull request #7736 from beeankha/rrule_module_minor_edits
Make Some Doc Edits in the rrule Collections Module

Reviewed-by: Ryan Petrello
             https://github.com/ryanpetrello
2020-07-28 16:27:22 +00:00
mabashian
8b2c98ffde Fixes console errors thrown about React state updates being be wrapped into act(...) on the job template add form 2020-07-28 12:08:40 -04:00
mabashian
1faaba4e6c Fixes console errors thrown about React state updates being be wrapped into act(...) on the inventory form 2020-07-28 12:05:02 -04:00
Ryan Petrello
7938bf58d4 Merge pull request #4485 from ryanpetrello/more-cred-failure-cleanup-372
properly obfuscate connection errors for credential lookup failure
2020-07-28 12:04:03 -04:00
beeankha
fe176a4f8c Match test playbook output to edited module output 2020-07-28 11:50:19 -04:00
mabashian
7e8d0b5883 Fixes console errors thrown about isValid on the workflow job template form 2020-07-28 11:49:17 -04:00
Ryan Petrello
91594a1ae8 properly obfuscate connection errors for credential lookup failure 2020-07-28 11:38:48 -04:00
mabashian
e6e79227e5 Fixes console errors thrown about isValid on the credential form 2020-07-28 11:26:48 -04:00
Ryan Petrello
b03b12163f Merge pull request #4486 from ryanpetrello/fix-372-unit-tests
pin pytest-forked to fix broken unit tests
2020-07-28 11:18:52 -04:00
Ryan Petrello
1c08206792 pin pytest-forked to fix broken unit tests 2020-07-28 11:16:52 -04:00
softwarefactory-project-zuul[bot]
3f0a8eb5bc Merge pull request #7633 from nixocio/ui_add_list_instance_group
Add feature list instance groups

Reviewed-by: Alex Corey <Alex.swansboro@gmail.com>
             https://github.com/AlexSCorey
2020-07-28 14:57:02 +00:00
beeankha
95cf6aa6d0 Make minor edits to the rrule module 2020-07-28 10:36:52 -04:00
nixocio
c2b1209cf3 Add feature list instance groups
Add list and delete for instance groups/container groups.

See: https://github.com/ansible/awx/issues/7557
Also: https://github.com/ansible/awx/issues/7642
2020-07-27 16:51:34 -04:00
softwarefactory-project-zuul[bot]
7bec29bac7 Merge pull request #7726 from fosterseth/fix-helm-url
Update helm urls in install guide

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-27 18:55:40 +00:00
Seth Foster
053b7caf3a Update helm urls 2020-07-27 13:01:29 -04:00
softwarefactory-project-zuul[bot]
6b867e7d97 Merge pull request #7596 from nixocio/ui_set_strict_mode
Set React to Strict Mode

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-27 15:56:57 +00:00
softwarefactory-project-zuul[bot]
708244881c Merge pull request #7643 from AlanCoding/per_update_cache
Implement per-update cache for roles and collections

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-27 15:45:48 +00:00
Alan Rominger
967f3cc6a7 Merge pull request #4472 from AlanCoding/upgrade_vmware
Upgrade community.vmware for better error surfacing
2020-07-27 10:16:12 -04:00
softwarefactory-project-zuul[bot]
e1902b6fe1 Merge pull request #7713 from mabashian/fix-form-field-help
Fixes bug where help icon showed up beneath the form label

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-27 13:42:41 +00:00
Vadiem Janssens
36316ae9a5 Fix tests
Signed-off-by: Vadiem Janssens <info@vadiemjanssens.nl>
2020-07-26 20:56:40 +02:00
Vadiem Janssens
8e4edca85d Replace itemCount with DataListToolbar pagination 2020-07-26 20:33:43 +02:00
Vadiem Janssens
30a499b785 Add item count to DataListToolbar
Signed-off-by: Vadiem Janssens <info@vadiemjanssens.nl>
2020-07-26 20:33:43 +02:00
softwarefactory-project-zuul[bot]
68c62d74f6 Merge pull request #7671 from jlmitch5/pfUpdate0920
update pf to 09 2020 release

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-23 20:57:07 +00:00
Ryan Petrello
847d6c65bd Merge pull request #4480 from ryanpetrello/372-cred-plugin-30x
properly report 30x errors on credential plugin tests
2020-07-23 15:27:27 -04:00
Ryan Petrello
f29e7b9c81 properly report 30x errors on credential plugin tests 2020-07-23 14:50:35 -04:00
Ryan Petrello
32831794ee Merge pull request #4477 from ryanpetrello/372-signal-deadlock
force worker processes to have a different signal handler from the parent
2020-07-23 12:21:44 -04:00
Jeff Bradberry
6b82ae46bc Force worker processes to have a different signal handler from the parent
Situations have come up where the 5+ minute kill signal for
run_task_manager is emitted to the worker process running it, but
since the worker improperly inherited the AWXConsumerBase().stop()
handler a deadlock ultimately was triggered on the database
connection.
2020-07-23 12:09:59 -04:00
Ryan Petrello
26660fa82e Merge pull request #4464 from ryanpetrello/named-url-vuln-372
update the named URL code to properly return 404 vs 403
2020-07-23 12:07:33 -04:00
mabashian
45286ebf41 Fixes bug where help icon showed up beneath the form label. I believe the labelIcon prop was added in a recent update of PF and is what we should be using. 2020-07-23 10:43:10 -04:00
softwarefactory-project-zuul[bot]
71d3fd3dbc Merge pull request #7698 from geerlingguy/pg-data-use-default-path
Use default path for pgdata volume in docker-compose template

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-23 13:02:53 +00:00
softwarefactory-project-zuul[bot]
6527d23b42 Merge pull request #7696 from AmadeusITGroup/fix_invalid_quote_filter
Installer: remove quote filter from docker_registry_password

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-23 13:00:52 +00:00
nixocio
1b767daaf6 Update wording to equal mock up
Update wording used for 'Job Templates' and 'Credential Types' to be
equal mock up.

See: https://tower-mockups.testing.ansible.com/patternfly/cred-types/cred-types/
Also: https://tower-mockups.testing.ansible.com/patternfly/templates/templates/
2020-07-22 14:00:24 -04:00
Ryan Petrello
860183f178 update the named URL code to properly return 404 vs 403 2020-07-22 12:15:34 -04:00
softwarefactory-project-zuul[bot]
3e753a7315 Merge pull request #7702 from ansible/fix-broken-offline-builds
Fix broken offline builds

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-22 13:22:19 +00:00
Shane McDonald
606296f68b Fix broken offline builds 2020-07-21 18:19:51 -04:00
Jeff Geerling
06fd131637 Use default path for pgdata volume in docker-compose template 2020-07-21 15:35:24 -05:00
softwarefactory-project-zuul[bot]
cf6c36ecab Merge pull request #7697 from nixocio/ui_small_refactor_credential_type_tests
Small update CredentialTypeList

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-21 20:17:23 +00:00
nixocio
fc9f1a3518 Small update CredentialTypeList
Small update CredentialTypeList. Update naming of function to
`deleteCredentialTypes`.
2020-07-21 15:50:43 -04:00
Philip DOUGLASS
ab20b5bd10 Installer: remove quote filter from docker_registry_password
The docker_registry_password var isn't interpolated by the shell, so
it shouldn't be quoted

Fixes: #7695
Signed-off-by: Philip DOUGLASS <philip.douglass@amadeus.com>
2020-07-21 15:33:42 -04:00
AlanCoding
0e8f30a4a2 Upgrade community.vmware for better error surfacing 2020-07-21 13:03:24 -04:00
AlanCoding
ddb8c93f17 Fix log message 2020-07-21 11:21:21 -04:00
AlanCoding
425c70826f code style edit, always use cache_id as property in tasks 2020-07-21 10:50:13 -04:00
AlanCoding
8195bd7386 Remove job pre-creation of content folders 2020-07-20 19:45:22 -04:00
AlanCoding
300d54864d Remove project update vars no longer used 2020-07-20 19:45:21 -04:00
AlanCoding
fefab89815 Integrate content caching with existing task logic
Revert the --force flags

use the update id as metric for role caching

Shift the movement of cache to job folder from rsync task to python

Only install roles and collections if needed

Deal with roles and collections for jobs without sync
Skip local copy if roles or collections turned off

update docs for content caching

Design pivot - use empty cache dir to indicate lack of content

Do not cache content if we did not install content

Test changes to allay concerns about reliability of local_path

Do not blow away cache for SCM inventory updates
2020-07-20 19:45:21 -04:00
Bill Nottingham
72848fa097 Remove the cache when delete-on-update is set 2020-07-20 19:45:20 -04:00
Bill Nottingham
85ec3dd5c4 Force install if doing a manual sync.
Requirements may be unversioned.
2020-07-20 19:45:20 -04:00
Bill Nottingham
98de4cb35f Adjust pathing to the proper location. 2020-07-20 19:45:20 -04:00
Bill Nottingham
dab7889715 Don't try and install content if there aren't any requirements expecting it 2020-07-20 19:45:19 -04:00
Bill Nottingham
95e69124af Also download roles/collections during the sync job
Since we're writing into a per-revision cache, we can do this easily now.
2020-07-20 19:45:19 -04:00
Bill Nottingham
1f4c46d873 Invalidate the cache on a new project revision 2020-07-20 19:45:18 -04:00
Bill Nottingham
d272ee3521 Cache downloaded roles & collections
Populate the cache the first time the job is run for a revision
that needs them, and for future runs for that revision just
copy it into the private directory.

Delete the cache on project deletion.
2020-07-20 19:45:15 -04:00
softwarefactory-project-zuul[bot]
bedbafe0f9 Merge pull request #7613 from keithjgrant/6622-template-list-websockets
Add websocket support to TemplateList

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-20 20:19:57 +00:00
softwarefactory-project-zuul[bot]
676491134d Merge pull request #7620 from keithjgrant/6621-inventory-sources-sockets
Inventory sources websockets

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-20 20:18:51 +00:00
softwarefactory-project-zuul[bot]
b36c5d9209 Merge pull request #7652 from jakemcdermott/fix-7651
Check for required node version before build or install

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-20 19:54:21 +00:00
softwarefactory-project-zuul[bot]
7296415fd9 Merge pull request #7635 from tchellomello/user_API_created
Exposes created attribute via API for User django ORM

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-20 19:40:47 +00:00
John Mitchell
00b3ff6e51 update snapshot and tooltip test 2020-07-20 14:06:14 -04:00
John Mitchell
bfaa2abd31 update pf to 09 2020 release 2020-07-20 13:42:14 -04:00
Ryan Petrello
34be08d38e add tests for filtering User.created_by in the API 2020-07-20 11:28:32 -04:00
Jake McDermott
2992a5f5a4 Check node version before build or install 2020-07-20 09:13:43 -04:00
Marcelo Moreira de Mello
3803763c53 Exposes the User.created attribute via API
Signed-off-by: Marcelo Moreira de Mello <tchello.mello@gmail.com>
2020-07-17 15:47:17 -04:00
softwarefactory-project-zuul[bot]
f0aec0d444 Merge pull request #7641 from josephpisciotta/devel
Remove the NodePort type for the web svc.

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-17 19:01:27 +00:00
softwarefactory-project-zuul[bot]
765595fd11 Merge pull request #7629 from ryanpetrello/k8s-creds
add the ability to specify K8S/OCP credentials on a Job Template

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-17 17:07:46 +00:00
Joseph Pisciotta
75c6c068a7 Remove the NodePort type for the web svc. 2020-07-17 12:51:29 -04:00
softwarefactory-project-zuul[bot]
036780d337 Merge pull request #7559 from AlexSCorey/7513-SurveySelectAllBox
Removes unneeded select all checkbox in Survey List

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-16 22:39:41 +00:00
Phi|eas |ebada
a05aa20f24 Update updater.sh
I wrote this script a year ago and just realized that this sourcing won't work lol
2020-07-16 23:24:09 +02:00
softwarefactory-project-zuul[bot]
4db3cd0326 Merge pull request #7627 from jakemcdermott/fix-7512
Show grant and client type validation errors

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-16 21:00:29 +00:00
softwarefactory-project-zuul[bot]
2e07ac3c2c Merge pull request #7628 from jakemcdermott/fix-7511
Improve nav behavior

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-16 21:00:22 +00:00
softwarefactory-project-zuul[bot]
77717b6134 Merge pull request #7631 from jakemcdermott/fix-5236
Use summary job_type on host list

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-16 19:40:36 +00:00
Jake McDermott
bf74aae80e Use summary job_type on host list 2020-07-16 14:10:55 -04:00
Alex Corey
496862592a fixes erroneous render 2020-07-16 12:59:58 -04:00
Alex Corey
ad536ec3d9 Removes commented out line 2020-07-16 12:59:52 -04:00
Alex Corey
bc69406f31 removes unneeded select all checkbox 2020-07-16 12:59:52 -04:00
Ryan Petrello
959b81aec5 refactor k8s credential injectors to properly handle verify=f 2020-07-16 12:43:10 -04:00
Ryan Petrello
1a39cbc2f4 add tests for k8s credential usage in Job Templates 2020-07-16 12:22:11 -04:00
Ryan Petrello
715dc4ece8 add a license for ruamel.ordereddict (for openshift lib support) 2020-07-16 11:38:54 -04:00
Ryan Petrello
c44f8e9122 implement k8s credential selection in the new patternfly UI 2020-07-16 11:25:03 -04:00
Ryan Petrello
75a0382c31 show k8s credentials in the Job Template prompt on launch UI 2020-07-16 10:53:21 -04:00
Ryan Petrello
0b221a42c0 Add the ability to specify K8S/OCP credentials on a Job Template
see: https://github.com/ansible/awx/issues/5735
2020-07-15 17:44:07 -04:00
Jake McDermott
6f43462689 Improve nav behavior
* Use more selective route matching when determining if a nav item is
active

* Don't automatically collapse nav groups when user navigates to a
different group
2020-07-15 12:46:08 -04:00
Jake McDermott
d1a4f010b9 Show grant and client type validation errors 2020-07-15 12:05:51 -04:00
softwarefactory-project-zuul[bot]
79b95883a3 Merge pull request #7618 from jakemcdermott/update-deps-03
Fix most of this week's npm warnings

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-15 14:49:04 +00:00
Keith Grant
f1e3b4f4f0 add useWsInventorySources tests 2020-07-14 14:29:24 -07:00
Ryan Petrello
c410f1f344 Merge pull request #4458 from ryanpetrello/fifo-cred-plugin-hang-372
[3.7.2] remove the usage of create_temporary_fifo from credential plugins
2020-07-14 17:21:35 -04:00
Ryan Petrello
310a0f88e5 remove the usage of create_temporary_fifo from credential plugins
this resolves an issue that causes an endless hang on with Cyberark AIM
lookups when a certificate *and* key are specified

the underlying issue here is that we can't rely on the underyling Python
ssl implementation to *only* read from the fifo that stores the pem data
*only once*; in reality, we need to just use *actual* tempfiles for
stability purposes

see: https://github.com/ansible/awx/issues/6986
see: https://github.com/urllib3/urllib3/issues/1880
2020-07-14 16:24:03 -04:00
Keith Grant
4fca57dfd2 add ws support to inventory sources list 2020-07-14 11:43:59 -07:00
Jake McDermott
e89326dbf2 Fix vulnerable 2nd order dependency 2020-07-14 14:42:46 -04:00
softwarefactory-project-zuul[bot]
cd6df9299f Merge pull request #7286 from john-westcott-iv/lookup_plugins
Adding tower_api and tower_get_id lookup plugins

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-14 18:04:27 +00:00
softwarefactory-project-zuul[bot]
80a6d4a29d Merge pull request #7611 from ryanpetrello/host-recent-job-type
add job type to Host summary_fields.recent_jobs

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-14 14:04:58 +00:00
John Westcott IV
222e58dd34 Adding lookup to rrule plugin test logic for new tooling
This change is provided with the tower_api lookup plugin because the require tower_meta module is part of this commit
2020-07-14 09:38:26 -04:00
John Westcott IV
0be7d9b21a Removing redundant check 2020-07-14 09:38:26 -04:00
John Westcott IV
5a6c7a5788 Fixing copyrights and linting issues 2020-07-14 09:38:26 -04:00
John Westcott IV
3784f9515e More refinement of examples 2020-07-14 09:38:26 -04:00
John Westcott IV
6638d6c2bb Update examples 2020-07-14 09:38:26 -04:00
John Westcott IV
afbdeb5ff8 Fixing linting errors 2020-07-14 09:38:26 -04:00
John Westcott IV
381e9d2901 Reverting commit 81b192c3b0520be0897f95e2630edab295e6bf24, we should fail only if we are > max_objects 2020-07-14 09:38:26 -04:00
John Westcott IV
dd478af227 Overhaul of the testing suite 2020-07-14 09:38:26 -04:00
John Westcott IV
0424370d49 Revamp of the examples 2020-07-14 09:38:26 -04:00
John Westcott IV
1a4bb42ac5 When using return_ids send back a list of strings instead of ints.
When we used ints and passed this data into a nother call like:
    - name: Create a job template with a looked up credential from a folded lookup
      tower_job_template:
        name: "{{ job_template_name }}"
        credentials: >-
            {{ lookup(
                'awx.awx.tower_api',
                'credentials',
                query_params={ 'name' : credential_name },
                return_ids=True,
                expect_one=True,
                wantlist=True
            ) }}
        project: "{{ project_name }}"
        inventory: Demo Inventory
        playbook: hello_world.yml
        job_type: run
        state: present
      register: create_jt

Ansible would raise this warning:
[WARNING]: The value 30 (type int) in a string field was converted to '30' (type string). If this does not look like what you expect, quote the entire value to ensure it does not change.

Returning a list of strings prevents that.
2020-07-14 09:38:26 -04:00
John Westcott IV
fdb008fb8c Added note about exception if list view return is > max_objects 2020-07-14 09:38:26 -04:00
John Westcott IV
d793f0bc99 Making the count check >= instead of just > 2020-07-14 09:38:26 -04:00
John Westcott IV
a9c16a6c90 Fixing undefined variabe 2020-07-14 09:38:26 -04:00
Alan Rominger
34c23caed3 make lookup plugin compatible with ansible.tower namespace (#9) 2020-07-14 09:38:26 -04:00
AlanCoding
8239232d4d Delete the tower_get_id plugin and tests 2020-07-14 09:38:26 -04:00
AlanCoding
30ff112c87 Pull in functionality from lookup plugin get_id into tower_api itself 2020-07-14 09:38:26 -04:00
John Westcott IV
f4454a6c93 Make tower_api a generic GET'er 2020-07-14 09:38:26 -04:00
John Westcott IV
44a3057d16 Initial fixes from github comments 2020-07-14 09:38:26 -04:00
John Westcott IV
3c02265986 Fixing doc issue 2020-07-14 09:38:26 -04:00
beeankha
6715ea493f Fix documentation in api lookup plugin, fix typos in integration tests 2020-07-14 09:38:26 -04:00
John Westcott IV
96ae3268a5 Fixing linting issues 2020-07-14 09:38:26 -04:00
John Westcott IV
6d626b3793 Adding tower_api and tower_get_id lookup plugins 2020-07-14 09:38:26 -04:00
Keith Grant
350c585499 update useWsTemplates to use useWebsocket hook 2020-07-13 13:32:13 -07:00
Keith Grant
b76783791a add useWsTemplates tests 2020-07-13 13:27:38 -07:00
Keith Grant
981c9527b2 add template list websocket support 2020-07-13 13:27:38 -07:00
softwarefactory-project-zuul[bot]
09dcb91c09 Merge pull request #7598 from keithjgrant/6618-websocket-inventories-list
Add Websocket support to inventories list

Reviewed-by: Daniel Sami
             https://github.com/dsesami
2020-07-13 20:25:49 +00:00
Ryan Petrello
3ef07ee5f7 Merge pull request #4447 from ryanpetrello/372-master-main-links
fixed broken UI links
2020-07-13 15:49:11 -04:00
Gabe Muniz
1edae24644 fixed broken UI links 2020-07-13 15:36:07 -04:00
softwarefactory-project-zuul[bot]
d4b0251845 Merge pull request #7615 from gamuniz/remove_broken_links
fixed broken UI links

Reviewed-by: awxbot
             https://github.com/awxbot
2020-07-13 19:31:56 +00:00
Gabe Muniz
ff90e64448 fixed broken UI links 2020-07-13 14:53:34 -04:00
Ryan Petrello
ab11d3188d refactor the job type name into a single property 2020-07-13 09:43:43 -04:00
Ryan Petrello
f51774c06e add job type to Host summary_fields.recent_jobs
see: https://github.com/ansible/awx/issues/5236
2020-07-13 09:02:04 -04:00
softwarefactory-project-zuul[bot]
83458711cd Merge pull request #7605 from wenottingham/jobberry-fields-forever
Add artifacts field of jobs to the allowed list for notifications

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-10 21:01:08 +00:00
Bill Nottingham
46734f5c10 Add artifacts field of jobs to the allowed list for notifications 2020-07-10 16:34:25 -04:00
softwarefactory-project-zuul[bot]
b8b0812e13 Merge pull request #7604 from philipsd6/enable-html-custom-login-info
Update help_text for Custom Login Info to show support for HTML

Reviewed-by: awxbot
             https://github.com/awxbot
2020-07-10 19:08:48 +00:00
Keith Grant
38e0968690 useWsInventories cleanup 2020-07-10 08:33:35 -07:00
Philip Douglass
1ec2bd7ed2 Update help_text for Custom Login Info to show support for HTML
Signed-off-by: Philip Douglass <philip.douglass@amadeus.com>
2020-07-10 10:11:02 -04:00
softwarefactory-project-zuul[bot]
d10fdda453 Merge pull request #7575 from weltamdraht/add_extra_hosts
Adding inventory variable to set "extra_hosts" in generated compose file

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-10 14:05:26 +00:00
Jake McDermott
2737cded72 Merge pull request #4442 from jakemcdermott/fix-4440
[3.7.2] Include instance_id in host edit request
2020-07-10 09:43:50 -04:00
Jake McDermott
4f2ce90137 Include instance_id in host edit request 2020-07-10 09:39:54 -04:00
softwarefactory-project-zuul[bot]
d4305f734a Merge pull request #7585 from philipsd6/enable-html-custom-login-info
Safely enable HTML in Custom Login Info

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-10 12:57:17 +00:00
weltamdraht
347529a0cf Adding inventory variable to set "extra_hosts" in generated compose file
Signed-off-by: weltamdraht <andreas.aderhold@dwd.de>
2020-07-10 13:25:07 +02:00
softwarefactory-project-zuul[bot]
e4470f1200 Merge pull request #7592 from jakemcdermott/fix-7591
Include instance_id in host edit request

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-09 21:17:18 +00:00
Keith Grant
f225df1acd add useWsInventories tests 2020-07-09 14:12:56 -07:00
nixocio
01f210e392 Set React to Strict Mode
Set React to Strict Mode.

See: https://reactjs.org/docs/strict-mode.html
2020-07-09 15:37:19 -04:00
Keith Grant
455e018099 refactor shared WS logic into useWebsocket hook 2020-07-09 10:14:03 -07:00
Philip Douglass
4c98a1cb20 Set white-space style based on customLoginInfoIsHTML
Signed-off-by: Philip Douglass <philip.douglass@amadeus.com>
2020-07-09 18:56:19 +02:00
Philip Douglass
202a68aca0 Add customLoginInfoIsHTML test
Signed-off-by: Philip Douglass <philip.douglass@amadeus.com>
2020-07-09 18:56:19 +02:00
Philip Douglass
29666bf3b6 Remove white-space: pre-wrap from loginModalNotice
Signed-off-by: Philip Douglass <philip.douglass@amadeus.com>
2020-07-09 18:56:19 +02:00
Jake McDermott
ddbe20d41b Include instance_id in host edit request 2020-07-09 11:27:45 -04:00
Ryan Petrello
140d9ae3ee Merge pull request #4429 from wenottingham/label-maker
Reintroduce label filtering
2020-07-09 09:00:57 -04:00
Keith Grant
84bea3d348 websockets: show live inventory source sync status 2020-07-08 15:20:42 -07:00
softwarefactory-project-zuul[bot]
d0ac028265 Merge pull request #7489 from nixocio/ui_issue_7326
Add edit credential types

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-08 20:53:09 +00:00
Ryan Petrello
7322e13436 add tests for clarified label permissions 2020-07-08 16:53:05 -04:00
softwarefactory-project-zuul[bot]
9065b29bd6 Merge pull request #7584 from ryanpetrello/jinja2-sandbox
use jinja2.sandbox for credential type injectors

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-08 20:53:02 +00:00
softwarefactory-project-zuul[bot]
dbdc856ed3 Merge pull request #7576 from ryanpetrello/instance-group-capabilities
show user capabilities for instance groups

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-08 20:05:55 +00:00
Ryan Petrello
1cf2f009ed prevent unsafe jinja from being saved in the first place for cred types
see: https://github.com/ansible/tower-security/issues/21
2020-07-08 15:48:58 -04:00
Ryan Petrello
2bdd83e029 use jinja2.sandbox for credential type injectors 2020-07-08 15:48:47 -04:00
softwarefactory-project-zuul[bot]
e91395d517 Merge pull request #7497 from AlexSCorey/ApplicationTokens
Adds Application Token List with delete functionality

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-08 19:42:17 +00:00
softwarefactory-project-zuul[bot]
19115a157e Merge pull request #7555 from AlexSCorey/7433-UserTokensAdd
Adds User TokenAdd Functionality

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-08 19:33:06 +00:00
Alex Corey
a9d4046ec5 Adds Application Token List with delete functionality 2020-07-08 15:13:31 -04:00
Alex Corey
bbc4522063 Adds User TokenAdd Functionality 2020-07-08 14:47:23 -04:00
softwarefactory-project-zuul[bot]
fb3271da3c Merge pull request #7578 from squidboylan/raise_sleep_timeout
Raise job length for testing job wait

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-08 18:36:42 +00:00
Caleb Boylan
56d800e851 Raise job length for testing job wait 2020-07-08 09:28:19 -07:00
Ryan Petrello
319308193c show user capabilities for instance groups 2020-07-08 09:17:55 -04:00
Keith Grant
15ae0976dd add sync status indicator to inventory list 2020-07-07 16:37:08 -07:00
softwarefactory-project-zuul[bot]
f121dc59f6 Merge pull request #7529 from nixocio/ui_issue_7471
Add stub files for Instance Groups

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-07 21:12:23 +00:00
softwarefactory-project-zuul[bot]
f050b73560 Merge pull request #7568 from jakemcdermott/fix-7534
Update to ansible/angular-scheduler#v0.4.4

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-07 19:43:00 +00:00
Jake McDermott
bd624508e3 Update to ansible/angular-scheduler#v0.4.4 2020-07-07 15:04:07 -04:00
softwarefactory-project-zuul[bot]
b9fb9389e6 Merge pull request #7537 from jakemcdermott/fix-7483
Fix custom credential field validation

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-07 19:02:53 +00:00
softwarefactory-project-zuul[bot]
bf28bdecb7 Merge pull request #7540 from keithjgrant/6618-websocket-projects-list
Add Websocket support to Projects List

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-07 19:00:10 +00:00
softwarefactory-project-zuul[bot]
23cab61408 Merge pull request #7444 from AlexSCorey/7412-OrganizationEditButton
Adds edit icon to the OrganizationTeams list 

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-07 17:32:34 +00:00
nixocio
777d44ec34 Add edit credential types
Add feature to edit credential types.

See: https://github.com/ansible/awx/issues/7326
2020-07-07 13:30:54 -04:00
Ryan Petrello
bc14e995fd Merge pull request #4434 from ryanpetrello/jinja-injector-sandbox-validation
prevent unsafe jinja from being saved in the first place for cred types
2020-07-07 12:47:15 -04:00
Ryan Petrello
61d3a765ee prevent unsafe jinja from being saved in the first place for cred types
see: https://github.com/ansible/tower-security/issues/21
2020-07-07 10:59:14 -04:00
Ryan Petrello
f943277ef0 Merge pull request #4433 from ghjm/webhook_error_detail
Error detail in webhook and credential tests
2020-07-07 10:35:21 -04:00
softwarefactory-project-zuul[bot]
9a6da9cea7 Merge pull request #7552 from ikke-t/fix-7545
Allow anyone to start awx and awx_task [#7545]

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-07 14:34:16 +00:00
Ilkka Tengvall
8b4b1f5f81 Allow anyone to start awx and awx_task [#7545] 2020-07-07 15:04:23 +03:00
Graham Mainwaring
5a96af79d4 Reduce error detail in credential lookups 2020-07-06 21:41:28 -04:00
Graham Mainwaring
b7f37d5e26 Reduce error detail in webhook notification 2020-07-06 21:17:21 -04:00
Graham Mainwaring
d14aee70a1 Don't follow redirects in credential plugins 2020-07-06 17:18:30 -04:00
Ryan Petrello
8aa11f4848 Merge pull request #4430 from ryanpetrello/jinja2-injector-sandbox
use jinja2.sandbox for credential type injectors
2020-07-06 15:21:21 -04:00
Jake McDermott
05799d9795 Avoid non-unique field name collisions
Custom credentials can have input fields named 'name', 'organization',
'description', etc. Underscore these variables to make collisions
less likely to occur.
2020-07-06 14:08:53 -04:00
Jake McDermott
ea4b435ea7 Ignore required field validation for booleans 2020-07-06 14:08:46 -04:00
Ryan Petrello
2f1b4d81e1 use jinja2.sandbox for credential type injectors 2020-07-06 13:50:33 -04:00
Bill Nottingham
a88f03b372 Reintroduce label filtering
Labels are visible if you have a role on the org they are in, or
on a job template they're attached to.
2020-07-06 13:50:00 -04:00
softwarefactory-project-zuul[bot]
dbfb1780f1 Merge pull request #7553 from jakemcdermott/fix-7530
Fix self-closing tags for jquery 3.5 compat

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-06 17:01:46 +00:00
Jake McDermott
a89eff3c1a Remove self-closing tags
jquery doesn't like self-closing tags. jquery doesn't like anything.
2020-07-06 09:34:50 -04:00
Keith Grant
2e3e1be22a add useWsProjects tests 2020-07-02 15:42:51 -07:00
softwarefactory-project-zuul[bot]
a74fbd6578 Merge pull request #7432 from elyezer/update-module-tests
Only pass either user or org on modules test

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-02 21:01:00 +00:00
Keith Grant
803ea322d6 update path to useThrottle in tests 2020-07-02 10:51:57 -07:00
Keith Grant
9657117941 add ProjectList websocket support 2020-07-02 09:29:56 -07:00
softwarefactory-project-zuul[bot]
b56c753613 Merge pull request #7525 from ryanpetrello/encrypted-keyword
don't allow users to specify $encrypted$ for encrypted credential fields

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-02 15:47:33 +00:00
softwarefactory-project-zuul[bot]
8b3dfae717 Merge pull request #7501 from ansible/jakemcdermott-no-modules-for-project-root
Delete node_modules in project root

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-02 00:36:56 +00:00
softwarefactory-project-zuul[bot]
8f50514b3d Merge pull request #7502 from nixocio/ui_lingui_prod
Add extraction of strings to be translated as part of build process

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-01 23:09:05 +00:00
Keith Grant
bdb97c173b move useThrottle to utils 2020-07-01 15:52:06 -07:00
nixocio
24f86cd0d1 Add stub files for Instance Groups
Add stub files for Instance Groups. Routing system, and screens layout.

closes: https://github.com/ansible/awx/issues/7471
2020-07-01 17:27:08 -04:00
softwarefactory-project-zuul[bot]
6e651ce275 Merge pull request #7519 from shanemcd/the-ol-copy-paste
Copy over some downstream changes

Reviewed-by: Shane McDonald <me@shanemcd.com>
             https://github.com/shanemcd
2020-07-01 20:22:51 +00:00
Alex Corey
650a97e989 Adds edit icon to the OrganizationTeams list and renames some files. 2020-07-01 16:08:41 -04:00
Ryan Petrello
1434e5812f don't allow users to specify $encrypted$ for encrypted credential fields
this keyword only has value when you _update_ an existing credential
2020-07-01 15:53:09 -04:00
Shane McDonald
e26387cdf3 Remove references to old images 2020-07-01 14:57:48 -04:00
Shane McDonald
7f81f530fa Copy over downstream change
Allows users to specify pg_username that has uppercase letters to restore succesfully
2020-07-01 14:40:38 -04:00
nixocio
fab94902a0 Add extraction of strings to be translated as part of build process
Add extraction of strings to be translated as part of build process for
ui_next.

Also, sets the source locale. See: https://lingui.js.org/tutorials/cli.html#configuring-source-locale

closes: https://github.com/ansible/awx/issues/7451
2020-07-01 12:05:37 -04:00
softwarefactory-project-zuul[bot]
e3e69b4c6b Merge pull request #7499 from nixocio/ui_translations_issues
Add strings to be translated

Reviewed-by: Kersom
             https://github.com/nixocio
2020-07-01 15:31:59 +00:00
softwarefactory-project-zuul[bot]
642803e471 Merge pull request #7484 from jakemcdermott/update-deps
Remove unused dependencies

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-01 15:14:58 +00:00
softwarefactory-project-zuul[bot]
26f2f159dd Merge pull request #7396 from AlexSCorey/7235-ApplicationsAddEdit
Adds Application edit functionality

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-07-01 15:08:23 +00:00
Jake McDermott
e962933148 Delete node_modules in project root 2020-07-01 10:51:29 -04:00
Alex Corey
169868b927 Adds edit functionality 2020-07-01 10:37:27 -04:00
nixocio
e0ebd5d46c Add strings to be translated
To identify those strings `npm run extract-strings`.
2020-07-01 10:22:45 -04:00
softwarefactory-project-zuul[bot]
d1f9f4dc86 Merge pull request #7457 from marshmalien/smart-inventory-detail
Add smart inventory detail view

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-30 21:45:17 +00:00
softwarefactory-project-zuul[bot]
5c12022529 Merge pull request #7479 from chris93111/patch-2
correction inventory endpoint tower_workflow_job_template_node.py

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-30 17:10:25 +00:00
softwarefactory-project-zuul[bot]
d8f6ea3fe8 Merge pull request #7485 from ryanpetrello/words-matter
replace certain terms with more inclusive language

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-30 17:00:58 +00:00
softwarefactory-project-zuul[bot]
719a4f8aad Merge pull request #7436 from AlexSCorey/7419-UserTokens
Adds Tokens List

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-30 16:51:56 +00:00
Jake McDermott
7bac7abd67 Fix variable names 2020-06-30 12:34:14 -04:00
Alex Corey
776ee43d90 Fixes missing name bug 2020-06-30 12:22:19 -04:00
Ryan Petrello
78229f5871 replace certain terms with more inclusive language
see: https://www.redhat.com/en/blog/making-open-source-more-inclusive-eradicating-problematic-language
2020-06-30 10:49:19 -04:00
Jake McDermott
b4198204a7 Add install step 2020-06-30 10:10:52 -04:00
Jake McDermott
86c1f4d772 Co-locate deps in file 2020-06-30 08:58:37 -04:00
Jake McDermott
e10fb71f93 Move react-scripts to dev dependencies 2020-06-30 08:58:32 -04:00
Jake McDermott
bae50e38da Remove unused dependencies 2020-06-30 08:58:27 -04:00
softwarefactory-project-zuul[bot]
66739a52d6 Merge pull request #7342 from keithjgrant/6618-job-list-ws
Jobs List websockets

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-29 21:51:14 +00:00
softwarefactory-project-zuul[bot]
f060002289 Merge pull request #7478 from ansible/jakemcdermott-fixreadme
Fix unescaped README code block

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-29 21:20:18 +00:00
chris93111
b6883ab64e Update tower_workflow_job_template_node.py
correction to lookup inventory
2020-06-29 22:58:18 +02:00
Jake McDermott
9dadb96d45 Fix unescaped README code block 2020-06-29 16:50:44 -04:00
Keith Grant
5304792949 update useWsJobs tests 2020-06-29 13:49:58 -07:00
Keith Grant
a3e0ae66ba clean up sorting order discrepancies 2020-06-29 13:49:58 -07:00
Keith Grant
9705f7bec6 sort jobs list by selection sort option 2020-06-29 13:49:58 -07:00
Keith Grant
5610309a88 fix sorting jobs by finished date 2020-06-29 13:49:58 -07:00
Keith Grant
25fe090e67 delete un-workable test for useThrottle 2020-06-29 13:49:58 -07:00
Keith Grant
a1f257bd4a fix joblist updating completed jobs lists 2020-06-29 13:49:58 -07:00
Keith Grant
638a6fdaa1 remove extra logging from JobList tests 2020-06-29 13:49:58 -07:00
Keith Grant
b4a6749699 refactor getJobsById into useWsJobs hook 2020-06-29 13:49:58 -07:00
Keith Grant
e50576c820 failed attempt at useThrottle tests 2020-06-29 13:49:58 -07:00
Keith Grant
0bedd6fbd8 mock websockets; test useWsJobs 2020-06-29 13:49:58 -07:00
Keith Grant
48977e50df change jobs debounce to throttle; prevent duplicate rows 2020-06-29 13:49:58 -07:00
Keith Grant
7aa8495d1a debounce fetching of individual jobs 2020-06-29 13:49:58 -07:00
Keith Grant
58b954df3e fetch individual jobs based on websocket messages 2020-06-29 13:49:58 -07:00
Keith Grant
38079b2ad5 don’t add still running jobs to some jobs lists 2020-06-29 13:49:58 -07:00
Keith Grant
b055d34139 update jobs in list based on websockets 2020-06-29 13:49:58 -07:00
Keith Grant
f2641de260 rough out jobs list websockets 2020-06-29 13:49:58 -07:00
Keith Grant
aa12e323b4 ignore .env.local file 2020-06-29 13:49:58 -07:00
softwarefactory-project-zuul[bot]
65a8a656f7 Merge pull request #7469 from jakemcdermott/fix-7454
Use a proxy config that works

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-29 20:21:26 +00:00
Alex Corey
73bb539b16 Adds Tokens List 2020-06-29 16:17:10 -04:00
softwarefactory-project-zuul[bot]
6e99b1cf85 Merge pull request #7452 from nixocio/ui_issue_7430
Add Crendential Type Details

Reviewed-by: Daniel Sami
             https://github.com/dsesami
2020-06-29 20:06:05 +00:00
Jake McDermott
bde1ff1187 Use a proxy config that works 2020-06-29 15:51:51 -04:00
nixocio
bd660254a5 Add Crendential Type Details
Add credential type Details

See: https://github.com/ansible/awx/issues/7430
2020-06-29 15:02:38 -04:00
softwarefactory-project-zuul[bot]
879ab50a12 Merge pull request #7426 from nixocio/ui_issue_7325
Add feature to add Credential Type

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-29 18:54:27 +00:00
nixocio
ad10f3581e Add feature to add Credential Type
Add feature to add Credential Type.

See: https://github.com/ansible/awx/issues/7325
2020-06-29 13:39:57 -04:00
Marliana Lara
eec2177315 Add unit tests that check activity stream is hidden appropriately 2020-06-29 13:20:44 -04:00
softwarefactory-project-zuul[bot]
f5d38f57d4 Merge pull request #7375 from vjanssens/5929-consistent-subforms-in-job-template-forms
Use consistent layout for subforms in job/template forms

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-29 17:15:23 +00:00
Vadiem Janssens
3f33f1c97d Fix failing test
Signed-off-by: Vadiem Janssens <info@vadiemjanssens.nl>
2020-06-29 12:08:48 -04:00
Vadiem Janssens
f9039703ee Remove enableWebhooks conditional in WebhookSubForm
Signed-off-by: Vadiem Janssens <info@vadiemjanssens.nl>
2020-06-29 12:08:48 -04:00
Vadiem Janssens
be33627755 Remove webhook_key and webhook_url from JT form payload
Signed-off-by: Vadiem Janssens <info@vadiemjanssens.nl>
2020-06-29 12:08:48 -04:00
Vadiem Janssens
c9cfaf65a0 Add headingLevels to Title, minor improvements
Signed-off-by: Vadiem Janssens <info@vadiemjanssens.nl>
2020-06-29 12:08:48 -04:00
Vadiem Janssens
12b87fca8c Use consistent layout for subforms in job/template forms
Signed-off-by: Vadiem Janssens <info@vadiemjanssens.nl>
2020-06-29 12:08:48 -04:00
Marliana Lara
b5bbfaab11 Add smart inv detail 2020-06-29 11:30:10 -04:00
softwarefactory-project-zuul[bot]
8ea31d8cdd Merge pull request #7462 from 90er/patch-2
Update ISSUES.md

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-29 13:20:02 +00:00
softwarefactory-project-zuul[bot]
5ae7aa7503 Merge pull request #7461 from 90er/patch-1
Update INSTALL.md

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-29 13:18:45 +00:00
90er
c89277358f Update ISSUES.md
Fixed typo
2020-06-29 09:16:06 +02:00
90er
7e2b3684e2 Update INSTALL.md
Fix typo
2020-06-29 09:11:45 +02:00
softwarefactory-project-zuul[bot]
c7d9d941e3 Merge pull request #7119 from thedoubl3j/hostnogroup
added change so that groups and host names cannot share the same name

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-26 20:19:53 +00:00
softwarefactory-project-zuul[bot]
5b9c19df8f Merge pull request #7115 from nixocio/ui_next_integration
UI next integration

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-26 19:42:30 +00:00
Jake Jackson
30757f8289 moved logic to the validate function and fixed tests accordingly 2020-06-26 15:04:48 -04:00
Jake Jackson
606d4e0ea2 added change so that groups and host names cannot share the same name in the same inventory. added tests to validate 2020-06-25 11:25:21 -04:00
Jake McDermott
1df91eece1 Add devel make targets for ui_next 2020-06-25 10:22:07 -04:00
Jake McDermott
01b8087cb3 Align prod and dev routing 2020-06-25 08:56:21 -04:00
nixocio
aef382862c Update NavItem to link to new basename
Update NavItem to link to the new basename, `next`. Thus avoiding to
redirec to the old ui.

See: https://www.patternfly.org/v4/documentation/react/components/nav
2020-06-25 08:56:19 -04:00
Jake McDermott
41d8edf94a Align imports to django collectstatic locations
Co-authored-by: nixocio <nixocio@gmail.com>
2020-06-25 08:56:11 -04:00
Jake McDermott
ddadf332cc Create static dir during bootstrap
Co-authored-by: nixocio <nixocio@gmail.com>
2020-06-25 08:56:07 -04:00
Jake McDermott
12a22d2442 Add basic django app and file serving for ui_next 2020-06-25 08:55:56 -04:00
softwarefactory-project-zuul[bot]
fa53cdf329 Merge pull request #7431 from ryanpetrello/bottleneck
add a tool for discovering which tasks/hosts are slow for a JT 

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-24 21:32:40 +00:00
softwarefactory-project-zuul[bot]
5445a3b567 Merge pull request #7308 from AlanCoding/in_place_everything
Allow for SCM installs of the AWX collection

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-24 19:41:43 +00:00
softwarefactory-project-zuul[bot]
2e37ffdb15 Merge pull request #6690 from john-westcott-iv/modify_tower_cred_type_for_token
Modifying tower credential type to include an oauth otken

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-24 16:55:25 +00:00
AlanCoding
3b5640aca3 fix test 2020-06-24 10:41:41 -04:00
softwarefactory-project-zuul[bot]
038688ca48 Merge pull request #7355 from AlexSCorey/ApplicationDetails
Adds application details view

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-24 14:37:21 +00:00
Elyézer Rezende
fb5d876b9b Only pass either user or org on modules test 2020-06-24 10:29:19 -04:00
Ryan Petrello
a62047809f update awx-manage bottleneck's help text 2020-06-24 10:25:09 -04:00
Ryan Petrello
b1fcc0578c default awx-manage bottleneck --threshold to 30s 2020-06-24 10:23:01 -04:00
Ryan Petrello
dd42f6351b minor refactoring of awx-manage bottleneck 2020-06-24 10:19:26 -04:00
Alex Corey
fad4b3ca5a Adds application details view 2020-06-24 10:00:12 -04:00
Ryan Petrello
ce65f994dc refactor some timedelta formatting in awx-manage bottleneck 2020-06-24 09:56:23 -04:00
Ryan Petrello
5532760ccf respect --no-color in awx-manage bottleneck 2020-06-24 09:52:30 -04:00
Ryan Petrello
21ea7eb5dc add the name of the task to awx-manage bottleneck output 2020-06-24 09:44:39 -04:00
Ryan Petrello
b01ac1bfa6 add support to the bottleneck script for configuring history size 2020-06-24 09:22:53 -04:00
John Westcott IV
f091de438e Adding help text 2020-06-24 09:14:30 -04:00
John Westcott IV
8a25f385e4 Modifying tower credential type to include an oauth otken 2020-06-24 09:14:30 -04:00
Ryan Petrello
180ed4cd3d add a tool for discovering which tasks/hosts are slow for a JT
this tool looks at the most recent jobs for a specific job template and
attempts to discover the _slowest_ tasks and hosts

$ awx-manage bottleneck --template N
$ awx-manage bottleneck --template N --threshold 1 --ignore yum
$ awx-manage bottleneck --template N --ignore pause --ignore yum
2020-06-24 08:59:48 -04:00
softwarefactory-project-zuul[bot]
c1bbeadf8d Merge pull request #7427 from ryanpetrello/awxkit-install
update instructions and metadata for awxkit/cli installs

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-23 22:23:56 +00:00
Ryan Petrello
b6c210ee97 update instructions and metadata for awxkit/cli installs 2020-06-23 17:53:14 -04:00
softwarefactory-project-zuul[bot]
f4514873cd Merge pull request #7425 from ghjm/no_traceback_on_keyboardinterrupt
Don't traceback on KeyboardInterrupt

Reviewed-by: awxbot
             https://github.com/awxbot
2020-06-23 20:45:19 +00:00
softwarefactory-project-zuul[bot]
2c59e83beb Merge pull request #7250 from nixocio/ui_issue_6810
Remove style overrides from Lookup component

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-23 20:39:58 +00:00
Graham Mainwaring
29da0abfc1 Don't traceback on KeyboardInterrupt 2020-06-23 16:14:02 -04:00
nixocio
14b2bd3445 Remove style overrides from Lookup component
Remove style overrides from Lookup component. Also, update related
tests.

closes: https://github.com/ansible/awx/issues/6810
2020-06-23 16:09:56 -04:00
softwarefactory-project-zuul[bot]
77ecb7b7d5 Merge pull request #7424 from ryanpetrello/changelog-tweak
minor CHANGELOG verbiage tweak

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-23 20:08:13 +00:00
Ryan Petrello
a9938c0e64 minor CHANGELOG verbiage tweak 2020-06-23 15:33:22 -04:00
softwarefactory-project-zuul[bot]
69589821ce Merge pull request #7420 from elyezer/update-credential-creation
Update awxkit credential creation

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-23 18:31:50 +00:00
softwarefactory-project-zuul[bot]
5ee865b051 Merge pull request #7416 from jakemcdermott/fix-cred-user-team-org-save
Don't send cred user with org

Reviewed-by: Elyézer Rezende
             https://github.com/elyezer
2020-06-23 16:49:21 +00:00
Elyézer Rezende
e80942f6cd Update awxkit credential creation
Does not have an organization by default. Let `create_payload` decide if
it should be automatically created or not. This will avoid having more
than one owner when either user or team is passed to `create`.
2020-06-23 12:32:51 -04:00
softwarefactory-project-zuul[bot]
d96cde91a3 Merge pull request #7418 from ryanpetrello/rsyslog-file-perm
properly write rsyslog configuration as 0640

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-23 16:01:26 +00:00
softwarefactory-project-zuul[bot]
0aa23a7d63 Merge pull request #7379 from AlanCoding/release_13
Bump AWX version, after notable inventory deprecation

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-23 15:55:57 +00:00
Jake McDermott
35e5c7f309 Don't send cred user with org 2020-06-23 11:38:08 -04:00
Ryan Petrello
8174516d3b properly write rsyslog configuration as 0640
see: https://github.com/ansible/tower/issues/4383
2020-06-23 11:25:39 -04:00
Ryan Petrello
d016de8103 adding a few CHANGELOG items 2020-06-23 11:24:22 -04:00
Jeff Bradberry
d8b9d48313 Add a note about import/export 2020-06-23 10:09:32 -04:00
softwarefactory-project-zuul[bot]
a669db989c Merge pull request #7305 from jlmitch5/pfv4upgrade
patternfly v4 upgrade

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-23 14:07:07 +00:00
John Mitchell
07ff3139d6 final fixes to tests and linting for pf v4 react upgrade 2020-06-23 09:37:50 -04:00
Alex Corey
88a38e30c3 Fixes some failing or skipped tests 2020-06-23 09:37:50 -04:00
John Mitchell
28e0ee8b7d fix a few tests with issues due to pf v4 react upgrade 2020-06-23 09:37:33 -04:00
John Mitchell
92937d1384 make divider show up between breadcrumbs 2020-06-23 09:37:20 -04:00
John Mitchell
9aab085b77 pin pf react core prerelease version to exact in package.json 2020-06-23 09:37:08 -04:00
John Mitchell
29bc6c8b48 make all detail view tabs full width - remove card close button pattern and move to back to resource pattern 2020-06-23 09:36:54 -04:00
John Mitchell
f161617755 add headingLevel prop to pf title components 2020-06-23 09:36:44 -04:00
John Mitchell
bb1687642c add in pre-release pf dep to fix issue with tests failing and fix the tests 2020-06-23 09:36:32 -04:00
John Mitchell
9f625d61f5 remove unused pf react token dependency 2020-06-23 09:36:20 -04:00
John Mitchell
173d058d88 make tabs of the project detail view card full width 2020-06-23 09:36:05 -04:00
John Mitchell
a5576d2ae9 fix issue where searchbar was always the mobile version at all widths 2020-06-23 09:35:53 -04:00
John Mitchell
957c0b31bf initial round of jest fixes post v4 update, more aria-labels for modals, more i18nHash filtering to rid warnings, fix of malformed ToolbarContent import, update snapshots 2020-06-23 09:35:36 -04:00
John Mitchell
826b03b78e make prettier adjustments to things the pf v4 codemod tool broke 2020-06-23 09:35:21 -04:00
John Mitchell
781869a436 adjust styled components for data toolbar overrides with new pf v4 names 2020-06-23 09:35:04 -04:00
John Mitchell
25916d983e update page header toolbar component names to new pf v4 names 2020-06-23 09:34:49 -04:00
John Mitchell
c762545c47 add aria label prop for alert modal pf component 2020-06-23 09:34:28 -04:00
John Mitchell
e49a99e0f6 after running pf code mod tool to auto update files to conform to v4 and a few manual tweaks 2020-06-23 09:34:04 -04:00
John Mitchell
475b733890 first pass of tweaks needed to compile pf v4 branch 2020-06-23 09:33:39 -04:00
John Mitchell
2a922861c3 update pf deps to v4 2020-06-23 09:33:25 -04:00
softwarefactory-project-zuul[bot]
2385e47ac3 Merge pull request #7392 from jladdjr/unpin_inventory_collections
unpin collections used for inventory plugins

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-22 16:44:05 +00:00
softwarefactory-project-zuul[bot]
729949e0d0 Merge pull request #7381 from elyezer/credentials-serializers-validation
Enforce single owner field when serializing creds

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-22 12:57:11 +00:00
Elyézer Rezende
37218e1695 Enforce single owner field when serializing creds
The CredentialSerializerCreate expect a single owner field according to
its help text but was not validating that. This makes it validate for a
single owner field when creating a Credential.
2020-06-21 11:31:35 -04:00
softwarefactory-project-zuul[bot]
e4eef82a39 Merge pull request #7369 from nixocio/ui_issue_7324
Add Credential Type List and Delete

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-19 19:51:50 +00:00
softwarefactory-project-zuul[bot]
bdd5efc2a9 Merge pull request #7390 from rooftopcellist/i18n_awx_translations_es_nl_6-19
UI translation strings for AWX 12.0.0+ for es and nl

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-19 19:47:02 +00:00
Christian Adams
f24b15dc2e Merge pull request #4415 from ansible/i18n_release_3.7.1_translations
UI translation strings for release_3.7.1 branch for es and nl
2020-06-19 15:25:33 -04:00
softwarefactory-project-zuul[bot]
a0413b7e0b Merge pull request #6125 from jbradberry/import-export
Import export

Reviewed-by: Jeff Bradberry
             https://github.com/jbradberry
2020-06-19 18:46:52 +00:00
Jim Ladd
71cfeda08f unpin collections used for inventory plugins
* unpins collections in requirements/collections_requirements.yml
2020-06-19 09:33:51 -07:00
softwarefactory-project-zuul[bot]
c5addd7c67 Merge pull request #7341 from AlexSCorey/7235-ApplicationsAddEdit
7235 applications add

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-19 15:36:04 +00:00
ansible-translation-bot
654675621c UI translation strings for AWX 12.0.0+ for es and nl 2020-06-19 10:41:53 -04:00
ansible-translation-bot
af199dff7a UI translation strings for release_3.7.1 branch for es and nl 2020-06-19 10:36:21 -04:00
nixocio
5e5aba59b0 Add Credential Type List and Delete
Add `Credential Type` List and Delete features.

See: https://github.com/ansible/awx/issues/7324
Also:https://github.com/ansible/awx/issues/7327
2020-06-19 09:50:59 -04:00
AlanCoding
0dbaf632dc Documentation updates 2020-06-19 09:49:37 -04:00
softwarefactory-project-zuul[bot]
89b087ffb6 Merge pull request #7389 from ryanpetrello/tmux-dev
move tmux to dev dependencies

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-19 13:46:40 +00:00
Alex Corey
ab1e991e01 adds application add functionality and applicatiion form 2020-06-19 09:38:56 -04:00
AlanCoding
a7fe5e1dd2 Fix yamllint error and sync version with module_utils 2020-06-19 09:08:58 -04:00
AlanCoding
96583e9e6b Make version recognizable as pre-release 2020-06-19 09:08:58 -04:00
AlanCoding
73ee11725d Add copy note to galaxy file 2020-06-19 09:08:58 -04:00
AlanCoding
721ed516a4 Separate folder for templating collection stuff 2020-06-19 09:08:57 -04:00
AlanCoding
4848f1298a Include a default galaxy.yml file 2020-06-19 09:08:57 -04:00
John Westcott IV
6c6c1e8488 Adding templating of README.md file for Tower vs AWX collections 2020-06-19 09:08:54 -04:00
Ryan Petrello
31ab386591 move tmux to dev dependencies 2020-06-19 08:47:11 -04:00
Jim Ladd
99b3997084 Merge pull request #4412 from jladdjr/foreman_backwards_compat_for_ssl_verify_3.7.2
add backwards support for ssl_verify in foreman
2020-06-18 18:25:53 -07:00
Jim Ladd
35fe255455 add backwards support for ssl_verify in foreman
* plugin changed option name from
  ssl_verify to validate_cert
2020-06-18 17:02:48 -07:00
softwarefactory-project-zuul[bot]
6682dcbc7c Merge pull request #7357 from mabashian/awx-dep-upgrades-June-15
UI dependency upgrades

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-18 22:03:19 +00:00
softwarefactory-project-zuul[bot]
defa334bd9 Merge pull request #7358 from rebeccahhh/devel
removing memchache mentions in comments

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-18 20:20:15 +00:00
softwarefactory-project-zuul[bot]
70f8a02a5e Merge pull request #7383 from ryanpetrello/tox-py2-bye-bye
awxkit dropped py2 support awhile ago; stop running tests in py2

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-18 20:14:32 +00:00
softwarefactory-project-zuul[bot]
3834125d09 Merge pull request #7378 from AlanCoding/minor_test_tweaks
Fix some minor issues in the AWX collection tests

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-18 20:00:35 +00:00
Rebeccah
118e1b8df1 removing memchache mentions in comments
remove memcached folder as it is no longer needed, also address a couple grammatical errors
2020-06-18 15:52:59 -04:00
Jeff Bradberry
393369adec First cut at examples of the import and export commands 2020-06-18 15:32:49 -04:00
Ryan Petrello
e732d03b20 awxkit dropped py2 support awhile ago; stop running tests in py2 2020-06-18 15:31:35 -04:00
AlanCoding
f76c57b1ec Bump AWX version, after notable inventory deprecation 2020-06-18 15:10:10 -04:00
AlanCoding
8fc3377fa6 Minor test fixes 2020-06-18 13:46:28 -04:00
Alan Rominger
3cf4f4729d [DO NOT PORT to AWX] Pin dev requirements (#4413) 2020-06-18 09:22:04 -04:00
softwarefactory-project-zuul[bot]
1321d298ee Merge pull request #6911 from AlanCoding/rm_all_scripts
Remove vendored inventory scripts

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-18 00:08:03 +00:00
softwarefactory-project-zuul[bot]
d6b9077f72 Merge pull request #7351 from nixocio/ui_add_docs_hooks
Add section related to custom hooks

Reviewed-by: Kersom
             https://github.com/nixocio
2020-06-17 21:31:32 +00:00
softwarefactory-project-zuul[bot]
0e274c3038 Merge pull request #7372 from shanemcd/support-wait-for-first-consumer
Support PVCs that were created w/ WaitForFirstConsumer

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-17 21:23:26 +00:00
Shane McDonald
43bf2989af Support PVCs that were created w/ WaitForFirstConsumer 2020-06-17 16:40:33 -04:00
nixocio
2e33c69e9c Add section related to custom hooks
Add section related to custom hooks, and their usage.
2020-06-17 16:39:23 -04:00
softwarefactory-project-zuul[bot]
9e118b8a0c Merge pull request #7360 from jladdjr/foreman_backwards_compat_for_ssl_verify
[foreman] add backwards support for ssl_verify in foreman plugin

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-17 19:46:53 +00:00
Jim Ladd
91cd5b359a add backwards support for ssl_verify in foreman
* plugin changed option name from
  ssl_verify to validate_cert
2020-06-17 12:18:31 -07:00
softwarefactory-project-zuul[bot]
2df67c4dc8 Merge pull request #7287 from marshmalien/6899-inv-src-subform
Hook up all inventory source subforms

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-17 18:44:30 +00:00
AlanCoding
e784a7c0a3 bump migrations 2020-06-17 14:25:16 -04:00
AlanCoding
401c5671c8 Remove things from tests specific to inventory scripts 2020-06-17 14:25:16 -04:00
AlanCoding
3c8c1858d4 Fix migration through manual testing 2020-06-17 14:25:15 -04:00
AlanCoding
b6a4c34b7a bump migration number 2020-06-17 14:25:15 -04:00
AlanCoding
71cf3198d8 Add data migration to convert cloudforms scripts to SCM 2020-06-17 14:25:15 -04:00
AlanCoding
b0ff763a0b flake8 fixes 2020-06-17 14:25:15 -04:00
AlanCoding
8f56042dcc rename migration 2020-06-17 14:25:15 -04:00
AlanCoding
ec3c4de1f7 Fix openstack and logic and update some tests 2020-06-17 14:25:14 -04:00
AlanCoding
b2bdb0c81d lose cloudforms as inventory source option 2020-06-17 14:25:14 -04:00
AlanCoding
bedb1f364d Remove inventory scripts 2020-06-17 14:25:11 -04:00
Marliana Lara
6ed611c27c Add inventory source subforms 2020-06-17 14:16:03 -04:00
softwarefactory-project-zuul[bot]
97dbfee162 Merge pull request #7359 from shanemcd/no-host-pg-port
Remove local port binding for postgres in dev env

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-17 18:10:35 +00:00
Shane McDonald
51b0c51605 Remove local port binding for postgres in dev env
I dont think we need to bind this port at the host level. This will allow us to
run the galaxy_ng dev tooling side-by-side with AWX.
2020-06-17 13:34:55 -04:00
softwarefactory-project-zuul[bot]
5ca66ac806 Merge pull request #7317 from shanemcd/redis-root-group
Force containers in k8s to run under root group

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-16 23:41:42 +00:00
Ryan Petrello
6376395c68 Merge pull request #4409 from ryanpetrello/371-host-summary-regression
fix a regression in how job host summaries are generated
2020-06-16 17:04:22 -04:00
softwarefactory-project-zuul[bot]
90bcb6d145 Merge pull request #7258 from mabashian/dynamic-credential-form
Dynamically render credential subform fields

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-16 20:43:53 +00:00
mabashian
3c27e1ca12 Revert "Gets rid of custom form reset function in favor of formik's resetForm in credential form"
This reverts commit 26fa94dc6f1f1c1306c32ba571eb2899e516b0a0.
2020-06-16 16:16:30 -04:00
mabashian
8aa6e9466f Fixes credential type dropdown item sort issue where Vault appeared after VMware 2020-06-16 16:16:30 -04:00
mabashian
9180334908 Adds a bit more unit test coverage around credential add/edit save functionality, making sure that we're making the correct calls with the correct payloads. 2020-06-16 16:16:30 -04:00
mabashian
9d63b679f9 Gets rid of custom form reset function in favor of formik's resetForm in credential form 2020-06-16 16:16:30 -04:00
mabashian
d5578d9744 Only render subform if cred type inputs.fields exists. This fixes a bug where an error was thrown when a custom credential type without an input configuration existed in the database. 2020-06-16 16:16:30 -04:00
mabashian
7fefea31c0 Removes nested ternary in CredentialField validate param by moving logic out to a function and making it a little more readable. 2020-06-16 16:16:30 -04:00
mabashian
b5ce1fe2f3 Changes CredentialSubForm to TypeInputsSubForm 2020-06-16 16:16:30 -04:00
mabashian
3dfc9328a9 Dynamically render credential subform fields based on options responses for each credential type 2020-06-16 16:16:30 -04:00
softwarefactory-project-zuul[bot]
dba55fec47 Merge pull request #7337 from rooftopcellist/i18n_awx_translations_6-15
UI translation strings for release_3.7.1 branch

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-16 20:16:02 +00:00
ansible-translation-bot
93498b2d7f UI translation strings for release_3.7.1 branch 2020-06-16 15:47:24 -04:00
mabashian
781b675837 Upgrade jquery to 3.5.1 2020-06-16 14:44:17 -04:00
mabashian
5e3ce7b7ea Update ngToast to most recent version 2020-06-16 14:44:16 -04:00
mabashian
34dd034f7c Upgrades to the latest angular-tz-extensions 2020-06-16 14:44:16 -04:00
mabashian
d5fcf733f0 Upgrades to the latest angular-codemirror 2020-06-16 14:44:16 -04:00
mabashian
8d63ebf0e0 Upgrade to the latest angular-scheduler 2020-06-16 14:44:16 -04:00
softwarefactory-project-zuul[bot]
de5f996358 Merge pull request #7352 from ryanpetrello/host-summary-optimization-bug
fix a regression in how job host summaries are generated

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-16 17:33:01 +00:00
softwarefactory-project-zuul[bot]
a54081de2e Merge pull request #7328 from Tompage1994/credential_input_source
Add tower_credential_input_source to awx_collection

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-16 17:27:45 +00:00
Ryan Petrello
eaadbe9730 fix a regression in how job host summaries are generated
this change fixes a bug introduced in the optimization at https://github.com/ansible/awx/pull/7352

1. Create inventory with multiple hosts
2. Run a playbook with a limit to match only one host
3. Run job, verify that it only acts on the one host
4. Go to inventory host list and see that all the hosts have last_job updated to point to the job that only acted on one host.
2020-06-16 13:18:14 -04:00
Ryan Petrello
70afbe0b8d fix a regression in how job host summaries are generated
this change fixes a bug introduced in the optimization at https://github.com/ansible/awx/pull/7352

1. Create inventory with multiple hosts
2. Run a playbook with a limit to match only one host
3. Run job, verify that it only acts on the one host
4. Go to inventory host list and see that all the hosts have last_job updated to point to the job that only acted on one host.
2020-06-16 13:06:22 -04:00
Tom Page
7bf1d4946e Fixed final lint issues
Signed-off-by: Tom Page <tpage@redhat.com>
2020-06-16 17:14:52 +01:00
Tom Page
fd18194b1b Fix pylint errors 2020-06-16 15:57:19 +01:00
Tom Page
73a39c1e55 Cleanup of debug and change test fixtures
Signed-off-by: Tom Page <tpage@redhat.com>
2020-06-16 14:30:28 +01:00
softwarefactory-project-zuul[bot]
415c39aabc Merge pull request #6938 from neb14/journald_logging_option
This allows for using different docker logging drivers

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-16 13:30:07 +00:00
Tom Page
1c78190385 Change cred_input_src to remove src_cred as primarykey
Signed-off-by: Tom Page <tpage@redhat.com>
2020-06-16 13:56:49 +01:00
Ben Schmitz
ea175ac5b6 Allows for docker logger support 2020-06-16 08:29:43 -04:00
softwarefactory-project-zuul[bot]
5527fc9115 Merge pull request #7343 from shanemcd/struggles
Make tests pass with current versions of things

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-16 12:24:39 +00:00
Tom Page
4c55685656 Add tower_credential_input_source to awx_collection
Signed-off-by: Tom Page <tpage@redhat.com>
2020-06-16 13:17:11 +01:00
Shane McDonald
de82c613fc Make tests pass with current versions of things 2020-06-15 23:13:44 -04:00
Christian Adams
186c54cb14 Merge pull request #4404 from ansible/i18n_release_3.7.1_translations
UI translation strings for release_3.7.1 branch
2020-06-15 17:10:10 -04:00
ansible-translation-bot
40eb3e43f8 UI translation strings for release_3.7.1 branch 2020-06-12 17:03:37 +00:00
softwarefactory-project-zuul[bot]
241931309e Merge pull request #7321 from jladdjr/instance_id_fallback
Instance id fallback

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-11 21:49:39 +00:00
softwarefactory-project-zuul[bot]
26083bdef6 Merge pull request #7304 from AlexSCorey/7233-ApplicationsList
Adds lists and list items and delete functionality

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-11 19:47:56 +00:00
Shane McDonald
e035eea95a Merge pull request #7188 from mo-saeed/devel
Reshape security context for AWX containers
2020-06-11 15:26:58 -04:00
Jim Ladd
e1f7a7619f Merge pull request #4398 from jladdjr/instance_id_fallback
Instance id fallback
2020-06-11 12:19:23 -07:00
Alex Corey
f211c70e69 fixes qs namespace, and location of proptypes 2020-06-11 15:16:14 -04:00
Alex Corey
08d9341704 Adds lists and list items and delete functionality 2020-06-11 15:16:14 -04:00
Jeff Bradberry
0fda9d2c56 Continue after failures to grant roles 2020-06-11 13:19:24 -04:00
Jim Ladd
43ab6acb84 revert EC2_INSTANCE_ID_VAR 2020-06-11 09:53:50 -07:00
Jim Ladd
8eee0d40dd revert EC2_INSTANCE_ID_VAR 2020-06-11 09:52:54 -07:00
Ryan Petrello
fe221c2473 Merge pull request #4399 from shanemcd/kube-queues
Add queue / instance group registration to heartbeat for k8s installs
2020-06-11 09:00:16 -04:00
softwarefactory-project-zuul[bot]
cb1a3e4199 Merge pull request #7312 from nixocio/ui_issue_7301
Add stub files for Credential Types

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-10 21:24:17 +00:00
Jim Ladd
3b61b82616 wrap --instance-id-var in quotes 2020-06-10 14:06:57 -07:00
Jim Ladd
9eaee801a7 update VMWARE_INSTANCE_ID_VAR
* Favor instanceUuid
* .. but fall back to instanceuuid if necessary
2020-06-10 14:06:54 -07:00
AlanCoding
1970fac989 Allow use of fallback instance_ids 2020-06-10 14:06:50 -07:00
softwarefactory-project-zuul[bot]
28164ad4cc Merge pull request #7319 from wenottingham/unused-perhaps
Remove active_counts_by_org

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-10 21:05:50 +00:00
Jim Ladd
9514adaf3a wrap --instance-id-var in quotes 2020-06-10 13:55:54 -07:00
Shane McDonald
85deb8711c Add queue / instance group registration to heartbeat for k8s installs
There is some history here.

https://github.com/ansible/awx/pull/7190 <- This PR was an attempt at fixing a
bug notting ran into where some jobs on k8s installs would get stuck in Waiting
forever.

The PR mentioned above introduced a bug where there are no instance groups on a
fresh k8s-based install. This is because this process currently happens in the
launch scripts, before the database is up.

With this patch, queue / instance group registration happens in the heartbeat,
right after auto-registering the instance.
2020-06-10 16:55:27 -04:00
nixocio
8eecfeaab4 Add stub files for Credential Types
Add stub files for Credential Types. Routing system, and screens layout.

closes: https://github.com/ansible/awx/issues/7301
2020-06-10 16:44:10 -04:00
Jim Ladd
17eaeb28a8 update VMWARE_INSTANCE_ID_VAR
* Favor instanceUuid
* .. but fall back to instanceuuid if necessary
2020-06-10 13:30:05 -07:00
Jeff Bradberry
bf6e8f8e83 Prioritize membership roles
since certain role grants will not be accepted by the api unless the user or team is part of the correct organization.
2020-06-10 15:27:15 -04:00
Bill Nottingham
a33c303765 Remove active_counts_by_org
I was trying to parse the difference between this and the
(directly above) org_active_count from the comment, and then I
grepped and realized this function appears unused.
2020-06-10 15:25:14 -04:00
Shane McDonald
423df6618d Force containers in k8s to run under root group
Normally containers belong to the 'root' group, but for some reason the
downstream red hat scl redis image only belongs to the 'redis' group by default. This fixes that.
2020-06-10 13:40:15 -04:00
softwarefactory-project-zuul[bot]
3ae4417af4 Merge pull request #7314 from nixocio/ui_fix_clipboard_error
Add required variables to ClipboardCopyButton test

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-10 16:43:28 +00:00
softwarefactory-project-zuul[bot]
2582036fc8 Merge pull request #7313 from kdelee/update_k8s_inv_docs
remove some references to memcached

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-10 16:33:08 +00:00
softwarefactory-project-zuul[bot]
b8e1f1b882 Merge pull request #7316 from ryanpetrello/tmi
remove a highly verbose log lines

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-10 16:23:30 +00:00
softwarefactory-project-zuul[bot]
dc3701b3d6 Merge pull request #7315 from ryanpetrello/redis-chmod-docker
set proper permissions for the redis socket

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-10 16:06:25 +00:00
softwarefactory-project-zuul[bot]
3818fb9b69 Merge pull request #7306 from AlexSCorey/6863-CopyProjectsAndInventories
Removes extra spacing from timeOfDay function

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-10 16:06:20 +00:00
Ryan Petrello
64ebfa75a8 remove a highly verbose log lines 2020-06-10 11:50:13 -04:00
Ryan Petrello
e81ccf10df set proper permissions for the redis socket 2020-06-10 11:36:09 -04:00
nixocio
9797c8e3c2 Add required variables to ClipboardCopyButton test
Add required variables to `ClipboardCopyButton` test to remove warnings
during test execution.
2020-06-10 11:25:39 -04:00
Elijah DeLee
a83a9c9723 remove dep on python-memcached 2020-06-10 11:18:48 -04:00
Elijah DeLee
6777b82d8e remove reference to memcached in k8s inv
we don't have memcached container anymore
2020-06-10 11:08:49 -04:00
softwarefactory-project-zuul[bot]
753b8c287c Merge pull request #7221 from AlexSCorey/6589-InventorySourceSchedules
Adds Inventory Sources Schedules

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-10 15:01:54 +00:00
mosad
eb5970b4a1 merge and resolve conflicts 2020-06-10 16:01:17 +02:00
Ryan Petrello
7c1959010a Merge pull request #4396 from jladdjr/foreman_script_should_not_use_reports_3.7.1
disable reports option for foreman (release_3.7.1)
2020-06-10 08:30:14 -04:00
AlanCoding
1dd9772e41 Allow use of fallback instance_ids 2020-06-09 22:51:42 -07:00
Jim Ladd
18d09f892d disable reports option for foreman 2020-06-09 22:37:35 -07:00
Jake McDermott
ee6f03515e Merge pull request #4340 from jakemcdermott/fix-4336
[3.7.1] Enable management job notications for admins
2020-06-09 16:27:07 -04:00
Jake McDermott
16f81154c0 Merge pull request #4338 from mabashian/4334-backport-v2
[3.7.1] Fixes bug where all_parents_must_converge was not being set for new or existing approval nodes
2020-06-09 15:36:40 -04:00
Jeff Bradberry
19b7c91486 Return the changed status of imports 2020-06-09 15:00:06 -04:00
Jeff Bradberry
aeeed4d371 Add more logging 2020-06-09 15:00:06 -04:00
Jeff Bradberry
1f7c1af64e Fix WFJT nodes endpoint to return node pages when posting
not the node list page.
2020-06-09 15:00:06 -04:00
Jeff Bradberry
65fc2db42f Recursively queue up related assets to be created and/or assigned 2020-06-09 14:59:49 -04:00
Alex Corey
82010e4ba2 removes extra spacing 2020-06-09 14:59:36 -04:00
Ryan Petrello
1d7e2a82c6 Merge pull request #4393 from kdelee/backport_dont_block_log_send
[3.7.1] don't block on log aggregator socket.send() calls
2020-06-09 14:49:43 -04:00
softwarefactory-project-zuul[bot]
442d539ff8 Merge pull request #7176 from nixocio/ui_issue_5819
Add support Prompt on Launch for Workflow Job Template

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-09 18:37:59 +00:00
Jeff Bradberry
c8288af87f Make sure we have a cached version of existing objects
even if it isn't an object being directly imported.  We might need it
for relations of things that are being imported.
2020-06-09 13:54:05 -04:00
Jeff Bradberry
76fb605dcd Deal with exports involving foreign keys where you don't have permission 2020-06-09 13:54:05 -04:00
Jeff Bradberry
a531b85b31 Redo waiting until Project updates are complete 2020-06-09 13:54:05 -04:00
Jeff Bradberry
86afa5cf42 Make more use of the PageCache for imports 2020-06-09 13:54:05 -04:00
Jeff Bradberry
57aff6394c Log an error and continue when a related object is not found 2020-06-09 13:54:05 -04:00
Jeff Bradberry
66bc947adb Reuse _import_list for import of related full objects
e.g. WFJT Nodes.  Also rename _import_list from _create_assets.
2020-06-09 13:54:05 -04:00
Jeff Bradberry
301f15bfdd Rename some things for consistency 2020-06-09 13:54:05 -04:00
Jeff Bradberry
9fc1a4bb44 Change the method that exports list views to take a PageList or TentativePage
This will allow the related m2m views to also use this method, with a
bit of effort.  Also, remove the use of pk_or_name in favor of a new
method that reduces the number of api calls.
2020-06-09 13:54:05 -04:00
Jeff Bradberry
f7825aefeb Avoid doing an OPTIONS call unless we know it is a related type we export 2020-06-09 13:54:05 -04:00
Jeff Bradberry
14b5f63bd8 Use the new PageCache to store and reuse Page.get results 2020-06-09 13:54:05 -04:00
Jeff Bradberry
1300d38e47 Introduce a new PageCache object
and split out get_post_fields into its own utility function.
2020-06-09 13:54:05 -04:00
Jeff Bradberry
bb66e4633d Split _get_options into two pieces 2020-06-09 13:54:05 -04:00
Jeff Bradberry
201de4e18a Attempt to deal with foreign keys that get mislabeled as type integer
such as through the use of DeprecatedCredentialField.
2020-06-09 13:54:05 -04:00
Jeff Bradberry
471dc2babf Deal with relations that we cannot resolve
such as due to a lack of permissions.  If there is a foreign key to
something where we don't have sufficient read permissions, we now drop
the parent object from the export.
2020-06-09 13:54:05 -04:00
Jeff Bradberry
6387258da1 Only wait for Project updates
not other kinds of objects that have a status.
2020-06-09 13:54:05 -04:00
Jeff Bradberry
6958815f6e Remove the $encrypted$ placeholders from export values 2020-06-09 13:54:05 -04:00
Jeff Bradberry
43b76f4575 Deal with unreadable mandatory foreign keys
by dropping the parent object.  Also, clarify some of the warning log
messages.
2020-06-09 13:54:05 -04:00
Jeff Bradberry
53d81d42cc Hook up creation and attachment of related objects 2020-06-09 13:54:05 -04:00
Jeff Bradberry
385725e52a Fix the _create_assets method to use _get_options 2020-06-09 13:54:05 -04:00
Jeff Bradberry
1b264011a2 Enable interconnections between WFJT Nodes 2020-06-09 13:54:05 -04:00
Jeff Bradberry
719f0b407c Enable credential relations
but only when it is in an attach/detach list view.
2020-06-09 13:54:05 -04:00
Jeff Bradberry
a5fa34bd3b Fall back to parsing the OPTIONS description
to determine the needed fields for constructing an object.
2020-06-09 13:54:05 -04:00
Jeff Bradberry
eb10a1873d Drop objects that cannot be read or do not have a natural key
don't fail hard.
2020-06-09 13:54:05 -04:00
Jeff Bradberry
ab15349c8c Remove the NoNaturalKey error
It's too awkward, and it makes more sense to return None instead.
2020-06-09 13:54:05 -04:00
Jeff Bradberry
e053a58223 Handle some more bad cases when doing OPTIONS calls
- deprecated endpoints
- read-only endpoints
- insufficient privileges

The latter case currently just drops it on the floor, but ought to do
something better.
2020-06-09 13:54:05 -04:00
Jeff Bradberry
4262dd38ba Change the NoNaturalKey exception to no longer derive from Common
which seems to be entirely use for response exceptions.  Maybe rename
Common?
2020-06-09 13:54:05 -04:00
Jeff Bradberry
0deacc4391 If attempting to link to a resource that is not yet complete, wait 2020-06-09 13:54:05 -04:00
Jeff Bradberry
329293dbf0 Tentatively enable inventory sources 2020-06-09 13:54:05 -04:00
Jeff Bradberry
e92c8cfdcc Remove the natural key lookup dict and make each Page responsible instead 2020-06-09 13:54:05 -04:00
Jeff Bradberry
07ba521b8b Enable schedules 2020-06-09 13:54:05 -04:00
Jeff Bradberry
972d3ab535 Export full related objects under some conditions 2020-06-09 13:54:05 -04:00
Jeff Bradberry
a1f7d0b781 Fix a bug with inventory.variables
Using Page[key] instead of Page.json[key] causes inner json blob
strings to automatically get parsed, which is not what we want with
this field.
2020-06-09 13:54:05 -04:00
Jeff Bradberry
30a3e3e172 Deal with lack of permissions 2020-06-09 13:54:05 -04:00
Jeff Bradberry
01d575f833 Enable the remaining top-level exportable resources
and rearrange the import/export methods a bit.
2020-06-09 13:54:05 -04:00
Jeff Bradberry
e0f6af4700 Enable the export of several relation field types 2020-06-09 13:54:05 -04:00
Jeff Bradberry
3860c7597f Move the import logic into methods on the ApiV2 class 2020-06-09 13:54:05 -04:00
Jeff Bradberry
e4146e9bc7 Move the export logic onto methods on the ApiV2 class
making it easier to invoke programmatically.
2020-06-09 13:54:05 -04:00
Jeff Bradberry
19c92a7055 Enable notification templates 2020-06-09 13:54:05 -04:00
Jeff Bradberry
6a9add4fe3 Deal somewhat reasonably with missing fields as part of the natural key
- JobTemplate.organization has recently been added, we need to support
  with and without
- WorkflowJobTemplateNode is shortly going to get an identifier field,
  and we will need to support both with and without
2020-06-09 13:54:05 -04:00
Jeff Bradberry
ad574eb896 Enable credential export 2020-06-09 13:54:05 -04:00
Jeff Bradberry
55f79a4569 Fix a couple of flaws
- The dependency ordering may spit out page types that weren't in the import data set.  Make sure to be able to map those to resources anyway.
- freeze() needs to be able to deal with nullable foreign keys.
2020-06-09 13:54:05 -04:00
Jeff Bradberry
d20fa03034 Create new Import.dependent_resources method
that yields up resource names, even ones that aren't explicitly in the
import data, in dependency order.
2020-06-09 13:54:05 -04:00
Jeff Bradberry
868aafb263 Filter out managed credential types
since we cannot patch them upon import.
2020-06-09 13:54:05 -04:00
Jeff Bradberry
3f204659a8 Temporarily disable export of resources that may not work yet 2020-06-09 13:54:05 -04:00
Jeff Bradberry
ea5b810e87 Sort the asset groups to be imported by their dependency relationships 2020-06-09 13:54:04 -04:00
Jeff Bradberry
2c00d42ced Only use a default password if an import user doesn't already exist 2020-06-09 13:54:04 -04:00
Jeff Bradberry
d191edcaf1 Fix a Python 2 syntax error
it doesn't like multiple **kwargs, apparently.
2020-06-09 13:54:04 -04:00
Jeff Bradberry
65e16dc7ae Get and assign the related objects 2020-06-09 13:54:04 -04:00
Jeff Bradberry
95b22bf05b Begin to deal with existing matching assets
by using a registry allowing the lookup of Page objects by (frozen)
natural keys.
2020-06-09 13:54:04 -04:00
Jeff Bradberry
21e36ad19a Add the calculated natural key to the export data for each asset 2020-06-09 13:54:04 -04:00
Jeff Bradberry
f53920d3bf Begin changing Import to work with the structure created by Export 2020-06-09 13:54:04 -04:00
Jeff Bradberry
372570ce8e Extract out get_natural_key as a standalone function 2020-06-09 13:54:04 -04:00
Jeff Bradberry
6f28361bf5 Make serialize_asset use Pages to a greater extent 2020-06-09 13:54:04 -04:00
Jeff Bradberry
0877e5305c Modify get_natural_key to work on Pages 2020-06-09 13:54:04 -04:00
Jeff Bradberry
e4383c505f Make more use of the functionality of Page in get_assets
and related methods.  Also, rename get_resource_options -> get_options
and enhance_asset -> serialize_asset.
2020-06-09 13:54:04 -04:00
Jeff Bradberry
fb066eb52e Fold the other methods doing API calls into get_assets() 2020-06-09 13:54:04 -04:00
Jeff Bradberry
6162ff0439 Start to record the role membership
but not really, since it still isn't fully capturing the role content_object
2020-06-09 13:54:04 -04:00
Jeff Bradberry
dfe34563aa Resolve the natural keys of assets we've already collected 2020-06-09 13:54:04 -04:00
Jeff Bradberry
37cbf7691b Split out separate methods for the OPTIONS call and massaging each asset dict 2020-06-09 13:54:04 -04:00
Jeff Bradberry
9280198b0f Use a list of exportable resources to build up the parser
Also, handle an implicit export of everything.
2020-06-09 13:54:04 -04:00
Jeff Bradberry
2127f3c96d Add organizations as a resource type to export 2020-06-09 13:54:04 -04:00
Jeff Bradberry
9f7fecf8da Add basic import command 2020-06-09 13:54:04 -04:00
Jeff Bradberry
c1a07ff00b Limit export output to only those fields needed to create the resource 2020-06-09 13:54:04 -04:00
Jeff Bradberry
f21d6b1fc4 Actually query the API for the user or users requested 2020-06-09 13:54:04 -04:00
Jeff Bradberry
4312395a3a Normalize the requested resource into a pk
using the pk_or_name helper function.  Also, authenticate to the API.
2020-06-09 13:54:04 -04:00
Jeff Bradberry
c1f6fec532 Add skeleton of a custom 'export' resource
This only takes a flag for users at the moment, and does nothing in
particular with it.
2020-06-09 13:54:04 -04:00
softwarefactory-project-zuul[bot]
3952946d9c Merge pull request #7296 from shanemcd/twelve-dot-o-dot-o
Bump version to 12.0.0

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-09 17:06:36 +00:00
softwarefactory-project-zuul[bot]
3fa34dad04 Merge pull request #7302 from ryanpetrello/redis-no-tcp
remove TCP ports for redis (it only listens on a unix domain socket)

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-09 16:59:13 +00:00
Ryan Petrello
1233462419 add some new changelog entries for 12.0.0 2020-06-09 12:39:10 -04:00
Ryan Petrello
0ad78874ce remove TCP ports for redis (it only listens on a unix domain socket) 2020-06-09 12:29:33 -04:00
Shane McDonald
2bbbb04499 Bump version to 12.0.0 2020-06-09 12:19:17 -04:00
nixocio
fa1294922b Add support Prompt on Launch for Workflow Job Template
Add support Prompt on Launch for Workflow Job Template

see: https://github.com/ansible/awx/issues/5819
2020-06-09 11:40:19 -04:00
softwarefactory-project-zuul[bot]
277b6897fa Merge pull request #7240 from rebeccahhh/memcache-memories
remove memcache entirely, add in some django redis to cover it's absence

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-09 15:37:04 +00:00
Ryan Petrello
b7ac5f0ffb Merge pull request #4395 from fosterseth/fix-parents_converge_settable_api_backport
[backport] Make all_parents_must_converge settable when creating node
2020-06-09 11:29:34 -04:00
Rebeccah
d7f9e66710 added changelog entry 2020-06-09 11:09:04 -04:00
Seth Foster
0e5f68ef53 Make all_parents_must_converge settable when creating node
When targeting, ../workflow_job_templates/id#/workflow_nodes/ endpoint,
user could not set all_parents_must_converge to true.

3.7.1 backport for awx issue #7063
2020-06-09 11:07:22 -04:00
softwarefactory-project-zuul[bot]
81d388d137 Merge pull request #7283 from fosterseth/fix-parents_converge_settable_api
Make all_parents_must_converge settable when creating node

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-09 15:03:53 +00:00
Ryan Petrello
a057a2e056 Merge pull request #4394 from ryanpetrello/mattermost-371
Send content-type with mattermost notifications, fixes #7264
2020-06-09 10:35:55 -04:00
Florian Apolloner
e9e410f4f8 Send content-type with mattermost notifications, fixes #7264 2020-06-09 10:32:32 -04:00
Rebeccah
60800d6740 add license file for django-redis 2020-06-09 10:24:23 -04:00
Rebeccah
02cf4585f8 remove memcache license file 2020-06-09 10:24:23 -04:00
Rebeccah
669d4535b1 adding isolate db location and ingore for django_redis exceptions 2020-06-09 10:24:23 -04:00
Rebeccah Hunter
b09d9cbe41 removed django-redis as a dependency
Co-authored-by: Shane McDonald <me@shanemcd.com>
2020-06-09 10:24:23 -04:00
Rebeccah
d2bbe7aa1a remove memcache from everywhere and add djagno-redis to cover it 2020-06-09 10:24:23 -04:00
Ryan Petrello
71cc359ccf don't block on log aggregator socket.send() calls
see: https://github.com/ansible/tower/issues/4391
2020-06-09 10:10:32 -04:00
softwarefactory-project-zuul[bot]
246aee623b Merge pull request #7293 from AlanCoding/lint_failure
fix lint failures

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-09 03:12:02 +00:00
softwarefactory-project-zuul[bot]
6b3ec46fe8 Merge pull request #7291 from mabashian/ui-websocket-extensions
Manually bumps websocket-extensions to 0.1.14 (awx/ui)

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-09 01:07:47 +00:00
Chris Meyers
37c1c33ecd Merge pull request #4389 from chrismeyersfsu/fix-run_wsbroadcast_status_3_7_1
awx-manage run_wsbroadcast --status doesn't work in openshift
2020-06-08 20:18:32 -04:00
AlanCoding
9dec359898 fix lint failures 2020-06-08 20:11:11 -04:00
softwarefactory-project-zuul[bot]
222998281f Merge pull request #7292 from ryanpetrello/sock-it-to-me
don't block on log aggregator socket.send() calls

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-08 22:34:53 +00:00
Ryan Petrello
7164049062 don't block on log aggregator socket.send() calls
see: https://github.com/ansible/tower/issues/4391
2020-06-08 18:07:33 -04:00
Seth Foster
e768d5e7fc Make all_parents_must_converge settable when creating node
When targeting, ../workflow_job_templates/id#/workflow_nodes/ endpoint,
user could not set all_parents_must_converge to true.

awx issue #7063
2020-06-08 17:51:15 -04:00
softwarefactory-project-zuul[bot]
e5ec761434 Merge pull request #7270 from john-westcott-iv/fix_tower_settings_none
Prevent exception for Non value

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-08 21:05:58 +00:00
chris meyers
2f7ba75ae4 track stats by hostname not remote host/ip
* broadcast websockets have stats tracked (i.e. connection status,
number of messages total, messages per minute, etc). Previous to this
change, stats were tracked by ip address, if it was defined on the
instance, XOR hostname. This changeset tracks stats by hostname.
2020-06-08 16:35:17 -04:00
chris meyers
9c20b9412a delete and re-add host when ip address changes
* The websocket backplane interconnect is done via ip address for
Kubernetes and OpenShift. On init run_wsbroadcast reads all Instances
from the DB and makes a decision to use the ip address or the hostname
based, with preference given to the ip address if defined. For
Kubernetes and OpenShift the nodes can load the Instance before the
ip_address is set. This would cause the connection to be tried by
hostname rather than ip address. This changeset ensures that an ip
address set after an Instance record is created will be detected and
used.
2020-06-08 16:34:51 -04:00
softwarefactory-project-zuul[bot]
40b020c370 Merge pull request #7284 from AlexSCorey/7232-ApplicationsRouteStub
Adds routing stubs for Applications

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-08 20:13:52 +00:00
softwarefactory-project-zuul[bot]
2a566f575f Merge pull request #7290 from mabashian/ui-next-websocket-extensions
Manually bumps websocket-extensions to 0.1.14 (awx/ui_next)

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-08 19:54:16 +00:00
Alex Corey
2784409c46 Fixes folder name 2020-06-08 15:34:25 -04:00
softwarefactory-project-zuul[bot]
946a86f350 Merge pull request #6780 from tchellomello/rfe_saml_mapping_2688
Adds SAML Attribute Mapping to Teams and Orgs

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-08 18:58:23 +00:00
mabashian
57a6c8d693 Manually bumps websocket-extensions to 0.1.14 in awx/ui 2020-06-08 14:29:52 -04:00
mabashian
142c0da9f0 Manually bumps websocket-extensions to 0.1.14 2020-06-08 14:14:59 -04:00
Ryan Petrello
99c0a954e4 Merge pull request #4384 from ryanpetrello/rsyslog-chmod
properly write rsyslog configuration as 0640
2020-06-08 14:05:18 -04:00
softwarefactory-project-zuul[bot]
28baa8b24b Merge pull request #7280 from apollo13/patch-1
Send content-type with mattermost notifications, fixes #7264

Reviewed-by: Ryan Petrello
             https://github.com/ryanpetrello
2020-06-08 17:27:05 +00:00
Marcelo Moreira de Mello
3f8bc0d7c8 Adds SAML Attribute Mapping to Teams and Orgs
Signed-off-by: Marcelo Moreira de Mello <tchello.mello@gmail.com>
2020-06-08 12:40:33 -04:00
Alex Corey
0df4047d3d Adds routing stubs for Applications 2020-06-08 11:55:21 -04:00
softwarefactory-project-zuul[bot]
feb9c5700c Merge pull request #7257 from jbradberry/fix-deadlock
Force worker processes to have a different signal handler from the parent

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-08 15:34:25 +00:00
Florian Apolloner
cf6235f6ea Send content-type with mattermost notifications, fixes #7264 2020-06-08 16:30:52 +02:00
beeankha
b457c8f133 Update a task in tower_settings integration test playbook 2020-06-08 09:57:16 -04:00
softwarefactory-project-zuul[bot]
824d798d81 Merge pull request #7116 from john-westcott-iv/token_modules
Initial cut at tower_token module

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-08 12:26:43 +00:00
John Westcott IV
76dcd6d72a Fixing scooby doo fingers 2020-06-08 07:49:58 -04:00
John Westcott IV
64846c3347 Fixing truthy issues 2020-06-08 07:09:45 -04:00
John Westcott IV
95b8bd63ea Fixing linting issues 2020-06-08 07:06:45 -04:00
John Westcott IV
3b60529488 Fixes in testing and parameter processing 2020-06-08 06:42:33 -04:00
softwarefactory-project-zuul[bot]
7a59922f0f Merge pull request #7245 from sean-m-sullivan/organization_job_template
tower_job_template to use organizations

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-08 02:12:00 +00:00
sean-m-sullivan
360352b78e updated version 2020-06-06 20:12:47 -05:00
sean-m-sullivan
21abf5a788 updated to remove version and add docs 2020-06-06 20:11:46 -05:00
softwarefactory-project-zuul[bot]
62dbb6bfdb Merge pull request #7261 from shanemcd/auto-qs
Add queue / instance group registration to heartbeat for k8s installs

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-06 13:32:08 +00:00
Shane McDonald
460f31a05d Fix up test that was only failing in dev env
I'm not sure how this one slipped by. The default config is built into the
image, but we were bind-mounting an empty directory on top of it.
2020-06-06 08:58:43 -04:00
Shane McDonald
91dbc2de30 Add queue / instance group registration to heartbeat for k8s installs
There is some history here.

https://github.com/ansible/awx/pull/7190 <- This PR was an attempt at fixing a
bug notting ran into where some jobs on k8s installs would get stuck in Waiting
forever.

The PR mentioned above introduced a bug where there are no instance groups on a
fresh k8s-based install. This is because this process currently happens in the
launch scripts, before the database is up.

With this patch, queue / instance group registration happens in the heartbeat,
right after auto-registering the instance.
2020-06-06 08:58:35 -04:00
softwarefactory-project-zuul[bot]
e603cfd7ab Merge pull request #7239 from AlexSCorey/6863-CopyProjectsAndInventories
Adds ux for unsynced projects

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-05 23:59:33 +00:00
Jim Ladd
0a0735344e Merge pull request #4342 from jladdjr/foreman_group_prefix_should_apply_to_all_groups_3.7.1
foreman: use group_prefix for all groups (release_3.7.1)
2020-06-05 15:25:22 -07:00
mo-saeed
0bfcacfcf4 Merge branch 'devel' into devel 2020-06-06 00:19:19 +02:00
mosad
1e6437b773 Resolve conflict 2 2020-06-06 00:17:26 +02:00
softwarefactory-project-zuul[bot]
3cdeb48d3f Merge pull request #7271 from jladdjr/bump_foreman_collection_0.8.1
Bump foreman collection to 0.8.1

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-05 22:04:23 +00:00
Jim Ladd
9ae344b772 foreman: use group_prefix for all groups
* awx's "compatibility layer" for the foreman plugin had the
  group_prefix hard-coded to 'foreman_'
2020-06-05 14:44:55 -07:00
mosad
7d0c49c043 Fix conflict 2020-06-05 23:41:20 +02:00
John Westcott IV
1f17e02fe9 Adding more documenation and added existing_token_id param 2020-06-05 16:19:23 -04:00
John Westcott IV
0e54f76f80 Fixing missing raw from merge type 2020-06-05 16:10:26 -04:00
Jim Ladd
0c4adfb32e Merge pull request #4387 from jladdjr/bump_foreman_collection_0.8.1
Bump foreman collection to 0.8.1
2020-06-05 12:10:22 -07:00
Jim Ladd
5df08711e9 Bump foreman collection to 0.8.1
* New release includes:
  'add host_filters and want_ansible_ssh_host like script used to have'
2020-06-05 11:25:11 -07:00
Jim Ladd
4ce37ec849 Bump foreman collection to 0.8.1
* New release includes:
  'add host_filters and want_ansible_ssh_host like script used to have'
2020-06-05 11:13:01 -07:00
John Westcott IV
41d0548af6 Fixing truthy linting issue 2020-06-05 13:53:20 -04:00
John Westcott IV
11da8e254d Changing documention and fixing sanity tests 2020-06-05 13:53:20 -04:00
John Westcott IV
30346618f1 Adding more through testing of tower_oauthtoken including failure messages 2020-06-05 13:53:20 -04:00
John Westcott IV
7c88a51992 Adding more details about tower_oauthtoken parameter 2020-06-05 13:50:39 -04:00
John Westcott IV
1a0407ba50 Fixing ny -> my typos 2020-06-05 13:50:39 -04:00
John Westcott IV
1dbea4614b Rebasing and fixing oauthtoken docs 2020-06-05 13:50:39 -04:00
John Westcott IV
6e9a43513e Removed some debugging and added an exmaple 2020-06-05 13:50:09 -04:00
John Westcott IV
e50c8fc9c9 Updated docs and added block on tests 2020-06-05 13:50:09 -04:00
John Westcott IV
e6416d770b Initial cut at tower_token module 2020-06-05 13:50:09 -04:00
John Westcott IV
4de7de3ce9 Prevent exception for Non value 2020-06-05 13:29:37 -04:00
softwarefactory-project-zuul[bot]
e6b1e55274 Merge pull request #7229 from AlanCoding/very_sane
Comply with updated Ansible sanity test rules

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-05 16:23:53 +00:00
Alex Corey
49053d3473 Adds Inventory Sources Schedules 2020-06-05 11:50:53 -04:00
softwarefactory-project-zuul[bot]
f9a7db6045 Merge pull request #7216 from AlanCoding/inventory_token
Sync inventory param processing with modules (token and config file support)

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-05 15:20:01 +00:00
Alex Corey
edb0df788b Improves copy clipaboard message and some prop names 2020-06-05 10:47:01 -04:00
Alex Corey
40cd87f253 Adds message for unsynced projects for copy to clipboard button 2020-06-05 10:47:01 -04:00
softwarefactory-project-zuul[bot]
22a9c29961 Merge pull request #7262 from ryanpetrello/dep-src-minus
remove LGPL source for dependencies we've since removed

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-05 00:45:12 +00:00
Ryan Petrello
951f13c066 remove lgpg source for dependencies we've since removed 2020-06-04 18:45:33 -04:00
softwarefactory-project-zuul[bot]
4a5edf7b88 Merge pull request #7184 from wenottingham/a-preview-of-whats-to-come
Remove dev env futzing of supervisord.conf permissions

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-04 21:47:02 +00:00
Jeff Bradberry
ced8f42835 Force worker processes to have a different signal handler from the parent
Situations have come up where the 5+ minute kill signal for
run_task_manager is emitted to the worker process running it, but
since the worker improperly inherited the AWXConsumerBase().stop()
handler a deadlock ultimately was triggered on the database
connection.
2020-06-04 15:41:28 -04:00
softwarefactory-project-zuul[bot]
8c51993278 Merge pull request #7242 from nixocio/ui_update_jt_form
Modify JobTemplateForm to use formik `setValue`

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-04 19:34:39 +00:00
softwarefactory-project-zuul[bot]
5fcf1a2d5e Merge pull request #7249 from AndrewCopeland/conjur-url-encoding
URL encode '/' to '%2F' for conjur credential plugin

Reviewed-by: Ryan Petrello
             https://github.com/ryanpetrello
2020-06-04 19:22:40 +00:00
Ryan Petrello
c53e5bdbcf properly write rsyslog configuration as 0640
see: https://github.com/ansible/tower/issues/4383
2020-06-04 15:12:09 -04:00
softwarefactory-project-zuul[bot]
61a1cfa35a Merge pull request #7208 from nixocio/ui_issue_7016
Add error feedback in Preview Step

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-04 19:04:43 +00:00
AndrewCopeland
4531c418e2 URL encode '/' to '%2F' for conjur credential plugin 2020-06-04 09:57:00 -04:00
softwarefactory-project-zuul[bot]
7623257a6c Merge pull request #7244 from ansible/jakemcdermott-remove-auth-props
Remove unneeded auth props

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-04 13:50:42 +00:00
sean-m-sullivan
3fa3ddf04b tower_job_template to use organizations 2020-06-04 00:12:02 -05:00
Jake McDermott
fdb53bd1af Remove unneeded auth props 2020-06-03 19:52:53 -04:00
softwarefactory-project-zuul[bot]
0615252cf7 Merge pull request #7223 from jakemcdermott/ui-next-app-container
Add AppContainer and move bootstrapping to App component

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-03 23:21:16 +00:00
Jake McDermott
cb453de6a4 Add AppContainer and move bootstrapping to App component 2020-06-03 18:20:26 -04:00
nixocio
9c57f550ed Modify JobTemplateForm to use formik setValue
Modify JobTemplateForm to use formik `setValue`. Following the same
convention used in the `.WorkflowJobTemplateForm`. Also, replace the
usage of `useFormikContext` to `useField`.
2020-06-03 16:06:41 -04:00
softwarefactory-project-zuul[bot]
7060fbd3c2 Merge pull request #7228 from wenottingham/one-container-only-vasili
Move to one container image rather than two mostly-identical ones

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-03 16:27:34 +00:00
softwarefactory-project-zuul[bot]
974b219858 Merge pull request #7202 from AlexSCorey/6590-InventorySourceNotifications
Adds inventory sources notifications list

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-03 15:56:53 +00:00
AlanCoding
4657680f9e Get sanity tests to work for ansible.tower and Ansible 2.10 2020-06-03 11:42:56 -04:00
Bill Nottingham
64e3135754 Only build one awx image instead of separate web and task images 2020-06-03 10:48:48 -04:00
Alex Corey
68a8dda869 Adds inventory sources notifications list 2020-06-03 10:22:03 -04:00
softwarefactory-project-zuul[bot]
fb8b90254c Merge pull request #7183 from AlexSCorey/7104-UserTeamsDisassociate
Adds disassociate functionality and an empty state for Sys Admin

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-03 14:04:44 +00:00
AlanCoding
86f1ba984a Comply with updated Ansible sanity test rules 2020-06-03 08:44:11 -04:00
AlanCoding
e3814c6f0f Share inventory plugin auth code with modules
refactor shared auth option definitions to repeat less
2020-06-02 21:17:12 -04:00
Bill Nottingham
559d917184 Make supervisor more consistent
Configs go in /etc, sockets in /var/run/supervisor for all invocations.
2020-06-02 19:51:16 -04:00
softwarefactory-project-zuul[bot]
ec2c121762 Merge pull request #7219 from AlanCoding/config_bug
fix bug with config file [general] section

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-02 23:31:45 +00:00
AlanCoding
0c3d27e818 fix bug with config file [general] section 2020-06-02 19:05:45 -04:00
softwarefactory-project-zuul[bot]
0a3ac25c1a Merge pull request #7226 from beeankha/update_collections_readme
Make edits to auth portion of Collection readme

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-02 20:46:27 +00:00
softwarefactory-project-zuul[bot]
101c70c152 Merge pull request #7222 from john-westcott-iv/fix_fail_json
Fixing fail_json error

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-02 20:38:07 +00:00
softwarefactory-project-zuul[bot]
80fb713f91 Merge pull request #7224 from john-westcott-iv/utilize_has_yaml
Now respecting the HAS_YAML variable

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-02 20:32:32 +00:00
beeankha
22d1c8a59c Make edits to auth portion of Collection readme 2020-06-02 16:14:24 -04:00
nixocio
68568be235 Add error feedback in Preview Step
Add error feedback in Preview Step.

closes: https://github.com/ansible/awx/issues/7016
2020-06-02 15:21:22 -04:00
John Westcott IV
aa54cf097b Now respecting the HAS_YAML variable 2020-06-02 14:54:44 -04:00
John Westcott IV
24571166f6 Fixing fail_json error 2020-06-02 14:40:53 -04:00
Alex Corey
af70e3bb49 updates sys admin message 2020-06-02 14:36:17 -04:00
softwarefactory-project-zuul[bot]
990eead3ac Merge pull request #7204 from rooftopcellist/label_tests
Add basic functional tests for labels

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-02 18:23:21 +00:00
softwarefactory-project-zuul[bot]
5e5026aae8 Merge pull request #7129 from keithjgrant/6594-user-teams-list
User teams list

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-02 17:32:37 +00:00
softwarefactory-project-zuul[bot]
3dec277331 Merge pull request #7125 from mabashian/5880-cred-plugins
Adds basic credential plugin support to relevant fields in the static credential forms

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-02 17:25:48 +00:00
softwarefactory-project-zuul[bot]
41894e30ac Merge pull request #7081 from keithjgrant/6640-jt-form-loading
JT form loading UX

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-02 16:45:05 +00:00
Keith Grant
8cdb05e4a2 add org name to user team search columns 2020-06-02 09:13:42 -07:00
mabashian
66df922956 Wrap credential form submission code in useRequest to avoid the "unmounted component" errors we've seen if we try to push a new route onto the history but the coomponent is already unmounted. 2020-06-02 12:06:13 -04:00
Keith Grant
455cd74492 fix tests 2020-06-02 08:46:37 -07:00
Keith Grant
e57bd88bd2 add Lookup test for disabled isLoading state 2020-06-02 08:46:37 -07:00
Keith Grant
af118fec99 Disable field inputs while fetching data
In the JT form, disable the Lookup and Select box fields for any
fields that need to fetch data, until data fetching is complete
2020-06-02 08:46:37 -07:00
softwarefactory-project-zuul[bot]
9d3b19341d Merge pull request #7166 from nixocio/ui_update_translation_process
Add section about issues to be translated

Reviewed-by: Jake McDermott <yo@jakemcdermott.me>
             https://github.com/jakemcdermott
2020-06-02 15:42:26 +00:00
softwarefactory-project-zuul[bot]
87607dd997 Merge pull request #7186 from jakemcdermott/ui-next-route-config
Relocate route config, remove route render props, refactor top-level routes

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-02 14:41:50 +00:00
Alex Corey
15d6c5fb7a Adds disassociate functionality and an empty state for Sys Admin 2020-06-02 10:16:53 -04:00
Jake McDermott
718d3728dd Relocate route config and remove route render props 2020-06-02 10:08:40 -04:00
softwarefactory-project-zuul[bot]
7e0dc41bf7 Merge pull request #7214 from ryanpetrello/conjur-changelog
update the changelog for a conjur credential plugin bug

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-02 12:15:15 +00:00
Ryan Petrello
72c7ace1a0 update the changelog for a conjur credential plugin bug
see: https://github.com/ansible/awx/issues/7191
2020-06-02 07:38:08 -04:00
softwarefactory-project-zuul[bot]
644ecdb1fb Merge pull request #7200 from ryanpetrello/conjur-quote-plus
properly quote conjur URLs that contain spaces

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-02 01:23:06 +00:00
softwarefactory-project-zuul[bot]
0abfa428c4 Merge pull request #7205 from mabashian/http-proxy-audit
Bump http-proxy to >1.18.1

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-01 20:29:34 +00:00
mabashian
b01e312b8f Remove unnecessary sleep 2020-06-01 16:08:44 -04:00
mabashian
78ade1d99d Build inputSourcesMap using an array reduce method instead of forEach with a local variable. 2020-06-01 15:55:18 -04:00
softwarefactory-project-zuul[bot]
568e70b68b Merge pull request #7196 from rooftopcellist/labels_changelog
Changelog entry for label removal issue

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-06-01 18:47:53 +00:00
mabashian
5367bc4d3b Adds test coverage for cred plugin prompt 2020-06-01 14:46:13 -04:00
mabashian
df069f3874 Adds prop type checking to a few components that were missing it. Adds basic test coverage for credential plugin field and selected components. Adds foundation for credential plugin prompt component tests (more coverage to come in a later commit). 2020-06-01 14:46:13 -04:00
mabashian
e927680cc2 Fix linting errors 2020-06-01 14:46:13 -04:00
mabashian
4b95297bd4 Adds basic credential plugin support to relevant fields in the static credential forms. 2020-06-01 14:46:13 -04:00
mabashian
068d9660b3 Addresses npm audit security report vulnerabilities with http-proxy which is a dependency of some of our dependencies. 2020-06-01 14:40:33 -04:00
Christian Adams
58737a64e1 Add basic functional tests for labels 2020-06-01 14:22:29 -04:00
Ryan Petrello
cfe8a1722c properly quote conjur URLs that contain spaces
see: https://github.com/ansible/awx/issues/7191
2020-06-01 09:48:15 -04:00
Christian Adams
e0032f7705 Merge pull request #4367 from rooftopcellist/sumologic_conf
Correctly parse sumologic url paths
2020-06-01 01:36:20 -04:00
Christian Adams
e373ae1e27 Changelog entry for label removal issue 2020-06-01 00:42:38 -04:00
softwarefactory-project-zuul[bot]
9d42b8f0f2 Merge pull request #7189 from wenottingham/aaargh
Hardcode --kubeconfig and therefore only support OpenShift 3.11+

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-29 23:44:16 +00:00
Christian Adams
ed05ce164f Merge pull request #4377 from rooftopcellist/cleanup_flake8
Fix misc. linter errors due to the flake8-3.8.1 release
2020-05-29 19:29:17 -04:00
Christian Adams
d98f2714cb Merge pull request #4376 from rooftopcellist/rm_label_3.7.1
Fix 500 on Label Removal for WFJT's [3.7.1]
2020-05-29 18:11:45 -04:00
beeankha
85426f76a5 Fix misc. linter errors due to the flake8-3.8.1 release
- [Ref] https://flake8.pycqa.org/en/latest/release-notes/
2020-05-29 17:58:27 -04:00
softwarefactory-project-zuul[bot]
54167d9693 Merge pull request #7190 from shanemcd/less-bounce
Stop bouncing k8s deployment post-install

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-29 20:31:15 +00:00
Christian Adams
c48da1b384 allow org admins to remove labels 2020-05-29 15:12:35 -04:00
mosad
4a9603a7ea Allow priv container for awx_task and option to create psp 2020-05-29 20:24:49 +02:00
Shane McDonald
747fdf38d8 Stop bouncing k8s deployment post-install
We shouldnt need to do this now that RabbitMQ autoclustering is gone.
2020-05-29 13:47:33 -04:00
Bill Nottingham
0f0e401c98 Hardcode --kubeconfig and therefore only support OpenShift 3.11+
Avoid trying to parse inconsitent oc --version output
2020-05-29 13:41:49 -04:00
softwarefactory-project-zuul[bot]
80e22ff2ce Merge pull request #7185 from mstrent/devel
Add subnet configuration to Docker Compose to avoid conflicts.

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-29 17:10:29 +00:00
softwarefactory-project-zuul[bot]
d205685541 Merge pull request #7103 from AlexSCorey/6921-UserAndTeamsAccessAdd
Adds support to user and team access add

Reviewed-by: Alex Corey <Alex.swansboro@gmail.com>
             https://github.com/AlexSCorey
2020-05-29 13:54:28 +00:00
softwarefactory-project-zuul[bot]
3b06d7b02b Merge pull request #7143 from rooftopcellist/rm_label_500
[WIP] Allow org admins to remove labels

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-29 13:32:42 +00:00
Alex Corey
ca6ae24032 makes whole card selectable 2020-05-29 09:19:28 -04:00
Alex Corey
585ca082e3 Improves naming and updates resource list and adds search functionality 2020-05-29 09:19:28 -04:00
Alex Corey
4f6d7e56eb Adds support to user and team access add 2020-05-29 09:19:28 -04:00
nixocio
8527991cb2 Add section about issues to be translated
Add steps related to issues to be translated.
2020-05-29 09:04:39 -04:00
softwarefactory-project-zuul[bot]
9de83fdcfe Merge pull request #7172 from keithjgrant/7142-prompt-extra-vars
Preserve extra_vars when they are not prompted

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-29 12:17:03 +00:00
mosad
b13a175668 Reshape security context for AWX containers 2020-05-29 12:35:45 +02:00
softwarefactory-project-zuul[bot]
c1ec84d4a9 Merge pull request #7168 from Wilk42/devel
Absent not working for tower_workflow_job_template_node Fix

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-29 02:23:08 +00:00
excalibrax
1f2481211b update to workflow node delete 2020-05-28 16:00:46 -05:00
Christian Adams
d3086206b4 allow org admins to remove labels 2020-05-28 14:36:43 -04:00
softwarefactory-project-zuul[bot]
b1853d815b Merge pull request #7177 from kdelee/firehose_event_time
Set event time and date in firehose script

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-28 17:42:02 +00:00
Bill Nottingham
131f5ff018 Remove dev env futzing of supervisord.conf permissions
If we just link it into the dev env, we don't need to copy it at
startup, and we don't need write permissions on it.
2020-05-28 13:12:57 -04:00
Elijah DeLee
efa5a95cf1 fix flake8 2020-05-28 13:00:37 -04:00
mstrent
8d6d5eeed8 Add subnet configuratin to Docker Compose to avoid conflicts.
The out of the box subnet Docker Compose selects may conflict with your existing LAN subnets. This makes it configurable.
2020-05-28 09:17:45 -07:00
softwarefactory-project-zuul[bot]
38025e1926 Merge pull request #7182 from nixocio/ui_issue_7170
Add Wizard buttons as internationalization

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-28 15:10:28 +00:00
softwarefactory-project-zuul[bot]
0e24cb3eac Merge pull request #7171 from nixocio/ui_issue_6718
Add "of" to "Run on" field in schedule form

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-28 15:06:38 +00:00
nixocio
6cf195a27e Add Wizard buttons as internationalization
See: https://www.patternfly.org/v4/documentation/react/components/wizard#props

See: https://github.com/ansible/awx/issues/7170
2020-05-28 10:26:44 -04:00
softwarefactory-project-zuul[bot]
39b37817a1 Merge pull request #6265 from djj106/devel
Add support for importing host/group descriptions

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-28 01:53:03 +00:00
softwarefactory-project-zuul[bot]
6d46ee7a01 Merge pull request #7124 from Akasurde/awx_7052
vmware_vm_inventory: Replace guest.guestId with config.guestId

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-28 01:48:28 +00:00
Elijah DeLee
90ca2fd59b be a bit more respectful of event request
minimum events made now is 10,000, used to be 10,000*number of cores.

could dig deeper but this is better for debugging changes to script
2020-05-27 19:34:12 -04:00
softwarefactory-project-zuul[bot]
a5602cc2e7 Merge pull request #7178 from ryanpetrello/sumologic-fix
add a changelog note for the sumologic token fix

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-27 23:06:43 +00:00
softwarefactory-project-zuul[bot]
4fbab7f1b3 Merge pull request #7175 from ryanpetrello/cred-plugin-fifoooooooh-noooooooo
remove the usage of create_temporary_fifo from credential plugins

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-27 23:06:35 +00:00
Elijah DeLee
5d5edf6535 create timestamp outside loop
this may be expensive
2020-05-27 18:43:26 -04:00
Elijah DeLee
a599afa81c Also apply time delta to job
This way they all happened on the same day
2020-05-27 18:29:11 -04:00
Ryan Petrello
49dfb5dcaf add a changelog note for the sumologic token fix
see: https://github.com/ansible/awx/issues/7139
2020-05-27 18:25:15 -04:00
Elijah DeLee
1835787772 add option to set hour delta on firehose 2020-05-27 17:56:07 -04:00
Elijah DeLee
00060c9572 make time delta for firehose events configurable
This was hardcoded to back in january, which make it of limited use testing
automation analytics behavior when there are many events, we need it to be sometime in the past two months.

Will take another pass to do the hours delta
2020-05-27 17:47:38 -04:00
Ryan Petrello
01c89398b7 remove the usage of create_temporary_fifo from credential plugins
this resolves an issue that causes an endless hang on with Cyberark AIM
lookups when a certificate *and* key are specified

the underlying issue here is that we can't rely on the underyling Python
ssl implementation to *only* read from the fifo that stores the pem data
*only once*; in reality, we need to just use *actual* tempfiles for
stability purposes

see: https://github.com/ansible/awx/issues/6986
see: https://github.com/urllib3/urllib3/issues/1880
2020-05-27 17:46:00 -04:00
Keith Grant
fe7df910e2 add tests for preview step extra vars 2020-05-27 11:29:44 -07:00
nixocio
1c8fb0636c Add "of" to "Run on" field in schedule form
Also, add a few strings to internationalization.

closes: https://github.com/ansible/awx/issues/6718
2020-05-27 14:26:07 -04:00
Keith Grant
5eeb8b0337 fix extra_vars when not prompted during launch 2020-05-27 11:15:41 -07:00
softwarefactory-project-zuul[bot]
f4dfbcdf18 Merge pull request #7149 from beeankha/fix_collection_routing
Update meta/routing.yml (to meta/runtime.yml) for AWX Collection

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-27 18:08:13 +00:00
softwarefactory-project-zuul[bot]
02171ce2a1 Merge pull request #7169 from beeankha/specify_approval_notifications_for_pagerduty
Update Pagerduty and Grafana Approval Notifications

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-27 18:04:08 +00:00
softwarefactory-project-zuul[bot]
193bd6d05b Merge pull request #7159 from rooftopcellist/sumologic_conf
Correctly parse sumologic url paths

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-27 17:36:38 +00:00
Christian Adams
aec7d3cc93 Correctly parse sumologic url paths
- Sumologic includes a token with a '==' at the end of it's host path.
   This adds rsyslog conf parsing tests and does not escape equals
   signs.
2020-05-27 13:05:31 -04:00
beeankha
0d7af90e8c Update Pagerduty and Grafana approval notifications 2020-05-27 13:03:28 -04:00
Christian Adams
4d5af1d191 Correctly parse sumologic url paths
- Sumologic includes a token with a '==' at the end of it's host path.
   This adds rsyslog conf parsing tests and does not escape equals
   signs.
2020-05-27 13:02:07 -04:00
softwarefactory-project-zuul[bot]
df9a8d537f Merge pull request #7113 from marshmalien/7024-inv-group-host-alert
Fix inventory group host list error modal dismissal

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-27 16:21:16 +00:00
softwarefactory-project-zuul[bot]
09caf729f1 Merge pull request #7147 from beeankha/pagerduty_approval_notification_fix
Fix Approval Notifications for PagerDuty

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-27 14:57:10 +00:00
softwarefactory-project-zuul[bot]
f042b8adf5 Merge pull request #7167 from ryanpetrello/typo-playbooks
fix a typo in the playbook discovery tooling

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-27 14:51:15 +00:00
Ryan Petrello
8b97e3f8bb fix a typo in the playbook discovery tooling 2020-05-27 10:24:34 -04:00
softwarefactory-project-zuul[bot]
61d5dc4cb2 Merge pull request #7068 from mabashian/pf-upgrades
Upgrade patternfly deps to latest stable versions

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-27 14:19:35 +00:00
beeankha
8ab885de93 Update changelog 2020-05-27 09:34:51 -04:00
softwarefactory-project-zuul[bot]
1b1a93dd4b Merge pull request #7120 from fherbert/playbook_symlinks
Add option to follow symlinks when scanning for playbooks

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-26 22:26:49 +00:00
beeankha
1e8a9a7df3 Rename routing.yml to runtime.yml 2020-05-26 16:57:09 -04:00
Francois Herbert
e2d3407f66 Fixup indenting for linting 2020-05-27 08:04:25 +12:00
softwarefactory-project-zuul[bot]
d42f57d726 Merge pull request #7034 from tchellomello/ca_trust_dir
Fixes ca_trust_dir mapping for k8s and openshift

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-26 20:03:00 +00:00
softwarefactory-project-zuul[bot]
d239c82ff5 Merge pull request #7101 from keithjgrant/5996-inventory-removable
make Inventory optional if prompt-on-launch is true

Reviewed-by: Daniel Sami
             https://github.com/dsesami
2020-05-26 20:01:56 +00:00
softwarefactory-project-zuul[bot]
a480e79e21 Merge pull request #7110 from john-westcott-iv/tower_job_tmplate_webhook_service
Tower job template webhook service

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-26 19:56:33 +00:00
beeankha
09e62df84a Fix approval notifications for PagerDuty 2020-05-26 15:47:30 -04:00
Francois Herbert
b939637266 Add warning regarding infinite recursion 2020-05-27 07:15:13 +12:00
softwarefactory-project-zuul[bot]
ffe328dcf9 Merge pull request #7146 from john-westcott-iv/fix_module_docs
Fixing tower_schedule oauth_token

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-26 17:00:15 +00:00
John Westcott IV
10a6ad92b7 Fixing tower_schedule oauth_token 2020-05-26 12:31:55 -04:00
softwarefactory-project-zuul[bot]
ca1c7b38db Merge pull request #7118 from john-westcott-iv/module_docs
Moving tower_oauthtoken into a doc fragement

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-26 16:15:36 +00:00
Ryan Petrello
bd23c41d25 Merge pull request #4361 from ryanpetrello/venv-try-except
[3.7.1] backport a change to address venv permission issues
2020-05-26 11:31:16 -04:00
John Westcott IV
dbeb7ec67c Fixing space issue 2020-05-26 11:23:41 -04:00
gamuniz
563d3944ed removed pass per feedback 2020-05-26 11:21:58 -04:00
Gabe Muniz
492d01ff3b added try/except to virtual env 2020-05-26 11:21:49 -04:00
Abhijeet Kasurde
cb1b42a93e vmware_vm_inventory: Replace guest.guestId with config.guestId
guest.guestId is optional value and may not be populated everytime.
Use config.guestId instead which is mandatory.
Removed 'tag' property from properties since this property is never
populated.

Partially fixes https://github.com/ansible/awx/issues/7052

Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
2020-05-23 19:59:26 +05:30
Keith Grant
75fd703530 add UserTeamList tests 2020-05-22 11:05:32 -07:00
John Westcott IV
33aee7f830 Allowing auth_legacy to be converted into tower.tower namespace 2020-05-22 06:32:29 -04:00
Francois Herbert
4042e78757 Add option to follow symlinks when scanning for playbooks 2020-05-22 16:06:28 +12:00
Keith Grant
1bb29ec5f7 add user teams list 2020-05-21 16:24:11 -07:00
softwarefactory-project-zuul[bot]
b81c9dbeea Merge pull request #7117 from ryanpetrello/changelog-head-start
add some recent changes to the changelog for the next major release

Reviewed-by: Bianca Henderson <beeankha@gmail.com>
             https://github.com/beeankha
2020-05-21 18:48:22 +00:00
softwarefactory-project-zuul[bot]
0dab3e920f Merge pull request #7085 from marshmalien/inv-src-detail-sync-btn
Add inventory source detail sync button

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-21 18:44:46 +00:00
softwarefactory-project-zuul[bot]
496c0c5921 Merge pull request #6733 from john-westcott-iv/tower_schedule
Initial version of tower_schedule

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-21 18:34:57 +00:00
softwarefactory-project-zuul[bot]
ebade7b9b7 Merge pull request #7027 from jakemcdermott/basic-websockets
Add basic output updates with websockets

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-21 18:18:42 +00:00
Marliana Lara
902a31d073 Switch tooltips to FieldTooltips 2020-05-21 14:10:47 -04:00
Ryan Petrello
43825faa72 add some recent changes to the changelog for the next major release 2020-05-21 13:50:41 -04:00
Jake McDermott
d40497aca5 Add basic output updates with websockets 2020-05-21 13:48:55 -04:00
John Westcott IV
c61e875bf8 Moving tower_oauthtoken into a doc fragement 2020-05-21 13:44:29 -04:00
Elijah DeLee
3ded30411f Merge pull request #4341 from kdelee/backport_host_summary_optimization_3.7.1
Backport host summary optimization 3.7.1
2020-05-21 13:37:16 -04:00
softwarefactory-project-zuul[bot]
24691f6c75 Merge pull request #7114 from ryanpetrello/awxkit-version
don't use symlinks for awxkit VERSION

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-21 17:28:50 +00:00
Bill Nottingham
b38c62d37f Merge pull request #4353 from wenottingham/analytics-skip-3.7.1
Always check configuration before gathering data.
2020-05-21 13:23:08 -04:00
softwarefactory-project-zuul[bot]
f5eb673898 Merge pull request #7028 from marshmalien/6576-inv-src-edit-form
Add inventory source edit form

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-21 16:49:38 +00:00
Ryan Petrello
d35e87ace7 test that CI works for version checking 2020-05-21 12:46:40 -04:00
softwarefactory-project-zuul[bot]
95a722255b Merge pull request #7075 from beeankha/bye_bye_hipchat
Remove HipChat Notification Type

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-21 16:41:54 +00:00
softwarefactory-project-zuul[bot]
385365a78f Merge pull request #7035 from nixocio/ui_issue_7011
Add source control branch to prompt launch

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-21 16:36:50 +00:00
Ryan Petrello
0c6b7fdb59 don't use symlinks for awxkit VERSION
as much as I'd like this to just work, certain versions of pip just
don't support it -_-

see: https://github.com/ansible/awx/issues/7107
see: https://github.com/pypa/pip/issues/7555

so unfortunately, we just have to track these as two distinct files and
just keep them in sync
2020-05-21 12:10:33 -04:00
Marliana Lara
580f098990 Fix inventory group host list error modal dismissal 2020-05-21 11:41:04 -04:00
John Westcott IV
d733903a22 Removing ignore_errors from examples 2020-05-21 10:42:13 -04:00
John Westcott IV
a2243d91d2 Now actually checking the version instead of just getting it 2020-05-21 09:15:06 -04:00
softwarefactory-project-zuul[bot]
d4084c0b13 Merge pull request #7108 from nixocio/ui_issue_7105
Make consistent usage of `useRequest` to delete items

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-21 12:55:34 +00:00
John Westcott IV
00f8dd9e6a Adding '' option to webhook_service 2020-05-21 08:25:32 -04:00
nixocio
77691a9631 Make consistent usage of useRequest to delete items
Make consistent usage of `useRequest` to delete items. This change is
required to avoid warnings such as `Warning: Can't perform a React state
update on an unmounted component.`

See: https://github.com/ansible/awx/issues/7105
2020-05-20 17:29:34 -04:00
Bill Nottingham
4c499b2d80 Always check configuration before gathering data.
We shouldn't perform expensive operations if we won't be able to send it.
Only log at debug level, otherwise every node will log this every 5
minutes.
2020-05-20 17:24:38 -04:00
softwarefactory-project-zuul[bot]
7939f2d320 Merge pull request #7106 from ryanpetrello/no-symlinks
Revert "follow symlinks while discovering valid playbooks"

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-20 21:04:29 +00:00
Ryan Petrello
3d02bd7a90 Merge pull request #4350 from ryanpetrello/371-os-walkdir-recursive
Revert "follow symlinks while discovering valid playbooks"
2020-05-20 16:50:28 -04:00
Ryan Petrello
71257c18c2 Revert "follow symlinks while discovering valid playbooks"
This reverts commit 3dd21d720e.
2020-05-20 16:47:38 -04:00
Ryan Petrello
53be991cfe Revert "follow symlinks while discovering valid playbooks"
This reverts commit 3dd21d720e.
2020-05-20 16:30:44 -04:00
beeankha
ce5272eae6 Make edits to Changelog, remove all HipChat-related params from tower_notification module 2020-05-20 16:27:01 -04:00
John Westcott IV
a4ec6f6763 Validating the version of python-dateutil 2020-05-20 14:41:43 -04:00
John Westcott IV
cc037cb4b5 Removing ignore_errors for tasks which should succeed 2020-05-20 14:41:27 -04:00
nixocio
226dac7b24 Add source control branch to prompt launch
Add source control branch to prompt launch.

Also, add missing tooltips for `JobTemplateForm`.

closes: https://github.com/ansible/awx/issues/7011
2020-05-20 14:24:04 -04:00
Marliana Lara
ea5e35910f Fix project lookup autocomplete behavior
* Refactor credential lookup to use useRequest hook
* Update unit tests
2020-05-20 12:29:02 -04:00
Keith Grant
455dfa6caa make Inventory optional if prompt-on-launch is true 2020-05-20 09:19:37 -07:00
softwarefactory-project-zuul[bot]
c2c6f2a197 Merge pull request #7079 from wenottingham/short-circuit
Always check configuration before gathering data.

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-20 16:03:27 +00:00
Bill Nottingham
17139f1f82 Always check configuration before gathering data.
We shouldn't perform expensive operations if we won't be able to send it.
Only log at debug level, otherwise every node will log this every 5
minutes.
2020-05-20 11:03:13 -04:00
softwarefactory-project-zuul[bot]
574838740f Merge pull request #7098 from Spredzy/fix_builds
Fix artifact builds

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-20 13:38:11 +00:00
softwarefactory-project-zuul[bot]
f8681cfb6b Merge pull request #7082 from AlanCoding/only_roles
Narrow function of task to be strictly role install

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-20 13:23:00 +00:00
Yanis Guenane
5a69074b09 Fix artifact builds 2020-05-20 14:54:02 +02:00
beeankha
dea7ec7845 Update changelog and README text 2020-05-19 20:48:09 -04:00
softwarefactory-project-zuul[bot]
81272a8150 Merge pull request #7088 from wenottingham/rsyslog-dev-env
Fix rsyslog in the dev env by using a local dir volume

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-19 21:56:23 +00:00
softwarefactory-project-zuul[bot]
5dfe53f158 Merge pull request #7023 from nixocio/ui_issue_6971
Modify handleDelete for JobTemplateDetails and WorkflowJobTemplateDetail

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-19 21:42:18 +00:00
softwarefactory-project-zuul[bot]
fe7a51f8f7 Merge pull request #7089 from jakemcdermott/update-zuul-download-script
Use man pages

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-19 21:42:13 +00:00
Jake McDermott
7ea96ad468 Use man pages 2020-05-19 17:05:51 -04:00
Bill Nottingham
63494c94b7 Fix rsyslog in the dev env by using a local dir volume
We broke this in the image refactor.
2020-05-19 17:00:09 -04:00
softwarefactory-project-zuul[bot]
0618822fe5 Merge pull request #7080 from nixocio/ui_add_items_to_translation
Make consistent usage of `pluralizedItemName` for internationalization

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-19 20:51:17 +00:00
softwarefactory-project-zuul[bot]
a306397586 Merge pull request #7077 from jakemcdermott/zuul-retry-chromium-download
Retry chromium download in zuul

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-19 20:35:19 +00:00
softwarefactory-project-zuul[bot]
785a8d9c77 Merge pull request #7084 from ryanpetrello/wsbroadcast-noisy-startup
make the run_wsbroadcast command less noisy at startup

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-19 20:22:29 +00:00
softwarefactory-project-zuul[bot]
a2e5639128 Merge pull request #7087 from ryanpetrello/egg-info-speedup
speed up .egg-info generation on certain systems

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-19 20:17:26 +00:00
beeankha
bc4d789da0 Remove HipChat notification type 2020-05-19 15:00:27 -04:00
Ryan Petrello
296995e8bd speed up .egg-info generation on certain systems 2020-05-19 15:00:13 -04:00
nixocio
1f7a36490d Update deletion of items for JobTemplateDetails and WorkflowJobTemplateDetail
Update deletion of items for JobTemplateDetails and WorkflowJobTemplateDetail
to remove warnings related update on an unmounted component. Use custom
hook `useRequest`.

closes: https://github.com/ansible/awx/issues/6971
2020-05-19 14:00:54 -04:00
Marliana Lara
f9fb9b120b Add inventory source detail sync button 2020-05-19 13:33:32 -04:00
Ryan Petrello
fbe679e651 make the run_wsbroadcast command less noisy at startup
this command yells a lot until migrations are finished; let's make it
not do that

see: https://github.com/ansible/awx/issues/7000
2020-05-19 13:09:49 -04:00
Ryan Petrello
d85df2e4a1 further optimize job host summary queries 2020-05-19 13:00:12 -04:00
Ryan Petrello
59d457207c properly update .failed, .last_job_id, and last_job_host_summary 2020-05-19 13:00:05 -04:00
Ryan Petrello
3ea642f212 properly handle host summary bulk updates if hosts go missing 2020-05-19 13:00:00 -04:00
Ryan Petrello
b6d3c3c1a3 drastically optimize job host summary creation
see: https://github.com/ansible/awx/issues/6991
2020-05-19 12:59:54 -04:00
AlanCoding
751ca57390 Narrow function of task to be strictly role install 2020-05-19 12:30:10 -04:00
nixocio
10f8983554 Make consistent usage of pluralizedItemName for internationalization
Make consistent usage of `pluralizedItemName` for internationalization.
Component `PaginatedDataList`.
2020-05-19 11:47:57 -04:00
softwarefactory-project-zuul[bot]
bfdd136a46 Merge pull request #7071 from JoelKle/fix_host_port
AWX installer docker-compose params `host_port` and `host_port_ssl` can also be undefined to prevent exposing a port.

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-19 15:37:32 +00:00
softwarefactory-project-zuul[bot]
e74fb194bc Merge pull request #6988 from AlexSCorey/6946-SurveyFormValidationError
6946 survey form validation error

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-19 15:32:38 +00:00
Jake McDermott
b83db0500f Enable management job notications for admins 2020-05-19 10:52:09 -04:00
Jake McDermott
17efb34c6a Retry chromium download in zuul 2020-05-19 10:19:38 -04:00
JoelKle
39c32fb5d0 AWX installer docker-compose params host_port and host_port_ssl
can also be undefined to prevent exposing a port.

Signed-off-by: JoelKle <34544090+JoelKle@users.noreply.github.com>
2020-05-19 10:03:29 +02:00
softwarefactory-project-zuul[bot]
87e3d62684 Merge pull request #7069 from wenottingham/api-doesnt-live-here-anymore
Remove obsolete settings

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-19 00:06:28 +00:00
Bill Nottingham
057933f030 Remove more unused settings from defaults (and some cases, the database) 2020-05-18 18:20:05 -04:00
Bill Nottingham
73b9d25371 Remove gather interval setting
This is a) the wrong settings key name
b) the same as the default in awx/main/conf.py anyway.
2020-05-18 17:55:07 -04:00
Bill Nottingham
73b0506e96 Remove obsolete setting.
This hasn't been used for years now.
2020-05-18 17:41:15 -04:00
mabashian
d6f7692a7d Upgrade patternfly deps to latest stable versions 2020-05-18 15:46:48 -04:00
softwarefactory-project-zuul[bot]
973e6f4213 Merge pull request #6699 from mabashian/5879-gce
Adds support for GCE credentials in credential form(s)

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-18 19:34:40 +00:00
mabashian
c4d9b81c55 Fixes bug where all_parents_must_converge was not being set for new or existing approval nodes. 2020-05-18 15:16:05 -04:00
mabashian
da1a19ce88 Fixes pathing after aliases removed 2020-05-18 15:06:20 -04:00
softwarefactory-project-zuul[bot]
38f1393030 Merge pull request #7042 from jakemcdermott/fix-disabled-management-job-notifications
Enable management job notications for admins

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-18 18:44:03 +00:00
softwarefactory-project-zuul[bot]
9a66364a9d Merge pull request #7065 from mabashian/6998-convergence-approval
Fixes bug where all_parents_must_converge was not being set for new or existing approval nodes

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-18 18:28:54 +00:00
mabashian
67b826b438 Moves credential mocks out to data json files 2020-05-18 14:25:36 -04:00
mabashian
428527052c Use credential type value from hook value instead of accessing it directly 2020-05-18 14:23:47 -04:00
mabashian
4a9d39c3fa Adds support for GCE credentials in credential form(s) 2020-05-18 14:23:47 -04:00
mabashian
f29144ba91 Fixes bug where all_parents_must_converge was not being set for new or existing approval nodes. 2020-05-18 13:23:57 -04:00
softwarefactory-project-zuul[bot]
49edaab861 Merge pull request #7048 from rooftopcellist/update_po_files_11.2.0
Update PO and POT translation files for 11.2.0

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-18 17:08:23 +00:00
Marliana Lara
e509bbfbb3 Update lookups to use useRequest hook 2020-05-18 12:38:07 -04:00
softwarefactory-project-zuul[bot]
4b02e4ab57 Merge pull request #7045 from rooftopcellist/mark_after_db
Mark job_explanation strings after they are read from the db

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-18 15:46:27 +00:00
softwarefactory-project-zuul[bot]
60d2409321 Merge pull request #6743 from john-westcott-iv/version_warning
Adding version checking to collection

Reviewed-by: Bianca Henderson <beeankha@gmail.com>
             https://github.com/beeankha
2020-05-18 15:16:35 +00:00
softwarefactory-project-zuul[bot]
9d420df632 Merge pull request #6950 from AlexSCorey/6903-InventorySourceSyncAll
Adds Inventory Source Sync Button

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-18 14:18:27 +00:00
Marliana Lara
71ef219ffb Add inventory source edit form 2020-05-18 10:15:00 -04:00
Alan Rominger
22cdc129ad Patches from tinkering with tests and default to devel version (#8)
This causes make install_collection to avoid templating the version
  so that it can still be used as-is in development
2020-05-18 08:51:39 -04:00
Christian Adams
048c394897 Update PO and POT translation files for 11.2.0 2020-05-15 22:53:36 -04:00
Christian Adams
19ccb5e213 Mark job_explanation strings after they are read from the db
- For strings that need to be translated, but are saved in the db:
   * They must be marked for translation using gettext_noop() to be
   translated.
   * And must also be marked for translation with _() when read from db
   and shown to the user.
   * [Ref]: https://docs.djangoproject.com/en/3.0/topics/i18n/translation/#marking-strings-as-no-op
2020-05-15 22:50:50 -04:00
softwarefactory-project-zuul[bot]
8006b24ae3 Merge pull request #7046 from rooftopcellist/rm_dockerfile-sync
Remove unneeded dockerfile-sync

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-15 23:08:08 +00:00
softwarefactory-project-zuul[bot]
95dd3dbfbd Merge pull request #7044 from jladdjr/foreman_group_prefix_should_apply_to_all_groups
foreman: use group_prefix for all groups

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-15 21:56:31 +00:00
Shane McDonald
cdfc9e05d4 Fix offline RHEL 8 builds
This was causing our EL8 Brew builds to break, because it wasn't being
vendored. This is in fact required for python3. It was being resolved as a
dependency of other things (see list at end of line), so it was being downloaded
on-the-fly since our normal builds have internet access. It only broke when it
wasn't vendored for offline builds.
2020-05-15 17:52:08 -04:00
Christian Adams
7e0ef6dd7b Remove unneeded dockerfile-sync 2020-05-15 17:43:07 -04:00
Jake McDermott
a66d44d2ff Enable management job notications for admins 2020-05-15 15:24:03 -04:00
Jim Ladd
d242932837 foreman: use group_prefix for all groups
* awx's "compatibility layer" for the foreman plugin had the
  group_prefix hard-coded to 'foreman_'
2020-05-15 11:59:29 -07:00
softwarefactory-project-zuul[bot]
99701e4112 Merge pull request #7039 from ryanpetrello/more-downstream-fixes-to-merge
merge in a few downstream fixes

Reviewed-by: Chris Meyers
             https://github.com/chrismeyersfsu
2020-05-15 17:15:50 +00:00
softwarefactory-project-zuul[bot]
556cd40440 Merge pull request #7038 from ryanpetrello/idle-button-i18n
mark the idle dialog continue button for translation

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-15 17:10:09 +00:00
Ryan Petrello
c7bb5a3e7b Merge branch 'downstream' into devel 2020-05-15 12:38:47 -04:00
Ryan Petrello
3c195eed9f mark the idle dialog continue button for translation 2020-05-15 12:35:05 -04:00
softwarefactory-project-zuul[bot]
c7db982ab1 Merge pull request #7032 from ryanpetrello/egg-info-bye-bye
stop pre-generating awx.egg-info for the development environment

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-15 16:19:18 +00:00
Ryan Petrello
54178a1982 stop pre-generating awx.egg-info 2020-05-15 11:47:53 -04:00
softwarefactory-project-zuul[bot]
b69b53f527 Merge pull request #7030 from beeankha/fix_misc_flake8
Clearing Up Linter Errors

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-15 14:47:04 +00:00
softwarefactory-project-zuul[bot]
d0270a1bac Merge pull request #7017 from wenottingham/honey-i-shrunk-the-container
Rework dev & prod container builds

Reviewed-by: Christian Adams <rooftopcellist@gmail.com>
             https://github.com/rooftopcellist
2020-05-15 14:36:53 +00:00
beeankha
438929007e Unpin specific flake8 version 2020-05-15 10:02:59 -04:00
AlanCoding
b904ad68a6 recover line deletes 2020-05-15 09:44:31 -04:00
John Westcott IV
b7ab6ba9bb Attempting to fix py2 test issues 2020-05-15 09:26:34 -04:00
beeankha
b80127dd40 Fix up unit tests (no more double mocking) 2020-05-15 09:26:33 -04:00
beeankha
09c10a6f59 Fix linter issue 2020-05-15 09:26:33 -04:00
Caleb Boylan
7478a2aa5e Rework some of our package tooling 2020-05-15 09:26:33 -04:00
beeankha
6a9423626c Add field numbering specification in module_util file, update unit tests 2020-05-15 09:26:29 -04:00
John Westcott IV
31a11cf6bb Attempting to fix py2 test issues 2020-05-15 09:24:44 -04:00
beeankha
4321c63165 Remove silence_warning (because of autouse), add version/type warning tests to module_utils unit test file 2020-05-15 09:24:44 -04:00
beeankha
8c5d236066 Update unit tests to not pull in version warnings 2020-05-15 09:24:43 -04:00
John Westcott IV
81eb9bb78a Now using new X-API headers to test version and type 2020-05-15 09:24:43 -04:00
John Westcott IV
762d8a287e Adding version checking to collection 2020-05-15 09:24:43 -04:00
Shane McDonald
c370cb4d93 Get OpenShift / arbitrary user ids working again 2020-05-15 08:32:43 -04:00
Marcelo Moreira de Mello
736e7a33ac Fixes ca_trust_dir mapping for k8s and openshift
Signed-off-by: Marcelo Moreira de Mello <tchello.mello@gmail.com>
2020-05-15 02:37:33 -04:00
beeankha
83bb3bba08 Move import line up 2020-05-14 18:33:11 -04:00
softwarefactory-project-zuul[bot]
30610f1a62 Merge pull request #7014 from nixocio/ui_update_chip_group
Update usage of new custom `ChipGroup`

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-14 21:35:37 +00:00
beeankha
a3e95ab171 Fix unit test failure 2020-05-14 16:39:39 -04:00
softwarefactory-project-zuul[bot]
275c43bd4a Merge pull request #7026 from 0xflotus/patch-1
(docs): enabled syntax highlighting for http patch

Reviewed-by: Ryan Petrello
             https://github.com/ryanpetrello
2020-05-14 20:11:00 +00:00
beeankha
479ab8550d Fix misc. linter errors 2020-05-14 15:43:50 -04:00
Bill Nottingham
6924466c0b Also precreate /venv in /dev with modifiable permissions. 2020-05-14 15:33:21 -04:00
Bill Nottingham
1808bed2e8 Add nss for the chrome UI unit tests 2020-05-14 15:32:06 -04:00
Bill Nottingham
d5817fd87a Remove repo files no longer used in build process 2020-05-14 15:02:32 -04:00
Bill Nottingham
8b51e8eb82 Stage rsyslog.conf from existing version so we don't have two copies. 2020-05-14 15:02:32 -04:00
Bill Nottingham
66245d3094 Reorganize both dev and prod container builds
Use only one (templated) docker file for both builds.

Move to two-stage container builds in order to save space in the
final image.
2020-05-14 15:02:32 -04:00
Bill Nottingham
a057277823 Install config-watcher as 0755 rather than chmod'ing it later 2020-05-14 15:02:11 -04:00
softwarefactory-project-zuul[bot]
7852f4f054 Merge pull request #7029 from rooftopcellist/rm_redundant_target
Remove redundant dev image build make target

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-14 18:46:31 +00:00
Alex Corey
d0bbf8c711 Fixes testing issues and removes list item action buttons 2020-05-14 13:32:48 -04:00
Christian Adams
c02f6b9ece Remove redundant dev image build make target 2020-05-14 13:21:46 -04:00
softwarefactory-project-zuul[bot]
e078ac1c80 Merge pull request #7020 from Wilk42/devel
Support adding/removing notifications to multiple awx modules

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-14 17:15:49 +00:00
0xflotus
5d82d89dc2 enabled syntax highlighting 2020-05-14 18:54:06 +02:00
0xflotus
78e51d5159 (docs): enabled syntax highlighting for http patch 2020-05-14 18:49:48 +02:00
excalibrax
2d1bc58bb2 update lint 2020-05-14 11:22:32 -05:00
excalibrax
5a47cd8f94 update lint 2020-05-14 11:14:12 -05:00
Alex Corey
6c4bf5bf7d Adds Inventory Source Sync Button 2020-05-14 12:02:55 -04:00
excalibrax
ca992246d1 update organization 2020-05-13 20:44:22 -05:00
excalibrax
ca0130fc64 update organizations and approvals 2020-05-13 20:33:23 -05:00
excalibrax
b41a55f297 updated notifications 2020-05-13 18:39:21 -05:00
excalibrax
b3323a24e4 updated projects to use notifications 2020-05-13 17:35:31 -05:00
softwarefactory-project-zuul[bot]
1b144470b0 Merge pull request #7003 from keithjgrant/survey-launch-fix
Fix launch prompt errors when no survey present

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-13 22:20:40 +00:00
Keith Grant
3c77e5b005 fix import 2020-05-13 14:13:55 -07:00
softwarefactory-project-zuul[bot]
660ca5f6ff Merge pull request #7013 from chrismeyersfsu/fix-schema_generator
fix schema check

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-13 21:05:49 +00:00
Keith Grant
aa28909313 add PreviewStep tests 2020-05-13 13:08:10 -07:00
Keith Grant
e532f4c0c5 fix launch prompt errors when no survey present 2020-05-13 13:08:10 -07:00
nixocio
ce7ea1fbcb Update usage of new custom ChipGroup
Update usage of new custom `ChipGroup`.

See: https://github.com/ansible/awx/pull/6935/fies

Also: https://www.patternfly.org/v4/documentation/react/components/chipgroup
2020-05-13 15:23:46 -04:00
softwarefactory-project-zuul[bot]
23a20b9db0 Merge pull request #7009 from chrismeyersfsu/fix-websocket_stats_on_kubernetes
fix websocket stats on kubernetes

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-13 19:05:24 +00:00
chris meyers
8bf426479c fix schema check
* Not sure how or when, but ours crawling tests set the cluster node id
to NOT start with `awx-`. That is fine, the schema checker just needs to
account for that.
2020-05-13 14:39:26 -04:00
chris meyers
155faa0138 delete and re-add host when ip address changes
* The websocket backplane interconnect is done via ip address for
Kubernetes and OpenShift. On init run_wsbroadcast reads all Instances
from the DB and makes a decision to use the ip address or the hostname
based, with preference given to the ip address if defined. For
Kubernetes and OpenShift the nodes can load the Instance before the
ip_address is set. This would cause the connection to be tried by
hostname rather than ip address. This changeset ensures that an ip
address set after an Instance record is created will be detected and
used.
2020-05-13 14:12:07 -04:00
softwarefactory-project-zuul[bot]
bba9d86078 Merge pull request #6949 from fosterseth/install-collections-isolated
Vendor collections for isolated jobs to work in ansible 2.10

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-13 18:01:10 +00:00
Seth Foster
09e5093b96 flake 8 version test 2020-05-13 13:32:11 -04:00
Seth Foster
4da0e0dd80 Vendor collections for isolated jobs to work in ansible 2.10
kubectl and synchronize are now part of community.kubernetes
and ansible.posix collections, respectively. This change installs
these collections to a local directory to be used in inventory and
isolated management playbooks.

awx issue #6930
2020-05-13 10:41:01 -04:00
chris meyers
90c02db386 track stats by hostname not remote host/ip
* broadcast websockets have stats tracked (i.e. connection status,
number of messages total, messages per minute, etc). Previous to this
change, stats were tracked by ip address, if it was defined on the
instance, XOR hostname. This changeset tracks stats by hostname.
2020-05-13 09:47:37 -04:00
softwarefactory-project-zuul[bot]
ba4ae7c104 Merge pull request #6992 from ryanpetrello/job-host-summary-optimization
drastically optimize job host summary creation

Reviewed-by: Ryan Petrello
             https://github.com/ryanpetrello
2020-05-13 13:13:23 +00:00
softwarefactory-project-zuul[bot]
d2acd15783 Merge pull request #6954 from jakemcdermott/5957-statics
Add basic static file building for ui_next

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-12 22:14:53 +00:00
Jake McDermott
7971cc5c17 Update CI Dockerfile to use new build tooling 2020-05-12 17:50:06 -04:00
Jake McDermott
6098ee8f7f Add style-components macro where needed
We need to import the styled-components macro whenever we use the
css= prop.
2020-05-12 17:50:00 -04:00
Jake McDermott
41fa3e0473 Update readme with new build info 2020-05-12 17:49:57 -04:00
Jake McDermott
3ad62f586b Update i18n for new build tools 2020-05-12 17:49:52 -04:00
Jake McDermott
43f32f98a9 Fix tests 2020-05-12 17:49:49 -04:00
Jake McDermott
abcf8fea96 Add tooling for building static files 2020-05-12 17:49:45 -04:00
Jake McDermott
10f324110e Remove build and test configuration for aliases 2020-05-12 17:49:41 -04:00
Jake McDermott
0f335170c5 Remove import aliases from ui_next
For posterity, the script used to remove the aliases is included with
this commit:

    python3 tools/dealias.py awx/ui_next/src
    npm run lint -- --fix
    npm run prettier
2020-05-12 17:49:23 -04:00
softwarefactory-project-zuul[bot]
12a04bf42e Merge pull request #6989 from nixocio/ui_update_string_cap
Update strings to follow `sentence capitalization` style

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-12 20:53:04 +00:00
softwarefactory-project-zuul[bot]
4378dc62bb Merge pull request #6968 from AlexSCorey/6919-UserAccessList
Adds User Access List

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-12 20:47:47 +00:00
softwarefactory-project-zuul[bot]
99de79dfc2 Merge pull request #6952 from AlexSCorey/6863-CopyProjectsAndInventories
Adds Copy Button to Inventory List and Project List

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-12 20:43:57 +00:00
Ryan Petrello
74308f3dad further optimize job host summary queries 2020-05-12 16:38:28 -04:00
Shane McDonald
c3ff7ab247 Do not start services when generating swagger docs 2020-05-12 16:35:09 -04:00
softwarefactory-project-zuul[bot]
74c7d9686a Merge pull request #7001 from AlexSCorey/6920-TeamsAccessList
Adds Teams Access List and tests

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-12 20:09:58 +00:00
Alex Corey
d566b465aa Adds Copy Button to Inventory List and Project List 2020-05-12 15:48:21 -04:00
softwarefactory-project-zuul[bot]
6aa972a6e9 Merge pull request #6975 from marshmalien/6574-inv-src-details
Add inventory source detail view

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-12 18:57:04 +00:00
Ryan Petrello
917c6b405e properly update .failed, .last_job_id, and last_job_host_summary 2020-05-12 14:46:57 -04:00
softwarefactory-project-zuul[bot]
deadf197a3 Merge pull request #6955 from keithjgrant/5909-jt-launch-prompt-4
JT Launch prompt preview & validation

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-12 18:45:48 +00:00
Keith Grant
90f6d4ed05 fix merging of survey values into extra_vars 2020-05-12 10:23:25 -07:00
Keith Grant
70a9a72c25 fix promptdetail test 2020-05-12 10:14:46 -07:00
softwarefactory-project-zuul[bot]
d2698c2cb1 Merge pull request #6935 from nixocio/ui_issue_6861
Add `Preview`, `more` and `Show Less` for translation

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-12 17:06:03 +00:00
Alex Corey
09e72bc0ae Adds Teams Access List and tests 2020-05-12 11:38:11 -04:00
Christian Adams
a38a7ad9b6 Merge pull request #4327 from ansible/i18n_release_3.7.0_translations
UI translation strings for release_3.7.0 branch
2020-05-12 11:10:07 -04:00
softwarefactory-project-zuul[bot]
c3afe3f815 Merge pull request #6994 from wenottingham/extra-logs
Remove extraneous re-install of rsyslog

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-12 14:37:59 +00:00
nixocio
8f6b654696 Add Preview, more and Show less for translation
Also, create a new custom component called `ChipGroup` to avoid repeat
code related to the total of chips to be translated.

See: https://www.patternfly.org/v4/documentation/react/components/chipgroup

closes:https://github.com/ansible/awx/issues/6861
2020-05-12 09:53:00 -04:00
Ryan Petrello
3cb2475307 properly handle host summary bulk updates if hosts go missing 2020-05-12 09:38:59 -04:00
ansible-translation-bot
732f2fb828 UI translation strings for release_3.7.0 branch 2020-05-12 13:15:21 +00:00
Alan Rominger
2e2fe40d2a Add options to ovirt inventory file (#4307)
fixes schema differences from script
  add back in default groups from script
  change hostnames to reflect script
  add in some hostvars

Generally allow giving plugin options from source variables
  allows testing with insecure connection with ovirt_insecure
    this is a behavior change from the script
2020-05-11 22:45:19 -04:00
Bill Nottingham
caa4e90fa0 Remove extraneous re-install of rsyslog 2020-05-11 22:24:16 -04:00
softwarefactory-project-zuul[bot]
bb0abf37e0 Merge pull request #6993 from gamuniz/venv_permission_fix
added try/except to virtual env

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-11 23:39:51 +00:00
Keith Grant
e3a3a47229 delete unused file 2020-05-11 15:51:35 -07:00
gamuniz
8b2c65a3fa removed pass per feedback 2020-05-11 18:02:25 -04:00
Ryan Petrello
e7347d15c1 drastically optimize job host summary creation
see: https://github.com/ansible/awx/issues/6991
2020-05-11 17:13:06 -04:00
Gabe Muniz
1590c69590 added try/except to virtual env 2020-05-11 17:10:01 -04:00
nixocio
d6b56d8794 Update strings to follow sentence capitalization style
Also, add note about `sentence capitalization` in the ui_next docs.

See: https://www.patternfly.org/v4/design-guidelines/content/grammar-and-terminology#capitalization
2020-05-11 17:09:22 -04:00
Bill Nottingham
d96fd7e06f Merge pull request #4322 from wenottingham/the-girl-with-the-pycurl
Don't uninstall pycurl, but do build it from source.
2020-05-11 16:39:39 -04:00
Marliana Lara
4e8bbdaae7 Add inventory source details 2020-05-11 15:58:45 -04:00
Chris Meyers
cb7036382b Merge pull request #4320 from chrismeyersfsu/fix-ws_group_timeout
cleanup channel groups on start
2020-05-11 15:52:04 -04:00
Bill Nottingham
725437571d Set a default pycurl SSL backend. 2020-05-11 15:25:44 -04:00
softwarefactory-project-zuul[bot]
9fd396cbe0 Merge pull request #6940 from jlmitch5/makeIdSearchANumber
make job id search use number field

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-11 19:23:20 +00:00
Alex Corey
10ccb57062 Fixes empty chip issue when user adds empty new line. 2020-05-11 15:10:31 -04:00
John Mitchell
1d3efecd99 make job id search use number field 2020-05-11 14:57:31 -04:00
softwarefactory-project-zuul[bot]
6a003919c0 Merge pull request #6936 from jlmitch5/defaultsInQS
add defaults to qs instead of passing as additional params to api requests

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-11 18:30:35 +00:00
softwarefactory-project-zuul[bot]
3f94657cdb Merge pull request #6937 from jlmitch5/addDescripToTemplatesList
adds description-based search to templates list

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-11 18:27:51 +00:00
Keith Grant
dfecd4ad9d fix tests 2020-05-11 11:17:09 -07:00
Keith Grant
0b207e02ab set fields touched when steps marked as visited 2020-05-11 11:17:09 -07:00
Keith Grant
59e3306a3c merge survey fields into rest of jt promt form 2020-05-11 11:17:09 -07:00
Keith Grant
da8f486c5d flush out prompt validation errors 2020-05-11 11:17:09 -07:00
Keith Grant
1ac92b0493 add rough jt launch prompt validation 2020-05-11 11:17:09 -07:00
Keith Grant
11752e123d converting prompt steps to hook-based approach 2020-05-11 11:17:09 -07:00
Keith Grant
5c2eebf692 working on prompts validation 2020-05-11 11:17:09 -07:00
Keith Grant
9b3b20c96b mask passwords in launch preview step 2020-05-11 11:17:09 -07:00
Keith Grant
91d4948564 use PromptDetail in launch prompt preview 2020-05-11 11:17:09 -07:00
Bill Nottingham
345f1db994 Don't uninstall pycurl, but do build it from source.
oVirt requires something newer, but we can't use the wheel.
2020-05-11 13:11:19 -04:00
Alex Corey
9360d3fabc fixes erroneously invalidating responses 2020-05-11 12:17:22 -04:00
softwarefactory-project-zuul[bot]
1ca3d1fe3b Merge pull request #6979 from wenottingham/nobody-pexpects-a-timeout-inquisition
Remove pexpect_timeout setting for ansible-runner

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-11 15:33:07 +00:00
chris meyers
216454d298 cleanup channel groups on start
* There are 2 data-structures that django channels redis uses: (1) zset
and (2) list. (1) is used for group membership where the key is the
logic user group and the value(s) are websocket clients. The score of
the zset entry is used for group expiration. We can not rely on group
expiration for clean-up because there is no interface privided by redis
channels to refresh the expiration. Choosing a small value for
group_expiry could result on our websocket backplane group expiring,
which would result in job events not being delivered. Instead, we
increase the group expiration to 5 years and clean up on daphne service
start.
* The list (2) data-structure is used by django channels redis to queue
websocket events per-websocket-client as needed. The need arises to
queue per-websocket-client events when the consumer can not keep up with
the producer. The consumer here is daphne, the producer is AWX.
* When AWX is operating healthy group membership in Redis is reflective
of the real-world. When AWX is unhealthy i.e. daphne cycles, the zset
will contain stale websocket client entries. This can be observed by
running `zrange asgi::group:jobs-status_changed 0 -1`. If the entries
returned look like:
specific.fUkXXpYj!DKOIfwPICNgw
specific.fUkXXpYj!FQcdopZeiRdG
specific.lpTSAgnk!IOKldfzcfdDp
specific.lpTSAgnk!NbvRUZsDpIQx
The entries with `fUkXXpYj` are stale. Note that this changeset fixes
this by removing all `asgi:*` entries on daphne start.
* Also note that individual message themselves have an expiration that
is configurable and defaults to 60.
* Also note that zset's tracking group membership will be deleted by
django channels redis when they are empty.
2020-05-11 11:02:57 -04:00
softwarefactory-project-zuul[bot]
6b8359fc2f Merge pull request #6980 from ryanpetrello/yet-another-downstream-merge
merge in a few downstream fixes 

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-08 21:14:54 +00:00
Ryan Petrello
086d6951b4 Merge branch 'downstream' into devel 2020-05-08 16:48:48 -04:00
Bill Nottingham
8cdffd0dd0 Remove pexpect_timeout setting for ansible-runner
PEXPECT_TIMEOUT has never(?) been an actual setting, and 5 is the
runner default anyway.
2020-05-08 16:31:11 -04:00
Ryan Petrello
9668d18203 Merge pull request #4313 from ryanpetrello/more-fips-monkey-business
monkey-patch another Django names_digest for FIPS support
2020-05-08 15:14:25 -04:00
softwarefactory-project-zuul[bot]
5e02e6e4a4 Merge pull request #6974 from ansible/jakemcdermott-document-installer-prereqs
Document node and npm installation prerequisites

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-08 18:50:12 +00:00
Jake McDermott
6f872bf752 Document node and npm installation prerequisites 2020-05-08 14:25:00 -04:00
Ryan Petrello
814f033d46 monkey-patch another Django names_digest for FIPS support 2020-05-08 14:12:50 -04:00
softwarefactory-project-zuul[bot]
ff573e06b3 Merge pull request #6916 from nixocio/ui_issue_6742
Use Webhook Fields in WFJT Form

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-08 17:49:43 +00:00
Alex Corey
2cbcbddc52 Adds more testing for Urls 2020-05-08 12:15:02 -04:00
Alex Corey
68d56d5616 Adds User Access List 2020-05-08 12:03:27 -04:00
nixocio
0b8aabbd16 Use Webhook Fields in WFJT Form
Update WorkflowJobTemplateForm to use `WebhookSubForm`. Also, update
related unit-tests.

closes: https://github.com/ansible/awx/issues/6742
2020-05-08 11:55:23 -04:00
softwarefactory-project-zuul[bot]
8c57a92a65 Merge pull request #6898 from marshmalien/6575-inv-src-add
Add inventory source create form

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-08 14:12:03 +00:00
softwarefactory-project-zuul[bot]
77ee2191ed Merge pull request #6926 from nixocio/ui_issue_6887
Fix Button 'Create' - to be marked for translation

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-08 14:07:51 +00:00
softwarefactory-project-zuul[bot]
a3463e87b5 Merge pull request #6924 from nixocio/ui_issue_6859
Fix Survey, check label 'Required' translation

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-08 14:07:43 +00:00
Christian Adams
c494c38966 Merge pull request #4294 from ansible/i18n_release_3.7.0_translations
[WIP] UI translation strings for release_3.7.0 branch
2020-05-08 09:56:40 -04:00
Marliana Lara
58c85ab03f Add cache timeout and inventory file validation 2020-05-07 23:26:31 -04:00
Bill Nottingham
64add6e907 Merge pull request #4305 from wenottingham/why-fix-a-parser-when-you-can-delete-it
Remove ssh version checking.
2020-05-07 17:07:56 -04:00
beeankha
10be375137 Update Makefile to find correct python path for testing 2020-05-07 16:37:04 -04:00
Bill Nottingham
4c6cac90fd Remove ssh version checking.
6.6 was added in RHEL 7.1, which is well before our supported platforms.
2020-05-07 15:30:55 -04:00
John Westcott IV
1d91387f58 Adding validation of rrule output thorugh awx searlizer 2020-05-07 14:42:47 -04:00
AlanCoding
d825cca9f2 Unit testing of tower_schedule
Move previously integration tests of lookup plugin to unit tests
  delete all integration tests except some basic demo tests

do simple create unit test
2020-05-07 14:42:47 -04:00
John Westcott IV
694c7e8af5 Remocing doc fragment extension 2020-05-07 14:42:47 -04:00
John Westcott IV
2ed3a39b46 Changing import 2020-05-07 14:42:47 -04:00
beeankha
dd49f747a0 Fix linter error 2020-05-07 14:42:47 -04:00
John Westcott IV
0eb7e22d1f Adding requirements on pytz and python.dateutil for rrule lookup plugin 2020-05-07 14:42:47 -04:00
beeankha
677ff99eb4 Make minor changes to fix sanity test results 2020-05-07 14:42:47 -04:00
John Westcott IV
12805954e0 Adding rrule lookup plugin 2020-05-07 14:42:46 -04:00
John Westcott IV
0e1a2b899a Initial version of tower_schedule 2020-05-07 14:42:46 -04:00
Christian Adams
bae9c03258 Merge pull request #4302 from rooftopcellist/rsyslog_conf_race
Prevent Rsyslog config race condition when writing to file
2020-05-07 14:21:57 -04:00
softwarefactory-project-zuul[bot]
420c75f76f Merge pull request #6965 from beeankha/jt_integration_test_edit
Update JT Integration Test

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-07 18:07:38 +00:00
softwarefactory-project-zuul[bot]
d58ea85584 Merge pull request #6964 from beeankha/notifications_for_wfjt_module
Add Notification Association Functionality to tower_workflow_job_template Module

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-07 17:13:31 +00:00
Christian Adams
37125102ab Clean up rsyslog config temp dir
- dir is cleaned up at end of 'with' context
2020-05-07 12:48:50 -04:00
beeankha
c6d77a1183 Update JT integration test 2020-05-07 12:02:08 -04:00
beeankha
8f1fccefeb Add notification association functionality to tower_workflow_job_template module, along with updated integration/unit tests 2020-05-07 11:44:43 -04:00
Marliana Lara
4b53875a71 Clear inv src subform values when source value changes
* Test that inv file field resets when project value changes
* Remove project and inv file path from API request when type is SCM
* Update checkbox tooltip to accept node proptypes
* Format option field tooltips
2020-05-07 08:57:08 -04:00
softwarefactory-project-zuul[bot]
b9e45e62c0 Merge pull request #6948 from shanemcd/fix-oc-4.3
Fix installer for oc 4.3

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-07 00:46:03 +00:00
Christian Adams
0675b9e8fa Make rsyslog.conf writes atomic
- This writes the rsyslog.conf in a temporary dir, then replaces the
   original in one atomic operation.
2020-05-06 17:54:51 -04:00
Jim Ladd
e64f9c6963 Merge pull request #4298 from jladdjr/add_foreman_options
pass along all foreman options to plugin, add support for group_patterns
2020-05-06 11:28:02 -07:00
Christian Adams
d0a7f7f4e9 Merge pull request #4297 from rooftopcellist/rsyslog_term
Rsyslog config race condition between saving and writing the file
2020-05-06 13:41:13 -04:00
AlanCoding
e24c511aef Update test files for sat6 updates 2020-05-06 11:49:04 -04:00
Shane McDonald
a461df0e4d Fix installer for oc 4.3 2020-05-06 11:40:07 -04:00
softwarefactory-project-zuul[bot]
3aa6e8a457 Merge pull request #6942 from beeankha/fix_jt_module_param_override
Fix tower_job_template module so that params are not overridden (unless specified) in subsequent tasks

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-06 14:48:20 +00:00
beeankha
a3cd858665 Add JT module unit test 2020-05-06 08:47:45 -04:00
Jim Ladd
84c854bdf3 add support for keyed_groups 2020-05-06 00:29:55 -07:00
Jim Ladd
e243513a0d pass along all foreman options to plugin 2020-05-05 19:36:55 -07:00
softwarefactory-project-zuul[bot]
9a23056073 Merge pull request #6943 from ryanpetrello/devel
merge in a few downstream fixes

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-06 00:47:06 +00:00
Ryan Petrello
e7e716742a Merge branch 'downstream' into devel 2020-05-05 20:12:24 -04:00
Alan Rominger
961c5589c1 Refresh inventory collection requirements (#4296)
* Refresh inventory collection requirements

Fix bug specific to Docker development where the right folder of
  install was not specified in the setting

Add initial rhv/ovirt version for consistency

* Update unit test to ovirt name change
2020-05-05 18:22:00 -04:00
Alan Rominger
1ca29df0de Fix for schedule delete 500 from Gabe (#4290) 2020-05-05 18:11:51 -04:00
Marliana Lara
b717aabcc9 Add inventory source add form 2020-05-05 17:00:37 -04:00
beeankha
52a272e8e4 Fix JT parameter defaults so that previously input values are not overridden by nonexistent params; update integration test 2020-05-05 16:36:10 -04:00
Christian Adams
e41d33991a Prevent a race condition when writing the rsyslog.conf 2020-05-05 15:55:08 -04:00
Christian Adams
c565130b35 TERM rsyslogd instead of KILL for more graceful shutdown 2020-05-05 15:38:57 -04:00
John Mitchell
7782b1ddf4 adds description-based search to templates list 2020-05-05 15:20:21 -04:00
John Mitchell
9a891794d9 add defaults to qs instead of passing as additional params to api request 2020-05-05 14:55:39 -04:00
softwarefactory-project-zuul[bot]
de8c37fd3d Merge pull request #6915 from chrismeyersfsu/rm_memcache_fact_cache
remove memcached based fact caching plugin

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-05 17:27:43 +00:00
Ryan Petrello
a7ca6e2eea Merge pull request #4293 from chrismeyersfsu/fix-ws_disconnect_log
missing f"" on log statement
2020-05-05 11:16:13 -04:00
softwarefactory-project-zuul[bot]
e080c1f4c2 Merge pull request #6846 from AlexSCorey/4969-Copy
Copy Feature for Templates and Credentials

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-04 21:13:52 +00:00
softwarefactory-project-zuul[bot]
5fd11d8829 Merge pull request #6900 from AlexSCorey/6777-SyncInventorySourceList
Adds Sync Functionality to Inventory Source List

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-04 21:11:27 +00:00
nixocio
44311c163c Fix Button 'Create' - to be marked for translation
Fix Button 'Create' - to be marked for translation

closes: https://github.com/ansible/awx/issues/6887
2020-05-04 16:41:07 -04:00
chris meyers
ba7e2c9bc4 missing f"" on log statement 2020-05-04 15:57:56 -04:00
Shane McDonald
e9cda0c819 Merge pull request #4292 from shanemcd/fix-inventory-plugin-permissions
Fix permissions for vendored collections in dev env
2020-05-04 15:38:17 -04:00
nixocio
60976b6aca Fix Survey, check label 'Required' translation
Fix Survey, check label 'Required' translation.

closes: https://github.com/ansible/awx/issues/6859
2020-05-04 14:43:21 -04:00
Shane McDonald
a98887deb0 Update INVENTORY_COLLECTIONS_ROOT in dev env settings 2020-05-04 14:23:05 -04:00
Shane McDonald
b12c0def7d Fix permissions for vendored collections in dev env 2020-05-04 12:44:04 -04:00
softwarefactory-project-zuul[bot]
63fec77f82 Merge pull request #6912 from AlanCoding/ignored_but_not_forgotten
Remove defunct entry from view method return tuple

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-04 16:23:55 +00:00
roofotpcellist
462cfa2344 UI translation strings for release_3.7.0 branch 2020-05-04 15:37:35 +00:00
chris meyers
503b86d41c remove memcached based fact caching plugin
* AWX uses the JSON fact caching module that ships with Ansible
2020-05-04 09:28:21 -04:00
softwarefactory-project-zuul[bot]
c6d6536078 Merge pull request #6909 from AlanCoding/git_success
Allow performing git project updates when Ansible 2.10 (ansible-base) is installed

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-01 18:49:24 +00:00
softwarefactory-project-zuul[bot]
d688f7b833 Merge pull request #6910 from ryanpetrello/devel
merge in a few downstream fixes

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-05-01 18:19:49 +00:00
AlanCoding
d54e5e5ed8 Remove defunct entry from view method return tuple 2020-05-01 14:10:14 -04:00
Ryan Petrello
2997911fd4 Merge branch 'downstream' into devel 2020-05-01 13:53:30 -04:00
Ryan Petrello
9c5f04b1e0 Merge pull request #4287 from ryanpetrello/flake8-whoops
fix busted flake8
2020-05-01 13:52:52 -04:00
Ryan Petrello
b4b261b918 fix busted flake8 2020-05-01 13:51:37 -04:00
AlanCoding
6d1746f99c yamllint fixes 2020-05-01 11:50:01 -04:00
Ryan Petrello
cd21dd69f5 Merge pull request #4284 from ryanpetrello/more-event-sanitization-tweaks
only sanitize project update events for the scm modules
2020-05-01 11:48:24 -04:00
Ryan Petrello
bf65b40241 only sanitize project update events for the scm modules
these are the only modules in the project update playbook that actually
utilize the SCM URL (which is what potentially contains sensitive data)
2020-05-01 11:39:46 -04:00
AlanCoding
fcca0cee37 use include_tasks to make hg dependency optional 2020-05-01 10:37:37 -04:00
Alex Corey
1ea924aa13 improves isLoading state and removes unnecessary RBAC 2020-05-01 08:05:49 -04:00
softwarefactory-project-zuul[bot]
d1671d72dc Merge pull request #6885 from ryanpetrello/remove-extra-credentials
remove the deprecated extra_credentials endpoints

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-30 20:16:01 +00:00
softwarefactory-project-zuul[bot]
4cf38db19c Merge pull request #6837 from nixocio/ui_issue_6171
Add Edit/Delete buttons to JT Schedule Details

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-30 20:08:33 +00:00
Alex Corey
77fd2d677a Adds Sync Functionality 2020-04-30 15:30:04 -04:00
softwarefactory-project-zuul[bot]
b0ab3fbe10 Merge pull request #6834 from jlmitch5/searchFixes2
fix the scm_type search on projects lists and make search keys show labels instead of api values

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-30 17:29:07 +00:00
Alex Corey
008cd9985a Adds Copy Button component 2020-04-30 12:25:48 -04:00
softwarefactory-project-zuul[bot]
f9b3fb4321 Merge pull request #6895 from ansible/shanemcd-patch-1
Remove problematic variable

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-30 15:56:49 +00:00
Shane McDonald
9be1fd56d2 Remove problematic variable
This is already here: https://github.com/ansible/awx/blob/devel/installer/roles/kubernetes/defaults/main.yml#L58

Was also causing downstream stuff to break.
2020-04-30 11:09:06 -04:00
softwarefactory-project-zuul[bot]
6d07064ca2 Merge pull request #6740 from AlexSCorey/6573-InventorySourceList
Inventory source list

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-30 14:47:38 +00:00
Ryan Petrello
18607107a7 remove the deprecated extra_credentials endpoints 2020-04-30 10:22:02 -04:00
John Mitchell
697b0c634d add additional merge params test, remove unnecessary span container from search chips 2020-04-29 16:53:08 -04:00
John Mitchell
fd91c8e329 update project type search to scm_type 2020-04-29 16:53:08 -04:00
John Mitchell
6f80e5b67b use labels in chips for select based filters 2020-04-29 16:53:08 -04:00
Alex Corey
8d31d09d4a Adds copy button to JTList 2020-04-29 15:46:52 -04:00
nixocio
271b19bf09 Add Edit/Delete buttons to JT Schedule Details
Also, add unit-tests to the related changes.

Closes: https://github.com/ansible/awx/issues/6171
2020-04-29 15:39:28 -04:00
softwarefactory-project-zuul[bot]
72de660ea1 Merge pull request #6880 from ryanpetrello/fix-awxkit-new-pip
Keep awxkit's requirements on the setup.py

Reviewed-by: Jacob Callahan
             https://github.com/JacobCallahan
2020-04-29 19:24:57 +00:00
softwarefactory-project-zuul[bot]
042c854ad3 Merge pull request #6877 from ryanpetrello/install-doc-cleanup
cleanup and clarify some installation instructions

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-29 18:53:31 +00:00
Ryan Petrello
9aed49e146 update the 11.2.0 changelog 2020-04-29 14:49:09 -04:00
Elyézer Rezende
5c91f66316 Keep awxkit's requirements on the setup.py
awxkit's setup.py was making use of pip internal structures to parse the
requirements.txt file. This is not a good thing as they may change,
actually that just happened.

To avoid this in the future, move the list of requirements to setup.py
and make requirements.txt list `.` as the only item. This way we keep a
single place to update requirements in the future and avoid accessing
pip's internals.
2020-04-29 14:47:21 -04:00
Ryan Petrello
99c7f2f70d Merge pull request #4278 from elyezer/drop-awxkit-requirements-txt
[3.7.0] Keep awxkit's requirements on the setup.py
2020-04-29 14:46:58 -04:00
softwarefactory-project-zuul[bot]
5e223db945 Merge pull request #6808 from AlexSCorey/6694-WebhookDataOnJTDEETs
Adds webhook fields to job template details

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-29 18:43:53 +00:00
Elyézer Rezende
e4921abfff Keep awxkit's requirements on the setup.py
awxkit's setup.py was making use of pip internal structures to parse the
requirements.txt file. This is not a good thing as they may change,
actually that just happened.

To avoid this in the future, move the list of requirements to setup.py
and make requirements.txt list `.` as the only item. This way we keep a
single place to update requirements in the future and avoid accessing
pip's internals.
2020-04-29 14:11:06 -04:00
Ryan Petrello
67e2f19aaf cleanup and clarify some installation instructions 2020-04-29 14:09:04 -04:00
softwarefactory-project-zuul[bot]
e940f1f7df Merge pull request #6849 from ggiinnoo/ssl-seperate-key
Added variable to inventory to add a separate SSL key file

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-29 14:38:32 +00:00
softwarefactory-project-zuul[bot]
ebee75e91e Merge pull request #6868 from john-westcott-iv/sdb_notigy_host_ox_x
Set SDB_NOTIFY_HOST on non-docker OS X

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-29 14:01:04 +00:00
softwarefactory-project-zuul[bot]
e641433c68 Merge pull request #6860 from ryanpetrello/version-11-2-0
bump version 11.2.0

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-29 00:31:30 +00:00
softwarefactory-project-zuul[bot]
c5dc03d4a9 Merge pull request #6867 from AlexSCorey/TestDebug
Fixes failing test

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-28 23:18:33 +00:00
John Westcott IV
3a6a7c100a Going for a more generic 'just pass' option 2020-04-28 16:47:08 -04:00
John Westcott IV
cd07305c08 Set SDB_NOTIFY_HOST on non-docker OS X 2020-04-28 16:37:35 -04:00
Alex Corey
c39423d5ca Fixes failing test 2020-04-28 16:26:46 -04:00
Chris Meyers
cd15a5c082 Merge pull request #4275 from chrismeyersfsu/redis_throttle_reconnect
exponential backoff on cb receiver reconnect
2020-04-28 15:42:45 -04:00
Ryan Petrello
6b976c4239 Merge pull request #4276 from rebeccahhh/release_3.7.0
put remaining correct links for 'Source Variables' in Source Page
2020-04-28 15:31:37 -04:00
chris meyers
a8f52c1639 actually do exponential calc rather than *2
* Log the time til reconnect attemp to log message rather than attempt
number
2020-04-28 15:24:08 -04:00
Rebeccah
867475ad49 added in (what I believe to be) the correct links 2020-04-28 14:14:40 -04:00
Ryan Petrello
3f00329abd bump version 11.2.0 2020-04-28 13:55:59 -04:00
softwarefactory-project-zuul[bot]
def3114b5b Merge pull request #6856 from ryanpetrello/devel
merge in a few downstream fixes

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-28 17:21:28 +00:00
softwarefactory-project-zuul[bot]
fcc99baaa8 Merge pull request #6848 from vandreykiv/devel
Updated ingress template for kubernetes to support HTTP and HTTPS when annotations not set

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-28 16:52:46 +00:00
chris meyers
2ecd055d1e sleep backoff on cb receiver reconnect
* Sleep before trying to reconnect
Most common reason for entering this reconnect loop is when Redis
service stops before the callback receiver when stopping tower services.
2020-04-28 12:47:40 -04:00
Ryan Petrello
aad371d224 Merge branch 'downstream' into devel 2020-04-28 12:18:13 -04:00
Vyacheslav Andreykiv
d5cb6ad58a Update main.yml
Reverted formating changes
2020-04-28 08:56:29 -07:00
ggiinnoo
0bad717db7 Wrong syntax 2020-04-28 17:51:41 +02:00
softwarefactory-project-zuul[bot]
b31abbba82 Merge pull request #6220 from kawsark/devel
Modified hashivault.py to support approle

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-28 15:50:21 +00:00
Ryan Petrello
0d30a67756 Merge pull request #4273 from wenottingham/certscertscerts
Allow unsigned certs in logging if cert verification is disabled.
2020-04-28 11:17:19 -04:00
Bill Nottingham
5d24acf613 Allow unsigned certs in logging if cert verification is disabled. 2020-04-28 11:16:54 -04:00
Ryan Petrello
94692c2364 Merge pull request #4272 from chrismeyersfsu/sos_report_redis_logs
sos report redis logs
2020-04-28 11:00:41 -04:00
Ryan Petrello
29abe35799 Merge pull request #4268 from fosterseth/fix-ip_conflict_cluster
Unset IP address of old instance if conflicting with new instance IP
2020-04-28 10:59:27 -04:00
Seth Foster
6652464e25 Unset old instance IP when conflicting new instance IP
With AWX_AUTO_DEPROVISION_INSTANCES on, instances
are registered with an ip address. However, new
instances might try to register before old instances
are deprivisioned. In this case old IPs can conflict with
the new ones. This will check for an ip conflict and unset
the IP of conflicting instance (set to None)

ansible/awx issue 6750
2020-04-28 10:52:15 -04:00
Pierre-Louis Bonicoli
f9d5860d63 Fix pylint errors 2020-04-28 10:33:41 -04:00
Pierre-Louis Bonicoli
d8ac2f5263 Avoid to repeat default value 2020-04-28 10:33:40 -04:00
Pierre-Louis Bonicoli
fdae3cd092 Explicitly references AppRole 2020-04-28 10:33:40 -04:00
Pierre-Louis Bonicoli
139384acc4 Simplify test branches 2020-04-28 10:33:40 -04:00
Pierre-Louis Bonicoli
9d85e8655d Both methods return a token: rename variable 2020-04-28 10:33:40 -04:00
Pierre-Louis Bonicoli
9fdd9061d3 Remove extraneous call to bool built-in function 2020-04-28 10:33:39 -04:00
kawsark
d3d4ce3804 Modified hashivault.py to support approle 2020-04-28 10:33:37 -04:00
chris meyers
960aa9df16 add redis logs to sosreport
* rhel8 /var/log/redis/redis.log
* rhel7 scl location
2020-04-28 09:12:42 -04:00
ggiinnoo
41a8d32dcc Added variable to inventory to add a separate key file 2020-04-28 11:13:47 +02:00
Bianca Henderson
12b47405f0 Merge pull request #4265 from john-westcott-iv/release_3.7.0
Restructuring modules so that lookup don't happen if deleting
2020-04-27 17:39:11 -04:00
Vyacheslav Andreykiv (Intel)
7659ffca1e fixed ingress template 2020-04-27 14:33:42 -07:00
Alan Rominger
41014e62b7 Avoid applying galaxy settings if no user settings exist (#4262) 2020-04-27 16:15:11 -04:00
Alex Corey
df1489bcee Addresses some object mutation issues and improves testing 2020-04-27 15:49:22 -04:00
Alex Corey
4c72ab896a Adds Inventory Source List 2020-04-27 15:49:22 -04:00
softwarefactory-project-zuul[bot]
c2e9df74e4 Merge pull request #6790 from fherbert/feature/awx_cli_job_monitor
Add ability to monitor jobs and workflow_jobs via awx cli, fixes #6165

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-27 19:48:33 +00:00
Ryan Petrello
e1cedcfb04 Merge pull request #4266 from rooftopcellist/rsyslog_followup
Increase stopwait time for rsyslogd service
2020-04-27 15:26:49 -04:00
Francois Herbert
d0384799fd Add ability to monitor jobs and workflow_jobs via awx cli, fixes #6165
Signed-off-by: Francois Herbert <francois@herbert.org.nz>

Fixup linting

Remove timeout option, not really required and it's making the api test fail
2020-04-27 15:09:16 -04:00
Jim Ladd
45f8f0f412 Merge pull request #4264 from jladdjr/satellite6_want_ansible_ssh_host
Add support for satellite6_want_ansible_ssh_host
2020-04-27 11:39:03 -07:00
Christian Adams
c07b6285da Increase stopwait time for rsyslogd service 2020-04-27 14:33:46 -04:00
John Westcott IV
f17ced8f9c Fixing integration tests for deprecation warnings 2020-04-27 14:25:23 -04:00
softwarefactory-project-zuul[bot]
17702c94f7 Merge pull request #6833 from lewisface/devel
Keystone v3 support for OpenStack Credential

Reviewed-by: Ryan Petrello
             https://github.com/ryanpetrello
2020-04-27 18:13:52 +00:00
John Westcott IV
7f66f084f1 Restructuring modules so that lookup don't happen if deleting 2020-04-27 14:11:23 -04:00
Jim Ladd
616e7082b3 Add support for satellite6_want_ansible_ssh_host
* defaults to IPv6, falls back to IP
2020-04-27 11:04:56 -07:00
softwarefactory-project-zuul[bot]
83051e9138 Merge pull request #6005 from donomur/ca-trust-fix
Add CA trust volume to k8s installer management pod

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-27 17:36:20 +00:00
softwarefactory-project-zuul[bot]
33ff4ad9be Merge pull request #6762 from shaynecm/devel
Update inventory file 

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-27 17:34:55 +00:00
softwarefactory-project-zuul[bot]
e5bdd44e13 Merge pull request #5398 from dvaerum/patch-1
If pg_hostname is defined don't try to upgrade PostgreSQL

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-27 17:22:02 +00:00
Chris Meyers
fa73fe76b2 Merge pull request #4263 from ansible/fix-sliding_window_3_7_0
fix sliding window per/minute calc
2020-04-27 13:20:39 -04:00
Donovan Murphy
fb567dad1e add CA trust volume to management pod
Signed-off-by: Donovan Murphy <dono@dono.email>
2020-04-27 13:01:32 -04:00
softwarefactory-project-zuul[bot]
88f44cb185 Merge pull request #6811 from wenottingham/ssh_aaaaaaarghs
Don't override ANSIBLE_SSH_ARGS for ad-hoc commands.

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-27 16:44:23 +00:00
Dennis Vestergaard Værum
fd2d0966e2 If pg_hostname is defined don't try to upgrade PostgreSQL 2020-04-27 12:12:37 -04:00
Ryan Petrello
efe9d85685 Merge pull request #4260 from jlmitch5/fixNotificationPagination
make sure right endpoint is getting called for notification pagination
2020-04-27 09:18:34 -04:00
Ryan Petrello
1f1069e9f3 Merge pull request #4261 from jlmitch5/fixLicenseTranslation
Remove unnecessary nesting license translate directive
2020-04-24 16:03:10 -04:00
chris meyers
ac46013fcc fix sliding window per/minute calc
* Add tests to ensure correctness
2020-04-24 15:55:11 -04:00
Christian Adams
f6a2d41e4c Remove unnecessary or translation 2020-04-24 15:35:56 -04:00
John Mitchell
3b84ff7002 remove unnecessary nesting translate directive from license partial 2020-04-24 15:35:56 -04:00
John Mitchell
b1b6af4ad5 make sure right endpoint is getting called for notification pagination 2020-04-24 15:32:14 -04:00
Ryan Petrello
04e6482f36 Merge pull request #6832 from ghjm/service_command
Improve the ansible-tower-service script
2020-04-24 15:24:40 -04:00
softwarefactory-project-zuul[bot]
f7a8e30d3e Merge pull request #6818 from ryanpetrello/rsyslogd-debug
add a setting for enabling high rsyslogd verbosity

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-24 19:13:42 +00:00
Graham Mainwaring
d55b223aae Use sysconfig file to get the list of services 2020-04-24 14:08:24 -04:00
Ryan Petrello
e51d0b6fde add a setting for enabling high rsyslogd verbosity 2020-04-24 14:01:17 -04:00
Graham Mainwaring
e36ffa5764 Return more status information from ansible-tower-service status and error check commands better 2020-04-24 11:37:16 -04:00
Dave Lewis
c86692784e Updated data/inventory/scripts/openstack/files/file_reference
Update file_references due to the inclution of project_domain_name in the openstack credentails.
2020-04-24 15:11:49 +01:00
Dave Lewis
952c91dea5 Updated injector.py and added new test into test_tasks.py 2020-04-24 14:06:13 +01:00
softwarefactory-project-zuul[bot]
e7a9604896 Merge pull request #6826 from AlanCoding/vendoring_collections_vmware
Enable VMWare inventory plugin

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-24 12:32:39 +00:00
AlanCoding
8bbd2c7aaa bump collection requirements, vmware patches
New VMWare and azure were released, pick those up

Enable using of VMWare inventory plugin for Ansible 2.9

Few fixes from manual testing with VMWare
  Remove invalid properties which resulted in no hosts imported
  Add some defaults to be more consistent with script
2020-04-23 19:57:53 -04:00
softwarefactory-project-zuul[bot]
9e87ddde69 Merge pull request #6820 from marshmalien/6530-wf-node-detail-cleanup
Show missing detail fields in workflow node view modal 

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-23 20:34:36 +00:00
softwarefactory-project-zuul[bot]
5d40cf7635 Merge pull request #6825 from ryanpetrello/test-other-loggers
allow users to test log aggregration if `awx` isn't in the loggers list

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-23 20:19:08 +00:00
Marliana Lara
75b54d2c14 Add unit tests to check for deleted details 2020-04-23 15:34:23 -04:00
Alex Corey
1bcd71ec9f Adds webhook fields to job template details 2020-04-23 15:19:03 -04:00
Ryan Petrello
31c6b3337c allow users to test log aggregration if awx isn't in the loggers list 2020-04-23 15:15:37 -04:00
softwarefactory-project-zuul[bot]
c0e07198cf Merge pull request #6283 from AlanCoding/vendoring_collections
Use vendored collections for inventory imports

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-23 18:54:50 +00:00
Marliana Lara
a2c3027bd7 Display a "Deleted" label for prompt view node details 2020-04-23 13:08:16 -04:00
softwarefactory-project-zuul[bot]
acdf15640c Merge pull request #6814 from surfer190/patch-1
Change the custom venv vars install line

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-23 15:38:29 +00:00
Dave Lewis
92b74266ca Correct missing "default=''"
On previous commit missed "default=''" so changing:

project_domain_name=cred.get_input('project_domain_name'))
to
project_domain_name=cred.get_input('project_domain_name', default=''))
2020-04-23 11:33:24 +01:00
Dave Lewis
08323a11b6 Addition of project domain name to OpenStack Credential
Keystone v3 requires user_domain_id and project_domain_name to authenticate, but AWX openstack credential only requests the user_domain_id.
Added in project_domain_name into the credential templating. Not added as a required field as this is only needed when using Keystone v3.
2020-04-23 11:24:51 +01:00
surfer190
6390794828 Change the custom venv vars install line
Add the inventory
2020-04-23 11:43:01 +02:00
AlanCoding
ab703e2a32 Add feature docs and document development tooling 2020-04-22 21:41:52 -04:00
AlanCoding
8c657e210c VMWare collection ready but waiting for release
turn off use of VMWare inventory plugin for now

Attempt to roll back general migration to Ansible 2.8
  failed, kept at 2.9 because of compatibility
2020-04-22 21:40:23 -04:00
Bill Nottingham
3f5820adf8 Don't override ANSIBLE_SSH_ARGS for ad-hoc commands.
This reverts 8beed7f4, which says:
    Disable ControlPersist for ad hoc commands, should avoid any
    issues with proot or needing to clean up sockets afterwards.

Given we've switched to the much less finicky bwrap for process
isolation, along with runner-based process killing, this probably
isn't needed any more.
2020-04-22 20:46:18 -04:00
softwarefactory-project-zuul[bot]
a34a63ec7f Merge pull request #6809 from wenottingham/nope-no-scls-here
Don't use SCLs for openshift.

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-22 23:12:45 +00:00
Bill Nottingham
47fef1dcf3 Don't use SCLs for openshift.
This may be a mis-merge?
2020-04-22 17:16:44 -04:00
softwarefactory-project-zuul[bot]
b6be891dc1 Merge pull request #6786 from nixocio/ui_issue_6511
Fix searching for a blank string creates a blank search filter

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-22 21:02:25 +00:00
softwarefactory-project-zuul[bot]
546df65753 Merge pull request #6804 from chrismeyersfsu/fix-collector_tests
lie about last time analytics were collected

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-22 20:38:45 +00:00
nixocio
2a86a3e05b Fix searching for a blank string creates a blank search filter
Fix searching for a blank string creates a blank search filter. Also,
add unit-test to the related changes.

closes: https://github.com/ansible/awx/issues/6511
2020-04-22 16:16:10 -04:00
softwarefactory-project-zuul[bot]
37ee95314a Merge pull request #6802 from ryanpetrello/version-11-1-0
bump version to 11.1.0

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-22 19:18:24 +00:00
softwarefactory-project-zuul[bot]
28c3fa517e Merge pull request #6773 from ryanpetrello/playbook-scan-symlinks
follow symlinks while discovering valid playbooks

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-22 18:35:53 +00:00
chris meyers
01c56a4f2b lie about last time analytics were collected
* Ensure that everything that we put into the database is returned via
analytics.
2020-04-22 14:10:45 -04:00
Ryan Petrello
3dd21d720e follow symlinks while discovering valid playbooks
related: https://github.com/ansible/awx/pull/6769

Co-authored-by: Francois Herbert <francois@herbert.org.nz>
2020-04-22 13:38:29 -04:00
softwarefactory-project-zuul[bot]
9cfecb5590 Merge pull request #6788 from ryanpetrello/version-header
include the AWX version as a header in all responses

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-22 17:11:56 +00:00
Ryan Petrello
2742612be9 bump version to 11.1.0 2020-04-22 13:00:41 -04:00
softwarefactory-project-zuul[bot]
4f4a4e2394 Merge pull request #6204 from Ladas/send_job_and_template_nodes_to_analytics
Send job and template nodes to analytics

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-22 16:08:31 +00:00
Ryan Petrello
edd9972435 include the AWX version as a header in all responses 2020-04-22 12:07:31 -04:00
softwarefactory-project-zuul[bot]
9fdec9b31b Merge pull request #6785 from shanemcd/really-clean-that-volume
Dev env: stop and remove containers before removing volume

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-22 15:39:12 +00:00
softwarefactory-project-zuul[bot]
a93ee86581 Merge pull request #6787 from squidboylan/remove_module_tests
Remove tower_receive and tower_send tests

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-22 15:01:58 +00:00
softwarefactory-project-zuul[bot]
020246736c Merge pull request #6796 from rooftopcellist/fix_awx_rsyslog
rsyslogd is only needed in the web container

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-22 15:01:50 +00:00
Christian Adams
8d3ce206cd rsyslogd is only needed in the web container 2020-04-22 10:17:04 -04:00
AlanCoding
68f5482c42 Update vmware implementation to new agreements 2020-04-21 22:49:20 -04:00
softwarefactory-project-zuul[bot]
28e27c5196 Merge pull request #6768 from keithjgrant/5909-jt-launch-3b
JT Launch Prompting (phase 3) [rebuilt branch]

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-21 23:43:29 +00:00
softwarefactory-project-zuul[bot]
c56352daa4 Merge pull request #6765 from rooftopcellist/fix_flake_zuul
revert back to the old way of calling flake8 linter

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-21 21:37:36 +00:00
Caleb Boylan
5eea4e8881 Remove tower_receive and tower_send tests 2020-04-21 13:46:13 -07:00
Bill Nottingham
58c821f3e1 De-flake the collector test. 2020-04-21 16:32:33 -04:00
Shane McDonald
5cad0d243a Dev env: stop and remove containers before removing volume 2020-04-21 15:47:59 -04:00
softwarefactory-project-zuul[bot]
0aaa2d8c8d Merge pull request #6783 from ryanpetrello/inv-links
update (dead) links to example inv source vars

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-21 19:07:55 +00:00
chris meyers
921feb561d add test case for wfj nodes analytics 2020-04-21 20:21:38 +02:00
Bill Nottingham
5b0bb4939f Allow subsets of table gathering for unit tests.
sqlite does not like some of our PG-isms.
2020-04-21 20:21:20 +02:00
Ladislav Smola
144cffe009 Send job and template nodes to analytics
Sending tables main_workflowjobnode and main_workflowjobtemplatenode
containing arrays of success/failure/always_nodes which is compatible
to what API call for nodes return.
2020-04-21 20:02:30 +02:00
Ryan Petrello
af11055e5c update (dead) links to example inv source vars
see: https://github.com/ansible/awx/issues/6538

some of these are subject to change (in particular, the azure one), but
this at least fixes the dead links for now in ansible devel
2020-04-21 14:00:54 -04:00
softwarefactory-project-zuul[bot]
c0cb546c3c Merge pull request #6779 from squidboylan/fix_project_allow_override
Collection: Fix the tower_project scm_allow_override

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-21 17:52:52 +00:00
softwarefactory-project-zuul[bot]
a800c8cd00 Merge pull request #6781 from ryanpetrello/pg10-doc
update postgres minimum version

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-21 17:32:58 +00:00
Caleb Boylan
f8a23f20aa Collection: Assert tower_project job is successful 2020-04-21 10:14:08 -07:00
softwarefactory-project-zuul[bot]
46edd151e0 Merge pull request #6764 from ryanpetrello/redis-sos
record redis config in the sosreport

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-21 17:13:58 +00:00
Caleb Boylan
ba4b6bdbb7 Collection: tower_project alias allow_override to scm_allow_override 2020-04-21 10:08:06 -07:00
Caleb Boylan
1e24d8b5fa Collection: Add integration tests for project scm_allow_override 2020-04-21 09:58:39 -07:00
Ryan Petrello
41586ea3a6 update postgres minimum version 2020-04-21 12:49:33 -04:00
Caleb Boylan
ded5577832 Collection: Fix the tower_project scm_allow_override 2020-04-21 09:39:16 -07:00
shaynecm
e428aeb97e pre-req's updated
added Python 3.6+ to bring inline with the inventory change
2020-04-21 12:43:19 +01:00
shaynecm
e42915d4cf updated to include py3
amended to be "/usr/bin/env python3" as suggested
2020-04-21 12:40:56 +01:00
softwarefactory-project-zuul[bot]
cce5f26e34 Merge pull request #6763 from ryanpetrello/rsyslogd-spool-config
let users configure the destination and max disk size of rsyslogd spool

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-20 23:49:20 +00:00
Keith Grant
1940c834cb fix empty CodeMirror bug in modals 2020-04-20 16:21:59 -07:00
Keith Grant
08381577f5 Merge prompt extra_vars before POSTing
* Merge the extra_vars field with survey question responses before sending
to API
* Clean up select and multi-select survey fields
2020-04-20 16:21:48 -07:00
Keith Grant
669d67b8fb flush out validators, survey questions 2020-04-20 16:21:39 -07:00
Keith Grant
8a0be5b111 add survey questions 2020-04-20 16:21:31 -07:00
Ryan Petrello
9e30f004d3 let users configure the destination and max disk size of rsyslogd spool 2020-04-20 19:12:28 -04:00
softwarefactory-project-zuul[bot]
62bf61b2a2 Merge pull request #6766 from ryanpetrello/fixup-6760
escape certain log aggregator settings when generating rsyslog config

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-20 22:52:20 +00:00
Ryan Petrello
f62dfe85cc escape certain log aggregator settings when generating rsyslog config
see: https://github.com/ansible/awx/issues/6760
2020-04-20 18:05:01 -04:00
Christian Adams
97acba8fe9 revert back to the old way of calling flake8 linter 2020-04-20 17:27:52 -04:00
Ryan Petrello
cec7cb393d record redis config in the sosreport 2020-04-20 17:03:50 -04:00
softwarefactory-project-zuul[bot]
e9b254b9d2 Merge pull request #6654 from AlexSCorey/4962-EnableWebhooksForJT
Adds webhooks to Job template form

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-20 20:11:29 +00:00
Alex Corey
222fecc5f6 adds test for new webhook component 2020-04-20 15:33:46 -04:00
shaynecm
1afd8b4309 Update inventory 2020-04-20 19:20:14 +01:00
softwarefactory-project-zuul[bot]
c833676863 Merge pull request #6752 from fherbert/job_template_notification
Support adding/removing notifications to job_templates

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-20 17:20:25 +00:00
softwarefactory-project-zuul[bot]
7e9835f6ee Merge pull request #6730 from rooftopcellist/pyflake
Fix new flake8 from pyflakes 2.2.0 release

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-20 14:31:52 +00:00
softwarefactory-project-zuul[bot]
5940f6de2c Merge pull request #6737 from ryanpetrello/da-queues
rsyslogd: set some reasonable limits for disk queues

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-20 14:29:05 +00:00
Christian Adams
a899a147e1 Fix new flake8 from pyflakes 2.2.0 release 2020-04-20 09:50:50 -04:00
softwarefactory-project-zuul[bot]
e0c8f3e541 Merge pull request #6747 from chrismeyersfsu/fix-redis_logs
fix redis logs

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-20 13:06:40 +00:00
Francois Herbert
68a0bbe125 Support adding/removing notifications to job_templates 2020-04-20 13:02:41 +12:00
AlanCoding
50197c6a12 Handle custom script options of hostnames and destination variable 2020-04-18 23:30:50 -04:00
AlanCoding
de0122d64e Respect the ec2 script nested groups option 2020-04-18 19:32:18 -04:00
chris meyers
8592bf3e39 better broadcast websocket logging
* Make quiter the daphne logs by raising the level to INFO instead of
DEBUG
* Output the django channels name of broadcast clients. This way, if the
queue gets backed up, we can find it in redis.
2020-04-17 17:19:08 -04:00
chris meyers
4787e69afb consistent wsbroadcast log messages 2020-04-17 17:18:21 -04:00
softwarefactory-project-zuul[bot]
8f5afc83ce Merge pull request #6745 from ryanpetrello/redis-tcp-port--
don't expose redis port

Reviewed-by: Elyézer Rezende
             https://github.com/elyezer
2020-04-17 20:43:27 +00:00
softwarefactory-project-zuul[bot]
b1a90d445b Merge pull request #6739 from chrismeyersfsu/fix-redis_group_cleanup
cleanup group membership on disconnect

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-17 20:28:00 +00:00
softwarefactory-project-zuul[bot]
8954e6e556 Merge pull request #6687 from nixocio/ui_convert_user_to_be_function
Update User component to be function based

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-17 19:55:50 +00:00
AlanCoding
fff34f7227 Make inventory non-strict for production and remove comments 2020-04-17 15:43:03 -04:00
Ryan Petrello
7bfc99a615 don't expose redis port 2020-04-17 15:34:11 -04:00
AlanCoding
e2f5aa987d Implement vmware plugin host filtering 2020-04-17 14:52:38 -04:00
Ryan Petrello
f159a6508e rsyslogd: set some higher limits for disk-assisted queues 2020-04-17 14:34:07 -04:00
nixocio
4d7b5adf12 Update User component to be function based
Update User component to be function based. Also update related
unit-tests.
2020-04-17 14:29:31 -04:00
Alex Corey
6e648cf72f Adds webhooks to jt form 2020-04-17 14:18:32 -04:00
softwarefactory-project-zuul[bot]
24a50ea076 Merge pull request #6738 from squidboylan/fix_collection_sanity_ansible2.9
Collection: Ignore some sanity errors in ansible 2.9

Reviewed-by: Alan Rominger <arominge@redhat.com>
             https://github.com/AlanCoding
2020-04-17 18:06:41 +00:00
softwarefactory-project-zuul[bot]
2d2add009b Merge pull request #6728 from chrismeyersfsu/fix-noisy_debug
confidence in websocket group logic is high

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-17 18:06:36 +00:00
chris meyers
fd068695ef cleanup group membership on disconnect
* zcard asgi::group:jobs-status_changed <-- to see a group set that
continues to grow. Issue this command in a loop while refreshing the
browser page on the jobs list. Before this change the set size would
continue to grow as daphne channel names are added to the group. After
this change the set size stays stable at the expected, 1.
2020-04-17 13:16:11 -04:00
Caleb Boylan
b19360ac9b Collection: Ignore some sanity errors in ansible 2.9 2020-04-17 09:32:54 -07:00
softwarefactory-project-zuul[bot]
7c3c1f5a29 Merge pull request #6678 from nixocio/ui_issue_5983
Fix List Navigation Pagination

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-17 16:08:55 +00:00
nixocio
a902afcf73 Fix List Navigation Pagination
Fix List Navigation Pagination. Add missing variable `page` to
`handleSetPageSize`. Also update unittests impacted by this change.

closes: https://github.com/ansible/awx/issues/5983
2020-04-17 11:16:12 -04:00
softwarefactory-project-zuul[bot]
501568340b Merge pull request #6736 from beeankha/fix_collection_readme_format
Fix Collection README to Display Properly

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-17 14:18:57 +00:00
softwarefactory-project-zuul[bot]
1d32917ceb Merge pull request #6732 from domq/fix/rsync-EAGAIN-hazard
[fix] Use rsync --blocking-io to work around EAGAIN hazard

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-17 13:08:10 +00:00
AlanCoding
84d863ff9d Shorten list of VMWare inventory plugin properties
Do not include summaries

decision on vmware keyed groups

Handle first set of custom user vmware options
2020-04-16 20:56:02 -04:00
AlanCoding
47bdf86dfa Pick up collections paths in openstack inventory update prep
Update amazon.aws version

Update vmware to new release

Pin some more tests due to transitioning to inventory plugins

Remove more temporary hacks
2020-04-16 20:56:02 -04:00
Jim Ladd
6b015c9d81 Call parent get_plugin_env for foreman 2020-04-16 20:56:01 -04:00
AlanCoding
c3f2b3e44d bump versions of Galaxy collection requirements
Implement 2.9 version policy

Update ec2 collection name

Enable ovirt, refresh test files

Put in upstream forks to get it running for now

pick up openstack.cloud fix
2020-04-16 20:56:01 -04:00
Jim Ladd
6807878e2d I think this is the right place for iam_role_arn in the tests? 2020-04-16 20:56:01 -04:00
Jim Ladd
96c6cf9f05 pass iam_role_arn through to aws inv. plugin 2020-04-16 20:56:01 -04:00
Jim Ladd
8a20b5225b enable aws_ec2 plugin 2020-04-16 20:56:00 -04:00
Jim Ladd
0e2786d1f1 compat layer for foreman 2020-04-16 20:56:00 -04:00
Jim Ladd
f38437b6bc foreman plugin updates 2020-04-16 20:56:00 -04:00
AlanCoding
99ae614a63 Vmware was published
implement vmware inventory plugin

Enable the previously broken properties
2020-04-16 20:56:00 -04:00
AlanCoding
fcf75af6a7 Get current cloud sources working from collection
update test data files

Adopt official vendor location

openstack not published yet

Add collections to show paths

Add collections loc to installer settings

Add vendored collections to show path again
2020-04-16 20:55:59 -04:00
Yanis Guenane
541b9607f5 Collections: Adding a requirements.yml file 2020-04-16 20:55:59 -04:00
beeankha
2d455800c4 More bulleted list formatting changes 2020-04-16 20:18:22 -04:00
softwarefactory-project-zuul[bot]
37491fa4b9 Merge pull request #6735 from wenottingham/true-is-relative
Flip CSRF_COOKIE_SECURE docs.

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-16 21:09:20 +00:00
softwarefactory-project-zuul[bot]
f41852c3ee Merge pull request #6709 from marshmalien/6530-wf-node-wf
Add workflow details to node view modal

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-16 20:54:25 +00:00
softwarefactory-project-zuul[bot]
b565ed2077 Merge pull request #6723 from nixocio/ui_issue_6244
Fix Page Size toggle does not persist after a search

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-16 20:25:41 +00:00
beeankha
86bafb52f6 Fix collection README display 2020-04-16 16:13:12 -04:00
Bill Nottingham
11b1d0e84c Flip CSRF_COOKIE_SECURE docs.
I think this was backwards.
2020-04-16 15:34:38 -04:00
softwarefactory-project-zuul[bot]
f47325a532 Merge pull request #6681 from chrismeyersfsu/fix-cluster_stupid_bash
fix copy paste error in docker compose cluster

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-16 19:14:16 +00:00
nixocio
1a261782c7 Fix Page Size toggle does not persist after a search
Fix Page Size toggle does not persist after a search.
Also, add unit-tests related to `onSearch`,`clearAllFilters` and `onRemove`.

closes:https://github.com/ansible/awx/issues/6244
2020-04-16 15:06:50 -04:00
Dominique Quatravaux
5a1599b440 [fix] Use rsync --blocking-io to work around EAGAIN hazard
Fixes #6692
2020-04-16 20:20:21 +02:00
chris meyers
72248db76d fix copy paste error in docker compose cluster 2020-04-16 14:12:30 -04:00
softwarefactory-project-zuul[bot]
21268b779f Merge pull request #6713 from beeankha/awx_collection_deprecations
Deprecate Send, Receive, and Workflow Template Collections Modules

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-16 16:23:15 +00:00
beeankha
8926f635df Mark send, receive, and workflow_job_template modules as deprecated
Add routing.yml file to mark modules for deprecation and pass sanity tests

Ignore sanity tests for deprecated modules
2020-04-16 11:25:38 -04:00
softwarefactory-project-zuul[bot]
e19194b883 Merge pull request #6721 from shanemcd/dockerfile-cleanup
Dockerfile organization

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-16 14:48:58 +00:00
softwarefactory-project-zuul[bot]
fa1c33da7e Merge pull request #6704 from ryanpetrello/11-0-0-release-version
bump version for 11.0.0

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-16 13:41:56 +00:00
chris meyers
d30ecb6fb3 confidence in websocket group logic is high
* Replying to websocket group membership with the previous state, delta,
and new state has shown to be quite stable. This debug message is not
very helpful and is noisy in the dev env. This change removes the debug
message.
2020-04-16 08:48:12 -04:00
Ryan Petrello
8ed5964871 bump version for 11.0.0 2020-04-15 22:10:12 -04:00
softwarefactory-project-zuul[bot]
a989c624c7 Merge pull request #6724 from chrismeyersfsu/fix-redis_not_registering_disconnect
reconnect when a vanilla server disconnect happens

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-15 23:38:47 +00:00
chris meyers
7f01de26a1 reconnect when a vanilla server disconnect happens 2020-04-15 19:02:33 -04:00
softwarefactory-project-zuul[bot]
e3b5d64aa7 Merge pull request #6722 from wenottingham/over-the-ramparts-we-no-longer-watch
Remove 'rampart' from a user-facing string.

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-15 21:52:57 +00:00
softwarefactory-project-zuul[bot]
eba0e4fd77 Merge pull request #6710 from rooftopcellist/rsyslog_rename_dir
Rename awx rsyslog socket and PID dir

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-15 20:43:40 +00:00
softwarefactory-project-zuul[bot]
d3c80eef4d Merge pull request #6560 from mabashian/5865-schedule-edit
Add support for editing proj/jt/wfjt schedule

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-15 20:21:56 +00:00
softwarefactory-project-zuul[bot]
3683dfab37 Merge pull request #6720 from chrismeyersfsu/feature-wsbroadcast_better_logging
wsbroadcast better logging and behavior

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-15 19:11:26 +00:00
Bill Nottingham
8e3931de37 Remove 'rampart' from a user-facing string. 2020-04-15 15:00:11 -04:00
Shane McDonald
29a582f869 Dockerfile organization 2020-04-15 14:43:59 -04:00
mabashian
be0a7a2aa9 Pass route contents as child instead of using render prop 2020-04-15 14:33:35 -04:00
mabashian
d0d8d1c66c Fix schedule edit prop types error thrown on schedule prop 2020-04-15 14:33:35 -04:00
mabashian
8a8a48a4ff Fix prop types on schedule edit 2020-04-15 14:33:35 -04:00
mabashian
b0aa795b10 Remove rogue console.logs 2020-04-15 14:33:35 -04:00
mabashian
017064aecf Adds support for editing proj/jt/wfjt schedule 2020-04-15 14:33:35 -04:00
softwarefactory-project-zuul[bot]
7311ddf722 Merge pull request #6562 from AlexSCorey/6333-SurveyCleanUp
Fixes several things about Survey List

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-15 18:33:07 +00:00
Christian Adams
69835e9895 Write logs to /dev/null if logging is not enabled 2020-04-15 14:17:21 -04:00
Christian Adams
85960d9035 Volume mount supervisor dir to both containers 2020-04-15 14:11:15 -04:00
Christian Adams
c8ceb62269 Rename awx rsyslog socket and PID dir 2020-04-15 14:11:15 -04:00
chris meyers
1acca459ef nice error message when redis is down
* awx_manage run_wsbroadcast --status nice error message if someone
failed to start awx services (i.e. redis)
2020-04-15 13:28:13 -04:00
Alex Corey
ee6fda9f8a moves validator function 2020-04-15 13:06:30 -04:00
Alex Corey
a95632c349 Adds error handling and validation.
Also adresses small PR issues
2020-04-15 13:06:30 -04:00
Alex Corey
ed3b6385f1 Fixes several things about Survey List
Aligns Select All with other select buttons
Add required asterisk to those items that are required
Adds label for the Default and Question Type column
Adds chips for multiselect items.
Adds RBAC to add and edit survey.
Also fixes a bug where the survey was not reloading properly after edit
2020-04-15 13:06:30 -04:00
softwarefactory-project-zuul[bot]
3518fb0c17 Merge pull request #6717 from ryanpetrello/custom-cred-plugin-instructions
update custom credential plugin docs to point at an example project

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-15 15:39:21 +00:00
softwarefactory-project-zuul[bot]
1289f141d6 Merge pull request #6716 from beeankha/remove_check_mode_text
Remove 'supports_check_mode' Text from Converted Collection Modules

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-15 14:29:15 +00:00
Ryan Petrello
8464ec5c49 update custom credential plugin docs to point at an example project 2020-04-15 09:59:09 -04:00
beeankha
3bc5975b90 Remove 'supports_check_mode' text from converted Collection modules 2020-04-15 09:37:54 -04:00
softwarefactory-project-zuul[bot]
af7e9cb533 Merge pull request #6712 from ryanpetrello/tcp-timeout
properly implement TCP timeouts for external log aggregation

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-15 03:51:22 +00:00
softwarefactory-project-zuul[bot]
af2a8f9831 Merge pull request #6665 from wenottingham/moar-data-plz
Collect information on inventory sources

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-15 00:51:59 +00:00
Bill Nottingham
f99a43ffa6 Collect information on inventory sources
Also remove one minor query from smart inventory collection that will
never return anything.
2020-04-14 19:15:19 -04:00
Ryan Petrello
262d99fde6 properly implement TCP timeouts for external log aggregation
see: https://github.com/ansible/awx/issues/6683
2020-04-14 17:06:30 -04:00
chris meyers
63f56d33aa show user unsafe name
* We log stats using a safe hostname because of prometheus requirements.
However, when we display users the hostname we should use the Instance
hostname. This change outputs the Instance.hostname instead of the safe
prometheus name.
2020-04-14 16:59:34 -04:00
chris meyers
9cabf3ef4d do not include iso nodes in wsbroadcast status 2020-04-14 16:55:56 -04:00
softwarefactory-project-zuul[bot]
2855be9d26 Merge pull request #6689 from john-westcott-iv/collections_oauth_respect
Make the module util respect oauth token over username/password

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-14 20:33:53 +00:00
Marliana Lara
2524e8af47 Separate prompted modal section with divider and fix user word-wrap 2020-04-14 15:08:37 -04:00
Marliana Lara
f957ef7249 Add webhook fields to wf node job template detail 2020-04-14 15:07:32 -04:00
Marliana Lara
4551859248 Add WF details to workflow node view 2020-04-14 15:04:21 -04:00
softwarefactory-project-zuul[bot]
2a4912df3e Merge pull request #6706 from ryanpetrello/rsyslog-restart-warn
make rsyslog service restarts a bit less noisy

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-14 19:03:28 +00:00
chris meyers
daa312d7ee log file for wsbroadcast 2020-04-14 14:21:23 -04:00
Ryan Petrello
e95938715a make rsyslog service restarts a bit less noisy 2020-04-14 14:18:30 -04:00
softwarefactory-project-zuul[bot]
f5d4f7858a Merge pull request #6684 from nixocio/update_ui_docs_naming
Add note about code style for ui_next

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-14 18:05:22 +00:00
softwarefactory-project-zuul[bot]
25e0efd0b7 Merge pull request #6698 from wenottingham/the-time-zone-is-for-loading-and-saving-only
Cast the start/end times with timezone.

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-14 17:53:35 +00:00
nixocio
47a007caee Add note about code sytle for ui_next
Add note about code style for `ui_next`.
2020-04-14 13:16:37 -04:00
Bill Nottingham
cd6d2ed53a Move the comma so unit test can filter things properly. 2020-04-14 13:12:03 -04:00
softwarefactory-project-zuul[bot]
4de61204c4 Merge pull request #6700 from AlanCoding/more_readme
Update AWX collection docs for release 11.0.0

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-14 16:55:14 +00:00
John Westcott IV
6b21f2042b Make the module util respect oauth token over username/password 2020-04-14 12:51:45 -04:00
softwarefactory-project-zuul[bot]
7820517734 Merge pull request #6664 from marshmalien/6530-wf-node-jt
Add JT wf node modal prompt details

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-14 16:46:20 +00:00
softwarefactory-project-zuul[bot]
2ba1288284 Merge pull request #6695 from ryanpetrello/memcached-cleanup
don't wait on memcached TCP

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-14 16:40:52 +00:00
softwarefactory-project-zuul[bot]
149f8a21a6 Merge pull request #6696 from ryanpetrello/rsyslog-splunk-extras
add a few minor logging changes to accomodate Splunk's API

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-14 16:40:19 +00:00
softwarefactory-project-zuul[bot]
602f2951b9 Merge pull request #6702 from ryanpetrello/rsyslogd-no-dev-log
rsyslogd: ignore /dev/log when we load imuxsock

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-14 16:33:50 +00:00
softwarefactory-project-zuul[bot]
b003f42e22 Merge pull request #6547 from AlexSCorey/6384-ConvertWFJTToHooks
Converts WFJTForm to Formik hooks

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-14 16:33:45 +00:00
softwarefactory-project-zuul[bot]
2ee2cd0bd9 Merge pull request #6688 from nixocio/ui_remove_console
Remove console.log

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-14 16:11:03 +00:00
AlanCoding
a79f2ff07a Update AWX collection docs for release 11.0.0 2020-04-14 12:06:26 -04:00
Ryan Petrello
75bb7cce22 don't wait on memcached TCP 2020-04-14 11:45:27 -04:00
Ryan Petrello
52a253ad18 add a few minor logging changes to accomodate Splunk's API
see: https://docs.splunk.com/Documentation/Splunk/8.0.3/Data/UsetheHTTPEventCollector
2020-04-14 11:45:04 -04:00
Ryan Petrello
0f74a05fea rsyslogd: ignore /dev/log when we load imuxsock 2020-04-14 11:34:58 -04:00
Alex Corey
440691387b Puts webhook key on the template object in WFJTEdit
Also adds aria-label to Label Select Options to improve test matchers
 Improves the name of the template payload in WFJTAdd and WFJTEdit
 Updates tests including a failing snapshot DeleteConfirmationModal
 test that was failing in devel
2020-04-14 11:11:50 -04:00
Alex Corey
27e6c2d47d Adds tests 2020-04-14 11:11:50 -04:00
Alex Corey
8b69b08991 Adds formik hook functionality to wfjt form 2020-04-14 11:11:50 -04:00
Marliana Lara
8714bde1b4 Wrap entire date/time string in <Trans> tag 2020-04-14 11:08:12 -04:00
Marliana Lara
28b84d0d71 Use delete operator instead of destructuring 2020-04-14 11:08:12 -04:00
Marliana Lara
c6111fface Partition base resource into defaults and overrides 2020-04-14 11:08:12 -04:00
Marliana Lara
98e8a09ad3 Add JT details to wf node modal 2020-04-14 11:08:11 -04:00
nixocio
3f9af8fe69 Remove console.log
Remove console.log
2020-04-14 11:07:52 -04:00
Ryan Petrello
dbe949a2c2 Merge pull request #6697 from chrismeyersfsu/fix-collection_tests
ensure last comma removed in select
2020-04-14 11:05:29 -04:00
Bill Nottingham
a296f64696 Cast the start/end times with timezone. 2020-04-14 10:53:57 -04:00
chris meyers
ee18400a33 ensure last comma removed in select
* We strip out the json select fields in our tests since it is an sql
lite database underneath. Ideally, we would do something fancier, but we
aren't. In doing this stipping, we could strip the last element in the
projection list. This would result in an extra dangling comma. This
commit removes the danging comma in the projection list after the
removal of JSON projections.
2020-04-14 10:44:02 -04:00
softwarefactory-project-zuul[bot]
98a4e85db4 Merge pull request #6108 from rooftopcellist/rsyslog
Replace our external logging feature with Rsyslog

Reviewed-by: Ryan Petrello
             https://github.com/ryanpetrello
2020-04-14 13:40:41 +00:00
Ryan Petrello
f7f1bdf9c9 properly configure supervisorctl to point at the web volume mount 2020-04-13 21:56:52 -04:00
Ryan Petrello
69cf915a20 add rsyslogd block to the k8s supervisord config file 2020-04-13 20:25:53 -04:00
Ryan Petrello
9440785bdd properly set the group on the rsyslog config 2020-04-13 19:46:34 -04:00
Christian Adams
ca7c840d8c Fix permissions on rsyslog.conf for k8s 2020-04-13 19:33:23 -04:00
softwarefactory-project-zuul[bot]
f85bcae89f Merge pull request #6685 from marshmalien/fix-user-loading
Fix route bug in User view

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-13 20:00:25 +00:00
Christian Adams
a0e31b9c01 Map logging timeout value to healthchecktimeout for http in rsyslog config 2020-04-13 15:22:16 -04:00
softwarefactory-project-zuul[bot]
c414fd68a0 Merge pull request #6176 from Ladas/send_also_workflows_as_part_of_unified_jobs
Send also workflows as part of unified jobs and send all changes to jobs

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-13 18:41:36 +00:00
softwarefactory-project-zuul[bot]
2830cdfdeb Merge pull request #6668 from nixocio/ui_refactor_users_functional
Modify Users component to be function based

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-13 18:35:57 +00:00
softwarefactory-project-zuul[bot]
07e9b46643 Merge pull request #6656 from jlmitch5/withoutWithRouter
excise withRouter from function components

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-13 18:35:53 +00:00
softwarefactory-project-zuul[bot]
1f01521213 Merge pull request #6651 from nixocio/ui_issue_5820
Rename SCM to Source Control

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-13 18:35:46 +00:00
Marliana Lara
8587461ac9 Fix loading bug in User view 2020-04-13 14:19:16 -04:00
nixocio
e54e5280f2 Modify Users component to be function based
Modify Users component to be function based.
2020-04-13 13:43:22 -04:00
softwarefactory-project-zuul[bot]
516a44ce73 Merge pull request #6662 from keithjgrant/5909-jt-launch-prompt-2
JT Launch Prompting (phase 2)

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-13 17:04:41 +00:00
Ryan Petrello
e52cebc28e rsyslogd: use %rawmsg-after-pri% instead of %msg%
after some prolonged RFC reading and tinkering w/ rsyslogd...

cpython's SysLogHandler doesn't emit RFC3164 formatted messages
in the format you'd expect; it's missing the ISO date, hostname, etc...
along with other header values; the handler implementation relies on you
to specify a syslog-like formatter (we've replaced all of this with our
own *custom* logstash-esque formatter that effectively outputs valid JSON
- without dates and other syslog header values prepended)

because of this unanticipated format, rsyslogd chokes when trying to
parse the message's parts;  AWX is emitting:

<priority>RAWJSON

...so the usage of `%msg%` isn't going to work for us, because rsyslog
tries to parse *all* of the possible headers (and yells, because it
can't find a date to parse):

see: https://www.rsyslog.com/files/temp/doc-indent/configuration/properties.html#message-properties

this is fine, because we don't *need* any of that message parsing
anyways; in the end, we're *just* interested in forwarding the raw
JSON/text content to the third party log handler
2020-04-13 11:44:00 -04:00
Ryan Petrello
bb5136cdae properly escape URL paths and querystrings for paths in logging settings 2020-04-13 11:44:00 -04:00
Ryan Petrello
b0db2b7bec add some exception handling for dealing with logging connection resets
when rsyslogd restarts due to config changes, there's a brief moment
where the socket will refuse connections on teardown; exception handling
is needed here to deal with that
2020-04-13 11:44:00 -04:00
Ryan Petrello
1000dc10fb an an rsyslogd config check to the logging test endpoint 2020-04-13 11:44:00 -04:00
Ryan Petrello
2a4b009f04 rsyslogd: use %rawmsg-after-pri% instead of %msg%
after some prolonged RFC reading and tinkering w/ rsyslogd...

cpython's SysLogHandler doesn't emit RFC3164 formatted messages
in the format you'd expect; it's missing the ISO date, hostname, etc...
along with other header values; the handler implementation relies on you
to specify a syslog-like formatter (we've replaced all of this with our
own *custom* logstash-esque formatter that effectively outputs valid JSON
- without dates and other syslog header values prepended)

because of this unanticipated format, rsyslogd chokes when trying to
parse the message's parts;  AWX is emitting:

<priority>RAWJSON

...so the usage of `%msg%` isn't going to work for us, because rsyslog
tries to parse *all* of the possible headers (and yells, because it
can't find a date to parse):

see: https://www.rsyslog.com/files/temp/doc-indent/configuration/properties.html#message-properties

this is fine, because we don't *need* any of that message parsing
anyways; in the end, we're *just* interested in forwarding the raw
JSON/text content to the third party log handler
2020-04-13 11:44:00 -04:00
Ryan Petrello
8cdd42307c clarify that logging username/password is only valid for HTTP/s 2020-04-13 11:44:00 -04:00
Ryan Petrello
269558876e only use a basic auth password for external logging if username is set 2020-04-13 11:44:00 -04:00
Ryan Petrello
bba680671b when writing the rsyslog config, do it post-commit
there's a race condition if we do this pre-commit where the correct
value isn't actually *persisted* to the database yet, and we end up
saving the *prior* setting values
2020-04-13 11:44:00 -04:00
Ryan Petrello
f70a76109c make rsyslog fall back to no-op if logging is disabled 2020-04-13 11:44:00 -04:00
Christian Adams
5d54877183 Add action to default rsyslog.conf so supervisor starts correctly the first time 2020-04-13 11:44:00 -04:00
Ryan Petrello
f7dac8e68d more external logging unit test fixups 2020-04-13 11:44:00 -04:00
Ryan Petrello
39648b4f0b fix up a few test and lint errors related to external logging 2020-04-13 11:44:00 -04:00
Christian Adams
b942fde59a Ensure log messages have valid json
- Fix messages getting contatenated at 8k
 - Fix rsyslog cutting off the opening brace of log messages
 - Make valid default conf and emit logs based on prescence of .sock and
 settings
2020-04-13 11:44:00 -04:00
Ryan Petrello
ce82b87d9f rsyslog hardening (fixing a few weird things we noticed) 2020-04-13 11:44:00 -04:00
Christian Adams
70391f96ae Revert rsyslog valid config to one that fails intentionally 2020-04-13 11:43:59 -04:00
Christian Adams
2329c1b797 Add rsyslog config to container from file for consistency 2020-04-13 11:43:59 -04:00
Christian Adams
470159b4d7 Enable innocuous but valid config for rsyslog if disabled 2020-04-13 11:43:59 -04:00
Christian Adams
e740340793 ConfigMap rsyslog conf files for k8 2020-04-13 11:43:59 -04:00
Christian Adams
4d5507d344 Add default rsyslog.conf without including /etc/rsyslog.conf 2020-04-13 11:43:59 -04:00
Christian Adams
d350551547 Tweaks to Test Button logic and cleans up flake8 and test failures 2020-04-13 11:43:59 -04:00
Christian Adams
7fd79b8e54 Remove unneeded logging sock variable 2020-04-13 11:43:59 -04:00
John Mitchell
eb12f45e8e add ngToast disable on timeout for log agg notifications, and disable test button until active test completes. 2020-04-13 11:43:59 -04:00
Christian Adams
fb047b1267 Add unit tests for reconfiguring rsyslog & for test endpoint 2020-04-13 11:43:59 -04:00
Christian Adams
d31c528257 Fix Logging settings "Test" button functionality 2020-04-13 11:43:59 -04:00
Christian Adams
996d7ce054 Move supervisor and rsyslog sock files to their own dirs under /var/run 2020-04-13 11:43:59 -04:00
Christian Adams
7040fcfd88 Fix container rsyslog dir permissions 2020-04-13 11:43:59 -04:00
John Mitchell
88ca4b63e6 update configure tower in tower test ui for log aggregator form 2020-04-13 11:43:59 -04:00
Shane McDonald
c0af3c537b Configure rsyslog to listen over a unix domain socket instead of a port
- Add a placeholder rsyslog.conf so it doesn't fail on start
 - Create access restricted directory for unix socket to be created in
 - Create RSyslogHandler to exit early when logging socket doesn't exist
 - Write updated logging settings when dispatcher comes up and restart rsyslog so they  take effect
 - Move rsyslogd to the web container and create rpc supervisor.sock
 - Add env var for supervisor.conf path
2020-04-13 11:43:59 -04:00
Christian Adams
f8afae308a Add rsyslog to supervisor for the task container
- Add proper paths for rsyslog's supervisor logs
 - Do not enable debug mode for rsyslogd
 - Include system rsyslog.conf, and specify tower logging conf when
   starting rsyslog.
2020-04-13 11:43:59 -04:00
Christian Adams
4cd0d60711 Properly handle logger paths and https/http configuration
- log aggregator url paths were not being passed to rsyslog
 - http log services like loggly will now truly use http and port 80
 - add rsyslog.pid to .gitignore
2020-04-13 11:43:59 -04:00
Christian Adams
955d57bce6 Upstream rsyslog packaging changes
- add rsyslog repo to Dockerfile for AWX installation
 - Update Library Notes for requests-futures removal
2020-04-13 11:43:59 -04:00
Ryan Petrello
589d27c88c POC: replace our external log aggregation feature with rsyslog
- this change adds rsyslog (https://github.com/rsyslog/rsyslog) as
  a new service that runs on every AWX node (managed by supervisord)
  in particular, this feature requires a recent version (v8.38+) of
  rsyslog that supports the omhttp module
  (https://github.com/rsyslog/rsyslog-doc/pull/750)
- the "external_logger" handler in AWX is now a SysLogHandler that ships
  logs to the local UDP port where rsyslog is configured to listen (by
  default, 51414)
- every time a LOG_AGGREGATOR_* setting is changed, every AWX node
  reconfigures and restarts its local instance of rsyslog so that its
  fowarding settings match what has been configured in AWX
- unlike the prior implementation, if the external logging aggregator
  (splunk/logstash) goes temporarily offline, rsyslog will retain the
  messages and ship them when the log aggregator is back online
- 4xx or 5xx level errors are recorded at /var/log/tower/external.err
2020-04-13 11:43:59 -04:00
softwarefactory-project-zuul[bot]
eafb751ecc Merge pull request #6679 from ryanpetrello/fix-6675
skip non-files when consuming events synced from isolated hosts

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-13 15:36:42 +00:00
softwarefactory-project-zuul[bot]
30ea66023f Merge pull request #6671 from wenottingham/even-moar-data-plz
Collect task timing, warnings, and deprecations from job events

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-13 15:06:46 +00:00
Ryan Petrello
9843e21632 skip non-files when consuming events synced from isolated hosts
see: https://github.com/ansible/awx/issues/6675
2020-04-13 10:14:10 -04:00
softwarefactory-project-zuul[bot]
6002beb231 Merge pull request #6677 from chrismeyersfsu/fix-spelling
fix spelling mistake in wsbroadcast status output

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-13 14:13:24 +00:00
chris meyers
9c6e42fd1b fix spelling mistake in wsbroadcast status output 2020-04-13 09:37:32 -04:00
softwarefactory-project-zuul[bot]
eeab4b90a5 Merge pull request #6568 from AlanCoding/whoops_not_changed
Do not set changed=True if the object did not change

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-10 00:16:02 +00:00
Keith Grant
7827a2aedd fix double-fetch of cred types in launch prompts 2020-04-09 16:07:06 -07:00
softwarefactory-project-zuul[bot]
a7f1a36ed8 Merge pull request #6670 from ryanpetrello/redis-fixup
work around redis connection failures in the callback receiver

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-09 21:41:08 +00:00
Bill Nottingham
d651786206 Collect task timing, warnings, and deprecations from job events
Timing information requires ansible-runner >= 1.4.6.
2020-04-09 17:27:19 -04:00
softwarefactory-project-zuul[bot]
19e4758be1 Merge pull request #6637 from john-westcott-iv/tower_workflow_job_lanch_update
Initial commit of tests for tower_workflow_launch

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-09 19:53:35 +00:00
softwarefactory-project-zuul[bot]
fe9de0d4cc Merge pull request #6658 from mabashian/6655-job-redirect
Fixes issue where job type redirects weren't firing correctly

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-09 19:47:20 +00:00
Ryan Petrello
80147acc1c work around redis connection failures in the callback receiver
if redis stops/starts, sometimes the callback receiver doesn't recover
without a restart; this fixes that
2020-04-09 15:38:03 -04:00
beeankha
4acdf8584b Update workflow_launch module and test playbook 2020-04-09 15:12:49 -04:00
beeankha
cf607691ac Pass data and errors more clearly, change extra_vars to be a dict, update test playbook to have a task utilizing extra_vars 2020-04-09 12:40:13 -04:00
beeankha
d7adcfb119 Revert unnecessary changes made to test playbook during rebase 2020-04-09 12:38:06 -04:00
beeankha
97d26728e4 Fix one more linter issue 2020-04-09 12:38:06 -04:00
John Westcott IV
6403895eae Puting tasks back to natural order 2020-04-09 12:38:06 -04:00
beeankha
8b26ff1fe6 Fix linter errors 2020-04-09 12:38:06 -04:00
beeankha
9ddd020348 Fix sanity tests and edit test playbook 2020-04-09 12:38:06 -04:00
John Westcott IV
a2d1c32da3 Initial commit of tests for tower_workflow_launch 2020-04-09 12:38:06 -04:00
Keith Grant
af18aa8456 restructure 'if's in LaunchPrompt 2020-04-09 08:58:12 -07:00
mabashian
188b23e88f No need to pass undefined explicitly. view will be undefined if it's not passed 2020-04-09 10:28:25 -04:00
mabashian
63bed7a30d Fixes issue where job type redirects weren't firing correctly 2020-04-09 10:28:25 -04:00
AlanCoding
fd93964953 Changed status tweaks for API validation and encryption
API validation topic:
 - do not set changed=True if the object did not actually change
 - deals with cases where API manipulates data before saving

Warn if encrypted data prevent accurate changed status

Handle false changed case of tower_user password
  password field not present in data

Test changed=True warning with JT/WFJT survey spec defaults
  case for list data in JSON
2020-04-09 09:58:12 -04:00
chris meyers
1f9f86974a test analytics table output
* unified_jobs output should include derived jobs i.e. project update,
inventory update, job
* This PR adds a test to ensure that.
2020-04-09 15:20:27 +02:00
Ladislav Smola
6a86af5b43 Use indexed timestamps
Use created and finished, which are indexed, to try to fetch all
states of jobs. If job is not finished, we might not get the
right terminal status, but that should be ok for now.
2020-04-09 15:20:27 +02:00
Ladislav Smola
6a503e152a Send also workflows as part of unified jobs
Workflows do not have a record in main_job, therefore the JOIN
was ignoring those. We need to do LEFT JOIN to include also
workflows.

It also seems like we are not able to get a link to organizations
from workflows? When looking at:
<tower_url>#/organizations?organization_search=page_size:20;order_by:name

We don't seem to list a relation to workflows. Is it possible to get it from
somewhere?
2020-04-09 15:20:27 +02:00
Ladislav Smola
b7227113be Use modified to check if job should be sent to analytics
It can take several hours for a job to go from pending to
successful/failed state and we need to also send the job with
a changed state, otherwise the analytics will be incorrect.
2020-04-09 15:20:27 +02:00
softwarefactory-project-zuul[bot]
907da2ae61 Merge pull request #6660 from mabashian/6606-jt-launch
Pass empty params to launch endpoint rather than null

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-08 23:46:48 +00:00
Keith Grant
6f76b15d92 fix LaunchButton tests 2020-04-08 15:36:45 -07:00
mabashian
9d6fbd6c78 Updates launch button tests to reflect passing empty object rather than null for launch payload without prompts 2020-04-08 16:10:02 -04:00
mabashian
edb4dac652 Pass empty params to launch endpoint rather than null to alleviate 400 error when launching a JT with default creds. 2020-04-08 16:10:02 -04:00
Keith Grant
42898b94e2 add more prompt tests 2020-04-08 11:48:11 -07:00
softwarefactory-project-zuul[bot]
943543354a Merge pull request #6643 from mabashian/upgrade-pf-2.39.15
Upgrades pf deps to latest

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-08 18:11:04 +00:00
softwarefactory-project-zuul[bot]
2da22ccd8a Merge pull request #6659 from shanemcd/pre-tty
Enable tty in dev container

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-08 16:35:37 +00:00
Keith Grant
9cab5a5046 add 'other prompt' fields to launch API call 2020-04-08 08:58:14 -07:00
softwarefactory-project-zuul[bot]
e270a692b7 Merge pull request #6644 from jakemcdermott/6638-fix-initial-playbook-value
Only clear playbook when different project is selected

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-08 15:45:27 +00:00
Shane McDonald
677a8dae7b Enable tty in dev container
Pretty colors and real-time migration logs
2020-04-08 11:43:30 -04:00
John Mitchell
6eeb32a447 excise withRouter from function components 2020-04-08 10:59:57 -04:00
softwarefactory-project-zuul[bot]
e57991d498 Merge pull request #6652 from matburt/update_zome_docz
Update some contributing docs

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-08 14:58:40 +00:00
softwarefactory-project-zuul[bot]
4242bd55c2 Merge pull request #6639 from mabashian/route-render-prop
Converts most of our route render prop usage to children

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-08 14:49:42 +00:00
softwarefactory-project-zuul[bot]
e8fb466f0f Merge pull request #6646 from beeankha/credential_module_no_log
Activate no_log for Values in input Parameter of tower_credential Module

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-08 14:18:08 +00:00
nixocio
869fcbf483 Rename SCM to Source Control
Rename `SCM` references to `Source Control`.
Also update tests to reflect this change.

closes: https://github.com/ansible/awx/issues/5820
2020-04-08 10:10:07 -04:00
Matthew Jones
6abeaf2c55 Update some contributing docs
* Update the tools called in the dev environment
* More RMQ purges from architecture docs
* Remove the old clusterdev target
2020-04-08 10:03:22 -04:00
mabashian
f734918d3e Removes withRouter from breadcrumbs in favor of hooks 2020-04-08 09:48:16 -04:00
softwarefactory-project-zuul[bot]
91f2e0c32b Merge pull request #6605 from ansible/firehose_pkey
update firehose script for bigint migration

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-08 13:33:19 +00:00
softwarefactory-project-zuul[bot]
88d6dd96fa Merge pull request #6645 from ryanpetrello/some-more-iso-cleanup
more ansible runner isolated cleanup

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-08 13:19:06 +00:00
mabashian
7feac5ecd6 Updates routes in breadcrumbs so they no longer use the render prop 2020-04-08 09:17:46 -04:00
mabashian
193ec21149 Converts most of our route render prop usage to children 2020-04-08 09:17:46 -04:00
mabashian
14e62057da Fix linting error by not using index in key 2020-04-08 09:12:32 -04:00
softwarefactory-project-zuul[bot]
a26c0dfb8a Merge pull request #6629 from AlanCoding/one_token_to_rule_them_all
Document and align the env var for OAuth token

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-08 06:09:29 +00:00
Ryan Petrello
6b4219badb more ansible runner isolated cleanup
follow-up to https://github.com/ansible/awx/pull/6296
2020-04-08 01:18:05 -04:00
beeankha
1f598e1b12 Activate no_log for values in input parameter 2020-04-07 20:34:54 -04:00
softwarefactory-project-zuul[bot]
7ddd4d74c0 Merge pull request #6625 from marshmalien/jt-form-bugs
Fix JT form playbook select error message and more 

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-07 22:55:30 +00:00
softwarefactory-project-zuul[bot]
6ad6f48ff0 Merge pull request #6642 from jakemcdermott/update-contrib-doc
Add note to docs about async form behavior

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-07 22:32:48 +00:00
Jake McDermott
d736adbedc Only clear playbook when different project is selected 2020-04-07 18:12:48 -04:00
mabashian
c881762c97 Upgrades pf deps to latest 2020-04-07 18:07:47 -04:00
Jake McDermott
be5d067148 Add note to docs about async form behavior 2020-04-07 17:30:03 -04:00
Marliana Lara
189a10e35a Fix playbook error message and JT save bug 2020-04-07 17:01:53 -04:00
softwarefactory-project-zuul[bot]
285e9c2f62 Merge pull request #6635 from AlanCoding/no_tower_cli
Remove tower-cli from Zuul CI for AWX collection

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-07 20:46:45 +00:00
softwarefactory-project-zuul[bot]
054de87f8e Merge pull request #6601 from shanemcd/dont-delete-my-db
Use a docker volume for the dev env db

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-07 20:00:57 +00:00
softwarefactory-project-zuul[bot]
7de8a8700c Merge pull request #6487 from lj020326/devel
fix for CSRF issue in traefik configuration 

Reviewed-by: Shane McDonald <me@shanemcd.com>
             https://github.com/shanemcd
2020-04-07 20:00:51 +00:00
softwarefactory-project-zuul[bot]
4f7669dec1 Merge pull request #6634 from AlanCoding/silence
Silence deprecation warnings from tower_credential

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-07 19:30:45 +00:00
softwarefactory-project-zuul[bot]
25a1bc7a33 Merge pull request #6631 from ryanpetrello/refresh-token-expiry
properly respect REFRESH_TOKEN_EXPIRE_SECONDS when generating new tokens

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-07 18:28:26 +00:00
softwarefactory-project-zuul[bot]
955ef3e9cb Merge pull request #6541 from AlanCoding/jt_org_left_behind
Fix RBAC loose items from reversed decision on JT org permissions

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-07 17:41:31 +00:00
AlanCoding
0e8f2307fc Remove tower-cli from Zuul CI for AWX collection 2020-04-07 13:31:06 -04:00
AlanCoding
bcfd2d6aa4 Silence deprecation warnings from tower_credential 2020-04-07 13:24:34 -04:00
Shane McDonald
7e52f4682c Use a docker volume for the dev env db 2020-04-07 13:14:19 -04:00
Keith Grant
9c218fa5f5 flush out prompt misc fields 2020-04-07 09:41:45 -07:00
softwarefactory-project-zuul[bot]
508aed67de Merge pull request #6624 from marshmalien/6608-project-lookup-bug
Prevent project lookup from firing requests on every render

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-07 15:53:07 +00:00
Ryan Petrello
0bf1116ef8 properly respect REFRESH_TOKEN_EXPIRE_SECONDS when generating new tokens
see: https://github.com/ansible/awx/issues/6630
see: https://github.com/jazzband/django-oauth-toolkit/issues/746
2020-04-07 11:34:01 -04:00
AlanCoding
45df5ba9c4 Manually document tower host default 2020-04-07 10:18:55 -04:00
AlanCoding
b90a296d41 Document and align the env var for OAuth token 2020-04-07 10:00:02 -04:00
softwarefactory-project-zuul[bot]
d40143a63d Merge pull request #6607 from ryanpetrello/graphite-no-tags
don't send tags to the Grafana annotations API if none are specified

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-07 06:07:58 +00:00
softwarefactory-project-zuul[bot]
db40d550be Merge pull request #6472 from AlanCoding/no_required
Remove field properties which are default values anyway

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-07 02:57:19 +00:00
AlanCoding
da661e45ae Remove unnecessary module parameters
remove cases of required=False, the default
remove str type specifier which, the default
remove supports check mode, not changeable
2020-04-06 22:08:41 -04:00
softwarefactory-project-zuul[bot]
58160b9eb4 Merge pull request #6623 from nixocio/ui_issue_6133
Update "Enable Webhooks" option in WFJT

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-07 01:05:03 +00:00
softwarefactory-project-zuul[bot]
05b28efd9c Merge pull request #6617 from chrismeyersfsu/fix-memcached
fix memcached in dev env

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-06 23:49:04 +00:00
softwarefactory-project-zuul[bot]
0b433ebb1c Merge pull request #6609 from beeankha/wfjt_module_inventory_fix
Resolve Name to ID Properly in WFJT Module

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-06 23:42:34 +00:00
softwarefactory-project-zuul[bot]
5b3f5bf37d Merge pull request #6559 from jlmitch5/newNewAssocDisassocHostGroupsList
association and disassociation of host groups and inventory host groups list.

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-06 23:07:19 +00:00
softwarefactory-project-zuul[bot]
397c0092a0 Merge pull request #6569 from ryanpetrello/log-decimal
properly serialize external logs that contain decimal.Decimal objects

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-06 23:07:15 +00:00
softwarefactory-project-zuul[bot]
362fdaeecc Merge pull request #6604 from jakemcdermott/remove-state-checks-from-user-test
Remove state checks from user list test

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-06 23:07:11 +00:00
softwarefactory-project-zuul[bot]
606c3c3595 Merge pull request #6338 from rooftopcellist/update_logstash_docs
Update logstash docs

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-06 21:10:44 +00:00
softwarefactory-project-zuul[bot]
42705c9eb0 Merge pull request #6545 from fosterseth/fix-4198-readd-user-to-org
Fix adding orphaned user to org

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-06 21:10:38 +00:00
Marliana Lara
c2ba495824 Prevent project lookup from firing requests on every render 2020-04-06 16:50:10 -04:00
nixocio
85a1c88653 Update "Enable Webhooks" option in WFJT
closes: https://github.com/ansible/awx/issues/6163
2020-04-06 16:48:18 -04:00
chris meyers
c4d704bee1 fix memcached in dev env
* create memcached dir via git so that the current user owns it.
Otherwise, docker will create the dir as root at runtime
2020-04-06 16:35:52 -04:00
softwarefactory-project-zuul[bot]
60d499e11c Merge pull request #6495 from john-westcott-iv/tower_credential_update_new
Initial conversion of tower_credential

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-06 20:29:44 +00:00
softwarefactory-project-zuul[bot]
bb48ef40be Merge pull request #6595 from nixocio/ui_docs_minor_update
Minor update UI docs

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-06 20:26:09 +00:00
Ryan Petrello
771ca2400a don't send tags to the Grafana annotations API if none are specified
see: https://github.com/ansible/awx/issues/6580
2020-04-06 15:47:48 -04:00
softwarefactory-project-zuul[bot]
735d44816b Merge pull request #6592 from kdelee/awxkit_wfjtn_identifier
make awxkit pass through identifier for wfjtn

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-06 19:42:10 +00:00
beeankha
e346493921 Add inventory param to the wfjt module test playbook 2020-04-06 15:21:57 -04:00
beeankha
bd39fab17a Resolve name to ID correctly in workflow jt module 2020-04-06 15:08:01 -04:00
John Mitchell
ce30594b30 update inventory and host routes to being child-based instead of render prop based 2020-04-06 15:05:11 -04:00
John Mitchell
2021c2a596 remove unnecessary eslint ignore comics, replace react router use with hooks where possible in inventories 2020-04-06 14:38:33 -04:00
John Mitchell
ecd1d09c9a add breadcrumb config for inv host facts and groups 2020-04-06 14:38:33 -04:00
John Mitchell
7dbde8d82c fix linting errors and add note to host groups disassocation modal 2020-04-06 14:38:33 -04:00
John Mitchell
4e64b17712 update hosts groups api GET to all_groups 2020-04-06 14:38:33 -04:00
John Mitchell
cc4c514103 add association and disassociation of groups on invhostgroups/hostgroups lists 2020-04-06 14:38:33 -04:00
John Mitchell
ab8726dafa move associate modal and disassociate button up to components for use across screens 2020-04-06 14:38:33 -04:00
Ryan Petrello
2cefba6f96 properly serialize external logs that contain decimal.Decimal objects 2020-04-06 14:24:24 -04:00
softwarefactory-project-zuul[bot]
592043fa70 Merge pull request #6588 from ryanpetrello/400-error-creds
fix a typo in the credentials UI

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-06 18:00:43 +00:00
Mat Wilson
59477aa221 update firehose script for bigint migration 2020-04-06 10:54:08 -07:00
Jake McDermott
279fe53837 Remove state checks from user list test
Don't check for loading in UserList test
2020-04-06 13:40:31 -04:00
Shane McDonald
bb319136e4 Merge pull request #6585 from shanemcd/cleanup-cleanup
Tidy up the dev environment a bit
2020-04-06 13:09:39 -04:00
beeankha
b0f68d97da Update comment in test playbook: 2020-04-06 12:38:46 -04:00
softwarefactory-project-zuul[bot]
a46462eede Merge pull request #6526 from chrismeyersfsu/feature-memcached_socket_devel
Feature memcached socket devel

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-06 16:24:42 +00:00
softwarefactory-project-zuul[bot]
646e403fbd Merge pull request #6570 from marshmalien/6530-wf-node-inv-src-details
Add Inventory Source workflow node prompt details

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-06 16:10:33 +00:00
nixocio
64c846cfc1 Minor update UI docs
Fix typos
Highlight code sessions
2020-04-06 11:36:41 -04:00
Elijah DeLee
8e07269738 make awxkit pass through identifier for wfjtn
We need this to be able to create workflow job template nodes with identifier
2020-04-06 11:26:56 -04:00
Shane McDonald
6fc815937b Tidy up the dev environment a bit 2020-04-06 11:13:51 -04:00
Ryan Petrello
014c995a8f fix a typo in the credentials UI
this is causing 400 level errors for some users
2020-04-06 10:45:33 -04:00
John Westcott IV
c1bb62cc36 Removing recursive check, allowwing old pattern to commence 2020-04-06 10:11:18 -04:00
beeankha
f5cf7c204f Update unit test, edit credential module to pass sanity tests 2020-04-06 10:11:18 -04:00
John Westcott IV
6d08e21511 Resolving comment and updating tests 2020-04-06 10:11:18 -04:00
John Westcott IV
8b881d195d Change lookup to include organization 2020-04-06 10:11:18 -04:00
John Westcott IV
5c9ff51248 Change compare_fields to static method 2020-04-06 10:11:18 -04:00
AlanCoding
3f64768ba8 loosen some credential test assertions 2020-04-06 10:11:18 -04:00
John Westcott IV
fd24918ba8 Initial conversion of tower_credential 2020-04-06 10:11:18 -04:00
softwarefactory-project-zuul[bot]
f04e7067e8 Merge pull request #6582 from chrismeyersfsu/fix-redis_startup
align with openshift

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-06 13:52:08 +00:00
softwarefactory-project-zuul[bot]
9a91c0bfb2 Merge pull request #6572 from AlanCoding/approval_identifier
Allow setting identifier for approval nodes

Reviewed-by: Bianca Henderson <beeankha@gmail.com>
             https://github.com/beeankha
2020-04-06 13:39:39 +00:00
chris meyers
c06188da56 align with openshift 2020-04-06 09:16:46 -04:00
chris meyers
7433aab258 switch memcached from tcp to unix domain socket 2020-04-06 08:35:12 -04:00
chris meyers
37a715c680 use memcached unix domain socket rather than tcp 2020-04-06 08:35:12 -04:00
chris meyers
3d9eb3b600 align with openshift 2020-04-05 20:07:15 -04:00
softwarefactory-project-zuul[bot]
99511de728 Merge pull request #6554 from wenottingham/this-may-be-what-alan-suggested
Allow disassociating orphaned users from credentials

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-03 21:26:49 +00:00
softwarefactory-project-zuul[bot]
82b1b85fa4 Merge pull request #6421 from AlexSCorey/6183-SurveyPreview
Adds Survey Preview Functionality

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-03 21:20:41 +00:00
softwarefactory-project-zuul[bot]
2aa29420ee Merge pull request #6565 from chrismeyersfsu/fix-schema_workflow_identifier
static identifier in OPTIONS response for workflow job template node

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-03 21:20:37 +00:00
softwarefactory-project-zuul[bot]
9e331fe029 Merge pull request #6567 from mabashian/6531-approval-drawer-item-id
Adds workflow job id to header of approval drawer items

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-03 21:14:53 +00:00
softwarefactory-project-zuul[bot]
591cdb6015 Merge pull request #6566 from mabashian/4227-wf-template-row-rbac
Fix bug where JT is disabled in workflow node form for user with execute permissions on said JT

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-03 20:56:25 +00:00
softwarefactory-project-zuul[bot]
bc244b3600 Merge pull request #6564 from dsesami/column-type-name-change
Changed column label for plain jobs to "Playbook Run" to align with search

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-03 20:38:20 +00:00
AlanCoding
dbe3863b04 Allow setting identifier for approval nodes 2020-04-03 15:33:57 -04:00
Marliana Lara
ae021c37e3 Add inventory source prompt details 2020-04-03 14:56:20 -04:00
Keith Grant
8baa9d8458 clean up launch prompt credentials, display errors 2020-04-03 11:47:06 -07:00
Daniel Sami
3c888475a5 Changed displayed type name of plain jobs
updated and added i18n

removed import

prettier
2020-04-03 14:35:09 -04:00
softwarefactory-project-zuul[bot]
29b567d6e1 Merge pull request #6550 from ryanpetrello/fix-minutely-hourly
remove the limitation on (very) old DTSTART values for schedules

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-03 18:32:15 +00:00
softwarefactory-project-zuul[bot]
00aa1ad295 Merge pull request #6553 from ryanpetrello/remove-manual-inv-source-for-good
remove deprecated manual inventory source support

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-03 18:09:36 +00:00
Bill Nottingham
4f3213715e Allow disassociating any user from a credential role.
This is preventing removing roles from users no longer in the organization.
2020-04-03 13:39:28 -04:00
mabashian
0389e72197 Adds workflow job id to approval header link to match up with what's displayed on the jobs list 2020-04-03 13:39:06 -04:00
mabashian
0732795ecc Rows in the wfjt node form templates list should only be disabled if the user cannot start the job. 2020-04-03 13:27:28 -04:00
chris meyers
a26df3135b static identifier in docs
* OPTIONS response descritpion for workflow job template node identifier
value was an ever changing uuid4(). This is telling the user the wrong
thing. We can not know what uuid4() is going to be in the docs. Instead,
for the OPTIONS response description, tell the user the form that the
uuid4() takes, ie. xxx-xxxx...
* Note that the API browser still populates a uuid4 for the user when it
generates the sample POST data. This is nice.
2020-04-03 13:12:49 -04:00
softwarefactory-project-zuul[bot]
a904aea519 Merge pull request #6551 from chrismeyersfsu/fix-nonce_replay_timestamp
simplify nonce creation and extraction

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-03 16:32:09 +00:00
Ryan Petrello
6bd5053ae8 remove the limitation on (very) old DTSTART values for schedules 2020-04-03 10:59:35 -04:00
Ryan Petrello
8b00b8c9c2 remove deprecated legacy manual inventory source support
see: https://github.com/ansible/awx/issues/6309
2020-04-03 10:54:43 -04:00
softwarefactory-project-zuul[bot]
2b9acd78c8 Merge pull request #6522 from chrismeyersfsu/feature-wsbroadcast_status
add broadcast websocket status command

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-03 02:25:25 +00:00
chris meyers
d7f0642f48 add ws broadcast status to sos report 2020-04-02 21:46:12 -04:00
chris meyers
8bbae0cc3a color output of ws broadcast connection status 2020-04-02 21:46:12 -04:00
chris meyers
c00f1505d7 add broadcast websocket status command 2020-04-02 21:46:12 -04:00
softwarefactory-project-zuul[bot]
a08e6691fb Merge pull request #6266 from rooftopcellist/configmap_container_files
ConfigMap supervisor configs and launch scripts for k8s

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-03 01:07:27 +00:00
softwarefactory-project-zuul[bot]
98bc499498 Merge pull request #6468 from jlmitch5/hostGroupsList
add inventory host groups list and host groups lists

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-03 00:46:33 +00:00
chris meyers
6d0c42a91a align with configmap changes 2020-04-02 20:05:26 -04:00
chris meyers
79c5a62279 simplify nonce creation and extraction
* time() library supports leap seconds also
2020-04-02 19:57:50 -04:00
softwarefactory-project-zuul[bot]
3bb671f3f2 Merge pull request #6497 from john-westcott-iv/tower_notification_update
Initial conversion of tower_notification

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-02 23:29:57 +00:00
Keith Grant
0b9c5c410a add credential select list to launch CredentialsStep 2020-04-02 16:29:40 -07:00
softwarefactory-project-zuul[bot]
d77d5a7734 Merge pull request #6548 from marshmalien/5636-translate-login
Mark login button for translation

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-02 23:20:37 +00:00
Keith Grant
0a00a3104a add CredentialTypesAPI.loadAllTypes helper function 2020-04-02 13:55:30 -07:00
John Mitchell
ab36129395 add inventory host groups list and host groups lists 2020-04-02 15:02:41 -04:00
AlanCoding
e99500cf16 Mark test as xfail, move to unit testing 2020-04-02 14:48:33 -04:00
softwarefactory-project-zuul[bot]
299497ea12 Merge pull request #6490 from marshmalien/5997-wf-view-node
Hook up view node button in workflow visualizer

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-02 18:27:09 +00:00
Seth Foster
843c22c6b1 Allow orphaned user to be added to org
Fixed bug where an org admin was not able to add
an orphaned user to the org, in the case where the
orphan had an ancestor role that matched one of the
roles for of the org admin.

scenario to fix -- sue is member of cred1, where cred1 is
part of org1. org1 admin cannot add sue to org1, because
the cred1 role for sue has an ancestor to org1 role. The org1
admin cannot change or attach sue to org1.

tower issue #4198 and #4197
2020-04-02 14:24:55 -04:00
Marliana Lara
86b49b6fe2 Mark login button for translation 2020-04-02 14:19:13 -04:00
Christian Adams
9489f00ca4 Align k8 and ocp supervisor scripts
- Handle scl enable calls for python processes that use postgresql
 - Handle ocp specific vars better
2020-04-02 13:56:33 -04:00
chris meyers
6d60e7dadc align with openshift 2020-04-02 13:56:33 -04:00
Christian Adams
346b9b9e3e ConfigMap supervisor configs and launch scripts for k8s 2020-04-02 13:56:33 -04:00
softwarefactory-project-zuul[bot]
99384b1db9 Merge pull request #6506 from shanemcd/stateless-set
Switch from StatefulSet to Deployment

Reviewed-by: Matthew Jones <mat@matburt.net>
             https://github.com/matburt
2020-04-02 17:51:25 +00:00
Marliana Lara
d1b5a60bb9 Add project node details 2020-04-02 13:09:24 -04:00
Shane McDonald
d57258878d Update more references to statefulset 2020-04-02 12:44:26 -04:00
softwarefactory-project-zuul[bot]
48414f6dab Merge pull request #6542 from chrismeyersfsu/fix-align_redis
Fix align redis

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-02 16:22:31 +00:00
Shane McDonald
ff0186f72b Delete k8s StatefulSet if it exists (for upgrades) 2020-04-02 12:21:35 -04:00
softwarefactory-project-zuul[bot]
a682565758 Merge pull request #6385 from AlexSCorey/6317-ConvertJTFormstoFormikHooks
Uses formik hooks for JT Form

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-02 15:52:35 +00:00
softwarefactory-project-zuul[bot]
0dee2e5973 Merge pull request #6482 from AlexSCorey/5901-SupportForWFJTSurvey
Adds Survey Functionality to WFJT

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-02 15:19:21 +00:00
chris meyers
929f4bfb81 start redis container with conf file 2020-04-02 11:13:35 -04:00
AlanCoding
ac474e2108 Fix RBAC loose items from reversed decision on JT org permissions 2020-04-02 10:17:04 -04:00
Alex Corey
d6722c2106 Adds tests for Survey Preview functionality 2020-04-02 10:02:35 -04:00
Alex Corey
6eef0b82bd Adds Survey Preview Functionality 2020-04-02 10:02:35 -04:00
Alex Corey
fb4343d75e Removes uncessary formikContext items in favor of useField.
Removed OrgId value from formik and get that value from project field
Updates tests and type.js to reflect those changes.
2020-04-02 09:31:35 -04:00
Alex Corey
a867a32b4e Uses formik hooks for JT Form 2020-04-02 09:30:12 -04:00
Shane McDonald
3060505110 Switch from StatefulSet to Deployment
We can do this now that we dropped RabbitMQ.
2020-04-02 09:24:49 -04:00
beeankha
5d68f796aa Rebase + fix typos 2020-04-02 09:21:33 -04:00
AlanCoding
15036ff970 Add unit tests for notification module 2020-04-02 09:14:50 -04:00
John Westcott IV
32783f7aaf Fixing linting errors 2020-04-02 09:14:50 -04:00
John Westcott IV
8699a8fbc2 Resolving comments on PR
Made notification type optional

Fixed examples to use notification_configuration

Fixed defaults for headers to prevent deprication warning

Removed default on messages
2020-04-02 09:14:49 -04:00
John Westcott IV
b4cde80fa9 Updating example to match test 2020-04-02 09:14:49 -04:00
John Westcott IV
eb4db4ed43 Adding field change to readme and example and test of custom messages 2020-04-02 09:14:49 -04:00
John Westcott IV
649aafb454 Initial conversion of tower_notification 2020-04-02 09:14:49 -04:00
softwarefactory-project-zuul[bot]
b6c272e946 Merge pull request #6525 from ryanpetrello/bye-bye-activity-stream-middleware
get rid of the activity stream middleware

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-02 05:25:24 +00: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
Marliana Lara
4704e24c24 Fetch full resource object and replace the matching node 2020-04-01 15:21:42 -04:00
softwarefactory-project-zuul[bot]
e5f293ce52 Merge pull request #6486 from keithjgrant/5909-jt-launch-prompt
JT Launch Prompting (phase 1)

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-01 18:29:27 +00:00
softwarefactory-project-zuul[bot]
d64b898390 Merge pull request #6491 from john-westcott-iv/second_tower_job_template_update
Second attempt at converting tower_job_template

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-01 14:09:22 +00:00
softwarefactory-project-zuul[bot]
498c525b34 Merge pull request #6513 from SebastianThorn/devel
[DOC] Adds comment about needing to be a pem-file

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-01 13:22:03 +00:00
beeankha
bb184f8ffb Update booleans to pass linter 2020-04-01 08:58:28 -04:00
softwarefactory-project-zuul[bot]
7f537dbedf Merge pull request #6515 from ryanpetrello/cleanup-some-more-redis
remove some unused code from the redis rewrite

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-04-01 12:38:48 +00:00
Ryan Petrello
f9b8a69f7b remove some unused code from the redis rewrite 2020-04-01 08:03:59 -04:00
Sebastian Thörn
bc228b8d77 Adds comment about needing to be a pem-file
This needs to be a .pem-file
2020-04-01 11:54:07 +02:00
Keith Grant
7710ad2e57 move OptionsList to components; add launch prompt tests 2020-03-31 13:59:14 -07:00
beeankha
9f2c9b13d7 Update unit test, extra_vars handling, and edit README 2020-03-31 16:16:11 -04:00
softwarefactory-project-zuul[bot]
6940704deb Merge pull request #6509 from ryanpetrello/twisted-cves
update to the latest twisted to address two open CVEs

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-31 19:59:11 +00:00
softwarefactory-project-zuul[bot]
6b9cacb85f Merge pull request #6508 from ryanpetrello/django-extensions-bump
bump django-extensions version to address a bug in shell_plus

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-31 19:16:49 +00:00
softwarefactory-project-zuul[bot]
cfa0fdaa12 Merge pull request #6337 from rebeccahhh/activity-stream-grab-bag
add in summary fields to activity stream logging output

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-31 19:15:51 +00:00
Ryan Petrello
4423e6edae update to the latest twisted to address two open CVEs 2020-03-31 13:47:56 -04:00
softwarefactory-project-zuul[bot]
13faa0ed2e Merge pull request #6489 from wenottingham/that-ain't-right
Don't return different fields for smart vs non-smart inventories

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-31 17:43:03 +00:00
Ryan Petrello
42336355bb bump django-extensions version to address a bug in shell_plus
see: https://github.com/ansible/awx/pull/6441
see: e8d5daa06e
2020-03-31 13:39:13 -04:00
Marliana Lara
c18aa90534 Add timeout detail to node view modal 2020-03-31 13:39:05 -04:00
softwarefactory-project-zuul[bot]
39460fb3d3 Merge pull request #6505 from squidboylan/tower_group_integration_tests
Collection: add tower_group child group tests

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-31 17:31:00 +00:00
Keith Grant
4f51c1d2c9 fix LaunchButton tests 2020-03-31 10:09:33 -07:00
Caleb Boylan
04ccff0e3f Collection: add tower_group child group tests 2020-03-31 09:43:53 -07:00
softwarefactory-project-zuul[bot]
2242119182 Merge pull request #6419 from mabashian/5864-schedule-add-2
Implement schedule add form on JT/WFJT/Proj

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-31 16:06:46 +00:00
Marliana Lara
5cba34c34d Use styles to add prompt header spacing 2020-03-31 12:05:13 -04:00
mabashian
33a699b8ae Display form errors on new lines if there are multiple 2020-03-31 10:57:30 -04:00
softwarefactory-project-zuul[bot]
344a4bb238 Merge pull request #6494 from ryanpetrello/quiter-pg-migration
detect event migration tables in a less noisy way

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-31 14:30:15 +00:00
softwarefactory-project-zuul[bot]
0beda08cf9 Merge pull request #6471 from megabreit/jinja2-installer-fix
support for older jinja2 in installer #5501

Reviewed-by: Ryan Petrello
             https://github.com/ryanpetrello
2020-03-31 14:10:21 +00:00
softwarefactory-project-zuul[bot]
2264a98c04 Merge pull request #6455 from AlanCoding/auth_errors
Improve error handling related to authentication

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-31 11:28:37 +00:00
Ryan Petrello
d19a9db523 detect event migration tables in a less noisy way
see: https://github.com/ansible/awx/issues/6493
2020-03-31 00:05:30 -04:00
John Westcott IV
4b76332daf Added notification of removal of extra_vars_path 2020-03-30 23:35:11 -04:00
John Westcott IV
db38339179 Second attempt at converting tower_job_template 2020-03-30 23:35:11 -04:00
softwarefactory-project-zuul[bot]
5eddcdd5f5 Merge pull request #6484 from ryanpetrello/inv-source-required
prevent manual updates at POST /api/v2/inventory_sources/N/update/

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-30 23:46:13 +00:00
softwarefactory-project-zuul[bot]
3480d2da59 Merge pull request #6488 from ryanpetrello/galaxy-role-host-key-checking
disable host key checking when installing galaxy roles/collections

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-30 22:06:52 +00:00
Keith Grant
e60e6c7d08 pass prompted params through to launch API request 2020-03-30 14:39:16 -07:00
Keith Grant
55356ebb51 set default values on prompts 2020-03-30 14:37:07 -07:00
Keith Grant
7f4bbbe5c5 add launch prompt inventory step 2020-03-30 14:37:07 -07:00
Keith Grant
49b1ce6e8c add skeleton of launch prompt wizard 2020-03-30 14:37:07 -07:00
Marliana Lara
caaefef900 Add modal to show a preview of node prompt values 2020-03-30 17:31:50 -04:00
Bill Nottingham
96576b0e3d Don't return different fields for smart vs non-smart inventories 2020-03-30 17:15:55 -04:00
mabashian
288ce123ca Adds resources_needed_to_start to the list of keys for error message handling 2020-03-30 17:04:17 -04:00
Ryan Petrello
140dbbaa7d disable host key checking when installing galaxy roles/collections
see: https://github.com/ansible/awx/issues/5947
2020-03-30 17:03:14 -04:00
softwarefactory-project-zuul[bot]
e9d11be680 Merge pull request #6104 from mabashian/6086-proj-form-org
Fixes issues with organization when saving the project form.

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-30 20:47:12 +00:00
softwarefactory-project-zuul[bot]
d7f117e83f Merge pull request #6448 from AlexSCorey/6446-HostAdd
Fixes HostAdd Form layout issue

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-30 20:47:08 +00:00
lj020326
eef1246e0b Merge pull request #1 from lj020326/lj020326-patch-1
Update settings.py to resolve CSRF issue in traefik configuration
2020-03-30 16:29:06 -04:00
lj020326
65e38aa37d Update settings.py
This is needed for LB (e.g., traefik) for proxying into nginx
otherwise, get CSRF error
ref: https://stackoverflow.com/questions/27533011/django-csrf-error-casused-by-nginx-x-forwarded-host

resolved by adding USE_X_FORWARDED_HOST using the following similar issue as a reference:
https://github.com/catmaid/CATMAID/issues/1781
2020-03-30 16:27:40 -04:00
mabashian
c7b23aac9b Removes static run on string options and opts for the more dynamic ux pattern already adopted in the old UI 2020-03-30 15:37:56 -04:00
mabashian
b4ea60eb79 Fixes issue where repeat frequency was not displaying correctly for schedules that only run once 2020-03-30 15:37:56 -04:00
mabashian
24c738c6d8 Moves generation of today and tomorrow strings out of the return of the ScheduleForm 2020-03-30 15:37:56 -04:00
mabashian
0c26734d7d Move the construction of the rule object out to it's own function 2020-03-30 15:37:56 -04:00
mabashian
d9b613ccb3 Implement schedule add form on JT/WFJT/Proj 2020-03-30 15:37:56 -04:00
Ryan Petrello
831bf9124f prevent manual updates at POST /api/v2/inventory_sources/N/update/
see: https://github.com/ansible/awx/issues/6309
2020-03-30 15:35:04 -04:00
Alex Corey
0b31cad2db Adds Survey Functionality to WFJT 2020-03-30 14:20:44 -04:00
AlanCoding
059e744774 Address errors with login and logout in python2
Addresses scenarios when username and password
  were used and collection obtained token

Fix error sendall() arg 1 must be string or buffer

Improve error handling related to authentication
  clear the query after request and before logout
  put response data in error in both cases
2020-03-30 13:48:14 -04:00
softwarefactory-project-zuul[bot]
827adbce76 Merge pull request #6463 from ryanpetrello/release-10.0.0
bump version 10.0.0

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-30 16:42:49 +00:00
softwarefactory-project-zuul[bot]
849a64f20a Merge pull request #6481 from ryanpetrello/cli-docs-up
promote AWX CLI installation instructions to the global INSTALL.md

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-30 16:31:04 +00:00
softwarefactory-project-zuul[bot]
3bbd03732b Merge pull request #6461 from jakemcdermott/6433-fix-org-team-rbac-save
Don't show user-only roles for teams

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-30 16:05:20 +00:00
Ryan Petrello
32627ce51a promote AWX CLI installation instructions to the global INSTALL.md
a few users have had trouble finding these instructions, so let's move
them into the top level installation docs
2020-03-30 11:46:10 -04:00
softwarefactory-project-zuul[bot]
4a8f1d41fa Merge pull request #6422 from john-westcott-iv/tower_job_wait_update
Initial cut at tower_job_wait conversion

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-30 13:27:42 +00:00
Armin Kunaschik
2b3c57755c support for older jinja2 in installer 2020-03-28 02:59:40 +01:00
softwarefactory-project-zuul[bot]
508c9b3102 Merge pull request #6465 from ryanpetrello/ws-bad-group-syntax
prevent ws group subscription if not specified in the valid format

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-27 22:02:47 +00:00
softwarefactory-project-zuul[bot]
f8be1f4110 Merge pull request #6469 from ryanpetrello/cli-config-wooops
fix a bug that broke `awx config`

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-27 21:59:16 +00:00
softwarefactory-project-zuul[bot]
d727e69a00 Merge pull request #6459 from chrismeyersfsu/fix-register_queue_race2
fix register_queue race conditionn

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-27 21:36:41 +00:00
Ryan Petrello
04dd1352c9 prevent ws group subscription if not specified in the valid format 2020-03-27 17:13:21 -04:00
Ryan Petrello
ea54815e6b fix a bug that broke awx config
see: https://github.com/ansible/tower/issues/4206
2020-03-27 17:07:48 -04:00
softwarefactory-project-zuul[bot]
78db965797 Merge pull request #6467 from dsesami/survey-list-ids
Add IDs to survey list items

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-27 20:17:45 +00:00
chris meyers
3326979806 fix register_queue race conditionn
* Avoid race condition with `apply_cluster_membership_policies`
2020-03-27 16:15:10 -04:00
beeankha
230949c43c Fix timeout error 2020-03-27 15:44:23 -04:00
Daniel Sami
a862a00d24 added id to survey list items 2020-03-27 15:27:08 -04:00
beeankha
2e8f9185ab Fix default value errors for cases of None for min/max_interval 2020-03-27 15:05:23 -04:00
beeankha
6d6322ae4d Update integration tests, update tower_wait module 2020-03-27 15:05:23 -04:00
John Westcott IV
914ea54925 Make module prefer interval (if set) over min/max
Fix linting issues for True vs true

Fix up unit test related errors
2020-03-27 15:05:23 -04:00
John Westcott IV
b9b62e3771 Removing assert that job is pending on job launch 2020-03-27 15:05:23 -04:00
John Westcott IV
e03911d378 Depricate min and max interval in favor of interval 2020-03-27 15:05:23 -04:00
John Westcott IV
61287f6b36 Removing old unneeded output and fixing comments 2020-03-27 15:05:23 -04:00
John Westcott IV
f6bfdef34d Removed old secho comment from Tower-CLI
Fixed job name for tests
2020-03-27 15:05:23 -04:00
John Westcott IV
7494ba7b9c Initial cut at tower_job_wait conversion 2020-03-27 15:05:23 -04:00
softwarefactory-project-zuul[bot]
5f62426684 Merge pull request #6458 from jakemcdermott/6435-fix-notification-toggle-disable
Limit disable-on-load to single notifications

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-27 17:59:46 +00:00
Ryan Petrello
6914213aa0 bump version 10.0.0 2020-03-27 12:51:18 -04:00
softwarefactory-project-zuul[bot]
83721ff9a8 Merge pull request #6438 from jakemcdermott/6433-fix-org-team-rbac-save-api
Identify user-only object roles

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-27 16:35:56 +00:00
softwarefactory-project-zuul[bot]
4998c7bf21 Merge pull request #6315 from john-westcott-iv/collections_tools_associations
Collections tools associations

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-27 16:16:08 +00:00
softwarefactory-project-zuul[bot]
155a1d9a32 Merge pull request #6032 from ryanpetrello/bigint
migrate event table primary keys from integer to bigint

Reviewed-by: Ryan Petrello
             https://github.com/ryanpetrello
2020-03-27 16:01:58 +00:00
Jake McDermott
6f582b5688 Don't show user-only roles for teams 2020-03-27 11:18:15 -04:00
Jake McDermott
579648a017 Identify user-only organization roles
Organization participation roles (admin, member) can't be assigned to a
team. Add a field to the object roles so the ui can know not to display
them for team role selection.
2020-03-27 11:12:39 -04:00
softwarefactory-project-zuul[bot]
c4ed9a14ef Merge pull request #6451 from jbradberry/related-webhook-credential-link
Optionally add the webhook_credential link to related

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-27 14:38:25 +00:00
softwarefactory-project-zuul[bot]
21872e7101 Merge pull request #6444 from mabashian/ui-next-accessibility-low-hanging-fruitz
Adds aria-label to some buttons without text

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-27 14:38:05 +00:00
Jake McDermott
f2e9a8d1b2 Limit disable-on-load to single notifications 2020-03-27 10:32:11 -04:00
Ryan Petrello
301d6ff616 make the job event bigint migration chunk size configurable 2020-03-27 09:28:10 -04:00
softwarefactory-project-zuul[bot]
d24271849d Merge pull request #6454 from ansible/jakemcdermott-update-issue-template
Add advice for creating bug reports

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-27 00:57:45 +00:00
beeankha
a50b03da17 Remove unnecessary fields in associations file 2020-03-26 20:04:11 -04:00
Jake McDermott
27b5b534a1 Add advice for creating bug reports 2020-03-26 19:49:38 -04:00
softwarefactory-project-zuul[bot]
6bc97158fe Merge pull request #6443 from ryanpetrello/summary-fields-perf-note
clarify some API documentation on summary_fields

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-26 21:17:48 +00:00
softwarefactory-project-zuul[bot]
9ce2a9240a Merge pull request #6447 from ryanpetrello/runner-1.4.6
update to the latest version of ansible-runner

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-26 21:03:16 +00:00
Jeff Bradberry
6b3befcb94 Optionally add the webhook_credential link to related
on JTs and WFJTs.
2020-03-26 16:07:14 -04:00
Ryan Petrello
c8044b4755 migrate event table primary keys from integer to bigint
see: https://github.com/ansible/awx/issues/6010
2020-03-26 15:54:38 -04:00
Alex Corey
0eb526919f Fixes HostAdd Form layout issue 2020-03-26 15:23:31 -04:00
softwarefactory-project-zuul[bot]
3045511401 Merge pull request #6441 from ryanpetrello/eye-python
fix busted shell_plus in the development environment

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-26 19:16:25 +00:00
softwarefactory-project-zuul[bot]
24f334085e Merge pull request #6417 from jakemcdermott/no-blank-adhoc-command-module-names
Don't allow blank adhoc command module names

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-26 19:14:06 +00:00
Ryan Petrello
90d35f07f3 clarify some documentation on summary_fields 2020-03-26 14:54:28 -04:00
softwarefactory-project-zuul[bot]
e334f33d13 Merge pull request #6388 from chrismeyersfsu/feature-websocket_secret2
set broadcast websockets secret

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-26 18:50:52 +00:00
Ryan Petrello
464db28be5 update to the latest version of ansible-runner 2020-03-26 14:49:45 -04:00
mabashian
a8f56f78e9 Remove unused touched and error props 2020-03-26 14:11:22 -04:00
mabashian
f7ad3d78eb Fixes issues with organization when saving the project form.
Changes helperTextInvalid prop type to node which matches more closely with what the upstream PF component supports.
2020-03-26 13:57:11 -04:00
Ryan Petrello
61a0d1f77b fix busted shell_plus in the development environment
for some reason (unsure why), django-extensions has begun noticing
ipython importability and treating "shell_plus" as "start an IPython
notebook by default

it could be that this is a bug in django-extensions that will be fixed
soon, but for now, this fixes the issue
2020-03-26 13:37:13 -04:00
mabashian
77e99ad355 Adds aria-label to some buttons without text 2020-03-26 12:58:45 -04:00
beeankha
9f4afe6972 Fix misc. linter errors 2020-03-26 12:01:48 -04:00
John Westcott IV
b99a04dd8d Adding associations to generator 2020-03-26 12:01:48 -04:00
John Westcott IV
357e22eb51 Compensating for default of '' for a JSON typed field 2020-03-26 12:01:48 -04:00
softwarefactory-project-zuul[bot]
9dbf75f2a9 Merge pull request #6434 from marshmalien/6432-launch-btn-bug
Disable launch button when there are zero nodes

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-26 15:27:45 +00:00
chris meyers
eab74cac07 autogenerate websocket secret 2020-03-26 10:32:37 -04:00
Marliana Lara
979f549d90 Disable launch button when there are zero nodes 2020-03-26 10:16:33 -04:00
softwarefactory-project-zuul[bot]
ca82f48c18 Merge pull request #6429 from marshmalien/5992-wf-doc-btn
Hookup WF documentation button to visualizer toolbar

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-26 14:00:50 +00:00
Marliana Lara
5a45a62cb3 Hookup WF documentation button to visualizer toolbar 2020-03-25 17:44:34 -04:00
softwarefactory-project-zuul[bot]
090349a49b Merge pull request #6416 from jakemcdermott/6413-remove-unnecessary-project-template-add-option
Remove unnecessary project template add option

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-25 19:41:23 +00:00
softwarefactory-project-zuul[bot]
c38d13c5ab Merge pull request #6399 from jakemcdermott/6398-fix-confirm-password-reset
Don't delete confirmed password from formik object

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-25 19:29:05 +00:00
softwarefactory-project-zuul[bot]
f490a940cf Merge pull request #6410 from ryanpetrello/new-social-auth
update social-auth-core to address a GitHub API deprecation

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-25 19:28:59 +00:00
softwarefactory-project-zuul[bot]
42c24419d4 Merge pull request #6409 from AlanCoding/group_children
Rename group-to-group field to align with API

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-25 17:34:25 +00:00
Jake McDermott
e17c93ecd7 Don't allow blank adhoc command module names 2020-03-25 13:11:30 -04:00
softwarefactory-project-zuul[bot]
67d48a87f8 Merge pull request #6408 from ryanpetrello/rabbitmq-cleanup
remove a bunch of RabbitMQ references

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-25 17:02:54 +00:00
Ryan Petrello
b755fa6777 update social-auth-core to address a GitHub API deprecation 2020-03-25 12:17:36 -04:00
softwarefactory-project-zuul[bot]
ee4dcd2055 Merge pull request #6403 from jbradberry/awxkit-from-json-connection
Add a connection kwarg to Page.from_json

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-25 15:33:37 +00:00
softwarefactory-project-zuul[bot]
0f7a4b384b Merge pull request #6386 from jbradberry/awxkit-api-endpoints
Awxkit api endpoints

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-25 15:33:32 +00:00
softwarefactory-project-zuul[bot]
02415db881 Merge pull request #6407 from marshmalien/5991-wf-launch-btn
Hookup launch button to workflow visualizer

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-25 15:33:27 +00:00
AlanCoding
703345e9d8 Add alias for group children of groups 2020-03-25 11:33:13 -04:00
AlanCoding
d102b06474 Rename group-to-group field to align with API 2020-03-25 11:33:09 -04:00
Jake McDermott
55c18fa76c Remove unnecessary project template add option 2020-03-25 11:26:30 -04:00
softwarefactory-project-zuul[bot]
d37039a18a Merge pull request #6334 from rooftopcellist/ncat
Add netcat to the dev container

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-25 12:51:16 +00:00
Christian Adams
6335004c94 Add common debugging tools to the dev container
- nmap-ncat
 - sdb
 - tcpdump
 - strace
 - vim
2020-03-25 08:03:32 -04:00
softwarefactory-project-zuul[bot]
177867de5a Merge pull request #6369 from AlanCoding/create_associate
Fix bug with association on creation

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-25 00:28:51 +00:00
softwarefactory-project-zuul[bot]
08bd445caf Merge pull request #6404 from ryanpetrello/pyyaml-upgrade
pin a minimum pyyaml version to address (CVE-2017-18342)

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-24 23:48:01 +00:00
softwarefactory-project-zuul[bot]
b5776c8eb3 Merge pull request #6405 from ryanpetrello/upgrade-django
update Django to address CVE-2020-9402

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-24 22:48:09 +00:00
Ryan Petrello
8f1db173c1 remove a bunch of RabbitMQ references 2020-03-24 18:46:58 -04:00
softwarefactory-project-zuul[bot]
62e93d5c57 Merge pull request #6271 from AlexSCorey/6260-UsersOrgList
Adds User Organization List

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-24 22:38:56 +00:00
Marliana Lara
abfeb735f0 Add launch button to workflow visualizer 2020-03-24 17:42:22 -04:00
Ryan Petrello
68b0b40e91 update Django to address CVE-2020-9402
we don't use Oracle GIS, so this isn't really applicable, but it'll make
security scanners happy <shrug>

see: https://docs.djangoproject.com/en/3.0/releases/2.2.11/
2020-03-24 16:41:53 -04:00
Alex Corey
910d926ac3 Fixes file structure, adds tests 2020-03-24 16:27:56 -04:00
Alex Corey
c84ab9f1dc Adds User Organization List 2020-03-24 16:25:11 -04:00
Ryan Petrello
65cafa37c7 pin a minimum pyyaml version to address (CVE-2017-18342)
see: https://github.com/ansible/awx/issues/6393
2020-03-24 15:59:31 -04:00
AlanCoding
551fd088f5 Remove test workarounds 2020-03-24 15:42:35 -04:00
AlanCoding
a72e885274 Fix bug with association on creation 2020-03-24 15:34:52 -04:00
softwarefactory-project-zuul[bot]
bd7c048113 Merge pull request #6291 from AlanCoding/node_identifier
Add Workflow Node Identifier

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-24 19:32:52 +00:00
Jeff Bradberry
91135f638f Add a connection kwarg to Page.from_json
if you don't reuse the connection when doing this, you lose your
authentication.
2020-03-24 15:27:51 -04:00
softwarefactory-project-zuul[bot]
cbc02dd607 Merge pull request #6394 from ryanpetrello/runner-145
update to the latest version of ansible-runner

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-24 19:09:21 +00:00
softwarefactory-project-zuul[bot]
de09deff66 Merge pull request #6348 from AlexSCorey/5895-SurveyList
Adds word wrap functionality

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-24 19:07:05 +00:00
softwarefactory-project-zuul[bot]
5272d088ed Merge pull request #6390 from marshmalien/fix-select-behavior
Fix bugs related to Job Template labels and tags

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-24 17:53:01 +00:00
softwarefactory-project-zuul[bot]
22a593f30f Merge pull request #6389 from jlmitch5/fixEmailOptionNotif
update email option notification to select

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-24 16:54:12 +00:00
Jake McDermott
b56812018a Don't delete confirmed password from formik object
If the save fails, the form will attempt to reload the
deleted value.
2020-03-24 12:21:07 -04:00
Alex Corey
ab755134b3 Adds new DataListCell components to all necessary lists 2020-03-24 10:30:41 -04:00
Alex Corey
ebb0f31b0b Fixes word wrap issue 2020-03-24 10:30:41 -04:00
Ryan Petrello
51ef57188c update to the latest version of ansible-runner 2020-03-24 10:01:17 -04:00
AlanCoding
653850fa6d Remove duplicated index 2020-03-23 22:54:04 -04:00
AlanCoding
8ba4388014 Rewrite tests to use the new modules 2020-03-23 22:47:30 -04:00
AlanCoding
f3e8623a21 Move workflow test target 2020-03-23 22:34:11 -04:00
AlanCoding
077461a3ef Docs touchups 2020-03-23 22:00:02 -04:00
AlanCoding
795c989a49 fix bug processing survey spec 2020-03-23 22:00:02 -04:00
AlanCoding
5e595caf5e Add workflow node identifier
Generate new modules WFJT and WFJT node
Touch up generated syntax, test new modules

Add utility method in awxkit

Fix some issues with non-name identifier in
  AWX collection module_utils

Update workflow docs for workflow node identifier

Test and fix WFJT modules survey_spec
Plug in survey spec for the new module
Handle survey spec idempotency and test

add associations for node connections
Handle node credential prompts as well

Add indexes for new identifier field

Test with unicode dragon in name
2020-03-23 22:00:00 -04:00
softwarefactory-project-zuul[bot]
d941f11ccd Merge pull request #5582 from jakemcdermott/fix-5265
Don't refresh settings on websocket event

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-23 23:10:21 +00:00
softwarefactory-project-zuul[bot]
c4e50cbf7d Merge pull request #6381 from jakemcdermott/6380-fix-host-event-errors
Fix host event type and reference errors

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-23 22:34:36 +00:00
Jake McDermott
6f3527ed15 Don't refresh settings on websocket event 2020-03-23 18:29:01 -04:00
Jake McDermott
fe2ebeb872 Fix host event type and reference errors 2020-03-23 17:46:42 -04:00
Marliana Lara
ad7498c3fc Fix bugs related to Job Template labels and tags
* Use default PF select toggle behavior
* Fix label submit when no inventory provided
2020-03-23 17:06:38 -04:00
John Mitchell
cb7257f9e6 update email option notification to select
- delete radio_group option from form generator
2020-03-23 17:04:07 -04:00
Jeff Bradberry
e3ea4e2398 Register the resource copy endpoints as awxkit page types 2020-03-23 15:19:48 -04:00
Jeff Bradberry
e4e2d48f53 Register some missing related endpoints in awxkit
- the newer varieties of notification templates
- organization workflow job templates
- credential owner users and owner teams

this allows the endpoints to get wrapped in appropriate Page types,
not just the Base page type.
2020-03-23 15:18:47 -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
softwarefactory-project-zuul[bot]
4b497b8cdc Merge pull request #6364 from wenottingham/dont-make-a-tree-that-never-ends-and-just-goes-on-and-on
Preserve symlinks when copying a tree.

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-23 18:57:05 +00:00
softwarefactory-project-zuul[bot]
31fabad3e5 Merge pull request #6370 from AlanCoding/convert_tower_role
Initial conversion of tower_role

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-23 18:34:32 +00:00
Jeff Bradberry
1e48d773ae Add job_templates to the set of related endpoints for organizations 2020-03-23 14:33:40 -04:00
softwarefactory-project-zuul[bot]
4529429e99 Merge pull request #6368 from marshmalien/fix-jt-bugs
Fix job template form bugs r/t saving without an inventory

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-23 14:08:32 +00:00
softwarefactory-project-zuul[bot]
ec4a471e7a Merge pull request #6377 from chrismeyersfsu/fix-register_queue_race
serialize register_queue

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-23 12:32:34 +00:00
softwarefactory-project-zuul[bot]
77915544d2 Merge pull request #6378 from chrismeyersfsu/fix-launch_awx_cluster
fixup dev cluster bringup

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-23 12:32:29 +00:00
chris meyers
5ba90b629e fixup dev cluster bringup
* change from bootstrap script to launch_awx.sh script
2020-03-23 07:33:35 -04:00
chris meyers
e9021bd173 serialize register_queue
* also remove uneeded query
2020-03-23 07:21:17 -04:00
AlanCoding
49356236ac Add coverage from issue resolved with tower_role conversion 2020-03-22 13:43:39 -04:00
softwarefactory-project-zuul[bot]
c9015fc0c8 Merge pull request #6361 from john-westcott-iv/tower_label_update
Tower label update

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-21 11:15:06 +00:00
AlanCoding
4ea1101477 update test assertion 2020-03-20 23:49:15 -04:00
AlanCoding
27948aa4e1 Convert tower_role to no longer use tower-cli 2020-03-20 23:28:48 -04:00
softwarefactory-project-zuul[bot]
5263d5aced Merge pull request #6358 from AlanCoding/fix_settings
Fix regression in tower_settings module

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-21 01:42:19 +00:00
softwarefactory-project-zuul[bot]
8832f667e4 Merge pull request #6336 from AlanCoding/local_collection_errors
Fix test errors running locally with Ansible devel

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-21 00:51:04 +00:00
softwarefactory-project-zuul[bot]
f4e56b219d Merge pull request #6326 from AlanCoding/docs_patches
Copy edit of backward incompatible changes

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-21 00:42:51 +00:00
AlanCoding
abdcdbca76 Add label tests and flake8 fixes 2020-03-20 20:09:08 -04:00
AlanCoding
362016c91b Fix test errors running locally with Ansible devel 2020-03-20 19:52:13 -04:00
AlanCoding
f1634f092d Copy edit of backward incompatible changes 2020-03-20 19:51:24 -04:00
John Westcott IV
8cd4e9b488 Adding state back in 2020-03-20 19:14:00 -04:00
softwarefactory-project-zuul[bot]
1fce77054a Merge pull request #6329 from marshmalien/6143-inv-group-associate-hosts
Add associate modal to nested inventory host list

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-20 21:02:57 +00:00
Marliana Lara
53c8c80f7f Fix JT form edit save bug when inventory has no value 2020-03-20 16:37:33 -04:00
softwarefactory-project-zuul[bot]
3bf7d41bf3 Merge pull request #6286 from jlmitch5/hostFacts
add facts views to host and inv host detail views

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-20 20:08:52 +00:00
softwarefactory-project-zuul[bot]
34259e24c0 Merge pull request #6350 from jlmitch5/formErrorCredForm
correct form submission errors for credential form

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-20 19:52:33 +00:00
John Westcott IV
1daeec356f Initial converstion of tower_label 2020-03-20 15:01:41 -04:00
softwarefactory-project-zuul[bot]
5573e1c7ce Merge pull request #6356 from keithjgrant/5899-survey-add-form
Survey add/edit forms

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-20 18:56:47 +00:00
softwarefactory-project-zuul[bot]
1cba98e4a7 Merge pull request #6363 from dsesami/translation-fix
Fix typo in japanese string

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-20 18:20:50 +00:00
Keith Grant
56d31fec77 handle any errors thrown in survey handleSubmit 2020-03-20 10:55:07 -07:00
Keith Grant
564012b2c8 fix errors when adding first question to new survey 2020-03-20 10:55:07 -07:00
Keith Grant
cfe0607b6a add survey form tests 2020-03-20 10:55:07 -07:00
Keith Grant
7f24d0c0c2 add SurveyQuestionForm tests 2020-03-20 10:55:07 -07:00
Keith Grant
3f4e7465a7 move template survey files to Survey subdirectory 2020-03-20 10:55:07 -07:00
Keith Grant
9c32cb30d4 add survey question editing, breadcrumbs 2020-03-20 10:55:07 -07:00
Keith Grant
782d465c78 wire in SurveyQuestionAdd form to post to API 2020-03-20 10:55:07 -07:00
Keith Grant
1412bf6232 add survey form 2020-03-20 10:55:07 -07:00
Alex Corey
e92acce4eb Adds toolbar 2020-03-20 10:55:07 -07:00
Bill Nottingham
ac68e8c4fe Preserve symlinks when copying a tree.
This avoids creating a recursive symlink tree.
2020-03-20 13:41:16 -04:00
Daniel Sami
97a4bb39b6 fix typo in japanese string 2020-03-20 13:24:28 -04:00
Marliana Lara
9e00337bc1 Rename useSelected hook and update error modal condition 2020-03-20 10:54:59 -04:00
Marliana Lara
72672d6bbe Move useSelect to shared util directory 2020-03-20 10:54:59 -04:00
Marliana Lara
51f52f6332 Translate aria labels 2020-03-20 10:54:58 -04:00
Marliana Lara
11b2b17d08 Add associate modal to nested inventory host list 2020-03-20 10:54:55 -04:00
softwarefactory-project-zuul[bot]
e17ff3e03a Merge pull request #6335 from AlexSCorey/6316-TemplateUsesFunction
Moves template.jsx over to a functional component.

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-20 14:54:49 +00:00
softwarefactory-project-zuul[bot]
b998d93bfb Merge pull request #6360 from chrismeyersfsu/log_notification_failures
log when notifications fail to send

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-20 14:54:30 +00:00
softwarefactory-project-zuul[bot]
b8ec94a0ae Merge pull request #6345 from chrismeyersfsu/redis-cleanup2
fix redis requirements mess

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-20 13:43:54 +00:00
Alex Corey
a02b332b10 fixes linting and spelling errors 2020-03-20 09:16:10 -04:00
Alex Corey
56919c5d32 Moves template.jsx over to a functional component. 2020-03-20 09:16:10 -04:00
chris meyers
47f5c17b56 log when notifications fail to send
* If a job does not finish in the 5 second timeout. Let the user know
that we failed to even try to send the notification.
2020-03-20 09:11:01 -04:00
softwarefactory-project-zuul[bot]
0fb800f5d0 Merge pull request #6344 from chrismeyersfsu/redis-cleanup1
Redis cleanup1

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-20 13:07:40 +00:00
AlanCoding
d6e94f9c6f Fix regression in tower_settings module 2020-03-19 23:03:58 -04:00
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
John Mitchell
16e672dd38 correct form submission errors for credential form 2020-03-19 15:10:10 -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
John Mitchell
4bec46a910 add facts views to host and inv host detail views and update enable fact storage checkbox option and detail language 2020-03-19 15:01:02 -04:00
chris meyers
0e70543d54 licenses for new python deps 2020-03-19 14:44:29 -04: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
chris meyers
fd56b7c590 pin pexpect to 4.7.0 2020-03-19 11:25:43 -04:00
chris meyers
7f02e64a0d fix redis requirements mess
* Add the end of the redis PR we rebased devel a bunch. requirements
snuck into requirements.txt this way. This PR removes those requirements
(i.e. kombu) and bumps other requirements.
2020-03-19 10:19:07 -04: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
chris meyers
5e481341bc flake8 2020-03-19 10:01:20 -04:00
chris meyers
0a1070834d only update the ip address field on the instance
* The heartbeat of an instance is determined to be the last modified
time of the Instance object. Therefore, we want to be careful to only
update very specific fields of the Instance object.
2020-03-19 10:01:20 -04:00
chris meyers
c7de3b0528 fix spelling 2020-03-19 10:01:20 -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
Christian Adams
9a38971d47 Update ELK Stack container files 2020-03-19 09:35:08 -04:00
Ryan Petrello
06b3e54fb1 remove python2 support from awxkit 2020-03-19 09:02:39 -04:00
chris meyers
7f2e1d46bc replace janky unique channel name w/ uuid
* postgres notify/listen channel names have size limitations as well as
character limitations. Respect those limitations while at the same time
generate a unique channel name.
2020-03-19 08:59:15 -04:00
chris meyers
12158bdcba remove dead code 2020-03-19 08:57:05 -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
Christian Adams
c4e697879d Improve docs for using the logstash container 2020-03-18 18:32:45 -04: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
chris meyers
ea29f4b91f account for isolated job status
* We can not query the dispatcher running on isolated nodes to see if
the playbook is still running because that is the nature of isolated
nodes, they don't run the dispatcher nor do they run the message broker.
Therefore, we should query the control node that is arbitrating the
isolated work. If the control node process in the dispatcher is dead,
consider the iso job dead.
2020-03-18 16:10:16 -04:00
chris meyers
3f2d757f4e update awxkit to use new unsubscribe event
* Instead of waiting an arbitrary number of seconds. We can now wait the
exact amount of time needed to KNOW that we are unsubscribed. This
changeset takes advantage of the new subscribe reply semantic.
2020-03-18 16:10:16 -04:00
chris meyers
feac93fd24 add websocket group unsubscribe reply
* This change adds more than just an unsubscribe reply.
* Websockets canrequest to join/leave groups. They do so using a single
idempotent request. This change replies to group requests over the
websockets with the diff of the group subscription. i.e. what groups the
user currenntly is in, what groups were left, and what groups were
joined.
2020-03-18 16:10:16 -04:00
chris meyers
088373963b satisfy generic Role code
* User in channels session is a lazy user class. This does not conform
to what the generic Role ancestry code expects. The Role ancestry code
expects a User objects. This change converts the lazy object into a
proper User object before calling the permission code path.
2020-03-18 16:10:16 -04:00
chris meyers
5818dcc980 prefer simple async -> sync
* asgiref async_to_sync was causing a Redis connection _for each_ call
to emit_channel_notification i.e. every event that the callback receiver
processes. This is a "known" issue
https://github.com/django/channels_redis/pull/130#issuecomment-424274470
and the advise is to slow downn the rate at which you call
async_to_sync. That is not an option for us. Instead, we put the async
group_send call onto the event loop for the current thread and wait for
it to be processed immediately.

The known issue has to do with event loop + socket relationship. Each
connection to redis is achieved via a socket. That conection can only be
waiting on by the event loop that corresponds to the calling thread.
async_to_sync creates a _new thread_ for each invocation. Thus, a new
connection to redis is required. Thus, the excess redis connections that
can be observed via netstat | grep redis | wc -l.
2020-03-18 16:10:16 -04:00
chris meyers
dc6c353ecd remove support for multi-reader dispatch queue
* Under the new postgres backed notify/listen message queue, this never
actually worked. Without using the database to store state, we can not
provide a at-most-once delivery mechanism w/ multi-readers.
* With this change, work is done ONLY on the node that requested for the
work to be done. Under rabbitmq, the node that was first to get the
message off the queue would do the work; presumably the least busy node.
2020-03-18 16:10:16 -04:00
chris meyers
50b56aa8cb autobahn 20.1.2 released an hour ago
* 20.1.1 no longer available on pypi
2020-03-18 16:10:15 -04:00
chris meyers
3fec69799c fix websocket job subscription access control 2020-03-18 16:10:15 -04:00
chris meyers
2a2c34f567 combine all the broker replacement pieces
* local redis for event processing
* postgres for message broker
* redis for websockets
2020-03-18 16:10:15 -04:00
chris meyers
558e92806b POC postgres broker 2020-03-18 16:10:15 -04:00
chris meyers
355fb125cb redis events 2020-03-18 16:10:15 -04:00
chris meyers
c8eeacacca POC channels 2 2020-03-18 16:10:12 -04:00
softwarefactory-project-zuul[bot]
d0a3c5a42b Merge pull request #6323 from AlanCoding/rm_verify_ssl_test
Replace verify_ssl test that did not work right

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-18 19:33:24 +00:00
softwarefactory-project-zuul[bot]
64139f960f Merge pull request #6331 from marshmalien/fix-project-schedule-breadcrumb
Add nested project schedule detail breadcrumb

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-18 19:33:19 +00:00
softwarefactory-project-zuul[bot]
eda494be63 Merge pull request #6330 from rooftopcellist/fix_flakey_workflow_functest
Fix flaky workflow test & set junit family

Reviewed-by: Christian Adams <rooftopcellist@gmail.com>
             https://github.com/rooftopcellist
2020-03-18 19:27:26 +00:00
Christian Adams
4a0c371014 Fix flaky workflow test & set junit family 2020-03-18 14:02:33 -04:00
softwarefactory-project-zuul[bot]
6b43da35e1 Merge pull request #5745 from wenottingham/no-license-and-registration-please
Clean up a few more cases where we checked the license for features.

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-18 17:59:16 +00:00
softwarefactory-project-zuul[bot]
afa3b500d3 Merge pull request #6273 from AlanCoding/failure_verbosity
Print module standard out in test failure scenarios

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-18 17:50:16 +00:00
softwarefactory-project-zuul[bot]
c3efb13020 Merge pull request #6325 from AlanCoding/autohack
Automatically hack sys.path to make running tests easier

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-18 17:46:59 +00:00
Marliana Lara
eb28800082 Fix nested project schedule breadcrumb 2020-03-18 13:17:42 -04:00
softwarefactory-project-zuul[bot]
3219b9b4ac Merge pull request #6318 from AlexSCorey/6100-ConvertWFJTandJTtoHooks
Moves JT Form to using react hooks and custom hooks

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-18 15:58:13 +00:00
softwarefactory-project-zuul[bot]
e9a48cceba Merge pull request #6319 from squidboylan/collection_test_refactor
Collection test refactor

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-18 14:53:04 +00:00
softwarefactory-project-zuul[bot]
9a7fa1f3a6 Merge pull request #6313 from mabashian/jest-24-25-upgrade
Upgrade jest and babel-jest to latest (v25)

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-18 14:33:44 +00:00
Caleb Boylan
a03d74d828 Collection: Use random names when we create objects in our tests 2020-03-18 07:02:14 -07:00
mabashian
2274b4b4e4 Upgrade jest and babel-jest to latest (v25) 2020-03-18 09:44:25 -04:00
AlanCoding
c054d7c3d7 Automatically hack sys.path to make running tests easier 2020-03-18 09:40:11 -04:00
softwarefactory-project-zuul[bot]
26d5d7afdc Merge pull request #6304 from AlanCoding/workflow_role
Add workflow to tower_role module

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-18 03:13:37 +00:00
softwarefactory-project-zuul[bot]
6b51b41897 Merge pull request #6322 from AlanCoding/user_no_log
Mark user password as no_log to silence warning

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-18 01:58:27 +00:00
AlanCoding
ca3cf244fd Replace verify_ssl test that did not work right 2020-03-17 21:43:30 -04:00
softwarefactory-project-zuul[bot]
88d7b24f55 Merge pull request #6311 from jlmitch5/fixDupID
change duplicate IDs where possible

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-18 01:03:49 +00:00
AlanCoding
ecdb353f6f Mark user password as no_log to silence warning 2020-03-17 19:49:27 -04:00
AlanCoding
d9932eaf6a Add integration test 2020-03-17 19:37:30 -04:00
softwarefactory-project-zuul[bot]
cbc52fa19f Merge pull request #6278 from AlanCoding/wfjt_tests
Add more tests for recent WFJT module issues

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-17 23:02:14 +00:00
softwarefactory-project-zuul[bot]
cc77b31d4e Merge pull request #6314 from mabashian/6293-toggle-error
Adds error div to toggle fields built using form generator

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-17 21:34:18 +00:00
Bill Nottingham
b875c03f4a Clean up a few more cases where we checked the license for features. 2020-03-17 17:19:33 -04:00
Alex Corey
e87f804c92 Moves JT Form to using react hooks and custom hooks 2020-03-17 16:40:09 -04:00
softwarefactory-project-zuul[bot]
f86cbf33aa Merge pull request #6307 from mabashian/eslint-5-6-upgrade
Bumps eslint from 5.6 to 6.8

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-17 20:24:13 +00:00
mabashian
6db6fe90fd Adds error div to toggle fields built using form generator so that errors can be shown underneath the toggle 2020-03-17 15:27:16 -04:00
softwarefactory-project-zuul[bot]
bcbe9691e5 Merge pull request #6312 from beeankha/collections_toolbox_sanity_fix
Fix Shebang Error in Collections Tools

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-17 19:21:54 +00:00
John Mitchell
c850148ee3 change duplicate IDs where possible 2020-03-17 14:08:13 -04:00
softwarefactory-project-zuul[bot]
b260a88810 Merge pull request #6308 from wenottingham/branch-for-your-branch
Allow scm_branch in notifications.

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-17 17:51:10 +00:00
mabashian
a0937a8b7c Bumps eslint from 5.6 to 6.8 2020-03-17 13:44:33 -04:00
beeankha
c4c0cace88 Fix ansible shebang error 2020-03-17 12:55:32 -04:00
softwarefactory-project-zuul[bot]
a55bcafa3a Merge pull request #6310 from jakemcdermott/update-lockfile
Auto-update dependencies in lock file

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-17 16:22:48 +00:00
Bill Nottingham
d0c510563f Allow scm_branch in notifications. 2020-03-17 12:09:35 -04:00
Jake McDermott
d23fb17cd9 Auto-update dependencies in lock file 2020-03-17 11:33:55 -04:00
AlanCoding
8668f2ad46 Add workflow to tower_role 2020-03-16 22:36:27 -04:00
softwarefactory-project-zuul[bot]
e210ee4077 Merge pull request #6301 from gamuniz/catch_analytics_failure
rework the gather() to always delete the leftover directories

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-16 20:45:36 +00:00
softwarefactory-project-zuul[bot]
47ff56c411 Merge pull request #6297 from squidboylan/collection_tests
Collection tests

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-16 20:07:13 +00:00
softwarefactory-project-zuul[bot]
1e780aad38 Merge pull request #5726 from AlanCoding/jt_org_2020
Add read-only organization field to job templates

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-16 20:03:47 +00:00
Gabe Muniz
80234c5600 rework the tar to always delete the leftover directories 2020-03-16 19:54:15 +00:00
softwarefactory-project-zuul[bot]
c8510f7d75 Merge pull request #6256 from beeankha/collections_toolbox
Module Generation Tools for the AWX Collection

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-16 18:55:52 +00:00
softwarefactory-project-zuul[bot]
6431050b36 Merge pull request #6296 from ryanpetrello/fix-iso-node-bug
fix a bug in isolated event handling

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-16 18:45:05 +00:00
softwarefactory-project-zuul[bot]
5c360aeff3 Merge pull request #6287 from squidboylan/add_collection_test
Collection: add a test for multiple credentials on a jt

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-16 18:38:52 +00:00
softwarefactory-project-zuul[bot]
44e043d75f Merge pull request #6294 from mabashian/4070-access-5
Adds aria-labels to links without descernible inner text

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-16 18:27:01 +00:00
Caleb Boylan
ef223b0afb Collection: Add test for workflow_template extra_vars 2020-03-16 11:12:57 -07:00
Caleb Boylan
e9e8283f16 Collection: Add integration test for smart inventory 2020-03-16 11:08:01 -07:00
Ryan Petrello
b73e8d8a56 fix a bug in isolated event handling
see: https://github.com/ansible/awx/issues/6280
2020-03-16 13:15:10 -04:00
beeankha
6db6c6c5ba Revert module util changes, reorder params in group module 2020-03-16 11:18:08 -04:00
AlanCoding
2b5ff9a6f9 Patches to generator to better align with modules 2020-03-16 11:10:07 -04:00
beeankha
97c169780d Delete config file 2020-03-16 11:10:07 -04:00
beeankha
88c46b4573 Add updated tower_api module util file, update generator and template 2020-03-16 11:10:07 -04:00
beeankha
53d27c933e Fix linter issues 2020-03-16 11:10:07 -04:00
beeankha
c340fff643 Add generator playbook for the AWX Collection modules, along with other module generation tools 2020-03-16 11:10:07 -04:00
mabashian
61600a8252 Adds aria-labels to links without descernible inner text 2020-03-16 10:39:21 -04:00
AlanCoding
521cda878e Add named URL docs for uniqueness functionality 2020-03-16 10:04:18 -04:00
softwarefactory-project-zuul[bot]
9ecd6ad0fb Merge pull request #6245 from mabashian/4070-access-3
Adds lang attr to html tag to specify default language for the application

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-13 22:36:26 +00:00
softwarefactory-project-zuul[bot]
349af22d0f Merge pull request #6261 from jakemcdermott/5386-dont-block-blockquotes
Don't block the blockquotes

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-13 22:12:28 +00:00
softwarefactory-project-zuul[bot]
ad316fc2a3 Merge pull request #6284 from mabashian/4070-access-1
Adds aria-label attrs to buttons without inner text

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-13 22:00:16 +00:00
softwarefactory-project-zuul[bot]
e4abf634f0 Merge pull request #6268 from keithjgrant/survey-list-sort
Add survey list sorting

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-13 21:59:34 +00:00
softwarefactory-project-zuul[bot]
bb144acee3 Merge pull request #6249 from jakemcdermott/5771-fix-read-only-display-of-playbooks
Show playbook field on JT when read-only

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-13 21:11:59 +00:00
Caleb Boylan
16d5456d2b Collection: add a test for multiple credentials on a jt 2020-03-13 13:41:38 -07:00
mabashian
abe8153358 Remove rogue console 2020-03-13 16:38:46 -04:00
Keith Grant
86aabb297e add documentation for useDismissableError, useDeleteItems 2020-03-13 13:21:59 -07:00
softwarefactory-project-zuul[bot]
65a7613c26 Merge pull request #6257 from jakemcdermott/3774-fix-settings-ldap-error-handling
Add parser error handling for settings json

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-13 19:30:34 +00:00
softwarefactory-project-zuul[bot]
4d1790290e Merge pull request #6259 from jakemcdermott/3956-translate-access-strings
Mark access removal prompts and tech preview message for translation

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-13 19:30:29 +00:00
softwarefactory-project-zuul[bot]
dca335d17c Merge pull request #6251 from jakemcdermott/5987-fix-sometimes-missing-verbosity-and-job-type-values
Fix sometimes missing job_type and verbosity field values

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-13 19:30:24 +00:00
softwarefactory-project-zuul[bot]
da48cffa12 Merge pull request #6285 from ryanpetrello/user-readonly-last-login
make User.last_login read_only=True in its serializer

Reviewed-by: Christian Adams <rooftopcellist@gmail.com>
             https://github.com/rooftopcellist
2020-03-13 19:24:58 +00:00
Keith Grant
a2eeb6e7b5 delete unused file 2020-03-13 11:40:24 -07:00
Jake McDermott
f8f6fff21e Show playbook field on JT when read-only 2020-03-13 13:35:49 -04:00
Keith Grant
3e616f2770 update SurveyList tests, add TemplateSurvey tests 2020-03-13 10:17:39 -07:00
softwarefactory-project-zuul[bot]
7c6bef15ba Merge pull request #6246 from mabashian/4070-access-4
Adds aria-label attrs to img elements

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-13 16:54:35 +00:00
Ryan Petrello
27b48fe55b make User.last_login read_only=True in its serializer 2020-03-13 12:53:40 -04:00
softwarefactory-project-zuul[bot]
6b20ffbfdd Merge pull request #6275 from ryanpetrello/fix-isolated-hostname-in-events
consolidate isolated event handling code into one function

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-13 16:34:46 +00:00
mabashian
43abeec3d7 Mark img aria-labels for translation 2020-03-13 11:25:47 -04:00
mabashian
bd8886a867 Adds lang attr to html tag in ui next app 2020-03-13 11:21:25 -04:00
mabashian
bd68317cfd Adds aria-label attrs to buttons without inner text 2020-03-13 11:13:28 -04:00
Ryan Petrello
f8818730d4 consolidate isolated event handling code into one function
make the non-isolated *and* isolated event handling share the same
function so we don't regress on behavior between the two
2020-03-13 10:05:48 -04:00
Jake McDermott
b41c9e5ba3 Normalize initial value of select2 fields 2020-03-13 09:43:12 -04:00
Jake McDermott
401be0c265 Add parser error handling for settings json 2020-03-13 09:23:11 -04:00
humzam96
35be571eed Don't block the blockquotes 2020-03-13 09:22:20 -04:00
Hideki Saito
8e7faa853e Mark tech preview message for translation 2020-03-13 09:21:02 -04:00
Jake McDermott
1ee46ab98a Mark access removal prompts for translation 2020-03-13 09:20:59 -04:00
Keith Grant
ac9f526cf0 fix useRequest error bug 2020-03-12 17:08:21 -07:00
softwarefactory-project-zuul[bot]
7120e92078 Merge pull request #6262 from rooftopcellist/mv_bootstrap_script
Update dev container to be consistent with other installation methods

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-12 19:51:18 +00:00
AlanCoding
7e6def8acc Grant org JT admin role in migration as well 2020-03-12 15:45:47 -04:00
AlanCoding
aa4842aea5 Various JT.organization cleanup items
cleanup from PR review suggestions

bump migration number

fix test

revert change to old-app JT form no longer needed
2020-03-12 15:45:47 -04:00
John Mitchell
7547793792 add organization to template views in old and new ui 2020-03-12 15:45:47 -04:00
AlanCoding
7d0b207571 Organization on JT as read-only field
Set JT.organization with value from its project

Remove validation requiring JT.organization

Undo some of the additional org definitions in tests

Revert some tests no longer needed for feature

exclude workflow approvals from unified organization field

revert awxkit changes for providing organization

Roll back additional JT creation permission requirement

Fix up more issues by persisting organization field when project is removed

Restrict project org editing, logging, and testing

Grant removed inventory org admin permissions in migration

Add special validate_unique for job templates
  this deals with enforcing name-organization uniqueness

Add back in special message where config is unknown
  when receiving 403 on job relaunch

Fix logical and performance bugs with data migration

within JT.inventory.organization make-permission-explicit migration

remove nested loops so we do .iterator() on JT queryset

in reverse migration, carefully remove execute role on JT
  held by org admins of inventory organization,
  as well as the execute_role holders

Use current state of Role model in logic, with 1 notable exception
  that is used to filter on ancestors
  the ancestor and descentent relationship in the migration model
    is not reliable
  output of this is saved as an integer list to avoid future
    compatibility errors

make the parents rebuilding logic skip over irrelevant models
  this is the largest performance gain for small resource numbers
2020-03-12 15:45:46 -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
AlanCoding
bdd0b9e4d9 Add more tests for recent WFJT module issues 2020-03-12 15:45:25 -04:00
softwarefactory-project-zuul[bot]
1876849d89 Merge pull request #6186 from AlanCoding/wfjt_vars
Modernize types of WFJT module

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-12 19:43:04 +00:00
softwarefactory-project-zuul[bot]
e4dd2728ef Merge pull request #6276 from ryanpetrello/approval-start-date-in-notifications
save approval node start time *before* sending "started" notifications

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-12 18:58:03 +00:00
Ryan Petrello
88571f6dcb save approval node start time *before* sending "started" notifications
see: https://github.com/ansible/awx/issues/6267
2020-03-12 14:14:56 -04:00
AlanCoding
a1cdc07944 Print module standard out in test failure scenarios 2020-03-12 12:26:54 -04:00
Keith Grant
eea80c45d1 fix keys, clean up surveylist 2020-03-12 08:42:59 -07:00
softwarefactory-project-zuul[bot]
beb8021580 Merge pull request #6263 from ryanpetrello/930-release-branch
bump version to 9.3.0

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-11 22:57:45 +00:00
Keith Grant
07565b5efc add error handling to TemplateSurvey 2020-03-11 15:06:13 -07:00
Christian Adams
3755151cc5 Update dev container to be consistent with other installation methods
- rename start_development.sh script to `launch_awx.sh`, like it is in k8 installations
2020-03-11 16:23:31 -04:00
Darin Johnson
6cd4b1c666 Add support for importing host/group descriptions
Signed-off-by: Darin Johnson <djohnson@sonifi.com>
2020-03-11 15:17:14 -05:00
Ryan Petrello
36078651d3 bump version to 9.3.0 2020-03-11 14:34:27 -04:00
softwarefactory-project-zuul[bot]
8b768bcb01 Merge pull request #6174 from AlanCoding/collection_single_loop
Make demo data in tests, further refine templating loop

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-11 18:19:31 +00:00
softwarefactory-project-zuul[bot]
16d9e1cfc7 Merge pull request #5968 from mabashian/jobs-list-sockets
Changes ui-side behavior in response to websocket job status updates on several lists

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-11 18:13:06 +00:00
Keith Grant
2584f7359e restructure TemplateSurvey & list components 2020-03-11 09:33:04 -07:00
Alex Corey
286cec8bc3 WIP 2020-03-11 09:33:04 -07:00
Alex Corey
64b1aa43b1 Adds SurveyList tool bar 2020-03-11 09:33:04 -07:00
softwarefactory-project-zuul[bot]
0fd9153cf7 Merge pull request #6254 from ryanpetrello/redact-faster
optimize the awx.main.redact SCM URL sanitizer regex

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-11 14:56:02 +00:00
Ryan Petrello
c95624e27f optimize the SCM URL sanitizer regex
\w+ is too greedy for large strings that don't contain URLs
2020-03-11 10:10:35 -04:00
softwarefactory-project-zuul[bot]
5cf33f57a4 Merge pull request #6253 from AlanCoding/smart_error
Fix server error creating smart inventories

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-11 13:08:00 +00:00
AlanCoding
5c331934e2 Fix server error creating smart inventories 2020-03-10 22:00:31 -04:00
softwarefactory-project-zuul[bot]
7ac21b4922 Merge pull request #6252 from gamuniz/fix_typo_meta
removed extra quotes in example

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-11 00:14:46 +00:00
softwarefactory-project-zuul[bot]
04fe18d840 Merge pull request #6239 from marshmalien/check-host-inventory-id
Check for top-level inventory and host inventory match 

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-10 23:13:16 +00:00
Gabe Muniz
b9829e2bde removed extra quotes in example 2020-03-10 23:08:38 +00:00
softwarefactory-project-zuul[bot]
a99d4a8419 Merge pull request #6248 from marshmalien/side-nav-dark-theme
Use dark theme in side navigation 

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-10 21:53:22 +00:00
Marliana Lara
676b29346c Switch side nav to dark theme 2020-03-10 16:40:34 -04:00
mabashian
6c7ab97159 Adds aria-label attrs to img elements 2020-03-10 16:12:29 -04:00
mabashian
8077c910b0 Adds lang attr to installing template 2020-03-10 16:10:51 -04:00
AlanCoding
feef39c5cc Change test to use native list for schemas 2020-03-10 16:07:04 -04:00
AlanCoding
e80843846e Modernize types of WFJT module 2020-03-10 16:07:03 -04:00
softwarefactory-project-zuul[bot]
208dbc1f92 Merge pull request #6237 from beeankha/fix_user_module
Fix Username Idempotency in tower_user Module

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-10 20:06:05 +00:00
Marliana Lara
2cb5046ec6 Throw an error when host inventory doesn't match parent inventory 2020-03-10 15:33:39 -04:00
mabashian
ecc68c1003 Adds lang attr to html tag to specify default language for the application 2020-03-10 15:33:31 -04:00
softwarefactory-project-zuul[bot]
356b674a49 Merge pull request #6241 from mabashian/4085-cred-edit
Fixes bug where users without read access on a creds org cannot edit the cred

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-10 19:19:28 +00:00
beeankha
185c581007 Remove len() check
Remove comment

Remove quote marks from default values
2020-03-10 15:18:34 -04:00
softwarefactory-project-zuul[bot]
789397d56c Merge pull request #6240 from ryanpetrello/schedule-rbac-tests
add RBAC tests for schedules on inventory and project updates

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-10 18:44:18 +00:00
Marliana Lara
e816f73ecf Show content error when the top-level inventory and host inventory do not match 2020-03-10 14:24:59 -04:00
softwarefactory-project-zuul[bot]
bbe5789e70 Merge pull request #6235 from marshmalien/6142-inv-group-add-host-form
Add Inventory Group Host Add form

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-10 17:48:27 +00:00
Ryan Petrello
ad1a7fc9c9 add RBAC tests for schedules on inventory and project updates 2020-03-10 13:45:57 -04:00
mabashian
dd5f25186b Fixes bug where user with edit permissions on a credential but no permissions on the credentials org would be denied access to the form in the UI. 2020-03-10 13:31:55 -04:00
softwarefactory-project-zuul[bot]
ecb7147614 Merge pull request #6229 from AlexSCorey/5895-SurveyListToolbar
Adds SurveyList tool bar

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-10 17:13:46 +00:00
Marliana Lara
87396f968c Use variables for inventory breadcrumb path segments 2020-03-10 13:02:14 -04:00
softwarefactory-project-zuul[bot]
87bfb82907 Merge pull request #6238 from jakemcdermott/awaiting-for-godot
Remove some rogue awaits

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-10 16:53:30 +00:00
Alex Corey
65e988b44c Impoves test and removes uncessary condition 2020-03-10 12:20:48 -04:00
Jake McDermott
4381a7d75c Remove some rogue awaits 2020-03-10 11:59:37 -04:00
Alex Corey
3a6528dc0d Adds toolbar 2020-03-10 10:08:40 -04:00
beeankha
c113c2db52 Fix username/name issue in tower_user module, update test playbook 2020-03-10 10:06:38 -04:00
Marliana Lara
b7d2d6ad89 Add Inventory Group Host Add form 2020-03-09 19:58:31 -04:00
softwarefactory-project-zuul[bot]
01d77d5407 Merge pull request #6221 from marshmalien/6150-disassociate-modal
Add disassociate inventory group host button 

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-09 23:47:16 +00:00
softwarefactory-project-zuul[bot]
87c6ed52cd Merge pull request #6234 from wenottingham/found-a-mole--lets-whack-it
Remove SCL python from awx-python

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-09 20:59:30 +00:00
softwarefactory-project-zuul[bot]
0d5a46a6e1 Merge pull request #6233 from marshmalien/6210-user-teams-form-btn-layout
Fix form action button layout

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-09 20:41:22 +00:00
softwarefactory-project-zuul[bot]
f3ab3de1be Merge pull request #6228 from jakemcdermott/6191-fix-unnecessary-panel-reload-02
Fix unnecessary panel reload and refactor top-level host and inventory routing components

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-09 20:03:44 +00:00
Bill Nottingham
871695ea5e Remove SCL python from awx-python
This really should be created at build time.
2020-03-09 15:51:56 -04:00
Marliana Lara
0f5b694514 Fix form action button layout 2020-03-09 14:56:39 -04:00
softwarefactory-project-zuul[bot]
9567dc9e17 Merge pull request #6231 from jakemcdermott/6230-fix-double-schedules
Remove duplicate schedule tab

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-09 18:46:12 +00:00
Jake McDermott
24d35e9593 Remove duplicate schedule tab 2020-03-09 13:39:40 -04:00
softwarefactory-project-zuul[bot]
b6be8ca445 Merge pull request #6212 from marshmalien/6210-fix-cred-form-button-layout
Fix credential form action button layout

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-09 17:32:34 +00:00
Jake McDermott
beb10feb0c Refactor top-level host and inv routing components
* Remove route render props
* Remove unneeded load checks
* Make PageSection component placement consistent with other screens
* Fix issues causing complete panel reload on tab change
2020-03-09 12:12:49 -04:00
Jake McDermott
6ec9c45341 Fix screen reload on host tab change 2020-03-09 11:35:26 -04:00
softwarefactory-project-zuul[bot]
9a394a5726 Merge pull request #6219 from dsesami/host-detail-labels
Host detail labels

Reviewed-by: Daniel Sami
             https://github.com/dsesami
2020-03-09 13:37:50 +00:00
Marliana Lara
25f4aa19b7 Add disassociate inventory group host modal 2020-03-06 17:48:12 -05:00
softwarefactory-project-zuul[bot]
7ff5bacce5 Merge pull request #6185 from jlmitch5/addWFJTNotAccTabs
add notification and access tabs to wfjt

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-06 22:05:05 +00:00
softwarefactory-project-zuul[bot]
3e820a88e1 Merge pull request #6216 from pilou-/doc_extract_credentials
[doc] Explain how to extract credentials or encrypted settings

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-06 21:54:51 +00:00
John Mitchell
c1ab118481 remove unnecessary org rest calls for notifcation tabs on proj wfjt 2020-03-06 16:04:16 -05:00
John Mitchell
3952be9429 add notification and access tabs to wfjt 2020-03-06 16:04:16 -05:00
Ryan Petrello
35f414ccf2 clarify how AWX stores cerdentials 2020-03-06 16:00:41 -05:00
softwarefactory-project-zuul[bot]
304bf6805b Merge pull request #6217 from ryanpetrello/workflow-approval
record a start time for WorkflowApproval jobs

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-06 20:54:39 +00:00
Daniel Sami
e733506477 Merge branch 'devel' into host-detail-labels 2020-03-06 15:50:58 -05:00
softwarefactory-project-zuul[bot]
f4366be419 Merge pull request #6170 from mabashian/5859-jt-schedule-details
Adds generic schedule detail component and applies it to JT/WFJT/Proj schedules

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-06 20:44:11 +00:00
Daniel Sami
64018a71bb used lint 2020-03-06 15:41:10 -05:00
softwarefactory-project-zuul[bot]
0c9c349fb9 Merge pull request #6211 from marshmalien/6141-inv-host-components
Remove screen -> screen imports in Inventories and Hosts

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-06 20:02:36 +00:00
mabashian
6dd4d04bf5 Move label out to styled component. Removes dependency on internal pf classes. 2020-03-06 14:56:17 -05:00
mabashian
21b4455ee6 Change nestedResource to schedule in setBreadcrumbConfig. As it currently stands the only nested resource that could be passed here is a schedule. 2020-03-06 14:36:35 -05:00
mabashian
314e345825 Tweak Schedules props to include the options request callback needed to load the list after rebasing. 2020-03-06 14:36:35 -05:00
mabashian
90e047821d Makes entire hierarchy of schedule components generic 2020-03-06 14:36:34 -05:00
mabashian
01fe89e43c Moves request to generate preview down into the ScheduleDetail component 2020-03-06 14:32:09 -05:00
mabashian
1f2edd81ab Adds generic schedule detail component and applies it to JT schedules 2020-03-06 14:32:09 -05:00
Ryan Petrello
862de0b6f3 record a start time for WorkflowApproval jobs
see: https://github.com/ansible/awx/issues/6202
2020-03-06 14:16:27 -05:00
Pierre-Louis Bonicoli
d75c2d9b44 Explain how to extract credentials/settings 2020-03-06 18:18:20 +01:00
softwarefactory-project-zuul[bot]
1b8ff1f846 Merge pull request #6194 from jakemcdermott/6191-fix-unnecessary-panel-reload
Fix panel loading and clean up unneeded code

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-06 17:14:27 +00:00
softwarefactory-project-zuul[bot]
a93b1aa339 Merge pull request #6169 from AlexSCorey/5895-SurveyList
Adds the list of the survey questions.

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-06 16:57:41 +00:00
Marliana Lara
4c6191041c Fix credential form action button layout 2020-03-06 11:12:09 -05:00
Alex Corey
edb3f6df55 Adds the list of the survey questions.
TODO:  Add delete functionality.  Add sort functionality.
Add preview functionality.
Toolbar will be built out with the other functionalities.
2020-03-06 11:10:18 -05:00
softwarefactory-project-zuul[bot]
7a3ece7fd2 Merge pull request #6197 from jbradberry/choice-field-metadata
Show API choice field metadata more correctly for null vs ''

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-06 15:30:21 +00:00
softwarefactory-project-zuul[bot]
73e867b6f5 Merge pull request #6205 from ryanpetrello/proj-inv-sched
fix global schedule creation for project and inventory updates too

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-06 14:36:22 +00:00
Ryan Petrello
acc34c1393 fix global schedule creation for project and inventory updates too
related: https://github.com/ansible/awx/pull/6193
2020-03-06 08:55:13 -05:00
Marliana Lara
3d5a002676 Remove all inventory route logic from Host screens 2020-03-06 01:36:38 -05:00
Marliana Lara
bb6d9af90b Create nested inventory host route files and components 2020-03-06 01:35:58 -05:00
Marliana Lara
da94b2dc9e Add InventoryHostAdd route file 2020-03-06 01:25:07 -05:00
softwarefactory-project-zuul[bot]
a1c2db3db5 Merge pull request #6190 from mabashian/5864-jt-schedule-add
Adds Add button to schedules list along with rbac restrictions

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-05 23:26:49 +00:00
Jeff Bradberry
d849e81891 Show API choice field metadata more correctly for null vs '' 2020-03-05 17:10:59 -05:00
Jake McDermott
a5afac62ca Fix panel reloading and clean up unneeded code 2020-03-05 15:36:25 -05:00
softwarefactory-project-zuul[bot]
66c98ca9bc Merge pull request #6193 from ryanpetrello/awx-cli-schedules-options
fix a bug in OPTIONS /api/v2/schedules/

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-05 20:25:47 +00:00
softwarefactory-project-zuul[bot]
a00e7c7050 Merge pull request #6192 from squidboylan/fix_typo
Fix a typo in the collection README

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-05 20:22:51 +00:00
Ryan Petrello
cd1ff6b16a fix a bug in OPTIONS /api/v2/schedules/
a side effect of this bug is that `awx schedules create` doesn't work
properly for non-admin users (i.e., users who have execute access for
a JT)

see: https://github.com/ansible/awx/issues/5717
2020-03-05 14:43:54 -05:00
softwarefactory-project-zuul[bot]
b560a21ca3 Merge pull request #6187 from marshmalien/fix-inv-host-add-save
Fix bug where Inventory Host Add form doesn't save

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-05 19:02:32 +00:00
Caleb Boylan
63fa367e9d Fix a typo in the collection README 2020-03-05 10:23:39 -08:00
mabashian
d33daeee91 Adds Add button to schedules list along with rbac restrictions 2020-03-05 12:34:29 -05:00
Marliana Lara
9d449c419b Fix bug where Inv Host Add form doesn't save due to form error 2020-03-05 10:58:06 -05:00
softwarefactory-project-zuul[bot]
e34e88549f Merge pull request #6152 from ryanpetrello/venv-realpath
respect home directory symlinks for BASE_VENV_PATH

Reviewed-by: Bill Nottingham
             https://github.com/wenottingham
2020-03-05 15:23:38 +00:00
AlanCoding
c073e39c69 Simplify build loop, make demo data in tests 2020-03-05 08:48:48 -05:00
softwarefactory-project-zuul[bot]
4fcd2c594c Merge pull request #6161 from jakemcdermott/6151-missing-cred-types
Fix potentially missing credential type options in multicredential select

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-04 23:16:33 +00:00
Rebeccah
457dc956f1 added a check for the field of finished making sure it's not none, and then breaking the DateTime function 2020-03-04 15:56:46 -05:00
softwarefactory-project-zuul[bot]
3e5428131c Merge pull request #6156 from AlanCoding/collection_install
Unify collection targets for install and ansible-test

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-04 19:10:47 +00:00
softwarefactory-project-zuul[bot]
d08f59272e Merge pull request #6038 from gamuniz/honor_thy_precedence
fixed precedence on ansible.cfg

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-04 18:58:12 +00:00
softwarefactory-project-zuul[bot]
8b95d7be94 Merge pull request #6154 from keithjgrant/6107-column-alignment
fix column widths when action buttons hidden due to permissions

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-04 17:54:14 +00:00
softwarefactory-project-zuul[bot]
6c22ddf608 Merge pull request #5841 from AlexSCorey/5813-WorkflowJTForm
Adds WorkflowJobTemplate Add and Edit form and functionality.

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-04 16:24:49 +00:00
Alex Corey
8227054d11 Adds WorkflowJobTemplate Add and Edit form and functionality.
Fields work and forms save

Adds Webhook form fields and tooltip to VariablesField component

Alpha order

Fixes contentLoading issue in PR and enables Launch on JT List

Adds page section to fix render issue

Adds subform restore functionality and addresses PR issues

Adds pageSection to jt add form and fixes other PR issues

-Fixes spelling error on WFJTDetail
-Adds page section to JT Add Form to fix styling issue
-Adds spacing between functions
-Fixes form submission error by allowing state to handle the lookups while formik
only handles their ids.

Fixes styling issues, navigation, props, and adds useRequest hook
-Add functionality to remove chips from look up fields
-Removes uncessary custome styling from
-Removes uncessary Form Group wrappers
-Adds internationalization to webhook key string.
-Adds field level error handling
-updates tests
-Adds initial null value to form submit error

Adds error handling to submit labels, prevents uncessary api call

The unecessary api call is for the webhook credential id.  If there is no
webhook service we do not want the api to make a call for get the webhook credential
type id.

Adds error handling test to add and edit form. Updates Form component

Updates tests to a real error.

Fixes extra vars bug
2020-03-04 10:36:30 -05:00
softwarefactory-project-zuul[bot]
73b33e1435 Merge pull request #6116 from AlanCoding/early_error
Fail on launch for scenario where job cannot run

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-04 15:19:22 +00:00
Jake McDermott
deaf2028ad Request all types for multicred lookup 2020-03-04 09:08:46 -05:00
Jake McDermott
d812972d3c Wrap credential help text at 110 chars 2020-03-04 09:08:01 -05:00
AlanCoding
54b553b78c Simplify syntax for loop labels 2020-03-04 08:07:10 -05:00
AlanCoding
3e08bbeb93 Make wording on running less perscriptive and more general 2020-03-04 07:42:52 -05:00
AlanCoding
22524589e3 Employ the collection_package var in a few missing places 2020-03-03 22:19:38 -05:00
AlanCoding
85ec73bf4b Unify collection targets for install and ansible-test 2020-03-03 20:19:41 -05:00
softwarefactory-project-zuul[bot]
ccd36b9560 Merge pull request #6155 from jakemcdermott/job-inventory-links
Fix job->inventory links

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-04 00:27:01 +00:00
softwarefactory-project-zuul[bot]
61755e2838 Merge pull request #6149 from jlmitch5/fixMultiSelectCred
update multi select credential logic vault credential logic, add notice, and update multicred tests

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-03 23:51:30 +00:00
Jake McDermott
be56a1d3df Fix job->inventory links 2020-03-03 18:42:49 -05:00
softwarefactory-project-zuul[bot]
46c86ea6c0 Merge pull request #6144 from marshmalien/6049-inv-group-nested-hosts
Add Inventory Group Host list

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-03 22:31:51 +00:00
softwarefactory-project-zuul[bot]
401c7c3da2 Merge pull request #6148 from ryanpetrello/fact-data-error
make fact saving code more robust to unexpected fact data

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-03 22:20:42 +00:00
Keith Grant
f1120d39db fix column widths when action buttons hidden due to permissions 2020-03-03 14:19:49 -08:00
Michael Abashian
80617df22d Merge branch 'devel' into 5813-WorkflowJTForm 2020-03-03 17:10:48 -05:00
Ryan Petrello
b5e5fea117 respect home directory symlinks for BASE_VENV_PATH 2020-03-03 16:47:38 -05:00
softwarefactory-project-zuul[bot]
e3ec63e8e5 Merge pull request #6147 from ryanpetrello/job-host-summary-notification
properly support job host summary data in custom notification templates (and remove a few fields that don't work)

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-03 21:47:24 +00:00
Ryan Petrello
e232cd392c make fact saving code more robust to unexpected fact data
see: https://github.com/ansible/awx/issues/5935
2020-03-03 16:38:33 -05:00
Daniel Sami
8301254f57 further tags 2020-03-03 16:03:16 -05:00
softwarefactory-project-zuul[bot]
9cdfc19215 Merge pull request #6146 from mabashian/upgrade-react-3-2
Upgrade react and react-dom to latest

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-03 20:59:58 +00:00
Daniel Sami
c50705a2dc initial labels for host tests 2020-03-03 15:39:38 -05:00
softwarefactory-project-zuul[bot]
9f948e90d9 Merge pull request #6129 from squidboylan/collection_integration_tests
Add collection integration tests

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-03 20:23:22 +00:00
Ryan Petrello
e7f36eb2ea remove a few custom notification fields that don't work
these aren't top-level serializer fields; they're summary fields
if we want to support these properly, we should treat them as
enhancements, and write support, tests, and documentation
2020-03-03 15:20:41 -05:00
John Mitchell
c261d6acf0 update multi select credential logic vault credential logic, add notice, and update multicred tests 2020-03-03 15:16:57 -05:00
Ryan Petrello
32ef805e23 properly support job host summary data in custom notification templates
see: https://github.com/ansible/tower/issues/4148
2020-03-03 15:00:41 -05:00
softwarefactory-project-zuul[bot]
d009ce49f5 Merge pull request #6145 from ryanpetrello/fix-grafana
fix broken grafana notifications

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-03 19:28:22 +00:00
Caleb Boylan
d14bf00f6c Add collection integration test instructions to the README 2020-03-03 10:59:33 -08:00
softwarefactory-project-zuul[bot]
5dc4e30820 Merge pull request #6130 from mabashian/general-toggle-component
Refactors YamlJsonToggle component into a generic Toggle component

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-03 18:46:05 +00:00
Caleb Boylan
afbeacf499 Fix up the collection integration tests 2020-03-03 10:44:48 -08:00
Caleb Boylan
fc80cf5241 Replace randstr with password plugin in collection tests 2020-03-03 10:44:48 -08:00
Caleb Boylan
4a6db13daa Copy collection integration tests in 2020-03-03 10:44:48 -08:00
mabashian
d5372dae36 Upgrade react and react-dom to latest 2020-03-03 13:07:50 -05:00
softwarefactory-project-zuul[bot]
0b702ede4e Merge pull request #6133 from mabashian/upgrade-pf-deps-3-2
Updates our four patternfly deps to latest

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-03 18:04:59 +00:00
mabashian
3c7f596288 Change currentValue prop to simply value. Adds basic unit test coverage to MultiButtonToggle component. 2020-03-03 12:57:12 -05:00
Ryan Petrello
6207dad226 fix broken grafana notifications
since the custom notification template refactor, grafana notification
support has been broken; this is largely because grafana functions more
like the webhooks, and needs to send JSON in its notification body

see: https://github.com/ansible/awx/issues/6137
2020-03-03 12:44:28 -05:00
Marliana Lara
2b48e43946 Add Inventory Group Host list 2020-03-03 12:01:25 -05:00
Alex Corey
4709f57f46 Updates tests to a real error. 2020-03-03 11:57:36 -05:00
Alex Corey
b055aad641 Adds error handling test to add and edit form. Updates Form component 2020-03-03 11:57:36 -05:00
Alex Corey
acfa6d056f Adds error handling to submit labels, prevents uncessary api call
The unecessary api call is for the webhook credential id.  If there is no
webhook service we do not want the api to make a call for get the webhook credential
type id.
2020-03-03 11:57:36 -05:00
Alex Corey
51a069fcc4 Fixes styling issues, navigation, props, and adds useRequest hook
-Add functionality to remove chips from look up fields
-Removes uncessary custome styling from
-Removes uncessary Form Group wrappers
-Adds internationalization to webhook key string.
-Adds field level error handling
-updates tests
-Adds initial null value to form submit error
2020-03-03 11:57:36 -05:00
Alex Corey
fc89b627d7 Adds pageSection to jt add form and fixes other PR issues
-Fixes spelling error on WFJTDetail
-Adds page section to JT Add Form to fix styling issue
-Adds spacing between functions
-Fixes form submission error by allowing state to handle the lookups while formik
only handles their ids.
2020-03-03 11:57:36 -05:00
Alex Corey
e90ee5113d Adds subform restore functionality and addresses PR issues 2020-03-03 11:57:36 -05:00
Alex Corey
4ccca08cda Adds page section to fix render issue 2020-03-03 11:57:36 -05:00
Alex Corey
b757fdebf8 Fixes contentLoading issue in PR and enables Launch on JT List 2020-03-03 11:57:36 -05:00
Alex Corey
3ee6f1f3c7 Alpha order 2020-03-03 11:57:36 -05:00
Alex Corey
d4ba32d0c5 Adds Webhook form fields and tooltip to VariablesField component 2020-03-03 11:57:36 -05:00
Alex Corey
d97f516c3a Fields work and forms save 2020-03-03 11:57:36 -05:00
Alex Corey
52a8935b20 Adds WorkflowJobTemplate Add and Edit form and functionality. 2020-03-03 11:57:36 -05:00
Rebeccah
07752f48f6 formatted finished time to match microsecond expected output as is in the API. 2020-03-03 11:05:28 -05:00
mabashian
10b5a10728 Jobs that error should trigger us to to update the Recent Jobs list along with successful/failed/canceled 2020-03-03 11:05:28 -05:00
Rebeccah
e11ff69f3e Added in check for the unified_job_template_id attribute to be present and populated in the object.
For anyone reading this later, know that AdHocCommands still have unified_job_template and unified_job_template_id fields, they are just nonetypes because they don't get used by the AdHocCommand objects. Which means you have to actually get the object, not just check that it's there, to use it the way I am in this change.
2020-03-03 11:05:28 -05:00
mabashian
d3fa34c665 Remove tooltip update when job finishes. This will be handled later down the line by buildTooltips(). 2020-03-03 11:05:28 -05:00
mabashian
48a615231b Fix jshint errors 2020-03-03 11:05:28 -05:00
mabashian
b09ac71647 Trims down GET requests made on the dashboard in response to websocket messages 2020-03-03 11:05:28 -05:00
mabashian
d5dd3c521f Consume finished timestamp on org templates list when available via websocket message 2020-03-03 11:05:28 -05:00
mabashian
db43341f96 Consume finished timestamp from websocket message and update the relevant job row. Also adds logic to attempt to re-order the list when the sort order is -finished since we have enough information client-side to do that. 2020-03-03 11:05:28 -05:00
mabashian
3234f246db Consume finished timestamp from websocket message when it's available to update the relevant row in the templates list. 2020-03-03 11:05:28 -05:00
Rebeccah
6d6d99bcf8 fixed the spelling of cancelled to be canceled, note to us later -> we need to stick with a single spelling of the word 2020-03-03 11:05:28 -05:00
mabashian
a6cd32522f Removes GET requests in response to websocket messages on the org job templates list. List is solely updated based on data from the websocket messages. 2020-03-03 11:05:28 -05:00
Rebeccah
1fe28463da added finished job timestamp to websocket emit 2020-03-03 11:05:28 -05:00
mabashian
51a6194b8d Removes logic performing GET requests on api/v2/templates whenever a job status update message comes across the websocket. We now use data exclusively from the websocket to update the UI. 2020-03-03 11:05:28 -05:00
mabashian
e75f7b0beb Stop making rest calls for inventory source sync updates on inventory sources list 2020-03-03 11:05:28 -05:00
mabashian
179c62e2f3 Stop making rest calls for project sync updates on projects list 2020-03-03 11:05:28 -05:00
Rebeccah
98f5525d28 added unified job template ID to websocket emits 2020-03-03 11:05:28 -05:00
mabashian
60a137225a Changes how the jobs list reacts to socket messages. We now only make targeted GET requests for new rows. We use the available information in the socket message to update the relevant row (if visible in the list). 2020-03-03 11:05:28 -05:00
softwarefactory-project-zuul[bot]
c1bfcd73fb Merge pull request #5972 from jainnikhil30/fix_smartinv_duplicate_hosts
fix smart inventory duplicate hosts

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-03 16:03:13 +00:00
mabashian
322b4ee1e4 Updates our four patternfly deps to latest 2020-03-02 13:43:15 -05:00
softwarefactory-project-zuul[bot]
98dc6179f5 Merge pull request #5919 from AlanCoding/good_projects
Fail early processing project factory

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-02 18:41:47 +00:00
AlanCoding
07807c2dec Fail on launch for scenario where job cannot run 2020-03-02 13:14:03 -05:00
softwarefactory-project-zuul[bot]
16ecf17c69 Merge pull request #6115 from jlmitch5/scheduleListInDetailViews
add schedule list to detail views

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-02 16:31:03 +00:00
mabashian
1f0acef844 Changes Toggle to MultiButtonToggle in an attempt to differentiate it from an upstream PF component. Altered props to be a bit more concise as well as support more than two buttons. 2020-03-02 11:22:18 -05:00
softwarefactory-project-zuul[bot]
5a164cae15 Merge pull request #6093 from ryanpetrello/remove-beat-thread
switch the periodic scheduler to a background process (instead of a thread) to avoid a cpython bug

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-03-02 15:46:27 +00:00
John Mitchell
b57405b696 assorted schedule list fixes:
- remove pagesection and card from component...move to where called for root list
- remove unnecessary placeholder schedule tab on job template detail
2020-03-02 10:00:27 -05:00
John Mitchell
5fdf6cf60f simplify conditional checking if schedules tab should be shown on proj detail 2020-03-02 09:35:34 -05:00
John Mitchell
c1c382a941 update ScheduleList api read to single prop 2020-03-02 09:22:32 -05:00
mabashian
a997b40852 Refactors YamlJsonToggle component into something a little more generic so that it can be used to toggle between local and utc times in the schedule details view. 2020-02-28 17:25:31 -05:00
softwarefactory-project-zuul[bot]
99cd2e601d Merge pull request #6127 from benthomasson/bump_config_json
Bumps the version of config.json to 1.1

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-28 21:09:48 +00:00
Ben Thomasson
fc402aff29 Bumps the version of config.json to 1.1 2020-02-28 15:28:31 -05:00
softwarefactory-project-zuul[bot]
2ec035f918 Merge pull request #6124 from ryanpetrello/awx-login-token-description
cli: add the ability to specify a token description w/ `awx login`

Reviewed-by: Jeff Bradberry
             https://github.com/jbradberry
2020-02-28 20:02:19 +00:00
softwarefactory-project-zuul[bot]
fe046b47b5 Merge pull request #6110 from keithjgrant/qs-empty-strings
Remove "Manual" option from search filters

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-28 17:19:30 +00:00
Ryan Petrello
3e0e4b6c8f cli: add the ability to specify a token description w/ awx login
see: https://github.com/ansible/awx/issues/6122
2020-02-28 11:12:26 -05:00
softwarefactory-project-zuul[bot]
7fe57268f6 Merge pull request #6121 from rooftopcellist/add_total_instances
Add total licensed instances to analytics

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-28 13:56:19 +00:00
Nikhil Jain
9eecb24c32 fix smart inventory duplicate hosts 2020-02-28 09:46:44 +05:30
softwarefactory-project-zuul[bot]
a8a45fca84 Merge pull request #6117 from keithjgrant/6095-redirect-after-host-delete
Fix redirect after host delete

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-28 00:45:05 +00:00
softwarefactory-project-zuul[bot]
33df6f8ad2 Merge pull request #6109 from marshmalien/inventory-host-toggle
Use HostToggle component in InventoryHostList

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-27 23:53:50 +00:00
softwarefactory-project-zuul[bot]
44223003aa Merge pull request #6112 from AlanCoding/the_canceled_dead
Cancel jobs if they were deleted in the database

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-27 22:17:16 +00:00
Keith Grant
a60e7a7855 fix redirect url after host delete 2020-02-27 13:39:56 -08:00
softwarefactory-project-zuul[bot]
e971ec993b Merge pull request #6114 from squidboylan/fix_collection
Fix job_list all_pages next value

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-27 20:58:43 +00:00
John Mitchell
989ef3538e add test for conditional show/hide of schedules tab for project detail view 2020-02-27 15:20:50 -05:00
John Mitchell
4db3e823bf add schedule list to proj, jt and wfjt 2020-02-27 15:05:46 -05:00
Caleb Boylan
c374316648 Collection: Fix job_list all_pages next value 2020-02-27 11:42:33 -08:00
AlanCoding
5dba49a7bc Lower level of log about skipped project update 2020-02-27 14:20:36 -05:00
AlanCoding
7b880c6552 Cancel jobs if they were deleted in the database 2020-02-27 14:12:47 -05:00
Keith Grant
5574cf0595 remove Manual option from project, inventory filters 2020-02-27 11:01:36 -08:00
John Mitchell
e706e0a2e2 update directory structure of schedule list files 2020-02-27 12:37:37 -05:00
Ryan Petrello
5364e78397 switch the periodic scheduler to a child process (instead of a thread)
I have a hunch that our usage of a daemon thread is causing import lock
contention related to https://github.com/ansible/awx/issues/5617
We've encountered similar issues before with threads across dispatcher
processes at fork time, and cpython has had bugs like this in recent
history:

https://bugs.python.org/issue38884

My gut tells me this might be related.

The prior implementation - based on celerybeat - ran its code in
a process (not a thread), and the timing of that merge matches the
period of time we started noticing issues.

Currently testing it to see if it resolves some of the issues we're
seeing.
2020-02-27 12:15:15 -05:00
Christian Adams
f93ca814ac Add total licensed instances to analytics 2020-02-27 10:42:25 -05:00
Marliana Lara
3bf1ad3028 Move HostToggle into shared components directory 2020-02-27 09:56:21 -05:00
softwarefactory-project-zuul[bot]
e096ad18cb Merge pull request #6001 from mabashian/4967-jt-prompt-on-launch
Adds prompt on launch support to the rest of the relevant jt fields

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-27 09:13:29 +00:00
softwarefactory-project-zuul[bot]
5ca73f1101 Merge pull request #6058 from marshmalien/5890-jt-completed-jobs-list
Add Completed Job list tab to multiple resources

Reviewed-by: Alex Corey <Alex.swansboro@gmail.com>
             https://github.com/AlexSCorey
2020-02-27 09:13:22 +00:00
Keith Grant
7e8fb29658 update qs utils to allow empty string params 2020-02-26 16:38:52 -08:00
softwarefactory-project-zuul[bot]
258689a9ed Merge pull request #6090 from marshmalien/6085-hostListItem-remove-duplicates
HostListItem - Remove duplicate action items

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-26 22:39:43 +00:00
mabashian
e80e3f7410 Reapply prompt on launch for job template fields after rebasing. 2020-02-26 16:59:45 -05:00
softwarefactory-project-zuul[bot]
154b9c36ac Merge pull request #5747 from john-westcott-iv/collections
Porting Collections Off of Tower CLI

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-26 20:35:00 +00:00
Marliana Lara
deced917cf Refactor HostListItem into functional component and add test for host toggle 2020-02-26 15:27:19 -05:00
softwarefactory-project-zuul[bot]
88b7256e96 Merge pull request #6087 from jakemcdermott/fix-6054
Fix several ui_next bugs related to unexpected data types

Reviewed-by: Jake McDermott <yo@jakemcdermott.me>
             https://github.com/jakemcdermott
2020-02-26 20:21:06 +00:00
Marliana Lara
033848a605 Refactor Hosts into functional component 2020-02-26 15:10:17 -05:00
mabashian
0e663921d6 Removes rogue comment and marks JT inventory validation string for translation. 2020-02-26 14:47:28 -05:00
mabashian
0582079606 Adds prompt on launch support to the rest of the relevant fields in the Job template form. Adds extra variables field to the job template form. Removes the advanced section in favor of a straight form. 2020-02-26 14:47:28 -05:00
Jake McDermott
6536f5a453 Delete falsey project creds before POST|PATCH
Depending on the permissions of the user submitting the form, the API
might throw an unexpected error if our creation request has a
zero-length string as its credential field. As a work-around,
normalize falsey credential fields by deleting them.
2020-02-26 14:22:58 -05:00
AlanCoding
c5079607aa Fail early processing project factory 2020-02-26 14:21:38 -05:00
softwarefactory-project-zuul[bot]
26dcb000f6 Merge pull request #6081 from ryanpetrello/launch-monitor-rc
cli: make launch with --monitor return code respect the final job status

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-26 19:18:10 +00:00
softwarefactory-project-zuul[bot]
8ba4f728c0 Merge pull request #6083 from dsesami/fix-wf-title-id
Fixed workflow viz title ID

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-26 19:08:29 +00:00
softwarefactory-project-zuul[bot]
ee090d34fa Merge pull request #6071 from ryanpetrello/task-manager-hang-detection
add code for detecting (and killing) a hung task manager task

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-26 19:05:36 +00:00
Jake McDermott
bd30951a4f Pass empty array instead of null to rbac list
The DataListToolbar component expects an array for additional controls
in all cases. When there's no controls to pass into the toolbar,
provide an empty array to avoid type-related errors.
2020-02-26 13:22:22 -05:00
Jake McDermott
43cce83ba1 Handle api error 'detail' key as generic form error 2020-02-26 12:44:20 -05:00
Ryan Petrello
946d643795 cli: make launch with --monitor return code respect the final job status
see: https://github.com/ansible/awx/issues/5920
see: https://github.com/ansible/awx/issues/6079
2020-02-26 12:27:06 -05:00
Daniel Sami
1a6ea99d37 fixed workflow viz title id
prettier fix
2020-02-26 11:50:36 -05:00
gamuniz
350046d495 changed syntax as insert isn't required 2020-02-26 14:28:22 +00:00
beeankha
b532012748 Make non-required params actually optional, fix idempotency issues 2020-02-26 09:26:55 -05:00
beeankha
1c4042340c Update documentation for modules, add deprecation warning for role, send and receive modules
Update variables in tower_inventory to be in dict format
2020-02-26 09:27:02 -05:00
beeankha
787c4af222 Change default values for dict parameter
Removing default of empty dict from variables param on group and host modules

Make modules comply with updated sanity tests
2020-02-26 09:26:58 -05:00
Alan Rominger
768280c9ba [last PR stuff] + Add warning if configs specified in 2 params (#5)
* Lean on API validation for tower_inventory_source arg errors

used for
 - validating needed credential is given
 - missing source_project for scm sources

* Add warning when config is specified in 2 places

Fix up unit tests, address multiple comments re: backwards compatibility, redundant methods, etc.

Update new_name and variables parameters, update unit tests
2020-02-26 09:26:55 -05:00
Alan Rominger
2e4e687d69 Optional tower cli (#3)
* Allow running tests without tower_cli

* patch up test mutability

* Fix test import error, warning mock

* flake8 error

Update documentation for non-converted modules
2020-02-26 09:26:22 -05:00
John Westcott IV
d8513a4e86 Making variables work for hosts
Clear up sanity test and remove redundant import statement
2020-02-26 09:15:04 -05:00
John Westcott IV
badd667efa Removing manual and file source types and correcting default for custom_virtualenv 2020-02-26 09:15:04 -05:00
John Westcott IV
7908f25747 Remove reference to default check mode 2020-02-26 09:15:04 -05:00
John Westcott IV
0eef67713f Only try an ID lookup if we can convert the field name_or_id to an integer
Fix linting issues, update tower_project unit test
2020-02-26 09:15:04 -05:00
John Westcott IV
6591efc160 Fixed issue that caused warning message to always display
Because scm_update_cache_timeout has a default and thus will always be != None
2020-02-26 09:15:04 -05:00
beeankha
fcc679489e Update inventory_source module source_script parameter to be optional
Unitied comment

Fix up inventory_source example, misc comment edits
2020-02-26 09:15:04 -05:00
Caleb Boylan
94df58a55b Fix strtobool casting 2020-02-26 09:15:04 -05:00
John Westcott IV
0685b2fa35 Updates to config file loading
Now supports json or yaml

Depricated multiple k=v on a single line

Remove assert statement and unused import from module_util
2020-02-26 09:15:04 -05:00
beeankha
232ea1e50c Properly cast verify_ssl type to a bool 2020-02-26 09:15:04 -05:00
beeankha
3423db6ed0 Attempt to make validate_certs work in Python2 2020-02-26 09:15:04 -05:00
beeankha
c32452d6b6 Fix Python2 config incompatibility issue 2020-02-26 09:15:04 -05:00
John Westcott IV
018dd4c1c3 Fixing config loading issues when the config has no [general] section
Fixed typo in help documentation

Fix up sanity errors and update converted modules

Remove unnecessary test playbook file
2020-02-26 09:15:04 -05:00
John Westcott IV
4fc2c58ae7 Converted tower_job_cancel 2020-02-26 09:15:04 -05:00
John Westcott IV
b4014ebabf Converted tower_job_launch.py 2020-02-26 09:15:04 -05:00
John Westcott IV
9955ee6548 Converting tower_inventory_source
Fix up inventory_source module changes, fix import yaml sanity error, change inventory_source unit tests to comply with new structure.
2020-02-26 09:15:04 -05:00
John Westcott IV
c08d402e66 Adding mutually exclusive if functionality to support tower_inventory_source 2020-02-26 09:15:04 -05:00
John Westcott IV
1c505beba6 Converted tower_group
Splitting out tower_inventory_source from tower_group

Copy/Paste typo fix and README update for breaking backwards compatability

Update credential_type module and unit tests
2020-02-26 09:15:04 -05:00
beeankha
8a0432efb7 Change config file loading function, add py2 and py3 compatibility 2020-02-26 09:14:01 -05:00
beeankha
320276f8ca Remove JSONDecodeError exception, fix tower_host variable issue 2020-02-26 09:14:01 -05:00
John Westcott IV
f89061da41 Updating tower_org to use the new tower_api format
Pass sanity and unit tests, update tests

Remove placeholder test function, convert tower_host module, fix misc typos
2020-02-26 09:14:01 -05:00
John Westcott IV
c23d605a7a Modified modules to use new tower_api format
Fixed variable name typo
2020-02-26 09:14:01 -05:00
John Westcott IV
6d90cac3f9 Bug fixes for username and delete data 2020-02-26 09:14:01 -05:00
John Westcott IV
89e92bd337 Updating call to create_or_update_if_needed 2020-02-26 09:14:00 -05:00
John Westcott IV
9271127c53 Standardizing CRUD methods
Fixing linting and conversion issues
2020-02-26 09:14:00 -05:00
beeankha
9fa5942791 Fix superclass syntax for < Python3 2020-02-26 09:14:00 -05:00
John Westcott IV
e028ed878e More tower-cli-ish parsing of config files
Clear up test failures/linting errors, update unit test

Update module_utils for linter, add wait time to project module
2020-02-26 09:14:00 -05:00
John Westcott IV
838b2b7d1e Converted tower_project 2020-02-26 09:14:00 -05:00
beeankha
7c0ad461a5 Further module conversion changes, unit test changes
Multiple module changes

Added on_change callback

Added head_endpoint

Added additional error returns

Respond with a try an ID message if multiple assets found by name via return_none_on_404 kwarg

Diferentiated between login and logout token errors

Added is_job_done method
2020-02-26 09:14:00 -05:00
John Westcott IV
68926dad27 Adding team_fields
Convert job_list and inventory modules, other changes to make sanity tests pass
2020-02-26 09:14:00 -05:00
John Westcott IV
ceb6f6c47d Converted tower_settings
Changed comments
2020-02-26 09:14:00 -05:00
John Westcott IV
167e99fce9 Converted tower_user 2020-02-26 09:14:00 -05:00
John Westcott IV
c930011616 Removing default_check_mode 2020-02-26 09:14:00 -05:00
John Westcott IV
aaaca63f83 Converted tower_organization 2020-02-26 09:14:00 -05:00
John Westcott IV
d8a9f663b1 Converted tower_credential_type.py 2020-02-26 09:14:00 -05:00
John Westcott IV
b0d0ccf44f Fix fail_json and remove redundant handle check mode 2020-02-26 09:14:00 -05:00
John Westcott IV
c57754a29b Logout is now handled by exit_json 2020-02-26 09:14:00 -05:00
John Westcott IV
65057c1fb7 Auto-handle check_mode on post, patch, delete and update_if_needed methods 2020-02-26 09:14:00 -05:00
John Westcott IV
d8be6490c2 Only warn if we can't release a tower token 2020-02-26 09:14:00 -05:00
John Westcott IV
b34208d1b6 Attempting to fix logout loop 2020-02-26 09:14:00 -05:00
John Westcott IV
0d5a9e9c8c Initial implementation of Pull #5337 2020-02-26 09:14:00 -05:00
softwarefactory-project-zuul[bot]
22d4e60028 Merge pull request #6080 from ryanpetrello/django-upgrade
update Django to address a few open CVEs

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-26 14:09:12 +00:00
Ryan Petrello
eaa766df77 update Django to address a few open CVEs
https://github.com/advisories/GHSA-hmr4-m2h5-33qx
https://github.com/advisories/GHSA-vfq6-hq5r-27r6
2020-02-26 08:18:14 -05:00
softwarefactory-project-zuul[bot]
7e5776c66f Merge pull request #6077 from Spredzy/fix_linting
awx-api-lint: Fix setup.cfg syntax for linter test

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-26 13:10:21 +00:00
Ryan Petrello
8b1806d4ca add code for detecting (and killing) a hung task manager task 2020-02-26 07:53:04 -05:00
Yanis Guenane
07232f3694 awx-api-lint: Fix setup.cfg syntax for linter test
Signed-off-by: Yanis Guenane <yguenane@redhat.com>
2020-02-26 11:07:46 +01:00
Marliana Lara
37a33f931a Add completed jobs subtab to all resources
* Resources include: Host, InventoryHost, Inventory, SmartInventory, Template, and
WFTemplate
* Move JobList into top-level shared component directory
2020-02-25 21:50:31 -05:00
softwarefactory-project-zuul[bot]
4912cbd2da Merge pull request #6046 from rooftopcellist/update_translations_awx
add translations from memsource

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-25 23:19:07 +00:00
softwarefactory-project-zuul[bot]
4c40819791 Merge pull request #5965 from benthomasson/improve_awx_kit_error_message
Works around bad error message when authentication fails

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-25 23:16:58 +00:00
softwarefactory-project-zuul[bot]
a65fd497c6 Merge pull request #6060 from wenottingham/todo-or-todont
Remove the rax support specified in the linked TODO

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-25 23:11:23 +00:00
softwarefactory-project-zuul[bot]
d824209485 Merge pull request #6063 from philipsd6/setuid-brwap-dev
Set setuid bit on bwrap in development Dockerfile

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-25 21:07:44 +00:00
Philip Douglass
7ae1c7c3d2 Set setuid bit on bwrap in development Dockerfile
Related: #5224

Signed-off-by: Philip Douglass <philip.douglass@amadeus.com>
2020-02-25 15:20:01 -05:00
Bill Nottingham
341c6ae767 Also remove some dangling rax from awxkit and collection modules. 2020-02-25 15:18:26 -05:00
softwarefactory-project-zuul[bot]
e6a94ed0cf Merge pull request #6053 from marshmalien/5866-left-align-modal-buttons
Left align modal buttons

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-25 20:13:07 +00:00
Bill Nottingham
3e6b6c05a6 Remove the rax support specified in the linked TODO 2020-02-25 15:03:05 -05:00
Ryan Petrello
544d4cd3b0 add translations from memsource 2020-02-25 12:24:24 -05:00
softwarefactory-project-zuul[bot]
e0df2f511e Merge pull request #5536 from jbradberry/null-options
Adjust the logic that renders fields with choices on an API Options call

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-25 16:47:02 +00:00
Marliana Lara
255fd0a9cb Align modal buttons to the left 2020-02-25 10:12:58 -05:00
softwarefactory-project-zuul[bot]
f31adf8a85 Merge pull request #6015 from AlexSCorey/5777-JTTabOnProjectsAndTemplateListRefactor
Fixes navigation bug

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-25 14:48:36 +00:00
softwarefactory-project-zuul[bot]
a2b169626a Merge pull request #6035 from keithjgrant/lists-to-hooks
Refactor remaining lists to hooks

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-25 14:05:28 +00:00
Keith Grant
6ffc78bcb0 add missing i18n; fix test names 2020-02-24 14:09:56 -08:00
Keith Grant
8e9fc550f6 convert InventoryList to hooks 2020-02-24 14:09:55 -08:00
Keith Grant
779d190855 convert ProjectList to hooks 2020-02-24 14:09:28 -08:00
Keith Grant
89a4b03d45 convert TeamList to hooks 2020-02-24 14:08:51 -08:00
softwarefactory-project-zuul[bot]
ccd4cdd71a Merge pull request #6044 from fosterseth/fix-4418-failing_successful_updates
Do not fail a successful project update if inventory update fails

Reviewed-by: Seth Foster
             https://github.com/fosterseth
2020-02-24 18:12:52 +00:00
Seth Foster
31dbf38a35 Prevent failing a successful project update if inventory update fails
Scenario - job is launched and spawns inventory update and project update.
If the inventory update fails, then it will fail the job and the project update.
It will fail the project update even if that update already ran and was successful.

This code change will not fail the project update if it has already ran successfully.

In cases where other jobs depend on that project update (but not the failed inventory
update), then we don't want those jobs to fail.
2020-02-24 11:35:57 -05:00
Jeff Bradberry
d0bec97bbb Adjust the logic that renders fields with choices on an API Options call
accounting for the case where blank or null is allowed.

Refs #5099
2020-02-24 10:17:38 -05:00
softwarefactory-project-zuul[bot]
22307bba97 Merge pull request #6026 from marshmalien/5866-remove-custom-tabs-buttons
Remove action button and tab style overrides

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-24 15:17:35 +00:00
softwarefactory-project-zuul[bot]
b4f5d44f65 Merge pull request #6040 from ryanpetrello/i18n-cancel-license
translate a missing string in the license UI

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-24 15:02:34 +00:00
softwarefactory-project-zuul[bot]
d469870686 Merge pull request #5937 from mabashian/5857-all-schedules
Adds the All Schedules list

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-24 14:40:06 +00:00
Alex Corey
f561bf5754 prettier 2020-02-24 09:19:02 -05:00
Ryan Petrello
2e3547d5cf translate a missing string in the license UI
see: https://github.com/ansible/tower/issues/3949
2020-02-24 09:00:07 -05:00
Alex Corey
ce8897d3e8 Fixes naviation bug by create ProjectTemplateList and ProjectTemplateListItem
Adds tests for those new files and removes uncessary test from TemplateListItem
2020-02-23 11:16:44 -05:00
Alex Corey
df77147d65 WIP 2020-02-23 10:23:43 -05:00
Alex Corey
9b11df04b3 Fixes navigation bug 2020-02-23 10:23:43 -05:00
root
58c06d5aea fixed precedence on ansible.cfg 2020-02-23 14:58:47 +00:00
softwarefactory-project-zuul[bot]
1d3bb97b07 Merge pull request #6018 from wenottingham/your-workflow-is-running--you-should-catch-it
Tweak labels for workflow pending approval message

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-22 12:57:07 +00:00
softwarefactory-project-zuul[bot]
ba3253e2e2 Merge pull request #6033 from AlanCoding/job_batch
Make job batch size configurable, fix _by fields

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-21 21:22:58 +00:00
mabashian
e6f0c01aa6 Schedule list now uses useRequest hooks for fetching and deleting. Also rolled a component for schedule toggles that can be used throughout the tree. 2020-02-21 16:14:22 -05:00
Marliana Lara
9310d59e0a Use PF color variables in HostStatus bar 2020-02-21 15:33:13 -05:00
Marliana Lara
f2e1e71302 Remove tab and button style overrides 2020-02-21 15:33:11 -05:00
mabashian
e6e31a9fc6 Updates after removing PF overrides to list components. 2020-02-21 15:30:09 -05:00
mabashian
801aaf9323 Adds the All Schedules list 2020-02-21 15:30:09 -05:00
softwarefactory-project-zuul[bot]
2a8679234a Merge pull request #6014 from keithjgrant/host-list-hooks
Host list hooks

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-21 20:28:41 +00:00
softwarefactory-project-zuul[bot]
54ab671512 Merge pull request #5933 from jlmitch5/credForm
Update form layout, Formik Field use to useField, and add credential form

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-21 20:05:31 +00:00
AlanCoding
866dd6b259 Make job batch size configurable, fix _by fields 2020-02-21 14:49:45 -05:00
Keith Grant
eba893c99b syntax fix after merge 2020-02-21 11:05:59 -08:00
John Mitchell
fd3f410cc6 fix conflict 2020-02-21 13:43:09 -05:00
Keith Grant
03aaf93cef update HostList tests for hooks 2020-02-21 10:36:17 -08:00
Keith Grant
9aef57003a use HostToggle in HostDetail; update tests 2020-02-21 10:36:17 -08:00
Keith Grant
6065eb0e65 Convert HostList to hooks
use useRequest and useDeleteItems
add HostToggle component
2020-02-21 10:31:49 -08:00
softwarefactory-project-zuul[bot]
7e4634c81f Merge pull request #6027 from AlanCoding/jt_shakeup
Randomize JT for each job batch

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-21 17:32:55 +00:00
softwarefactory-project-zuul[bot]
a03d73776f Merge pull request #6016 from AlanCoding/collection_metadata_update
Update metadata for the AWX collection

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-21 17:16:58 +00:00
John Mitchell
f14eb4327d remove unnecessary imports 2020-02-21 10:50:13 -05:00
John Mitchell
4ebd721cc5 remove card padding overrides to project add form 2020-02-21 10:50:13 -05:00
John Mitchell
21a92176b9 Update NodeTypeStep form to new FormLayout components 2020-02-21 10:50:13 -05:00
John Mitchell
ad04b02e24 update project edit test to make sure there is a local_path value set 2020-02-21 10:50:13 -05:00
John Mitchell
bc0511fe66 fix user form non submission error 2020-02-21 10:50:13 -05:00
John Mitchell
1accb9f939 fix warnings by correctly clearing out cred input values 2020-02-21 10:50:13 -05:00
John Mitchell
9253f16e36 update prettyier 2020-02-21 10:50:13 -05:00
John Mitchell
42387166bf update encrypted value display on detail and form views 2020-02-21 10:50:13 -05:00
John Mitchell
0b5f892193 update FormLayout styling 2020-02-21 10:50:13 -05:00
John Mitchell
1a0d36a6fd migrate FormFullWidthLayout from var field to calling forms 2020-02-21 10:50:13 -05:00
John Mitchell
cf3ed0dc88 update prettyier 2020-02-21 10:50:13 -05:00
John Mitchell
8d26d7861e add credential form and add edit routes 2020-02-21 10:50:13 -05:00
John Mitchell
8e0ad2ef6e add cred access tab and update credentials routing 2020-02-21 10:50:13 -05:00
John Mitchell
0aba4c36af move FormField label proptype check to FormField component 2020-02-21 10:50:13 -05:00
John Mitchell
44cd199078 add text area option to FormField component 2020-02-21 10:50:13 -05:00
John Mitchell
ce909093c0 update expanding container to trigger height check when any child changes 2020-02-21 10:50:13 -05:00
John Mitchell
df13a8fea9 update forms from FormRow to using FormLayout components 2020-02-21 10:50:13 -05:00
John Mitchell
ff823c9fdb update forms to useField fomik hook 2020-02-21 10:49:19 -05:00
softwarefactory-project-zuul[bot]
a42ff9865b Merge pull request #6022 from wenottingham/get-a-handle
Tweak workflow error message for clarity

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-21 15:37:57 +00:00
softwarefactory-project-zuul[bot]
7e13f78567 Merge pull request #6017 from ansible/no-screen-screen-imports2
Add section for patterns

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-21 15:21:49 +00:00
Bill Nottingham
e2fb83db98 Tweak workflow error message 2020-02-21 02:37:03 -05:00
AlanCoding
06eb1b6683 Randomize JT for each job batch
Populate some more fields just to have them populated

Include some missing ForeignKey links for data integrity

Add some more to fields from JT set
2020-02-20 22:49:11 -05:00
AlanCoding
d62994ec02 Update metadata for the AWX collection 2020-02-20 22:36:55 -05:00
Bill Nottingham
f20859c85f Tweak labels for workflow pending approval message 2020-02-20 22:19:34 -05:00
softwarefactory-project-zuul[bot]
b5b8adb451 Merge pull request #6025 from rooftopcellist/update_translations
UI translation strings for AWX

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-20 23:23:18 +00:00
softwarefactory-project-zuul[bot]
70b287490b Merge pull request #5982 from marshmalien/5866-remove-datalist-alert-modal
Remove DataList component overrides

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-20 23:17:05 +00:00
Christian Adams
0976e9e569 UI translation strings for AWX 2020-02-20 17:33:35 -05:00
Jake McDermott
83a96757db Add section for patterns 2020-02-20 15:57:08 -05:00
Marliana Lara
9013dcfea7 Move status icon into separate directory
* Remove ButtonGroup export
2020-02-20 15:29:47 -05:00
Marliana Lara
4ebc2573a3 Remove DataList component overrides 2020-02-20 15:21:34 -05:00
Marliana Lara
fe9b03a189 Move ButtonGroup into CodeMirrorInput directory 2020-02-20 15:19:10 -05:00
Marliana Lara
d2f6c367f0 Remove alert modal styles 2020-02-20 15:19:08 -05:00
Marliana Lara
34b717d00c Remove vertical separator 2020-02-20 15:16:14 -05:00
softwarefactory-project-zuul[bot]
0d31b05f98 Merge pull request #6012 from mabashian/workflow-action-ids-2
Expose id's on workflow action items

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-20 19:28:07 +00:00
softwarefactory-project-zuul[bot]
87a0e40331 Merge pull request #5938 from keithjgrant/4239-pagination-on-delete-followup
Pagination on delete (followup)

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-20 19:28:02 +00:00
mabashian
764c0b2e15 Fix unit test failures where we were using workflow action toooltip item id's 2020-02-20 12:57:38 -05:00
mabashian
23677b4963 Explicitly pass id through to the action item 2020-02-20 10:38:01 -05:00
mabashian
96d9d41f19 Expose id's on workflow action items 2020-02-20 10:24:37 -05:00
softwarefactory-project-zuul[bot]
a737f35653 Merge pull request #6007 from donomur/sa-annotations
Add functionality for kubernetes Service Account annotations

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-20 13:56:05 +00:00
Donovan Murphy
ed8133be2d add Service Account annotation
Signed-off-by: Donovan Murphy <dono@dono.email>
2020-02-19 20:29:42 -06:00
softwarefactory-project-zuul[bot]
7c8c6b5333 Merge pull request #6003 from ryanpetrello/more-firehoseyness
scope counter/start/end line updates to the current job for firehose.py

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-19 21:58:35 +00:00
Ryan Petrello
46fceb03a5 scope counter/start/end line updates to the current job for firehose.py 2020-02-19 16:15:33 -05:00
softwarefactory-project-zuul[bot]
4dee5eddeb Merge pull request #5989 from egmar/support-for-imagePullSecrets
Added support for K8S imagePullSecrets

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-19 19:45:12 +00:00
softwarefactory-project-zuul[bot]
709482bdac Merge pull request #5980 from shanemcd/downstream_oc_changes
properly configure AWX loggers for openshift installs

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-19 19:35:12 +00:00
softwarefactory-project-zuul[bot]
62ef1baace Merge pull request #5927 from AlanCoding/null_inventory
Handle case of deleted inventory

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-19 19:30:07 +00:00
softwarefactory-project-zuul[bot]
1fc3d2e914 Merge pull request #5986 from donomur/fix-indent-5949
Fixing kubernetes deployment indentation

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-19 19:12:26 +00:00
softwarefactory-project-zuul[bot]
d271a8c9fa Merge pull request #5978 from ryanpetrello/firehose-start-end-fix
fix start/end line incrementing behavior

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-19 18:54:41 +00:00
Shane McDonald
3bd7b3b0f8 Merge pull request #5999 from wenottingham/reinventing-the-whl
Remove requirements_setup_requires and related handling.
2020-02-19 12:11:31 -05:00
softwarefactory-project-zuul[bot]
8075cda34c Merge pull request #5932 from nixocio/add_test_awxkit
Add test method to Credential and CredentialType - awxkit 

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-19 16:22:56 +00:00
softwarefactory-project-zuul[bot]
09d6da117a Merge pull request #5979 from AlexSCorey/5814-WFJTDetailsView
Adds WFJT Details view

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-19 16:22:51 +00:00
Alex Corey
8f6b679c85 Fixes navigation issue and address ps issues. 2020-02-19 09:40:40 -05:00
Alex Corey
32e017bd03 Adds WFJT Details view
Adds Launch Functinality for WFJT.
2020-02-19 09:36:21 -05:00
Egor Margineanu
74a31224e0 Moved imagePullSecrets into ServiceAccount definition 2020-02-19 10:45:07 +02:00
Egor Margineanu
667b27fe78 Added support for K8S imagePullSecrets 2020-02-19 10:11:34 +02:00
Bill Nottingham
4c8a4013cc Remove requirements_setup_requires and related handling.
Adjust requirements to keep docutils in awx requirements; these
are downstream packaging adjustments. Override azure wheel
dependency to a version that can install bcrypt properly.
2020-02-18 22:34:59 -05:00
Donovan Murphy
5e4d73b6a3 fix indent 2020-02-18 20:27:57 -06:00
nixocio
da486d7788 Add test method to Credential and CredentialType - awxkit
Add test method to Credential and CredentialTypei - awxkit.

The inclusion of this one was discovered when testing the following
issue. https://github.com/ansible/awx/issues/5141
2020-02-18 14:44:16 -05:00
Keith Grant
30d97e2fa8 delete commented code 2020-02-18 10:10:18 -08:00
Ryan Petrello
3a95114c3a properly configure AWX loggers for openshift installs
see: https://github.com/ansible/tower/issues/3793
2020-02-18 12:50:46 -05:00
Keith Grant
1f3ad85403 de-lint 2020-02-18 09:25:15 -08:00
Ryan Petrello
90cb02e0bf fix start/end line incrementing behavior 2020-02-18 11:31:05 -05:00
softwarefactory-project-zuul[bot]
6e2bd828a1 Merge pull request #5973 from ryanpetrello/job-firehose
add the ability to load lots of jobs with firehose.py

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-18 16:30:12 +00:00
softwarefactory-project-zuul[bot]
fbbf5046ac Merge pull request #5949 from jdorel/patch-2
Add openshift label `app`

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-18 16:22:09 +00:00
softwarefactory-project-zuul[bot]
47abb6f85f Merge pull request #5975 from shanemcd/sans-virtualenv
Fix downstream builds

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-18 16:03:52 +00:00
Ryan Petrello
717698b659 properly inherit JT fields when creating many jobs with firehose.py 2020-02-18 10:34:51 -05:00
Shane McDonald
6a29a0898a Pin shellingham
Was seeing:

Collecting shellingham<2.0,>=1.1 (from poetry==0.12.17->-r tower/requirements/requirements_setup_requires.txt (line 12))
  File was already downloaded /ansible-tower/tower/requirements/vendor/shellingham-1.3.2.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/usr/lib64/python3.6/tokenize.py", line 452, in open
        buffer = _builtin_open(filename, 'rb')
    FileNotFoundError: [Errno 2] No such file or directory: '/tmp/pip-build-jixdv7cx/shellingham/setup.py'
2020-02-18 09:32:24 -05:00
Shane McDonald
1833872be9 Drop virtualenv from requirements_setup_requires.txt 2020-02-18 09:17:53 -05:00
Ryan Petrello
4d06c812e6 add the ability to load lots of jobs with firehose.py
$ awx-python tools/scripts/firehose.py --jobs 5000000 --events 100000000
2020-02-18 08:55:06 -05:00
Keith Grant
3b71d2a37b convert JobList to function comp w/ hooks 2020-02-17 16:11:48 -08:00
Ben Thomasson
0c0cacb0d6 Works around bad error message when authentication fails
related #5964
2020-02-17 15:59:05 -05:00
softwarefactory-project-zuul[bot]
f57fff732e Merge pull request #5712 from mabashian/ui-next-workflows-4
UI Next workflow graph edit/results

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-17 19:03:21 +00:00
Keith Grant
54ddeaf046 Flush out useDeleteItems hook
refactor TemplateList to use useRequest, useDeleteItems hooks
refactor CredentialList and OrganizationList to use useDeleteItems hook
2020-02-17 10:56:50 -08:00
Keith Grant
69a1a02c70 build useDeleteItems hook 2020-02-17 10:56:50 -08:00
Keith Grant
c824f0d590 create updateUrlAfterDelete util 2020-02-17 10:56:50 -08:00
Keith Grant
c336c989e7 convert CredentialList to useRequest 2020-02-17 10:56:50 -08:00
mabashian
f6523ab5a0 Adds id's to the node name and the node type letter 2020-02-17 12:41:24 -05:00
mabashian
47c783da37 Remove Workflow Visualizer text from visualizer toolbar 2020-02-17 12:41:24 -05:00
mabashian
74afc7b424 Run prettier to fix failures 2020-02-17 12:41:24 -05:00
John Hill
4ac5a1e15a Add IDs for nodes badge and template name 2020-02-17 12:41:24 -05:00
mabashian
48eeeea7f3 Disable tools/legend buttons when the workflow has no nodes and is displaying the start screen. 2020-02-17 12:41:24 -05:00
mabashian
aa6857fd38 Hide message stating that the resource has been deleted if the output node is an approval node 2020-02-17 12:41:24 -05:00
mabashian
25fe2a2ce6 Adds tests for the node type step components in the node modal 2020-02-17 12:41:24 -05:00
mabashian
3d1e3741cd Run prettier 2020-02-17 12:41:24 -05:00
mabashian
2ef57e0221 Adds id to workflow visualizer start screen button 2020-02-17 12:41:24 -05:00
mabashian
bc08c02b89 Adds ID's to toolbar(s) and action buttons within visualizer/output toolbars. 2020-02-17 12:41:24 -05:00
mabashian
50c74a2ec8 Adds test coverage for node modal components 2020-02-17 12:41:24 -05:00
mabashian
887469d73e Adds test for link add/edit/delete modals 2020-02-17 12:41:23 -05:00
mabashian
f9debb8f94 Adds tests for delete all nodes and unsaved changes modals 2020-02-17 12:41:23 -05:00
mabashian
b3929d1177 Remove HorizontalSeparator component. Patternfly now has a Divider component that we can use if we need something like this. 2020-02-17 12:41:23 -05:00
mabashian
e3cfdb74ba Adds basic unit test coverage to visualizer components (not including modals). 2020-02-17 12:41:23 -05:00
mabashian
1d0e752989 Adds unit test coverage for workflow reducer 2020-02-17 12:41:23 -05:00
mabashian
05a3bb0622 Removes unnecessary 'type' field on nodes and links 2020-02-17 12:41:23 -05:00
mabashian
bc7fd26af6 Fixes bug where navigating from one output route to another was breaking 2020-02-17 12:41:23 -05:00
mabashian
048d4dbd95 Fixes bug where viewing the workflow output, clicking a node to view the details of that job and then hitting the back button would result in an error and no output graph. 2020-02-17 12:41:23 -05:00
mabashian
c70e5357d3 Mark min/sec labels for translation 2020-02-17 12:41:23 -05:00
mabashian
7576ba2ade Swap history.push for history.replace to alleviate console warning dealing with pushing to the same path. 2020-02-17 12:41:23 -05:00
mabashian
877e630a90 Replace withRouter with useHistory hook 2020-02-17 12:41:23 -05:00
mabashian
ef854aabb7 Adds test coverage to the workflow output and workflow output graph components 2020-02-17 12:41:23 -05:00
mabashian
fc3f19bd2b Fix some styling discrepancies between Chrome and Firefox in the workflow viz/output graphs.
Cleans up deleted job/job template use cases.  Show message indicating that the ujt associated with a node has been deleted.
2020-02-17 12:41:23 -05:00
mabashian
2bbcd2d663 Move visualizer/workflow output state logic out to reducer and refactor some of the larger functions. Introduces contexts for state/dispatch that can be used by descendent components of both the visualizer and the workflow output components. 2020-02-17 12:41:23 -05:00
mabashian
a786118415 Removes reference to the node unified job template name in the view modal for now. This component is really just a placeholder and this change fixes an error that is thrown when the node's unified job template is deleted. 2020-02-17 12:41:23 -05:00
mabashian
65429e581a Properly bookend @constants alias so that it doesn't inadvertently match something we don't want it to match 2020-02-17 12:41:23 -05:00
mabashian
eb6f4dca55 Run prettier 2020-02-17 12:41:22 -05:00
mabashian
ce09c4b3cd Changes "Key" references to "Legend" 2020-02-17 12:41:22 -05:00
mabashian
c971e9d61c Turns all the workflow tool buttons in to pf button components. 2020-02-17 12:41:22 -05:00
mabashian
e34bf90ca7 Vertically center the pause icon in the node type letter component 2020-02-17 12:41:22 -05:00
mabashian
700296a558 Change Exit button text to Exit Without Saving in the unsaved changes modal. 2020-02-17 12:41:22 -05:00
mabashian
492ea0616e Moves util/workflow.jsx to components/Workflow/WorkflowUtils.jsx and updates imports 2020-02-17 12:41:22 -05:00
mabashian
eddb6e1faf Combines the two start node components into one. Removes use of document.getElementById in workflow components in favor of refs. 2020-02-17 12:41:22 -05:00
mabashian
f98b274177 Adds default search and sort columns to the four lists in the workflow node wizard 2020-02-17 12:41:22 -05:00
mabashian
662ff41fe9 Moves inline css to styled component in WorkflowOutputToolbar 2020-02-17 12:41:22 -05:00
mabashian
fd146dde30 Adds unit test coverage to some of the workflow output components. Also adds support for hovering on workflow results links to see the edge type (success/fail/always). 2020-02-17 12:41:22 -05:00
mabashian
e394d0a6f6 Add close button to workflow tools/key 2020-02-17 12:41:22 -05:00
mabashian
5a1a47b7aa Default '---' not needed due to changes to how the prop is passed to CodeMirrorInput 2020-02-17 12:41:22 -05:00
mabashian
3d5c32c354 Update function/callback props passed into workflow components to start with "on" 2020-02-17 12:41:22 -05:00
mabashian
01cc0ac8f1 Adds unit test coverage for shared workflow components 2020-02-17 12:41:22 -05:00
mabashian
5a9248e619 Prettier 2020-02-17 12:41:22 -05:00
mabashian
1d84d03566 Stabilized workflow visualizer and output point. Workflow jobs can be viewed and workflows can be built (without jt prompting). 2020-02-17 12:41:22 -05:00
mabashian
50ba4f9759 Halfway implemented node details. Still need to handle cases where the user has edited the node and cases where the node is brand new. 2020-02-17 12:41:21 -05:00
mabashian
de55af6ae6 Fully functioning workflow editor without read-only view modal and without prompting. 2020-02-17 12:41:21 -05:00
mabashian
ca478ac880 Render workflow results. Extensive refactors of workflow components in general. 2020-02-17 12:41:21 -05:00
softwarefactory-project-zuul[bot]
78ea643460 Merge pull request #5956 from chrismeyersfsu/fix-new_postgres
allow external pg connections

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-17 15:56:25 +00:00
chris meyers
0db0f81e53 allow external pg connections
* Postgres containers now, by default, do not allow passwordless users
to connect remotely. This change explicitly allows that case.
2020-02-17 10:16:20 -05:00
Jonas DOREL
c94680eaba Add openshift label app 2020-02-15 14:49:05 +01:00
softwarefactory-project-zuul[bot]
5b4ed6dd59 Merge pull request #5923 from mabashian/4967-prompt-on-launch-checkboxes
[POC] Adds FieldWithPrompt component to handle fields that are also promptable

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-14 18:51:07 +00:00
mabashian
4e811c744a Use FieldTooltip instead of Tooltip component. Remove promptValidate prop from FieldWithPrompt. This checkbox shouldn't ever need a custom validator function. 2020-02-14 10:56:11 -05:00
softwarefactory-project-zuul[bot]
cd6d2299a9 Merge pull request #5914 from marshmalien/5866-remove-custom-list-btns
Remove Switch, ListActionButton, and ActionButtonCell components

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-13 21:14:31 +00:00
Marliana Lara
590199baff Remove ListActionButton component 2020-02-13 15:36:17 -05:00
Marliana Lara
3b9dd3ba8c Remove ActionButtonCell component 2020-02-13 15:25:25 -05:00
Marliana Lara
446021cf22 Remove Switch component 2020-02-13 15:25:22 -05:00
softwarefactory-project-zuul[bot]
ef3ab29649 Merge pull request #5897 from marshmalien/remove-card-style-overrides
Remove PF style overrides Pt. 1

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-13 20:03:36 +00:00
softwarefactory-project-zuul[bot]
f4e09eee80 Merge pull request #5918 from ryanpetrello/real-event-firehose-values
set actual counter/start/end values in the event generation script

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-13 19:47:42 +00:00
softwarefactory-project-zuul[bot]
af4e4b4064 Merge pull request #5922 from jakemcdermott/fix-4095
Use pod uid as instance uuid

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-13 16:11:35 +00:00
mabashian
10c6297706 Adds basic unit test coverage for the FieldWithPrompt component 2020-02-13 09:42:09 -05:00
softwarefactory-project-zuul[bot]
73a9541e39 Merge pull request #5928 from anxstj/cleanup_docs
Remove docker_remove_local_images from documentation

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-13 14:15:18 +00:00
mabashian
3a2a61af82 Adds tooltip to run type that was previously removed. Fixes unit test failures by adding ask_job_type_on_launch to mock data. 2020-02-13 09:06:35 -05:00
Stefan Jakobs
774e7fb248 Remove docker_remove_local_images from documentation
docker_remove_local_images was removed with commit 28994d4b0b (diff-c12c21a2e99296acf472dc226bc19da8)
(version 9.0.0). This PR removes it from INSTALL and inventory documentation.

Signed-off-by: Stefan Jakobs <sjakobs@anexia-it.com>
2020-02-13 14:34:45 +01:00
AlanCoding
a5e3d9558f Handle case of deleted inventory 2020-02-13 08:29:52 -05:00
softwarefactory-project-zuul[bot]
1ae86ae752 Merge pull request #5912 from keithjgrant/4239-pagination-on-delete
Adjust pagination when deleting final page of items

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-12 21:48:16 +00:00
softwarefactory-project-zuul[bot]
1a30a0e397 Merge pull request #5921 from beeankha/fix_flake8_errors
Fix Misc. flake8 Errors

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-12 21:36:28 +00:00
Keith Grant
490b76b141 fix TemplateList name in tests 2020-02-12 13:10:14 -08:00
Jake McDermott
3831efb3be Use pod uid as instance uuid
Inject the pod uid as an environment variable and use it for the
SYSTEM_UUID in the settings file defined by the configmap.
2020-02-12 13:52:09 -05:00
mabashian
a8fa816165 Adds FieldWithPrompt component to handle fields that are also promptable 2020-02-12 13:50:54 -05:00
beeankha
11ccfd8449 Fix misc. linting errors 2020-02-12 12:34:15 -05:00
Keith Grant
c33cc82d53 go back one page when deleting all items off last page (orgs/creds) 2020-02-12 08:53:34 -08:00
softwarefactory-project-zuul[bot]
c7516ec50e Merge pull request #5917 from ansible/jakemcdermott-order-by-start-line
Order job_event requests by `start_line`

Reviewed-by: Ryan Petrello
             https://github.com/ryanpetrello
2020-02-12 16:07:06 +00:00
Ryan Petrello
92cc597e84 set actual counter/start/end values in the event generation script 2020-02-12 10:22:31 -05:00
Jake McDermott
7402ac29a8 Order job_event requests by start_line
Ordering job_event requests by `start_line` accomplishes the same thing
as ordering by `counter`. The `start_line` field is more performant
because we have indexed it in the database.
2020-02-12 10:11:28 -05:00
softwarefactory-project-zuul[bot]
4a455c7bf7 Merge pull request #5877 from AlanCoding/control_log
Add wording for control message log

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-11 21:41:45 +00:00
softwarefactory-project-zuul[bot]
10167eea8d Merge pull request #5894 from ryanpetrello/version-920
bump version to 9.2.0

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-11 21:32:24 +00:00
softwarefactory-project-zuul[bot]
46ddc84d2a Merge pull request #5898 from AlanCoding/exception_detail
By default, give status code in exception representation

Reviewed-by: Alan Rominger <arominge@redhat.com>
             https://github.com/AlanCoding
2020-02-11 21:18:15 +00:00
Keith Grant
5c3fe51982 fix credential list page number after deleting 2020-02-11 12:09:13 -08:00
Ryan Petrello
b8ec3104a9 bump version to 9.2.0 2020-02-11 14:07:02 -05:00
softwarefactory-project-zuul[bot]
b098127961 Merge pull request #5876 from AlanCoding/public_400
Fix bug where setting toggle did not raise error it needed to

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-11 18:55:16 +00:00
Keith Grant
f61af39f08 fix Template(s)List naming discrepancies 2020-02-11 10:24:08 -08:00
softwarefactory-project-zuul[bot]
1f0294d389 Merge pull request #5847 from marshmalien/4221-job-output-header
Add job event summary toolbar

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-11 18:16:48 +00:00
Keith Grant
1ad7e663a1 fix org list page on delete 2020-02-11 10:11:27 -08:00
AlanCoding
3172176940 By default, give status code in exception representation 2020-02-11 13:08:20 -05:00
Marliana Lara
ca85020b26 Use PF Chip and ChipGroup components 2020-02-11 12:50:25 -05:00
Marliana Lara
5d2912605f Remove PF style overrides from card, breadcrumb, sidenav, tooltip, and modal components 2020-02-11 12:50:12 -05:00
softwarefactory-project-zuul[bot]
b38ec3599b Merge pull request #5887 from ryanpetrello/webhook-cred-summary-field
include credential type details in the webhook credential summary field

Reviewed-by: Jeff Bradberry
             https://github.com/jbradberry
2020-02-11 16:37:57 +00:00
Ryan Petrello
487343a022 include credential type details in the webhook credential summary field
see: https://github.com/ansible/awx/issues/5882
2020-02-11 10:51:07 -05:00
Marliana Lara
69049a4427 Convert elapsed days into hours and add unit test 2020-02-11 10:19:23 -05:00
softwarefactory-project-zuul[bot]
be6b42561f Merge pull request #5848 from marshmalien/5785-form-field-tooltip
Max host form field tooltip should not enable field

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-11 15:12:41 +00:00
AlanCoding
e59cb07064 Add wording for control message log 2020-02-11 10:01:25 -05:00
AlanCoding
0234df055d Raise errors with public galaxy setting early 2020-02-11 09:46:07 -05:00
softwarefactory-project-zuul[bot]
b54c036398 Merge pull request #5875 from AlanCoding/computed_fields_param
Remove argument no longer accepted by computed fields task

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-11 14:32:27 +00:00
softwarefactory-project-zuul[bot]
eafd40291e Merge pull request #5874 from chrismeyersfsu/fix-pin_virtualenv_awx
pin virtualenv < 20 for awx_web builds

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-11 14:16:14 +00:00
AlanCoding
519956f779 Remove argument no longer accepted by computed fields task 2020-02-11 08:55:56 -05:00
chris meyers
0b3e2cc7e3 pin virtualenv < 20 for awx_web builds 2020-02-11 08:43:26 -05:00
softwarefactory-project-zuul[bot]
efa9c84806 Merge pull request #5870 from mabashian/4227-jobs-list-sort
Adds missing job list search fields

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-11 03:06:13 +00:00
softwarefactory-project-zuul[bot]
5ed623d682 Merge pull request #5842 from keithjgrant/4240-form-error-handling
Form error handling

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-11 01:16:47 +00:00
Keith Grant
8f77d15a31 fix errors being logged during tests; de-lint 2020-02-10 16:16:38 -08:00
Keith Grant
d06d4d5a8c update tests for form submit errors 2020-02-10 16:16:38 -08:00
Keith Grant
352c8c3cb1 add FormSubmitError to existing forms 2020-02-10 16:16:38 -08:00
Keith Grant
94f21a3464 add submit error support to Project form 2020-02-10 16:16:38 -08:00
Keith Grant
ac376f9c87 handle __all__ error message from server in FormSubmitError 2020-02-10 16:16:38 -08:00
Keith Grant
44e4263bee add FormActionGroup error message test 2020-02-10 16:16:38 -08:00
Keith Grant
b7f3852ef9 move FormSubmitError to inline beside form buttons; add tests 2020-02-10 16:16:38 -08:00
Keith Grant
a934e146ee add FormSubmitError component 2020-02-10 16:16:38 -08:00
Keith Grant
cab25656eb add JT form error feedback from API errors 2020-02-10 16:16:38 -08:00
Keith Grant
0f9c906a22 add more robust handling of errors thrown by api 2020-02-10 16:16:38 -08:00
Keith Grant
b8226109a7 use optional chaining 2020-02-10 16:16:38 -08:00
Keith Grant
b26de8b922 pass Host form API errors back into Formik for display 2020-02-10 16:16:38 -08:00
Keith Grant
67d8c1a4b5 delete unused/redundant component 2020-02-10 16:16:38 -08:00
softwarefactory-project-zuul[bot]
0ef7ef22eb Merge pull request #5838 from jainnikhil30/fix_slicejob_relaunch
fix the sliced job relaunch

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-10 23:40:06 +00:00
softwarefactory-project-zuul[bot]
47383e05d6 Merge pull request #5837 from ryanpetrello/celery-tastes-gross
get rid of celerybeat (and celery + billiard dependency)

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-10 23:26:20 +00:00
softwarefactory-project-zuul[bot]
3dd97feaa6 Merge pull request #5869 from mabashian/4220-templates-list-sort
Add missing template list sort fields

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-10 23:06:06 +00:00
Nikhil Jain
e530adde67 fix the sliced job relaunch 2020-02-10 17:35:50 -05:00
Ryan Petrello
38a08d163c get rid of celery/celerybeat
alternative to https://github.com/ansible/awx/pull/2530 which makes use
of https://pypi.org/project/schedule/

this doesn't have support for any persistence (like how celery beat uses
a shelve file), because all of our periodic jobs run at most every few
minutes
2020-02-10 17:32:02 -05:00
softwarefactory-project-zuul[bot]
7b4adfcc15 Merge pull request #5868 from ryanpetrello/python-packaging-is-a-disaster
pin virtualenv < 20 for ansible venv builds

Reviewed-by: Ryan Petrello
             https://github.com/ryanpetrello
2020-02-10 22:31:26 +00:00
mabashian
5d6e1284e3 Adds missing job list search fields 2020-02-10 17:00:44 -05:00
mabashian
a0ba125ea9 Brings template list sort fields into parity with the existing UI 2020-02-10 16:34:37 -05:00
Ryan Petrello
ad5d0b92db pin virtualenv < 20 for ansible venv builds
virtualenv version 20 just got released and broken a bunch of stuff
(like the --system-site-packages flag)
2020-02-10 16:31:34 -05:00
Marliana Lara
debbac5c78 Use date object to format elapsed time 2020-02-10 14:25:34 -05:00
softwarefactory-project-zuul[bot]
f4f4a7caec Merge pull request #5851 from xelgand/devel
k8s installer: fix warning when applying deployment

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-10 18:20:36 +00:00
Marliana Lara
b00249b515 Add job event summary toolbar 2020-02-10 12:47:23 -05:00
softwarefactory-project-zuul[bot]
cd49213924 Merge pull request #5846 from wenottingham/proxy-env-y
Use AWX_TASK_ENV when connecting to Red Hat services

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-10 16:31:19 +00:00
softwarefactory-project-zuul[bot]
9a47a28b80 Merge pull request #5850 from ryanpetrello/changelogly
update the changelog in anticipation of a forthcoming AWX release

Reviewed-by: Seth Foster
             https://github.com/fosterseth
2020-02-10 15:31:12 +00:00
xelgand
7b9ad1d69a k8s installer: fix warning when applying deployment 2020-02-09 16:35:10 +01:00
softwarefactory-project-zuul[bot]
6df00e1e4c Merge pull request #5776 from bhundven/5371-Upgrade_to_helm_3_x
Make AWX compatible with Helm 3.x

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-09 14:13:11 +00:00
Bryan Hundven
7d2ed7b763 Bump stable/postgresql to 8.3.0
https://hub.helm.sh/charts/stable/postgresql/8.3.0

Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
2020-02-07 15:07:44 -08:00
Ryan Petrello
b08e5db267 update the changelog in anticipation of a forthcoming AWX release 2020-02-07 17:12:38 -05:00
softwarefactory-project-zuul[bot]
8991396d23 Merge pull request #5828 from AlanCoding/openstack_bump
Bump openstacksdk version

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-07 20:09:59 +00:00
Bryan Hundven
76a6f84c70 Remove tempfile after running helm
Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
2020-02-07 12:04:11 -08:00
Bryan Hundven
a984e5df7a Have helm stable repo before running help repo update
It would be nice if the `helm` ansible module allowed you to just manage
helm repos, or maybe a `helm_repo` module... but shell with it ;)

Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
2020-02-07 11:58:18 -08:00
Bryan Hundven
282d705c43 Remove tiller_namespace from default inventory
Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
2020-02-07 11:57:34 -08:00
Marliana Lara
43e1b4a7db Max host form field tooltip should not enable field 2020-02-07 14:30:33 -05:00
Bill Nottingham
71ef7cdec1 Use AWX_TASK_ENV when connecting to Red Hat services 2020-02-07 14:29:42 -05:00
softwarefactory-project-zuul[bot]
5decde3f70 Merge pull request #5845 from shanemcd/missing-base-image-deps
Add packages missing from base images

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-07 18:54:46 +00:00
Shane McDonald
3f57061509 Add packages missing from base images
Related:

- https://github.com/ansible/awx/issues/5770
- https://github.com/ansible/awx/issues/5724
2020-02-07 13:06:42 -05:00
softwarefactory-project-zuul[bot]
6395d64681 Merge pull request #5843 from wenottingham/intentionally-adding-database-queries
Bypass memcached to get last gather time to avoid reading cached values.

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-07 13:57:54 +00:00
Bill Nottingham
f3e2caeaa7 Bypass memcached to get last gather time to avoid reading cached values. 2020-02-06 21:41:41 -05:00
softwarefactory-project-zuul[bot]
ce5c4359ee Merge pull request #5787 from fosterseth/tm_processed_field
Improve task manager performance for task dependencies

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-06 21:30:48 +00:00
softwarefactory-project-zuul[bot]
c4ddf50cad Merge pull request #5832 from marshmalien/output-status-bar
Add host status bar

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-06 21:22:23 +00:00
Marliana Lara
d250dd0cd6 Adjust ansi colors to complement the host status bar 2020-02-06 14:12:49 -05:00
softwarefactory-project-zuul[bot]
96bbbdd5c9 Merge pull request #5836 from ryanpetrello/migrate-error
fix scary error message on initial (install time) awx-manage migrate

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-06 17:31:40 +00:00
Seth Foster
9b4b2167b3 TaskManager process dependencies only once
This adds a boolean "dependencies_processed" field to UnifiedJob
model. The default value is False. Once the task manager generates
dependencies for this task, it will not generate them again on
subsequent runs.

The changes also remove .process_dependencies(), as this method repeats
the same code as .process_pending_tasks(), and is not needed. Once
dependencies are generated, they are handled at .process_pending_tasks().

Adds a unit test that should catch regressions for this fix.
2020-02-06 11:47:33 -05:00
Marliana Lara
028a0a9279 Adjust host status colors 2020-02-06 11:21:14 -05:00
softwarefactory-project-zuul[bot]
30354dbcd0 Merge pull request #5621 from rebeccahhh/workflow-convergence
Any/All boolean added in workflow convergence

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-06 15:30:40 +00:00
Ryan Petrello
543a87ac88 fix error message on initial awx-manage migrate 2020-02-06 06:37:05 -05:00
Marliana Lara
4be7cf66ec Add host status bar 2020-02-05 19:57:55 -05:00
softwarefactory-project-zuul[bot]
fd027f87a9 Merge pull request #5810 from keithjgrant/use-endpoint
Add useRequest hook

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-05 23:26:42 +00:00
softwarefactory-project-zuul[bot]
dac6e115c1 Merge pull request #5829 from marshmalien/job-output-navigation
Style job output pagination control bar

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-05 23:17:16 +00:00
Rebeccah
eca516f8ce removed 'self' from positional arguemnt of workflow attribute 'all_parents_must_converge' per Alans suggestion, since django takes it to be verbose_name, which is not needed 2020-02-05 17:38:36 -05:00
Jake McDermott
b06645e125 Show any/all convergence option on root node 2020-02-05 15:51:38 -05:00
Rebeccah
fd60cd1a35 fixed copy functionality to include convergence as is instead of reseting ALL nodes to be default ANY nodes 2020-02-05 15:34:54 -05:00
Rebeccah
ad8bcd0de2 moved migration dependency from 0106 to 0107 2020-02-05 14:28:35 -05:00
Rebeccah
fdc29eebb7 expanded unit test to include 3 root nodes meeting on a convergence node and successfully marking that to node. 2020-02-05 14:28:35 -05:00
Rebeccah
63ae2cac38 Jake McDermott found some behavior that revealed a logical bug that would have caused issues later with ALL convergence nodes in sequential order via the API, although not the UI, and was causing existing issues with Root Nodes spawning repeatedly. To fix this I refactored the code from marking DNR nodes into it's own function that checks parents convergence criteria and leveraged that in bfs_nodes_to_run so that root nodes and convergence nodes can be differentiated but both can be correctly processed, also so that children of convergence nodes can be properly traversed by the function 2020-02-05 14:28:35 -05:00
Rebeccah
4e787cc079 made marking nodes as DNR more 'eager', added more unit tests, and added convergence check to bfs_nodes_to_run with new changes to the eagerness of DNR marking since it needs it to prevent convergence nodes from running too quickly 2020-02-05 14:28:35 -05:00
Apurva Bakshi
2de37ce5df add convergence attribute to awxkit 2020-02-05 14:28:35 -05:00
Rebeccah
a419547731 redid some formatting and syntax per personal preferences, comments on PR, and suggestions from @jrb 2020-02-05 14:28:35 -05:00
Jake McDermott
04844aa44f Add 'ALL' indicator to 'ALL' nodes 2020-02-05 14:28:35 -05:00
Rebeccah
1b3fbee38d workflow convergence toggle migration 2020-02-05 14:28:35 -05:00
Rebeccah
6d2a2ab714 drastically improved performance by removing unnecessary iteration over children of parent nodes, additionally added an extra check that the node didn't already have a job so that it wasn't cycling over nodes that had already run when running through all_nodes 2020-02-05 14:28:35 -05:00
Rebeccah
82dd4a3884 remove node_object comparison and use the full dict to eliminate issues comparing obj and compare instead the whole node object with the node objects in the list 2020-02-05 14:28:35 -05:00
Jake McDermott
4fe9e5da14 Use select for any/all convergence choice 2020-02-05 14:28:35 -05:00
Jake McDermott
bbb4701fa9 Don't show any/all convergence option on root node 2020-02-05 14:28:35 -05:00
Rebeccah
86a39938fe fixed issue where successful convergence wasn't being met due to the not quite correct leveraging of get_children 2020-02-05 14:28:35 -05:00
Jake McDermott
987fc26537 Add any/all option for workflow node convergence 2020-02-05 14:28:34 -05:00
Rebeccah
70cf4cf5d4 added in handling for a parent being DNR so status is only checked if the parent isn't a DNR parent (in which case the parent has no status, which was breaking the logic) also edited a comment and added in a DNR check that @alancoding suggested to cut out duplicates in the DAG list 2020-02-05 14:28:34 -05:00
Rebeccah
2d3172f648 added in support for existing workflow unit tests 2020-02-05 14:28:34 -05:00
Rebeccah
b2c33e3204 redid migration dependency 2020-02-05 14:28:34 -05:00
Rebeccah
f7f648b956 included all_parents_must_converge in the get_workflow_job_fieldnames so that the true/false is copied into the job node and not just in the template node. Also added in the migration for the DB, also relocated logic from bfs_nodes_to_run down into mark_dnr_nodes to prevent nodes not being marked as DNR but not being marked to run, causing them to run anyways 2020-02-05 14:28:34 -05:00
Rebeccah
780f104ab2 shifted from dependants/dependencies to children/parents for clarity in function names, also added in toggle logic 2020-02-05 14:28:34 -05:00
Rebeccah
4c35adad6c added logic to include workflow convergence nodes to nodes to run or not run based on their parents successful statuses 2020-02-05 14:28:34 -05:00
Rebeccah
cf24c81b3e updated syntax from python2 to 3 2020-02-05 14:28:34 -05:00
Marliana Lara
6d792a8234 Style job output navigation control bar 2020-02-05 12:33:30 -05:00
AlanCoding
1558c6f942 Bump openstacksdk version 2020-02-05 11:31:24 -05:00
softwarefactory-project-zuul[bot]
2f75b48c63 Merge pull request #5423 from AlanCoding/pycurl
Add pycurl to container images

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-05 16:21:25 +00:00
softwarefactory-project-zuul[bot]
979418620c Merge pull request #5823 from chrismeyersfsu/fix-instance_migration2
fix instance migration is_isolated() issue

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-05 14:52:18 +00:00
softwarefactory-project-zuul[bot]
482e0ac311 Merge pull request #5768 from AlanCoding/fewer_computed_fields
Remove computed fields artifacts no longer valid

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-05 14:25:10 +00:00
chris meyers
a36bf4af64 fix instance migration is_isolated() issue
* Older versions of Instance model code may not contain the
is_isolated() method. This change accounts for that fact.
2020-02-05 09:16:31 -05:00
AlanCoding
3bbce18173 Remove computed fields artifacts no longer used
Remove deleted field from notification payload
2020-02-04 20:23:37 -05:00
softwarefactory-project-zuul[bot]
e54fd19bca Merge pull request #5817 from chrismeyersfsu/fix-instance_migration
use existing version of Instance

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-05 00:00:06 +00:00
AlanCoding
d2289fe9c6 add pycurl to container images 2020-02-04 14:41:51 -05:00
Bryan Hundven
1c50b8427a Put postgresql values in a tempfile, to be loaded by helm cli
Helm 3.x does not support passing values via stdin:
https://github.com/helm/helm/issues/7002

So setup a tempfile and write the template to the tempfile to be loaded
by helm ... --values <tempfile>

Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
2020-02-04 09:26:49 -08:00
Bryan Hundven
34d01f02cc Upgrade stable/postgresql to helm chart to 8.1.5
This updated chart supports Helm 3.x

Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
2020-02-04 09:26:49 -08:00
Bryan Hundven
d182c96c2e Make AWX compatible with Helm 3.x
In issue #5371, AWX has issues with using Helm 3.x.
This commit removes the usage tiller.

Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
2020-02-04 09:26:49 -08:00
softwarefactory-project-zuul[bot]
e59f3982ae Merge pull request #5796 from rascasoft/devel
Make possible to not start containers on compose

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-04 13:18:30 +00:00
softwarefactory-project-zuul[bot]
5435c6ec73 Merge pull request #5806 from AlexSCorey/5777-JTTabOnProjectsAndTemplateListRefactor
5777 Projects JobTemplateList and template list refactor

Reviewed-by: Alex Corey <Alex.swansboro@gmail.com>
             https://github.com/AlexSCorey
2020-02-04 03:11:42 +00:00
Alex Corey
5f96aee871 Fixes spelling error 2020-02-03 20:09:49 -05:00
Keith Grant
eceeeea22d remove unneeded default value 2020-02-03 12:55:53 -08:00
softwarefactory-project-zuul[bot]
a1a864b27b Merge pull request #5804 from ryanpetrello/iso-healthcheck-failure-capacity
properly handle import errors in the isolated capacity healthcheck

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-03 20:37:18 +00:00
chris meyers
0291c476d4 use existing version of Instance
* Without this change, future modifications to the Instance object may
result in migration fails (i.e. adding a field to the Instance model)
2020-02-03 14:25:06 -05:00
Keith Grant
638e8c7add delete dead code/comments & add useRequest docstring 2020-02-03 09:43:06 -08:00
softwarefactory-project-zuul[bot]
6389ec50a1 Merge pull request #5812 from ryanpetrello/busted-project-update-events
fix broken project update secret filtering for external logging

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-03 17:37:01 +00:00
softwarefactory-project-zuul[bot]
ad53f4f5f6 Merge pull request #5815 from ryanpetrello/fix-cli-settings-py2
fix a py2/py3 compat bug in the settings CLI

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-03 17:24:33 +00:00
softwarefactory-project-zuul[bot]
9718aa711f Merge pull request #5808 from marshmalien/pf-upgrade-react-core-130
Upgrade PatternFly dependencies

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-03 17:24:29 +00:00
softwarefactory-project-zuul[bot]
cacd2c3392 Merge pull request #5805 from fantashley/support-proxy-venv
Add proxy support in custom venv container fixes #5756

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-03 16:40:41 +00:00
Ryan Petrello
1800b49822 fix a py2/py3 compat bug in the settings CLI 2020-02-03 11:37:39 -05:00
Raoul Scarazzini
1e97bb71db Make possible to not start containers on compose
When upgrading from releases it could happen that you need to do some
manual steps (i.e. upgrading from postgres 9.6 to 10). In these cases
you'd want to check the docker-compose.yml and then launch it by
yourself.
Today we don't have any method to get just the files that will be used
while installing via compose, without starting the containers. This
commit adds a variable named "compose_start_containers" (true by
default) that, if false, will make the playbook just generate the files
in the compose directory and not start the containers.
2020-02-03 16:46:52 +01:00
Ryan Petrello
7055460c4c fix broken project update secret filtering for external logging 2020-02-03 10:27:31 -05:00
softwarefactory-project-zuul[bot]
864767d74a Merge pull request #5809 from AlexSCorey/5799-TeamEditUpdate
Fixes update failure on TeamEdit

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-02-03 14:43:49 +00:00
Alex Corey
5170948241 Fix error naming issue 2020-01-31 15:03:13 -05:00
Keith Grant
370a7f9b25 move useRequest to util folder, add tests 2020-01-31 11:39:23 -08:00
Alex Corey
1368835a29 Fixes update failure on TeamEdit 2020-01-31 14:07:24 -05:00
Marliana Lara
48fa5bb2cd Upgrade PatternFly dependencies 2020-01-31 12:10:06 -05:00
Alex Corey
25105d813d Refactors TemplateLiost into a functional component 2020-01-31 12:09:38 -05:00
Alex Corey
bbea43b1fe Addresses needed styling changes to Card and Page Section
These changes were necessary to remove an additional page section
to ProjectJobTemplateList.
2020-01-31 11:28:33 -05:00
Alex Corey
5790aa9780 Adds TemplateList of Project 2020-01-31 11:20:53 -05:00
Ashley Nelson
bc97d11270 Add support for no_proxy 2020-01-31 10:05:32 -06:00
Ryan Petrello
326ed22efe properly handle import errors in the isolated capacity healthcheck
if the awx_capacity module runs on an isolated node with missing
libraries (i.e., psutil) or bad permissions, then the runner status will
be "failed"

in this scenario, we *still* want to react by recording a capacity=0
2020-01-31 10:17:20 -05:00
softwarefactory-project-zuul[bot]
b942411dcc Merge pull request #5598 from jainnikhil30/sat6_want_ssh_host
add ability to read ansible_want_ssh_host, rich_params and want_facts to source vars for satellite dynamic inventory

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-31 13:51:20 +00:00
Nikhil Jain
374c17751f add ansible_want_ssh_host, rich_params and want_facts to be read from source vars 2020-01-31 08:18:01 -05:00
Keith Grant
ef2fa26126 rename useFetch to useRequest 2020-01-30 16:13:19 -08:00
softwarefactory-project-zuul[bot]
b611164422 Merge pull request #5801 from ryanpetrello/tower-url-base-ctint
when a license is installed, only set TOWER_URL_BASE if necessary

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-30 21:55:19 +00:00
Ryan Petrello
c7c899375b when a license is installed, only set TOWER_URL_BASE if necessary
it's possible for users to set this manually in /etc/tower/conf.d
prior to license application
2020-01-30 16:23:25 -05:00
Ashley Nelson
ab3a728032 Add custom venv support for proxies 2020-01-29 18:08:38 -06:00
Keith Grant
aaf371ee23 add useFetch demo 2020-01-29 12:04:52 -08:00
softwarefactory-project-zuul[bot]
d6c70e8d3a Merge pull request #5793 from squidboylan/fix_py3_k_v_config
Open collection config 'r' for py3 compatibility

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-29 19:33:09 +00:00
Caleb Boylan
79e65e3e84 Open collection config 'r' for py3 compatibility 2020-01-29 08:17:07 -08:00
softwarefactory-project-zuul[bot]
42c45367a0 Merge pull request #5585 from AlanCoding/blank_galaxy
Do not allow state where no Galaxy servers are enabled

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-28 21:53:12 +00:00
AlanCoding
d759aff4e9 Do not allow state where no Galaxy servers are enabled 2020-01-28 16:01:55 -05:00
softwarefactory-project-zuul[bot]
6b63f0ac9e Merge pull request #5788 from marshmalien/5693-inv-host-sparkline
Fix host details and list sparkline links

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-28 20:53:26 +00:00
softwarefactory-project-zuul[bot]
2df6eab472 Merge pull request #5786 from marshmalien/4951-org-team-links
Fix organization team links

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-28 20:26:04 +00:00
Marliana Lara
1c7afb66f7 Fix host job sparkline links 2020-01-28 15:09:01 -05:00
softwarefactory-project-zuul[bot]
1fbb714cbc Merge pull request #5784 from ryanpetrello/issue/5528
Fix to handle Str and JSON mix-in data correctly with settings API

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-28 17:35:40 +00:00
Marliana Lara
de75592f2a Refactor Teams and Team components 2020-01-28 12:26:40 -05:00
Marliana Lara
9cb7b0902a Fix org team link url 2020-01-28 12:26:21 -05:00
Hideki Saito
437d9843d1 Fix to handle Str and JSON mix-in data correctly with settings API
- Fixed issue #5528

Signed-off-by: Hideki Saito <saito@fgrep.org>
2020-01-28 11:51:35 -05:00
softwarefactory-project-zuul[bot]
490492e505 Merge pull request #5782 from Spredzy/top_limit_wheel
requirements_setup_requires: Top limit wheel to less than 42.0.0

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-28 15:18:05 +00:00
softwarefactory-project-zuul[bot]
3dd8e490c6 Merge pull request #5781 from AlanCoding/settings_stack
Reduce logging complexity with setting DB errors

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-28 13:18:06 +00:00
Yanis Guenane
75c9702caa requirements_setup_requires: Top limit wheel to less than 42.0.0
Signed-off-by: Yanis Guenane <yguenane@redhat.com>
2020-01-28 13:24:31 +01:00
softwarefactory-project-zuul[bot]
accf000bdf Merge pull request #5779 from ryanpetrello/callback-fine-tuning
some more minor callback cleanup and development tweaks

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-28 03:57:06 +00:00
AlanCoding
a94b30be9f Reduce logging complexity with setting DB errors 2020-01-27 18:08:09 -05:00
Ryan Petrello
3c31e0ed16 some more minor callback cleanup and development tweaks 2020-01-27 17:18:09 -05:00
softwarefactory-project-zuul[bot]
7d74999851 Merge pull request #5772 from AlexSCorey/4515-MultiSelectGenerateLabels
JT Form Generate Labels

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-27 21:19:09 +00:00
softwarefactory-project-zuul[bot]
b7ca369356 Merge pull request #5742 from marshmalien/babel-upgrade
Upgrade babel in ui_next

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-27 19:56:18 +00:00
Keith Grant
d15f7b76fa add useEndpoint hook 2020-01-27 10:20:47 -08:00
softwarefactory-project-zuul[bot]
4e4a535178 Merge pull request #5773 from ryanpetrello/callback-profiling
add the ability to enable profiling for the callback receiver workers

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-27 17:44:14 +00:00
Ryan Petrello
78b00652bd add the ability to enable profiling for the callback receiver workers 2020-01-27 12:03:53 -05:00
softwarefactory-project-zuul[bot]
473ab7c01c Merge pull request #5754 from marshmalien/delete-btn-user-team-details
Add delete button to User and Team details

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-27 15:15:44 +00:00
softwarefactory-project-zuul[bot]
ae82ba53e7 Merge pull request #5752 from marshmalien/details-delete-job-template
Add delete button to Job Template details

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-27 15:08:54 +00:00
Alex Corey
d69174b1a6 Removes unnecessary and dead code.
Generate Label was not being called so I removed it in favor of associate
label.  Plus: less code in JT Add and JT Edit and can remove a promise.
Minus: Now when we generate/associate a label we always send a long the orgId.
OrgId is not necessary when associating a label.
2020-01-27 09:50:49 -05:00
Alex Corey
570f549cf4 Allows user to generate a label on the JTForm 2020-01-27 09:27:27 -05:00
softwarefactory-project-zuul[bot]
55e720e25d Merge pull request #5762 from ryanpetrello/even-more-callback-optimization
remove another expensive logging lookup in the parent callback process

Reviewed-by: Ryan Petrello
             https://github.com/ryanpetrello
2020-01-24 22:27:08 +00:00
Ryan Petrello
8f33f1a6c2 remove another expensive logging lookup in the parent callback process 2020-01-24 16:46:32 -05:00
softwarefactory-project-zuul[bot]
7be924d155 Merge pull request #5751 from keithjgrant/5502-inventory-group-refresh
Inventory details refresh

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-24 19:24:25 +00:00
softwarefactory-project-zuul[bot]
65f226960f Merge pull request #5750 from gamuniz/license_errors_begone
made licensing a warning and not trigger on periodic scheduler

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-24 14:49:55 +00:00
Marliana Lara
84f056294d Fix unit test error in HostAdd 2020-01-23 17:54:06 -05:00
Marliana Lara
b906f8d757 Add delete button to user details 2020-01-23 17:53:34 -05:00
Marliana Lara
2fae523fd4 Add delete button to team details 2020-01-23 17:53:08 -05:00
softwarefactory-project-zuul[bot]
4d519155bc Merge pull request #5753 from wenottingham/a-good-help-message-is-hard-to-find
Fix help for new analytics gather interval

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-23 22:20:56 +00:00
Bill Nottingham
ea8a91893a Fix help for new analytics gather interval 2020-01-23 16:26:15 -05:00
softwarefactory-project-zuul[bot]
145476c7d9 Merge pull request #5748 from marshmalien/delete-org-proj-details
Add delete button to Organization and Project Details

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-23 20:40:36 +00:00
softwarefactory-project-zuul[bot]
c6595786f5 Merge pull request #5734 from marshmalien/5264-inv-host-edit-form
Add inventory host edit form

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-23 20:10:36 +00:00
Keith Grant
c6159a7c3e add more VariablesDetail tests 2020-01-23 11:15:33 -08:00
softwarefactory-project-zuul[bot]
52638c709a Merge pull request #5749 from ryanpetrello/search-distinct
fix a bug that causes __search filters to not properly call .distinct()

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-23 19:09:52 +00:00
Gabe Muniz
a264b1db1f made licensing a warning and not trigger on periodic scheduler 2020-01-23 14:08:23 -05:00
Keith Grant
49907e337a prevent inventory updates after unmount 2020-01-23 11:02:29 -08:00
Marliana Lara
afc1f85668 Update job template detail unit tests 2020-01-23 13:59:20 -05:00
Marliana Lara
6efa751157 Add DeleteButton component to job template details 2020-01-23 13:58:49 -05:00
Marliana Lara
10131432b5 Refactor job template detail into functional component 2020-01-23 13:52:29 -05:00
softwarefactory-project-zuul[bot]
0d365068ff Merge pull request #5740 from AlexSCorey/5257-WFJTMissingResource
Fixes InvGroup Form submission error and TemplateList Missing Resource Bug

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-23 18:43:44 +00:00
Ryan Petrello
256404ba03 fix a bug that causes __search filters to not properly call .distinct() 2020-01-23 13:40:22 -05:00
Marliana Lara
3b430c8bdf Add delete to project details 2020-01-23 12:13:12 -05:00
Marliana Lara
627dae6580 Add delete button to organization details 2020-01-23 12:12:15 -05:00
Alex Corey
44db9ad033 Moves TemplateListItem to a functional component 2020-01-23 11:22:05 -05:00
Alex Corey
21890efca6 Ensures no missingResourceIcon for WFJT on JTList
Adds a test to ensure that missingResourceIcon is not shown for WFJTs.
2020-01-23 11:21:57 -05:00
Alex Corey
0a8fe4d812 Fixes InvGroupForm submission bug.
The inventory id now comes through useParams instead of through props.
Also updates tests to reflect those changes
2020-01-23 11:14:41 -05:00
Keith Grant
a1d7beca83 update VariablesDetail properly if value prop changes (preserving current mode) 2020-01-22 15:42:28 -08:00
softwarefactory-project-zuul[bot]
c35c80b06c Merge pull request #5732 from ryanpetrello/callback-stats-faster
optimize awx-manage callback_stats for larger datasets

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-22 22:34:38 +00:00
softwarefactory-project-zuul[bot]
3c5e9da9a1 Merge pull request #5739 from ryanpetrello/optimize-callback-with-logging
further optimize conf.settings access when logging is enabled

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-22 21:53:04 +00:00
Ryan Petrello
f9af5e8959 optimize awx-manage callback_stats for larger datasets
to monitor this historically, we'd probably need to introduce a new
index on the modified column of all our event types
2020-01-22 16:52:38 -05:00
softwarefactory-project-zuul[bot]
c983b6a755 Merge pull request #5729 from ryanpetrello/you-get-to-drink-from-the-firehose
add a script for quickly inserting lots of events

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-22 21:43:52 +00:00
Ryan Petrello
e18639b26b further optimize conf.settings access when logging is enabled
the callback receiver is still fairly slow when logging is enabled due
to constant setting lookups; this speeds things up considerably

related: https://github.com/ansible/awx/pull/5618
2020-01-22 16:17:33 -05:00
Marliana Lara
6d8b843ad0 Upgrade to babel 7.8.0 2020-01-22 15:03:02 -05:00
Marliana Lara
00a9e42001 Wrap floating loading text in a card 2020-01-22 13:36:15 -05:00
Marliana Lara
fc5363a140 Replace loadHost with an IIFE 2020-01-22 12:25:43 -05:00
Ryan Petrello
d8d1ccf810 add a script for quickly inserting lots of events 2020-01-22 11:57:47 -05:00
softwarefactory-project-zuul[bot]
046518ab8f Merge pull request #5699 from keithjgrant/5235-variables-field
Make VariablesField detect correct mode on mount

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-22 16:54:52 +00:00
Marliana Lara
d33bbdd4f6 Add inventory host edit form 2020-01-22 11:06:45 -05:00
softwarefactory-project-zuul[bot]
46e530ceeb Merge pull request #5733 from kdelee/fix_my_mistake
Fix overzealous cleanup in awxkit

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-22 15:56:42 +00:00
Elijah DeLee
2a77b8b4b9 Fix overzealous cleanup in awxkit
Introduced this problem with 1e796076f5
2020-01-22 10:23:40 -05:00
softwarefactory-project-zuul[bot]
23b2b136d6 Merge pull request #5707 from AlanCoding/bulk_create_logs
Allow CTiT log level to log bulk_create lines

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-22 15:04:17 +00:00
softwarefactory-project-zuul[bot]
d83a786c12 Merge pull request #5714 from mabashian/mount-with-contexts-import
Use directory alias for imports instead of relative path in our test files

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-22 14:39:18 +00:00
mabashian
5d162b739b Fix import order to address linting error 2020-01-22 09:01:35 -05:00
softwarefactory-project-zuul[bot]
55e37b4eaa Merge pull request #5728 from wenottingham/i-waited-for-days
Fix timedelta comparison to account for large intervals

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-21 21:47:13 +00:00
Bill Nottingham
b2a0b3fc29 Fix timedelta comparison to account for large intervals
It would fail if you set the interval to > 1 day.
2020-01-21 16:14:33 -05:00
softwarefactory-project-zuul[bot]
d1e1bc7108 Merge pull request #5721 from wenottingham/a-thundering-herd-is-only-good-if-you-are-marshall
Change how analytics is gathered to only gather once per interval

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-21 20:31:39 +00:00
softwarefactory-project-zuul[bot]
cb88ea8fd1 Merge pull request #5718 from AlanCoding/pin_pin
Pin zipp to avoid setuptools upgrade

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-21 19:13:35 +00:00
softwarefactory-project-zuul[bot]
c2fe3fcf13 Merge pull request #5706 from appuk/apurva-new-ids
Add data-cy attributes for Inventory and Inventory Hosts

Reviewed-by: Jake McDermott <yo@jakemcdermott.me>
             https://github.com/jakemcdermott
2020-01-21 17:57:41 +00:00
softwarefactory-project-zuul[bot]
6654a116d0 Merge pull request #5715 from marshmalien/routed-tabs-remove-history
RoutedTabs component - Replace router HOC with hooks

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-21 17:55:00 +00:00
softwarefactory-project-zuul[bot]
b77ab8a6ca Merge pull request #5723 from kdelee/scan_job_cleanup
Scan jobs have been removed, clean up old refs

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-21 17:54:14 +00:00
Elijah DeLee
1e796076f5 Scan jobs have been removed, clean up old refs
see https://github.com/ansible/awx/issues/5603
2020-01-21 12:11:53 -05:00
Apurva Bakshi
8fa38d1a2e Add data-cy attributes for Inventory and Inventory Hosts 2020-01-21 12:05:27 -05:00
Bill Nottingham
44e176dde8 Change how analytics is gathered to only gather once per interval 2020-01-21 11:40:51 -05:00
softwarefactory-project-zuul[bot]
1ce197041f Merge pull request #5710 from ryanpetrello/job-event-api-perf
drastically speed up /api/v2/jobs/N/job_events/ with large counts

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-21 15:54:02 +00:00
Marliana Lara
0952bae09f Replace withRouter with react-router hooks in RoutedTabs 2020-01-21 10:06:46 -05:00
softwarefactory-project-zuul[bot]
12509cd652 Merge pull request #5713 from wenottingham/devel
Fix some lint

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-20 23:50:03 +00:00
mabashian
b094c063ae Use directory alias for imports instead of relative path in our test files 2020-01-20 17:32:05 -05:00
Bill Nottingham
4e46d5d7cd Fix some lint 2020-01-20 17:15:27 -05:00
softwarefactory-project-zuul[bot]
8b10da9589 Merge pull request #5709 from benthomasson/fix_gather_analytics_crontab
Fixes crontab for gather_analytics to run once every 4 hours

Reviewed-by: Christian Adams <rooftopcellist@gmail.com>
             https://github.com/rooftopcellist
2020-01-20 19:21:27 +00:00
softwarefactory-project-zuul[bot]
99ce277b06 Merge pull request #5705 from AlexSCorey/5599-VariableDetailsAbsent
Ensures Variables Details renders even when no value.

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-20 18:40:04 +00:00
AlanCoding
5db6906212 pin zipp to avoid setuptools upgrade 2020-01-20 13:39:48 -05:00
Ben Thomasson
652a428438 Fixes crontab for gather_analytics to run once every 4 hours 2020-01-20 13:30:10 -05:00
Ryan Petrello
dfc769b8fe drastically speed up /api/v2/jobs/N/job_events/ with large counts 2020-01-20 13:24:39 -05:00
Alex Corey
c45b1ffca6 Ensures Variables Details renders even when no value.
When there is no value VariablesDetails will show ---.
2020-01-20 12:58:58 -05:00
AlanCoding
ceed6f8d9b Allow CTiT log level to log bulk_create lines 2020-01-20 12:41:10 -05:00
softwarefactory-project-zuul[bot]
03cfb7bf9a Merge pull request #5669 from AlanCoding/no_parent_or_host
Remove two unused parent relationships from JobEvent model

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-20 16:58:46 +00:00
softwarefactory-project-zuul[bot]
49d1fa82d3 Merge pull request #5678 from marshmalien/5657-update-inventory-detail
Fetch new inventory when location changes

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-20 13:58:18 +00:00
softwarefactory-project-zuul[bot]
08a195ba08 Merge pull request #5694 from beeankha/tower_job_launch_module_exception
Fail Gracefully on tower_job_launch Module When JT is Not Found

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-17 23:46:49 +00:00
softwarefactory-project-zuul[bot]
77d1c711bf Merge pull request #5695 from jlmitch5/redirectToLogin
add redirect to login on 401

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-17 23:31:38 +00:00
softwarefactory-project-zuul[bot]
ad73174029 Merge pull request #5696 from jakemcdermott/fix-5138-2
Use the default cloud name if one isn't passed to azure plugin

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-17 22:38:55 +00:00
softwarefactory-project-zuul[bot]
a6539d66d4 Merge pull request #5654 from AlexSCorey/5619-BranchFieldMissing
Fixes navigation bug in InventoryAdd Adds SCM Branch field on JTForm

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-17 21:46:45 +00:00
Keith Grant
cb3ab67361 make VariablesField detect correct mode on mount 2020-01-17 13:39:18 -08:00
Alex Corey
078dc666c1 Removes code from serializer in favor to api call of Project.readDetails
Adds necessary tests.
2020-01-17 15:57:14 -05:00
softwarefactory-project-zuul[bot]
e806da25c1 Merge pull request #5697 from ryanpetrello/some-settings-cleanup
remove an unnecessary settings optimzation

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-17 20:43:28 +00:00
beeankha
ef36b4fffd Reduce number of requests running in the try/except block 2020-01-17 15:08:05 -05:00
Ryan Petrello
cc2ba09d3a remove an unnecessary settings optimzation 2020-01-17 14:59:56 -05:00
Alex Corey
790942c0f2 Fixes navigation bug in InventoryAdd Adds SCM Branch field on JTForm 2020-01-17 14:44:56 -05:00
Alex Corey
fd1e574fcb Resets playbook and scm-branch fields when project is changed
The playbook field becomes undefined and the scm-branch
field becomes ''.  This ensures that the user has to assign
a playbook to the template that is associated with the project
and suggests to the user to review their scm-branch.
TODO: when the user updates project with scm-branch override
allow the user to type in playbook in dropdown. Then, check if
playbook is present in list of playbooks.  If no, add it to the
list of playbooks.
2020-01-17 14:44:56 -05:00
Alex Corey
2daefcd94e Removes code from serializer in favor to api call of Project.readDetails
Adds necessary tests.
2020-01-17 14:44:28 -05:00
Alex Corey
46a7ca4dc3 Fixes navigation bug in InventoryAdd Adds SCM Branch field on JTForm 2020-01-17 14:44:28 -05:00
softwarefactory-project-zuul[bot]
5e4c997c41 Merge pull request #5688 from keithjgrant/5235-variables-field-json
Upgrade to Formik 2.1.2

Reviewed-by: John Mitchell
             https://github.com/jlmitch5
2020-01-17 19:35:27 +00:00
John Mitchell
8d4d718f7d add redirect to login on 401 2020-01-17 13:41:06 -05:00
softwarefactory-project-zuul[bot]
cf34a81af7 Merge pull request #5622 from keithjgrant/4613-pf-select-component
PatternFly select component

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-17 17:53:31 +00:00
Jake McDermott
11af21972d Use default cloud name if one isn't passed to azure plugin 2020-01-17 12:36:04 -05:00
Keith Grant
8850687d1b rename usePFSelect to useSyncedSelectValue 2020-01-17 08:47:31 -08:00
beeankha
792f68eaec When Job Template is not found, fail more gracefully 2020-01-17 11:40:41 -05:00
Keith Grant
113aa2e11e fix lint errors 2020-01-17 08:34:42 -08:00
softwarefactory-project-zuul[bot]
1bf0bc8203 Merge pull request #5600 from AlexSCorey/5266-InventoryHostDetails
Adds Toggle, Variables, User Link and Delete to Inventory Host/Host Details

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-17 15:03:23 +00:00
softwarefactory-project-zuul[bot]
03cd7472af Merge pull request #5677 from ryanpetrello/less-distinct
do not apply distinct for series of only static fields

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-17 13:28:27 +00:00
Marliana Lara
d549c217bb Fetch new inventory on location change 2020-01-16 22:55:47 -05:00
Keith Grant
e7fead0f2c update Formik formatting to remove warnings 2020-01-16 16:46:13 -08:00
Keith Grant
14990f7e98 finish updating tests for Formik 2.x 2020-01-16 16:21:35 -08:00
softwarefactory-project-zuul[bot]
d35eba8afb Merge pull request #5681 from marshmalien/remove-form-close-buttons
Remove form card header close button

Reviewed-by: Marliana Lara <marliana.lara@gmail.com>
             https://github.com/marshmalien
2020-01-16 21:25:00 +00:00
AlanCoding
b0722311e8 dDo not apply distinct for series of only static fields 2020-01-16 14:36:38 -05:00
Marliana Lara
946c16916f Remove form card header close button 2020-01-16 13:47:02 -05:00
Keith Grant
8ef5a6b0e1 upgrade Formik to 2.x; fix some tests with upgrade 2020-01-16 10:13:19 -08:00
softwarefactory-project-zuul[bot]
6fa4d6462d Merge pull request #5664 from marshmalien/5276-credential-details
Add Credential Detail view

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-16 16:37:51 +00:00
softwarefactory-project-zuul[bot]
525fd889e9 Merge pull request #5584 from AlanCoding/vault_credential_test
[AWX collection] Add test for deprecated vault_credential

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-16 14:53:35 +00:00
softwarefactory-project-zuul[bot]
93a4e5ef05 Merge pull request #5661 from beeankha/extra_vars_warn_louder_at_launch
Warn Louder When ask_extra_vars Should be Set to True But is Not

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-16 14:19:30 +00:00
Marliana Lara
06ce5a16ce Show credential type link if it's managed by tower 2020-01-16 09:14:37 -05:00
Marliana Lara
15c665ea52 Add Credential Detail view
* Add Credential and CredentialDetail unit tests
* Add credential_type mock data
2020-01-16 09:14:30 -05:00
AlanCoding
9a420820eb Remove event hosts relationship
and parent event-event ForeignKey relationship
2020-01-16 08:44:36 -05:00
beeankha
fa043100bd Add info to changelog 2020-01-16 08:35:56 -05:00
beeankha
db0d748302 Also check for survey_enabled parameter 2020-01-16 08:35:56 -05:00
beeankha
e8a95a1dac Fail the task if extra_vars is set on launch but ask_extra_vars is not set to True on the Job Template 2020-01-16 08:35:56 -05:00
softwarefactory-project-zuul[bot]
f911fb2046 Merge pull request #5674 from jakemcdermott/fix-5142-2
Set reasonable default for MAX_FORKS

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-16 00:12:43 +00:00
softwarefactory-project-zuul[bot]
a0304eeb16 Merge pull request #5597 from shanemcd/kube-oc-specific-server-version-logic
Add kubectl / oc-specific API server version logic

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-15 22:49:07 +00:00
Jake McDermott
a6f063b199 Set default MAX_FORKS to 200 2020-01-15 17:26:15 -05:00
Shane McDonald
3977ec42e1 Add kubectl / oc-specific API server version logic 2020-01-15 17:12:53 -05:00
softwarefactory-project-zuul[bot]
b7a064b05d Merge pull request #5671 from ryanpetrello/bye-bye-scan
remove JobTemplate.job_type = 'scan'

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-15 21:06:20 +00:00
softwarefactory-project-zuul[bot]
aa5532f7b5 Merge pull request #5665 from wenottingham/warn-only
Only warn when license is exceeded non-fatally

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-15 20:16:13 +00:00
Ryan Petrello
f79b6d3708 remove JobTemplate.job_type = 'scan'
see: https://github.com/ansible/awx/issues/5603
2020-01-15 15:05:01 -05:00
softwarefactory-project-zuul[bot]
6d075b8874 Merge pull request #5448 from ryanpetrello/remove-computed-group-and-host-fields
remove computed inventory fields from Host and Group

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-15 19:53:30 +00:00
softwarefactory-project-zuul[bot]
3040a25932 Merge pull request #5604 from jakemcdermott/fix-5142
Add configurable MAX_FORKS for jobs

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-15 19:35:10 +00:00
Ryan Petrello
0f0d9ba00d send inv computed tasks *after* commit to avoid a race condition 2020-01-15 14:14:26 -05:00
softwarefactory-project-zuul[bot]
053897042f Merge pull request #5668 from ryanpetrello/vmware-inv-script-update
update to latest vmware_inventory.py

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-15 19:09:38 +00:00
softwarefactory-project-zuul[bot]
64186e881e Merge pull request #5602 from jakemcdermott/fix-5138
Support AzureCloud choices for azure keyvault

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-15 19:07:19 +00:00
Jake McDermott
0d98a1980e Add a configurable limit for job forks 2020-01-15 13:51:59 -05:00
Jake McDermott
2b02b1affd Support AzureCloud choices for azure keyvault 2020-01-15 13:13:10 -05:00
softwarefactory-project-zuul[bot]
bf3042e85a Merge pull request #5666 from ryanpetrello/inv-sync-wf
fix a bug that breaks inv sync stdout within workflows

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-15 17:03:01 +00:00
softwarefactory-project-zuul[bot]
bdc25c14f6 Merge pull request #5663 from ryanpetrello/how-to-upgrade
update data migration instructions

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-15 16:48:21 +00:00
Ryan Petrello
6e5028587a update to latest vmware_inventory.py
63737ec0f8/contrib/inventory/vmware_inventory.py

see: https://github.com/ansible/awx/issues/5648
2020-01-15 10:40:01 -05:00
Ryan Petrello
8c8713885b fix a bug that breaks inv sync stdout within workflows
see: https://github.com/ansible/tower/issues/4068
2020-01-15 10:12:27 -05:00
Bill Nottingham
bc5ef7f1c8 Only warn when license is exceeded non-fatally 2020-01-15 10:05:20 -05:00
AlanCoding
b9b6dad0b3 Add test for deprecated vault_credential 2020-01-15 09:44:28 -05:00
Ryan Petrello
829e9054d6 update data migration instructions 2020-01-15 09:03:36 -05:00
Ryan Petrello
be68a199ec reorder migrations after a rebase 2020-01-14 16:58:33 -05:00
Jake McDermott
44c0eb867b Remove group status cols
Remove the status col from any group list that used the now-removed
computed fields.
2020-01-14 16:37:20 -05:00
Jake McDermott
773b976f8a Remove dead code 2020-01-14 16:37:20 -05:00
Jake McDermott
1220847c27 Remove unused host status service 2020-01-14 16:37:20 -05:00
Jake McDermott
ec1c2a8391 Remove status icons from group nested groups 2020-01-14 16:37:19 -05:00
Jake McDermott
2bc6521eee Use related hosts and group counts for delete modal 2020-01-14 16:37:19 -05:00
Jake McDermott
107d2da845 Remove status icons from host nested groups 2020-01-14 16:37:19 -05:00
Ryan Petrello
568606d2c8 remove computed inventory fields from Host and Group 2020-01-14 16:37:16 -05:00
softwarefactory-project-zuul[bot]
78e2cd7084 Merge pull request #5610 from thedoubl3j/canceled_jobs
Added canceled_on field to unified_jobs model

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-14 21:35:11 +00:00
Ryan Petrello
79b8e6b6f0 renumber migrations correctly 2020-01-14 16:00:33 -05:00
Jake Jackson
d72896f9a6 Added canceled_on field to unified_jobs model
- When a job is canceled, the canceled_on field will populate with date/time
2020-01-14 15:56:30 -05:00
softwarefactory-project-zuul[bot]
7b3d36ba53 Merge pull request #5639 from jlmitch5/searchLabelImprovement
update select-based search items to utilize labels, not just the api value

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-14 20:39:09 +00:00
softwarefactory-project-zuul[bot]
df5231f527 Merge pull request #5656 from ryanpetrello/pygments-minus-minus
remove some unnecessary callback receiver debugging code

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-14 19:55:01 +00:00
Ryan Petrello
8bd9233d2c remove some unnecessary callback receiver debugging code 2020-01-14 14:21:53 -05:00
softwarefactory-project-zuul[bot]
4dfda92c69 Merge pull request #5655 from ryanpetrello/9-1-1-changes
update the CHANGELOG for 9.1.1

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-14 19:21:32 +00:00
John Mitchell
9ecb704e10 fix prettier issues 2020-01-14 13:28:53 -05:00
John Mitchell
1b726a1b2f fix malformed search key column array on project lookup 2020-01-14 13:28:44 -05:00
Ryan Petrello
0d2ae47238 update the CHANGELOG for 9.1.1 2020-01-14 12:39:13 -05:00
softwarefactory-project-zuul[bot]
b12c2a142d Merge pull request #5618 from ryanpetrello/callback-write-speed
heavily optimize the write speed of the callback receiver

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-14 17:37:19 +00:00
Ryan Petrello
306f504fb7 optimize the callback receiver to buffer writes on high throughput
additionaly, optimize away several per-event host lookups and
changed/failed propagation lookups

we've always performed these (fairly expensive) queries *on every event
save* - if you're processing tens of thousands of events in short
bursts, this is way too slow

this commit also introduces a new command for profiling the insertion
rate of events, `awx-manage callback_stats`

see: https://github.com/ansible/awx/issues/5514
2020-01-14 12:04:26 -05:00
Shane McDonald
862fafab86 Merge pull request #5637 from ansible/9-1-1
Bump version to 9.1.1
2020-01-13 18:48:14 -05:00
Keith Grant
1cc4e302f9 update tests to check for PF Select 2020-01-13 14:41:43 -08:00
Keith Grant
1289ca9103 update TagMultiSelect to use PF <Select> 2020-01-13 14:41:43 -08:00
Keith Grant
b18ca5ac1f begin converting TagMultiSelect to usePFSelect 2020-01-13 14:41:43 -08:00
Keith Grant
193a041ef9 finish usePFSelect hook 2020-01-13 14:41:43 -08:00
Keith Grant
7219c17d30 start usePFSelect hook 2020-01-13 14:41:43 -08:00
Keith Grant
79f0f1940f update LabelSelect to use PF Select component 2020-01-13 14:41:43 -08:00
softwarefactory-project-zuul[bot]
f923f07b79 Merge pull request #5645 from ryanpetrello/cha-cha-cha-cha-changes
update the CHANGELOG w/ historical notes from the mailing list

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-13 22:39:41 +00:00
softwarefactory-project-zuul[bot]
4112b20f1a Merge pull request #5644 from ryanpetrello/lint-trap
fix linting failures

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-13 21:46:51 +00:00
Ryan Petrello
18e7b6ce04 update the CHANGELOG w/ historical notes from the mailing list 2020-01-13 16:40:55 -05:00
softwarefactory-project-zuul[bot]
ebc540a460 Merge pull request #5643 from wenottingham/we-underscored-the-importance-of-this
Fix collection of free_instances from /api/v2/config

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-13 21:37:44 +00:00
John Mitchell
edc65cdc36 update breakpoint for mobile-ifying search 2020-01-13 16:05:01 -05:00
John Mitchell
3684975ef9 remove todo label-ify search dropdown note 2020-01-13 16:04:15 -05:00
Ryan Petrello
b1f56df930 fix linting failures 2020-01-13 15:58:19 -05:00
Bill Nottingham
95960c8c14 Fix collection of free_instances from /api/v2/config 2020-01-13 15:31:21 -05:00
softwarefactory-project-zuul[bot]
488f52b82b Merge pull request #5641 from shanemcd/pin-setuptools-in-setup-requires
Pin setuptools in requirements_setup_requires.txt

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-13 19:51:21 +00:00
Shane McDonald
b4a7cdbb60 Pin setuptools in requirements_setup_requires.txt
This is a file we use downstream to ensure that things under our dependencies'
`setup_requires` are available when we build offline.
2020-01-13 14:01:37 -05:00
Alex Corey
8bfcef01df Fixes Breaedcrumb 2020-01-13 12:24:15 -05:00
John Mitchell
bbf9c13952 update select-based items to utilize labels 2020-01-13 12:10:36 -05:00
softwarefactory-project-zuul[bot]
04576af6a5 Merge pull request #5630 from jakemcdermott/fix-5586
Use summary `object_roles` to lookup admin role id

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-13 17:05:02 +00:00
Alex Corey
dfa578fcde Utilizes React Router Hooks and removes No-op function 2020-01-13 11:28:31 -05:00
Alex Corey
33bc9e63c4 Addresses Console Errors related to functions and test data
Also Adds speecificity to link URLs by add /details for urls that should
redireect to details pages instead of them ending in /:id
2020-01-13 11:28:31 -05:00
Alex Corey
919475a4c7 Improves NestedTabs, Refactors PR, Adds Delete/DeleteError Functionality to HostDetail 2020-01-13 11:28:31 -05:00
Alex Corey
1db88fe4f6 Adds Toggle, Variables, user Link and Delete to Inventory Host and Host Details
If the user comes to Host details through Inventory Host they will get a
Return To Host tab in addition to the others.  This PR allows Inventory Host
to share many of the same components with Host but does add some complexity
to the routing files in Host.jsx
2020-01-13 11:28:31 -05:00
Jake McDermott
cf9f00ab86 Use summary object_roles to lookup admin role id
To find the id of an org's admin role, use the `object_role` names
in the organization's summary_fields instead of filtering on
potentially translated role names.
2020-01-13 11:28:14 -05:00
softwarefactory-project-zuul[bot]
200be3297a Merge pull request #5287 from jlmitch5/searchPlanning
update simple search

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-13 16:11:20 +00:00
Shane McDonald
6da5205d73 Bump version to 9.1.1 2020-01-13 10:30:08 -05:00
John Mitchell
15cb92d58e update sort iconography 2020-01-10 16:27:13 -05:00
John Mitchell
78cc2742b2 fix prettier 2020-01-10 16:27:13 -05:00
John Mitchell
959d5058fc add limit search key to jobs list 2020-01-10 16:27:13 -05:00
John Mitchell
acf54e6102 remove created by/modified by search keys from ig lookup 2020-01-10 16:27:13 -05:00
John Mitchell
4a9979e2db fix issue with checkbox state of select based search key 2020-01-10 16:27:13 -05:00
John Mitchell
1e344bdf8a more ui_next search pr feedback:
- updae .filter().length calls to .find()
- fix ProjectList errors
2020-01-10 16:27:13 -05:00
John Mitchell
3cdf274bdb update search based on pr feedback:
- fix InventoryHost list inadverdent breakage due to merge conflict
- update label__name search key to labels__name
- always snap to page 1 when a search happens
- udpate capitalization of keys to be consistent
- remove isDefault from sort col items in tests
2020-01-10 16:27:13 -05:00
John Mitchell
068de221c1 second pass double checking all keys show up in the lists they should 2020-01-10 16:27:13 -05:00
John Mitchell
30b6e318cc swap column types use of shape for exact and fix warnings it found 2020-01-10 16:27:13 -05:00
John Mitchell
2c1648f9c9 fix issues with unit tests based on search changes 2020-01-10 16:27:13 -05:00
John Mitchell
2c953ed7d0 add keys to search on lookups 2020-01-10 16:27:13 -05:00
John Mitchell
2d00623c16 update search keys for various lists in the mvp 2020-01-10 16:27:13 -05:00
John Mitchell
51a6ba14f1 support 1 item in sortColumns 2020-01-10 16:27:13 -05:00
John Mitchell
6edd879a43 add support for number, boolean, and option-based searches 2020-01-10 16:27:13 -05:00
John Mitchell
a31661ce08 utilize new DataToolbar experimental patternfly components 2020-01-10 16:27:13 -05:00
John Mitchell
c69d497093 remove debugger statement 2020-01-10 16:27:13 -05:00
John Mitchell
8b9810e466 update search and sort column configuration 2020-01-10 16:27:13 -05:00
John Mitchell
16f9411914 update simple search doumentation and plan 2020-01-10 16:27:13 -05:00
Shane McDonald
f7ba706ec2 Merge pull request #5635 from shanemcd/ch-ch-ch-changelog
Introduce CHANGELOG.md
2020-01-10 16:26:40 -05:00
Shane McDonald
5455fe3c10 Introduce CHANGELOG.md 2020-01-10 16:08:17 -05:00
Shane McDonald
8ac8bc8df2 Merge pull request #5609 from shanemcd/downstream-k8s-changes
Pull in downstream k8s installer changes
2020-01-10 13:56:49 -05:00
softwarefactory-project-zuul[bot]
ed474df744 Merge pull request #5407 from AlanCoding/depgrades_2019_party
General dependency upgrades (awx venv only for now)

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-10 18:44:21 +00:00
softwarefactory-project-zuul[bot]
c33d2a1e00 Merge pull request #5503 from beeankha/refactor_inventory_plugin
Refactor Inventory Plugin Module to Import from module_utils

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-09 21:52:54 +00:00
softwarefactory-project-zuul[bot]
3e58ee068c Merge pull request #5616 from marshmalien/5541-reuse-ActionButtonWrapper
Update Detail views to use CardActionsRow

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-09 21:52:29 +00:00
beeankha
b19e5aab28 Raise AnsibleParserError via a custom exception 2020-01-09 15:30:23 -05:00
Marliana Lara
6ec96a8f4f Update detail components to use ActionButtonWrapper 2020-01-09 10:53:17 -05:00
softwarefactory-project-zuul[bot]
4db2df9691 Merge pull request #5613 from AlanCoding/log_dup_uuid
Log case of duplicate UUIDs

Reviewed-by: Matthew Jones <mat@matburt.net>
             https://github.com/matburt
2020-01-09 15:13:03 +00:00
beeankha
0c696bfd96 Add new CollectionsParserError class for exceptions 2020-01-09 09:14:47 -05:00
beeankha
63ffff3b76 Import request into module_utils instead 2020-01-09 09:14:47 -05:00
beeankha
c532c6fe61 Update parameters, add whitespace 2020-01-09 09:14:47 -05:00
beeankha
61c2968a7c Fix module-specific lint errors 2020-01-09 09:14:47 -05:00
beeankha
d9e41547a1 Refactor Inventory Plugin module to import from module_utils 2020-01-09 09:14:47 -05:00
AlanCoding
eec08fdcca Log case of duplicate UUIDs 2020-01-09 07:31:32 -05:00
softwarefactory-project-zuul[bot]
b74f7f6c26 Merge pull request #5562 from beeankha/job_launch_extra_vars_example
Add extra_vars Example to Job Launch Module

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-08 20:28:58 +00:00
beeankha
f37ac1dcc9 Add extra_vars example to Job Launch module, update extra_vars type to dict,
update unit test, add details to Collections release notes.
2020-01-08 14:50:41 -05:00
softwarefactory-project-zuul[bot]
1c09114abd Merge pull request #5611 from kdelee/awxkit-better-timeout-error
[awxkit] Raise a more informative error when timeout

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-08 18:47:16 +00:00
softwarefactory-project-zuul[bot]
c0e1c8aa77 Merge pull request #5589 from jakemcdermott/fix-4056
Generate new uuid for newly registered iso nodes

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-08 18:37:52 +00:00
Elijah DeLee
d82180605c Raise a more informative error when timeout
Right now we are often left with very little info if we do get a timeout on something that HasStatus.

Take advantage of the assert_status function that is also available on items using the HasStatus mixin to show
more info.
2020-01-08 12:47:17 -05:00
Shane McDonald
d3b7829e69 Pull in downstream k8s installer changes 2020-01-08 11:04:12 -05:00
softwarefactory-project-zuul[bot]
4a214a7770 Merge pull request #5607 from exicx/exicx-patch-context
change set-context to use-context

Reviewed-by: Shane McDonald <me@shanemcd.com>
             https://github.com/shanemcd
2020-01-08 14:27:08 +00:00
AlanCoding
18bb910e33 Fallback to globals for these tests 2020-01-07 17:14:34 -06:00
AlanCoding
ca8dcced8b update paramiko source 2020-01-07 17:14:34 -06:00
AlanCoding
0b9b8832a8 Get rid of hacks to simplify process
Remove poetry and wheel from bootstrap installs

Cleanup some docs around them
2020-01-07 17:14:34 -06:00
AlanCoding
271b3f00b7 Attempts to simplify build environment
Remove build isolation flag

Do not use --ignore-installed for any pip install commands

Add Makefile comments

do not use system site packages for awx venv

Consolidate bootstrap pins

Do another upgrade, properly document wheel
2020-01-07 17:14:33 -06:00
AlanCoding
477f566da0 Bump Django version which recently updated 2020-01-07 17:14:33 -06:00
Shane McDonald
cf55b6a0ba Bootstrap venv creation with flit and poetry
this is in addition to pip and setuptools installs

add in --ignore-installed and --no-build-isolation flags
reasoning is that we are not installing needed packages
for building
2020-01-07 17:14:33 -06:00
AlanCoding
a2acf4d61f Back off setuptools version due to allow_hosts option error 2020-01-07 17:14:33 -06:00
AlanCoding
3dc8c789fb Avoid system site packages and add more setup things 2020-01-07 17:14:33 -06:00
Seth Foster
7873d08311 Update pip and setuptools in requirements txt
Versions selected to be pre-19 pip
due to unresolved issues with the build systems

Upgrade everything, party on

document new process

rotate license files

fix Swagger schema generation target

Remove --ignore-installed flag
2020-01-07 17:14:32 -06:00
James Smith
c4df5f64c1 change set-context to use-context
set-context allows setting configuration within a provided context, to change contexts we need "use-context"

$ kubectl config
...
  set-context     Sets a context entry in kubeconfig
  use-context     Sets the current-context in a kubeconfig file
2020-01-07 16:01:54 -06:00
softwarefactory-project-zuul[bot]
679d531930 Merge pull request #5605 from AlexSCorey/5494-IncorrectInvGroupDetailDeleteModal
Adds Promote Delete Modal To InventoryGroupDetails

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-07 16:25:25 +00:00
Alex Corey
7d0d000180 Adds Promote Delete Modal To InventoryGroupDetails
It also removes a comment/reminder to remove some code after CredentialsLookUp
refactor was completed.  Now that it has been completed that code has been removed.
2020-01-06 16:53:15 -05:00
softwarefactory-project-zuul[bot]
f0882aba7d Merge pull request #5580 from mabashian/upgrade-pf-deps
Upgrades pf deps to latest

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-06 14:39:28 +00:00
softwarefactory-project-zuul[bot]
5c1713460b Merge pull request #5553 from keithjgrant/inventory-add-save
Inventory Add form fixes

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-06 14:29:19 +00:00
softwarefactory-project-zuul[bot]
67d19b20ef Merge pull request #5593 from ryanpetrello/dot-dot-dot
add the ability to generate dot graphs for per-request profiling

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-06 04:13:33 +00:00
Ryan Petrello
4a6147d4c2 add the ability to generate dot graphs for per-request profiling 2020-01-04 07:09:42 -05:00
Jake McDermott
d91e72c23f Generate new uuid for newly registered iso nodes
When provisioning a new isolated node, generate a new uuid instead of
reusing the SYSTEM_UUID of the controller node.
2020-01-03 12:59:57 -05:00
softwarefactory-project-zuul[bot]
8c99321ec8 Merge pull request #5577 from loitho/devel
Add a uwsgi param to prevent SAML error

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-03 15:27:25 +00:00
softwarefactory-project-zuul[bot]
18e9121db4 Merge pull request #5497 from jainnikhil30/devel
fix the saml_admin_attr not working

Reviewed-by: Ryan Petrello
             https://github.com/ryanpetrello
2020-01-03 14:25:59 +00:00
softwarefactory-project-zuul[bot]
0809c27bd1 Merge pull request #5581 from AlanCoding/hush_managed_types
Remove incorrect activity stream entries related to managed types

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-02 18:31:49 +00:00
AlanCoding
807f4ea757 Remove incorrect activity stream entries related to managed types 2020-01-02 11:37:33 -05:00
mabashian
ef3f98a399 Upgrades pf deps to latest. Adds ability to click on row items in order to select them rather than having to click on checkboxes/radio buttons. 2020-01-02 11:10:15 -05:00
softwarefactory-project-zuul[bot]
0bbf5e4faf Merge pull request #5579 from AlanCoding/revert_migration_flag
Revert migration flag

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-02 15:07:32 +00:00
softwarefactory-project-zuul[bot]
da440469cf Merge pull request #5499 from ryanpetrello/more-oauth-tinkering
only restrict OAuth2 tokens for external accounts *at creation time*

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2020-01-02 14:09:30 +00: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
loitho
930b46810f Add a uwsgi param to prevent SAML error
Add the uwsgi_param 'HTTP_X_FORWARDED_PORT' to nginx configuration,
This prevents the python-saml "invalid_response" error

related issue : #5570 and #1016

Signed-off-by: loitho
2019-12-31 03:45:35 +01:00
softwarefactory-project-zuul[bot]
c6dc69c68b Merge pull request #5563 from beeankha/update_makefile
Edit Makefile for Easier Collections Building/Playbook Testing

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-20 21:33:36 +00:00
beeankha
f00344f8b4 Enable easier building of playbooks for local Collections module testing 2019-12-20 15:24:06 -05:00
softwarefactory-project-zuul[bot]
f9e0600263 Merge pull request #5560 from wenottingham/bad-request-bad-naughty-evil-request
Fix survey validation to always retun an error code if erroring

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-20 18:38:27 +00:00
Bill Nottingham
3ba1ba1c9d Fix survey validation to always retun an error code if erroring 2019-12-20 11:38:22 -05:00
Keith Grant
ecf1d79ca5 fix form validation for Organization select in Inventory form 2019-12-19 14:55:48 -08:00
softwarefactory-project-zuul[bot]
82fd245ca9 Merge pull request #5542 from marshmalien/cred-list
Add Credential List 

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-19 21:21:12 +00:00
softwarefactory-project-zuul[bot]
df5aa8a47d Merge pull request #5520 from keithjgrant/5261-inventory-detail-b
Inventory Detail

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-19 20:03:22 +00:00
Keith Grant
f3c5cb5a2e fix inventory saving without insights credential specified 2019-12-19 10:59:16 -08:00
Keith Grant
b794fdbefd de-lint 2019-12-19 10:52:23 -08:00
softwarefactory-project-zuul[bot]
497f46041c Merge pull request #5519 from fosterseth/fix-inv-source-blocking
Remove inventory source update blocking

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-19 18:43:28 +00:00
Keith Grant
e688ed813a update tests for detail view changes 2019-12-19 10:41:59 -08:00
Marliana Lara
6c3e42a1ac Reset selected list after successful delete 2019-12-19 13:41:40 -05:00
Keith Grant
bfedbe561c add delete button to InventoryDetail 2019-12-19 09:55:04 -08:00
Keith Grant
6c439bb9ae Add Inventory detail edit button 2019-12-19 09:03:32 -08:00
Marliana Lara
f461a46155 Use credential_types from credential.summary_fields to display "Type" column 2019-12-19 10:36:38 -05:00
Marliana Lara
eee84b1af7 Fetch credential types and options only on initial render 2019-12-19 10:36:38 -05:00
Marliana Lara
c4ff27cedb Add Credential List and unit tests 2019-12-19 10:36:36 -05:00
softwarefactory-project-zuul[bot]
cf57d596a3 Merge pull request #5538 from jakemcdermott/ui-next-test-utils-test-coverage
Measure unit test coverage of test utils

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-19 15:23:39 +00:00
softwarefactory-project-zuul[bot]
a68cd6f0ae Merge pull request #5543 from jakemcdermott/cred-type-as-summarizable-fk-field
Add credential_type summarizable fk field

Reviewed-by: Jake McDermott <yo@jakemcdermott.me>
             https://github.com/jakemcdermott
2019-12-19 13:56:17 +00:00
Keith Grant
7ff4d821ce switch to our CardBody component on all screens, for consistent padding/spacing 2019-12-18 16:10:23 -08:00
Jake McDermott
23914182c4 Add credential_type summarizable fk field 2019-12-18 18:31:24 -05:00
softwarefactory-project-zuul[bot]
979328baa4 Merge pull request #5540 from ghjm/login_redirect_null_issue_again
Don't complain if LOGIN_REDIRECT_URL is null

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-18 20:45:45 +00:00
Graham Mainwaring
055c02072f Default LOGIN_REDIRECT_URL should be blank, not null 2019-12-18 15:13:46 -05:00
Keith Grant
8ff0902177 Fix UserDateDetail translation
Add UserDateDetail to Org detail & InventoryGroupDetail
Add VariablesDetail to InventoryGroupDetail
2019-12-18 11:52:19 -08:00
Keith Grant
3d510c5064 InventoryDetail: handle content loading state & errors better 2019-12-18 11:50:49 -08:00
Keith Grant
df47186c43 use UserDateDetail in OrganizationDetail 2019-12-18 11:50:25 -08:00
Keith Grant
2f7607a080 use VariablesDetail for displaying variables field in details views 2019-12-18 11:46:43 -08:00
Keith Grant
cde39413c9 switch all tabbed screens to use TabbedCardHeader 2019-12-18 11:46:43 -08:00
Keith Grant
41c9ea3c07 add tests for VariablesDetail & InventoryDetail 2019-12-18 11:46:43 -08:00
Keith Grant
3d45f27502 finish InventoryDetail 2019-12-18 11:46:43 -08:00
Keith Grant
0ab61fd3cb Start inventory detail
* Create VariablesDetail for read-only variables view
* Sketch out InventoryDetail
* Create CardBody and TabbedCardHeader for common custom styling
2019-12-18 11:46:43 -08:00
softwarefactory-project-zuul[bot]
d0c891764f Merge pull request #5537 from jakemcdermott/ui-next-org-form-functional-component
Move organization form to functional component

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-18 18:13:37 +00:00
Jake McDermott
057320aed3 Move organization form to functional component 2019-12-18 12:35:01 -05:00
softwarefactory-project-zuul[bot]
6340f9147c Merge pull request #5532 from jakemcdermott/ui-next-fix-warning-resize
Fix inconsistent warning icon sizes

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-18 17:23:55 +00:00
Jake McDermott
b8d6991e9d Measure unit test coverage of test utils 2019-12-18 11:55:50 -05:00
softwarefactory-project-zuul[bot]
2f9742e9de Merge pull request #5467 from thedoubl3j/fix_collection_sanity
Fix collection sanity

Reviewed-by: Alan Rominger <arominge@redhat.com>
             https://github.com/AlanCoding
2019-12-18 16:17:49 +00:00
softwarefactory-project-zuul[bot]
e4c3454b98 Merge pull request #5517 from jakemcdermott/ui-next-org-functional-components
Move routed organization views to functional components

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-18 16:15:57 +00:00
Jake McDermott
7cc3a7c39d Replace withRouter HOC with route hooks 2019-12-18 10:05:03 -05:00
Jake McDermott
9c291c2b50 Move routed org views to functional components 2019-12-18 10:04:54 -05:00
Jake Jackson
caad204cbb Merge branch 'devel' of github.com:ansible/awx into fix_collection_sanity 2019-12-18 09:52:24 -05:00
Jake McDermott
86eb541b3f Keep warning icon size consistent 2019-12-17 16:12:53 -05:00
softwarefactory-project-zuul[bot]
05e2386fac Merge pull request #5531 from ghjm/login_redirect_null_issue
Set a default value for LOGIN_REDIRECT_URL

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-17 20:20:29 +00:00
Graham Mainwaring
3c0fd37a4d Set a default value for LOGIN_REDIRECT_URL 2019-12-17 14:39:35 -05:00
softwarefactory-project-zuul[bot]
b23ccf7ee1 Merge pull request #5529 from shanemcd/set_default_var
Set default value for create_preload_data in image_build role

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-17 19:18:50 +00:00
Shane McDonald
bd8643d599 Set default value for create_preload_data in image_build role
This caused our AWX release workflow to blow up
2019-12-17 13:40:37 -05:00
Shane McDonald
b23856f126 Bump VERSION to 9.1.0 2019-12-17 11:38:32 -05:00
softwarefactory-project-zuul[bot]
c062728359 Merge pull request #5512 from jakemcdermott/ui-next-fix-template-tab-unload
Don't reload template panel on tab change

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-17 00:16:25 +00:00
softwarefactory-project-zuul[bot]
85d185cc8b Merge pull request #5505 from jakemcdermott/fix-5485
Use job details status to test status

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-16 23:45:45 +00:00
softwarefactory-project-zuul[bot]
77b8f345ae Merge pull request #5511 from jakemcdermott/ui-next-fix-inv-list-select-all-state
Initialize inventory list with none selected

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-16 23:14:37 +00:00
Seth Foster
b26b8e7097 Prevent running jobs from blocking inventory updates
A running job that has an inventory source will block
that inventory update from running. This fix removes
the block.

The test creates a job in running state, and an inventory
update in pending state. The test asserts that the
task manager and dependency graph .is_job_blocked method
returns False for the inventory update (i.e. update can
run).

issue #4809
2019-12-16 15:15:23 -05:00
softwarefactory-project-zuul[bot]
0052967aee Merge pull request #5489 from fosterseth/fix-proj-update-blocking
Remove project update blocking

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-16 19:51:51 +00:00
Seth Foster
63e9aed601 Prevent running jobs from blocking project updates
A running job that has a project update will block
that update from running. This fix removes
the block.
Adds a functional test that sets up a job in "running" state, and
starts a project update that is in "pending" state. Assert that
the task manager and dependency graph .is_job_blocked methods both
return False.

issue #5153
2019-12-16 13:43:42 -05:00
softwarefactory-project-zuul[bot]
d4be8c8168 Merge pull request #5516 from shanemcd/downstream-changes
A few downstream changes

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-16 17:49:03 +00:00
softwarefactory-project-zuul[bot]
cdf4b0d1ed Merge pull request #5510 from jakemcdermott/ui-next-fix-user-link-in
Fix access list and navigation user link-ins

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-16 17:48:58 +00:00
softwarefactory-project-zuul[bot]
c43a59e475 Merge pull request #5391 from wenottingham/really-we-would-remove-the-drummer-before-slash
Don't error on a trailing slash, just fix it up

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-16 17:19:34 +00:00
Jake McDermott
014520ee2b Initialize list with none selected 2019-12-16 11:46:53 -05:00
Shane McDonald
c1abc56753 Merge remote-tracking branch 'downstream/release_3.6.2' into downstream-changes 2019-12-16 11:13:10 -05:00
softwarefactory-project-zuul[bot]
c5b4681bf4 Merge pull request #5491 from marshmalien/inv-host-add
Add Inventory Host Add form 

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-16 16:06:24 +00:00
softwarefactory-project-zuul[bot]
00b7d6571a Merge pull request #5509 from jakemcdermott/ui-next-webpack-4.41.2
Update webpack to 4.41.2

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-16 15:55:29 +00:00
Jake McDermott
9ed2534ac5 Don't reload panel on tab change 2019-12-16 09:25:12 -05:00
Jake McDermott
a3bc3986bb Fix resource access list user links 2019-12-16 08:51:10 -05:00
Jake McDermott
230933744c Fix nav user links 2019-12-16 08:50:59 -05:00
Jake McDermott
227a90006e Update webpack to 4.41.2 2019-12-16 08:36:24 -05:00
softwarefactory-project-zuul[bot]
112f89660b Merge pull request #5239 from AlanCoding/migration_cache
Reduce API response times by 30% by using memcache migration flag

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-16 04:33:29 +00: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
Jake McDermott
9744b89737 Use job details status to test status 2019-12-13 17:32:23 -05:00
softwarefactory-project-zuul[bot]
04c535e3f9 Merge pull request #5424 from AlexSCorey/InventoryGroupAdd/Edit
Adds Inventory Groups

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-13 22:23:14 +00:00
Alex Corey
259e53f59d Fixes failing zuul test 2019-12-13 16:38:59 -05:00
Bill Nottingham
ac9bf1afcf Don't error on a trailing slash, just fix it up 2019-12-13 15:59:40 -05:00
Alex Corey
4b62d77015 Moves inventoryGroupForm into shared directory
Updates InventoryGroups tests
Adds ContentError functionalist to catch a case where a use might navigate to an Inventory
that isn't associated to the shown inventoryGroup.
2019-12-13 14:20:56 -05:00
Alex Corey
ef5ce0b082 Flattens Inventory File Structure Remove 2019-12-13 14:20:56 -05:00
Alex Corey
1942be7dc3 Checks for modified and create in Inv Group Deets
Also includes refactoring for css over style prop and removed some
unnecessary loading checks
2019-12-13 14:20:56 -05:00
Alex Corey
210f9577b0 Fixed filename typo 2019-12-13 14:20:56 -05:00
Alex Corey
87a05a5b2e Testing Improvements and Refactoring 2019-12-13 14:20:56 -05:00
Alex Corey
f8a754cf44 Adds Alert Modal, Breadcrumb, Nested Tabs and Refactors PR. 2019-12-13 14:20:56 -05:00
Alex Corey
3ea37e1c79 Addresses PR issues
Adds Delete Modal for deleting from Details view
Adds test for delete modal
Addresses styling for Variables label
Removes X close button from form
2019-12-13 14:20:56 -05:00
Alex Corey
c997fcfc2c Adds Inventory Groups routing --sort of
Adds Inventory Groups Add
Adds Inventory Groups Edit
Adds Inventory Groups Form
Adds api module for Groups
Adds placeholder file for InventoryGroupsList.  This was added to refine routing.  Tgere are no tests for this file yet.
2019-12-13 14:20:56 -05:00
Ryan Petrello
a7a3609e48 only restrict OAuth2 tokens for external accounts *at creation time*
related: https://github.com/ansible/awx/pull/5477
2019-12-13 10:30:41 -05:00
softwarefactory-project-zuul[bot]
4dd4928aab Merge pull request #5495 from shanemcd/less-is-more-secure
Remove some unused stuff from k8s secret

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-13 14:06:50 +00:00
Nikhil Jain
93dda04fd0 fix the saml_admin_attr not working 2019-12-13 15:11:23 +05:30
softwarefactory-project-zuul[bot]
5aeaabaceb Merge pull request #5438 from jainnikhil30/devel
adding instance consumed and remaining capacity to metrics

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-13 08:27:38 +00:00
Nikhil Jain
0d4e6d7e0b do the sum once and store it in a variable which will be reused 2019-12-13 13:21:49 +05:30
Nikhil Jain
9ae038868c adding instance consumed and remaining capacity to metrics 2019-12-13 13:21:49 +05:30
Shane McDonald
0b4ae74698 Remove some unused stuff from k8s secret 2019-12-12 19:36:56 -05:00
softwarefactory-project-zuul[bot]
0d248a12bc Merge pull request #5493 from ryanpetrello/rekey-command
add an awx-manage command for re-generating SECRET_KEY

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-12 22:07:23 +00:00
Ryan Petrello
7396e2e7ac add an awx-manage command for re-generating SECRET_KEY 2019-12-12 16:19:20 -05:00
Ryan Petrello
cac3bece56 Merge pull request #4032 from ghjm/configurable_login_3.6.2
[3.6.2] Configurable login redirect
2019-12-12 15:43:58 -05:00
Ryan Petrello
e4145b580c fix a flake8 nit 2019-12-12 15:43:23 -05:00
Ryan Petrello
74076b99d6 Merge pull request #3998 from ryanpetrello/rekey-secret-key
[3.6.2] add an awx-manage command for re-generating SECRET_KEY
2019-12-12 15:25:15 -05:00
Marliana Lara
5d35506b0c Add Inventory Host Add form 2019-12-12 13:58:22 -05:00
softwarefactory-project-zuul[bot]
e646b46a2c Merge pull request #5479 from ghjm/configurable_login
Configurable login redirect

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-12 14:50:19 +00:00
mabashian
475e2605d4 Changes redirect logic slightly to lean on a global var to store the config response rather than a constant on the awApp module. This should allow us to avoid test changes. 2019-12-11 21:12:38 -05:00
mabashian
c16ad89ff9 Fix linting error (unused var) 2019-12-11 21:12:33 -05:00
mabashian
425d1168b9 Adds trailing slash to /api request 2019-12-11 21:12:26 -05:00
mabashian
7ceaa9ec4a Changes redirect logic slightly to lean on a global var to store the config response rather than a constant on the awApp module. This should allow us to avoid test changes. 2019-12-11 17:21:02 -05:00
mabashian
4b3d3537b4 Fix linting error (unused var) 2019-12-11 17:21:02 -05:00
mabashian
efbff24528 Adds trailing slash to /api request 2019-12-11 17:21:02 -05:00
mabashian
1d9ce6cc15 Moves config request out to block of code that gets executed before the app is bootstrapped. This should allow us to redirect to the override url before the app begins to render, improving the UX. 2019-12-11 17:21:02 -05:00
mabashian
794ce96b17 Reverts changes to logout logic. We don't want to redirect to an override url if the user explicitly logs out. 2019-12-11 17:21:02 -05:00
mabashian
181421a2ee Adds logic to redirect unauthenticated user if LOGIN_REDIRECT_OVERRIDE is set as long as the user is not navigating to /login or /#/login. Also redirects on logout if LOGIN_REDIRECT_OVERRIDE is set. 2019-12-11 17:21:02 -05:00
Graham Mainwaring
9c9496a683 Expose login redirect URL in unauthenticated /api view 2019-12-11 17:21:02 -05:00
Graham Mainwaring
2b111c81df Add /login convenience URL 2019-12-11 17:21:02 -05:00
mabashian
f467e26842 Adds login redirect override field to the System (Misc System) Settings interface 2019-12-11 17:21:02 -05:00
Graham Mainwaring
7700050d10 Add default for LOGIN_REDIRECT_OVERRIDE 2019-12-11 17:21:02 -05:00
Graham Mainwaring
a8d34b46fb Add setting for configurable login redirect URL 2019-12-11 17:21:02 -05:00
mabashian
bf6c16197c Moves config request out to block of code that gets executed before the app is bootstrapped. This should allow us to redirect to the override url before the app begins to render, improving the UX. 2019-12-11 11:39:11 -05:00
mabashian
25cc341888 Reverts changes to logout logic. We don't want to redirect to an override url if the user explicitly logs out. 2019-12-11 11:39:02 -05:00
mabashian
d899e75ad7 Adds logic to redirect unauthenticated user if LOGIN_REDIRECT_OVERRIDE is set as long as the user is not navigating to /login or /#/login. Also redirects on logout if LOGIN_REDIRECT_OVERRIDE is set. 2019-12-11 11:38:55 -05:00
Graham Mainwaring
732da52239 Expose login redirect URL in unauthenticated /api view 2019-12-11 11:38:45 -05:00
Graham Mainwaring
ab2f212b04 Add /login convenience URL 2019-12-11 11:38:36 -05:00
mabashian
f94438cf9b Adds login redirect override field to the System (Misc System) Settings interface 2019-12-11 11:38:31 -05:00
Graham Mainwaring
2569ec4f4f Add default for LOGIN_REDIRECT_OVERRIDE 2019-12-11 11:38:21 -05:00
Graham Mainwaring
b58bff4686 Add setting for configurable login redirect URL 2019-12-11 11:38:07 -05:00
softwarefactory-project-zuul[bot]
6fab3590ae Merge pull request #5408 from keithjgrant/5065-lookup-c
Lookup refactor

Reviewed-by: Jake McDermott <yo@jakemcdermott.me>
             https://github.com/jakemcdermott
2019-12-10 22:01:50 +00:00
Keith Grant
846fd67618 de-lint 2019-12-10 12:13:22 -08:00
Ryan Petrello
6254129f0d Merge pull request #4021 from beeankha/custom_email_approve_deny_fix
[3.6.2 Backport] Enable Approval-Related Email Notifications to Send Properly
2019-12-10 14:31:58 -05:00
Keith Grant
3409d39150 fix ProjectLookup re-renders 2019-12-10 11:09:11 -08:00
Keith Grant
9de165a676 revert MultiCredentialLookup loading jank fix 2019-12-10 11:09:11 -08:00
Keith Grant
f54616912d de-lint 2019-12-10 11:09:11 -08:00
Keith Grant
c003e89ea9 fix loading jank in MultiCredentialLookup 2019-12-10 11:09:11 -08:00
Keith Grant
6e64b5c070 clean up act() errors in form tests after Lookup changes 2019-12-10 11:09:11 -08:00
softwarefactory-project-zuul[bot]
fcfc34fef1 Merge pull request #5413 from beeankha/custom_email_approve_deny_fix
Enable Approval-Related Email Notifications to Send Properly

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-10 19:04:41 +00:00
Keith Grant
75b7d74f91 Lookup tweaks/bug fixes 2019-12-10 10:58:33 -08:00
Keith Grant
569b5bc533 clean up multiple test 'act()' warnings 2019-12-10 10:58:33 -08:00
Keith Grant
9ab9c6961b update Lookup tests, add OptionsList tests 2019-12-10 10:58:33 -08:00
Keith Grant
2e525f8922 update tests for CredentialLookup, OrgLookup, ProjectLookup 2019-12-10 10:58:33 -08:00
Keith Grant
9c6300c2de update MultiCredentialsLookup tests 2019-12-10 10:58:33 -08:00
Keith Grant
f8153393b1 fix minor lookup bugs 2019-12-10 10:58:33 -08:00
Keith Grant
cb07e9c757 convert all lookups to use new Lookup component 2019-12-10 10:58:33 -08:00
Keith Grant
639b297027 fix credential chips in SelectedList, MultiCredential cleanup 2019-12-10 10:58:32 -08:00
Keith Grant
4341d67fb0 add MultiCredentialsLookup select/deselect logic 2019-12-10 10:58:32 -08:00
Keith Grant
6260633974 flushing out new approach to MultiCredentialsLookup 2019-12-10 10:58:32 -08:00
Keith Grant
8ec856f3b6 start Lookup reducer 2019-12-10 10:58:32 -08:00
Keith Grant
5a207f155e WIP split Lookup into Lookup & CategoryLookup 2019-12-10 10:58:32 -08:00
Alex Corey
2a722ba8d0 Refactors Lookup 2019-12-10 10:58:32 -08:00
softwarefactory-project-zuul[bot]
efbd2177a5 Merge pull request #5449 from marshmalien/inv-groups-list
Add Inventory Groups and Groups Delete Modal

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-10 18:12:47 +00:00
softwarefactory-project-zuul[bot]
989e1ca5d6 Merge pull request #5477 from ryanpetrello/oauth-500
provide better HTTP responses for certain OAuth2 error scenarios

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-10 17:41:12 +00:00
Marliana Lara
4c89568d71 Apply radio selection to ALL selected groups in modal
* Use semantic html to describe modal list
* Move nested try/catch block
* Remove deprecated type fields
* If delete fails, keep selected list checked
2019-12-10 12:29:33 -05:00
softwarefactory-project-zuul[bot]
a9688ac805 Merge pull request #5471 from mabashian/5349-upgrade-angular-scheduler
Pull in latest version of our angular-scheduler fork to fix Tueday/Tuesday typo

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-10 17:25:35 +00:00
Ryan Petrello
12a8793ddb provide a better error for OAuth2 logins for external accounts
attempting to use an OAuth2 token as an externally authenticated user throws an HTTP 500 error when external oauth is disabled - this change improves that so it's a 401 Unauthorized instead.
2019-12-10 11:52:25 -05:00
softwarefactory-project-zuul[bot]
7bbf640389 Merge pull request #5450 from beeankha/tower_job_template_extra_vars
Add extra_vars Parameter to tower_job_template.py Module

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-10 16:32:24 +00:00
softwarefactory-project-zuul[bot]
cb6688c685 Merge pull request #5412 from appuk/apurva-new-ids
Add dataCy attribute

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-09 20:22:08 +00:00
Alan Rominger
266a4e71c5 Merge pull request #4027 from AlanCoding/ryan_hosts_36
[alan] use a computed inventory field for task impact math
2019-12-09 14:51:02 -05:00
softwarefactory-project-zuul[bot]
c29afce54d Merge pull request #5472 from AlanCoding/ryan_hosts
Use total_hosts for task impact for performance

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-09 18:07:58 +00:00
Jake Jackson
15041e57b2 sqaushed and fixed sanity test issues 2019-12-09 12:22:46 -05:00
Apurva Bakshi
eddee456b3 Add dataCy attribute to select-user-role and select-team-role buttons 2019-12-09 12:16:27 -05:00
AlanCoding
be5a12a318 Compute fields in smart task_impact tests 2019-12-09 11:46:12 -05:00
softwarefactory-project-zuul[bot]
e131e8c151 Merge pull request #5466 from jakemcdermott/hooks-organization-add
Migrate organization add to functional component

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-09 16:07:50 +00:00
softwarefactory-project-zuul[bot]
d30ecaa7e3 Merge pull request #5468 from Spredzy/playbook_modern_syntax
ansible playbook: move to modern syntax

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-09 16:07:46 +00:00
AlanCoding
dfc4a0c0e0 Compute fields in smart task_impact tests 2019-12-09 10:59:59 -05:00
mabashian
86ba1639c3 Pull in latest version of our angular-scheduler fork to fix Tueday/Tuesday typo 2019-12-09 10:43:15 -05:00
Ryan Petrello
f1b4e24833 use a computed inventory field for task impact math
see: https://github.com/ansible/tower/issues/4022
2019-12-09 09:38:24 -05:00
Yanis Guenane
35d36a71c7 ansible playbook: move to modern syntax
Signed-off-by: Yanis Guenane <yguenane@redhat.com>
2019-12-09 09:01:49 +01:00
Apurva Bakshi
eadcbe1ce9 Add the data-Cy attribute for having better selector for tests 2019-12-06 16:14:01 -05:00
softwarefactory-project-zuul[bot]
f0198105c4 Merge pull request #5460 from AlanCoding/fix_detached
Fix project sync errors when project branch is commit

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-06 20:04:21 +00:00
Jake McDermott
e34c7acdc4 Migrate organization add to functional component 2019-12-06 14:54:29 -05:00
Ryan Petrello
001d469bd0 Merge pull request #4026 from AlanCoding/fix_detached_36
[3.6.2] Fix project sync errors when project branch is commit
2019-12-06 14:33:10 -05:00
softwarefactory-project-zuul[bot]
a9e5981cfe Merge pull request #5464 from ryanpetrello/iso-check-timeout
fix a bug in isolated check timeout handling

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-06 19:21:08 +00:00
Ryan Petrello
b36b6978fb Merge pull request #4024 from ryanpetrello/iso-check-timeout-362
fix a bug in isolated check timeout handling
2019-12-06 14:00:05 -05:00
AlanCoding
55a19ffe6a Fix project sync errors when project branch is commit 2019-12-06 13:04:04 -05:00
Ryan Petrello
c4d358b870 use a computed inventory field for task impact math
see: https://github.com/ansible/tower/issues/4022
2019-12-06 12:56:18 -05:00
Ryan Petrello
5ae7df7757 fix a bug in isolated check timeout handling 2019-12-06 12:51:24 -05:00
Ryan Petrello
220168f5ee fix a bug in isolated check timeout handling 2019-12-06 12:44:50 -05:00
beeankha
3cc9139c6d Add a more specific assertion statement 2019-12-05 16:49:23 -05:00
softwarefactory-project-zuul[bot]
01161c7afd Merge pull request #5447 from jakemcdermott/fix-job-tab-placement
Update job redirects and tab placement

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-05 21:24:06 +00:00
beeankha
6d595cbda6 Add extra_vars parameter to tower_job_template module 2019-12-05 15:37:00 -05:00
AlanCoding
419d32d3e3 Fix project sync errors when project branch is commit 2019-12-05 14:26:24 -05:00
beeankha
334c63388b Revert original quotation mark configuration for non-approval default msg and body 2019-12-05 12:11:56 -05:00
beeankha
32f6f87463 Change quotation mark format for sconsistency and also to comply with qa tests 2019-12-05 12:11:50 -05:00
beeankha
0d92b2e703 Enable approval-related email notifications to send properly 2019-12-05 12:11:43 -05:00
Jake McDermott
bc6d879976 Merge pull request #4015 from mabashian/4013-backport-angular-upgrade
[3.6.2 backport] Upgrades angular and auxiliary deps to 1.7.9
2019-12-05 11:34:28 -05:00
Ryan Petrello
9bae9d32c7 Merge pull request #4020 from ryanpetrello/always_release_lock-3-6-2
fix situation were error happened before lock was released
2019-12-05 11:32:38 -05:00
Ryan Petrello
b5724adae5 fix situation were error happened before lock was released 2019-12-05 11:30:12 -05:00
softwarefactory-project-zuul[bot]
1048baa98c Merge pull request #5457 from AlanCoding/always_release_lock
Fix situation were error happened before lock was released

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-05 16:17:28 +00:00
AlanCoding
922ea67541 Fix situation were error happened before lock was released 2019-12-05 10:41:23 -05:00
softwarefactory-project-zuul[bot]
3d105e3b7a Merge pull request #5442 from rooftopcellist/translations
Remove outdated Zanata script as part of migration to Memsource

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-05 15:06:45 +00:00
softwarefactory-project-zuul[bot]
aceef98601 Merge pull request #5444 from dsesami/add-crypto-akit
Added cryptography to awxkit deps

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-05 14:46:49 +00:00
Christian Adams
d41322c63c Remove outdated Zanata translation script as part of migration to Memsource
- adds requirement for gettext to dev container for use by Memsource automation
2019-12-05 09:29:33 -05:00
beeankha
d6e5eb356b Revert original quotation mark configuration for non-approval default msg and body 2019-12-05 09:25:32 -05:00
beeankha
b46a2b43b0 Change quotation mark format for sconsistency and also to comply with qa tests 2019-12-05 09:25:23 -05:00
beeankha
6f54044cc6 Enable approval-related email notifications to send properly 2019-12-05 09:25:10 -05:00
Marliana Lara
5d1f322cd1 Add Inventory Groups list 2019-12-05 08:55:50 -05:00
Daniel Sami
c11a8b8ae1 added cryptography as optional awxkit dep
added cryptography as optional dep
2019-12-05 08:52:59 -05:00
mabashian
2d4df3d50e Fixes bug where permissions checkboxes had inverse effect after upgrading angular to 1.7.x. 2019-12-05 07:34:14 -05:00
softwarefactory-project-zuul[bot]
715483c669 Merge pull request #5379 from mabashian/ui-next-workflows
Workflows pt 1: The Rendering

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-04 23:52:06 +00:00
softwarefactory-project-zuul[bot]
30f65f38a7 Merge pull request #5436 from mabashian/upgrade-angular-1.7.9
Upgrades angular and auxiliary deps to 1.7.9

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-04 23:33:58 +00:00
softwarefactory-project-zuul[bot]
aaf093b0e0 Merge pull request #5451 from shanemcd/fix-project-dir-perms
Fix permissions on projects directory by pre-creating it

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-04 23:20:57 +00:00
mabashian
bd7248d21c Properly show template add button and options based on OPTIONS response on both job_templates and workflow_job_templates endpoints. 2019-12-04 17:58:56 -05:00
mabashian
9bdd49bec5 Adds translations for missing strings in Toolbar.jsx 2019-12-04 17:58:56 -05:00
mabashian
2506db88f2 Ellipsis workflow node names that are too long to fit on the node 2019-12-04 17:58:56 -05:00
mabashian
61c38eabf8 Revert inadvertent variable name changes in old ui app 2019-12-04 17:58:56 -05:00
mabashian
37a1e5d9b0 First pass workflow viz 2019-12-04 17:58:56 -05:00
Shane McDonald
c439a1ec8f Fix permissions on projects directory by pre-creating it
This broke after
f78c9f357d
but people seem to like this functionality so instead of reverting it we can do this.
2019-12-04 17:39:38 -05:00
softwarefactory-project-zuul[bot]
a1d110aac7 Merge pull request #5249 from wenottingham/BSD-stands-for-berkeley-system-d
Move to using systemd for service management.

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-04 21:53:31 +00:00
Jake McDermott
c5e22f9aa3 Update job redirects and tab placement
Change display order of the output tab so that it is second and make
it the default for redirects and job launches.
2019-12-04 14:37:15 -05:00
softwarefactory-project-zuul[bot]
6dc5f91a0f Merge pull request #5445 from Spredzy/test_new_linter
Linters: test new linter job

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-04 19:31:15 +00:00
mabashian
8a9ebe2086 Fixes bug where permissions checkboxes had inverse effect after upgrading angular to 1.7.x. 2019-12-04 13:54:02 -05:00
mabashian
a859ecfbde Upgrades angular and auxiliary deps to 1.7.9 2019-12-04 13:54:02 -05:00
Bill Nottingham
02fd26520d Move to using systemd for service management. 2019-12-04 13:40:21 -05:00
Yanis Guenane
f8b2bcbae7 Linters: test new linter job
Depends-On: https://github.com/ansible/zuul-jobs/pull/40
2019-12-04 19:05:17 +01:00
softwarefactory-project-zuul[bot]
f5157784c4 Merge pull request #5440 from routenull0/inventory_misspelling
'install' was misspelled as 'isntall'

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-04 16:04:22 +00:00
mabashian
93b49f314d Upgrades angular and auxiliary deps to 1.7.9 2019-12-04 11:03:24 -05:00
Ryan Petrello
55d81cf74d Merge pull request #4012 from ryanpetrello/monkey-patch-oauth2-side-effect-362
fix an nuanced bug which can cause OAuth2 migrations to fail
2019-12-04 10:59:18 -05:00
softwarefactory-project-zuul[bot]
f629822596 Merge pull request #5437 from ryanpetrello/monkey-patch-oauth2-side-effect
fix an nuanced bug which can cause OAuth2 migrations to fail

Reviewed-by: Seth Foster
             https://github.com/fosterseth
2019-12-04 15:32:39 +00:00
routenull0
bf2a4d1a2c 'install' was misspelled as 'isntall' 2019-12-04 09:09:24 -06:00
Ryan Petrello
afadfa939d fix an nuanced bug which can cause OAuth2 migrations to fail 2019-12-04 09:55:55 -05:00
softwarefactory-project-zuul[bot]
02c3e1c32f Merge pull request #5420 from Spredzy/yamllint
yamllint: Make all files in awx pass yamllint

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-04 13:42:56 +00:00
Ryan Petrello
a0d20a5d50 fix an nuanced bug which can cause OAuth2 migrations to fail 2019-12-04 08:38:22 -05:00
softwarefactory-project-zuul[bot]
b8d27d53b8 Merge pull request #4988 from sjha4/inventory_foreman
Update foreman inventory to use foreman's inventory report

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-04 01:11:23 +00:00
softwarefactory-project-zuul[bot]
878659cded Merge pull request #5434 from jakemcdermott/fix-3882-3
Only show cred type test button to superusers.

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-03 21:19:52 +00:00
softwarefactory-project-zuul[bot]
027ce7fbdb Merge pull request #5431 from chrismeyersfsu/revive-updater.sh
keep *-devel package in the dev container

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-03 20:38:21 +00:00
Jake McDermott
540f8ab7d6 Only show cred type test button to superusers.
Without a credential instance, plugin tests go through the credential
type (not credential) api. Since this endpoint is for superusers only,
we hide the test button when non-superusers are adding a new external
credential.
2019-12-03 15:23:02 -05:00
softwarefactory-project-zuul[bot]
0362c88e48 Merge pull request #5095 from jakemcdermott/fix-3882-cred-test-perms
Allow some non-superusers to test credential plugins

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-03 19:56:44 +00:00
chris meyers
129374a1c2 keep *-devel package in the dev container
* requirements/updater.sh does pip magic. In doing this magic, devel
system packages are required to download/install/build. This change
ensures those dev packages are available.
2019-12-03 14:31:09 -05:00
Jake McDermott
63fd546f44 Let cred admins and users test credential plugins 2019-12-03 13:36:18 -05:00
Ryan Petrello
9856c9154e Merge pull request #3999 from ryanpetrello/fix-system-jobs-362
fix a few bugs with the session and oauth2 cleanup scheduled jobs
2019-12-03 12:08:03 -05:00
Michael Abashian
e7a712394a Merge pull request #4001 from mabashian/backport-awx-5411
[3.6.2] Backport WFJT inventory rbac fix
2019-12-03 10:23:30 -05:00
Ryan Petrello
208e36f83b add an awx-manage command for re-generating SECRET_KEY 2019-12-02 18:07:22 -05:00
Shane McDonald
68a6984fcd Merge pull request #5422 from shanemcd/oc-ugh
Generic method of detecting k8s api version
2019-12-02 12:49:40 -05:00
Shane McDonald
a90e0e8834 Merge pull request #5425 from shanemcd/memcached-hostname
Fix memcached_hostname bug in k8s installs
2019-12-02 12:45:04 -05:00
Shane McDonald
8ab6a79b37 Fix memcached_hostname bug in k8s installs
Fallout from https://github.com/ansible/awx/pull/5340.
2019-12-02 12:36:57 -05:00
Shane McDonald
e68d576fd2 Generic method of detecting k8s api version
Related: https://github.com/ansible/awx/issues/5388
2019-12-02 11:45:20 -05:00
Yanis Guenane
ca247182df yamllint: Make all files in awx pass yamllint
This commit updates all files that weren't passing yamllint for them to
pass.

A new yamllint target has been added. One can run `tox -e yamllint` or
`yamllint -s .` locally to ensure yaml files are still passing.

This check will be enabled in the CI so it can get on every new
contributions, and prevent merging non-compliant code.

Signed-off-by: Yanis Guenane <yguenane@redhat.com>
2019-12-02 15:12:51 +01:00
softwarefactory-project-zuul[bot]
1f628778bb Merge pull request #5418 from shanemcd/downstream-k8s-changes
Pull in downstream changes to k8s installer

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-12-02 13:44:29 +00:00
Shane McDonald
dcbb2813b5 Pull in downstream changes to k8s installer 2019-12-02 08:12:51 -05:00
Marliana Lara
9cdb281f06 Check inventory use permissions to disable workflow inventory lookup 2019-11-27 16:42:57 -05:00
softwarefactory-project-zuul[bot]
8116ec8e1f Merge pull request #5411 from marshmalien/5338-wf-inventory-lookup-permissions
Check inventory use permissions to disable workflow inventory lookup

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-27 19:18:55 +00:00
Ryan Petrello
c373420982 fix incorrect SystemJob.job_type choices 2019-11-27 12:37:24 -05:00
mabashian
93a9a0354f Adds missing semicolons to make linter happy 2019-11-27 12:37:21 -05:00
mabashian
ee6e28e066 Only show the days to keep input on the scheduler for system jobs that require it. Hides this field for cleaning up tokens and sessions. 2019-11-27 12:37:16 -05:00
Ryan Petrello
ea5d429399 fix a few bugs with the session and oauth2 cleanup scheduled jobs
see: https://github.com/ansible/tower/issues/3940
2019-11-27 12:37:10 -05:00
softwarefactory-project-zuul[bot]
3b49dd78bf Merge pull request #5392 from ryanpetrello/fix-system-jobs
fix a few bugs with the session and oauth2 cleanup scheduled jobs

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-27 17:25:56 +00:00
Marliana Lara
42b019d8c8 Check inventory use permissions to disable workflow inventory lookup 2019-11-27 11:36:51 -05:00
Ryan Petrello
a1af4e1808 Merge pull request #3997 from ryanpetrello/fix-busted-tests-362
fix busted tests for 3.6.2
2019-11-27 09:22:39 -05:00
Ryan Petrello
ffdcb2f8eb fix busted tests 2019-11-27 08:37:30 -05:00
Ryan Petrello
7b5f4f51fb Merge pull request #3990 from AlanCoding/sanity_fixes_36
Fix duplicate exception sanity error
2019-11-27 08:35:52 -05:00
Ryan Petrello
25c2b9610a Merge pull request #3993 from ryanpetrello/fix-asgi-bug-362
bump asgi-amqp dependency
2019-11-27 08:03:05 -05:00
softwarefactory-project-zuul[bot]
5935583c4c Merge pull request #5409 from ryanpetrello/bump-asgi-amqp
bump asgi-amqp dependency

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-27 10:09:05 +00:00
Ryan Petrello
68f17eb370 bump asgi-amqp dependency 2019-11-26 23:33:24 -05:00
Ryan Petrello
1ad8a49155 bump asgi-amqp dependency 2019-11-26 23:29:50 -05:00
Ryan Petrello
47ed5ef848 fix incorrect SystemJob.job_type choices 2019-11-26 23:13:39 -05:00
mabashian
a56686ca77 Adds missing semicolons to make linter happy 2019-11-26 15:59:19 -05:00
softwarefactory-project-zuul[bot]
211786976d Merge pull request #5403 from AlanCoding/duplicate_except
Fix duplicate exception sanity error (and a few others)

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-26 20:14:36 +00:00
mabashian
7e82f0fad7 Only show the days to keep input on the scheduler for system jobs that require it. Hides this field for cleaning up tokens and sessions. 2019-11-26 15:05:45 -05:00
softwarefactory-project-zuul[bot]
8612bf79e8 Merge pull request #5295 from rooftopcellist/analytics_user_agent
Add User-Agent to analytics upload POST

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-26 20:04:17 +00:00
softwarefactory-project-zuul[bot]
78edf51803 Merge pull request #5397 from rooftopcellist/consolidate_canceled
Make spelling of canceled consistent

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-26 19:55:53 +00:00
Ryan Petrello
632810f3a8 fix a few bugs with the session and oauth2 cleanup scheduled jobs
see: https://github.com/ansible/tower/issues/3940
2019-11-26 13:17:46 -05:00
AlanCoding
695eab1fdd fix duplicate exception sanity error 2019-11-26 09:47:07 -05:00
AlanCoding
081a0fc04e fix other assorted sanity failures 2019-11-26 09:45:54 -05:00
AlanCoding
48f10669d6 fix duplicate exception sanity error 2019-11-26 09:39:05 -05:00
Christian Adams
4f8b624b96 Make spelling of canceled consistent 2019-11-26 00:31:15 -05:00
softwarefactory-project-zuul[bot]
c87c0aa712 Merge pull request #5395 from AlanCoding/you_are_migrating
Raise specific exception if migration in progress

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-26 03:40:43 +00:00
Christian Adams
05e6f4ab3c Add User-Agent to analytics upload POST 2019-11-25 22:22:05 -05:00
AlanCoding
1a85874964 Raise specific exception if migration in progress 2019-11-25 21:48:05 -05:00
softwarefactory-project-zuul[bot]
6f2224c8e5 Merge pull request #5393 from shanemcd/fix-version-in-dev
Fix VERSION reported in dev container

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-25 22:36:22 +00:00
softwarefactory-project-zuul[bot]
57e155f0f9 Merge pull request #5396 from wenottingham/even-cleaner
Clean up some stuff in awxkit with `make clean`

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-25 21:40:50 +00:00
softwarefactory-project-zuul[bot]
a6924c1bcf Merge pull request #5394 from beeankha/fix_error
Make Integration Tests Pass w/ Manual SCM Type

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-25 21:10:42 +00:00
Bill Nottingham
4acb28f6f5 Clean up some stuff in awxkit with make clean 2019-11-25 15:55:22 -05:00
beeankha
3ed5d6ec65 Make integrations pass even with manual SCM type 2019-11-25 15:16:41 -05:00
Shane McDonald
15bcea7301 Fix VERSION reported in dev container 2019-11-25 12:56:49 -05:00
Shane McDonald
ce8c0066d0 Fix downstream tests
I backported how we do the VERSION detection in 3.5.something. This should
already be fixed upstream.
2019-11-25 12:55:18 -05:00
softwarefactory-project-zuul[bot]
bdd63f36a8 Merge pull request #5366 from marshmalien/inv-hosts-list
Inventory Host List

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-25 17:39:33 +00:00
Shane McDonald
24abc1462f Merge pull request #3985 from shanemcd/fix-cache
Fix Docker build caching
2019-11-25 11:41:33 -05:00
Shane McDonald
12363ae175 Fix Docker build caching
The flow will need to be:

- Pre-pull image you want to use
- Re-tag as image:$(COMPOSE_TAG)
- COMPOSE_TAG=mytag make docker-compose-build
2019-11-25 11:32:41 -05:00
Marliana Lara
1b50895738 Use short circuit operator in favor of ternary conditional 2019-11-25 11:17:37 -05:00
Ryan Petrello
1fbae00e37 Merge pull request #3983 from ryanpetrello/fix-3980
Remove usage of idle_timeout when checking status of isolated / containerized jobs
2019-11-25 11:15:35 -05:00
Samir Jha
b10a71786b Update foreman inventory to use foreman's inventory report 2019-11-25 10:48:54 -05:00
Ryan Petrello
0d659b0111 Merge pull request #3984 from ryanpetrello/fix-3978
Adds link to docs on container groups add/edit forms
2019-11-25 10:42:59 -05:00
softwarefactory-project-zuul[bot]
deb8714987 Merge pull request #5390 from ryanpetrello/downstream-security
merge in a few downstream fixes

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-25 15:38:25 +00:00
mabashian
ee8775a08d Adds link to docs on container groups add/edit forms to match instance groups. Updates instance groups link. 2019-11-25 10:35:23 -05:00
Shane McDonald
31650bb0bd Remove usage of idle_timeout when checking status of isolated / containerized jobs 2019-11-25 10:31:33 -05:00
Ryan Petrello
cbf085ab43 move migrations to accomdate a downstream migration 2019-11-25 10:06:12 -05:00
Ryan Petrello
78d715efed merge downstream branch 2019-11-25 10:05:05 -05:00
softwarefactory-project-zuul[bot]
2cb5b0563b Merge pull request #5377 from dsesami/new-ids
Updated some selector attributes for E2E

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-25 14:00:50 +00:00
Daniel Sami
0eb55f5038 Updated contributing doc with notes about E2E 2019-11-22 15:24:35 -05:00
Daniel Sami
daf3bbc7ef Added E2E-friendly selectors to nav and jt details
lint

updated snapshot
2019-11-22 15:12:43 -05:00
softwarefactory-project-zuul[bot]
caa6d0c4d3 Merge pull request #5382 from shanemcd/take-your-time
Remove usage of idle_timeout when checking status of isolated / containerized jobs

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-22 18:37:14 +00:00
softwarefactory-project-zuul[bot]
bc7ae4ca46 Merge pull request #5173 from AlanCoding/collection_credentials
Finish JT.credentials functionality, add test

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-22 18:07:14 +00:00
Shane McDonald
db2316b791 Remove usage of idle_timeout when checking status of isolated / containerized jobs 2019-11-22 11:41:00 -05:00
softwarefactory-project-zuul[bot]
b7efd5a9ab Merge pull request #5332 from AlexSCorey/InventoryAdd/EditForm
Adds Add/Edit Inventory and Inventory Form

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-22 16:00:35 +00:00
Alex Corey
83caf99c58 Improves Tests and addresses other PR Issues 2019-11-22 10:22:05 -05:00
softwarefactory-project-zuul[bot]
285fb2582e Merge pull request #5378 from AlanCoding/run_notes
Add notes for ./upgrade.sh

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-22 00:49:40 +00:00
Alex Corey
19180a1bc4 Adds Add/Edit Inventory and Inventory Form 2019-11-21 17:40:28 -05:00
AlanCoding
9c86f521e9 Add notes for ./upgrade.sh 2019-11-21 15:52:47 -05:00
David Moreau Simard
2171823846 Finish JT.credentials functionality, add test
Original commit:

commit 3ec6196477135230c4b90b175310bdc2eaff36ed
Author: David Moreau Simard <dmsimard@redhat.com>
Date:   Tue Oct 23 22:21:33 2018 -0400

    Add support for "credentials" in the tower_job_template module

    Job templates might require more than one credential.
    There's credential, vault_credential, machine_credential, etc.
    "credentials" is a thing, let's support it.
2019-11-21 14:30:08 -05:00
softwarefactory-project-zuul[bot]
c4143b0111 Merge pull request #5373 from rooftopcellist/rm_analytics_values
Set default values for analytics settings

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-21 18:21:40 +00:00
Christian Adams
94fa4deab3 Set default values for analytics settings 2019-11-21 12:29:15 -05:00
softwarefactory-project-zuul[bot]
53aadd3b96 Merge pull request #5372 from mabashian/ig-docs-links
Instance groups links to docs

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-21 17:08:21 +00:00
Marliana Lara
faa0802d97 Update breadcrumb and fetch new hosts when url changes 2019-11-21 11:36:18 -05:00
Marliana Lara
fa144aa98f Add Inventory Host list and unit tests
* Add Inventory Host Add route
* Fix host disabled loading switch bug
2019-11-21 11:36:17 -05:00
Marliana Lara
ea4e98c52a Move Switch into shared component directory and update tests 2019-11-21 11:36:12 -05:00
mabashian
8ff413efc0 Adds link to docs on container groups add/edit forms to match instance groups. Updates instance groups link. 2019-11-21 11:05:06 -05:00
softwarefactory-project-zuul[bot]
804a3c17bf Merge pull request #5354 from wenottingham/isolation-desolation--let-it-go
Remove obsolete requirements file.

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-21 13:35:09 +00:00
softwarefactory-project-zuul[bot]
da5eb710cd Merge pull request #5358 from ilijamt/patch-1
Allow deployments on Kubernetes version 1.16

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-21 13:27:15 +00:00
softwarefactory-project-zuul[bot]
57f9b31b2b Merge pull request #5163 from AlanCoding/custom_venv
Add custom virtualenv param to various modules

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-21 11:45:19 +00:00
softwarefactory-project-zuul[bot]
34ba858e3b Merge pull request #5191 from AlanCoding/tower_group_id
Make tower_group idempotent

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-21 04:26:16 +00:00
AlanCoding
5e24cee0ae Add custom_virtualenv param to inventory source and tests 2019-11-20 22:39:12 -05:00
Mathieu Mallet
a026838f77 ansible_tower: Add custom_virtualenv attribute when applicable (#60200)
In Ansible Tower/AWX, there are three kinds of objects that can be tied
to custom python virtual environment:
  - job template
  - project
  - organization

This patch updates the three ansible modules that creates those objects
so that the 'custom_virtualenv' attribute can be set if specified.

Testing Done: via a playbook, test organization, projet then template creation
without any 'custom_virtualenv' attribute specified. Check that the
resources get created and that their python env is set to default. Then
re-do the same test but this time with the 'custom_virtualenv' attribute
specified. Ensure in AWX UI that those resources have the right
'custom_virtualenv' set.
2019-11-20 22:35:25 -05:00
Ilija Matoski
e2cd86089b Allow deployments on Kubernetes version 1.16 2019-11-20 23:54:10 +01:00
softwarefactory-project-zuul[bot]
85d5387f31 Merge pull request #5350 from svenstaro/patch-1
Use more modern version of OpenShift client

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-20 21:56:42 +00:00
softwarefactory-project-zuul[bot]
cf13a1b70a Merge pull request #5359 from martin-adema/devel
Configurable image registry and service account for Postgres deployment.

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-20 21:25:19 +00:00
softwarefactory-project-zuul[bot]
fed6a86170 Merge pull request #5194 from AlanCoding/inventory_organization
Add organization parameter to tower_inventory_source (and add test logging)

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-20 18:23:27 +00:00
softwarefactory-project-zuul[bot]
c8907fb39d Merge pull request #5362 from beeankha/fix_typo
Fix Typo for Project Option

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-20 16:48:00 +00:00
softwarefactory-project-zuul[bot]
162e4aeec4 Merge pull request #5361 from mabashian/logout-id
Adds id attribute to logout button

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-20 16:15:53 +00:00
beeankha
c6d2fa86c7 Fix typo under 'options' 2019-11-20 11:15:18 -05:00
mabashian
f89db3586b Adds id attribute to logout button 2019-11-20 10:42:37 -05:00
softwarefactory-project-zuul[bot]
19742859b6 Merge pull request #5343 from beeankha/wait_for_project_sync
Make tower_project.py Wait for Project Sync

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-20 15:22:56 +00:00
beeankha
eff46dbc71 Make playbook wait for project sync...
...*before* running the associated job template.

Set "wait" default to True so CI doesn't time out

Change default back to "False", put in new "if"...

...block, explicitly set "wait" to "False" in test file.

Change if block

Update README

Update 'wait' option description
2019-11-20 08:43:19 -05:00
Martin Adema
80b75a163a Configurable image registry and service account for Postgres deployment. 2019-11-20 14:15:59 +01:00
Bill Nottingham
fe65073f3e Remove obsolete requirements file. 2019-11-19 16:44:55 -05:00
softwarefactory-project-zuul[bot]
6f2b10daf5 Merge pull request #5344 from AlanCoding/remove_git
Remove forks no longer needed from dependencies

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-19 21:31:24 +00:00
softwarefactory-project-zuul[bot]
ad3d89afd3 Merge pull request #5340 from eb4x/memcached_hostname
Consistent naming scheme; memcached_host -> memcached_hostname

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-19 16:43:20 +00:00
softwarefactory-project-zuul[bot]
e3c2c310ef Merge pull request #5352 from ryanpetrello/more-downstream-fixes
merge in a few downstream fixes

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-19 15:19:36 +00:00
Ryan Petrello
c574cdc7dc fix busted tests 2019-11-19 09:21:04 -05:00
Ryan Petrello
097b59e74a fix a bug that broken custom approval notification messages 2019-11-19 08:55:26 -05:00
Alan Rominger
8e7d607a47 Only turn off Galaxy cert verification via toggle (#3933) 2019-11-19 08:54:40 -05:00
Sven-Hendrik Haase
4c32faa448 Use more modern version of OpenShift client
3.9 is pretty old by now.
2019-11-19 13:29:06 +01:00
Ryan Petrello
17509d560d Merge pull request #3955 from AlanCoding/lets_release
Backport collection fixes
2019-11-18 16:25:04 -05:00
AlanCoding
7b1b656455 Remove forks no longer needed from dependencies 2019-11-18 15:39:39 -05:00
Ryan Petrello
268b22c550 Merge pull request #3953 from ryanpetrello/more-container-group-fixes
[3.6.1] fix a few bugs related to container group execution
2019-11-18 14:27:18 -05:00
Ryan Petrello
b525d0a6f4 Merge pull request #3967 from ryanpetrello/fix-cli-doc-typos
fix a typo in the CLI usage docs
2019-11-18 11:26:24 -05:00
softwarefactory-project-zuul[bot]
c7cabfa785 Merge pull request #5206 from keithjgrant/4966-project-auto-select
make ProjectLookup auto-select project if only one found

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-18 16:23:38 +00:00
Ryan Petrello
9c2797b34c fix a typo in the CLI usage docs 2019-11-18 11:21:34 -05:00
Ryan Petrello
732f7d2292 Merge pull request #3962 from ryanpetrello/license-pass
don't set rh_username and rh_password in the license upload
2019-11-18 11:03:36 -05:00
Erik Berg
f5fc0871fc Consistent naming scheme; memcached_host -> memcached_hostname
environment.sh uses hostname for everything, and both environment and
credentials provide a default of 'memcached', so this should also be one less
variable to care about.
2019-11-18 15:22:12 +00:00
Ryan Petrello
9458741b72 don't set rh_username and rh_password in the license upload 2019-11-18 10:02:31 -05:00
softwarefactory-project-zuul[bot]
a1f7f967e3 Merge pull request #5339 from eb4x/rabbitmq_hostname
Consistent naming scheme; rabbitmq_host -> rabbitmq_hostname

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-18 14:38:25 +00:00
Erik Berg
91c78d7137 Consistent naming scheme; rabbitmq_host -> rabbitmq_hostname
environment.sh uses hostname for everything, and both environment and
credentials provide a default of 'rabbitmq', so this should be one less
variable to care about.
2019-11-18 13:46:43 +00:00
softwarefactory-project-zuul[bot]
b88f4ce27c Merge pull request #5325 from AlanCoding/inputs_inputs
Delay inputs comparision to after field validation

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-16 01:30:36 +00:00
softwarefactory-project-zuul[bot]
e8606d9478 Merge pull request #5301 from AlanCoding/galaxy_ignore
Add ignore list for Ansible 2.10

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-16 01:22:53 +00:00
softwarefactory-project-zuul[bot]
90d38a50de Merge pull request #5313 from fosterseth/fix-5044-azureinventory
Fix filtering azure inventory based on user-specified tags

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-15 21:51:09 +00:00
softwarefactory-project-zuul[bot]
a83164cca6 Merge pull request #5336 from shanemcd/note-on-upgrading
Add note on upgrading to install.md

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-15 20:58:05 +00:00
Seth Foster
e1e7e9047d Fix filtering azure inventory based on user-specified tags
Users can specify a list of keys, or a list of key:value pairs under
source variables. e.g. tags: Creator, peanutbutter or tags:
Creator:jmarshall, peanutbutter:jelly. If provided, only hosts that have
all keys or key:value pairs in the list will be returned.

inventory.py sets up the azure_rm.yml that provides
exclude_host_filters. This code adds a line for each key in the list, as
well as an additional line in the case of a key:value pair.

e.g.

exclude_host_filters:
- "'Creator' not in tags.keys()"
- tags['Creator'] != 'jmarshall'

Each line is a conditional, and if any conditionals is true, then the
host is filtered out.

fix for issue # 5044
2019-11-15 14:18:20 -05:00
Shane McDonald
094eef635d Fix typo 2019-11-15 14:17:08 -05:00
Shane McDonald
56bb82e303 Fix ordering 2019-11-15 14:14:54 -05:00
Shane McDonald
0290dd3246 Regenerate table of contents 2019-11-15 14:11:10 -05:00
Shane McDonald
de8c46cab0 Remove obsolote docker-compose instructions 2019-11-15 14:04:05 -05:00
Shane McDonald
9028a48ab2 Add a note on upgrading 2019-11-15 14:03:46 -05:00
Shane McDonald
709fa74070 Fix verbiage in INSTALL.md 2019-11-15 14:01:28 -05:00
softwarefactory-project-zuul[bot]
5342faa997 Merge pull request #5333 from m33k/JoeR/docker_module_update
CHANGED: docker_service to docker_compose

Reviewed-by: Ryan Petrello
             https://github.com/ryanpetrello
2019-11-15 17:31:16 +00:00
Joe
f0865d69f0 CHANGED: docker_service to docker_compose
Signed-off-by: Joe <11597133+m33k@users.noreply.github.com>
2019-11-15 16:28:05 +00:00
AlanCoding
ddf9fd581e Run and fix all sanity tests 2019-11-14 20:56:06 -05:00
James Vornhagen
b6745db4b8 update documentation example
missing k in workflow.

- Docs Pull Request

+label: docsite_pr
2019-11-14 20:56:05 -05:00
AlanCoding
35a565d09f In tower_job_wait intentionally fail module for failure 2019-11-14 20:56:05 -05:00
AlanCoding
b878aed400 Add test coverage for launch with multiple prompted creds 2019-11-14 20:56:04 -05:00
AlanCoding
1961a8ba15 Fix and test for warning when creating project 2019-11-14 20:56:04 -05:00
Hideki Saito
b76018d6e0 Fix multibyte character handling issue for tower_job_wait #55585
Add multibyte hostname handling test as an integration test

Signed-off-by: Hideki Saito <saito@fgrep.org>
2019-11-14 20:56:04 -05:00
AlanCoding
a40398e6a1 Remove sanity exceptions no longer needed 2019-11-14 20:56:03 -05:00
AlanCoding
97e2fbbe27 Add collection test coverage for creating vault credential 2019-11-14 20:56:03 -05:00
Mathieu Mallet
bcbad06c10 tower_credential: Missing 'kind' attribute (#61324)
In the 'tower_credential' module, when the credential 'kind' is set to
'vault', the code expects the other parameter 'vault_id' to be set.
Unfortunately, in the module 'credential_type_for_v1_kind' method, the
'kind' parameter is popped, i.e. remove from the module dict of
parameters leading to the following error:

> Parameter 'vault_id' is only valid if parameter 'kind' is specified as
'vault'

Fixes: #45644, #61324

Testing Done: Manually create a playbook with a task as follow
  - name: Create vault with ID 'bar' exists
    tower_credential:
      name: Foobar vault
      organization: Foobar
      kind: vault
      vault_id: bar
      vault_password: foobar
2019-11-14 20:55:59 -05:00
AlanCoding
1c74773eac Delay inputs comparision to after field validation 2019-11-14 20:28:33 -05:00
softwarefactory-project-zuul[bot]
9701ac1804 Merge pull request #5329 from AlanCoding/rm_another_ignore
Run and fix all sanity tests

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-14 21:25:44 +00:00
softwarefactory-project-zuul[bot]
3d90c6dfcf Merge pull request #5319 from AlanCoding/just_one_letter
Update documentation example

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-14 19:48:26 +00:00
AlanCoding
1402a2c8a5 Run and fix all sanity tests 2019-11-14 14:45:16 -05:00
softwarefactory-project-zuul[bot]
6567ad612c Merge pull request #5170 from AlanCoding/py2_fix2
Fix multibyte character handling issue for tower_job_wait #55585

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-14 19:33:50 +00:00
Ryan Petrello
a15bf9ee41 fix a few bugs related to container group execution
see: https://github.com/ansible/awx/issues/5326
2019-11-14 14:00:48 -05:00
softwarefactory-project-zuul[bot]
da448f6a0b Merge pull request #5327 from ryanpetrello/more-container-group-fixes
fix a few bugs related to container group execution

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-14 18:59:06 +00:00
Ryan Petrello
513f54a422 fix a few bugs related to container group execution
see: https://github.com/ansible/awx/issues/5326
2019-11-14 13:23:38 -05:00
softwarefactory-project-zuul[bot]
05d9220b21 Merge pull request #5312 from ryanpetrello/322-migration-cleanup
remove a number of now-unnecessary 3.2 migrations

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-14 17:34:28 +00:00
softwarefactory-project-zuul[bot]
9bb9bc682f Merge pull request #5320 from shanemcd/rabbitmq-bump
Bump RabbitMQ version in k8s/openshift installs

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-14 13:43:23 +00:00
Shane McDonald
1d6f116687 Bump RabbitMQ version in k8s/openshift installs
See https://github.com/ansible/awx-rabbitmq/pull/13
2019-11-14 08:01:35 -05:00
James Vornhagen
9a9d53d17a update documentation example
missing k in workflow.

- Docs Pull Request

+label: docsite_pr
2019-11-13 22:00:18 -05:00
softwarefactory-project-zuul[bot]
755ffc9844 Merge pull request #5309 from marshmalien/remove-awx-pf-chip
Swap our Chip & ChipGroup components out for PatternFly components

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-13 21:04:30 +00:00
softwarefactory-project-zuul[bot]
0ffbb06427 Merge pull request #5315 from ryanpetrello/hostname-prevent-jinja
prevent the creation of Host names that contain Jinja

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-13 19:08:08 +00:00
Marliana Lara
c13c5b6c13 Hide overflow chip in filter tags component 2019-11-13 13:45:50 -05:00
Ryan Petrello
70979df36a prevent the creation of Host names that contain Jinja 2019-11-13 13:15:36 -05:00
Ryan Petrello
83ee39cabd remove a number of unnecessary 3.2 migrations 2019-11-13 11:46:24 -05:00
softwarefactory-project-zuul[bot]
b0d31a64aa Merge pull request #5288 from AlexSCorey/5270-InventoryAddLinks
Adds AddDropDownButton removes TemplateAddButton

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-12 21:08:56 +00:00
softwarefactory-project-zuul[bot]
06c53c14be Merge pull request #5233 from rebeccahhh/devel
Set policy variables to defaults when an instance group is containerized

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-12 19:55:41 +00:00
softwarefactory-project-zuul[bot]
a63778e40e Merge pull request #5212 from AlanCoding/project_tags
Use tags to reduce project update output

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-12 19:15:11 +00:00
Rebeccah
6f38edf9a3 add in testing to see that when an instance group is containerized that the policy field values are set to default 2019-11-12 13:13:34 -05:00
Rebeccah
1f05372ac9 change the logic to not break existing policy_instance testing 2019-11-12 13:13:34 -05:00
Rebeccah
d0327fc044 added onto the when saved function for instance groups that sets policy variables to their default. 2019-11-12 13:13:34 -05:00
Jake McDermott
068dab14d4 Increase async test timeout
When our CI system is overloaded, tests start running slower.
2019-11-12 13:04:00 -05:00
AlanCoding
f64d0dde5a Use tags to reduce project update output
Handle folder deletion as tag

remove -v use by default

Change meaning of roles_enabled playbook var to
 value of AWX global setting
2019-11-12 12:52:39 -05:00
Marliana Lara
7cc0041aa8 Remove our implementation of Chip and ChipGroup in favor of PatternFly's component 2019-11-12 12:44:56 -05:00
Shane McDonald
f66f24eb83 Merge pull request #4107 from gizero/docker-compose-fix-create_preload_data
ensure "create_preload_data" is honored in docker-compose deployments
2019-11-12 11:44:15 -05:00
Alex Corey
e3ee3c5a00 Fixes failing tests 2019-11-12 11:11:17 -05:00
Andrea Galbusera
1198c067b2 ensure "create_preload_data" is honored in docker-compose deployments
Use a templated version of launch_awx_task.sh which conditionally preloads
sample data according to create_preload_data value.
2019-11-12 10:44:27 -05:00
softwarefactory-project-zuul[bot]
d3ea09d60c Merge pull request #4819 from dgiorgio/devel
Fix docker-compose - Use variables to set docker postgres tag

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-12 15:34:46 +00:00
softwarefactory-project-zuul[bot]
c0abb063f9 Merge pull request #5001 from khawaga/kubernetes_ingress_tls
Kubernetes Ingress TLS support

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-12 15:34:40 +00:00
Alex Corey
95cdddd670 Adds Proptypes to AddDropDownButton Component
Also refactors to use the url that is passed in as the key for the link.
This means that we don't have to pass in a key value.
2019-11-12 10:21:10 -05:00
Alex Corey
d91aa8c6cf Allows AddDropDownButton components to accept array of dropdownItems 2019-11-12 10:21:10 -05:00
Alex Corey
052f101a70 Adds AddDropDownButton removes TemplateDropDown Button
Both Inventory List and Template List use the same add button that has a drop down.
I decided to make a component that both can use.
This also addresses a typo in a InventoryList test.
2019-11-12 10:21:10 -05:00
AlanCoding
c96e88877f Add ignore list for Ansible 2.10 2019-11-11 22:07:22 -05:00
softwarefactory-project-zuul[bot]
1564dfc80f Merge pull request #5272 from marshmalien/project-manual-subform
Add project manual subform

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-11 21:43:58 +00:00
softwarefactory-project-zuul[bot]
b0cb3ca9da Merge pull request #5297 from mabashian/eslint-plugin-react-hooks
Adds eslint-plugin-react-hooks as a dev dep

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-11 21:05:27 +00:00
softwarefactory-project-zuul[bot]
84b5fb89a3 Merge pull request #5296 from rayterrill/patch-1
Update custom_virtualenvs.md

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-11 20:59:09 +00:00
Marliana Lara
5319659d58 Address PR feedback
* Set local_path default value to empty string
* Make playbook directory required
* Update unit tests
2019-11-11 15:38:52 -05:00
softwarefactory-project-zuul[bot]
5d27c28b47 Merge pull request #5255 from mabashian/ui-next-users-list
Adds Users list, forms and details

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-11 20:04:05 +00:00
mabashian
68a6315626 Adds react-hooks eslint rules and fixes a few warnings 2019-11-11 14:56:25 -05:00
mabashian
8bfbd85cf9 Adds eslint-plugin-react-hooks as a dev dep 2019-11-11 14:25:04 -05:00
Ray Terrill
f7b6d9fdff Update custom_virtualenvs.md
Adding trailing slashes to API calls + directories. This caused me a ton of wasted time as the API call silently returns but does nothing without the trailing slash.
2019-11-11 11:05:16 -08:00
mabashian
ab4fba7ce9 Address PR feedback. Refactors a bit of unit test coverage to move away from testing state. Re-organized some of the structure of the user list tests to be slightly more efficient. 2019-11-11 11:57:39 -05:00
mabashian
deb6e58397 Adds Users list, forms and details. Adds password form field. 2019-11-11 10:43:56 -05:00
softwarefactory-project-zuul[bot]
4746bc7c09 Merge pull request #5119 from mabashian/ui-next-teams
Adds basic teams list and add/edit forms

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-08 21:28:04 +00:00
mabashian
823a74c98b Prettier 2019-11-08 14:18:44 -05:00
mabashian
c294a63f32 Updates a couple of team list checkbox tests to test the UI rather than state/props internals. Fixes bug where select all was selected on load. 2019-11-08 12:44:45 -05:00
mabashian
84bce530dc Adds organization field to team form. Adds edit button to team list items. 2019-11-08 12:44:45 -05:00
mabashian
6acd3c98b7 Updates stale copy pasta. Org -> Team 2019-11-08 12:44:45 -05:00
mabashian
1e80b2e295 Adds basic teams list and add/edit forms. The edit button on the list rows and the org lookup in the form are both missing and will be added in a later commit. 2019-11-08 12:44:45 -05:00
Marliana Lara
e4721d7722 Add project manual scm type subform 2019-11-07 13:30:30 -05:00
softwarefactory-project-zuul[bot]
0cea8121bb Merge pull request #5204 from AlexSCorey/5106-MissingOrDeletedFields
Adds `Deleted` text to missing resources in JT Details View

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-07 15:41:35 +00:00
Shane McDonald
eaac54040c Merge pull request #5192 from shanemcd/local-projects
Mount local projects directory inside of dev container.
2019-11-07 07:35:45 -05:00
Shane McDonald
763ac25b2e Merge pull request #5253 from shanemcd/stop-requiring-pg-admin-when-we-dont-need-it
Dont require pg_admin_password unless we're using it.
2019-11-06 14:20:55 -05:00
Shane McDonald
922723cf39 Merge pull request #5220 from JensPfeifle/patch-1
Update required Ansible version to 2.8+
2019-11-06 11:36:37 -05:00
softwarefactory-project-zuul[bot]
f216c8f90f Merge pull request #5180 from mabashian/ui-next-hosts
Add host list, add/edit forms, and details

Reviewed-by: Michael Abashian
             https://github.com/mabashian
2019-11-06 15:23:06 +00:00
mabashian
4e31bdd2d2 Removes changes to serializer that added type to host recent jobs. Addresses Switch styling issues on host list items. 2019-11-06 09:35:45 -05:00
mabashian
d5e9716ceb Move CardHeader styled component(s) outside of render functions. Refactors host options calls out to it's own function. 2019-11-06 09:35:45 -05:00
mabashian
01963b0ee7 Add host list, add/edit forms, and details 2019-11-06 09:35:45 -05:00
softwarefactory-project-zuul[bot]
a353f2a807 Merge pull request #5250 from jakemcdermott/fix-5234
fix flakey test

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-06 14:29:33 +00:00
Jake McDermott
69205c5f6b try a higher timeout ¯\_(ツ)_/¯
https://github.com/ansible/awx/issues/5234
https://github.com/ansible/awx/pull/5250
2019-11-06 08:24:35 -05:00
softwarefactory-project-zuul[bot]
941bba2ae0 Merge pull request #5252 from marshmalien/4299-fix-twbs-right-margin
Fix right side <body> spacing bug

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-05 23:06:08 +00:00
Ryan Petrello
ddccfaa6fe Merge pull request #5251 from ryanpetrello/py-tee-zee
update pytz to the latest version
2019-11-05 16:54:01 -05:00
Shane McDonald
24da2b78b8 Dont require pg_admin_password unless we're using it. 2019-11-05 15:26:48 -05:00
Marliana Lara
6fee0db17b Fix right margin and padding to 0px on body el 2019-11-05 14:48:04 -05:00
Ryan Petrello
b25fbc5266 update pytz to the latest version 2019-11-05 13:53:28 -05:00
softwarefactory-project-zuul[bot]
e6235a4046 Merge pull request #5225 from marshmalien/project-edit
Add Project Edit form

Reviewed-by: Marliana Lara <marliana.lara@gmail.com>
             https://github.com/marshmalien
2019-11-05 18:21:55 +00:00
Marliana Lara
0f32161df0 Pull credential api request outside of ProjectEdit 2019-11-05 12:40:34 -05:00
Alex Corey
b570c8ad2a Fixes linting issues 2019-11-04 16:26:01 -05:00
Alex Corey
9170aa184a Removes missingDetail prop and addresses a typo.
This removes `missingDetail` prop in favor of using styledComponent's className prop.
2019-11-04 14:42:00 -05:00
softwarefactory-project-zuul[bot]
68c26014cc Merge pull request #5226 from ryanpetrello/sphinx-busted
fix broken sphinx docs build

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-04 18:28:03 +00:00
Ryan Petrello
f049b61460 Merge pull request #3937 from ryanpetrello/approval-notification-bug
fix a bug that broken custom approval notification messages
2019-11-04 13:02:37 -05:00
Ryan Petrello
458ca69405 fix a bug that broken custom approval notification messages 2019-11-04 13:01:50 -05:00
Shane McDonald
8a4c85e473 Merge pull request #5231 from shanemcd/bump-version-9.0.1
Bump version to 9.0.1
2019-11-04 11:23:13 -05:00
Shane McDonald
09d883f94a Bump version to 9.0.1 2019-11-04 11:20:42 -05:00
Shane McDonald
9ef57ec510 Merge pull request #5227 from shanemcd/more-downstream-k8s-fallout-sorry-folks
More downstream k8s fallout, sorry folks
2019-11-04 11:19:15 -05:00
Shane McDonald
5be006f9d3 Merge pull request #5229 from shanemcd/setuid-bwrap
Set setuid bit on bwrap
2019-11-04 11:18:57 -05:00
Shane McDonald
089bafa5d4 Set setuid bit on bwrap
Related: https://github.com/ansible/awx/issues/5224
2019-11-04 11:10:09 -05:00
Shane McDonald
fa278f83ad Fix k8s installs using external db 2019-11-04 09:35:11 -05:00
Shane McDonald
0d68ca8f14 Allow for overriding container groups image from k8s installer 2019-11-04 09:35:03 -05:00
Ryan Petrello
2ec90f17d0 fix broken sphinx docs build 2019-11-04 09:32:04 -05:00
Marliana Lara
ecf340f722 Add Project Edit test coverage 2019-11-04 09:16:31 -05:00
Shane McDonald
713079bd70 Merge pull request #5218 from shanemcd/fix-k8s-nginx
Fix broken k8s installs
2019-11-04 08:57:48 -05:00
Marliana Lara
d77040a7a9 Add Project Edit form and refactor how the form handles credentials 2019-11-03 21:28:10 -05:00
Shane McDonald
d3b137fbc4 Fix broken k8s installs
Related: https://github.com/ansible/awx/issues/5205

The following commit introduced this bug:
712b07c136 (diff-a2ef2d6347894a92a6b882e3793fb06c)
2019-11-03 16:03:19 -05:00
JensPfeifle
857faf570d Update required Ansible version to 2.8+
Attempting to build the docker image with Ansible 2.5.1 results in the following error:
```
TASK [image_build : Build sdist builder image] *******************************************************************************************
fatal: [localhost -> localhost]: FAILED! => {"changed": false, "msg": "Unsupported parameters for (docker_image) module: build, force_source, source Supported parameters include: api_version, archive_path, buildargs, cacert_path, cert_path, container_limits, debug, docker_host, dockerfile, filter_logger, force, http_timeout, key_path, load_path, name, nocache, path, pull, push, repository, rm, ssl_version, state, tag, timeout, tls, tls_hostname, tls_verify, use_tls"}                                                                                 
```
The `force_source` parameter was added to docker_image in Ansible 2.8 (![source](https://docs.ansible.com/ansible/latest/modules/docker_image_module.html)).
2019-11-03 19:03:40 +01:00
softwarefactory-project-zuul[bot]
5246c842b2 Merge pull request #5203 from keithjgrant/warnings-cleanup
Cleanup console warnings/refactor

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-01 19:29:22 +00:00
softwarefactory-project-zuul[bot]
1dca4c9098 Merge pull request #5198 from AlanCoding/no_symlink
Remove venv symlink hack no longer needed

Reviewed-by: Alan Rominger <arominge@redhat.com>
             https://github.com/AlanCoding
2019-11-01 15:36:39 +00:00
softwarefactory-project-zuul[bot]
8cb32045f0 Merge pull request #5127 from marshmalien/project-add-form
Project add form

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-01 15:13:51 +00:00
softwarefactory-project-zuul[bot]
4962b729de Merge pull request #5199 from ryanpetrello/uuid-not-unique
make the callback receiver more robust to duplicate UUIDs from ansible

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-01 15:11:22 +00:00
softwarefactory-project-zuul[bot]
ed39a127e7 Merge pull request #5200 from ryanpetrello/quiet-celery
get rid of a loud celery error in the dev environment

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-01 15:06:00 +00:00
AlanCoding
c4b4a4c21a Remove venv symlink hack no longer needed 2019-11-01 09:46:27 -04:00
Ryan Petrello
bd81fda05c get rid of a loud celery error in the dev environment 2019-11-01 09:25:41 -04:00
Ryan Petrello
83550eeba0 make the callback receiver more robust to duplicate UUIDs from ansible 2019-11-01 09:24:52 -04:00
softwarefactory-project-zuul[bot]
4540cb653e Merge pull request #5208 from shanemcd/locale-fix
Install missing locales in dev container image.

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-11-01 13:24:11 +00:00
Shane McDonald
69597c5654 Sync Dockerfiles 2019-11-01 08:38:37 -04:00
Shane McDonald
fa61aef194 Install missing locales in dev container image. 2019-11-01 08:29:11 -04:00
Alan Rominger
871d87374b Only turn off Galaxy cert verification via toggle (#3933) 2019-10-31 22:56:48 -04:00
softwarefactory-project-zuul[bot]
e35f6b2acb Merge pull request #5202 from shanemcd/fix-docker-cache
Fix docker cache

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-31 23:32:11 +00:00
Keith Grant
b3e056fe55 make ProjectLookup auto-select project if only one found 2019-10-31 16:01:33 -07:00
Marliana Lara
a8140e86d7 Encapsulate each scm type subform in its own component 2019-10-31 19:00:55 -04:00
Alex Corey
e5b76c6427 Adds Deleted text to missing resources in JT Detials View
The usecase of this change is if a user deletes an Inventory, or a Project
that is used by a JT they need to know that those resources are missing.

The only time that `Deleted` won't be shown for a missing resource is for
Inventory if it has been marked Prompt on Launch then nothing is shown. in that field.

Also adds icon to indicate that a JT is missing resources on the JT List.
2019-10-31 18:02:13 -04:00
Shane McDonald
4d4ae84e32 Fix docker cache
This was causing the cache to miss on some docker versions, in addition to
throwing a warning that says it will break soon.
2019-10-31 16:57:17 -04:00
Marliana Lara
ae349addfe Resolve credential type id and retrieve scm_type choices from OPTIONS 2019-10-31 16:38:32 -04:00
Marliana Lara
31fdd5e85c Add scm refspec to project detail and remove org id from top level shared component 2019-10-31 16:38:32 -04:00
Marliana Lara
e4bde24f38 Add project add form and tests 2019-10-31 16:38:32 -04:00
Marliana Lara
9c019e1cc0 Add organization and credential lookups 2019-10-31 16:38:31 -04:00
softwarefactory-project-zuul[bot]
b3d298269b Merge pull request #5197 from wenottingham/tune-into-a-different-key
chmod the nginx cert/key/etc

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-31 18:53:40 +00:00
Keith Grant
21f7ca21e0 refactor dupe code to new TemplateAddButton component 2019-10-31 11:34:37 -07:00
softwarefactory-project-zuul[bot]
43bf370f8c Merge pull request #5195 from AlanCoding/job_fail_json
In tower_job_wait intentionally fail module for failure

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-31 17:53:53 +00:00
Bill Nottingham
6057921e34 chmod the nginx cert/key/etc
EL8 OpenSSL defaults to 0600 for the key, which will not work in the
dev environment.
2019-10-31 13:53:13 -04:00
Shane McDonald
d645d0894a Merge pull request #5196 from ansible/9.0.0-for-real
Bump VERSION to 9.0.0
2019-10-31 13:48:01 -04:00
Shane McDonald
4575cae458 Bump VERSION to 9.0.0 2019-10-31 13:39:42 -04:00
softwarefactory-project-zuul[bot]
6982a8aee7 Merge pull request #5176 from AlanCoding/collection_project_create
Fix and test for warning when creating project

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-31 16:50:59 +00:00
softwarefactory-project-zuul[bot]
fa1091d089 Merge pull request #5175 from AlanCoding/multi_cred_launch
Add test coverage for launch with multiple prompted creds

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-31 16:46:31 +00:00
AlanCoding
5095816762 In tower_job_wait intentionally fail module for failure 2019-10-31 12:41:53 -04:00
softwarefactory-project-zuul[bot]
c605705b39 Merge pull request #5182 from wenottingham/for-this-to-actually-be-useful-we-would-need-a-sendmail.cf-and-lol-not-doing-that
[RFC] Remove admin alerts, there are better mechanisms for this

Reviewed-by: Ryan Petrello
             https://github.com/ryanpetrello
2019-10-31 14:52:37 +00:00
AlanCoding
24eae09ed9 Make tower_inventory_source org optional, add tests 2019-10-31 09:46:49 -04:00
Hampus Lundqvist
a2fee252f9 fix tests and typos 2019-10-31 08:09:37 -04:00
Hampus Lundqvist
ab80c2276d support organization specific tower_inventory_source. Inventories can exists with same name across multiple organizations so we need to be able to select correct inventory, credential, project etc for the inventory_source 2019-10-31 08:09:20 -04:00
Shane McDonald
f78c9f357d Mount local projects directory inside of dev container.
Yesterday I noticed that we have awx/projects in our .gitignore. I am assuming
this pre-dates our containerized development environment. With this commit, any
project under awx/projects/ will be made available in the dev environment for
selection when creating a Manual project. This comes in super handy when
testing changes to playbooks locally.
2019-10-31 08:01:54 -04:00
AlanCoding
da1e43dc12 Make tower_group idempotent 2019-10-31 07:53:43 -04:00
softwarefactory-project-zuul[bot]
ccc2a616c1 Merge pull request #5186 from wenottingham/another-driveby
Remove extraneous leftover conditional import

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-31 01:21:34 +00:00
softwarefactory-project-zuul[bot]
51184ba20d Merge pull request #5129 from mabashian/resource-access-tabs
Configures access tabs for job template, project, inventory and smart inventory details

Reviewed-by: Michael Abashian
             https://github.com/mabashian
2019-10-31 00:42:37 +00:00
AlanCoding
db33c0e4fa Add test coverage for launch with multiple prompted creds 2019-10-30 20:41:14 -04:00
mabashian
e9728f2a78 Update snapshot after rebase 2019-10-30 20:11:11 -04:00
Bill Nottingham
5cdf2f88da Remove admin alerts, there are better mechanisms for this 2019-10-30 19:35:45 -04:00
Bill Nottingham
93e940adfc Remove extraneous leftover conditional import 2019-10-30 19:21:02 -04:00
mabashian
64776f97cf Prettier formatting 2019-10-30 19:13:35 -04:00
mabashian
fc080732d4 Add breadcrumb for template access tab 2019-10-30 19:13:35 -04:00
mabashian
d02364a833 Configures access tabs for job template, project, inventory and smart inventory details views. 2019-10-30 19:13:34 -04:00
softwarefactory-project-zuul[bot]
176da040d9 Merge pull request #5185 from ansible/jakemcdermott-patch-wfjt-webhook-wording
Make WFJT webhook credential help text more helpful

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-30 22:51:33 +00:00
softwarefactory-project-zuul[bot]
f2b4d87152 Merge pull request #5184 from shanemcd/remove-dead-code
Deleting unused unit-tests directory

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-30 22:38:00 +00:00
softwarefactory-project-zuul[bot]
17798edbc4 Merge pull request #5174 from shanemcd/centos-8-upstream
Update AWX images to CentOS 8

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-30 22:31:26 +00:00
Keith Grant
c1da74cbc0 fix PF switch styling 2019-10-30 15:06:42 -07:00
Jake McDermott
5e6ee4a371 Improve WFJT webhook credential wording 2019-10-30 17:52:30 -04:00
Shane McDonald
288fea8960 Deleting unused unit-tests directory
Same as https://github.com/ansible/awx/pull/5179 except I wont accidentally
close it.
2019-10-30 17:35:19 -04:00
softwarefactory-project-zuul[bot]
dca9daf719 Merge pull request #5178 from rebeccahhh/devel
Test policy_instance_ variable validation in instance group

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-30 21:31:40 +00:00
softwarefactory-project-zuul[bot]
634504c7a1 Merge pull request #5131 from mabashian/5010-close-button
Removes close button from footer of host details modal

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-30 21:04:04 +00:00
Shane McDonald
c019d873b9 Update AWX images to CentOS 8 2019-10-30 16:43:23 -04:00
Rebeccah
e4a21b67c7 remove u markers in assertion statements, they are unnecessary in python3 2019-10-30 15:52:14 -04:00
Rebeccah
2e6c484a50 added in testing for updating(or not allowing updates of) policy_instance variables in instance and container groups 2019-10-30 15:51:55 -04:00
AlanCoding
f8b64f2222 Fix and test for warning when creating project 2019-10-30 15:40:49 -04:00
softwarefactory-project-zuul[bot]
6060b62acd Merge pull request #5172 from wenottingham/sweet-but-psycopg
Re-add psycopg2 for bootstrap_development.sh

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-30 19:35:23 +00:00
Ryan Petrello
0dcf6a2b1f Merge pull request #5156 from ryanpetrello/cli-launch-args
properly parse CLI arguments for launch endpoints
2019-10-30 14:52:32 -04:00
Bill Nottingham
452c1b53f7 Re-add psycopg2 for bootstrap_development.sh 2019-10-30 14:23:33 -04:00
Hideki Saito
cb354c2ef1 Fix multibyte character handling issue for tower_job_wait #55585
Add multibyte hostname handling test as an integration test

Signed-off-by: Hideki Saito <saito@fgrep.org>
2019-10-30 14:11:49 -04:00
softwarefactory-project-zuul[bot]
42d2f72683 Merge pull request #5159 from wenottingham/delete-delete-delete
Trim the list of things installed during build of the dev environment

Reviewed-by: Shane McDonald <me@shanemcd.com>
             https://github.com/shanemcd
2019-10-30 18:11:39 +00:00
softwarefactory-project-zuul[bot]
57e8ba7f3c Merge pull request #5168 from AlanCoding/more_sane
Remove sanity exceptions no longer needed

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-30 18:09:01 +00:00
Ryan Petrello
c882cda586 properly parse CLI arguments for launch endpoints
see: https://github.com/ansible/awx/issues/5093
2019-10-30 13:49:37 -04:00
softwarefactory-project-zuul[bot]
784d18705c Merge pull request #5164 from shanemcd/fix-container-groups-upstream
Fix container groups in AWX image

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-30 17:44:38 +00:00
Bill Nottingham
36996584f9 Re-add dependencies needed by UI tests to the dev env 2019-10-30 13:06:48 -04:00
AlanCoding
0160dbe8bc Remove sanity exceptions no longer needed 2019-10-30 12:56:36 -04:00
Shane McDonald
28994d4b0b Install oc and kubectl in upstream task image 2019-10-30 12:15:51 -04:00
softwarefactory-project-zuul[bot]
9b09344bae Merge pull request #5015 from AlanCoding/awx_awx_cp1
tower_credential: Missing 'kind' attribute (#61324)

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-30 13:16:32 +00:00
Bill Nottingham
84ba383199 Trim the list of things installed during build
Swap git & vim for more minimal installs.
2019-10-29 23:19:00 -04:00
softwarefactory-project-zuul[bot]
6dcd87afec Merge pull request #5148 from keithjgrant/pf-upgrade
Reduce test warnings

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-29 23:56:02 +00:00
softwarefactory-project-zuul[bot]
243ab58902 Merge pull request #5152 from shanemcd/centos-8-dev-env
Update dev env to centos:8

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-29 22:09:00 +00:00
Shane McDonald
6c877a15e3 Update dev env to centos:8 2019-10-29 17:09:45 -04:00
softwarefactory-project-zuul[bot]
2ccf0a0004 Merge pull request #5143 from AlanCoding/getinline
Apply username ordering to more views

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-29 20:42:49 +00:00
softwarefactory-project-zuul[bot]
c69db02762 Merge pull request #5102 from mabashian/edit-buttons
Adds edit buttons to Templates, Inventories, Organizations, and Projects list items

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-29 20:42:45 +00:00
AlanCoding
59e1c6d492 Add collection test coverage for creating vault credential 2019-10-29 15:34:32 -04:00
mabashian
35c27c8b16 Tweak ActionButtonCell definition and export 2019-10-29 14:45:05 -04:00
Keith Grant
91edac0d84 remove prop type warnings 2019-10-29 11:41:14 -07:00
Mathieu Mallet
ae1bd9d1e9 tower_credential: Missing 'kind' attribute (#61324)
In the 'tower_credential' module, when the credential 'kind' is set to
'vault', the code expects the other parameter 'vault_id' to be set.
Unfortunately, in the module 'credential_type_for_v1_kind' method, the
'kind' parameter is popped, i.e. remove from the module dict of
parameters leading to the following error:

> Parameter 'vault_id' is only valid if parameter 'kind' is specified as
'vault'

Fixes: #45644, #61324

Testing Done: Manually create a playbook with a task as follow
  - name: Create vault with ID 'bar' exists
    tower_credential:
      name: Foobar vault
      organization: Foobar
      kind: vault
      vault_id: bar
      vault_password: foobar
2019-10-29 14:21:21 -04:00
AlanCoding
cf168b27d2 apply username ordering to more views 2019-10-29 14:20:33 -04:00
softwarefactory-project-zuul[bot]
8cb7b388dc Merge pull request #5140 from ryanpetrello/downstream-hardening
merge a variety of downstream bug fixes

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-29 18:19:10 +00:00
Ryan Petrello
171f0d6340 Merge branch 'downstream' into devel 2019-10-29 13:02:17 -04:00
Jeff Bradberry
aff31ac02f Add the no_truncate parameter to the job and adhoc event sublist views
which are the ones that the CLI actually uses.
2019-10-29 11:24:17 -04:00
Jake McDermott
a23754897e Improve accuracy of code comment 2019-10-29 11:24:17 -04:00
Ryan Petrello
3094b67664 work around a bug in the k8s client that leaves trash in /tmp 2019-10-29 11:24:17 -04:00
Alan Rominger
98d3f3dc8a Add tests for AWX collection credential fixes (#3893) 2019-10-29 11:24:16 -04:00
Jake McDermott
6f2a07a7df Scrape tag input state from dom and put it in vm
The tag input state lives somewhere in the associated select2 widgetry
and isn't directly tied to the vm like it is for the other inputs.
2019-10-29 11:24:16 -04:00
Rebeccah
54ac1905b3 pinning pytest-mock to version 1.11.1 2019-10-29 11:24:16 -04:00
AlanCoding
1bdae2d1f7 Fully rely on error ignoring for sanity rel imports 2019-10-29 11:24:16 -04:00
AlanCoding
2bc2e26cc7 Ignore import errors due to bugs in Ansible core 2019-10-29 11:24:16 -04:00
AlanCoding
5010602e6b add release note 2019-10-29 11:24:16 -04:00
AlanCoding
c103a813bf declare types in Ansible Tower module options 2019-10-29 11:24:16 -04:00
AlanCoding
e097bc61c8 New target for sanity testing of the collection
Do not run in Zuul
2019-10-29 11:24:15 -04:00
Ryan Petrello
2ea63eeca0 pin to runner==1.4.4 2019-10-29 11:24:15 -04:00
Ryan Petrello
52336c0fe8 fix a syntax error
whoopsie
2019-10-29 11:24:15 -04:00
Rebeccah
220354241b added in check to see if the the current check has an instance or not to prevent nonetype errors 2019-10-29 11:24:15 -04:00
Rebeccah
1ae8fdc15c moved filterint out policy instance values in the api browser input box into the instanceGroupDetail class where I overrode the update_raw_data function to parse out the unneeded data. Additionally added the fix for checking the value in the serializer. 2019-10-29 11:24:15 -04:00
Rebeccah
4bbdce3478 removed policy_instance variables from container groups default values in the API put/patch view 2019-10-29 11:24:15 -04:00
Rebeccah
d25e6249fd Added in validation for each of the 3 fields that should not be changed if the instance is a container group, defaults in the textarea persist with these 3 options 2019-10-29 11:24:15 -04:00
Jim Ladd
71d7bac261 Rename job_summary_dict to job_metadata
* Clarifies purpose of notification template variable
2019-10-29 11:24:14 -04:00
Alan Rominger
acba5306c6 Fix bug where SCM inventory did not have a collections destination (#3795)
* update inventory path to be in tmp project clone

* copy project folder for inventory scm launch type

* Optionally accept inventory collection paths from ansible.cfg
2019-10-29 11:24:14 -04:00
Jim Ladd
fca9245536 Update unit tests 2019-10-29 11:24:14 -04:00
Jim Ladd
47031da65b Return full webhook dict when serializing notif. 2019-10-29 11:24:14 -04:00
Jim Ladd
b024d91c66 Use correct notif. bodies when sending test notifs
* Notification backends now handle body of notifications differently
* .. depending on their type (webhook, email, and pagerduty) are
  currently the only three notification types that use body
* email and pagerduty expect a string
* webhooks expects a dict in string format
2019-10-29 11:24:14 -04:00
Jim Ladd
da7002cf0c Don't use i18n for NT body string 2019-10-29 11:24:14 -04:00
Keith Grant
f4f1762805 fix lint errors 2019-10-29 11:24:13 -04:00
Keith Grant
ad5857e06b Add notification custom message fields for workflow pause/approval 2019-10-29 11:24:13 -04:00
Jim Ladd
12d735ec8f NotificationSerializer should gracefully handle webhook/pagerduty bodies 2019-10-29 11:24:13 -04:00
Jim Ladd
1e9173e8ef In awxkit, add support for wf approval notification templates 2019-10-29 11:24:13 -04:00
Jim Ladd
4809c40f3c Render WF approval notifications w/ custom templates 2019-10-29 11:24:13 -04:00
Jim Ladd
4e9ec271c5 Refactor notification backends to use CustomNotificationBase 2019-10-29 11:24:13 -04:00
Jim Ladd
6cd6a42e20 Render default notifications using Jinja templates 2019-10-29 11:24:13 -04:00
Jim Ladd
f234c0f771 Remove unused build_notification_message method 2019-10-29 11:24:12 -04:00
Alan Rominger
3f49d2c455 RBAC relaunch 403 updates (#3835)
* RBAC relaunch 403 updates

Addresses 2 things

1. If WFJ relaunch is attempted, and relaunch is denied
  because the WFJ had encrypted survey answers,
  a generic message was shown, this changes it to show
  a specific error message

2. Org admins are banned from relaunching a job
  if the job has encrypted survey answers

* update tests to raises access pattern

* catch PermissionDenied for user_capabilities
2019-10-29 11:24:12 -04:00
Alan Rominger
a0fb9bef3a Disable activity stream and speed up host group bulk deletion (#3817) 2019-10-29 11:24:12 -04:00
Ryan Petrello
ccaaee61f0 improve cleanup of anonymous kubeconfig files 2019-10-29 11:24:12 -04:00
Alan Rominger
70269d9a0d Add support for credential_type in tower_credential module (#3820)
* Add support for credential_type

* Finish up credential_type parameter with tests

* make inputs mutually exclusive with other params

* Test credential type with dict input
2019-10-29 11:24:12 -04:00
Ryan Petrello
ab6322a8f7 fix a bug that breaks webhook launches when a survey is in use
see: https://github.com/ansible/awx/issues/5062
2019-10-29 11:24:12 -04:00
Ryan Petrello
8bc6367e1e fix a bug introduced upstream with settings.LOG_AGGREGATOR_AUDIT 2019-10-29 11:24:12 -04:00
Alex Corey
b74bf9f266 Instance Groups Instances List styling fixes (#3846)
* Instance Groups Instances slider renders properly, and that list wraps properly.

* Instance Groups responds properly

* assorted container groups ui fixes
updated responsiveness of instance groups and instances list
fix layout of container group form
update help text for container group form elements
update text for tech preview top bar

* update container group doclink

* list styling updates based on feedback
2019-10-29 11:24:11 -04:00
Martin Juhl
321aa3b01d Update handlers.py
The setFormatter tries to create the external.log file.. So we should check if LOG_AGGREGATOR_AUDIT is active here as well
2019-10-29 11:24:11 -04:00
Ryan Petrello
7f1096f711 reap k8s-based jobs when the dispatcher restarts 2019-10-29 11:24:11 -04:00
Marliana Lara
2b6cfd7b3d Handle undefined schedule value in job detail component 2019-10-29 11:24:11 -04:00
Graham Mainwaring
b2b33605cc Add UI toggle to disable public Galaxy (#3867) 2019-10-29 11:24:11 -04:00
mabashian
d06b0de74b Revert 6282b5bacb 2019-10-29 11:24:11 -04:00
Ryan Petrello
6dfc714c75 when isolated or container jobs fail to launch, set job status to error
a status of error makes more sense, because failed generally points to
an issue with the playbook itself, while error is more generally used
for reporting issues internal to Tower

see: https://github.com/ansible/awx/issues/4909
2019-10-29 11:24:10 -04:00
Jake McDermott
cf5d3d55f0 Set omitted runner event line lengths to 0
runner_on_start events have zero-length strings for their stdout
fields. We don't want to display these in the ui so we omit them.
Although the stdout field is an empty string, it still has a recorded
line length of 1 that we must account for. Since we're not rendering
the blank line, we must also go back and set the event record's line
length to 0 in order to avoid deleting too many lines when we pop or
shift events off of the view while scrolling.
2019-10-29 11:24:10 -04:00
Jake McDermott
e91d383165 Fix off-by-one errors 2019-10-29 11:24:10 -04:00
mabashian
72d19b93a0 Prettier formatting 2019-10-29 11:01:04 -04:00
softwarefactory-project-zuul[bot]
ff1c96b0e0 Merge pull request #5132 from mabashian/4980-job-details-delete
Hide delete button on job details from users without proper permissions

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-29 01:18:50 +00:00
softwarefactory-project-zuul[bot]
6aaf906594 Merge pull request #5130 from mabashian/4948-empty-list
Fix org teams empty list text

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-29 01:13:08 +00:00
Keith Grant
da7baced50 upgrade patternfly to latest, update tests 2019-10-28 15:59:47 -07:00
softwarefactory-project-zuul[bot]
2b10c0f3f2 Merge pull request #5042 from craph/devel
Improve usage of ssl_certificate in local_docker

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-28 22:09:20 +00:00
mabashian
01788263e2 Hide delete button on job details from users without proper permissions 2019-10-28 17:50:32 -04:00
mabashian
8daceabd26 Removes close button from footer of host details modal 2019-10-28 17:38:28 -04:00
Raphaël COMBEAU
712b07c136 Improve usage of ssl_certificate in local_docker
Remove nginx.conf from container

Move nginx outside ssl_certificate block
2019-10-28 17:37:14 -04:00
mabashian
8fbfed5c55 Fix org teams empty list text 2019-10-28 17:21:14 -04:00
softwarefactory-project-zuul[bot]
c4a3c0aac1 Merge pull request #5128 from fosterseth/fix-5081-towerbaseurl400
Fix URLField to allow numbers in top level domain

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-28 21:09:26 +00:00
Ryan Petrello
4d0c567d73 Merge pull request #3911 from jbradberry/truncate-fix
Add the no_truncate parameter to the job and adhoc event sublist views
2019-10-28 16:08:29 -04:00
softwarefactory-project-zuul[bot]
365f897059 Merge pull request #5103 from mabashian/proj-notifs
Hook up notifications tab on projects

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-28 19:38:15 +00:00
mabashian
7b1158ee8e Fix failing unit tests due to missing scm_revision key 2019-10-28 15:31:03 -04:00
mabashian
d8814b7162 Add displayName so that ActionButtonCell can be referenced in tests 2019-10-28 15:11:58 -04:00
mabashian
9af3fa557b Fix merge conflict fallout. Remove stale edit click handler. 2019-10-28 15:11:58 -04:00
mabashian
e0d8d35090 Adds edit buttons to Templates, Inventories, Organizations, and Projects list items when the user has edit capabilities. 2019-10-28 15:04:02 -04:00
Seth Foster
7e83ddc968 Fix URLField to allow numbers in top level domain
Add a custom regex to URLField that allows numbers to be present in the
top level domain, e.g. https://towerhost.org42

Set by variable allow_numbers_in_top_level_domain in URLField __init__,
and is set to True by default. If set to False, it will use the regex
specified in the built-in django URLValidator class.

This solution was originally implemented in LDAPServerURIField, but is
now implemented in URLField to support this behavior more generally. The
changes in LDAPServerURIField are longer needed and have been removed in
this commit.

Adds unit testing to make sure URLField changes handle regex input
and settings correctly.
2019-10-28 13:47:01 -04:00
Jeff Bradberry
b48815d2bb Add the no_truncate parameter to the job and adhoc event sublist views
which are the ones that the CLI actually uses.
2019-10-28 12:51:14 -04:00
Jake McDermott
ad383cdb44 Merge pull request #3909 from jakemcdermott/fix-3578-comment
Improve code comment regarding handling of omitted events
2019-10-28 11:52:11 -04:00
softwarefactory-project-zuul[bot]
bbbacd62ae Merge pull request #5125 from gmarsay/bugfix-slack-notification
Bugfix - Slack notification with name and avatar

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-28 15:37:39 +00:00
Jake McDermott
91afa88b44 Improve accuracy of code comment 2019-10-28 11:28:57 -04:00
softwarefactory-project-zuul[bot]
a6fd3d0c09 Merge pull request #5115 from AlanCoding/string_explosion
Fix bug: WFJT-type node YAML vars broke task manager

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-28 15:15:06 +00:00
Ryan Petrello
b575fa4243 Merge pull request #3898 from ryanpetrello/k8s-messy-client
attempt to clean up cacert trash the k8s python client leaves behind
2019-10-28 11:09:24 -04:00
softwarefactory-project-zuul[bot]
edf0d4bf85 Merge pull request #5120 from AlanCoding/var_lib
Move development PROJECTS_ROOT

Reviewed-by: Matthew Jones <mat@matburt.net>
             https://github.com/matburt
2019-10-28 15:08:00 +00:00
Alan Rominger
3cab73c574 Add tests for AWX collection credential fixes (#3893) 2019-10-28 09:58:00 -04:00
Ryan Petrello
b3af64d66f work around a bug in the k8s client that leaves trash in /tmp 2019-10-28 09:43:32 -04:00
Jake McDermott
1869b73826 Merge pull request #3906 from jakemcdermott/fix-5110
Fix job / skip tags not getting used on launch prompt
2019-10-28 09:15:08 -04:00
softwarefactory-project-zuul[bot]
5ab09686c9 Merge pull request #5043 from EStork09/devel
Added custom_venv_dir to local docker install,

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-27 23:42:35 +00:00
softwarefactory-project-zuul[bot]
4ed4d85b91 Merge pull request #5123 from r-daneel/devel
Add quote filter to shell variables

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-27 15:35:47 +00:00
Ryan Petrello
cc47afa856 Merge pull request #3904 from rebeccahhh/release_3.6.0
pinning pytest-mock to version 1.11.1
2019-10-27 10:33:32 -04:00
softwarefactory-project-zuul[bot]
e066b688fc Merge pull request #5117 from ryanpetrello/runner-1-4-4
pin to runner==1.4.4

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-27 14:03:25 +00:00
Ryan Petrello
15111dd24a pin to runner==1.4.4 2019-10-27 09:17:10 -04:00
Jake McDermott
841975d72b Scrape tag input state from dom and put it in vm
The tag input state lives somewhere in the associated select2 widgetry
and isn't directly tied to the vm like it is for the other inputs.
2019-10-26 20:02:41 -04:00
Guillaume Marsay
31a96d20ab Update slack_backend.py 2019-10-26 22:07:31 +02:00
softwarefactory-project-zuul[bot]
9a70ac88c0 Merge pull request #5075 from AlexSCorey/credentialsLookUp
Credentials look up

Reviewed-by: Alex Corey <Alex.swansboro@gmail.com>
             https://github.com/AlexSCorey
2019-10-25 20:51:13 +00:00
Ahmed RAHAL
2ec5dda1d8 Add quotes to shell variables with user input
The last update of this file added default values for passwords
but removed the 'quote' filter.
This is extremely problematic for database passwords that should always
be complex and contain special characters that the shell may interpret
wrongly.
As a sanity measure, adding the quote filter to all fields.
2019-10-25 16:44:59 -04:00
Alex Corey
dab80fb842 Adds Proptypes 2019-10-25 16:16:04 -04:00
AlanCoding
a6404bdd0d Move development PROJECTS_ROOT 2019-10-25 15:48:07 -04:00
softwarefactory-project-zuul[bot]
ee5199f77a Merge pull request #5090 from lopf/5089-fix-psql-user-specification
Fix psql: local user with ID 1001 does not exist

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-25 19:32:13 +00:00
Alex Corey
7f409c6487 Moves JT CredentialsList Manipulation Back to CredentialsLookup
Rename CredentialsLookup to MultiCredentialLookup
Removes unnecessary functions in Lookup.
Puts CredentialsList manipulation on CredsLookup and removes that work from JTForm.
Upates tests for CredentialsLookup and JTForm to reflect changes above.
2019-10-25 15:13:11 -04:00
Rebeccah
678ce81487 pinning pytest-mock to version 1.11.1 2019-10-25 14:14:41 -04:00
Ryan Petrello
69e0f858bc Merge pull request #3819 from AlanCoding/collection_sanity_36
Make AWX collection "pass" sanity tests
2019-10-25 13:06:13 -04:00
Ryan Petrello
2b12e26b98 Merge pull request #3903 from ryanpetrello/runner-1-4-4
pin to runner==1.4.4
2019-10-25 12:51:53 -04:00
Ryan Petrello
634550fb0b pin to runner==1.4.4 2019-10-25 12:50:53 -04:00
softwarefactory-project-zuul[bot]
491e4c709e Merge pull request #5116 from jakemcdermott/remove-jdetails-close
Remove close button from job details

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-25 16:43:21 +00:00
softwarefactory-project-zuul[bot]
480c8516ab Merge pull request #5086 from keithjgrant/4614-fix-template-edit-border
Fix border/padding while loading jt edit form

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-25 16:31:53 +00:00
softwarefactory-project-zuul[bot]
9eda4efb74 Merge pull request #5114 from jakemcdermott/hide-revision-copy-button-sometimes
Hide revision copy button when there's no revision

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-25 16:21:14 +00:00
Jake McDermott
a517b15c26 Remove close button from job details 2019-10-25 11:59:40 -04:00
AlanCoding
609528e8a3 Fix bug: WFJT-type node YAML vars broke task manager 2019-10-25 11:41:58 -04:00
Jake McDermott
e17ee4b58f Hide revision copy button when there's no revision 2019-10-25 11:40:06 -04:00
softwarefactory-project-zuul[bot]
3dc8a10e85 Merge pull request #5104 from mabashian/4985-close-button-details
Remove close button from Project and Job Template details views

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-25 14:43:07 +00:00
Shane McDonald
dc89479b4c Merge pull request #3901 from ryanpetrello/syntax
fix a syntax error
2019-10-25 10:21:30 -04:00
softwarefactory-project-zuul[bot]
e893017e00 Merge pull request #5105 from mabashian/4956-template-details-links
Link to project and inventory from job template details

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-25 14:21:14 +00:00
Ryan Petrello
b51b1a959f fix a syntax error
whoopsie
2019-10-25 10:20:18 -04:00
softwarefactory-project-zuul[bot]
4a1c121792 Merge pull request #5084 from fosterseth/fix-4147-schedule500error
Fix 500 error when creating a job schedule

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-25 13:35:57 +00:00
Rebeccah Hunter
8de92b152c Merge pull request #3899 from rebeccahhh/release_3.6.0
fix serializer validation when instance not present
2019-10-25 09:27:03 -04:00
Rebeccah
95ab5327c3 added in check to see if the the current check has an instance or not to prevent nonetype errors 2019-10-25 09:20:44 -04:00
softwarefactory-project-zuul[bot]
d39ad9d9ce Merge pull request #5085 from mabashian/5054-revision-column
Adds revision to project list row items

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-25 13:05:17 +00:00
mabashian
07a5e17284 Link to project and inventory from job template details 2019-10-24 16:36:19 -04:00
mabashian
583d1390d2 Remove close button from Project and Job Template details views 2019-10-24 16:17:37 -04:00
mabashian
638f8eae21 Hook up notifications tab on projects 2019-10-24 15:48:12 -04:00
AlanCoding
e40f29092b Fully rely on error ignoring for sanity rel imports 2019-10-24 15:10:38 -04:00
AlanCoding
b394862210 Ignore import errors due to bugs in Ansible core 2019-10-24 14:58:55 -04:00
AlanCoding
0434c611f0 add release note 2019-10-24 14:50:45 -04:00
AlanCoding
201ae5f948 declare types in Ansible Tower module options 2019-10-24 14:50:45 -04:00
AlanCoding
9d93b78296 New target for sanity testing of the collection
Do not run in Zuul
2019-10-24 14:50:44 -04:00
Keith Grant
1d7bd835e6 remove unused imports 2019-10-24 10:29:04 -07:00
Keith Grant
4f90406e91 fix border/padding while loading jt edit form 2019-10-24 10:29:03 -07:00
Alex Corey
53b4dd5dbf Fixes linting errors 2019-10-24 12:35:30 -04:00
Alex Corey
491f4824b0 Addresses PR Issues
Improves credential ID variable in JT model.
Removes unused prop from Lookup ComponentDidMount.
Removed unused function call from Credentials ComponentDidMount.
Streamlines toggleCredential function and moves it to JobTemplateForm.  This was done because the
JobTemplateForm should handle the credential values passed to the CredentialsLookup.
Adds tests for JobTemplateForm to ensure toggleCredentialSelection function is putting proper values
in state.
Removed withRouter wrapper on CredentialsLookup export.
Improved CredentialsLookup test to ensure that onChange is called when user removes
a credential from the input.
2019-10-24 12:32:50 -04:00
Alex Corey
91721e09df Adds tests 2019-10-24 12:32:50 -04:00
Alex Corey
2828d31141 Adds CredentialLookUp to JT Form 2019-10-24 12:32:50 -04:00
Alex Corey
d10e727b3c Adds CredentialLookUp to JT Form 2019-10-24 12:32:50 -04:00
softwarefactory-project-zuul[bot]
f57cf03f4b Merge pull request #5017 from kimausloos/update-docs-openshift-scc
[docs] Update OpenShift doc section to clarify #3116

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-24 15:47:21 +00:00
Rebeccah Hunter
8669e87454 Merge pull request #3868 from rebeccahhh/release_3.6.0
Add api validation for policy rules in container groups
2019-10-24 11:29:10 -04:00
mabashian
b319f47048 Adds revision to project list row items. Adds ClipboardCopyButton component to allow the user to copy the full revision to the clipboard. 2019-10-24 09:11:05 -04:00
lopf
432daa6139 fix 5089 2019-10-24 14:44:36 +02:00
Kim Ausloos
835c26f6cb [docs] Update OpenShift doc section to clarify #3116
Signed-off-by: Kim Ausloos <kim.ausloos@cegeka.be>
2019-10-24 08:55:40 +02:00
Jim Ladd
b2557c6fd8 Rename job_summary_dict to job_metadata
* Clarifies purpose of notification template variable
2019-10-23 17:11:05 -07:00
softwarefactory-project-zuul[bot]
f1c2a95f0d Merge pull request #5053 from fosterseth/fix-4797-copycredential
Fix secret lookup links when credentials are copied

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-23 23:46:52 +00:00
Alan Rominger
8f5d25a5df Fix bug where SCM inventory did not have a collections destination (#3795)
* update inventory path to be in tmp project clone

* copy project folder for inventory scm launch type

* Optionally accept inventory collection paths from ansible.cfg
2019-10-23 19:26:10 -04:00
Rebeccah
4c199b0ab2 moved filterint out policy instance values in the api browser input box into the instanceGroupDetail class where I overrode the update_raw_data function to parse out the unneeded data. Additionally added the fix for checking the value in the serializer. 2019-10-23 17:18:21 -04:00
Rebeccah
ef7b3fec94 removed policy_instance variables from container groups default values in the API put/patch view 2019-10-23 17:15:56 -04:00
Rebeccah
93bd1e6705 Added in validation for each of the 3 fields that should not be changed if the instance is a container group, defaults in the textarea persist with these 3 options 2019-10-23 17:15:56 -04:00
Seth Foster
58e84a40e5 Fix 500 error when creating a job schedule
- 500 error occurs when a non-admin user attempts to add an invalid
  credential during schedule creation
- This change checks that the user can add the object to
  serializer.validated_data, instead of serializer.initial_data
- The invalid credential field is purged in .validated_data, so the
  request passes through cleanly
- Fix for awx issue #4147
2019-10-23 14:22:07 -04:00
Jim Ladd
b13009b9a3 Update unit tests 2019-10-23 10:57:18 -07:00
Jim Ladd
fc941eda98 Return full webhook dict when serializing notif. 2019-10-23 10:57:18 -07:00
Jim Ladd
32deca2e92 Use correct notif. bodies when sending test notifs
* Notification backends now handle body of notifications differently
* .. depending on their type (webhook, email, and pagerduty) are
  currently the only three notification types that use body
* email and pagerduty expect a string
* webhooks expects a dict in string format
2019-10-23 10:57:18 -07:00
Jim Ladd
ff1a618a93 Don't use i18n for NT body string 2019-10-23 10:57:18 -07:00
Keith Grant
0af79b729e fix lint errors 2019-10-23 10:57:18 -07:00
Keith Grant
76711febd1 Add notification custom message fields for workflow pause/approval 2019-10-23 10:57:18 -07:00
Jim Ladd
81e545b720 NotificationSerializer should gracefully handle webhook/pagerduty bodies 2019-10-23 10:57:18 -07:00
Jim Ladd
d985b1215a In awxkit, add support for wf approval notification templates 2019-10-23 10:57:18 -07:00
Jim Ladd
157bec1777 Render WF approval notifications w/ custom templates 2019-10-23 10:57:18 -07:00
Jim Ladd
1754076a56 Refactor notification backends to use CustomNotificationBase 2019-10-23 10:57:18 -07:00
Jim Ladd
d3132820a5 Render default notifications using Jinja templates 2019-10-23 10:57:18 -07:00
Jim Ladd
9f4d65891c Remove unused build_notification_message method 2019-10-23 10:57:18 -07:00
Alan Rominger
653ec0ffab RBAC relaunch 403 updates (#3835)
* RBAC relaunch 403 updates

Addresses 2 things

1. If WFJ relaunch is attempted, and relaunch is denied
  because the WFJ had encrypted survey answers,
  a generic message was shown, this changes it to show
  a specific error message

2. Org admins are banned from relaunching a job
  if the job has encrypted survey answers

* update tests to raises access pattern

* catch PermissionDenied for user_capabilities
2019-10-23 10:59:35 -04:00
Alan Rominger
28228a3b57 Disable activity stream and speed up host group bulk deletion (#3817) 2019-10-23 08:25:00 -04:00
Ryan Petrello
e2470200da Merge pull request #3881 from ansible/k8s-cleanup
improve cleanup of anonymous kubeconfig files
2019-10-22 18:12:52 -04:00
Seth Foster
9c04e08b4d Fix secret lookup links when credentials are copied
- When a credential that contains secret lookups (e.g. HashiCorp Vault
  Secret Lookup) is copied, the lookup fields are not properly copied
- This change adds the necessary fields to FIELDS_TO_PRESERVE_AT_COPY
  for both Credential and CredentialInputSource classes to ensure a
  proper copy
2019-10-22 17:49:10 -04:00
Ryan Petrello
cfd7946097 improve cleanup of anonymous kubeconfig files 2019-10-22 17:47:09 -04:00
softwarefactory-project-zuul[bot]
bda1abab8d Merge pull request #5074 from shanemcd/devel
Downstream k8s installer changes

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-22 20:34:20 +00:00
Shane McDonald
8356327c2b Downstream k8s installer changes 2019-10-22 15:57:40 -04:00
Alan Rominger
fb67b8edf9 Add support for credential_type in tower_credential module (#3820)
* Add support for credential_type

* Finish up credential_type parameter with tests

* make inputs mutually exclusive with other params

* Test credential type with dict input
2019-10-22 14:39:27 -04:00
Ryan Petrello
7af2bcc9b0 Merge pull request #3878 from ansible/fix-5062
fix a bug that breaks webhook launches when a survey is in use
2019-10-22 13:35:30 -04:00
Ryan Petrello
8e83c86d88 Merge pull request #3879 from ansible/whoopsie
fix a bug introduced upstream with settings.LOG_AGGREGATOR_AUDIT
2019-10-22 13:34:37 -04:00
Alex Corey
53cf6cf17c Instance Groups Instances List styling fixes (#3846)
* Instance Groups Instances slider renders properly, and that list wraps properly.

* Instance Groups responds properly

* assorted container groups ui fixes
updated responsiveness of instance groups and instances list
fix layout of container group form
update help text for container group form elements
update text for tech preview top bar

* update container group doclink

* list styling updates based on feedback
2019-10-22 13:31:53 -04:00
Ryan Petrello
8701f83922 fix a bug introduced upstream with settings.LOG_AGGREGATOR_AUDIT 2019-10-22 12:17:20 -04:00
softwarefactory-project-zuul[bot]
cafac2338d Merge pull request #5063 from HunterNyan/devel
Fixed bug with python check

Reviewed-by: Shane McDonald <me@shanemcd.com>
             https://github.com/shanemcd
2019-10-22 13:37:37 +00:00
Ryan Petrello
7344ee23ef fix a bug that breaks webhook launches when a survey is in use
see: https://github.com/ansible/awx/issues/5062
2019-10-22 09:08:14 -04:00
Alice Hunter
e5dfc62dce Fixed bug with python check 2019-10-22 23:06:06 +11:00
Ryan Petrello
a0bf3459eb Merge pull request #3877 from ansible/backport-external-log-fix
backport a fix to external logging aggregation
2019-10-22 07:43:35 -04:00
Martin Juhl
facec0fe76 Update handlers.py
The setFormatter tries to create the external.log file.. So we should check if LOG_AGGREGATOR_AUDIT is active here as well
2019-10-22 07:25:01 -04:00
softwarefactory-project-zuul[bot]
11edd43af3 Merge pull request #5058 from MrMEEE/patch-1
Only create /var/log/tower/external.log when LOG_AGGREGATOR_AUDIT is enabled

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-22 11:16:15 +00:00
Ryan Petrello
6fb09d73b1 Merge pull request #3801 from ansible/fix-jinja-host-name
[3.6.0] fix jinja host name
2019-10-22 06:54:01 -04:00
Martin Juhl
27d0111a27 Update handlers.py 2019-10-22 01:25:27 +02:00
Martin Juhl
58367811a0 Update handlers.py
The setFormatter tries to create the external.log file.. So we should check if LOG_AGGREGATOR_AUDIT is active here as well
2019-10-22 01:02:31 +02:00
Ryan Petrello
a3519ce1df Merge pull request #3866 from ansible/reap-k8s-jobs
reap k8s-based jobs when the dispatcher restarts
2019-10-21 17:50:59 -04:00
Ryan Petrello
812d00f490 reap k8s-based jobs when the dispatcher restarts 2019-10-21 16:32:59 -04:00
Marliana Lara
5ac2211ef4 Merge pull request #3875 from marshmalien/5048-missing-job-details
Handle undefined schedule value in job detail component
2019-10-21 16:23:19 -04:00
Marliana Lara
9c9bf0ed84 Handle undefined schedule value in job detail component 2019-10-21 16:13:52 -04:00
Graham Mainwaring
c013d656c8 Add UI toggle to disable public Galaxy (#3867) 2019-10-21 16:10:25 -04:00
softwarefactory-project-zuul[bot]
3277d3afe0 Merge pull request #5050 from ryanpetrello/release-8.0.0
Bump VERSION to 8.0.0

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-21 17:26:33 +00:00
Ryan Petrello
45136b6503 Bump VERSION to 8.0.0 2019-10-21 12:29:24 -04:00
Ryan Petrello
e9af6af97c Merge pull request #5047 from ryanpetrello/devel
merge a variety of downstream bug fixes
2019-10-21 12:27:54 -04:00
Ryan Petrello
f86d647571 Merge branch 'hardening' into devel 2019-10-21 12:09:27 -04:00
Ryan Petrello
f02357ca16 Merge pull request #3871 from mabashian/3865-add-buttons
Revert 6282b5bacb
2019-10-21 12:08:52 -04:00
mabashian
e64b087e9f Revert 6282b5bacb 2019-10-21 11:55:12 -04:00
Ryan Petrello
5bb7e69a4d Merge pull request #3864 from ansible/container-launch-error
when isolated or container jobs fail to launch, set job status to error
2019-10-21 11:18:04 -04:00
Ryan Petrello
a8aed53c10 when isolated or container jobs fail to launch, set job status to error
a status of error makes more sense, because failed generally points to
an issue with the playbook itself, while error is more generally used
for reporting issues internal to Tower

see: https://github.com/ansible/awx/issues/4909
2019-10-21 11:02:31 -04:00
Jake McDermott
b19539069c Merge pull request #3863 from jakemcdermott/fix-3578-part-3
Set omitted runner_on_start event line lengths to 0
2019-10-21 10:37:09 -04:00
Evan Stork
0c0e172caf Added custom_venv_dir to local docker install,
Signed-off-by: Evan Stork <estork@live.com>
2019-10-19 20:45:02 -04:00
Jake McDermott
312cf13777 Set omitted runner event line lengths to 0
runner_on_start events have zero-length strings for their stdout
fields. We don't want to display these in the ui so we omit them.
Although the stdout field is an empty string, it still has a recorded
line length of 1 that we must account for. Since we're not rendering
the blank line, we must also go back and set the event record's line
length to 0 in order to avoid deleting too many lines when we pop or
shift events off of the view while scrolling.
2019-10-19 19:18:45 -04:00
Jake McDermott
c6033399d0 Fix off-by-one errors 2019-10-19 18:58:42 -04:00
Ryan Petrello
85f118c17d Merge pull request #3852 from ansible/pod-reaper
implement a simple periodic pod reaper for container groups
2019-10-18 16:50:30 -04:00
softwarefactory-project-zuul[bot]
0de805ac67 Merge pull request #5035 from keithjgrant/4617-inventory-lookup-error-message
Add error messages for InventorySelect

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-18 19:46:29 +00:00
Ryan Petrello
c7426fbff4 Merge pull request #3861 from wenottingham/where-did-you-come-from
Log the remote IP for logged in users
2019-10-18 15:16:34 -04:00
softwarefactory-project-zuul[bot]
3cbd52a56e Merge pull request #5040 from keithjgrant/4976-job-list-status-icons
Add status icon to job list

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-18 19:12:14 +00:00
Jake McDermott
97a635ef49 Merge pull request #3844 from jakemcdermott/fix-3578-part-1
Always disable search when processing events
2019-10-18 15:07:41 -04:00
Keith Grant
155ed75f15 update jt Inventory field error message 2019-10-18 11:38:01 -07:00
Bill Nottingham
a664c5eabe Log the remote IP for logged in users 2019-10-18 14:28:10 -04:00
Keith Grant
8b23c6e19a add job id to jobs list 2019-10-18 10:44:39 -07:00
Keith Grant
a5d9bbb1e6 add status icon to job list 2019-10-18 10:08:59 -07:00
softwarefactory-project-zuul[bot]
c262df0dfe Merge pull request #5009 from wanderboessenkool/rabbit-healthcheck-cpu-usage
Change 'rabbitmqctl status' to a wget | grep to save CPU

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-18 16:48:39 +00:00
Jake McDermott
3f113129a9 Merge pull request #3851 from jakemcdermott/fix-3578-part-2
Get the last two pages of events on page load
2019-10-18 12:46:19 -04:00
Keith Grant
df7e034b96 fix blur behavior/error messages in JT form 2019-10-18 08:40:48 -07:00
Ryan Petrello
bd8b3a4f74 Merge pull request #3856 from ansible/revert-3842-callback-receiver-status
Revert "add support for `awx-manage run_callback_receiver --status`"
2019-10-18 10:10:58 -04:00
Ryan Petrello
d01088d33e Revert "add support for awx-manage run_callback_receiver --status" 2019-10-18 09:49:02 -04:00
Ryan Petrello
0012602b30 Merge pull request #3853 from ansible/fix-upgrades
properly migrate the CyberArk AIM type to its new name
2019-10-18 07:55:20 -04:00
Wander Boessenkool
8ecc1f37f0 Move python healthcheck script from probes to configMap 2019-10-18 10:15:21 +02:00
Ryan Petrello
0ab44e70f9 properly migrate the CyberArk AIM type to its new name 2019-10-17 22:40:33 -04:00
Jake McDermott
95c9e8e068 Always disable search when processing events
When jobs are still processing events, the UI uses numerical ranges
based on job_event.counter instead of page numbers. We can't apply
search filters in this state because then there would be no way to
distinguish between events that are missing due to being filtered out
by search and events that are missing because they're still being
processed.

The UI must be able to distinguish between the two types of missing
events because their absence is presented differently. Events that are
filtered out by a search query have no visual representation, while
events that are missing due to event processing or other causes are
displayed as clickable "..." segments.
2019-10-17 18:37:33 -04:00
Wander Boessenkool
c49e64e62c Make HTTPConnection import python 2,3 agnostic 2019-10-17 23:36:33 +02:00
Wander Boessenkool
00c9d756e8 Move installtime hardcoded rabbitmq credentials to environment variables for healthcheck 2019-10-17 23:23:29 +02:00
Ryan Petrello
16812542f8 implement a simple periodic pod reaper for container groups
see: https://github.com/ansible/awx/issues/4911
2019-10-17 17:06:36 -04:00
Ryan Petrello
0bcd1db239 Merge pull request #3850 from ansible/container-groups-cleanup-adhoc
clean up pods for all k8s execution, not just playbook runs
2019-10-17 16:53:23 -04:00
Bill Nottingham
9edbcdc7b0 Merge pull request #3848 from wenottingham/have-never-read-or-watched-the-help
Adjust description/help text for profiling features.
2019-10-17 16:48:12 -04:00
Wander Boessenkool
9ab58e9757 Change healthcheck from wget and grep to python with httplib 2019-10-17 22:25:20 +02:00
Jake McDermott
1fae3534a1 Get the last two pages of events on page load
When the page loads, we want to retrieve and initially display enough
content for the scrollbar to show. If the very last page doesn't
have enough content for the scrollbar to show, the user won't be able
to scroll up to see more job history. To avoid this scenario, we always
fetch the last _two_ pages when loading the view.
2019-10-17 16:19:19 -04:00
Graham Mainwaring
a038f9fd78 Merge pull request #3845 from ghjm/gather_analytics_dry_run
Add a --dry-run option to gather analytics locally, even if analytics is disabled in settings.
2019-10-17 16:17:18 -04:00
Ryan Petrello
ff1e1b2010 Merge pull request #3849 from ansible/k8s-native-execution-node
properly set execution_node for project and inv updates run "in k8s"
2019-10-17 16:06:16 -04:00
Wander Boessenkool
d6134fb194 Change /bin/ash to /bin/sh as requested by @shanecmd 2019-10-17 21:37:51 +02:00
Ryan Petrello
570ffad52b clean up pods for all k8s execution, not just playbook runs
see: https://github.com/ansible/awx/issues/4908
2019-10-17 15:29:44 -04:00
Ryan Petrello
1cf02e1e17 properly set execution_node for project and inv updates run "in k8s"
see: https://github.com/ansible/awx/issues/4907
2019-10-17 15:15:24 -04:00
Bill Nottingham
2f350cfda7 Adjust description/help text for profiling features.
Note that data is merely for sosreport collection for now, and
warn against increasing collection frequency.
2019-10-17 15:04:21 -04:00
Keith Grant
8e2622d117 add error messages for InventorySelect 2019-10-17 10:55:37 -07:00
Graham Mainwaring
7dd241fcff Add a --dry-run option to gather analytics locally, even if analytics is disabled in settings. 2019-10-17 13:54:13 -04:00
Ryan Petrello
c6a28756f2 Merge pull request #3841 from ansible/fix-5028
fix a 500 error when creating/editing notification templates
2019-10-17 12:06:36 -04:00
Ryan Petrello
94eb1aacb8 Merge pull request #3842 from ansible/callback-receiver-status
add support for `awx-manage run_callback_receiver --status`
2019-10-17 11:46:27 -04:00
Ryan Petrello
ffb1707e74 add support for awx-manage run_callback_receiver --status 2019-10-17 11:10:27 -04:00
Ryan Petrello
5e797a5ad5 Merge pull request #3840 from ansible/fix-5029
fix a minor bug in the notification templates UI
2019-10-17 10:33:34 -04:00
Ryan Petrello
4c92e0af77 fix a 500 error when creating/editing notification templates
see: https://github.com/ansible/awx/issues/5028
2019-10-17 08:53:01 -04:00
Ryan Petrello
24b9a6a38d fix a minor bug in the notification templates UI
see: https://github.com/ansible/awx/issues/5029
2019-10-17 08:43:04 -04:00
softwarefactory-project-zuul[bot]
857683e548 Merge pull request #4917 from jakemcdermott/ui-next-ci
Tune webpack config and add Dockerfile

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-16 22:29:58 +00:00
softwarefactory-project-zuul[bot]
4bf96362cc Merge pull request #5018 from ryanpetrello/cli-deprecation-warnings
warn about endpoint deprecation in the CLI

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-16 20:37:29 +00:00
Ryan Petrello
5001d3158d Merge pull request #3837 from ansible/rename-cyberark-aim
rename the CyberArk AIM credential type
2019-10-16 16:12:58 -04:00
Ryan Petrello
ce5bb9197e rename the CyberArk AIM credential type
see: https://github.com/ansible/awx/issues/4400
2019-10-16 15:58:35 -04:00
Ryan Petrello
309e89e0f0 Merge pull request #3813 from matburt/fix_smart_inventory_impact
Change host counting for task impact
2019-10-16 15:56:50 -04:00
Ryan Petrello
e27dbfcc0b Merge pull request #3836 from wenottingham/eeeeeeeeEEEEEEEEEEEEEEEEeeeeeeeeeenum
Remove removal requirement that isn't actually in the requirements
2019-10-16 15:35:31 -04:00
Bill Nottingham
7df448a348 Remove removal requirement that isn't actually in the requirements 2019-10-16 15:34:33 -04:00
Bill Nottingham
e220e9d8d7 Merge pull request #3834 from wenottingham/seriously-cut-it-out-google
Blacklist rsa even more.
2019-10-16 15:30:01 -04:00
Ryan Petrello
c8a29bac66 warn about endpoint deprecation in the CLI 2019-10-16 15:26:59 -04:00
Bill Nottingham
11d39bd8cc Blacklist rsa even more. 2019-10-16 15:17:19 -04:00
softwarefactory-project-zuul[bot]
1376b8a149 Merge pull request #5020 from ryanpetrello/devel
merge a variety of downstream bug fixes

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-16 18:13:02 +00:00
Ryan Petrello
750208b2da Merge pull request #3831 from rooftopcellist/use_system_ca_for_collection
Make Analytics collections verify with system trusted CA
2019-10-16 13:55:07 -04:00
Christian Adams
9d81b00772 have analytics collections verify with system trusted CA list 2019-10-16 13:32:06 -04:00
Ryan Petrello
c7be94c2f2 Merge branch 'hardening' into devel 2019-10-16 13:15:20 -04:00
Ryan Petrello
1adf5ee51d Merge pull request #3805 from beeankha/cli_approval_notification_support
Enable Approval Notification Support for CLI
2019-10-16 13:09:22 -04:00
Ryan Petrello
da998fb196 Merge pull request #3828 from AlanCoding/deprecate_script
API deprecation of inventory script views
2019-10-16 11:27:41 -04:00
Ryan Petrello
b559860c78 Merge pull request #3804 from jbradberry/cli-no-truncate
Do not truncate job event list stdout when called from the CLI
2019-10-16 10:36:29 -04:00
Ryan Petrello
a31e2bdac1 Merge pull request #3829 from ansible/tz-fix
fix a tz parsing bug
2019-10-16 10:31:44 -04:00
beeankha
62e4ebb85d Minor change to README, plus a rebase. 2019-10-16 09:50:00 -04:00
beeankha
aa4f5ccca9 Add blank line (flake8) 2019-10-16 09:50:00 -04:00
beeankha
fdddba18be Update code to be compatible with py2 2019-10-16 09:50:00 -04:00
beeankha
ad89c5eea7 Enable approval notification support for CLI 2019-10-16 09:50:00 -04:00
Jake McDermott
e15bb4de44 Merge pull request #3827 from jakemcdermott/fix_flake8_error
Fix flake8 error
2019-10-16 09:47:57 -04:00
Ryan Petrello
5f2e1c9705 fix a tz parsing bug 2019-10-16 09:46:18 -04:00
Jake McDermott
8c5b0cbd57 Merge pull request #3815 from jakemcdermott/fix-3790
Allow navigation to previous launch prompt tabs
2019-10-16 09:36:54 -04:00
Jake McDermott
73272e338b Merge pull request #3809 from AlexSCorey/4944-4943-TOCBugs
Sys Aud can see CG forms, Adds correct CG form link, Disables CodeMirror
2019-10-16 09:35:02 -04:00
AlanCoding
86ef81cebf API deprecation of inventory script views 2019-10-16 09:34:21 -04:00
Jake McDermott
cd18ec408c Remove unused variable 2019-10-16 09:30:43 -04:00
Ryan Petrello
90c5efa336 Merge pull request #3824 from AlanCoding/one_less_redirect
Avoid unnecessary OPTIONS redirect
2019-10-16 09:17:03 -04:00
Alex Corey
4134d0b516 Updates PR and Addresses Console Error
THis commit imroves conditional rendering of the container groups form for
System Auditors.  It also removes a ng-class condition in the IG list that was unused.
2019-10-16 09:15:44 -04:00
AlanCoding
2123092bdc Avoid unnecessary OPTIONS redirect 2019-10-16 09:08:22 -04:00
softwarefactory-project-zuul[bot]
ba7b53b38e Merge pull request #4992 from keithjgrant/4817-react-router-upgrade
4817 react router upgrade

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-15 20:29:16 +00:00
Keith Grant
cac5417916 delete commented code 2019-10-15 12:56:39 -07:00
Keith Grant
b318f24490 don't skip JobDetail test now that async act works 2019-10-15 12:55:26 -07:00
Bill Nottingham
c2743d8678 Merge pull request #3802 from wenottingham/oh-noes-not-again
Check the user's ansible.cfg for role/collection paths.
2019-10-15 14:21:18 -04:00
Bill Nottingham
60ca843b71 Use logger.exception instead of logger.warning. 2019-10-15 14:20:09 -04:00
Keith Grant
766f863655 update ProjectDetails tests with memoryHistory 2019-10-15 11:11:44 -07:00
Seth Foster
e85fe6a3b7 Merge pull request #3807 from fosterseth/release_3.6.0
Allow oauth2 settings to be set in the ui and api
2019-10-15 13:40:25 -04:00
Keith Grant
0b190c2d0d fix login/logout redirect behavior 2019-10-15 10:25:40 -07:00
Keith Grant
c7d73c4583 lint fixes 2019-10-15 10:25:40 -07:00
Keith Grant
7ad2c03480 clean up 'act()' warnings in tests 2019-10-15 10:25:40 -07:00
Keith Grant
9e44fea7b5 bump react to lastest patch version 2019-10-15 10:25:40 -07:00
Keith Grant
baf5bbc53a finish updating tests for upgraded react-router 2019-10-15 10:25:40 -07:00
Keith Grant
20c24eb275 WIP upgrade react & react-router 2019-10-15 10:25:40 -07:00
Alex Corey
5cf84ddb60 Sys Aud can see CG forms, Adds correct CG form link, Disables CodeMirror
This allows the System Auditor to see the container groups form in a disabled state.
If the pod_spec_override has been changed that field will be open when the page renders
but it will be disabled. It also greys out all code mirror text area fields for System Auditor.
It adds the correct url for the Container Groups message bar to inform users of possible
pitfalls associated with that feature.
2019-10-15 10:47:04 -04:00
Jake McDermott
85781d0bc1 Allow navigation to previous launch prompt tabs 2019-10-14 17:07:50 -04:00
softwarefactory-project-zuul[bot]
cbed525547 Merge pull request #4965 from marshmalien/project-detail
Add project detail and unit tests

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-14 18:30:30 +00:00
Michael Abashian
31c14b005c Merge pull request #3816 from ansible/4945-wfjt-responsivity-styles
Fix workflow results detail panel responsive style
2019-10-14 14:28:38 -04:00
Michael Abashian
7574541037 Merge pull request #3814 from ansible/4846-wfjt-notifications-placeholder
Style empty list placeholder text inline
2019-10-14 14:28:03 -04:00
Marliana Lara
e5184e0ed1 Fix workflow results detail panel responsive style 2019-10-14 13:50:59 -04:00
Marliana Lara
6282b5bacb Style empty list placeholder text inline 2019-10-14 13:11:31 -04:00
Wander Boessenkool
038fd9271d Properly escape quotes 2019-10-14 17:53:28 +02:00
Seth Foster
8e26e4edd5 Allow oauth2 settings to be set in the ui and api
Oauth2 settings were initialized early in the awx import stage, and
those settings were not modifiable. This change allows oauth2 to check
for settings in django.conf settings, which are dynamically updated
through api calls at runtime. As a result, oauth2 settings will match
the values in django.conf settings at any point in time.
2019-10-14 11:38:20 -04:00
softwarefactory-project-zuul[bot]
027e79b7f5 Merge pull request #5006 from keithjgrant/4550-searchbar-no-results
Retain search bar when zero results found

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-14 15:31:55 +00:00
Jeff Bradberry
cf89108edf Force the CLI to use no_truncate for the monitor calls 2019-10-14 11:21:11 -04:00
Matthew
e06bf9f87e Change host counting for task impact
Go through the job -> inventory module linkage to calculate the hosts for a more accurate view
of the number of hosts that could be impacted. This also creates a bailout that will set count
hosts to the forks rather than assuming some crazy low number in the case where we can't determine
the actual number of hosts because we are missing the inventory
2019-10-14 10:41:21 -04:00
Wander Boessenkool
e87055095c Change 'rabbitmqctl status' to a wget | grep
- This reduces CPU usage from 250 millis on idle to 25 millis on idle
- Default rabbitmq user needs administrator privileges
2019-10-14 14:53:53 +02:00
Jeff Bradberry
e672e68a02 Allow the job event list views to take a no_truncate GET param 2019-10-11 17:18:36 -04:00
Graham Mainwaring
263c44a09b Merge pull request #3808 from ghjm/workflow_approved_by
Add approved_by field to workflow approvals
2019-10-11 17:00:54 -04:00
Graham Mainwaring
08839e1381 Add approved_by field to workflow approvals 2019-10-11 16:57:13 -04:00
Keith Grant
faffbc3e65 retain search bar when zero results found 2019-10-11 12:11:41 -07:00
Alan Rominger
8e296bbf8c Merge pull request #3796 from AlanCoding/inventory_fq_36
use fully qualified inventory plugin name
2019-10-11 06:56:13 -04:00
Khaled Elkhawaga
e38ed6574c update comments for kubernetes ingress
Signed-off-by: Khaled Elkhawaga <k.elkhawaga@gmail.com>
2019-10-11 01:51:38 +02:00
Khaled Elkhawaga
267e297eca add variable to set tls secret for kubernetes ingress
Signed-off-by: Khaled Elkhawaga <k.elkhawaga@gmail.com>
2019-10-11 00:52:24 +02:00
Jake McDermott
03d59e1616 Tune webpack config and add Dockerfile
Add Dockerfile for running containerized dev server. Update webpack
config to make dev server available over exposed docker port.
2019-10-10 17:37:27 -04:00
Jeff Bradberry
9efa7b84df Depend on a serializer context variable no_truncate
to decide whether to turn off the ANSI control sequence-aware
truncation, instead of needing inappropriate awareness of the details
of the view that invoked the serializer.  This will also allow us to
have views that can more flexibly turn off the truncation under other
circumstances.
2019-10-10 16:08:17 -04:00
Ryan Petrello
8e1f7695b1 Merge pull request #3803 from ansible/back-to-pending
Prevent pods from failing if the reason is because of a resource quota
2019-10-10 16:08:08 -04:00
Ryan Petrello
d6adab576f Merge pull request #3800 from ansible/update-vmware-inv-script
update to latest vmware_inventory.py
2019-10-10 16:07:31 -04:00
Jeff Bradberry
a803cedd7c Break out a new reusable truncate_stdout utility function 2019-10-10 16:07:08 -04:00
Ryan Petrello
d5bdf554f1 fix a programming error when k8s pods fail to launch 2019-10-10 15:54:00 -04:00
Shane McDonald
8f75382b81 Implement retry logic for container group pod launches 2019-10-10 15:53:56 -04:00
Shane McDonald
b93164e1ed Prevent pods from failing if the reason is because of a resource quota
Signed-off-by: Shane McDonald <me@shanemcd.com>
2019-10-10 15:53:50 -04:00
Bill Nottingham
31bdde00c9 Check the user's ansible.cfg for role/collection paths.
There's no other way to add our new paths reliably without breaking things.
2019-10-10 15:09:26 -04:00
Ryan Petrello
a733a59b8d prevent the creation of Host names that contain Jinja 2019-10-10 14:46:03 -04:00
Ryan Petrello
ed52e8348b Merge pull request #3799 from ansible/log-audit-note
add a note about settings.LOG_AGGREGATOR_AUDIT usage
2019-10-10 11:32:34 -04:00
Ryan Petrello
008fe42b4d update to latest vmware_inventory.py
06c7b87613/contrib/inventory/vmware_inventory.py
2019-10-10 10:49:15 -04:00
Ryan Petrello
d9dbbe6748 add a note about settings.LOG_AGGREGATOR_AUDIT usage
see: https://github.com/ansible/awx/pull/4872#issuecomment-540133448
2019-10-10 10:44:23 -04:00
AlanCoding
16ebfe3a63 use fully qualified inventory plugin name 2019-10-10 08:51:18 -04:00
softwarefactory-project-zuul[bot]
08df2cad68 Merge pull request #4974 from jakemcdermott/switch-default-job-panel
Switch default job panel to output

Reviewed-by: Jake McDermott <yo@jakemcdermott.me>
             https://github.com/jakemcdermott
2019-10-10 04:24:04 +00:00
softwarefactory-project-zuul[bot]
ca039f5338 Merge pull request #4957 from jakemcdermott/webhooks-labels
Use consistent wording for JT options

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-10 02:44:16 +00:00
Marliana Lara
4b83bda306 Wrap phrase for translation and update test 2019-10-09 22:24:50 -04:00
Marliana Lara
7fc4e8d20a Add project detail and unit tests 2019-10-09 22:24:49 -04:00
softwarefactory-project-zuul[bot]
4c697ae477 Merge pull request #4905 from rooftopcellist/collection_frequency
Update Frequency of Collection for Automation Analytics

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-10 02:22:51 +00:00
Christian Adams
844b8a803f update frequency of collection for automation analytics 2019-10-09 21:10:48 -04:00
Ryan Petrello
7fe32ab607 Merge pull request #4868 from rebeccahhh/survey-spec-default
Sanitize newlines out of survey option inputs
2019-10-09 21:09:33 -04:00
Ryan Petrello
cc27c95187 Merge pull request #4872 from ryanpetrello/log-aggregration-auditing
add a settings flag for writing all external logs to disk
2019-10-09 21:09:19 -04:00
softwarefactory-project-zuul[bot]
9745bfbdb4 Merge pull request #4931 from austlane/devel
Requirements.txt: Upgrade bundled pyvmomi to 6.7.3

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-10 00:20:50 +00:00
Austin
d6708b2b59 Upgrade bundled pyvmomi to 6.7.3
Fixes issues with vmware_guest_facts expecting version 6.7.1 or greater (JSON support)
2019-10-09 14:45:00 -04:00
Jake McDermott
c202574ae3 Switch default job panel to output 2019-10-09 14:31:44 -04:00
Rebeccah
7efacb69aa added in parsing for multiple choice and multiselect, which either takes a string, splits it up, and then eliminates any extra newlines, or just accepts alist. Extra newlines are sanitized out.
Signed-off-by: Rebeccah <rhunter@redhat.com>
2019-10-09 13:59:32 -04:00
Ryan Petrello
a076e84a33 add a settings flag for writing all external logs to disk 2019-10-09 13:54:54 -04:00
Jake McDermott
bc6648b518 Use consistent wording for JT options 2019-10-09 13:22:40 -04:00
dgiorgio
1f76a88656 Fix postgres docker-compose, add postgresql_image var 2019-10-09 12:43:29 -04:00
softwarefactory-project-zuul[bot]
ff67d65065 Merge pull request #4932 from jakemcdermott/combine-lint-and-test
Add targets for combined lint and test

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-09 15:50:22 +00:00
softwarefactory-project-zuul[bot]
aab8495998 Merge pull request #4939 from AlanCoding/no_warning
Get rid of warning in collections install

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-09 15:19:28 +00:00
softwarefactory-project-zuul[bot]
0f1a92bd51 Merge pull request #4589 from AlanCoding/mah_galaxy
Allow use of user-specified private galaxy server with fallback

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-09 15:01:12 +00:00
softwarefactory-project-zuul[bot]
f10dc16014 Merge pull request #4921 from ryanpetrello/ryan-broke-it
fix a bug that breaks inventory update stdout when used in a workflow

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-09 14:50:52 +00:00
softwarefactory-project-zuul[bot]
bbc4ec48b9 Merge pull request #4933 from beeankha/org_notification_fix
Org-Level Notification Fix + Show URL 

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-09 14:25:43 +00:00
softwarefactory-project-zuul[bot]
fff8664219 Merge pull request #4941 from mabashian/3727-output-scroll
Removes restriction on scrolling for output fewer than 50 lines

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-09 13:46:46 +00:00
softwarefactory-project-zuul[bot]
bc8f5ad015 Merge pull request #4929 from mabashian/ui-next-inventories
Adds basic inventory list and scaffolding for inv/smart inv details and related tabs

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-09 13:46:43 +00:00
softwarefactory-project-zuul[bot]
9fade47bbf Merge pull request #4937 from Spredzy/fix_svn_project_sync
project_update: Make subversion module honor locale

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-09 13:40:26 +00:00
softwarefactory-project-zuul[bot]
5ad922a861 Merge pull request #4938 from jakemcdermott/fix-missing-iso
Use summary_fields.controller_id to tell if job is isolated

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-08 20:18:03 +00:00
mabashian
f34bd632d8 Adds unit test coverage for add button rbac on several lists 2019-10-08 16:10:55 -04:00
mabashian
d239d55d2a Failed delete string pluralization 2019-10-08 15:15:13 -04:00
mabashian
d9ad906167 Adds basic inventory list and scaffolding for inv/smart inv details+related tabs 2019-10-08 15:09:32 -04:00
AlanCoding
d40ab38745 Get rid of warning in collections install 2019-10-08 14:19:52 -04:00
mabashian
8acd4376d9 Removes restriction on scrolling for output fewer than 50 lines 2019-10-08 14:15:25 -04:00
Jake McDermott
a7a194296c Use summary_fields.controller_id to tell if job is isolated 2019-10-08 12:08:23 -04:00
Yanis Guenane
166635ac79 project_update: Make subversion module honor locale
Currently the subversion module does not honor system configured locale
as the module itself overrides them to `C`.

This commit enforces the module to honor the `LANG` locale for
deployment. Allowing project update with repo that contains UTF-8
characters.

Closes: https://github.com/ansible/awx/issues/4936
Signed-off-by: Yanis Guenane <yguenane@redhat.com>
2019-10-08 17:54:53 +02:00
AlanCoding
f10296b1b7 Revert "bump required version to 2.10"
This reverts commit e0e9c8321b.
2019-10-08 11:20:57 -04:00
AlanCoding
e0e9c8321b bump required version to 2.10 2019-10-08 11:00:57 -04:00
softwarefactory-project-zuul[bot]
52b145dbf6 Merge pull request #4930 from mabashian/4889-number-input-scroll
Prevent usage of mousewheel on spinner elements

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-08 14:25:07 +00:00
AlanCoding
0594bdf650 Add more galaxy server param validation 2019-10-07 20:03:40 -04:00
softwarefactory-project-zuul[bot]
ba9758ccc7 Merge pull request #4915 from jakemcdermott/fix-template-load-error
Gracefully handle missing template summary fields 

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-07 19:35:40 +00:00
beeankha
02b13fd4ae Enable notifications to send at org level, ...
... and list the URL in body of approval notification messages.
2019-10-07 15:34:09 -04:00
AlanCoding
06c62c4861 update docs for galaxy auth URL material 2019-10-07 14:52:10 -04:00
Jake McDermott
132555485c Add targets for combined lint and test
Reduce the total number of simultaneous zuul jobs.
2019-10-07 14:49:18 -04:00
softwarefactory-project-zuul[bot]
f1a9e68985 Merge pull request #4928 from saito-hideki/issue/4749
Fixed missing user-id in URL links when adding users to Team and Org …

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-07 18:32:19 +00:00
AlanCoding
c09039e963 Add setting for auth_url
Also adjust public galaxy URL setting to
allow using only the primary Galaxy server

Include auth_url in token exclusivity validation
2019-10-07 14:02:43 -04:00
AlanCoding
85c99cc38a Redact env vars for Galaxy token or password 2019-10-07 14:02:43 -04:00
AlanCoding
576ff1007e Describe usage of primary galaxy server in docs 2019-10-07 14:02:43 -04:00
AlanCoding
922e779a86 Rename private to primary in galaxy settings
use a setting for the public galaxy URL
2019-10-07 14:02:43 -04:00
AlanCoding
8bda048e6d validate galaxy server settings
involves some changes to the redact code
2019-10-07 14:02:42 -04:00
AlanCoding
093bf6877b Finish adding settings to UI 2019-10-07 14:02:42 -04:00
AlanCoding
d59d8562db Avoid redacting Galaxy URLs 2019-10-07 14:02:42 -04:00
AlanCoding
c566c332f9 Initial env var implementation of private galaxy server 2019-10-07 14:02:42 -04:00
mabashian
cb4a3a799e Prevent usage of mousewheel on spinner elements 2019-10-07 11:28:51 -04:00
softwarefactory-project-zuul[bot]
5a5b46aea0 Merge pull request #4903 from jakemcdermott/add-output-for-all-job-types
Make job output panel work with all job types

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-07 15:17:53 +00:00
Jake McDermott
85909c4264 Gracefully handle missing summary fields
Not all templates have `modified_by`, `created_by` fields or
other summary_fields. Avoid page load error by only referencing these
fields if they exist.
2019-10-07 10:57:56 -04:00
softwarefactory-project-zuul[bot]
9d2c877143 Merge pull request #4913 from jakemcdermott/list-item-date-formatting
Add basic date formatter

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-07 14:27:39 +00:00
Hideki Saito
8e94c0686a Fixed missing user-id in URL links when adding users to Team and Org in modal
- Fixed issue #4749

Signed-off-by: Hideki Saito <saito@fgrep.org>
2019-10-07 09:47:29 +00:00
softwarefactory-project-zuul[bot]
52447f59c1 Merge pull request #4924 from ryanpetrello/runner-1-4-2
pin to runner==1.4.2

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-05 18:55:36 +00:00
Ryan Petrello
04eed02428 pin to runner==1.4.2 2019-10-04 17:11:34 -04:00
Ryan Petrello
b45b9333e1 Merge pull request #4716 from jladdjr/perf_stats
Enable collection of performance stats
2019-10-04 17:09:30 -04:00
softwarefactory-project-zuul[bot]
62659aefc2 Merge pull request #4189 from shanemcd/toc
Container Groups

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-04 20:19:12 +00:00
softwarefactory-project-zuul[bot]
a52ccd1086 Merge pull request #4859 from mabashian/ui-next-projects
Add projects list and scaffolding for project details+tabs

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-04 19:54:15 +00:00
Jim Ladd
bd9a196ef9 bump ansible-runner to 1.4.1 2019-10-04 12:48:29 -07:00
Ryan Petrello
64b04e6347 bump ansible-runner to 1.4.0 2019-10-04 12:48:29 -07:00
Jim Ladd
15e70d2173 Add tests for resource profiling 2019-10-04 12:48:29 -07:00
Keith Grant
b981f3eed6 add resource profiling toggle in jobs settings 2019-10-04 12:48:29 -07:00
Jim Ladd
2c1c2f452d Add libcgroup-tools to dev env (provides cgcreate, cgexec, etc) 2019-10-04 12:48:29 -07:00
Jim Ladd
cf1c9a0559 Add awx settings for resource profiling 2019-10-04 12:48:29 -07:00
Jim Ladd
ed3f49a69d Add support for calling runner with perf stats 2019-10-04 12:48:29 -07:00
Alex Corey
74b398f920 Add Tech Preview notice to Container Group UI
and some refactoring
2019-10-04 15:17:57 -04:00
Ryan Petrello
ae0c9ead40 fix a bug that breaks inventory update stdout when used in a workflow
see: https://github.com/ansible/awx/issues/4920
related: https://github.com/ansible/awx/pull/4731
2019-10-04 15:17:39 -04:00
mabashian
d6a0f929a8 Fix merge conflict fallout 2019-10-04 15:10:02 -04:00
softwarefactory-project-zuul[bot]
f5358f748e Merge pull request #4919 from ryanpetrello/jupyter-minus-minus
remove jupyter from supervisor in the dev env

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-04 19:07:47 +00:00
mabashian
c9e889ca82 Removes residual references to org from project list components. Assign IDs to project and jt related tabs after array has been finalized. 2019-10-04 15:06:06 -04:00
mabashian
f502fbfad6 Put project related tabs in the correct order 2019-10-04 15:06:06 -04:00
mabashian
b8fe3f648e Add projects list and scaffolding for project details+tabs 2019-10-04 15:06:06 -04:00
softwarefactory-project-zuul[bot]
8d3ecf708b Merge pull request #4856 from AlexSCorey/4247-ResponsveTemplateList
Makes template list Responsive

Reviewed-by: Alex Corey <Alex.swansboro@gmail.com>
             https://github.com/AlexSCorey
2019-10-04 18:50:24 +00:00
Alex Corey
9289ade1ec IG List responsiveness 2019-10-04 13:21:28 -04:00
Alex Corey
958c8a4177 Fixes Credential Type Issue, ExtraVars Toggle Issue, Job Results Inert Link 2019-10-04 13:21:28 -04:00
Shane McDonald
59413e0a8f Change default pod spec in OPTIONS request to json 2019-10-04 13:21:28 -04:00
Mat Wilson
ad1e7c46c3 add k8s cred type to awxkit 2019-10-04 13:21:28 -04:00
Alex Corey
8fabb1f10d Show override toggle as off when pod_spec matches default 2019-10-04 13:21:28 -04:00
Alex Corey
895c71f62c removes instances tab from CGs 2019-10-04 13:21:27 -04:00
Alex Corey
32a57e9a97 add default pod spec to edit 2019-10-04 13:21:27 -04:00
Alex Corey
584777e21e Adds Tabs to CGs 2019-10-04 13:21:27 -04:00
Jake McDermott
61a756c59d add is_containerized to ig serializer 2019-10-04 13:21:27 -04:00
Jake McDermott
b547a8c3ca link to container group from job runs 2019-10-04 13:21:27 -04:00
Alex Corey
007f33c186 Add Container Group Form Render and cred type modal pops up
modal render proper cred

WIP

modal rendering properly

card for edit CG renders, no fields

add code mirror and some list styling

address PR issues
2019-10-04 13:21:27 -04:00
Shane McDonald
aab1cd68b0 Fix InstanceGroup summary fields 2019-10-04 13:21:24 -04:00
Shane McDonald
92cc9a9213 Create separate Make target for cleaning API-related artifacts
My workflow for running tests is now:

```
$ docker exec -ti tools_awx_1 make clean-api awx-link test
```
2019-10-04 13:21:23 -04:00
Shane McDonald
b9c675e3a2 API documentation for container groups 2019-10-04 13:21:23 -04:00
Shane McDonald
bd5003ca98 Task manager / scheduler Kubernetes integration 2019-10-04 13:21:21 -04:00
Jake McDermott
d3b0edf75a Apply date formatter to lists and details 2019-10-04 13:17:15 -04:00
Jake McDermott
9421781cc7 Add basic date formatter 2019-10-04 13:16:42 -04:00
Shane McDonald
a9059edc65 Allow associating a credential with an instance group 2019-10-04 12:54:31 -04:00
Shane McDonald
7850e3a835 Ignore unison and emacs temporary files 2019-10-04 12:54:31 -04:00
Ryan Petrello
34d02011db remove jupyter from supervisor in the dev env
if you use this tool, just run `make jupyter`
2019-10-04 11:53:26 -04:00
softwarefactory-project-zuul[bot]
353692a0ba Merge pull request #4896 from mabashian/ui_next-notifs
Refactor notifications list and add it to JT details

Reviewed-by: Michael Abashian
             https://github.com/mabashian
2019-10-04 14:50:35 +00:00
mabashian
90451e551d Add notifications to the breadcrumb config for templates 2019-10-04 09:48:38 -04:00
mabashian
2457926f0a Refactor notifications list to be more generic. Hook notifictions tab up on JT details. 2019-10-04 09:48:38 -04:00
softwarefactory-project-zuul[bot]
cf27ac295a Merge pull request #4893 from wenottingham/we-will-not-present-you-for-confirmation
Remove text about confirming launch-time passwords.

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-04 10:40:56 +00:00
Jim Ladd
7e40673dd0 Add docs for perf data collection 2019-10-03 23:54:00 -07:00
softwarefactory-project-zuul[bot]
daa6f35d02 Merge pull request #4914 from jladdjr/increase_instance_version_length
Increase instance version length

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-04 05:37:40 +00:00
Jim Ladd
cdcf2fa4c2 Increase instance version length 2019-10-03 21:24:07 -04:00
Jake McDermott
275765b8fc Refactor language utility
Move the language helper out of RootProvider and into a utilities
module so that it can be more easiliy reused where needed. In some
cases we want the full language code so that logic has been moved
into a separate function.
2019-10-03 20:26:47 -04:00
softwarefactory-project-zuul[bot]
2786395808 Merge pull request #4436 from jbradberry/webhook-receivers
Webhook receivers

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-03 22:23:22 +00:00
Jake McDermott
731982c736 Build correct job_event url for different job types 2019-10-03 16:27:02 -04:00
softwarefactory-project-zuul[bot]
d2214acd6d Merge pull request #4895 from rooftopcellist/rm_cruft
Remove unneeded debug statement

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-03 20:07:44 +00:00
Bill Nottingham
9d593f0715 Remove text about confirming launch-time passwords.
We haven't done confirmation on these for a long time.
2019-10-03 15:22:15 -04:00
softwarefactory-project-zuul[bot]
9e778b24c7 Merge pull request #4890 from rooftopcellist/refresh_expiry
Add RefreshToken Expiration setting in UI

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-03 19:13:58 +00:00
softwarefactory-project-zuul[bot]
bdd28bcb3b Merge pull request #4899 from ryanpetrello/cli-improved-name-lookups
attempt to properly map more foreign keys to named lookups

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-03 18:52:57 +00:00
Christian Adams
19a6c70858 remove cruft leftover from the postgresql upgrade 2019-10-03 14:43:56 -04:00
softwarefactory-project-zuul[bot]
393474f33d Merge pull request #4701 from AlanCoding/awx_modules_merge
Migrate Ansible tower modules to collection maintained alongside AWX

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-03 18:25:55 +00:00
softwarefactory-project-zuul[bot]
b41e6394c5 Merge pull request #4898 from mabashian/upgrade-handlebars-uglify
Bumps handlebars and uglify-js deps

Reviewed-by: Michael Abashian
             https://github.com/mabashian
2019-10-03 17:35:24 +00:00
Christian Adams
f36f10a702 add RefreshToken Expiration setting in UI 2019-10-03 13:13:31 -04:00
Ryan Petrello
fccd6a2286 attempt to properly map more foreign keys to named lookups
this is imperfect, but it's at least an improvement until we can come up
with a better solution

in order to really do this right, the API itself probably needs to grow
some more metadata that allows us to specify *actual* `type`s that
relate to API resources

see: https://github.com/ansible/awx/issues/4874
2019-10-03 12:59:06 -04:00
mabashian
ea2312259f Bumps handlebars and uglify-js deps 2019-10-03 12:54:56 -04:00
softwarefactory-project-zuul[bot]
0e2b7767f5 Merge pull request #4900 from mabashian/fix-snapshot
Fix broken notif list snapshot

Reviewed-by: awxbot
             https://github.com/awxbot
2019-10-03 16:52:56 +00:00
mabashian
82505cd43a Fix broken notif list snapshot 2019-10-03 12:19:50 -04:00
softwarefactory-project-zuul[bot]
5b17ce5729 Merge pull request #4886 from fosterseth/fix-4710-clearexpiredtokens
Set oauth2 refresh token expiration setting

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-03 16:19:10 +00:00
softwarefactory-project-zuul[bot]
82b313c767 Merge pull request #4871 from rooftopcellist/check_db
Add awx-manage command to check db connection

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-03 15:16:32 +00:00
softwarefactory-project-zuul[bot]
fec67a3545 Merge pull request #4888 from ryanpetrello/cli-send-receive-note
cli: add a note about send/receive

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-03 14:17:08 +00:00
softwarefactory-project-zuul[bot]
202af079eb Merge pull request #4849 from mabashian/3779-license-error
Show error body when license application fails

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-03 12:57:23 +00:00
softwarefactory-project-zuul[bot]
f78d7637a4 Merge pull request #4853 from mabashian/4778-workflow-text-overlap
Prevent text overlap on workflow nodes when an approval node is deleted

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-03 12:48:56 +00:00
softwarefactory-project-zuul[bot]
71bd257191 Merge pull request #4875 from keithjgrant/4684-jt-form-cleanup
Job Template form cleanup

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-02 22:24:57 +00:00
Keith Grant
82064eb4dc fix prop type error in LabelSelect 2019-10-02 14:17:14 -07:00
Seth Foster
bbd625f3aa update help_text to include information about REFRESH_TOKEN_EXPIRE_SECONDS 2019-10-02 17:16:01 -04:00
softwarefactory-project-zuul[bot]
3725ccb43b Merge pull request #4865 from mabashian/3607-settings
Fix settings page rendering when some fields are set manually in file

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-02 19:43:18 +00:00
Seth Foster
8b22c86b10 Register default settings for OAUTH2_PROVIDER app
Grab AUTHORIZATION_CODE_EXPIRE_SECONDS from oauth2_settings
rather than hard code.

Add REFRESH_TOKEN_EXPIRE_SECONDS to valid_key_names
in OAuth2ProviderField class
2019-10-02 15:29:45 -04:00
softwarefactory-project-zuul[bot]
e6a5d18ebe Merge pull request #4885 from wenottingham/minor-typo
Apply some minor copy edits to awx docs

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-02 18:35:32 +00:00
softwarefactory-project-zuul[bot]
eca191f7f5 Merge pull request #4839 from rebeccahhh/devel
added in ability to delete a user if they are part of your organization

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-02 18:35:27 +00:00
Ryan Petrello
35fe127891 cli: add a note about send/receive 2019-10-02 14:06:56 -04:00
Seth Foster
db1ad2de95 Set REFRESH_TOKEN_EXPIRE_SECONDS
- Set OAUTH2 REFRESH_TOKEN_EXPIRE_SECONDS to 1 month
  (2628000 seconds)
- If not set, awx-manage cleartokens, or cleanup_tokens,
  will not work properly
- Once cleartokens is run, this setting is the amount of
  time after an access token expires that we keep its
  refresh token in the database
2019-10-02 13:51:46 -04:00
Bill Nottingham
ac12a9cfe1 Apply some minor copy edits 2019-10-02 13:46:10 -04:00
softwarefactory-project-zuul[bot]
dacda644ac Merge pull request #4882 from jbradberry/isolated-playbooks-with-spaces
Quote the playbook passed to runner from the isolated manager

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-02 17:40:20 +00:00
softwarefactory-project-zuul[bot]
cfa407e001 Merge pull request #4843 from lunarthegrey/patch-1
Fix issue #3705

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-02 17:38:13 +00:00
softwarefactory-project-zuul[bot]
329630ce2a Merge pull request #4869 from mabashian/4192-enter-textarea
Unbind keydown listeners when Alert modals are closed.

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-02 15:11:21 +00:00
Jeff Bradberry
1122d28a1b Quote the playbook passed to runner from the isolated manager 2019-10-02 11:10:19 -04:00
softwarefactory-project-zuul[bot]
a9b299cd98 Merge pull request #4881 from ryanpetrello/cli-ssh-example
cli: warn users if they specify a missing file with @

Reviewed-by: Yanis Guenane
             https://github.com/Spredzy
2019-10-02 15:00:51 +00:00
Ryan Petrello
6c1488ed00 cli: warn users if they specify a missing file with @ 2019-10-02 10:28:04 -04:00
softwarefactory-project-zuul[bot]
1f62d223a2 Merge pull request #4880 from ryanpetrello/cli-install-rst
template CLI install documentation into a separate file

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-02 14:04:05 +00:00
Ryan Petrello
da23c4e949 template CLI install documentation into a separate file 2019-10-02 09:41:11 -04:00
Keith Grant
6d00d43273 prettier 2019-10-01 15:20:51 -07:00
Keith Grant
77b68e0eb7 use getAddedAndRemoved for saving instance groups 2019-10-01 14:37:42 -07:00
softwarefactory-project-zuul[bot]
945d100302 Merge pull request #4836 from fosterseth/fix-4334-active-user-removed
check if User exists before saving UserSessionMembership

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-01 19:59:11 +00:00
Christian Adams
c0fd70f189 add mgmt cmd to check db connection 2019-10-01 15:40:43 -04:00
Keith Grant
ba4e79fd3a update JT form tests 2019-10-01 11:03:36 -07:00
AlanCoding
db0bd471c3 rename playbook vars to have collection_ 2019-10-01 13:45:07 -04:00
mabashian
616fe285fa Unbind keydown listeners when Alert modals are closed.
This fixes a bug where attempting to hit enter in any sort of textarea would be ignored if the user had previously encountered an Alert modal while navigating throughout the application.
2019-10-01 12:38:43 -04:00
Jake McDermott
b4b2cf76f6 Refactor job secondary label assignment 2019-10-01 10:33:47 -04:00
mabashian
4aeda635ff Checks to make sure that OAUTH2_PROVIDER key is returned by api in settings options before attempting to use it. This fixes a bug where setting ACCESS_TOKEN_EXPIRE_SECONDS and AUTHORIZATION_CODE_EXPIRE_SECONDS manually in a file was causing the settings page to render improperly. 2019-10-01 10:17:33 -04:00
softwarefactory-project-zuul[bot]
7e8c00ee24 Merge pull request #4864 from ryanpetrello/dont-stop-the-beat
warn loudly if celerybeat encounters AMQP connection issues

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-01 13:56:54 +00:00
Ryan Petrello
27c4e35ee4 warn loudly if celerybeat encounters AMQP connection issues
related: https://github.com/ansible/awx/pull/4857
2019-10-01 09:32:22 -04:00
softwarefactory-project-zuul[bot]
80a17987ff Merge pull request #4854 from ryanpetrello/cli-login-formatting
cli: make `awx login` respect the -f flag

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-10-01 01:14:15 +00:00
softwarefactory-project-zuul[bot]
10a6a29a07 Merge pull request #4857 from ryanpetrello/kombu-dns
make kombu DNS failures louder in the logs

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-30 21:35:29 +00:00
Ryan Petrello
b80eafe4a1 make kombu DNS failures louder in the logs 2019-09-30 16:48:09 -04:00
Alex Corey
6c443a0a6a fix lint error 2019-09-30 16:38:51 -04:00
Alex Corey
55378c635e Makes template list responive 2019-09-30 16:28:24 -04:00
Ryan Petrello
a4047e414f cli: make awx login respect the -f flag
see: https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/awx-project/ZAlhpLMBzVw/fUSqujoWBQAJ
2019-09-30 15:38:08 -04:00
Jeff Bradberry
d549877ebd Check for the existance of a UnifiedJobTemplate with the same webhook GUID
instead of trying (incorrectly) to be specific about the JT/WFJT type.
2019-09-30 15:26:49 -04:00
Rebeccah
28a119ca96 re-worked unit test into 3 seperate unit tests, one for orphans, one for group members, and one for multi-group members 2019-09-30 15:07:19 -04:00
Rebeccah
758529d7dd added in unit test for org admin deleting user 2019-09-30 15:07:19 -04:00
Rebeccah
075d1a2521 removed superuser check since can_admin already checks that, and also added allow orphans so admins can delete orphaned users 2019-09-30 15:07:19 -04:00
Rebeccah
69924c9544 added in ability to delete a user if they are part of your organization 2019-09-30 15:07:19 -04:00
softwarefactory-project-zuul[bot]
b858001c8f Merge pull request #4851 from ryanpetrello/fix-host-key-checking
improve host key checking configurability

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-30 18:38:05 +00:00
Ryan Petrello
82be87566f improve host key checking configurability
see: https://github.com/ansible/tower/issues/3737
2019-09-30 14:13:07 -04:00
mabashian
52b8b7676a Prevent text overlap on workflow nodes when an approval node is deleted 2019-09-30 13:38:46 -04:00
Jeff Bradberry
204c05aa3b Change the webhook post-back payload to use the job UI url 2019-09-30 13:32:23 -04:00
Jeff Bradberry
ac34b24868 Post the job or workflow url to the webhook service as part of the status 2019-09-30 13:32:23 -04:00
Jeff Bradberry
ffe89820e3 Return to using ContentType.kind
which is _not_ the `kind` attribute being deprecated.
2019-09-30 13:32:23 -04:00
Jeff Bradberry
062c4908c9 Modify the webhook debounce logic
to check if we've already previously run a job with the same webhook
GUID plus template id.  This will allow organizations to write
multiple JT/WFJTs to handle the same set of webhook events.
2019-09-30 13:32:23 -04:00
Jeff Bradberry
b6b70e55fb Address a variety of small review issues 2019-09-30 13:32:23 -04:00
Jeff Bradberry
6aa6471b7c Add help_text to the new fields 2019-09-30 13:32:23 -04:00
Jeff Bradberry
e14d4ddec6 Add a doc template to the webhook key API view 2019-09-30 13:32:23 -04:00
Jake McDermott
84dcda0a61 Use job launch_type field to detect webhook jobs
We have a launch type field for categorizing the different ways jobs
can be launched. This updates the UI to use this field when checking
if a job was launched by a webhook.
2019-09-30 13:32:23 -04:00
Jeff Bradberry
df24f5d28f Add a new launch_type of 'webhook' 2019-09-30 13:32:23 -04:00
Jeff Bradberry
fea7f914d2 Avoid the use of CredentialType.kind 2019-09-30 13:32:23 -04:00
Elijah DeLee
d4c8167b1b add arguments to awxkit for webhooks on jt or wfjt 2019-09-30 13:32:22 -04:00
Jeff Bradberry
a4873d97d8 Raise a validation error if a credential is set while the service is not 2019-09-30 13:32:22 -04:00
Jeff Bradberry
efe4ea6575 Fix the webhook receiver url for workflow jobs 2019-09-30 13:32:22 -04:00
Jeff Bradberry
b415c31b4f Fix problems with posting to Gitlab's API 2019-09-30 13:32:22 -04:00
Jeff Bradberry
e91462d085 Update the Webhook Credential help text tooltip
to make it more apparent to the user that this is an optional part of
the feature, and that failure to add a webhook credential will disable
status post-backs.
2019-09-30 13:32:22 -04:00
Jake McDermott
e85ff83be6 Apply 403 alert fixes for Workflows, too 2019-09-30 13:32:22 -04:00
Jake McDermott
d500c1bb40 Don't alert user of 403 errors for webhook key 2019-09-30 13:32:22 -04:00
Jeff Bradberry
885841caea Drop Bitbucket support
since only the Bitbucket Server product supports signed payloads,
bitbucket.org does not.  And we are requiring signed payloads.
2019-09-30 13:32:22 -04:00
Jake McDermott
f7396cf81a Always include selected webhook service in creation requests 2019-09-30 13:32:22 -04:00
Jeff Bradberry
286da3a7eb Posting webhook status now works 2019-09-30 13:32:21 -04:00
Jeff Bradberry
40b03eb6ef Enable the call to update_webhook_status
by calling it directly within send_notification_templates.  Also,
update the context field in the payload to be either 'ansible/awx' or
'ansible/tower', depending on which is being used.
2019-09-30 13:32:21 -04:00
Jeff Bradberry
c76c531b7a Provide a payload for the webhook status post-back 2019-09-30 13:32:21 -04:00
Jake McDermott
75d3359b6f make label consistent with help text 2019-09-30 13:32:21 -04:00
Jeff Bradberry
4ad5054222 Add logic to post the job status for webhooks back to the service
under some circumstances.
2019-09-30 13:32:21 -04:00
Jeff Bradberry
aa34984d7c Fix the git ref extractor for Gitlab pull requests 2019-09-30 13:32:21 -04:00
Jake McDermott
08594682a4 stub options request in workflow add unit test 2019-09-30 13:32:21 -04:00
Jeff Bradberry
d73abda5d1 Update the webhook receiver git ref extractor logic
to deal with the null-ref case, and to deal correctly with Github push events.
2019-09-30 13:32:21 -04:00
Jake McDermott
3bc91f123e add trailing '/' to webhook urls 2019-09-30 13:32:21 -04:00
Jake McDermott
41ba5c0968 add webhook fields to workflow unit test mock 2019-09-30 13:32:21 -04:00
Jeff Bradberry
e8e3a601b2 Pull out a git ref for each event type where we might care 2019-09-30 13:32:21 -04:00
Jake McDermott
b96c03e456 represent webhooks on job lists 2019-09-30 13:32:21 -04:00
Jake McDermott
5e9448a854 always show launched by webhook details if there's a webhook guid 2019-09-30 13:32:21 -04:00
Jake McDermott
6b17e86f30 add launched-by-webhook details to job runs 2019-09-30 13:32:21 -04:00
Jake McDermott
00337990db add webhook fields to workflows 2019-09-30 13:32:21 -04:00
Jake McDermott
1a33ae61a7 use key icon for webhook cred 2019-09-30 13:32:21 -04:00
Jake McDermott
5f7bfaa20a support server-side webhook key generation 2019-09-30 13:32:21 -04:00
Jeff Bradberry
178a2c7c49 Disable the authentication classes for the webhook receivers
One of them was consuming the body of the posts.  We do still need to
have an extraneous `request.body` expression, though now in
WebhookReceiverBase.post, since the `request.data` expression in the
logging also consumes the request body.
2019-09-30 13:32:20 -04:00
Jeff Bradberry
58e5f02129 Expose the new webhook fields in the job and workflow serializers 2019-09-30 13:32:20 -04:00
Jeff Bradberry
dd6c97ed87 Include a message in the webhook response 2019-09-30 13:32:20 -04:00
Jeff Bradberry
7aa424b210 Make sure that the new webhook fields are populated when firing off a job
Also, added a temporary hacky workaround for the fact that something
in our request/response stack for APIView is consuming the request
contents in an unfriendly way, preventing the `.body` @property from
working.
2019-09-30 13:32:20 -04:00
Jake McDermott
e0a363beb8 issue network calls for setting and getting webhook key 2019-09-30 13:32:20 -04:00
Jake McDermott
48eb502161 wip 2019-09-30 13:32:20 -04:00
Jake McDermott
151de89c26 add webhook credential field 2019-09-30 13:32:20 -04:00
Jake McDermott
f5c151d5c4 add webhook url field 2019-09-30 13:32:20 -04:00
Jake McDermott
17b34b1e36 add webhook service field 2019-09-30 13:32:20 -04:00
Jeff Bradberry
ee1d118752 Add the webhook receiver url to the related urls in the serializers 2019-09-30 13:32:20 -04:00
Jeff Bradberry
245931f603 Debounce when multiple copies of the same webhook event come in 2019-09-30 13:26:04 -04:00
Jeff Bradberry
095aa77857 Create a new model mixin for Job and WorkflowJob webhook fields 2019-09-30 13:26:04 -04:00
Jeff Bradberry
bb1397a3d4 Validate the webhook credential
- we should allow a null credential, so that the admin can choose to configure not posting back status changes of the triggered job
- the credential must be of the new 'token' kind
- if we do configure a credential, its type must match the selected SCM service
2019-09-30 13:26:04 -04:00
Jeff Bradberry
5848f0360a Update test_default_cred_types to include the new personal access token types 2019-09-30 13:26:04 -04:00
Jeff Bradberry
83fc2187cc Fix the summary fields for webhook_credential 2019-09-30 13:26:04 -04:00
Jeff Bradberry
4dba9916dc Add a new set of personal access token credential types 2019-09-30 13:26:03 -04:00
Jeff Bradberry
8836ed44ce Construct an ID for Gitlab webhooks
by taking the SHA1 of the body of the webhook request.
2019-09-30 13:26:03 -04:00
Jeff Bradberry
992c414737 Launch a Job or WorkflowJob based on the incoming webhook 2019-09-30 13:26:03 -04:00
Jeff Bradberry
66a8186995 Get the webhook receiver views to work at least minimally 2019-09-30 13:26:03 -04:00
Jeff Bradberry
fa15696ffe Remove some dead comments 2019-09-30 13:26:03 -04:00
Jeff Bradberry
82a0dc0024 Cycle or unset the webhook key if the webhook service changes
Also, tests.
2019-09-30 13:26:03 -04:00
Jeff Bradberry
d4b20b7340 Update tests to use the expect keyword argument for get() and post() 2019-09-30 13:26:03 -04:00
Jeff Bradberry
c0ad5a7768 Expose the webhook_service and webhook_credential fields in the serializer
webhook_credential specifically as a summary field.
2019-09-30 13:26:03 -04:00
Jeff Bradberry
d9ac291115 Add some RBAC oriented tests for the webhook secret key view 2019-09-30 13:26:03 -04:00
Jeff Bradberry
6b86cf6e86 Revert to using the explicit dispatch to the appropriate model
since passing the model class at url include time doesn't work.
2019-09-30 13:26:03 -04:00
Jeff Bradberry
771ef275d4 Include a check for the webhook_key related resource url
in the tests for JTs and WFJTs.
2019-09-30 13:26:03 -04:00
Jeff Bradberry
2310413dc0 Fix problem with the tests by dynamically setting the view model
instead of using a model @property or lookup method.
2019-09-30 13:26:03 -04:00
Jeff Bradberry
edb9d6b16c Add the related link to the webhook secrets view to the serializers 2019-09-30 13:26:03 -04:00
Jeff Bradberry
7973a18103 Switch to using a permission class for the webhook secret key view
This view is now behaving as expected for superuser, org admin, JT
admin, JT exec, and org member roles.
2019-09-30 13:23:27 -04:00
Jeff Bradberry
747a2283d6 Attempt to get the RBAC right on the webhook secret key view 2019-09-30 13:23:27 -04:00
Jeff Bradberry
9d269d59d6 Add an api view for obtaining and rotating the webhook key 2019-09-30 13:23:27 -04:00
Jeff Bradberry
b0c530402f Move the webhook url include from the top level urlconf to the JT/WFJT urlconfs 2019-09-30 13:23:26 -04:00
Jeff Bradberry
50a54c9214 Forbid access to the webhook receiver views if webhook_key is not set 2019-09-30 13:23:26 -04:00
Jeff Bradberry
8f97dbf781 Hook in the webhook receiver views into the urlconf 2019-09-30 13:23:26 -04:00
Jeff Bradberry
a7a99ed141 Beginnings of the API views for the webhook receivers 2019-09-30 13:23:26 -04:00
Jeff Bradberry
d6116490c6 Add the webhook-specific fields to JobTemplate and WorkflowJobTemplate 2019-09-30 13:23:26 -04:00
softwarefactory-project-zuul[bot]
ff8e896b0f Merge pull request #4850 from wenottingham/to-the-cloud!
Adjust help message; we're no longer using the insights client

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-30 16:46:22 +00:00
Bill Nottingham
fc70d8b321 Adjust help message; we're no longer using the insights client 2019-09-30 12:17:46 -04:00
mabashian
a61306580a Show error body when license application fails 2019-09-30 12:09:24 -04:00
Lunar
afe38b8e68 Change to ~/.awx 2019-09-30 10:58:37 -05:00
softwarefactory-project-zuul[bot]
505dcf9dd2 Merge pull request #4657 from beeankha/wf_approval_notification
[WIP] Notification Support for Workflow Approval Nodes

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-30 14:54:59 +00:00
softwarefactory-project-zuul[bot]
1d2123a4f9 Merge pull request #4845 from ryanpetrello/cli-fix-ujt-allow
cli: fix `awx unified_job_templates`

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-30 14:10:14 +00:00
Ryan Petrello
4adf9bab67 cli: fix awx unified_job_templates
this endpoint doesn't return an HTTP Allow header at all (because you
can't really do anything other than list templates)
2019-09-30 09:32:58 -04:00
Lunar
adac87adf2 Fix issue #3705
/tmp should not be used, it gets wiped and causes issues as noted in issue #3705.
2019-09-29 23:20:09 -05:00
AlanCoding
7dd8e35e8c Use namespaced doc fragment, cleanup
doc fragment will now be at awx.awx.auth
changed from just tower, which source from core

remove Makefile things no longer needed
2019-09-27 23:09:39 -04:00
Keith Grant
554a63d8fc write LabelSelect tests 2019-09-27 15:30:42 -07:00
Keith Grant
da149d931c rework MultiSelect into controlled input; refactoring 2019-09-27 15:06:15 -07:00
mabashian
3182197287 Makes notification toggles more responsive on smaller screens. 2019-09-27 15:48:00 -04:00
beeankha
9ed4e1682d Remove redundant whitespace 2019-09-27 15:48:00 -04:00
beeankha
5aa6a94710 Enable approval notifications to show up at...
...workflow jobs notifications endpoint
2019-09-27 15:48:00 -04:00
beeankha
96689f45c8 Update approval notification message 2019-09-27 15:48:00 -04:00
beeankha
ce6a276e1f Update migration file 2019-09-27 15:48:00 -04:00
beeankha
8eb1484129 Update migration file, change status syntax 2019-09-27 15:48:00 -04:00
beeankha
1ddf9fd1ed Fix up models, clean up code re: PR comments 2019-09-27 15:48:00 -04:00
beeankha
17a8e08d93 Add unit tests for approval notifications 2019-09-27 15:48:00 -04:00
beeankha
f835c8650b Enable org-level approval notifications to work. 2019-09-27 15:48:00 -04:00
beeankha
aa5a4d42c7 Enable email notifications to work,
...and customize default messages
2019-09-27 15:48:00 -04:00
beeankha
57fd6b7280 Set default messages for approval notifications 2019-09-27 15:48:00 -04:00
mabashian
7eb7aad491 Adds approval toggles to wf and org notif lists 2019-09-27 15:48:00 -04:00
beeankha
e2b8adcd09 Remove notification endpoint from approvals list 2019-09-27 15:48:00 -04:00
beeankha
13450fdbf9 Set up approval notifications to send 2019-09-27 15:48:00 -04:00
beeankha
6be2d84adb Add endpoints for approval node notifications
...and also add a migration file.
2019-09-27 15:48:00 -04:00
softwarefactory-project-zuul[bot]
d2a5af44de Merge pull request #4792 from mabashian/relaunch-jobs
Add relaunch to Jobs list and Job Details views

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-27 19:18:48 +00:00
AlanCoding
75bb7aae14 update references to collection folder 2019-09-27 14:29:04 -04:00
AlanCoding
98619c5e23 rename awx modules folder to collection 2019-09-27 14:29:04 -04:00
AlanCoding
35afa37417 Rename to collection, add license, galaxy build 2019-09-27 14:29:03 -04:00
AlanCoding
2f0f692f4a Integrate Ansible core tower modules content into AWX
This commit includes all the changes involved in
converting the old Ansible Tower modules from commits
in Ansible core into the AWX collection that replaces it.
Also includes work needed to integrate it into the
AWX processes like tests, docs, and the Makefile.

Apply changes from content_collector tool

Add integrated module tests
  operate via run_module fixture
  add makefile target for them

Add flake8 target and fix flake8 errors

Update README

Make consolidated target for testing modules
2019-09-27 14:29:03 -04:00
AlanCoding
5271c993ac Move commit for migration of Ansible core tower modules 2019-09-27 14:29:03 -04:00
AlanCoding
38112bae22 Use to_native for error messages, fix docs typo 2019-09-27 14:29:03 -04:00
Andrey Klychkov
30a6efdb93 fix typos in web_infrastructure modules (#62202) 2019-09-27 14:29:02 -04:00
Alan Rominger
bffc1bfdd4 Allow tower inventory plugin to accept integer inventory_id (#61338) 2019-09-27 14:29:02 -04:00
Alicia Cozine
a7bf31d423 clarifies how ASK works for Tower credentials (#59050)
* clarifies how ASK works for credentials
2019-09-27 14:29:02 -04:00
Pilou
1ae1011ccb tower_role: ensure alias of "validate_certs" parameter is handled (#57518)
* tower_role: ensure alias of validate_certs is handled

* tower modules: remove tower_verify_ssl alias too

Error was:

    Failed to update role: The Tower server claims it was sent a bad request.
    GET https://tower/api/v2/projects/22/object_roles/
    Params: [('tower_verify_ssl', False), ('role_field', 'admin_role')]
    Data: None
    Response: {"detail": "Role has no field named 'tower_verify_ssl'"}

Full traceback:

    File "/tmp/ansible_tower_role_payload_7_2p0X/__main__.py", line 145, in main
      result = role.grant(**params)
    File "/usr/local/lib/python2.7/dist-packages/tower_cli/resources/role.py", line 365, in grant
      return self.role_write(fail_on_found=fail_on_found, **kwargs)
    File "/usr/local/lib/python2.7/dist-packages/tower_cli/resources/role.py", line 242, in role_write
      fail_on_multiple_results=True, **data)
    File "/usr/local/lib/python2.7/dist-packages/tower_cli/models/base.py", line 301, in read
      r = client.get(url, params=params)
    File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 546, in get
      return self.request('GET', url, **kwargs)
    File "/usr/local/lib/python2.7/dist-packages/tower_cli/api.py", line 299, in request
      kwargs.get('data', None), r.content.decode('utf8'))
2019-09-27 14:29:02 -04:00
Alberto Murillo
83183cd7ce tower_workflow_template: Add missing options (#56891)
The following options can be set on a workflow template but the
functionallity to do so from this module was missing.

inventory
ask_variables_on_launch
ask_inventory_on_launch

Fixes #49728

Signed-off-by: Alberto Murillo <albertomurillosilva@gmail.com>
2019-09-27 14:29:02 -04:00
Pilou
934d7d62ef fix tower_credential example: lookup are run on controller (#57516)
- don't advise to use lookups in order to fetch path on managed nodes
- fix example:
    - use slurp instead 'file' lookup
    - remove extraneous brackets
2019-09-27 14:29:01 -04:00
Hideki Saito
5dce6258e6 tower_user: Fix to create a system auditor properly (#54585)
- Fixed issue #54446: tower_user cannot create an auditor user

Signed-off-by: Hideki Saito <saito@fgrep.org>
2019-09-27 14:29:01 -04:00
Pilou
87f6065a05 tower_credential: ssh_key_data isn't a path anymore (#57113) 2019-09-27 14:29:01 -04:00
stoned
4ca0d8c72a Add missing roles to tower_role module (#56182)
* Add missing roles to tower_role module

* Placate 'ansible-test sanity --test pep8'
2019-09-27 14:29:01 -04:00
Hideki Saito
ba8bd25da2 Fixed wrong variable specification format in examples (#55252)
Signed-off-by: Hideki Saito <saito@fgrep.org>
2019-09-27 14:29:00 -04:00
Hideki Saito
df0bd0797c Fix handling of inventory and credential options for tower_job_launch (#54967)
- Fixed issue #25017,#37567
- Add example for prompt on launch
- Add integration test for prompt on launch

Signed-off-by: Hideki Saito <saito@fgrep.org>
2019-09-27 14:29:00 -04:00
James Cassell
3aa7ee8d17 standardize TLS connection properties (#54315)
* openstack: standardize tls params

* tower: tower_verify_ssl->validate_certs

* docker: use standard tls config params

- cacert_path -> ca_cert
- cert_path -> client_cert
- key_path -> client_key
- tls_verify -> validate_certs

* k8s: standardize tls connection params

- verify_ssl -> validate_certs
- ssl_ca_cert -> ca_cert
- cert_file -> client_cert
- key_file -> client_key

* ingate: verify_ssl -> validate_certs

* manageiq: standardize tls params

- verify_ssl -> validate_certs
- ca_bundle_path -> ca_cert

* mysql: standardize tls params

- ssl_ca -> ca_cert
- ssl_cert -> client_cert
- ssl_key -> client_key

* nios: ssl_verify -> validate_certs

* postgresql: ssl_rootcert -> ca_cert

* rabbitmq: standardize tls params

- cacert -> ca_cert
- cert -> client_cert
- key -> client_key

* rackspace: verify_ssl -> validate_certs

* vca: verify_certs -> validate_certs

* kubevirt_cdi_upload: upload_host_verify_ssl -> upload_host_validate_certs

* lxd: standardize tls params

- key_file -> client_key
- cert_file -> client_cert

* get_certificate: ca_certs -> ca_cert

* get_certificate.py: clarify one or more certs in a file

Co-Authored-By: jamescassell <code@james.cassell.me>

* zabbix: tls_issuer -> ca_cert

* bigip_device_auth_ldap: standardize tls params

- ssl_check_peer -> validate_certs
- ssl_client_cert -> client_cert
- ssl_client_key -> client_key
- ssl_ca_cert -> ca_cert

* vdirect: vdirect_validate_certs -> validate_certs

* mqtt: standardize tls params

- ca_certs -> ca_cert
- certfile -> client_cert
- keyfile -> client_key

* pulp_repo: standardize tls params

remove `importer_ssl` prefix

* rhn_register: sslcacert -> ca_cert

* yum_repository: standardize tls params

The fix for yum_repository is not straightforward since this module is
only a thin wrapper for the underlying commands and config.  In this
case, we add the new values as aliases, keeping the old as primary,
only due to the internal structure of the module.

Aliases added:
- sslcacert -> ca_cert
- sslclientcert -> client_cert
- sslclientkey -> client_key
- sslverify -> validate_certs

* gitlab_hook: enable_ssl_verification -> hook_validate_certs

* Adjust arguments for docker_swarm inventory plugin.

* foreman callback: standardize tls params

- ssl_cert -> client_cert
- ssl_key -> client_key

* grafana_annotations: validate_grafana_certs -> validate_certs

* nrdp callback: validate_nrdp_certs -> validate_certs

* kubectl connection: standardize tls params

- kubectl_cert_file -> client_cert
- kubectl_key_file -> client_key
- kubectl_ssl_ca_cert -> ca_cert
- kubectl_verify_ssl -> validate_certs

* oc connection: standardize tls params

- oc_cert_file -> client_cert
- oc_key_file -> client_key
- oc_ssl_ca_cert -> ca_cert
- oc_verify_ssl -> validate_certs

* psrp connection: cert_trust_path -> ca_cert

TODO: cert_validation -> validate_certs (multi-valued vs bool)

* k8s inventory: standardize tls params

- cert_file -> client_cert
- key_file -> client_key
- ca_cert -> ca_cert
- verify_ssl -> validate_certs

* openshift inventory: standardize tls params

- cert_file -> client_cert
- key_file -> client_key
- ca_cert -> ca_cert
- verify_ssl -> validate_certs

* tower inventory: verify_ssl -> validate_certs

* hashi_vault lookup: cacert -> ca_cert

* k8s lookup: standardize tls params

- cert_file -> client_cert
- key_file -> client_key
- ca_cert -> ca_cert
- verify_ssl -> validate_certs

* laps_passord lookup: cacert_file -> ca_cert

* changelog for TLS parameter standardization
2019-09-27 14:29:00 -04:00
Pilou
aeaab41120 tower_settings: "get" isn't implemented, "value" parameter is required (#54028)
* tower_settings doc: 'get' isn't implemented

* tower_settings: fix typo in argument_spec
2019-09-27 14:29:00 -04:00
Abhijeet Kasurde
1eb61ba5ce tower_credential: Add parameter vault_id (#53400)
vault_id allows user to specify vault identifier as per Tower UI.

Fixes: #45644

Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
2019-09-27 14:28:59 -04:00
Alan Rominger
91d0c47120 Add option for tower inventory to give general metadata (#52747) 2019-09-27 14:28:59 -04:00
Abhijeet Kasurde
b96b69360f tower: Handle AuthError (#53377)
Handle AuthError raised when user provides incorrect password
for Tower admin user.

Fixes: #50535

Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
2019-09-27 14:28:59 -04:00
David Medberry
b034295c99 Update tower_credential.py (#51469)
misspelled word and poor capitalization (in the same sentence of the doc string)

+label: docsite_pr
2019-09-27 14:28:59 -04:00
Pilou
c6e47a0a16 tower modules: check that 'verify_ssl' defined in ~/.tower_cli.cfg isn't ignored (#50687)
* Check that verify_ssl defined in tower_cli.cfg isn't ignored

* Avoid to override verify_ssl value defined in tower_cli.cfg

By default, tower-cli library enables SSL certificates check. But
verify_ssl false value defined in config files read by default by
tower-cli library (for example /etc/tower/tower_cli.cfg) was ignored
because overriden by the tower_verify_ssl parameter default value.

* fix a typo in comment
2019-09-27 14:28:58 -04:00
Jordan Borean
ca782a495d Final round of moving modules to new import error msg (#51852)
* Final round of moving modules to new import error msg

* readd URL to jenkins install guide

* fix unit tests
2019-09-27 14:28:58 -04:00
Dennis Lerch
71c625bd83 add diff_mode_enabled to documentation
option 'diff_mode_enabled' is not mentioned in documentation

+label: docsite_pr
2019-09-27 14:28:58 -04:00
Samuel Carpentier
5c2bc09f9d New module: tower_notification (#50512)
* New module: tower_notification

* Fix CI check failures

* Add integration tests and extend examples

* Add missing required field for deletion tests and examples

* Add missing required field for deletion tests and examples

* Set port type to int

* Add missing field for Slack notification

* Add missing field types for IRC notification

* Update module documentation

* Correct field name and type for IRC notification

* Uniformize 'targets' field

* Uniformize 'targets' field
2019-09-27 14:28:57 -04:00
jainnikhil30
58c4ae6a00 Add scm_update_cache_timeout, job_timeout and custom_virtualenv to tower_project (#51330)
* adding scm_update_cache_timeout and job_timeout to tower_project module

* add support for cache_timeout, job_timeout and custom_venv for tower_project module

* add the version_added
2019-09-27 14:28:57 -04:00
John Westcott IV
37509af868 Adding TowerCLI receive module (#51023) 2019-09-27 14:28:57 -04:00
John Westcott IV
41f649b5a2 Adding tower_workflow_launch (#42701) 2019-09-27 14:28:57 -04:00
John Westcott IV
5ef995cd7d Adding TowerCLI send module (#37843) 2019-09-27 14:28:56 -04:00
jainnikhil30
a32981242b Fixing exception import for tower modules (#50447)
* fixing the exception import from tower modules

* Adding tests for checking tower modules are failing with correct msg

* fixed failing tests

* fixed failing test in tower_team
2019-09-27 14:28:56 -04:00
Alicia Cozine
c821996051 fix docs for tower modules (#50710) 2019-09-27 14:28:56 -04:00
Andrea Tartaglia
a37a18c0bf Added organization in the scm_credential get (#49884)
* Added organization in the scm_credential get

* Fallback looking for cred in project org

* Tests project with multi org credential

* Fixed CI issue

* Added changelog fragment
2019-09-27 14:28:56 -04:00
Dag Wieers
b11374157d Convert to reduced list of known types (#50010) 2019-09-27 14:28:55 -04:00
Abhijeet Kasurde
2d6743635e E325 Removal - Part II (#49196)
Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
2019-09-27 14:28:55 -04:00
seag-rvc
590341ed7d Update tower_host.py (#49186)
<!--- Your description here -->
Current example does not show how to declare variables
+label: docsite_pr
2019-09-27 14:28:55 -04:00
Hugh Ma
ae980b9a82 Add survey_spec parameter to module. (#48182)
* Add survey_spec parameter to module.
Fixes #48011

* Removed trailing white space. Added integration test.
2019-09-27 14:28:55 -04:00
Sean Cavanaugh
94b557d8aa adding additional example and clarification (#47224)
The kind: paramter is missing from the original example (which won't actually work).  The organization needs to be listed as required (if you don't list it, you will get an error).  Also adding additional example using the tower_username and tower_password method.
2019-09-27 14:28:54 -04:00
Sloane Hertel
5dc9ca222f add more consistent extension matching for inventory plugins (#46786)
* Add consistent extension matching for inventory plugins that support YAML configuration files

* Document extension matching expectations
2019-09-27 14:28:54 -04:00
Yanis Guenane
79166209ee inventory/tower: authors -< author so Doc can pick it up (#45936) 2019-09-27 14:28:54 -04:00
Dag Wieers
45a8992254 Docs: Avoid use of 'default: null' (#45795)
Various modules document the default 'null' value, but it causes None to
be shown in the documentation explicitly.
2019-09-27 14:28:54 -04:00
Meecr0b
def043c383 tower_credential: expect ssh_key_data to be a string instead of path (#45158)
* expect ssh_key_data to be a string instead of path

ssh_key_data should be a string filled with the private key
the old behavior can be archived with a lookup

Fixes #45119

* clarifies ssh_key_data description, adds newline
2019-09-27 14:28:53 -04:00
Adrien Fleury
7b6dc13078 New module : tower_credential_type (#37243)
* Add new module *tower_credential_type*

* Add support for credential type creation and/or deletion
* Add test coverage for tower_credential_type
2019-09-27 14:28:53 -04:00
Adrien Fleury
ee2709a898 New module tower_workflow_template. (#37520)
* Add new module *tower_workflow_template*

Manage Tower workflows and their schemas.
2019-09-27 14:28:53 -04:00
jainnikhil30
d9d56b4b50 Add 'tower_settings' module for managing Ansible Tower Settings (#43933)
* add the tower_settings module
2019-09-27 14:28:52 -04:00
Yunfan Zhang
7580f9c2b9 Added Ansible Tower inventory plugin. (#41816)
Signed-off-by: Yunfan Zhang <yz322@duke.edu>
2019-09-27 14:28:52 -04:00
curry9999
d4f4983a89 To improve readability, we added a line feed. (#43801)
* 	modified:   google/gcp_compute_backend_bucket.py
	modified:   google/gcp_compute_backend_service.py
	modified:   google/gcp_compute_forwarding_rule.py
	modified:   google/gcp_compute_global_forwarding_rule.py
	modified:   google/gcp_compute_image.py
	modified:   google/gcp_compute_instance.py
	modified:   google/gcp_compute_instance_group.py
	modified:   google/gcp_compute_instance_group_manager.py
	modified:   google/gcp_compute_instance_template.py
	modified:   google/gcp_compute_route.py
	modified:   google/gcp_compute_subnetwork.py
	modified:   google/gcp_compute_target_http_proxy.py
	modified:   google/gcp_compute_target_https_proxy.py
	modified:   google/gcp_compute_target_ssl_proxy.py
	modified:   google/gcp_compute_target_tcp_proxy.py
	modified:   google/gcp_compute_url_map.py
	modified:   google/gcp_container_node_pool.py
	modified:   google/gcp_dns_resource_record_set.py
	modified:   google/gcp_pubsub_subscription.py
	modified:   google/gcp_storage_bucket_access_control.py

* 	modified:   lib/ansible/modules/cloud/amazon/aws_ses_identity.py
	modified:   lib/ansible/modules/cloud/amazon/route53_facts.py
	modified:   lib/ansible/modules/cloud/cloudscale/cloudscale_server.py
	modified:   lib/ansible/modules/network/aos/_aos_logical_device.py
	modified:   lib/ansible/modules/network/aos/_aos_rack_type.py
	modified:   lib/ansible/modules/network/aos/_aos_template.py
	modified:   lib/ansible/modules/network/cumulus/nclu.py
	modified:   lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_launch.py
	modified:   lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_wait.py
2019-09-27 14:28:52 -04:00
Will Thames
24cedcc560 Allow tower_inventory_sources params to be False (#43749)
Ensure that params set to False are respected, rather than ignored.
2019-09-27 14:28:52 -04:00
Pilou
64014faf02 Tower modules: move HAS_TOWER_CLI check in module_utils and minor improvements (#39809)
* tower_* modules: move HAS_TOWER_CLI in TowerModule

Besides this change allows to define other common parameters such as
mutually_exclusive.

* tower_*: config file can not be used with auth params

* tower module_utils: remove useless call to expanduser

'path' type: expanduser & expandvars are automatically called
2019-09-27 14:28:51 -04:00
David Moreau Simard
9b228d7d2d Properly detect credentials for tower_project
It seemed like it was mostly the wrong variables been looked at, making
it so a git repository could not be created without a credential.
2019-09-27 14:28:51 -04:00
Pierre-Louis Bonicoli
1349449e1e tower_project: manual projects don't require creds 2019-09-27 14:28:51 -04:00
Abhijeet Kasurde
185e9a09e0 Correct typo from 'Valut' to 'Vault' (#41574)
Correct typo from 'Valut' to 'Vault'

+label: docsite_pr
2019-09-27 14:28:51 -04:00
jaevans
623e0f7cc9 Add support for Tower Smart inventories (#41458)
* Support Smart Inventories

Add kind and host_filter fields and pass through to tower_cli.

* Add documentation for new Smart Inventories options

* Add missing description header for host_filter documentation

* Add version added tags to new options

* Bumped vesion_added to 2.7
2019-09-27 14:28:50 -04:00
Andrew J Huffman
8569bf71af Updating tower_job_template.py (#38821)
* Updating tower_job_template.py

* tower_job_template: Update parameter version_added to 2.7

* Ensure that unset credentials aren't passed

Passing empty strings for unset credentials causes ValueErrors as
the API expects an integer. Don't pass unset credentials
2019-09-27 14:28:50 -04:00
Adrien Fleury
6471481d02 Module: Tower inventory source module (#37110)
* tower_inventory_source: Add support for the inventory source via ansible-tower-cli.

* Add test coverage for tower_inventory_source.

* Update version_added to 2.7
2019-09-27 14:28:50 -04:00
Pierre Roux
139703aafb Fix tower_* modules **params kwargs (#40137)
* Add cleaning function to handle **params

The cleaning function is only added to tower modules which pass a `**params`
argument as an unpacked dictionnary to the tower-cli method calls.

Fix #39745

* Remove previous code added only for tower_role

In 872a7b4, the `update_resources` function was modified so that it would clear unwanted
parameters. However, this behaviour is desired for other modules too, modified in
another commit. (see tower_clean_params).
2019-09-27 14:28:50 -04:00
Ryan Petrello
65aeb2b68a add some Tower module integration tests (and fix a bug or two) (#37421)
* add additional test coverage for tower modules

* add test coverage for the tower_credential module

* add test coverage for the tower_user module

* fix a bug in py3 for tower_credential when ssh_key_data is specified

* add test coverage for tower_host, tower_label, and tower_project

* add test coverage for tower_inventory and tower_job_template

* add more test coverage for tower modules

- tower_job_launch
- tower_job_list
- tower_job_wait
- tower_job_cancel

* add a check mode/version assertion for tower module integration tests

* add test coverage for the tower_role module

* add test coverage for the tower_group module

* add more integration test edge cases for various tower modules

* give the job_wait module more time before failing

* randomize passwords in the tower_user and tower_group tests
2019-09-27 14:28:49 -04:00
Dag Wieers
0b26297177 Clean up module documentation (#36909)
* Clean up module documentation

This PR includes:
- Removal of `default: None` (and variations)
- Removal of `required: false`
- Fixing booleans and `type: bool` where required

* Fix remaining (new) validation issues
2019-09-27 14:28:49 -04:00
Pilou
3e8de196ac ansible_tower modules doc: fix typos, use formatting functions (#37414)
* fix typos

* use formatting functions

* use 'job template' instead of 'job_template'

* acronyms: user uppercase

* become_enabled param is about privilege escalation
2019-09-27 14:28:49 -04:00
Ryan Petrello
b14323c985 properly pass /api/v1/ credential fields for older Towers (#36917) 2019-09-27 14:28:48 -04:00
Ryan Petrello
2e04969f17 properly detect the absence of credential_type in older tower-cli (#36908) 2019-09-27 14:28:48 -04:00
Ryan Petrello
2edca4f357 tower cred: support credential kind/type for /api/v1/ and /api/v2/ (#36662)
older versions of Tower (3.1) don't have a concept of CredentialTypes
(this was introduced in Tower 3.2).  This change detects older versions
of pre-3.2 tower-cli that *only* support the deprecated `kind`
attribute.
2019-09-27 14:28:48 -04:00
Ryan Petrello
d192297987 tower cred: update kind options in documentation 2019-09-27 14:28:48 -04:00
Ryan Petrello
0bb7e06761 tower cred: filter user name lookup by the proper key 2019-09-27 14:28:47 -04:00
Ryan Petrello
4213ca1424 tower cred: implement credential /api/v1/ kind compatability 2019-09-27 14:28:47 -04:00
Thierry Bouvet
3db3430129 Fix credentials for Tower API V2 2019-09-27 14:28:47 -04:00
Toshio Kuratomi
f7592f6ae7 Port arg specs from type='str' to type='path' 2019-09-27 14:28:47 -04:00
Pilou
ac82751dfa ansible_tower: fix broken import, reuse tower_argument_spec and documentation fragment (#29115)
* module_utils/ansible_tower: fix broken import

* tower_*: use tower_argument_spec & doc fragment

* tower doc fragment: Ansible requires Python 2.6+

* tower_job_wait: fix broken import (Py3 compat)
2019-09-27 14:28:46 -04:00
ethackal
f46db65bad Fixes verify_ssl option when False in ansible_tower module util (#30308)
* Fixes verify_ssl option when False in ansible_tower module util

* fixed comparison to None per PEP-8 standards
2019-09-27 14:28:46 -04:00
Toshio Kuratomi
d0ffc3f626 Update metadata to 1.1 2019-09-27 14:28:46 -04:00
Toshio Kuratomi
e9ec80d86b Remove wildcard imports
Made the following changes:

* Removed wildcard imports
* Replaced long form of GPL header with short form
* Removed get_exception usage
* Added from __future__ boilerplate
  * Adjust division operator to // where necessary

For the following files:

* web_infrastructure modules
* system modules
* linode, lxc, lxd, atomic, cloudscale, dimensiondata, ovh, packet,
  profitbricks, pubnub, smartos, softlayer, univention modules
* compat dirs (disabled as its used intentionally)
2019-09-27 14:28:46 -04:00
Christopher Galtenberg
56723c3203 Improve help text for extra-vars requiring @ for filename
(cherry picked from commit 1b34de89ee1d75cb7f616b5a34cd5043bf7dfd2b)
2019-09-27 14:28:45 -04:00
Abhijeet Kasurde
fdbafe42ab Fix spelling mistakes (comments only) (#25564)
Original Author : klemens <ka7@github.com>

Taking over previous PR as per
https://github.com/ansible/ansible/pull/23644#issuecomment-307334525

Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
2019-09-27 14:28:45 -04:00
Bill Nottingham
7c0554bf7b Fix handling of extra_vars_path parameter. (#25272)
tower-cli process_extra_vars takes a list.
2019-09-27 14:28:45 -04:00
Dag Wieers
49df11d478 Collated PEP8 fixes (#25293)
- Make PEP8 compliant
2019-09-27 14:28:45 -04:00
James Labocki
5ef7003395 Fix indentation for register module in example (#25274) 2019-09-27 14:28:44 -04:00
Kevin Clark
640e528fdc adds privilege escalation method for pmrun(Unix Privilege Manager 6.0) 2019-09-27 14:28:44 -04:00
Lee Shakespeare
06e09550af Lookup credential id and pass in credential rather than scm_credential (#24624)
* Lookup credential id and pass in credential rather than scm_credential

* Change the excepting handling to catch missing credentials

* Make error messages for not found lookups more useful
2019-09-27 14:28:44 -04:00
Lee Shakespeare
74c7c7b532 Tower user remove organization (#24544)
* Remove organization field from the tower_user module re: issue #24510

* Fix trailing spaces.

* Fixes for Shippable errors, pep8

* Remove a random inserted space.
2019-09-27 14:28:44 -04:00
Abhijeet Kasurde
62bc1a8662 Pep8 fixes for web_infra/ansible_tower (#24479)
Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
2019-09-27 14:28:43 -04:00
Andrea Tartaglia
9469bbc06f fixed RETURN docs for modules (#24011)
* fixed RETURN docs for remaining modules

* updated proxymysql_mysql_users 'sample' to yaml dict

* fixed whitespace errors
2019-09-27 14:28:43 -04:00
Toshio Kuratomi
7cdde96c3c New metadata 1.0 (#22587)
Changes to the metadata format were approved here:
https://github.com/ansible/proposals/issues/54
* Update documentation to the new metadata format
* Changes to metadata-tool to account for new metadata
  * Add GPL license header
  * Add upgrade subcommand to upgrade metadata version
  * Change default metadata to the new format
  * Fix exclusion of non-modules from the metadata report
* Fix ansible-doc for new module metadata
* Exclude metadata version from ansible-doc output
* Fix website docs generation for the new metadata
* Update metadata schema in valiate-modules test
* Update the metadata in all modules to the new version
2019-09-27 14:28:43 -04:00
John R Barker
bc2a63c415 Fix invalid fields in module DOCUMENATION (#22297)
* fix module doc fields

* More module docs corrections

* More module docs corrections

* More module docs corrections

* More module docs corrections

* correct aliases

* Review comments

* Must quote ':'

* More authors

* Use suboptions:

* restore type: bool

* type should be in the same place

* More tidyups

* authors

* Use suboptions

* revert

* remove duplicate author

* More issues post rebase
2019-09-27 14:28:43 -04:00
Wayne Witzel III
9c6c9c3708 Ansible Tower job_wait module (#22160)
* Ansible Tower job_wait module

* clean up documentation and update code comment
2019-09-27 14:28:42 -04:00
Wayne Witzel III
6a2e3d2915 Ansible Tower job cancel module (#22161)
* Ansible Tower job cancel module

* fix interpreter line
2019-09-27 14:28:42 -04:00
Wayne Witzel III
85977be23c Ansible Tower job list module (#22164) 2019-09-27 14:28:42 -04:00
Wayne Witzel III
3855393cd3 Ansible Tower job_launch module (#22148)
* Ansible Tower job_launch module

* Added RETURN documentation and fixed import locations

* remove superfluos required attributes, make tags a list, and fix some typos

* only join tags if they are actually a list

* use isinstance instead of type, cleanup imports
2019-09-27 14:28:42 -04:00
Wayne Witzel III
bd6e5c2529 add Ansible Tower role module (#21592)
* add Ansible Tower role module

* remove owner as choice from role paramenter
2019-09-27 14:28:41 -04:00
Wayne Witzel III
8a5914affd add Tower JobTemplate module (#21681)
* add Tower JobTemplate module

* add host_config_key and remove defaults from required parameters
2019-09-27 14:28:41 -04:00
Wayne Witzel III
979adfd16c add Ansible Tower team module (#21593) 2019-09-27 14:28:41 -04:00
John R Barker
5f2381e9ad Correct example 2019-09-27 14:28:41 -04:00
Wayne Witzel III
99027e4b30 Add Tower Project module (#21479) 2019-09-27 14:28:40 -04:00
Wayne Witzel III
150c0a9fdc Add Tower Group module (#21480) 2019-09-27 14:28:40 -04:00
Wayne Witzel III
2c825b792f Add Tower Host module (#21482) 2019-09-27 14:28:40 -04:00
Wayne Witzel III
2f9b0733bb Add Tower Inventory module (#21483) 2019-09-27 14:28:40 -04:00
Wayne Witzel III
962668389a Add Tower Label module (#21485) 2019-09-27 14:28:39 -04:00
Wayne Witzel III
0699e44b53 Ansible Tower user and credential module (#21020)
* rename tower config module parameters to avoid conflicts

* add Ansible Tower user module

* add Ansible Tower credential module

* remove errant hash from interpreter line

* friendlier error messages

* Update tower_verify_ssl defaults and module examples

* Update tower_verify_ssl default documentation

* Tower expects satellite6 not foreman
2019-09-27 14:28:39 -04:00
Matt Martz
788a2e5fc8 Update validate-modules (#20932)
* Update validate-modules

* Validates ANSIBLE_METADATA
* Ensures imports happen after documentation vars
* Some pep8 cleanup

* Clean up some left over unneeded code

* Update modules for new module guidelines and validate-modules checks

* Update imports for ec2_vpc_route_table and ec2_vpc_nat_gateway
2019-09-27 14:28:39 -04:00
Brian Coca
16e6b3f148 updated friendlier description 2019-09-27 14:28:39 -04:00
Wayne Witzel III
6140308675 Ansible Tower organization module (#20355)
* add Ansible Tower organization module

* skip Python 2.4 check for ansible_tower module

* make spec and doc match, extract tower auth helper method

* added auth params at module level

* support check mode

* extract check mode check to ansible_tower utils, add utils to 2.4 skip

* update interpreter shebang

* remove colon from docs

* no log for password, verify_ssl default to true
2019-09-27 14:28:35 -04:00
mabashian
518a25430d Adjust unit test after adding conditional render to modals in launch button component 2019-09-27 13:47:13 -04:00
Seth Foster
b6ffde75ef check expired sessions only if User exists
- Indent rest of code into the conditional
  that checks for expired sessions of that User
- If user doesn't exist, no need to check
2019-09-27 12:31:10 -04:00
softwarefactory-project-zuul[bot]
8d44ab55f1 Merge pull request #4837 from ryanpetrello/faster-dev-iso
lower the isolated poll interval in development

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-27 16:21:22 +00:00
Keith Grant
6e9804b713 Rework saving labels 2019-09-27 08:53:52 -07:00
Seth Foster
94fa745859 removed duplicate import of User 2019-09-27 11:47:44 -04:00
softwarefactory-project-zuul[bot]
eacc7b8eb0 Merge pull request #4827 from ryanpetrello/fix-docker-compose-cluster
fix broken `docker-compose-cluster` config

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-27 15:35:18 +00:00
Ryan Petrello
73c3b8849b lower the isolated poll interval in development
(waiting 30s is annoying)
2019-09-27 11:26:10 -04:00
mabashian
bb474b0797 Only render the launch modals if errors are present. This addresses a local unit test failure. 2019-09-27 11:05:23 -04:00
Seth Foster
c94ebba0b3 Saving user session checks if User exists
- Check that model User object exists with id=user_id
  before attempting to save to database
- UserSessionMembership saves to the database using
  foreign key, User
- However, User with matching id might not exist if
  browser sends request with stale cookies
- Change made in regards to issue #4334
2019-09-27 10:52:53 -04:00
mabashian
af90a78df5 Extends LaunchButton component to include support for relaunching. Adds relaunch button to jobs list and job detail view(s). 2019-09-27 10:37:46 -04:00
softwarefactory-project-zuul[bot]
de68de7f9a Merge pull request #4735 from AlanCoding/come_as_you_are
Copy git submodules as-is to avoid auth and path errors

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-27 13:49:16 +00:00
softwarefactory-project-zuul[bot]
04ba7aaf89 Merge pull request #4835 from ryanpetrello/plural-credentials
Update the "Credential" label on JT forms to say "Credentials"

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-27 13:16:50 +00:00
AlanCoding
454f76c066 Copy git submodules as-is to avoid auth and path errors 2019-09-27 09:03:47 -04:00
softwarefactory-project-zuul[bot]
9b281bbc8a Merge pull request #4829 from ryanpetrello/fix-4294
Fix error with rejoining node to cluster after lost connection to postgres

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-27 12:50:25 +00:00
Ryan Petrello
870b76dc59 Update the "Credential" label on JT forms to say "Credentials"
see: https://github.com/ansible/awx/issues/4831
2019-09-27 08:44:04 -04:00
Buymov Ivan
f2676064fd Fix error with rejoining node to cluster after lost connection to postgres 2019-09-27 01:17:27 -04:00
Ryan Petrello
4b62f4845a fix broken docker-compose-cluster config 2019-09-27 00:37:29 -04:00
softwarefactory-project-zuul[bot]
bc6edf7af3 Merge pull request #3583 from kumy/patch-1
Use variables to set rabbitmq host and port

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-27 01:18:20 +00:00
kumy
3dd69a06e7 Use variables to set rabbitmq host and port 2019-09-26 20:53:55 -04:00
softwarefactory-project-zuul[bot]
cb8c9567b0 Merge pull request #4807 from ryanpetrello/cred-plugins-with-promptable-passphrase
fix a bug that prevents launch-time passphrases w/ cred plugins

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-26 21:40:58 +00:00
Ryan Petrello
d30d51d72c fix a bug that prevents launch-time passphrases w/ cred plugins
with the advent of credential plugins there's no way for us to *actually
know* the RSA key value at the time the credential is _created_, because
the order of operations is:

1.  Create the credential with a specified passphrase
2.  Associate a new dynamic inventory source pointed at some third party
    provider (hashi, cyberark, etc...)

this commit removes the code that warns you about an extraneous
passphrase (if you don't specify a private key)

additionally, the code for determining whether or not a credential
_requires_ a password/phrase at launch time has been updated to test
private key validity based on the *actual* value from the third party
provider

see: https://github.com/ansible/awx/issues/4791
2019-09-26 17:14:25 -04:00
softwarefactory-project-zuul[bot]
693e588a25 Merge pull request #4659 from bcoca/nicer_error
better error message on missing runner

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-26 20:52:33 +00:00
softwarefactory-project-zuul[bot]
0f42782feb Merge pull request #4804 from AlexSCorey/4616-4766-JTAddBtn-ToolBarCheckBox
ToolBar checkbox checks, JT Add Button closes and Test Clean up

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-26 20:41:27 +00:00
Alex Corey
90cac2ec35 fix lint errors 2019-09-26 16:11:34 -04:00
softwarefactory-project-zuul[bot]
8343552dfc Merge pull request #4822 from jbradberry/team-grant-permissions-visibility
Change the visibility of the Grant Permission button on the team edit page

Reviewed-by: Marliana Lara <marliana.lara@gmail.com>
             https://github.com/marshmalien
2019-09-26 20:02:56 +00:00
softwarefactory-project-zuul[bot]
c229e586da Merge pull request #4825 from jbradberry/prevent-notification-config-search
Prevent search on the NotificationTemplate.notification_configuration field

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-26 19:40:26 +00:00
softwarefactory-project-zuul[bot]
778b306208 Merge pull request #4824 from rooftopcellist/scl_in_containers
Add needed scl enables for community container installs

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-26 19:40:21 +00:00
softwarefactory-project-zuul[bot]
415592219c Merge pull request #4823 from ryanpetrello/even-more-pendo
allow *.pendo.io as an img-src in our Content Security Policy

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-26 19:40:16 +00:00
softwarefactory-project-zuul[bot]
3a7756393e Merge pull request #4816 from marshmalien/add-missing-job-detail-fields
Add missing job detail fields

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-26 19:40:10 +00:00
Jeff Bradberry
1a7148dc80 Prevent search on the NotificationTemplate.notification_configuration field 2019-09-26 14:37:04 -04:00
Alex Corey
d42ffd7353 Removes unused fnc and unnecessary props adds dom node to Empty State
This.node was use for the add button for both empty list and list with data.
This was done to reduce complexity in handleAddToggle() and I don't think it
will cause bugs because those two elements are not rendered at the same time.
2019-09-26 13:32:00 -04:00
Christian Adams
9f8d975a19 revert to get needed scl enables for community container installs 2019-09-26 13:24:26 -04:00
Ryan Petrello
955bb4a44c allow *.pendo.io as an img-src in our Content Security Policy 2019-09-26 13:12:54 -04:00
Keith Grant
71511b66ac fix JobTemplate tests 2019-09-26 10:01:34 -07:00
Marliana Lara
e97fc54deb Add class to StatusIcon wrapper and fix merge conflicts 2019-09-26 11:50:38 -04:00
Jeff Bradberry
ee27313b42 Change the visibility of the Grant Permission button on the team edit page
In the case where MANAGE_ORGANIZATION_AUTH = False, an Org admin is
still supposed to have the capability of adding resource roles to a
team.  This was in fact still doable directly in the API, or via the
organization edit page.
2019-09-26 11:28:25 -04:00
Keith Grant
439727f1bd extract new LabelSelect component from JobTemplateForm 2019-09-25 15:18:30 -07:00
Marliana Lara
76325eefd3 Expand job detail tests to verify more fields
* Update job detail tests to use large mock job data source
* Move mock job data source into a shared file
* Update OrgAccess snapshot due to DetailList style change
2019-09-25 16:39:05 -04:00
Marliana Lara
4b8a06801c Add missing job detail fields and status icons 2019-09-25 16:35:29 -04:00
Alex Corey
38b506bb94 Removes isPlain prop from DropdownItem 2019-09-25 10:28:57 -04:00
Keith Grant
61f6e3c4d2 Refactor to PlaybookSelect component 2019-09-24 14:49:15 -07:00
softwarefactory-project-zuul[bot]
640e5391f3 Merge pull request #4783 from AlexSCorey/4222-JobResultsDelete
Adds delete button to job details and handle delete errors

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-24 21:48:22 +00:00
Alex Corey
1316ace475 Fixes translation omissions 2019-09-24 16:34:09 -04:00
softwarefactory-project-zuul[bot]
3282caf629 Merge pull request #4770 from AlexSCorey/Pluralization
Requires individual components to pluralize

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-24 15:55:11 +00:00
Alex Corey
b3b53a8ce4 Pluralized modal titles and empty state strings
All itemNames used in empty state messages, and delete modal titles
need to be plural and capitalized.  Because of this change we no
longer need the ucFirst() in utils/strings.js.
2019-09-24 11:21:54 -04:00
Alex Corey
8dd4379bf2 Adds proper translation. removes ucFirst()> 2019-09-24 11:21:54 -04:00
Alex Corey
b79c686336 requires individual components to pluralize 2019-09-24 11:21:54 -04:00
softwarefactory-project-zuul[bot]
d08c601690 Merge pull request #4803 from ryanpetrello/more-pendo-fixes
correct CSP header to allow all pendo.io traffic

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-24 02:35:13 +00:00
softwarefactory-project-zuul[bot]
86f8d648cc Merge pull request #4787 from keithjgrant/qs-util-cleanup
QS util cleanup

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-23 23:03:22 +00:00
softwarefactory-project-zuul[bot]
34bdb6d1c3 Merge pull request #4808 from rooftopcellist/awxkit_docs_link
add link to awxkit docs

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-23 20:08:47 +00:00
Christian Adams
9548c8ae19 add link to awxkit docs 2019-09-23 15:38:51 -04:00
softwarefactory-project-zuul[bot]
e147869d75 Merge pull request #4789 from wenottingham/lacking-in-insights
Rename Automation Insights to Automation Analytics.

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-23 18:46:41 +00:00
Keith Grant
362339d89c add FieldTooltip component, some JobTemplateForm cleanup 2019-09-23 11:00:13 -07:00
softwarefactory-project-zuul[bot]
ebbcefd7df Merge pull request #4806 from beeankha/url_update
Update URL

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-23 17:42:01 +00:00
beeankha
6a9940c027 Update URL 2019-09-23 13:17:26 -04:00
softwarefactory-project-zuul[bot]
8c755dd316 Merge pull request #4795 from wenottingham/sanitization
Add some sanitizations

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-23 14:58:41 +00:00
softwarefactory-project-zuul[bot]
fcfd59ebe2 Merge pull request #4767 from beeankha/awx_doc_edits
[WIP] Edit AWX Docs

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-23 14:30:12 +00:00
Alex Corey
ce1d9793ce ToolBar checkbox checks and JT Add Button closes and Test Clean up
The Select-All check box in the DataList Toolbar will be checked when the
user clicks on it. Also, the JT Add button closes when the user clicks
elsewhere on the page as well as when the user clicks on the button a second time.
I also cleaned up some tests in the DataListToolBar file.
2019-09-23 09:49:38 -04:00
beeankha
f35ad41e17 Fix misc. errors and typos 2019-09-23 09:46:54 -04:00
Ryan Petrello
d52aa11422 correct CSP header to allow all pendo.io traffic 2019-09-23 09:15:55 -04:00
softwarefactory-project-zuul[bot]
c628a54c79 Merge pull request #4796 from wenottingham/get-our-finest-attributes
Fix SAML login when only certain attributes are set.

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-21 15:51:43 +00:00
Keith Grant
5d840af223 fix typo, clarify test names 2019-09-20 13:45:22 -07:00
Keith Grant
1f149bb086 refactor encodeNoneDefaultQueryString 2019-09-20 13:41:30 -07:00
Keith Grant
508535be66 rework removeParams 2019-09-20 13:41:30 -07:00
Keith Grant
cb69cac62d split qs addParams into mergeParams and replaceParams for clarity 2019-09-20 13:41:30 -07:00
Keith Grant
3ea4a32940 qs cleanup, more tests 2019-09-20 13:41:30 -07:00
Keith Grant
d6f93737c4 improve qs test coverage, minor cleanup 2019-09-20 13:41:30 -07:00
Keith Grant
eb0c4fd4d4 refactor parseQueryString 2019-09-20 13:41:30 -07:00
Bill Nottingham
36571a1275 Fix SAML login when only certain attributes are set.
The user may not set all of saml_{attr,admin_attr,auditor_attr},
so don't assume they all exist.
2019-09-20 15:28:38 -04:00
softwarefactory-project-zuul[bot]
b2b475d1a6 Merge pull request #4742 from jlmitch5/searchv2
ui_next search updates

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-20 18:28:52 +00:00
Bill Nottingham
01177f3632 Add some sanitizations (from @jakemcdermott, @mabashian) 2019-09-20 13:58:12 -04:00
John Mitchell
ac530e1328 utilize far instead of function for search type 2019-09-20 13:49:00 -04:00
John Mitchell
9605d8049d rewrite search key type check to be a var instead of a function 2019-09-20 13:49:00 -04:00
John Mitchell
d2e335c7c5 revert restriction on defaultParams 2019-09-20 13:49:00 -04:00
John Mitchell
678fba1ffb fix tests with search updates 2019-09-20 13:48:59 -04:00
John Mitchell
34e1b8be1d make default params only accept page, page_size and order_by 2019-09-20 13:48:59 -04:00
John Mitchell
86029934ad selectively add icontains to only text-based searches 2019-09-20 13:48:59 -04:00
softwarefactory-project-zuul[bot]
ec3edb07e8 Merge pull request #4779 from omgjlk/proper-vault-headers
Use proper headers to auth with Vault

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-20 16:30:56 +00:00
softwarefactory-project-zuul[bot]
fcc61a5752 Merge pull request #4777 from jlmitch5/styleCleanupUiNext
assorted style cleanup in UI next

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-20 16:00:27 +00:00
beeankha
860715d088 More AWX docs edits 2019-09-20 11:32:10 -04:00
beeankha
e2be392f31 Edit AWX docs 2019-09-20 11:32:10 -04:00
mabashian
f49d566f17 Update failed snapshot 2019-09-20 11:05:18 -04:00
mabashian
83e413b0bf Fix prettier failures 2019-09-20 11:05:18 -04:00
John Mitchell
e68349b6b5 assorted style cleanup in UI next
- round all corners of combo fields
- make sure required asterisk is always before help popover ?
- bug: fix ? popover from opening lookups
- fix spacing of detail toggle for http error
2019-09-20 11:05:18 -04:00
softwarefactory-project-zuul[bot]
14cc203945 Merge pull request #4784 from fosterseth/fix-3646-ldapserverfielduri
fix for LDAPServerURIField error if number present in top-level-domain

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-20 15:00:46 +00:00
Seth Foster
ca5de6378a Fix LDAPServerURIField number in domain
- Bug: API error if LDAPServerURIField contains a number in the top level domain
- Add custom regex in LDAPServerURIField class that is passed to django
  URLValidator
- The custom regex allows for numbers to be present in the top level domain
- Unit tests check that valid URIs pass through URLValidator, and that
  invalid URIs raise the correct exception
- Related to issue #3646
2019-09-20 10:36:47 -04:00
Alex Corey
1ebe91cbf7 Adds delete button to job details and handle delete errors
After successful deletion of Job the user is nativated back to Jobs List.
If the job is not successfully deleted a alert modal pops up and on close
the user remains on Job Details page.
2019-09-19 17:34:18 -04:00
softwarefactory-project-zuul[bot]
154cda7501 Merge pull request #4782 from mabashian/inventory-lookup
Changes InventoriesLookup to InventoryLookup

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-19 21:27:50 +00:00
Bill Nottingham
badba581fd Rename Automation Insights to Automation Analytics.
Fix user-facing code, don't worry about settings names.
2019-09-19 17:00:10 -04:00
mabashian
a6a50f0eb1 Changes InventoriesLookup to InventoryLookup and removes pluralization of lookup headers for Inventory and Project since only one can be selected. 2019-09-19 11:13:55 -04:00
softwarefactory-project-zuul[bot]
b00fc29cdc Merge pull request #4762 from shanemcd/devel
Fix cluster dev env

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-19 13:45:43 +00:00
softwarefactory-project-zuul[bot]
13f628f73d Merge pull request #4776 from mabashian/3924-icons
Fix 3rd party auth icon rendering in login modal

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-18 23:39:25 +00:00
Jesse Keating
e1bdbeaa5c Restore new style headers
This leads to having both the new style header and the old compatability
header. Best of both worlds!
2019-09-18 13:27:55 -07:00
Jesse Keating
b3c264bf21 Use proper headers to auth with Vault
Reading examples at
https://learn.hashicorp.com/vault/getting-started/apis show needing to
use `X-Vault-Token` header, instead of `Authorization`. Without this
header, the vault server would return a 400 status with an error message
of "missing client token". With this change AWX is now able to interface
with the Hashicorp backend.
2019-09-18 12:26:47 -07:00
mabashian
53992d41d5 Re-generate fontcustom .woff file. This should fix microsoft and google icon rendering on login modal. 2019-09-18 13:50:15 -04:00
softwarefactory-project-zuul[bot]
686d4fe26f Merge pull request #4769 from mabashian/4554-mgt-jobs-column
Fix management job column width issues

Reviewed-by: Michael Abashian
             https://github.com/mabashian
2019-09-17 18:35:47 +00:00
mabashian
774a4e32cc Fix management job column width issues 2019-09-17 13:45:20 -04:00
Shane McDonald
22441d280e Fix pg password in cluster dev env 2019-09-17 08:45:19 -04:00
softwarefactory-project-zuul[bot]
fe850c247f Merge pull request #4755 from rooftopcellist/fix_awx_pass
pass correct awx-dev password on startup

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-16 23:28:01 +00:00
softwarefactory-project-zuul[bot]
c651029cdb Merge pull request #4756 from AlexSCorey/4744-JobSchedulers
fixes grid so action buttons stay in view

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-16 22:06:58 +00:00
Christian Adams
54d50d71ab pass correct awx-dev password on startup 2019-09-16 17:25:15 -04:00
Alex Corey
ef4f1df9bb fixes grid so action buttons stay in view 2019-09-16 16:27:10 -04:00
softwarefactory-project-zuul[bot]
b5fa1606bd Merge pull request #4369 from AlanCoding/workflow_limit
Implementation of WFJT limit & SCM_branch prompting

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-16 20:17:59 +00:00
softwarefactory-project-zuul[bot]
3139bc9248 Merge pull request #4723 from rebeccahhh/devel
expose schedule name for scheduled workflow node job

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-16 20:17:54 +00:00
softwarefactory-project-zuul[bot]
a6c0793695 Merge pull request #4753 from AlexSCorey/4423-LoggingRevertNoSave
allows user to save form after reverting

Reviewed-by: Alex Corey <Alex.swansboro@gmail.com>
             https://github.com/AlexSCorey
2019-09-16 19:26:27 +00:00
softwarefactory-project-zuul[bot]
5a24e223b7 Merge pull request #4743 from AlexSCorey/4523-InertWFJTLink
allows all WFJT  tabs to properly route to workflow visualizer

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-16 19:26:20 +00:00
AlanCoding
e3c1189f56 bump migration 2019-09-16 14:51:57 -04:00
AlanCoding
fdf9dd733b bump migration 2019-09-16 14:51:56 -04:00
Jake McDermott
9697e1befb comment fixup 2019-09-16 14:51:56 -04:00
Jake McDermott
84a8559ea0 psuedo -> pseudo 2019-09-16 14:51:56 -04:00
Jake McDermott
8ac8fb9016 add more details to workflow limit help text 2019-09-16 14:51:56 -04:00
AlanCoding
01bb32ebb0 Deal with limit prompting in factory 2019-09-16 14:51:56 -04:00
AlanCoding
711c240baf Consistently give WJ extra_vars as text 2019-09-16 14:51:56 -04:00
AlanCoding
291528d823 adjust UI unit tests again
bump migration

bump migration again
2019-09-16 14:51:56 -04:00
AlanCoding
1406ea3026 Fix missing places for ask_limit and ask_scm_branch 2019-09-16 14:51:55 -04:00
AlanCoding
e8581f6892 Implement WFJT prompting for limit & scm_branch
add feature to UI and awxkit

restructure some details of create_unified_job
  for workflows to allow use of char_prompts
  hidden field
avoid conflict with sliced jobs in char_prompts copy logic

update developer docs

update migration reference

bump migration
2019-09-16 14:51:53 -04:00
Rebeccah
fbf182de28 removed refernce to workflow job in parent schedule naming as it is unnecessary 2019-09-16 14:22:37 -04:00
Rebeccah
5fab9e418b added functional test to test new schedule functionality 2019-09-16 14:22:37 -04:00
Rebeccah
d39b931377 added in logic to check if the parent workflow has a schedule and onsolidated a couple import statements 2019-09-16 14:22:37 -04:00
Alex Corey
9028afab07 allows user to save form after reverting 2019-09-16 12:55:31 -04:00
softwarefactory-project-zuul[bot]
d3b413c125 Merge pull request #4752 from shanemcd/drop-pg-scl
Stop using PG SCL in dev env

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-16 16:40:11 +00:00
softwarefactory-project-zuul[bot]
ab1db04164 Merge pull request #4734 from rooftopcellist/awx-dev
Revert DB passwords for container installs

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-16 16:09:15 +00:00
Shane McDonald
3b89e894db Stop using PG SCL in dev env 2019-09-16 11:41:13 -04:00
Christian Adams
bdbbb2a4a2 Fix authentication bug with container installs
- update awx-dev db password where needed
2019-09-15 19:52:41 -04:00
Alex Corey
9e8d0758c8 allows all WFJT tabs to properly route to workflow visualizer 2019-09-13 15:21:54 -04:00
softwarefactory-project-zuul[bot]
9f0657e19a Merge pull request #4714 from keithjgrant/4521-noti-template-type-switch
fix bugs when switching NTs to Webhook type

Reviewed-by: Keith Grant
             https://github.com/keithjgrant
2019-09-13 18:20:13 +00:00
softwarefactory-project-zuul[bot]
6bc09028ca Merge pull request #4741 from wenottingham/there-are-no-limits
Tweak license partial to properly show 'unlimited' for the value we consider unlimited.

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-13 17:36:04 +00:00
softwarefactory-project-zuul[bot]
e1c7cd7e9f Merge pull request #4740 from ryanpetrello/pycharm-port
change the default port range for the sdb debugging tool

Reviewed-by: Seth Foster
             https://github.com/fosterseth
2019-09-13 17:32:15 +00:00
softwarefactory-project-zuul[bot]
806648af89 Merge pull request #4611 from ryanpetrello/license-updates
update trial license enforcement logic

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-13 17:27:01 +00:00
softwarefactory-project-zuul[bot]
3e3940efd5 Merge pull request #4733 from keithjgrant/4612-lookup-param-bugs
Prevent Lookup search filters from affecting other Lookups on page

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-13 17:01:18 +00:00
Ryan Petrello
662033db44 fix some awxkit flake8 failures 2019-09-13 12:14:33 -04:00
Elijah DeLee
eba69142f1 add subscriptions endpoint to awxkit 2019-09-13 12:14:33 -04:00
mabashian
8a29276a7d Fix whitespace 2019-09-13 12:14:32 -04:00
mabashian
611f163289 Make sure that the license page under settings has creds available 2019-09-13 12:14:31 -04:00
mabashian
113622c05e Moves initial system settings rest call out to resolve 2019-09-13 12:14:31 -04:00
mabashian
608567795d Add support for looking up and selecting licenses on license page 2019-09-13 12:14:30 -04:00
Ryan Petrello
29fd399b06 introduce a new API for generating licenses from candlepin creds 2019-09-13 12:14:29 -04:00
mabashian
04f458c007 Cleanup inline styles 2019-09-13 12:14:29 -04:00
mabashian
38a7d62745 Add support for custom error messaging on license page 2019-09-13 12:14:28 -04:00
mabashian
53925f5e98 Tweaks to the ux for saved creds 2019-09-13 12:14:27 -04:00
mabashian
2474a3a2ea Pull creds into license form if available via settings 2019-09-13 12:14:27 -04:00
mabashian
900fcbf87e Add rh username and pass to license form 2019-09-13 12:14:26 -04:00
Ryan Petrello
846e67ee6a update trial license enforcement logic 2019-09-13 12:14:25 -04:00
Bill Nottingham
98daee4823 Show unlimited licenses as unlimited.
Don't show 'hosts remaining' for unlimited licenses.
2019-09-13 12:07:35 -04:00
Ryan Petrello
5ed97e0f65 change the default port range for the sdb debugging tool
the current range conflicts w/ a port used by the pycharm editor
2019-09-13 11:55:43 -04:00
Keith Grant
e854b179e4 add test for Lookup clearing QS params 2019-09-13 08:48:17 -07:00
Keith Grant
26e320582a namespace qs params for each lookup separately 2019-09-13 08:48:17 -07:00
Keith Grant
ee864b2df3 clear Lookup query params when lookup is closed 2019-09-13 08:48:17 -07:00
Keith Grant
e309ad25e4 de-lint 2019-09-13 08:45:19 -07:00
Keith Grant
55244834a3 fix bugs when switching NTs to Webhook type 2019-09-13 08:45:19 -07:00
softwarefactory-project-zuul[bot]
4e1fbb3e91 Merge pull request #4731 from ryanpetrello/job-event-contains-workflow
record the parent workflow ID for job events that originate from a WFJT

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-13 15:40:25 +00:00
softwarefactory-project-zuul[bot]
fe43bab174 Merge pull request #4727 from jakemcdermott/fix-4726
show extra vars on workflow template schedules

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-13 14:33:44 +00:00
softwarefactory-project-zuul[bot]
ed692018cd Merge pull request #4732 from ryanpetrello/cli-migrating
cli: show a better error if AWX is migrating

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-13 13:50:14 +00:00
Jake McDermott
311860e027 show extra vars on workflow template schedules
When the workflow job template prompts for extra vars, we show the
extra vars input field on the scheduler.
2019-09-13 09:12:15 -04:00
Ryan Petrello
b5225bd80d record the parent WFJ ID for job events that originate from a WFJT 2019-09-13 08:28:32 -04:00
softwarefactory-project-zuul[bot]
60fc952716 Merge pull request #4730 from shanemcd/fix-entrypoint-args
Consolidate scl enable calls

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-12 23:10:47 +00:00
Ryan Petrello
9d93cf8021 cli: show a better error if AWX is migrating
see: https://github.com/ansible/awx/issues/4721
2019-09-12 17:16:16 -04:00
Shane McDonald
fe0db4e329 Consolidate scl enable calls 2019-09-12 15:43:09 -04:00
Shane McDonald
3c0a0e1f4a Fix arg parsing in entrypoint 2019-09-12 15:12:04 -04:00
softwarefactory-project-zuul[bot]
70057bc0f2 Merge pull request #4058 from rooftopcellist/pg10
Postgres 10 Upgrade

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-12 18:58:34 +00:00
Shane McDonald
b2e8e3cc3d Add scl enable back to start_tests script
I think we need to specify the entrypoint in the pod definition too
2019-09-12 14:03:08 -04:00
Shane McDonald
804ec0dde9 Handle SCL enable in one place 2019-09-12 13:54:32 -04:00
softwarefactory-project-zuul[bot]
3e6131c509 Merge pull request #4724 from dsesami/flake-fixes
flake fixes for e2e

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-12 17:48:27 +00:00
Shane McDonald
e7bb5ac3e4 Fix tests 2019-09-12 13:41:41 -04:00
Daniel Sami
f2ccce3478 flake fixes for e2e 2019-09-12 13:05:35 -04:00
Shane McDonald
036567817e Implement local docker pg upgrade 2019-09-12 12:52:43 -04:00
Christian Adams
ec1e93cc69 Upgrade to postgres 10.6
- use awx-python in shebang in dev env
  - scl enable where needed for rhel7 & container installs
  - use scram-sha-256 pg user hashing by default
  - ensure psycopg2 is using the correct PG_CONFIG at build time for the right libpq version
2019-09-12 12:52:43 -04:00
Jose OrPa
04ab736f09 #3778 Upgrading postgresql to v10 2019-09-12 12:52:42 -04:00
softwarefactory-project-zuul[bot]
ffc6e2218e Merge pull request #4627 from rooftopcellist/upload_directly
Upload directly

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-12 14:40:53 +00:00
softwarefactory-project-zuul[bot]
253e0765bd Merge pull request #4719 from ryanpetrello/runner-on-start
add metadata for new runner_on_start events

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-12 14:06:07 +00:00
softwarefactory-project-zuul[bot]
2d78534223 Merge pull request #4674 from AlanCoding/clean_galaxy_out
Use project verbosity without color for galaxy commands

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-12 13:54:27 +00:00
softwarefactory-project-zuul[bot]
34645523fd Merge pull request #4718 from Spredzy/proper-args
e2e/test: NPMRC_FILE is a build-arg not an environment variable

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-12 13:40:50 +00:00
Ryan Petrello
90c7514303 add metadata for new runner_on_start events
see: https://github.com/ansible/awx/issues/4129
2019-09-12 09:05:54 -04:00
Yanis Guenane
3c22f99234 e2e/test: NPMRC_FILE is a build-arg not an environment variable 2019-09-12 14:39:28 +02:00
softwarefactory-project-zuul[bot]
d8fbf1e21a Merge pull request #4706 from ryanpetrello/faster-dashboard
optimize dashboard performance for larger UnifiedJob counts

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-12 10:51:42 +00:00
softwarefactory-project-zuul[bot]
168e03ea0e Merge pull request #4715 from ansible/cli-more-readme
cli: add instructions for using awx -h

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-12 01:37:05 +00:00
Ryan Petrello
3eecda4edc cli: add instructions for using awx -h 2019-09-11 20:43:20 -04:00
Ryan Petrello
c0d9600b66 WIP: optimize dashboard performance for larger UnifiedJob counts 2019-09-11 20:37:27 -04:00
softwarefactory-project-zuul[bot]
087b68aa65 Merge pull request #4713 from ryanpetrello/cli-readme
add a bit more detail to the awx CLI README

Reviewed-by: Christian Adams <rooftopcellist@gmail.com>
             https://github.com/rooftopcellist
2019-09-11 21:12:45 +00:00
Ryan Petrello
83ee4fb289 add a bit more detail to the awx CLI README 2019-09-11 16:24:13 -04:00
softwarefactory-project-zuul[bot]
51a724451c Merge pull request #4677 from marshmalien/4430-host-details-modal
[ui_next] Add host details modal

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-11 18:09:52 +00:00
Christian Adams
6309c0a426 Upload using RH cred settings 2019-09-11 13:24:09 -04:00
softwarefactory-project-zuul[bot]
14ef06854d Merge pull request #4711 from Spredzy/pass-npmrc
e2e/cluster: Allow one to pass a npmrc config file

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-11 15:49:22 +00:00
Marliana Lara
ad2e58cd43 Align the top of the modal to a fixed distance from the top of the
browser
2019-09-11 11:48:17 -04:00
Yanis Guenane
2ea280bbaf Dockerfile: Allow one to pass a npmrc file 2019-09-11 17:08:33 +02:00
softwarefactory-project-zuul[bot]
788c5d3741 Merge pull request #4709 from dsesami/flake-wait
Added a longer timeout for spinny specifically

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-11 14:39:05 +00:00
Yanis Guenane
0e5abb5fa3 Revert "add npm registry arg"
This reverts commit 844f3fde72.
2019-09-11 16:12:50 +02:00
Daniel Sami
5dbcafc392 Added a longer timeout for spinny specifically 2019-09-11 08:59:20 -04:00
Marliana Lara
e53c979344 Show changed status when the status is both ok and changed 2019-09-10 17:09:25 -04:00
Marliana Lara
2527a78874 Combine host and job status icons into one generic status icon 2019-09-10 17:06:53 -04:00
Marliana Lara
871f2cf9c5 Add host event modal tests and code cleanup 2019-09-10 16:29:25 -04:00
softwarefactory-project-zuul[bot]
f3dc4abe37 Merge pull request #4702 from AlexSCorey/4446-TokenDelete
Tokens Properly reload after successful deletion

Reviewed-by: Alex Corey <Alex.swansboro@gmail.com>
             https://github.com/AlexSCorey
2019-09-10 20:28:35 +00:00
softwarefactory-project-zuul[bot]
7646185e2c Merge pull request #4704 from keithjgrant/4522-save-nt-after-fixing-form-errors
Fix Notification Template form validation of headers field

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-10 19:56:33 +00:00
softwarefactory-project-zuul[bot]
a9a1c6eb6d Merge pull request #4683 from dsesami/npm-registry-arg
Add npm registry arg

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-10 19:56:25 +00:00
softwarefactory-project-zuul[bot]
4b1706401f Merge pull request #4686 from mabashian/ui_next-ux-improvements
Various UX improvements

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-10 19:44:22 +00:00
Keith Grant
8192b79b1f fix NT validation of headers after saving 2019-09-10 10:45:19 -07:00
softwarefactory-project-zuul[bot]
8868fa6416 Merge pull request #4689 from mabashian/search-tag-key
Display search key along with value in tag

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-10 17:28:03 +00:00
softwarefactory-project-zuul[bot]
71215d3d03 Merge pull request #4690 from mabashian/npm-audit
Upgrades lodash and angular-moment

Reviewed-by: Jake McDermott <yo@jakemcdermott.me>
             https://github.com/jakemcdermott
2019-09-10 17:20:05 +00:00
softwarefactory-project-zuul[bot]
5193209ca7 Merge pull request #4699 from mabashian/4549-not-found
Don't render the 404 not found page until the content's finished loading

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-10 17:14:32 +00:00
softwarefactory-project-zuul[bot]
d73dd02e5b Merge pull request #4628 from saito-hideki/issue/4528
Fix condition to show prompt button on the schedule add/edit form

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-10 16:59:03 +00:00
Alex Corey
e23c1477da Properly reloads after successful deletion 2019-09-10 12:13:41 -04:00
softwarefactory-project-zuul[bot]
19d6941034 Merge pull request #4697 from ryanpetrello/cli-human-uniqueness
cli: fix a minor bug in uniqueness rule detection

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-10 15:01:34 +00:00
mabashian
d4b2cacb3e Don't render the 404 not found page until the content's finished loading 2019-09-10 10:30:17 -04:00
softwarefactory-project-zuul[bot]
2f7476c804 Merge pull request #4692 from ryanpetrello/cli-detail-options
cli: make "detail" actions actually respect Allow: headers

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-10 14:18:12 +00:00
Ryan Petrello
39ee60a913 cli: fix a minor bug in uniqueness rule detection 2019-09-10 10:17:09 -04:00
mabashian
da43b9b84c Prettify FilterTags 2019-09-10 10:08:42 -04:00
softwarefactory-project-zuul[bot]
eaf3a28d57 Merge pull request #4695 from ryanpetrello/oauth-token-exclusive-lock
move the oauth2 last_used update to the bottom of the request

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-10 12:55:15 +00:00
Ryan Petrello
14f8ef4f44 move the oauth2 last_used update to the bottom of the request
this avoids acquiring a row lock (and holding it for the duration of
transactions which include a very slow query)
2019-09-10 08:15:13 -04:00
Ryan Petrello
ee47e98c50 cli: make "detail" actions actually respect Allow: headers 2019-09-09 21:11:15 -04:00
softwarefactory-project-zuul[bot]
edb7ddb9ae Merge pull request #4687 from AlexSCorey/4685-LookUpPluralization
Adds proper pluralization to Look Up modal empty state

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-09 21:23:32 +00:00
mabashian
f69f43e3ba Upgrades lodash and angular-moment 2019-09-09 16:31:11 -04:00
softwarefactory-project-zuul[bot]
d9a7859a05 Merge pull request #4630 from ryanpetrello/cli-roles
cli: add support for granting and revoking roles from users/teams

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-09 20:19:12 +00:00
softwarefactory-project-zuul[bot]
ff32a5286e Merge pull request #4688 from ryanpetrello/human-format-null
fix a human format bug for settings

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-09 20:08:59 +00:00
mabashian
629e2e89b9 Fix linting error 2019-09-09 15:50:41 -04:00
mabashian
ea015190de Display search key along with value in tag 2019-09-09 15:41:39 -04:00
Ryan Petrello
6762702868 cli: add support for granting and revoking roles from users/teams 2019-09-09 15:27:16 -04:00
Ryan Petrello
3e97608914 fix a human format bug for settings 2019-09-09 15:25:04 -04:00
Alex Corey
a95394b135 Adds proper pluralization to Look Up modal empty state 2019-09-09 14:55:39 -04:00
softwarefactory-project-zuul[bot]
276b577103 Merge pull request #4648 from ryanpetrello/format-metrics-human
cli: add special code for formatting metrics and settings with -f human

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-09 18:52:29 +00:00
softwarefactory-project-zuul[bot]
b1666f2692 Merge pull request #4653 from ryanpetrello/attach-detach-by-name
cli: add support for attach/detaching creds/notifications via name

Reviewed-by: Jake McDermott <yo@jakemcdermott.me>
             https://github.com/jakemcdermott
2019-09-09 18:52:22 +00:00
mabashian
1f8f4e184b Various UX improvements 2019-09-09 12:54:31 -04:00
Daniel Sami
844f3fde72 add npm registry arg 2019-09-09 11:56:10 -04:00
softwarefactory-project-zuul[bot]
a3a5db1c44 Merge pull request #4678 from wenottingham/cloudy-with-a-chance-of-updates
Update assorted cloud module requirements.

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-08 19:42:45 +00:00
softwarefactory-project-zuul[bot]
28630cb7fa Merge pull request #4650 from keithjgrant/4431-jt-form-advanced-fields
4431 jt form advanced fields

Reviewed-by: Keith Grant
             https://github.com/keithjgrant
2019-09-06 23:02:08 +00:00
Keith Grant
820605b0ca fix JT form tests 2019-09-06 14:29:00 -07:00
softwarefactory-project-zuul[bot]
bc79093102 Merge pull request #4679 from ryanpetrello/fix-doc-819
fix up a minor Swagger doc bug

Reviewed-by: Christian Adams <rooftopcellist@gmail.com>
             https://github.com/rooftopcellist
2019-09-06 21:15:34 +00:00
Ryan Petrello
eb2fc80114 fix up a minor Swagger doc bug 2019-09-06 16:28:06 -04:00
Bill Nottingham
eb2de51f86 add licenses for new azure deps 2019-09-06 15:55:16 -04:00
Bill Nottingham
7aa94a9bb5 Update assorted cloud module requirements.
Update boto3 for ec2_transit_gateway module.
Update Azure requirements to sync with Ansible 2.9 branch.
2019-09-06 15:30:08 -04:00
Keith Grant
be6f5e18ae fixing JT Form tests post-rebase 2019-09-06 11:35:24 -07:00
Keith Grant
9777b79818 hide overflow in ExpandingContainer while opening 2019-09-06 09:59:58 -07:00
Marliana Lara
25aa9bc43e Change empty state text 2019-09-06 12:52:44 -04:00
Marliana Lara
a79de2b4ed Fix existing test failures 2019-09-06 12:44:11 -04:00
Marliana Lara
7480baf256 Add host event modal 2019-09-06 12:43:53 -04:00
Marliana Lara
5babab7af4 Add host status icon and pull status styles into separate file 2019-09-06 12:43:17 -04:00
Keith Grant
4e73f4b778 show all advanced JT fields on edit form 2019-09-06 09:14:19 -07:00
softwarefactory-project-zuul[bot]
4f05955724 Merge pull request #4671 from gamuniz/fix_204_insights_api
fixed insights api 204 errors

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-06 16:03:46 +00:00
AlanCoding
ebc369bfef Use project verbosity without color for galaxy commands 2019-09-06 11:02:20 -04:00
Ben Thomasson
10d53637ad Changes uploader to use the insights api directly 2019-09-06 10:58:35 -04:00
Gabe Muniz
23a7151278 fixed insights api 204 errors 2019-09-06 09:27:17 -04:00
Keith Grant
0254cf3567 wire-in instance groups to JT form 2019-09-05 16:47:34 -07:00
softwarefactory-project-zuul[bot]
f91a02a9e4 Merge pull request #4661 from ansible/apurva_wait_for_job_fix
awxkit: don't suppress error when job does not exist

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-05 21:37:15 +00:00
Keith Grant
93b794eaa7 JT Form fixes after rebase 2019-09-05 13:45:30 -07:00
softwarefactory-project-zuul[bot]
927c99a2f4 Merge pull request #4667 from AlanCoding/update_fix
fix project sync revision bug

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-05 20:29:10 +00:00
softwarefactory-project-zuul[bot]
b4759de30d Merge pull request #4529 from wenottingham/the-pirates-are-bringing-r-bac
Fix display of indirect access permissions.

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-05 17:40:44 +00:00
Apurva Bakshi
11a71f5ffa fix attribute error 2019-09-05 13:16:39 -04:00
Ryan Petrello
064f871fff add special code for formatting metrics and settings with -f human
see: https://github.com/ansible/awx/issues/4566
2019-09-05 11:55:23 -04:00
softwarefactory-project-zuul[bot]
ffbce2611a Merge pull request #4656 from wenottingham/collection-fix
Revert 9b95cc27c4.

Reviewed-by: Alan Rominger <arominge@redhat.com>
             https://github.com/AlanCoding
2019-09-05 13:50:18 +00:00
softwarefactory-project-zuul[bot]
8b9ddb5922 Merge pull request #4663 from ryanpetrello/fix-3741
fix a 500 error that can occur when a WorkflowApproval's node is deleted

Reviewed-by: Bianca Henderson <beeankha@gmail.com>
             https://github.com/beeankha
2019-09-05 13:41:06 +00:00
AlanCoding
c65b77a20a fix project sync revision bug 2019-09-05 08:49:52 -04:00
Ryan Petrello
b7e8044d69 fix a 500 error that can occur when a WorkflowApproval's node is deleted 2019-09-04 21:12:22 -04:00
Keith Grant
8b1ca12d8f update JobTemplateForm tests 2019-09-04 15:54:30 -07:00
Keith Grant
4f546be87a add JT form callback fields 2019-09-04 14:35:39 -07:00
Keith Grant
e6475f21f6 flush out JT form; upgrade enzyme; add CheckboxField 2019-09-04 14:34:57 -07:00
Keith Grant
218348412b creat TagMultiSelect component; cleanup MultiSelect 2019-09-04 14:22:08 -07:00
Bill Nottingham
db64717551 Merge pull request #2 from AlanCoding/collection-fix-fix
Fix collection precedence bug, add new to left of list
2019-09-04 17:01:30 -04:00
Keith Grant
9edc686ab5 add generic onChange prop to MultiSelect 2019-09-04 13:58:32 -07:00
softwarefactory-project-zuul[bot]
c819a78a4b Merge pull request #4647 from rebeccahhh/devel
Added 'rescued' and 'ignored' fields into all_hosts dictionary update

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
2019-09-04 20:48:04 +00:00
AlanCoding
11146a071f Fix collection precedence bug, add new to left of list 2019-09-04 15:32:03 -04:00
Keith Grant
4d31d83e1e add instance groups to JT form 2019-09-04 11:22:02 -07:00
Keith Grant
3a9a884bbc add omitProps helper 2019-09-04 11:19:05 -07:00
Keith Grant
8a31be6ffe refactor lookup components 2019-09-04 11:19:05 -07:00
Keith Grant
6fd86fed65 add jt advanced fields 2019-09-04 10:45:34 -07:00
Brian Coca
9d48ba4243 better error message on missing runner 2019-09-04 13:16:55 -04:00
Keith Grant
80bdb1a67a add CollapsibleSection & ExpandingContainer components 2019-09-04 09:55:24 -07:00
Bill Nottingham
24c16b1c58 Fix to enable system paths along with requirements override, from @alancoding. 2019-09-04 11:43:48 -04:00
Bill Nottingham
0fb7c859f4 Revert 9b95cc27c4.
We do not want to create a new setting for a on-Tower-host global
collection path at this time.
2019-09-04 11:43:33 -04:00
Ryan Petrello
1e5bcca0b9 cli: add support for attach/detaching creds/notifications via name 2019-09-03 21:51:39 -04:00
Rebeccah
daba25f107 added 'ignored' and 'rescued' into all_hosts dictionary update 2019-09-03 18:58:29 -04:00
Hideki Saito
9d2441789e Fix condition to show prompt button on the schedule add/edit form
it hides the prompt button on survey form when prompt is extra vars only.

- Fixed issue #4528

Signed-off-by: Hideki Saito <saito@fgrep.org>
2019-09-03 02:15:14 +00:00
Bill Nottingham
b4f6b380fd Show a tooltip for indirect permissions to show where they come from. 2019-08-30 16:28:39 -04:00
Bill Nottingham
444f024bb0 Fix display of indirect access permissions.
For indirect roles, we need to actually show the derived roles, not the
details of the role that gives us the derived roles. This means that
we can get multiple derived roles from a single indirect role, so
we have to expand the list.
2019-08-20 20:28:53 -04:00
2103 changed files with 193576 additions and 94029 deletions

1
.github/BOTMETA.yml vendored
View File

@@ -1,3 +1,4 @@
---
files:
awx/ui/:
labels: component:ui

View File

@@ -30,8 +30,9 @@ https://www.ansible.com/security
##### STEPS TO REPRODUCE
<!-- For bugs, please show exactly how to reproduce the problem. For new
features, show how the feature would be used. -->
<!-- For new features, show how the feature would be used. For bugs, please show
exactly how to reproduce the problem. Ideally, provide all steps and data needed
to recreate the bug from a new awx install. -->
##### EXPECTED RESULTS

View File

@@ -3,6 +3,12 @@ name: "\U0001F41B Bug report"
about: Create a report to help us improve
---
<!-- Issues are for **concrete, actionable bugs and feature requests** only - if you're just asking for debugging help or technical support, please use:
- http://webchat.freenode.net/?channels=ansible-awx
- https://groups.google.com/forum/#!forum/awx-project
We have to limit this because of limited volunteer time to respond to issues! -->
##### ISSUE TYPE
- Bug Report

View File

@@ -3,6 +3,12 @@ name: "✨ Feature request"
about: Suggest an idea for this project
---
<!-- Issues are for **concrete, actionable bugs and feature requests** only - if you're just asking for debugging help or technical support, please use:
- http://webchat.freenode.net/?channels=ansible-awx
- https://groups.google.com/forum/#!forum/awx-project
We have to limit this because of limited volunteer time to respond to issues! -->
##### ISSUE TYPE
- Feature Idea

15
.gitignore vendored
View File

@@ -29,11 +29,15 @@ awx/ui/client/languages
awx/ui/templates/ui/index.html
awx/ui/templates/ui/installing.html
awx/ui_next/node_modules/
awx/ui_next/src/locales/
awx/ui_next/coverage/
awx/ui_next/build/locales/_build
awx/ui_next/build
awx/ui_next/.env.local
rsyslog.pid
/tower-license
/tower-license/**
tools/prometheus/data
tools/docker-compose/Dockerfile
# Tower setup playbook testing
setup/test/roles/postgresql
@@ -133,4 +137,13 @@ awx/lib/site-packages
venv/*
use_dev_supervisor.txt
# Ansible module tests
/awx_collection_test_venv/
/awx_collection/*.tar.gz
/sanity/
/awx_collection_build/
.idea/*
*.unison.tmp
*.#

12
.yamllint Normal file
View File

@@ -0,0 +1,12 @@
---
ignore: |
.tox
awx/main/tests/data/inventory/plugins/**
# vault files
awx/main/tests/data/ansible_utils/playbooks/valid/vault.yml
awx/ui/test/e2e/tests/smoke-vars.yml
extends: default
rules:
line-length: disable

286
CHANGELOG.md Normal file
View File

@@ -0,0 +1,286 @@
# Changelog
This is a list of high-level changes for each release of AWX. A full list of commits can be found at `https://github.com/ansible/awx/releases/tag/<version>`.
## 14.0.0 (Aug 6, 2020)
- As part of our commitment to inclusivity in open source, we recently took some time to audit AWX's source code and user interface and replace certain terminology with more inclusive language. Strictly speaking, this isn't a bug or a feature, but we think it's important and worth calling attention to:
* https://github.com/ansible/awx/commit/78229f58715fbfbf88177e54031f532543b57acc
* https://www.redhat.com/en/blog/making-open-source-more-inclusive-eradicating-problematic-language
- Installing roles and collections via requirements.yml as part of Project Updates now requires at least Ansible 2.9 - https://github.com/ansible/awx/issues/7769
- Deprecated the use of the `PRIMARY_GALAXY_USERNAME` and `PRIMARY_GALAXY_PASSWORD` settings. We recommend using tokens to access Galaxy or Automation Hub.
- Added local caching for downloaded roles and collections so they are not re-downloaded on nodes where they are up to date with the project - https://github.com/ansible/awx/issues/5518
- Added the ability to associate K8S/OpenShift credentials to Job Template for playbook interaction with the `community.kubernetes` collection - https://github.com/ansible/awx/issues/5735
- Added the ability to include HTML in the Custom Login Info presented on the login page - https://github.com/ansible/awx/issues/7600
- Fixed https://access.redhat.com/security/cve/cve-2020-14327 - Server-side request forgery on credentials
- Fixed https://access.redhat.com/security/cve/cve-2020-14328 - Server-side request forgery on webhooks
- Fixed https://access.redhat.com/security/cve/cve-2020-14329 - Sensitive data exposure on labels
- Fixed https://access.redhat.com/security/cve/cve-2020-14337 - Named URLs allow for testing the presence or absence of objects
- Fixed a number of bugs in the user interface related to an upgrade of jQuery:
* https://github.com/ansible/awx/issues/7530
* https://github.com/ansible/awx/issues/7546
* https://github.com/ansible/awx/issues/7534
* https://github.com/ansible/awx/issues/7606
- Fixed a bug that caused the `-f yaml` flag of the AWX CLI to not print properly formatted YAML - https://github.com/ansible/awx/issues/7795
- Fixed a bug in the installer that caused errors when `docker_registry_password` was set - https://github.com/ansible/awx/issues/7695
- Fixed a permissions error that prevented certain users from starting AWX services - https://github.com/ansible/awx/issues/7545
- Fixed a bug that allows superusers to run unsafe Jinja code when defining custom Credential Types - https://github.com/ansible/awx/pull/7584/
- Fixed a bug that prevented users from creating (or editing) custom Credential Types containing boolean fields - https://github.com/ansible/awx/issues/7483
- Fixed a bug that prevented users with postgres usernames containing uppercase letters from restoring backups succesfully - https://github.com/ansible/awx/pull/7519
- Fixed a bug which allowed the creation (in the Tower API) of Groups and Hosts with the same name - https://github.com/ansible/awx/issues/4680
## 13.0.0 (Jun 23, 2020)
- Added import and export commands to the official AWX CLI, replacing send and receive from the old tower-cli (https://github.com/ansible/awx/pull/6125).
- Removed scripts as a means of running inventory updates of built-in types (https://github.com/ansible/awx/pull/6911)
- Ansible 2.8 is now partially unsupported; some inventory source types are known to no longer work.
- Fixed an issue where the vmware inventory source ssl_verify source variable was not recognized (https://github.com/ansible/awx/pull/7360)
- Fixed a bug that caused redis' listen socket to have too-permissive file permissions (https://github.com/ansible/awx/pull/7317)
- Fixed a bug that caused rsyslogd's configuration file to have world-readable file permissions, potentially leaking secrets (CVE-2020-10782)
## 12.0.0 (Jun 9, 2020)
- Removed memcached as a dependency of AWX (https://github.com/ansible/awx/pull/7240)
- Moved to a single container image build instead of separate awx_web and awx_task images. The container image is just `awx` (https://github.com/ansible/awx/pull/7228)
- Official AWX container image builds now use a two-stage container build process that notably reduces the size of our published images (https://github.com/ansible/awx/pull/7017)
- Removed support for HipChat notifications ([EoL announcement](https://www.atlassian.com/partnerships/slack/faq#faq-98b17ca3-247f-423b-9a78-70a91681eff0)); all previously-created HipChat notification templates will be deleted due to this removal.
- Fixed a bug which broke AWX installations with oc version 4.3 (https://github.com/ansible/awx/pull/6948/)
- Fixed a performance issue that caused notable delay of stdout processing for playbooks run against large numbers of hosts (https://github.com/ansible/awx/issues/6991)
- Fixed a bug that caused CyberArk AIM credential plugin looks to hang forever in some environments (https://github.com/ansible/awx/issues/6986)
- Fixed a bug that caused ANY/ALL converage settings not to properly save when editing approval nodes in the UI (https://github.com/ansible/awx/issues/6998)
- Fixed a bug that broke support for the satellite6_group_prefix source variable (https://github.com/ansible/awx/issues/7031)
- Fixed a bug that prevented changes to workflow node convergence settings when approval nodes were in use (https://github.com/ansible/awx/issues/7063)
- Fixed a bug that caused notifications to fail on newer version of Mattermost (https://github.com/ansible/awx/issues/7264)
- Fixed a bug (by upgrading to 0.8.1 of the foreman collection) that prevented host_filters from working properly with Foreman-based inventory (https://github.com/ansible/awx/issues/7225)
- Fixed a bug that prevented the usage of the Conjur credential plugin with secrets that contain spaces (https://github.com/ansible/awx/issues/7191)
- Fixed a bug in awx-manage run_wsbroadcast --status in kubernetes (https://github.com/ansible/awx/pull/7009)
- Fixed a bug that broke notification toggles for system jobs in the UI (https://github.com/ansible/awx/pull/7042)
- Fixed a bug that broke local pip installs of awxkit (https://github.com/ansible/awx/issues/7107)
- Fixed a bug that prevented PagerDuty notifications from sending for workflow job template approvals (https://github.com/ansible/awx/issues/7094)
- Fixed a bug that broke external log aggregation support for URL paths that include the = character (such as the tokens for SumoLogic) (https://github.com/ansible/awx/issues/7139)
- Fixed a bug that prevented organization admins from removing labels from workflow job templates (https://github.com/ansible/awx/pull/7143)
## 11.2.0 (Apr 29, 2020)
- Inventory updates now use collection-based plugins by default (in Ansible 2.9+):
- amazon.aws.aws_ec2
- community.vmware.vmware_vm_inventory
- azure.azcollection.azure_rm
- google.cloud.gcp_compute
- theforeman.foreman.foreman
- openstack.cloud.openstack
- ovirt.ovirt_collection.ovirt
- awx.awx.tower
- Added support for Approle and LDAP/AD mechanisms to the Hashicorp Vault credential plugin (https://github.com/ansible/awx/issues/5076)
- Added Project (Domain Name) support for the OpenStack Keystone v3 API (https://github.com/ansible/awx/issues/6831)
- Added a new setting for raising log verbosity for rsyslogd (https://github.com/ansible/awx/pull/6818)
- Added the ability to monitor stdout in the CLI for running jobs and workflow jobs (https://github.com/ansible/awx/issues/6165)
- Fixed a bug which prevented the AWX CLI from properly installing with newer versions of pip (https://github.com/ansible/awx/issues/6870)
- Fixed a bug which broke AWX's external logging support when configured with HTTPS endpoints that utilize self-signed certificates (https://github.com/ansible/awx/issues/6851)
- Fixed a local docker installer bug that mistakenly attempted to upgrade PostgreSQL when an external pg_hostname is specified (https://github.com/ansible/awx/pull/5398)
- Fixed a race condition that caused task container crashes when pods are quickly brought down and back up (https://github.com/ansible/awx/issues/6750)
- Fixed a bug that caused 404 errors when attempting to view the second page of the workflow approvals view (https://github.com/ansible/awx/issues/6803)
- Fixed a bug that prevented the use of ANSIBLE_SSH_ARGS for ad-hoc-commands (https://github.com/ansible/awx/pull/6811)
- Fixed a bug that broke AWX installs/upgrades on Red Hat OpenShift (https://github.com/ansible/awx/issues/6791)
## 11.1.0 (Apr 22, 2020)
- Changed rsyslogd to persist queued events to disk (to prevent a risk of out-of-memory errors) (https://github.com/ansible/awx/issues/6746)
- Added the ability to configure the destination and maximum disk size of rsyslogd spool (in the event of a log aggregator outage) (https://github.com/ansible/awx/pull/6763)
- Added the ability to discover playbooks in project clones from symlinked directories (https://github.com/ansible/awx/pull/6773)
- Fixed a bug that caused certain log aggregator settings to break logging integration (https://github.com/ansible/awx/issues/6760)
- Fixed a bug that caused playbook execution in container groups to sometimes unexpectedly deadlock (https://github.com/ansible/awx/issues/6692)
- Improved stability of the new redis clustering implementation (https://github.com/ansible/awx/pull/6739 https://github.com/ansible/awx/pull/6720)
- Improved stability of the new rsyslogd-based logging implementation (https://github.com/ansible/awx/pull/6796)
## 11.0.0 (Apr 16, 2020)
- As of AWX 11.0.0, Kubernetes-based deployments use a Deployment rather than a StatefulSet.
- Reimplemented external logging support using rsyslogd to improve reliability and address a number of issues (https://github.com/ansible/awx/issues/5155)
- Changed activity stream logs to include summary fields for related objects (https://github.com/ansible/awx/issues/1761)
- Added code to more gracefully attempt to reconnect to redis if it restarts/becomes unavailable (https://github.com/ansible/awx/pull/6670)
- Fixed a bug that caused REFRESH_TOKEN_EXPIRE_SECONDS to not properly be respected for OAuth2.0 refresh tokens generated by AWX (https://github.com/ansible/awx/issues/6630)
- Fixed a bug that broke schedules containing RRULES with very old DTSTART dates (https://github.com/ansible/awx/pull/6550)
- Fixed a bug that broke installs on older versions of Ansible packaged with certain Linux distributions (https://github.com/ansible/awx/issues/5501)
- Fixed a bug that caused the activity stream to sometimes report the incorrect actor when associating user membership on SAML login (https://github.com/ansible/awx/pull/6525)
- Fixed a bug in AWX's Grafana notification support when annotation tags are omitted (https://github.com/ansible/awx/issues/6580)
- Fixed a bug that prevented some users from searching for Source Control credentials in the AWX user interface (https://github.com/ansible/awx/issues/6600)
- Fixed a bug that prevented disassociating orphaned users from credentials (https://github.com/ansible/awx/pull/6554)
- Updated Twisted to address CVE-2020-10108 and CVE-2020-10109.
## 10.0.0 (Mar 30, 2020)
- As of AWX 10.0.0, the official AWX CLI no longer supports Python 2 (it requires at least Python 3.6) (https://github.com/ansible/awx/pull/6327)
- AWX no longer relies on RabbitMQ; Redis is added as a new dependency (https://github.com/ansible/awx/issues/5443)
- Altered AWX's event tables to allow more than ~2 billion total events (https://github.com/ansible/awx/issues/6010)
- Improved the performance (time to execute, and memory consumption) of the periodic job cleanup system job (https://github.com/ansible/awx/pull/6166)
- Updated Job Templates so they now have an explicit Organization field (it is no longer inferred from the associated Project) (https://github.com/ansible/awx/issues/3903)
- Updated social-auth-core to address an upcoming GitHub API deprecation (https://github.com/ansible/awx/issues/5970)
- Updated to ansible-runner 1.4.6 to address various bugs.
- Updated Django to address CVE-2020-9402
- Updated pyyaml version to address CVE-2017-18342
- Fixed a bug which prevented the new `scm_branch` field from being used in custom notification templates (https://github.com/ansible/awx/issues/6258)
- Fixed a race condition that sometimes causes success/failure notifications to include an incomplete list of hosts (https://github.com/ansible/awx/pull/6290)
- Fixed a bug that can cause certain setting pages to lose unsaved form edits when a playbook is launched (https://github.com/ansible/awx/issues/5265)
- Fixed a bug that can prevent the "Use TLS/SSL" field from properly saving when editing email notification templates (https://github.com/ansible/awx/issues/6383)
- Fixed a race condition that sometimes broke event/stdout processing for jobs launched in container groups (https://github.com/ansible/awx/issues/6280)
## 9.3.0 (Mar 12, 2020)
- Added the ability to specify an OAuth2 token description in the AWX CLI (https://github.com/ansible/awx/issues/6122)
- Added support for K8S service account annotations to the installer (https://github.com/ansible/awx/pull/6007)
- Added support for K8S imagePullSecrets to the installer (https://github.com/ansible/awx/pull/5989)
- Launching jobs (and workflows) using the --monitor flag in the AWX CLI now returns a non-zero exit code on job failure (https://github.com/ansible/awx/issues/5920)
- Improved UI performance for various job views when many simultaneous users are logged into AWX (https://github.com/ansible/awx/issues/5883)
- Updated to the latest version of Django to address a few open CVEs (https://github.com/ansible/awx/pull/6080)
- Fixed a critical bug which can cause AWX to hang and stop launching playbooks after a periodic of time (https://github.com/ansible/awx/issues/5617)
- Fixed a bug which caused delays in project update stdout for certain large SCM clones (as of Ansible 2.9+) (https://github.com/ansible/awx/pull/6254)
- Fixed a bug which caused certain smart inventory filters to mistakenly return duplicate hosts (https://github.com/ansible/awx/pull/5972)
- Fixed an unclear server error when creating smart inventories with the AWX collection (https://github.com/ansible/awx/issues/6250)
- Fixed a bug that broke Grafana notification support (https://github.com/ansible/awx/issues/6137)
- Fixed a UI bug which prevent users with read access to an organization from editing credentials for that organization (https://github.com/ansible/awx/pull/6241)
- Fixed a bug which prevent workflow approval records from recording a `started` and `elapsed` date (https://github.com/ansible/awx/issues/6202)
- Fixed a bug which caused workflow nodes to have a confusing option for `verbosity` (https://github.com/ansible/awx/issues/6196)
- Fixed an RBAC bug which prevented projects and inventory schedules from being created by certain users in certain contexts (https://github.com/ansible/awx/issues/5717)
- Fixed a bug that caused `role_path` in a project's config to not be respected due to an error processing `/etc/ansible/ansible.cfg` (https://github.com/ansible/awx/pull/6038)
- Fixed a bug that broke inventory updates for installs with custom home directories for the awx user (https://github.com/ansible/awx/pull/6152)
- Fixed a bug that broke fact data collection when AWX encounters invalid/unexpected fact data (https://github.com/ansible/awx/issues/5935)
## 9.2.0 (Feb 12, 2020)
- Added the ability to configure the convergence behavior of workflow nodes https://github.com/ansible/awx/issues/3054
- AWX now allows for a configurable global limit for fork count (per-job run). The default maximum is 200. https://github.com/ansible/awx/pull/5604
- Added the ability to specify AZURE_PUBLIC_CLOUD (for e.g., Azure Government KeyVault support) for the Azure credential plugin https://github.com/ansible/awx/issues/5138
- Added support for several additional parameters for Satellite dynamic inventory https://github.com/ansible/awx/pull/5598
- Added a new field to jobs for tracking the date/time a job is cancelled https://github.com/ansible/awx/pull/5610
- Made a series of additional optimizations to the callback receiver to further improve stdout write speed for running playbooks https://github.com/ansible/awx/pull/5677 https://github.com/ansible/awx/pull/5739
- Updated AWX to be compatible with Helm 3.x (https://github.com/ansible/awx/pull/5776)
- Optimized AWX's job dependency/scheduling code to drastically improve processing time in scenarios where there are many pending jobs scheduled simultaneously https://github.com/ansible/awx/issues/5154
- Fixed a bug which could cause SCM authentication details (basic auth passwords) to be reported to external loggers in certain failure scenarios (e.g., when a git clone fails and ansible itself prints an error message to stdout) https://github.com/ansible/awx/pull/5812
- Fixed a k8s installer bug that caused installs to fail in certain situations https://github.com/ansible/awx/issues/5574
- Fixed a number of issues that caused analytics gathering and reporting to run more often than necessary https://github.com/ansible/awx/pull/5721
- Fixed a bug in the AWX CLI that prevented JSON-type settings from saving properly https://github.com/ansible/awx/issues/5528
- Improved support for fetching custom virtualenv dependencies when AWX is installed behind a proxy https://github.com/ansible/awx/pull/5805
- Updated the bundled version of openstacksdk to address a known issue https://github.com/ansible/awx/issues/5821
- Updated the bundled vmware_inventory plugin to the latest version to address a bug https://github.com/ansible/awx/pull/5668
- Fixed a bug that can cause inventory updates to fail to properly save their output when run within a workflow https://github.com/ansible/awx/pull/5666
- Removed a number of pre-computed fields from the Host and Group models to improve AWX performance. As part of this change, inventory group UIs throughout the interface no longer display status icons https://github.com/ansible/awx/pull/5448
## 9.1.1 (Jan 14, 2020)
- Fixed a bug that caused database migrations on Kubernetes installs to hang https://github.com/ansible/awx/pull/5579
- Upgraded Python-level app dependencies in AWX virtual environment https://github.com/ansible/awx/pull/5407
- Running jobs no longer block associated inventory updates https://github.com/ansible/awx/pull/5519
- Fixed invalid_response SAML error https://github.com/ansible/awx/pull/5577
- Optimized the callback receiver to drastically improve the write speed of stdout for parallel jobs (https://github.com/ansible/awx/pull/5618)
## 9.1.0 (Dec 17, 2019)
- Added a command to generate a new SECRET_KEY and rekey the secrets in the database
- Removed project update locking when jobs using it are running
- Fixed slow queries for /api/v2/instances and /api/v2/instance_groups when smart inventories are used
- Fixed a partial password disclosure when special characters existed in the RabbitMQ password (CVE-2019-19342)
- Fixed hang in error handling for source control checkouts
- Fixed an error on subsequent job runs that override the branch of a project on an instance that did not have a prior project checkout
- Fixed an issue where jobs launched in isolated or container groups would incorrectly timeout
- Fixed an incorrect link to instance groups documentation in the user interface
- Fixed editing of inventory on Workflow templates
- Fixed multiple issues with OAuth2 token cleanup system jobs
- Fixed a bug that broke email notifications for workflow approval/deny https://github.com/ansible/awx/issues/5401
- Updated SAML implementation to automatically login if authorization already exists
- Updated AngularJS to 1.7.9 for CVE-2019-10768
## 9.0.1 (Nov 4, 2019)
- Fixed a bug in the installer that broke certain types of k8s installs https://github.com/ansible/awx/issues/5205
## 9.0.0 (Oct 31, 2019)
- Updated AWX images to use centos:8 as the parent image.
- Updated to ansible-runner 1.4.4 to address various bugs.
- Added oc and kubectl to the AWX images to support new container-based execution introduced in 8.0.0.
- Added some optimizations to speed up the deletion of large Inventory Groups.
- Fixed a bug that broke webhook launches for Job Templates that define a survey (https://github.com/ansible/awx/issues/5062).
- Fixed a bug in the CLI which incorrectly parsed launch time arguments for `awx job_templates launch` and `awx workflow_job_templates launch` (https://github.com/ansible/awx/issues/5093).
- Fixed a bug that caused inventory updates using "sourced from a project" to stop working (https://github.com/ansible/awx/issues/4750).
- Fixed a bug that caused Slack notifications to sometimes show the wrong bot avatar (https://github.com/ansible/awx/pull/5125).
- Fixed a bug that prevented the use of digits in AWX's URL settings (https://github.com/ansible/awx/issues/5081).
## 8.0.0 (Oct 21, 2019)
- The Ansible Tower Ansible modules have been migrated to a new official Ansible AWX collection: https://galaxy.ansible.com/awx/AWX
Please note that this functionality is only supported in Ansible 2.9+
- AWX now supports the ability to launch jobs from external webhooks (GitHub and GitLab integration are supported).
- AWX now supports Container Groups, a new feature that allows you to schedule and run playbooks on single-use kubernetes pods on-demand.
- AWX now supports sending notifications when Workflow steps are approved, denied, or time out.
- AWX now records the user who approved or denied Workflow steps.
- AWX now supports fetching Ansible Collections from private galaxy servers.
- AWX now checks the user's ansible.cfg for paths where role/collections may live when running project updates.
- AWX now uses PostgreSQL 10 by default.
- AWX now warns more loudly about underlying AMQP connectivity issues (https://github.com/ansible/awx/pull/4857).
- Added a few optimizations to drastically improve dashboard performance for larger AWX installs (installs with several hundred thousand jobs or more).
- Updated to the latest version of Ansible's VMWare inventory script (which adds support for vmware_guest_facts).
- Deprecated /api/v2/inventory_scripts/ (this endpoint - and the Custom Inventory Script feature - will be removed in a future release of AWX).
- Fixed a bug which prevented Organization Admins from removing users from their own Organization (https://github.com/ansible/awx/issues/2979)
- Fixed a bug which sometimes caused cluster nodes to fail to re-join with a cryptic error, "No instance found with the current cluster host id" (https://github.com/ansible/awx/issues/4294)
- Fixed a bug that prevented the use of launch-time passphrases when using credential plugins (https://github.com/ansible/awx/pull/4807)
- Fixed a bug that caused notifications assigned at the Organization level not to take effect for Workflows in that Organization (https://github.com/ansible/awx/issues/4712)
- Fixed a bug which caused a notable amount of CPU overhead on RabbitMQ health checks (https://github.com/ansible/awx/pull/5009)
- Fixed a bug which sometimes caused the <return> key to stop functioning in <textarea> elements (https://github.com/ansible/awx/issues/4192)
- Fixed a bug which caused request contention when the same OAuth2.0 token was used in multiple simultaneous requests (https://github.com/ansible/awx/issues/4694)
- Fixed a bug related to parsing multiple choice survey options (https://github.com/ansible/awx/issues/4452).
- Fixed a bug that caused single-sign-on icons on the login page to fail to render in certain Windows browsers (https://github.com/ansible/awx/issues/3924)
- Fixed a number of bugs that caused certain OAuth2 settings to not be properly respected, such as REFRESH_TOKEN_EXPIRE_SECONDS.
- Fixed a number of bugs in the AWX CLI, including a bug which sometimes caused long lines of stdout output to be unexpectedly truncated.
- Fixed a number of bugs on the job details UI which sometimes caused auto-scrolling stdout to become stuck.
- Fixed a bug which caused LDAP authentication to fail if the TLD of the server URL contained digits (https://github.com/ansible/awx/issues/3646)
- Fixed a bug which broke HashiCorp Vault integration on older versions of HashiCorp Vault.
## 7.0.0 (Sept 4, 2019)
- AWX now detects and installs Ansible Collections defined in your project (note - this feature only works in Ansible 2.9+) (https://github.com/ansible/awx/issues/2534)
- AWX now includes an official command line client. Keep an eye out for a follow-up email on this mailing list for information on how to install it and try it out.
- Added the ability to provide a specific SCM branch on jobs (https://github.com/ansible/awx/issues/282)
- Added support for Workflow Approval Nodes, a new feature which allows you to add "pause and wait for approval" steps into your workflows (https://github.com/ansible/awx/issues/1206)
- Added the ability to specify a specific HTTP method for webhook notifications (POST vs PUT) (https://github.com/ansible/awx/pull/4124)
- Added the ability to specify a username and password for HTTP Basic Authorization for webhook notifications (https://github.com/ansible/awx/pull/4124)
- Added support for customizing the text content of notifications (https://github.com/ansible/awx/issues/79)
- Added the ability to enable and disable hosts in dynamic inventory (https://github.com/ansible/awx/pull/4420)
- Added the description (if any) to the Job Template list (https://github.com/ansible/awx/issues/4359)
- Added new metrics for instance hostnames and pending jobs to the /api/v2/metrics/ endpoint (https://github.com/ansible/awx/pull/4375)
- Changed AWX's on/off toggle buttons to a non-text based style to simplify internationalization (https://github.com/ansible/awx/pull/4425)
- Events emitted by ansible for adhoc commands are now sent to the external log aggregrator (https://github.com/ansible/awx/issues/4545)
- Fixed a bug which allowed a user to make an organization credential in another organization without permissions to that organization (https://github.com/ansible/awx/pull/4483)
- Fixed a bug that caused `extra_vars` on workflows to break when edited (https://github.com/ansible/awx/issues/4293)
- Fixed a slow SQL query that caused performance issues when large numbers of groups exist (https://github.com/ansible/awx/issues/4461)
- Fixed a few minor bugs in survey field validation (https://github.com/ansible/awx/pull/4509) (https://github.com/ansible/awx/pull/4479)
- Fixed a bug that sometimes resulted in orphaned `ansible_runner_pi` directories in `/tmp` after playbook execution (https://github.com/ansible/awx/pull/4409)
- Fixed a bug that caused the `is_system_auditor` flag in LDAP configuration to not work (https://github.com/ansible/awx/pull/4396)
- Fixed a bug which caused schedules to disappear from the UI when toggled off (https://github.com/ansible/awx/pull/4378)
- Fixed a bug that sometimes caused stdout content to contain extraneous blank lines in newer versions of Ansible (https://github.com/ansible/awx/pull/4391)
- Updated to the latest Django security release, 2.2.4 (https://github.com/ansible/awx/pull/4410) (https://www.djangoproject.com/weblog/2019/aug/01/security-releases/)
- Updated the default version of git to a version that includes support for x509 certificates (https://github.com/ansible/awx/issues/4362)
- Removed the deprecated `credential` field from `/api/v2/workflow_job_templates/N/` (as part of the `/api/v1/` removal in prior AWX versions - https://github.com/ansible/awx/pull/4490).
## 6.1.0 (Jul 18, 2019)
- Updated AWX to use Django 2.2.2.
- Updated the provided openstacksdk version to support new functionality (such as Nova scheduler_hints)
- Added the ability to specify a custom cacert for the HashiCorp Vault credential plugin
- Fixed a number of bugs related to path lookups for the HashiCorp Vault credential plugin
- Fixed a bug which prevented signed SSH certificates from working, including the HashiCorp Vault Signed SSH backend
- Fixed a bug which prevented custom logos from displaying on the login page (as a result of a new Content Security Policy in 6.0.0)
- Fixed a bug which broke websocket connectivity in Apple Safari (as a result of a new Content Security Policy in 6.0.0)
- Fixed a bug on the job output page that occasionally caused the "up" and "down" buttons to not load additional output
- Fixed a bug on the job output page that caused quoted task names to display incorrectly
## 6.0.0 (Jul 1, 2019)
- Removed support for "Any" notification templates and their API endpoints e.g., /api/v2/job_templates/N/notification_templates/any/ (https://github.com/ansible/awx/issues/4022)
- Fixed a bug which prevented credentials from properly being applied to inventory sources (https://github.com/ansible/awx/issues/4059)
- Fixed a bug which can cause the task dispatcher to hang indefinitely when external logging support (e.g., Splunk, Logstash) is enabled (https://github.com/ansible/awx/issues/4181)
- Fixed a bug which causes slow stdout display when running jobs against smart inventories. (https://github.com/ansible/awx/issues/3106)
- Fixed a bug that caused SSL verification flags to fail to be respected for LDAP authentication in certain environments. (https://github.com/ansible/awx/pull/4190)
- Added a simple Content Security Policy (https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) to restrict access to third-party resources in the browser. (https://github.com/ansible/awx/pull/4167)
- Updated ovirt4 library dependencies to work with newer versions of oVirt (https://github.com/ansible/awx/issues/4138)
## 5.0.0 (Jun 21, 2019)
- Bump Django Rest Framework from 3.7.7 to 3.9.4
- Bump setuptools / pip dependencies
- Fixed bug where Recent Notification list would not appear
- Added notifications on job start
- Default to Ansible 2.8

View File

@@ -155,12 +155,10 @@ If you start a second terminal session, you can take a look at the running conta
(host)$ docker ps
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
aa4a75d6d77b gcr.io/ansible-tower-engineering/awx_devel:devel "/tini -- /bin/sh ..." 23 seconds ago Up 15 seconds 0.0.0.0:5555->5555/tcp, 0.0.0.0:6899-6999->6899-6999/tcp, 0.0.0.0:8013->8013/tcp, 0.0.0.0:8043->8043/tcp, 22/tcp, 0.0.0.0:8080->8080/tcp tools_awx_1
e4c0afeb548c postgres:9.6 "docker-entrypoint..." 26 seconds ago Up 23 seconds 5432/tcp tools_postgres_1
0089699d5afd tools_logstash "/docker-entrypoin..." 26 seconds ago Up 25 seconds tools_logstash_1
4d4ff0ced266 memcached:alpine "docker-entrypoint..." 26 seconds ago Up 25 seconds 0.0.0.0:11211->11211/tcp tools_memcached_1
92842acd64cd rabbitmq:3-management "docker-entrypoint..." 26 seconds ago Up 24 seconds 4369/tcp, 5671-5672/tcp, 15671/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp tools_rabbitmq_1
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
44251b476f98 gcr.io/ansible-tower-engineering/awx_devel:devel "/entrypoint.sh /bin…" 27 seconds ago Up 23 seconds 0.0.0.0:6899->6899/tcp, 0.0.0.0:7899-7999->7899-7999/tcp, 0.0.0.0:8013->8013/tcp, 0.0.0.0:8043->8043/tcp, 0.0.0.0:8080->8080/tcp, 22/tcp, 0.0.0.0:8888->8888/tcp tools_awx_run_9e820694d57e
40de380e3c2e redis:latest "docker-entrypoint.s…" 28 seconds ago Up 26 seconds
b66a506d3007 postgres:10 "docker-entrypoint.s…" 28 seconds ago Up 26 seconds 0.0.0.0:5432->5432/tcp tools_postgres_1
```
**NOTE**
@@ -216,18 +214,23 @@ Using `docker exec`, this will create a session in the running *awx* container,
If you want to start and use the development environment, you'll first need to bootstrap it by running the following command:
```bash
(container)# /bootstrap_development.sh
(container)# /usr/bin/bootstrap_development.sh
```
The above will do all the setup tasks, including running database migrations, so it may take a couple minutes.
The above will do all the setup tasks, including running database migrations, so it may take a couple minutes. Once it's done it
will drop you back to the shell.
Now you can start each service individually, or start all services in a pre-configured tmux session like so:
In order to launch all developer services:
```bash
(container)# cd /awx_devel
(container)# make server
(container)# /usr/bin/launch_awx.sh
```
`launch_awx.sh` also calls `bootstrap_development.sh` so if all you are doing is launching the supervisor to start all services, you don't
need to call `bootstrap_development.sh` first.
### Post Build Steps
Before you can log in and use the system, you will need to create an admin user. Optionally, you may also want to load some demo data.

View File

@@ -2,96 +2,8 @@
## Introduction
Upgrades using Django migrations are not expected to work in AWX. As a result, to upgrade to a new version, it is necessary to export resources from the old AWX node and import them into a freshly-installed node with the new version. The recommended way to do this is to use the tower-cli send/receive feature.
Early versions of AWX did not support seamless upgrades between major versions and required the use of a backup and restore tool to perform upgrades.
This tool does __not__ support export/import of the following:
* Logs/history
* Credential passwords
* LDAP/AWX config
Users who wish to upgrade modern AWX installations should follow the instructions at:
### Install & Configure Tower-CLI
In terminal, pip install tower-cli (if you do not have pip already, install [here](https://pip.pypa.io/en/stable/installing/)):
```
$ pip install --upgrade ansible-tower-cli
```
The AWX host URL, user, and password must be set for the AWX instance to be exported:
```
$ tower-cli config host http://<old-awx-host.example.com>
$ tower-cli config username <user>
$ tower-cli config password <pass>
```
For more information on installing tower-cli look [here](http://tower-cli.readthedocs.io/en/latest/quickstart.html).
### Export Resources
Export all objects
```$ tower-cli receive --all > assets.json```
### Teardown Old AWX
Clean up remnants of the old AWX install:
```docker rm -f $(docker ps -aq)``` # remove all old awx containers
```make clean-ui``` # clean up ui artifacts
### Install New AWX version
If you are installing AWX as a dev container, pull down the latest code or version you want from GitHub, build
the image locally, then start the container
```
git pull # retrieve latest AWX changes from repository
make docker-compose-build # build AWX image
make docker-compose # run container
```
For other install methods, refer to the [Install.md](https://github.com/ansible/awx/blob/devel/INSTALL.md).
### Import Resources
Configure tower-cli for your new AWX host as shown earlier. Import from a JSON file named assets.json
```
$ tower-cli config host http://<new-awx-host.example.com>
$ tower-cli config username <user>
$ tower-cli config password <pass>
$ tower-cli send assets.json
```
--------------------------------------------------------------------------------
## Additional Info
If you have two running AWX hosts, it is possible to copy all assets from one instance to another
```$ tower-cli receive --tower-host old-awx-host.example.com --all | tower-cli send --tower-host new-awx-host.example.com```
#### More Granular Exports:
Export all credentials
```$ tower-cli receive --credential all > credentials.json```
> Note: This exports the credentials with blank strings for passwords and secrets
Export a credential named "My Credential"
```$ tower-cli receive --credential "My Credential"```
#### More Granular Imports:
You could import anything except an organization defined in a JSON file named assets.json
```$ tower-cli send --prevent organization assets.json```
https://github.com/ansible/awx/blob/devel/INSTALL.md#upgrading-from-previous-versions

View File

@@ -4,46 +4,61 @@ This document provides a guide for installing AWX.
## Table of contents
- [Getting started](#getting-started)
- [Clone the repo](#clone-the-repo)
- [AWX branding](#awx-branding)
- [Prerequisites](#prerequisites)
- [System Requirements](#system-requirements)
- [AWX Tunables](#awx-tunables)
- [Choose a deployment platform](#choose-a-deployment-platform)
- [Official vs Building Images](#official-vs-building-images)
- [OpenShift](#openshift)
- [Prerequisites](#prerequisites-1)
- [Deploying to Minishift](#deploying-to-minishift)
- [Pre-build steps](#pre-build-steps)
- [PostgreSQL](#postgresql)
- [Start the build](#start-the-build)
- [Post build](#post-build)
- [Accessing AWX](#accessing-awx)
- [Kubernetes](#kubernetes)
- [Prerequisites](#prerequisites-2)
- [Pre-build steps](#pre-build-steps-1)
- [Configuring Helm](#configuring-helm)
- [Start the build](#start-the-build-1)
- [Accessing AWX](#accessing-awx-1)
- [SSL Termination](#ssl-termination)
- [Docker Compose](#docker-compose)
- [Prerequisites](#prerequisites-3)
- [Pre-build steps](#pre-build-steps-2)
- [Deploying to a remote host](#deploying-to-a-remote-host)
- [Inventory variables](#inventory-variables)
- [Installing AWX](#installing-awx)
* [Getting started](#getting-started)
+ [Clone the repo](#clone-the-repo)
+ [AWX branding](#awx-branding)
+ [Prerequisites](#prerequisites)
+ [System Requirements](#system-requirements)
+ [Choose a deployment platform](#choose-a-deployment-platform)
+ [Official vs Building Images](#official-vs-building-images)
* [Upgrading from previous versions](#upgrading-from-previous-versions)
* [OpenShift](#openshift)
+ [Prerequisites](#prerequisites-1)
+ [Pre-install steps](#pre-install-steps)
- [Deploying to Minishift](#deploying-to-minishift)
- [PostgreSQL](#postgresql)
+ [Run the installer](#run-the-installer)
+ [Post-install](#post-install)
+ [Accessing AWX](#accessing-awx)
* [Kubernetes](#kubernetes)
+ [Prerequisites](#prerequisites-2)
+ [Pre-install steps](#pre-install-steps-1)
+ [Configuring Helm](#configuring-helm)
+ [Run the installer](#run-the-installer-1)
+ [Post-install](#post-install-1)
+ [Accessing AWX](#accessing-awx-1)
+ [SSL Termination](#ssl-termination)
* [Docker-Compose](#docker-compose)
+ [Prerequisites](#prerequisites-3)
+ [Pre-install steps](#pre-install-steps-2)
- [Deploying to a remote host](#deploying-to-a-remote-host)
- [Inventory variables](#inventory-variables)
- [Docker registry](#docker-registry)
- [PostgreSQL](#postgresql-1)
- [Proxy settings](#proxy-settings)
- [Start the build](#start-the-build-2)
- [Post build](#post-build-2)
- [Accessing AWX](#accessing-awx-2)
- [PostgreSQL](#postgresql-1)
+ [Run the installer](#run-the-installer-2)
+ [Post-install](#post-install-2)
+ [Accessing AWX](#accessing-awx-2)
- [Installing the AWX CLI](#installing-the-awx-cli)
* [Building the CLI Documentation](#building-the-cli-documentation)
## Getting started
### Clone the repo
If you have not already done so, you will need to clone, or create a local copy, of the [AWX repo](https://github.com/ansible/awx). For more on how to clone the repo, view [git clone help](https://git-scm.com/docs/git-clone).
If you have not already done so, you will need to clone, or create a local copy, of the [AWX repo](https://github.com/ansible/awx). We generally recommend that you view the releases page:
https://github.com/ansible/awx/releases
...and clone the latest stable release, e.g.,
`git clone -b x.y.z https://github.com/ansible/awx.git`
Please note that deploying from `HEAD` (or the latest commit) is **not** stable, and that if you want to do this, you should proceed at your own risk (also, see the section #official-vs-building-images for building your own image).
For more on how to clone the repo, view [git clone help](https://git-scm.com/docs/git-clone).
Once you have a local copy, run commands within the root of the project tree.
@@ -57,7 +72,7 @@ To install the assets, clone the `awx-logos` repo so that it is next to your `aw
Before you can run a deployment, you'll need the following installed in your local environment:
- [Ansible](http://docs.ansible.com/ansible/latest/intro_installation.html) Requires Version 2.4+
- [Ansible](http://docs.ansible.com/ansible/latest/intro_installation.html) Requires Version 2.8+
- [Docker](https://docs.docker.com/engine/installation/)
+ A recent version
- [docker](https://pypi.org/project/docker/) Python module
@@ -65,8 +80,11 @@ Before you can run a deployment, you'll need the following installed in your loc
+ We use this module instead of `docker-py` because it is what the `docker-compose` Python module requires.
- [GNU Make](https://www.gnu.org/software/make/)
- [Git](https://git-scm.com/) Requires Version 1.8.4+
- Python 3.6+
- [Node 10.x LTS version](https://nodejs.org/en/download/)
+ This is only required if you're [building your own container images](#official-vs-building-images) with `use_container_for_build=false`
- [NPM 6.x LTS](https://docs.npmjs.com/)
+ This is only required if you're [building your own container images](#official-vs-building-images) with `use_container_for_build=false`
### System Requirements
@@ -76,11 +94,7 @@ The system that runs the AWX service will need to satisfy the following requirem
- At least 2 cpu cores
- At least 20GB of space
- Running Docker, Openshift, or Kubernetes
- If you choose to use an external PostgreSQL database, please note that the minimum version is 9.6+.
### AWX Tunables
**TODO** add tunable bits
- If you choose to use an external PostgreSQL database, please note that the minimum version is 10+.
### Choose a deployment platform
@@ -95,7 +109,7 @@ In the sections below, you'll find deployment details and instructions for each
### Official vs Building Images
When installing AWX you have the option of building your own images or using the images provided on DockerHub (see [awx_web](https://hub.docker.com/r/ansible/awx_web/) and [awx_task](https://hub.docker.com/r/ansible/awx_task/))
When installing AWX you have the option of building your own image or using the image provided on DockerHub (see [awx](https://hub.docker.com/r/ansible/awx/))
This is controlled by the following variables in the `inventory` file
@@ -108,17 +122,42 @@ If these variables are present then all deployments will use these hosted images
*dockerhub_base*
> The base location on DockerHub where the images are hosted (by default this pulls container images named `ansible/awx_web:tag` and `ansible/awx_task:tag`)
> The base location on DockerHub where the images are hosted (by default this pulls a container image named `ansible/awx:tag`)
*dockerhub_version*
> Multiple versions are provided. `latest` always pulls the most recent. You may also select version numbers at different granularities: 1, 1.0, 1.0.1, 1.0.0.123
*use_container_for_build*
> Use a local distribution build container image for building the AWX package. This is helpful if you don't want to bother installing the build-time dependencies as it is taken care of already.
## Upgrading from previous versions
Upgrading AWX involves rerunning the install playbook. Download a newer release from [https://github.com/ansible/awx/releases](https://github.com/ansible/awx/releases) and re-populate the inventory file with your customized variables.
For convenience, you can create a file called `vars.yml`:
```
admin_password: 'adminpass'
pg_password: 'pgpass'
secret_key: 'mysupersecret'
```
And pass it to the installer:
```
$ ansible-playbook -i inventory install.yml -e @vars.yml
```
## OpenShift
### Prerequisites
To complete a deployment to OpenShift, you will obviously need access to an OpenShift cluster. For demo and testing purposes, you can use [Minishift](https://github.com/minishift/minishift) to create a single node cluster running inside a virtual machine.
To complete a deployment to OpenShift, you will need access to an OpenShift cluster. For demo and testing purposes, you can use [Minishift](https://github.com/minishift/minishift) to create a single node cluster running inside a virtual machine.
When using OpenShift for deploying AWX make sure you have correct privileges to add the security context 'privileged', otherwise the installation will fail. The privileged context is needed because of the use of [the bubblewrap tool](https://github.com/containers/bubblewrap) to add an additional layer of security when using containers.
You will also need to have the `oc` command in your PATH. The `install.yml` playbook will call out to `oc` when logging into, and creating objects on the cluster.
@@ -131,9 +170,9 @@ This can be tuned by overriding the variables found in [/installer/roles/kuberne
For more detail on how resource requests are formed see: [https://docs.openshift.com/container-platform/latest/dev_guide/compute_resources.html#dev-compute-resources](https://docs.openshift.com/container-platform/latest/dev_guide/compute_resources.html#dev-compute-resources)
### Pre-build steps
### Pre-install steps
Before starting the build process, review the [inventory](./installer/inventory) file, and uncomment and provide values for the following variables found in the `[all:vars]` section:
Before starting the install, review the [inventory](./installer/inventory) file, and uncomment and provide values for the following variables found in the `[all:vars]` section:
*openshift_host*
@@ -193,22 +232,22 @@ $ eval $(minishift docker-env)
By default, AWX will deploy a PostgreSQL pod inside of your cluster. You will need to create a [Persistent Volume Claim](https://docs.openshift.org/latest/dev_guide/persistent_volumes.html) which is named `postgresql` by default, and can be overridden by setting the `openshift_pg_pvc_name` variable. For testing and demo purposes, you may set `openshift_pg_emptydir=yes`.
If you wish to use an external database, in the inventory file, set the value of `pg_hostname`, and update `pg_username`, `pg_password`, `pg_database`, and `pg_port` with the connection information. When setting `pg_hostname` the installer will assume you have configured the database in that location and will not launch the postgresql pod.
If you wish to use an external database, in the inventory file, set the value of `pg_hostname`, and update `pg_username`, `pg_password`, `pg_admin_password`, `pg_database`, and `pg_port` with the connection information. When setting `pg_hostname` the installer will assume you have configured the database in that location and will not launch the postgresql pod.
### Start the build
### Run the installer
To start the build, you will pass two *extra* variables on the command line. The first is *openshift_password*, which is the password for the *openshift_user*, and the second is *docker_registry_password*, which is the password associated with *docker_registry_username*.
To start the install, you will pass two *extra* variables on the command line. The first is *openshift_password*, which is the password for the *openshift_user*, and the second is *docker_registry_password*, which is the password associated with *docker_registry_username*.
If you're using the OpenShift internal registry, then you'll pass an access token for the *docker_registry_password* value, rather than a password. The `oc whoami -t` command will generate the required token, as long as you're logged into the cluster via `oc cluster login`.
To start the build and deployment, run the following (docker_registry_password is optional if using official images):
Run the following command (docker_registry_password is optional if using official images):
```bash
# Start the build and deployment
# Start the install
$ ansible-playbook -i inventory install.yml -e openshift_password=developer -e docker_registry_password=$(oc whoami -t)
```
### Post build
### Post-install
After the playbook run completes, check the status of the deployment by running `oc get pods`:
@@ -312,7 +351,7 @@ Once you access the AWX server, you will be prompted with a login dialog. The de
A Kubernetes deployment will require you to have access to a Kubernetes cluster as well as the following tools:
- [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/)
- [helm](https://docs.helm.sh/using_helm/#quickstart-guide)
- [helm](https://helm.sh/docs/intro/quickstart/)
The installation program will reference `kubectl` directly. `helm` is only necessary if you are letting the installer configure PostgreSQL for you.
@@ -325,9 +364,9 @@ This can be tuned by overriding the variables found in [/installer/roles/kuberne
For more detail on how resource requests are formed see: [https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/](https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/)
### Pre-build steps
### Pre-install steps
Before starting the build process, review the [inventory](./installer/inventory) file, and uncomment and provide values for the following variables found in the `[all:vars]` section uncommenting when necessary. Make sure the openshift and standalone docker sections are commented out:
Before starting the install process, review the [inventory](./installer/inventory) file, and uncomment and provide values for the following variables found in the `[all:vars]` section uncommenting when necessary. Make sure the openshift and standalone docker sections are commented out:
*kubernetes_context*
@@ -343,11 +382,13 @@ Before starting the build process, review the [inventory](./installer/inventory)
### Configuring Helm
If you want the AWX installer to manage creating the database pod (rather than installing and configuring postgres on your own). Then you will need to have a working `helm` installation, you can find details here: [https://docs.helm.sh/using_helm/#quickstart-guide](https://docs.helm.sh/using_helm/#quickstart-guide).
If you want the AWX installer to manage creating the database pod (rather than installing and configuring postgres on your own). Then you will need to have a working `helm` installation, you can find details here: [https://helm.sh/docs/intro/quickstart/](https://helm.sh/docs/intro/quickstart/).
Newer Kubernetes clusters with RBAC enabled will need to make sure a service account is created, make sure to follow the instructions here [https://docs.helm.sh/using_helm/#role-based-access-control](https://docs.helm.sh/using_helm/#role-based-access-control)
You do not need to create a [Persistent Volume Claim](https://docs.openshift.org/latest/dev_guide/persistent_volumes.html) as Helm does it for you. However, an existing one may be used by setting the `pg_persistence_existingclaim` variable.
### Start the build
Newer Kubernetes clusters with RBAC enabled will need to make sure a service account is created, make sure to follow the instructions here [https://helm.sh/docs/topics/rbac/](https://helm.sh/docs/topics/rbac/)
### Run the installer
After making changes to the `inventory` file use `ansible-playbook` to begin the install
@@ -355,7 +396,7 @@ After making changes to the `inventory` file use `ansible-playbook` to begin the
$ ansible-playbook -i inventory install.yml
```
### Post build
### Post-install
After the playbook run completes, check the status of the deployment by running `kubectl get pods --namespace awx` (replace awx with the namespace you used):
@@ -403,7 +444,7 @@ Unlike Openshift's `Route` the Kubernetes `Ingress` doesn't yet handle SSL termi
+ This also installs the `docker` Python module, which is incompatible with `docker-py`. If you have previously installed `docker-py`, please uninstall it.
- [Docker Compose](https://docs.docker.com/compose/install/).
### Pre-build steps
### Pre-install steps
#### Deploying to a remote host
@@ -434,7 +475,7 @@ If you choose to use the official images then the remote host will be the one to
#### Inventory variables
Before starting the build process, review the [inventory](./installer/inventory) file, and uncomment and provide values for the following variables found in the `[all:vars]` section:
Before starting the install process, review the [inventory](./installer/inventory) file, and uncomment and provide values for the following variables found in the `[all:vars]` section:
*postgres_data_dir*
@@ -442,20 +483,24 @@ Before starting the build process, review the [inventory](./installer/inventory)
*host_port*
> Provide a port number that can be mapped from the Docker daemon host to the web server running inside the AWX container. Defaults to *80*.
> Provide a port number that can be mapped from the Docker daemon host to the web server running inside the AWX container. If undefined no port will be exposed. Defaults to *80*.
*host_port_ssl*
> Provide a port number that can be mapped from the Docker daemon host to the web server running inside the AWX container for SSL support. Defaults to *443*, only works if you also set `ssl_certificate` (see below).
> Provide a port number that can be mapped from the Docker daemon host to the web server running inside the AWX container for SSL support. If undefined no port will be exposed. Defaults to *443*, only works if you also set `ssl_certificate` (see below).
*ssl_certificate*
> Optionally, provide the path to a file that contains a certificate and its private key.
> Optionally, provide the path to a file that contains a certificate and its private key. This needs to be a .pem-file
*docker_compose_dir*
> When using docker-compose, the `docker-compose.yml` file will be created there (default `/tmp/awxcompose`).
*custom_venv_dir*
> Adds the custom venv environments from the local host to be passed into the containers at install.
*ca_trust_dir*
> If you're using a non trusted CA, provide a path where the untrusted Certs are stored on your Host.
@@ -476,10 +521,6 @@ If you wish to tag and push built images to a Docker registry, set the following
> Username of the user that will push images to the registry. Defaults to *developer*.
*docker_remove_local_images*
> Due to the way that the docker_image module behaves, images will not be pushed to a remote repository if they are present locally. Set this to delete local versions of the images that will be pushed to the remote. This will fail if containers are currently running from those images.
**Note**
> These settings are ignored if using official images
@@ -503,11 +544,11 @@ If you wish to tag and push built images to a Docker registry, set the following
AWX requires access to a PostgreSQL database, and by default, one will be created and deployed in a container, and data will be persisted to a host volume. In this scenario, you must set the value of `postgres_data_dir` to a path that can be mounted to the container. When the container is stopped, the database files will still exist in the specified path.
If you wish to use an external database, in the inventory file, set the value of `pg_hostname`, and update `pg_username`, `pg_password`, `pg_database`, and `pg_port` with the connection information.
If you wish to use an external database, in the inventory file, set the value of `pg_hostname`, and update `pg_username`, `pg_password`, `pg_admin_password`, `pg_database`, and `pg_port` with the connection information.
### Start the build
### Run the installer
If you are not pushing images to a Docker registry, start the build by running the following:
If you are not pushing images to a Docker registry, start the install by running the following:
```bash
# Set the working directory to installer
@@ -527,25 +568,16 @@ $ cd installer
$ ansible-playbook -i inventory -e docker_registry_password=password install.yml
```
### Post build
### Post-install
After the playbook run completes, Docker will report up to 5 running containers. If you chose to use an existing PostgresSQL database, then it will report 4. You can view the running containers using the `docker ps` command, as follows:
```bash
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e240ed8209cd awx_task:1.0.0.8 "/tini -- /bin/sh ..." 2 minutes ago Up About a minute 8052/tcp awx_task
1cfd02601690 awx_web:1.0.0.8 "/tini -- /bin/sh ..." 2 minutes ago Up About a minute 0.0.0.0:443->8052/tcp awx_web
55a552142bcd memcached:alpine "docker-entrypoint..." 2 minutes ago Up 2 minutes 11211/tcp memcached
84011c072aad rabbitmq:3 "docker-entrypoint..." 2 minutes ago Up 2 minutes 4369/tcp, 5671-5672/tcp, 25672/tcp rabbitmq
97e196120ab3 postgres:9.6 "docker-entrypoint..." 2 minutes ago Up 2 minutes 5432/tcp postgres
```
After the playbook run completes, Docker starts a series of containers that provide the services that make up AWX. You can view the running containers using the `docker ps` command.
If you're deploying using Docker Compose, container names will be prefixed by the name of the folder where the docker-compose.yml file is created (by default, `awx`).
Immediately after the containers start, the *awx_task* container will perform required setup tasks, including database migrations. These tasks need to complete before the web interface can be accessed. To monitor the progress, you can follow the container's STDOUT by running the following:
```bash
# Tail the the awx_task log
# Tail the awx_task log
$ docker logs -f awx_task
```
@@ -605,13 +637,31 @@ The AWX web server is accessible on the deployment host, using the *host_port* v
You will prompted with a login dialog. The default administrator username is `admin`, and the password is `password`.
### Maintenance using docker-compose
After the installation, maintenance operations with docker-compose can be done by using the `docker-compose.yml` file created at the location pointed by `docker_compose_dir`.
# Installing the AWX CLI
Among the possible operations, you may:
`awx` is the official command-line client for AWX. It:
- Stop AWX : `docker-compose stop`
- Upgrade AWX : `docker-compose pull && docker-compose up --force-recreate`
* Uses naming and structure consistent with the AWX HTTP API
* Provides consistent output formats with optional machine-parsable formats
* To the extent possible, auto-detects API versions, available endpoints, and
feature support across multiple versions of AWX.
See the [docker-compose documentation](https://docs.docker.com/compose/) for details.
Potential uses include:
* Configuring and launching jobs/playbooks
* Checking on the status and output of job runs
* Managing objects like organizations, users, teams, etc...
The preferred way to install the AWX CLI is through pip directly from PyPI:
pip3 install awxkit
awx --help
## Building the CLI Documentation
To build the docs, spin up a real AWX server, `pip3 install sphinx sphinxcontrib-autoprogram`, and run:
~ TOWER_HOST=https://awx.example.org TOWER_USERNAME=example TOWER_PASSWORD=secret make clean html
~ cd build/html/ && python -m http.server
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ..

View File

@@ -31,7 +31,7 @@ If your issue isn't considered high priority, then please be patient as it may t
`state:needs_info` The issue needs more information. This could be more debug output, more specifics out the system such as version information. Any detail that is currently preventing this issue from moving forward. This should be considered a blocked state.
`state:needs_review` The the issue/pull request needs to be reviewed by other maintainers and contributors. This is usually used when there is a question out to another maintainer or when a person is less familar with an area of the code base the issue is for.
`state:needs_review` The issue/pull request needs to be reviewed by other maintainers and contributors. This is usually used when there is a question out to another maintainer or when a person is less familar with an area of the code base the issue is for.
`state:needs_revision` More commonly used on pull requests, this state represents that there are changes that are being waited on.

View File

@@ -6,10 +6,13 @@ recursive-include awx/templates *.html
recursive-include awx/api/templates *.md *.html
recursive-include awx/ui/templates *.html
recursive-include awx/ui/static *
recursive-include awx/ui_next/build *.html
recursive-include awx/ui_next/build *
recursive-include awx/playbooks *.yml
recursive-include awx/lib/site-packages *
recursive-include awx/plugins *.ps1
recursive-include requirements *.txt
recursive-include requirements *.yml
recursive-include config *
recursive-include docs/licenses *
recursive-exclude awx devonly.py*

242
Makefile
View File

@@ -6,12 +6,14 @@ PACKER ?= packer
PACKER_BUILD_OPTS ?= -var 'official=$(OFFICIAL)' -var 'aw_repo_url=$(AW_REPO_URL)'
NODE ?= node
NPM_BIN ?= npm
CHROMIUM_BIN=/tmp/chrome-linux/chrome
DEPS_SCRIPT ?= packaging/bundle/deps.py
GIT_BRANCH ?= $(shell git rev-parse --abbrev-ref HEAD)
MANAGEMENT_COMMAND ?= awx-manage
IMAGE_REPOSITORY_AUTH ?=
IMAGE_REPOSITORY_BASE ?= https://gcr.io
VERSION := $(shell cat VERSION)
PYCURL_SSL_LIBRARY ?= openssl
# NOTE: This defaults the container image version to the branch that's active
COMPOSE_TAG ?= $(GIT_BRANCH)
@@ -24,7 +26,10 @@ CELERY_SCHEDULE_FILE ?= /var/lib/awx/beat.db
DEV_DOCKER_TAG_BASE ?= gcr.io/ansible-tower-engineering
# Python packages to install only from source (not from binary wheels)
# Comma separated list
SRC_ONLY_PKGS ?= cffi,pycparser,psycopg2,twilio
SRC_ONLY_PKGS ?= cffi,pycparser,psycopg2,twilio,pycurl
# These should be upgraded in the AWX and Ansible venv before attempting
# to install the actual requirements
VENV_BOOTSTRAP ?= pip==19.3.1 setuptools==41.6.0
# Determine appropriate shasum command
UNAME_S := $(shell uname -s)
@@ -74,6 +79,7 @@ clean-ui: clean-languages
rm -rf awx/ui/test/e2e/reports/
rm -rf awx/ui/client/languages/
rm -rf awx/ui_next/node_modules/
rm -rf node_modules
rm -rf awx/ui_next/coverage/
rm -rf awx/ui_next/build/locales/_build/
rm -f $(UI_DEPS_FLAG_FILE)
@@ -99,20 +105,26 @@ clean-languages:
find . -type f -regex ".*\.mo$$" -delete
# Remove temporary build files, compiled Python files.
clean: clean-ui clean-dist
clean: clean-ui clean-api clean-awxkit clean-dist
rm -rf awx/public
rm -rf awx/lib/site-packages
rm -rf awx/job_status
rm -rf awx/job_output
rm -rf reports
rm -f awx/awx_test.sqlite3*
rm -rf requirements/vendor
rm -rf tmp
rm -rf $(I18N_FLAG_FILE)
mkdir tmp
clean-api:
rm -rf build $(NAME)-$(VERSION) *.egg-info
find . -type f -regex ".*\.py[co]$$" -delete
find . -type d -name "__pycache__" -delete
rm -f awx/awx_test.sqlite3*
rm -rf requirements/vendor
rm -rf awx/projects
clean-awxkit:
rm -rf awxkit/*.egg-info awxkit/.tox awxkit/build/*
# convenience target to assert environment variables are defined
guard-%:
@@ -123,16 +135,16 @@ guard-%:
virtualenv: virtualenv_ansible virtualenv_awx
# virtualenv_* targets do not use --system-site-packages to prevent bugs installing packages
# but Ansible venvs are expected to have this, so that must be done after venv creation
virtualenv_ansible:
if [ "$(VENV_BASE)" ]; then \
if [ ! -d "$(VENV_BASE)" ]; then \
mkdir $(VENV_BASE); \
fi; \
if [ ! -d "$(VENV_BASE)/ansible" ]; then \
virtualenv -p python --system-site-packages $(VENV_BASE)/ansible && \
$(VENV_BASE)/ansible/bin/pip install $(PIP_OPTIONS) --ignore-installed six packaging appdirs && \
$(VENV_BASE)/ansible/bin/pip install $(PIP_OPTIONS) --ignore-installed setuptools==36.0.1 && \
$(VENV_BASE)/ansible/bin/pip install $(PIP_OPTIONS) --ignore-installed pip==9.0.1; \
virtualenv -p python $(VENV_BASE)/ansible && \
$(VENV_BASE)/ansible/bin/pip install $(PIP_OPTIONS) $(VENV_BOOTSTRAP); \
fi; \
fi
@@ -142,36 +154,45 @@ virtualenv_ansible_py3:
mkdir $(VENV_BASE); \
fi; \
if [ ! -d "$(VENV_BASE)/ansible" ]; then \
$(PYTHON) -m venv --system-site-packages $(VENV_BASE)/ansible; \
virtualenv -p $(PYTHON) $(VENV_BASE)/ansible; \
$(VENV_BASE)/ansible/bin/pip install $(PIP_OPTIONS) $(VENV_BOOTSTRAP); \
fi; \
fi
# flit is needed for offline install of certain packages, specifically ptyprocess
# it is needed for setup, but not always recognized as a setup dependency
# similar to pip, setuptools, and wheel, these are all needed here as a bootstrapping issues
virtualenv_awx:
if [ "$(VENV_BASE)" ]; then \
if [ ! -d "$(VENV_BASE)" ]; then \
mkdir $(VENV_BASE); \
fi; \
if [ ! -d "$(VENV_BASE)/awx" ]; then \
$(PYTHON) -m venv --system-site-packages $(VENV_BASE)/awx; \
$(VENV_BASE)/awx/bin/pip install $(PIP_OPTIONS) --ignore-installed docutils==0.14; \
virtualenv -p $(PYTHON) $(VENV_BASE)/awx; \
$(VENV_BASE)/awx/bin/pip install $(PIP_OPTIONS) $(VENV_BOOTSTRAP); \
fi; \
fi
# --ignore-install flag is not used because *.txt files should specify exact versions
requirements_ansible: virtualenv_ansible
if [[ "$(PIP_OPTIONS)" == *"--no-index"* ]]; then \
cat requirements/requirements_ansible.txt requirements/requirements_ansible_local.txt | $(VENV_BASE)/ansible/bin/pip install $(PIP_OPTIONS) --ignore-installed -r /dev/stdin ; \
cat requirements/requirements_ansible.txt requirements/requirements_ansible_local.txt | PYCURL_SSL_LIBRARY=$(PYCURL_SSL_LIBRARY) $(VENV_BASE)/ansible/bin/pip install $(PIP_OPTIONS) -r /dev/stdin ; \
else \
cat requirements/requirements_ansible.txt requirements/requirements_ansible_git.txt | $(VENV_BASE)/ansible/bin/pip install $(PIP_OPTIONS) --no-binary $(SRC_ONLY_PKGS) --ignore-installed -r /dev/stdin ; \
cat requirements/requirements_ansible.txt requirements/requirements_ansible_git.txt | PYCURL_SSL_LIBRARY=$(PYCURL_SSL_LIBRARY) $(VENV_BASE)/ansible/bin/pip install $(PIP_OPTIONS) --no-binary $(SRC_ONLY_PKGS) -r /dev/stdin ; \
fi
$(VENV_BASE)/ansible/bin/pip uninstall --yes -r requirements/requirements_ansible_uninstall.txt
# Same effect as using --system-site-packages flag on venv creation
rm $(shell ls -d $(VENV_BASE)/ansible/lib/python* | head -n 1)/no-global-site-packages.txt
requirements_ansible_py3: virtualenv_ansible_py3
if [[ "$(PIP_OPTIONS)" == *"--no-index"* ]]; then \
cat requirements/requirements_ansible.txt requirements/requirements_ansible_local.txt | $(VENV_BASE)/ansible/bin/pip3 install $(PIP_OPTIONS) --ignore-installed -r /dev/stdin ; \
cat requirements/requirements_ansible.txt requirements/requirements_ansible_local.txt | PYCURL_SSL_LIBRARY=$(PYCURL_SSL_LIBRARY) $(VENV_BASE)/ansible/bin/pip3 install $(PIP_OPTIONS) -r /dev/stdin ; \
else \
cat requirements/requirements_ansible.txt requirements/requirements_ansible_git.txt | $(VENV_BASE)/ansible/bin/pip3 install $(PIP_OPTIONS) --no-binary $(SRC_ONLY_PKGS) --ignore-installed -r /dev/stdin ; \
cat requirements/requirements_ansible.txt requirements/requirements_ansible_git.txt | PYCURL_SSL_LIBRARY=$(PYCURL_SSL_LIBRARY) $(VENV_BASE)/ansible/bin/pip3 install $(PIP_OPTIONS) --no-binary $(SRC_ONLY_PKGS) -r /dev/stdin ; \
fi
$(VENV_BASE)/ansible/bin/pip3 uninstall --yes -r requirements/requirements_ansible_uninstall.txt
# Same effect as using --system-site-packages flag on venv creation
rm $(shell ls -d $(VENV_BASE)/ansible/lib/python* | head -n 1)/no-global-site-packages.txt
requirements_ansible_dev:
if [ "$(VENV_BASE)" ]; then \
@@ -179,21 +200,25 @@ requirements_ansible_dev:
fi
# Install third-party requirements needed for AWX's environment.
# this does not use system site packages intentionally
requirements_awx: virtualenv_awx
if [[ "$(PIP_OPTIONS)" == *"--no-index"* ]]; then \
cat requirements/requirements.txt requirements/requirements_local.txt | $(VENV_BASE)/awx/bin/pip install $(PIP_OPTIONS) --ignore-installed -r /dev/stdin ; \
cat requirements/requirements.txt requirements/requirements_local.txt | $(VENV_BASE)/awx/bin/pip install $(PIP_OPTIONS) -r /dev/stdin ; \
else \
cat requirements/requirements.txt requirements/requirements_git.txt | $(VENV_BASE)/awx/bin/pip install $(PIP_OPTIONS) --no-binary $(SRC_ONLY_PKGS) --ignore-installed -r /dev/stdin ; \
cat requirements/requirements.txt requirements/requirements_git.txt | $(VENV_BASE)/awx/bin/pip install $(PIP_OPTIONS) --no-binary $(SRC_ONLY_PKGS) -r /dev/stdin ; \
fi
echo "include-system-site-packages = true" >> $(VENV_BASE)/awx/lib/python$(PYTHON_VERSION)/pyvenv.cfg
#$(VENV_BASE)/awx/bin/pip uninstall --yes -r requirements/requirements_tower_uninstall.txt
$(VENV_BASE)/awx/bin/pip uninstall --yes -r requirements/requirements_tower_uninstall.txt
requirements_awx_dev:
$(VENV_BASE)/awx/bin/pip install -r requirements/requirements_dev.txt
requirements: requirements_ansible requirements_awx
requirements_collections:
mkdir -p $(COLLECTION_BASE)
ansible-galaxy collection install -r requirements/collections_requirements.yml -p $(COLLECTION_BASE)
requirements_dev: requirements requirements_awx_dev requirements_ansible_dev
requirements: requirements_ansible requirements_awx requirements_collections
requirements_dev: requirements_awx requirements_ansible_py3 requirements_awx_dev requirements_ansible_dev
requirements_test: requirements
@@ -246,28 +271,6 @@ migrate:
dbchange:
$(MANAGEMENT_COMMAND) makemigrations
server_noattach:
tmux new-session -d -s awx 'exec make uwsgi'
tmux rename-window 'AWX'
tmux select-window -t awx:0
tmux split-window -v 'exec make dispatcher'
tmux new-window 'exec make daphne'
tmux select-window -t awx:1
tmux rename-window 'WebSockets'
tmux split-window -h 'exec make runworker'
tmux split-window -v 'exec make nginx'
tmux new-window 'exec make receiver'
tmux select-window -t awx:2
tmux rename-window 'Extra Services'
tmux select-window -t awx:0
server: server_noattach
tmux -2 attach-session -t awx
# Use with iterm2's native tmux protocol support
servercc: server_noattach
tmux -2 -CC attach-session -t awx
supervisor:
@if [ "$(VENV_BASE)" ]; then \
. $(VENV_BASE)/awx/bin/activate; \
@@ -292,18 +295,11 @@ daphne:
fi; \
daphne -b 127.0.0.1 -p 8051 awx.asgi:channel_layer
runworker:
wsbroadcast:
@if [ "$(VENV_BASE)" ]; then \
. $(VENV_BASE)/awx/bin/activate; \
fi; \
$(PYTHON) manage.py runworker --only-channels websocket.*
# Run the built-in development webserver (by default on http://localhost:8013).
runserver:
@if [ "$(VENV_BASE)" ]; then \
. $(VENV_BASE)/awx/bin/activate; \
fi; \
$(PYTHON) manage.py runserver
$(PYTHON) manage.py run_wsbroadcast
# Run to start the background task dispatcher for development.
dispatcher:
@@ -360,20 +356,63 @@ swagger: reports
check: flake8 pep8 # pyflakes pylint
awx-link:
cp -R /tmp/awx.egg-info /awx_devel/ || true
sed -i "s/placeholder/$(shell git describe --long | sed 's/\./\\./g')/" /awx_devel/awx.egg-info/PKG-INFO
[ -d "/awx_devel/awx.egg-info" ] || python3 /awx_devel/setup.py egg_info_dev
cp -f /tmp/awx.egg-link /venv/awx/lib/python$(PYTHON_VERSION)/site-packages/awx.egg-link
TEST_DIRS ?= awx/main/tests/unit awx/main/tests/functional awx/conf/tests awx/sso/tests
# Run all API unit tests.
test:
@if [ "$(VENV_BASE)" ]; then \
if [ "$(VENV_BASE)" ]; then \
. $(VENV_BASE)/awx/bin/activate; \
fi; \
PYTHONDONTWRITEBYTECODE=1 py.test -p no:cacheprovider -n auto $(TEST_DIRS)
cd awxkit && $(VENV_BASE)/awx/bin/tox -re py2,py3
awx-manage check_migrations --dry-run --check -n 'vNNN_missing_migration_file'
cmp VERSION awxkit/VERSION || "VERSION and awxkit/VERSION *must* match"
cd awxkit && $(VENV_BASE)/awx/bin/tox -re py3
awx-manage check_migrations --dry-run --check -n 'missing_migration_file'
COLLECTION_TEST_DIRS ?= awx_collection/test/awx
COLLECTION_TEST_TARGET ?=
COLLECTION_PACKAGE ?= awx
COLLECTION_NAMESPACE ?= awx
COLLECTION_INSTALL = ~/.ansible/collections/ansible_collections/$(COLLECTION_NAMESPACE)/$(COLLECTION_PACKAGE)
test_collection:
rm -f $(shell ls -d $(VENV_BASE)/awx/lib/python* | head -n 1)/no-global-site-packages.txt
if [ "$(VENV_BASE)" ]; then \
. $(VENV_BASE)/awx/bin/activate; \
fi; \
py.test $(COLLECTION_TEST_DIRS) -v
# The python path needs to be modified so that the tests can find Ansible within the container
# First we will use anything expility set as PYTHONPATH
# Second we will load any libraries out of the virtualenv (if it's unspecified that should be ok because python should not load out of an empty directory)
# Finally we will add the system path so that the tests can find the ansible libraries
flake8_collection:
flake8 awx_collection/ # Different settings, in main exclude list
test_collection_all: test_collection flake8_collection
# WARNING: symlinking a collection is fundamentally unstable
# this is for rapid development iteration with playbooks, do not use with other test targets
symlink_collection:
rm -rf $(COLLECTION_INSTALL)
mkdir -p ~/.ansible/collections/ansible_collections/$(COLLECTION_NAMESPACE) # in case it does not exist
ln -s $(shell pwd)/awx_collection $(COLLECTION_INSTALL)
build_collection:
ansible-playbook -i localhost, awx_collection/tools/template_galaxy.yml -e collection_package=$(COLLECTION_PACKAGE) -e collection_namespace=$(COLLECTION_NAMESPACE) -e collection_version=$(VERSION) -e '{"awx_template_version":false}'
ansible-galaxy collection build awx_collection_build --force --output-path=awx_collection_build
install_collection: build_collection
rm -rf $(COLLECTION_INSTALL)
ansible-galaxy collection install awx_collection_build/$(COLLECTION_NAMESPACE)-$(COLLECTION_PACKAGE)-$(VERSION).tar.gz
test_collection_sanity: install_collection
cd $(COLLECTION_INSTALL) && ansible-test sanity
test_collection_integration: install_collection
cd $(COLLECTION_INSTALL) && ansible-test integration $(COLLECTION_TEST_TARGET)
test_unit:
@if [ "$(VENV_BASE)" ]; then \
@@ -516,19 +555,47 @@ jshint: $(UI_DEPS_FLAG_FILE)
$(NPM_BIN) run --prefix awx/ui jshint
$(NPM_BIN) run --prefix awx/ui lint
ui-zuul-lint-and-test:
CHROMIUM_BIN=$(CHROMIUM_BIN) ./awx/ui/build/zuul_download_chromium.sh
CHROMIUM_BIN=$(CHROMIUM_BIN) PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1 $(NPM_BIN) --unsafe-perm --prefix awx/ui ci --no-save awx/ui
CHROMIUM_BIN=$(CHROMIUM_BIN) $(NPM_BIN) run --prefix awx/ui jshint
CHROMIUM_BIN=$(CHROMIUM_BIN) $(NPM_BIN) run --prefix awx/ui lint
CHROME_BIN=$(CHROMIUM_BIN) $(NPM_BIN) --prefix awx/ui run test:ci
CHROME_BIN=$(CHROMIUM_BIN) $(NPM_BIN) --prefix awx/ui run unit
# END UI TASKS
# --------------------------------------
# UI NEXT TASKS
# --------------------------------------
ui-next-lint:
awx/ui_next/node_modules:
$(NPM_BIN) --prefix awx/ui_next install
ui-release-next:
mkdir -p awx/ui_next/build/static
touch awx/ui_next/build/static/.placeholder
ui-devel-next: awx/ui_next/node_modules
$(NPM_BIN) --prefix awx/ui_next run extract-strings
$(NPM_BIN) --prefix awx/ui_next run compile-strings
$(NPM_BIN) --prefix awx/ui_next run build
mkdir -p awx/public/static/css
mkdir -p awx/public/static/js
mkdir -p awx/public/static/media
cp -r awx/ui_next/build/static/css/* awx/public/static/css
cp -r awx/ui_next/build/static/js/* awx/public/static/js
cp -r awx/ui_next/build/static/media/* awx/public/static/media
clean-ui-next:
rm -rf node_modules
rm -rf awx/ui_next/node_modules
rm -rf awx/ui_next/build
ui-next-zuul-lint-and-test:
$(NPM_BIN) --prefix awx/ui_next install
$(NPM_BIN) run --prefix awx/ui_next lint
$(NPM_BIN) run --prefix awx/ui_next prettier-check
ui-next-test:
$(NPM_BIN) --prefix awx/ui_next install
$(NPM_BIN) run --prefix awx/ui_next test
# END UI NEXT TASKS
@@ -542,10 +609,10 @@ dev_build:
release_build:
$(PYTHON) setup.py release_build
dist/$(SDIST_TAR_FILE): ui-release VERSION
dist/$(SDIST_TAR_FILE): ui-release ui-release-next VERSION
$(PYTHON) setup.py $(SDIST_COMMAND)
dist/$(WHEEL_FILE): ui-release
dist/$(WHEEL_FILE): ui-release ui-release-next
$(PYTHON) setup.py $(WHEEL_COMMAND)
sdist: dist/$(SDIST_TAR_FILE)
@@ -569,76 +636,77 @@ docker-auth:
echo "$(IMAGE_REPOSITORY_AUTH)" | docker login -u oauth2accesstoken --password-stdin $(IMAGE_REPOSITORY_BASE); \
fi;
# This directory is bind-mounted inside of the development container and
# needs to be pre-created for permissions to be set correctly. Otherwise,
# Docker will create this directory as root.
awx/projects:
@mkdir -p $@
# Docker isolated rampart
docker-compose-isolated:
docker-compose-isolated: awx/projects
CURRENT_UID=$(shell id -u) TAG=$(COMPOSE_TAG) DEV_DOCKER_TAG_BASE=$(DEV_DOCKER_TAG_BASE) docker-compose -f tools/docker-compose.yml -f tools/docker-isolated-override.yml up
# Docker Compose Development environment
docker-compose: docker-auth
docker-compose: docker-auth awx/projects
CURRENT_UID=$(shell id -u) OS="$(shell docker info | grep 'Operating System')" TAG=$(COMPOSE_TAG) DEV_DOCKER_TAG_BASE=$(DEV_DOCKER_TAG_BASE) docker-compose -f tools/docker-compose.yml up --no-recreate awx
docker-compose-cluster: docker-auth
docker-compose-cluster: docker-auth awx/projects
CURRENT_UID=$(shell id -u) TAG=$(COMPOSE_TAG) DEV_DOCKER_TAG_BASE=$(DEV_DOCKER_TAG_BASE) docker-compose -f tools/docker-compose-cluster.yml up
docker-compose-credential-plugins: docker-auth
docker-compose-credential-plugins: docker-auth awx/projects
echo -e "\033[0;31mTo generate a CyberArk Conjur API key: docker exec -it tools_conjur_1 conjurctl account create quick-start\033[0m"
CURRENT_UID=$(shell id -u) TAG=$(COMPOSE_TAG) DEV_DOCKER_TAG_BASE=$(DEV_DOCKER_TAG_BASE) docker-compose -f tools/docker-compose.yml -f tools/docker-credential-plugins-override.yml up --no-recreate awx
docker-compose-test: docker-auth
docker-compose-test: docker-auth awx/projects
cd tools && CURRENT_UID=$(shell id -u) OS="$(shell docker info | grep 'Operating System')" TAG=$(COMPOSE_TAG) DEV_DOCKER_TAG_BASE=$(DEV_DOCKER_TAG_BASE) docker-compose run --rm --service-ports awx /bin/bash
docker-compose-runtest:
docker-compose-runtest: awx/projects
cd tools && CURRENT_UID=$(shell id -u) TAG=$(COMPOSE_TAG) DEV_DOCKER_TAG_BASE=$(DEV_DOCKER_TAG_BASE) docker-compose run --rm --service-ports awx /start_tests.sh
docker-compose-build-swagger:
cd tools && CURRENT_UID=$(shell id -u) TAG=$(COMPOSE_TAG) DEV_DOCKER_TAG_BASE=$(DEV_DOCKER_TAG_BASE) docker-compose run --rm --service-ports awx /start_tests.sh swagger
docker-compose-build-swagger: awx/projects
cd tools && CURRENT_UID=$(shell id -u) TAG=$(COMPOSE_TAG) DEV_DOCKER_TAG_BASE=$(DEV_DOCKER_TAG_BASE) docker-compose run --rm --service-ports --no-deps awx /start_tests.sh swagger
detect-schema-change: genschema
curl https://s3.amazonaws.com/awx-public-ci-files/schema.json -o reference-schema.json
# Ignore differences in whitespace with -b
diff -u -b reference-schema.json schema.json
docker-compose-clean:
cd tools && CURRENT_UID=$(shell id -u) TAG=$(COMPOSE_TAG) DEV_DOCKER_TAG_BASE=$(DEV_DOCKER_TAG_BASE) docker-compose run --rm -w /awx_devel --service-ports awx make clean
docker-compose-clean: awx/projects
cd tools && TAG=$(COMPOSE_TAG) DEV_DOCKER_TAG_BASE=$(DEV_DOCKER_TAG_BASE) docker-compose rm -sf
docker-compose-build: awx-devel-build
# Base development image build
awx-devel-build:
docker-compose-build:
ansible localhost -m template -a "src=installer/roles/image_build/templates/Dockerfile.j2 dest=tools/docker-compose/Dockerfile" -e build_dev=True
docker build -t ansible/awx_devel -f tools/docker-compose/Dockerfile \
--cache-from=$(DEV_DOCKER_TAG_BASE)/awx_devel:devel \
--cache-from=$(DEV_DOCKER_TAG_BASE)/awx_devel:$(COMPOSE_TAG) .
docker tag ansible/awx_devel $(DEV_DOCKER_TAG_BASE)/awx_devel:$(COMPOSE_TAG)
#docker push $(DEV_DOCKER_TAG_BASE)/awx_devel:$(COMPOSE_TAG)
# For use when developing on "isolated" AWX deployments
docker-compose-isolated-build: awx-devel-build
docker-compose-isolated-build: docker-compose-build
docker build -t ansible/awx_isolated -f tools/docker-isolated/Dockerfile .
docker tag ansible/awx_isolated $(DEV_DOCKER_TAG_BASE)/awx_isolated:$(COMPOSE_TAG)
#docker push $(DEV_DOCKER_TAG_BASE)/awx_isolated:$(COMPOSE_TAG)
MACHINE?=default
docker-clean:
eval $$(docker-machine env $(MACHINE))
$(foreach container_id,$(shell docker ps -f name=tools_awx -aq),docker stop $(container_id); docker rm -f $(container_id);)
-docker images | grep "awx_devel" | awk '{print $$1 ":" $$2}' | xargs docker rmi
docker images | grep "awx_devel" | awk '{print $$1 ":" $$2}' | xargs docker rmi
docker-clean-volumes: docker-compose-clean
docker volume rm tools_awx_db
docker-refresh: docker-clean docker-compose
# Docker Development Environment with Elastic Stack Connected
docker-compose-elk: docker-auth
docker-compose-elk: docker-auth awx/projects
CURRENT_UID=$(shell id -u) TAG=$(COMPOSE_TAG) DEV_DOCKER_TAG_BASE=$(DEV_DOCKER_TAG_BASE) docker-compose -f tools/docker-compose.yml -f tools/elastic/docker-compose.logstash-link.yml -f tools/elastic/docker-compose.elastic-override.yml up --no-recreate
docker-compose-cluster-elk: docker-auth
docker-compose-cluster-elk: docker-auth awx/projects
TAG=$(COMPOSE_TAG) DEV_DOCKER_TAG_BASE=$(DEV_DOCKER_TAG_BASE) docker-compose -f tools/docker-compose-cluster.yml -f tools/elastic/docker-compose.logstash-link-cluster.yml -f tools/elastic/docker-compose.elastic-override.yml up --no-recreate
prometheus:
docker run -u0 --net=tools_default --link=`docker ps | egrep -o "tools_awx(_run)?_([^ ]+)?"`:awxweb --volume `pwd`/tools/prometheus:/prometheus --name prometheus -d -p 0.0.0.0:9090:9090 prom/prometheus --web.enable-lifecycle --config.file=/prometheus/prometheus.yml
minishift-dev:
ansible-playbook -i localhost, -e devtree_directory=$(CURDIR) tools/clusterdevel/start_minishift_dev.yml
clean-elk:
docker stop tools_kibana_1
docker stop tools_logstash_1
@@ -648,7 +716,7 @@ clean-elk:
docker rm tools_kibana_1
psql-container:
docker run -it --net tools_default --rm postgres:9.6 sh -c 'exec psql -h "postgres" -p "5432" -U postgres'
docker run -it --net tools_default --rm postgres:10 sh -c 'exec psql -h "postgres" -p "5432" -U postgres'
VERSION:
@echo "awx: $(VERSION)"

View File

@@ -1 +1 @@
7.0.0
14.0.0

View File

@@ -24,31 +24,19 @@ except ImportError: # pragma: no cover
import hashlib
try:
import django
from django.db.backends.base import schema
from django.db.backends.utils import names_digest
import django # noqa: F401
HAS_DJANGO = True
except ImportError:
HAS_DJANGO = False
else:
from django.db.backends.base import schema
from django.db.models import indexes
from django.db.backends.utils import names_digest
if HAS_DJANGO is True:
# This line exists to make sure we don't regress on FIPS support if we
# upgrade Django; if you're upgrading Django and see this error,
# update the version check below, and confirm that FIPS still works.
# If operating in a FIPS environment, `hashlib.md5()` will raise a `ValueError`,
# but will support the `usedforsecurity` keyword on RHEL and Centos systems.
# Keep an eye on https://code.djangoproject.com/ticket/28401
target_version = '2.2.4'
if django.__version__ != target_version:
raise RuntimeError(
"Django version other than {target} detected: {current}. "
"Overriding `names_digest` is known to work for Django {target} "
"and may not work in other Django versions.".format(target=target_version,
current=django.__version__)
)
# See upgrade blocker note in requirements/README.md
try:
names_digest('foo', 'bar', 'baz', length=8)
except ValueError:
@@ -63,6 +51,7 @@ if HAS_DJANGO is True:
return h.hexdigest()[:length]
schema.names_digest = names_digest
indexes.names_digest = names_digest
def find_commands(management_dir):
@@ -82,6 +71,23 @@ def find_commands(management_dir):
return commands
def oauth2_getattribute(self, attr):
# Custom method to override
# oauth2_provider.settings.OAuth2ProviderSettings.__getattribute__
from django.conf import settings
val = None
if 'migrate' not in sys.argv:
# certain Django OAuth Toolkit migrations actually reference
# setting lookups for references to model classes (e.g.,
# oauth2_settings.REFRESH_TOKEN_MODEL)
# If we're doing an OAuth2 setting lookup *while running* a migration,
# don't do our usual "Configure Tower in Tower" database setting lookup
val = settings.OAUTH2_PROVIDER.get(attr)
if val is None:
val = object.__getattribute__(self, attr)
return val
def prepare_env():
# Update the default settings environment variable based on current mode.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'awx.settings.%s' % MODE)
@@ -93,6 +99,12 @@ def prepare_env():
# Monkeypatch Django find_commands to also work with .pyc files.
import django.core.management
django.core.management.find_commands = find_commands
# Monkeypatch Oauth2 toolkit settings class to check for settings
# in django.conf settings each time, not just once during import
import oauth2_provider.settings
oauth2_provider.settings.OAuth2ProviderSettings.__getattribute__ = oauth2_getattribute
# Use the AWX_TEST_DATABASE_* environment variables to specify the test
# database settings to use when management command is run as an external
# program via unit tests.

View File

@@ -38,12 +38,15 @@ register(
'OAUTH2_PROVIDER',
field_class=OAuth2ProviderField,
default={'ACCESS_TOKEN_EXPIRE_SECONDS': oauth2_settings.ACCESS_TOKEN_EXPIRE_SECONDS,
'AUTHORIZATION_CODE_EXPIRE_SECONDS': 600},
'AUTHORIZATION_CODE_EXPIRE_SECONDS': oauth2_settings.AUTHORIZATION_CODE_EXPIRE_SECONDS,
'REFRESH_TOKEN_EXPIRE_SECONDS': oauth2_settings.REFRESH_TOKEN_EXPIRE_SECONDS},
label=_('OAuth 2 Timeout Settings'),
help_text=_('Dictionary for customizing OAuth 2 timeouts, available items are '
'`ACCESS_TOKEN_EXPIRE_SECONDS`, the duration of access tokens in the number '
'of seconds, and `AUTHORIZATION_CODE_EXPIRE_SECONDS`, the duration of '
'authorization codes in the number of seconds.'),
'of seconds, `AUTHORIZATION_CODE_EXPIRE_SECONDS`, the duration of '
'authorization codes in the number of seconds, and `REFRESH_TOKEN_EXPIRE_SECONDS`, '
'the duration of refresh tokens, after expired access tokens, '
'in the number of seconds.'),
category=_('Authentication'),
category_slug='authentication',
)
@@ -59,3 +62,15 @@ register(
category=_('Authentication'),
category_slug='authentication',
)
register(
'LOGIN_REDIRECT_OVERRIDE',
field_class=fields.CharField,
allow_blank=True,
required=False,
default='',
label=_('Login redirect override URL'),
help_text=_('URL to which unauthorized users will be redirected to log in. '
'If blank, users will be sent to the Tower login page.'),
category=_('Authentication'),
category_slug='authentication',
)

View File

@@ -80,7 +80,7 @@ class OAuth2ProviderField(fields.DictField):
default_error_messages = {
'invalid_key_names': _('Invalid key names: {invalid_key_names}'),
}
valid_key_names = {'ACCESS_TOKEN_EXPIRE_SECONDS', 'AUTHORIZATION_CODE_EXPIRE_SECONDS'}
valid_key_names = {'ACCESS_TOKEN_EXPIRE_SECONDS', 'AUTHORIZATION_CODE_EXPIRE_SECONDS', 'REFRESH_TOKEN_EXPIRE_SECONDS'}
child = fields.IntegerField(min_value=1)
def to_internal_value(self, data):

View File

@@ -9,7 +9,7 @@ from functools import reduce
# Django
from django.core.exceptions import FieldError, ValidationError
from django.db import models
from django.db.models import Q
from django.db.models import Q, CharField, IntegerField, BooleanField
from django.db.models.fields import FieldDoesNotExist
from django.db.models.fields.related import ForeignObjectRel, ManyToManyField, ForeignKey
from django.contrib.contenttypes.models import ContentType
@@ -63,19 +63,19 @@ class TypeFilterBackend(BaseFilterBackend):
raise ParseError(*e.args)
def get_field_from_path(model, path):
def get_fields_from_path(model, path):
'''
Given a Django ORM lookup path (possibly over multiple models)
Returns the last field in the line, and also the revised lookup path
Returns the fields in the line, and also the revised lookup path
ex., given
model=Organization
path='project__timeout'
returns tuple of field at the end of the line as well as a corrected
path, for special cases we do substitutions
(<IntegerField for timeout>, 'project__timeout')
returns tuple of fields traversed as well and a corrected path,
for special cases we do substitutions
([<IntegerField for timeout>], 'project__timeout')
'''
# Store of all the fields used to detect repeats
field_set = set([])
field_list = []
new_parts = []
for name in path.split('__'):
if model is None:
@@ -111,13 +111,24 @@ def get_field_from_path(model, path):
raise PermissionDenied(_('Filtering on %s is not allowed.' % name))
elif getattr(field, '__prevent_search__', False):
raise PermissionDenied(_('Filtering on %s is not allowed.' % name))
if field in field_set:
if field in field_list:
# Field traversed twice, could create infinite JOINs, DoSing Tower
raise ParseError(_('Loops not allowed in filters, detected on field {}.').format(field.name))
field_set.add(field)
field_list.append(field)
model = getattr(field, 'related_model', None)
return field, '__'.join(new_parts)
return field_list, '__'.join(new_parts)
def get_field_from_path(model, path):
'''
Given a Django ORM lookup path (possibly over multiple models)
Returns the last field in the line, and the revised lookup path
ex.
(<IntegerField for timeout>, 'project__timeout')
'''
field_list, new_path = get_fields_from_path(model, path)
return (field_list[-1], new_path)
class FieldLookupBackend(BaseFilterBackend):
@@ -126,14 +137,18 @@ class FieldLookupBackend(BaseFilterBackend):
'''
RESERVED_NAMES = ('page', 'page_size', 'format', 'order', 'order_by',
'search', 'type', 'host_filter')
'search', 'type', 'host_filter', 'count_disabled', 'no_truncate')
SUPPORTED_LOOKUPS = ('exact', 'iexact', 'contains', 'icontains',
'startswith', 'istartswith', 'endswith', 'iendswith',
'regex', 'iregex', 'gt', 'gte', 'lt', 'lte', 'in',
'isnull', 'search')
def get_field_from_lookup(self, model, lookup):
# A list of fields that we know can be filtered on without the possiblity
# of introducing duplicates
NO_DUPLICATES_ALLOW_LIST = (CharField, IntegerField, BooleanField)
def get_fields_from_lookup(self, model, lookup):
if '__' in lookup and lookup.rsplit('__', 1)[-1] in self.SUPPORTED_LOOKUPS:
path, suffix = lookup.rsplit('__', 1)
@@ -147,11 +162,16 @@ class FieldLookupBackend(BaseFilterBackend):
# FIXME: Could build up a list of models used across relationships, use
# those lookups combined with request.user.get_queryset(Model) to make
# sure user cannot query using objects he could not view.
field, new_path = get_field_from_path(model, path)
field_list, new_path = get_fields_from_path(model, path)
new_lookup = new_path
new_lookup = '__'.join([new_path, suffix])
return field, new_lookup
return field_list, new_lookup
def get_field_from_lookup(self, model, lookup):
'''Method to match return type of single field, if needed.'''
field_list, new_lookup = self.get_fields_from_lookup(model, lookup)
return (field_list[-1], new_lookup)
def to_python_related(self, value):
value = force_text(value)
@@ -182,7 +202,10 @@ class FieldLookupBackend(BaseFilterBackend):
except UnicodeEncodeError:
raise ValueError("%r is not an allowed field name. Must be ascii encodable." % lookup)
field, new_lookup = self.get_field_from_lookup(model, lookup)
field_list, new_lookup = self.get_fields_from_lookup(model, lookup)
field = field_list[-1]
needs_distinct = (not all(isinstance(f, self.NO_DUPLICATES_ALLOW_LIST) for f in field_list))
# Type names are stored without underscores internally, but are presented and
# and serialized over the API containing underscores so we remove `_`
@@ -211,10 +234,10 @@ class FieldLookupBackend(BaseFilterBackend):
for rm_field in related_model._meta.fields:
if rm_field.name in ('username', 'first_name', 'last_name', 'email', 'name', 'description', 'playbook'):
new_lookups.append('{}__{}__icontains'.format(new_lookup[:-8], rm_field.name))
return value, new_lookups
return value, new_lookups, needs_distinct
else:
value = self.value_to_python_for_field(field, value)
return value, new_lookup
return value, new_lookup, needs_distinct
def filter_queryset(self, request, queryset, view):
try:
@@ -225,6 +248,7 @@ class FieldLookupBackend(BaseFilterBackend):
chain_filters = []
role_filters = []
search_filters = {}
needs_distinct = False
# Can only have two values: 'AND', 'OR'
# If 'AND' is used, an iterm must satisfy all condition to show up in the results.
# If 'OR' is used, an item just need to satisfy one condition to appear in results.
@@ -233,6 +257,11 @@ class FieldLookupBackend(BaseFilterBackend):
if key in self.RESERVED_NAMES:
continue
# HACK: make `created` available via API for the Django User ORM model
# so it keep compatiblity with other objects which exposes the `created` attr.
if queryset.model._meta.object_name == 'User' and key.startswith('created'):
key = key.replace('created', 'date_joined')
# HACK: Make job event filtering by host name mostly work even
# when not capturing job event hosts M2M.
if queryset.model._meta.object_name == 'JobEvent' and key.startswith('hosts__name'):
@@ -256,9 +285,12 @@ class FieldLookupBackend(BaseFilterBackend):
search_filter_relation = 'AND'
values = reduce(lambda list1, list2: list1 + list2, [i.split(',') for i in values])
for value in values:
search_value, new_keys = self.value_to_python(queryset.model, key, force_text(value))
search_value, new_keys, _ = self.value_to_python(queryset.model, key, force_text(value))
assert isinstance(new_keys, list)
search_filters[search_value] = new_keys
# by definition, search *only* joins across relations,
# so it _always_ needs a .distinct()
needs_distinct = True
continue
# Custom chain__ and or__ filters, mutually exclusive (both can
@@ -282,7 +314,9 @@ class FieldLookupBackend(BaseFilterBackend):
for value in values:
if q_int:
value = int(value)
value, new_key = self.value_to_python(queryset.model, key, value)
value, new_key, distinct = self.value_to_python(queryset.model, key, value)
if distinct:
needs_distinct = True
if q_chain:
chain_filters.append((q_not, new_key, value))
elif q_or:
@@ -332,7 +366,9 @@ class FieldLookupBackend(BaseFilterBackend):
else:
q = Q(**{k:v})
queryset = queryset.filter(q)
queryset = queryset.filter(*args).distinct()
queryset = queryset.filter(*args)
if needs_distinct:
queryset = queryset.distinct()
return queryset
except (FieldError, FieldDoesNotExist, ValueError, TypeError) as e:
raise ParseError(e.args[0])

View File

@@ -5,10 +5,12 @@
import inspect
import logging
import time
import uuid
import urllib.parse
# Django
from django.conf import settings
from django.core.cache import cache
from django.db import connection
from django.db.models.fields import FieldDoesNotExist
from django.db.models.fields.related import OneToOneRel
@@ -43,9 +45,13 @@ from awx.main.utils import (
get_search_fields,
getattrd,
get_object_or_400,
decrypt_field
decrypt_field,
get_awx_version,
get_licenser,
StubLicense
)
from awx.main.utils.db import get_all_field_names
from awx.main.views import ApiErrorView
from awx.api.serializers import ResourceAccessListElementSerializer, CopySerializer, UserSerializer
from awx.api.versioning import URLPathVersioning
from awx.api.metadata import SublistAttachDetatchMetadata, Metadata
@@ -92,7 +98,7 @@ class LoggedLoginView(auth_views.LoginView):
ret = super(LoggedLoginView, self).post(request, *args, **kwargs)
current_user = getattr(request, 'user', None)
if request.user.is_authenticated:
logger.info(smart_text(u"User {} logged in.".format(self.request.user.username)))
logger.info(smart_text(u"User {} logged in from {}".format(self.request.user.username,request.META.get('REMOTE_ADDR', None))))
ret.set_cookie('userLoggedIn', 'true')
current_user = UserSerializer(self.request.user)
current_user = smart_text(JSONRenderer().render(current_user.data))
@@ -154,11 +160,11 @@ class APIView(views.APIView):
self.queries_before = len(connection.queries)
# If there are any custom headers in REMOTE_HOST_HEADERS, make sure
# they respect the proxy whitelist
# they respect the allowed proxy list
if all([
settings.PROXY_IP_WHITELIST,
request.environ.get('REMOTE_ADDR') not in settings.PROXY_IP_WHITELIST,
request.environ.get('REMOTE_HOST') not in settings.PROXY_IP_WHITELIST
settings.PROXY_IP_ALLOWED_LIST,
request.environ.get('REMOTE_ADDR') not in settings.PROXY_IP_ALLOWED_LIST,
request.environ.get('REMOTE_HOST') not in settings.PROXY_IP_ALLOWED_LIST
]):
for custom_header in settings.REMOTE_HOST_HEADERS:
if custom_header.startswith('HTTP_'):
@@ -183,6 +189,29 @@ class APIView(views.APIView):
'''
Log warning for 400 requests. Add header with elapsed time.
'''
#
# If the URL was rewritten, and we get a 404, we should entirely
# replace the view in the request context with an ApiErrorView()
# Without this change, there will be subtle differences in the BrowseableAPIRenderer
#
# These differences could provide contextual clues which would allow
# anonymous users to determine if usernames were valid or not
# (e.g., if an anonymous user visited `/api/v2/users/valid/`, and got a 404,
# but also saw that the page heading said "User Detail", they might notice
# that's a difference in behavior from a request to `/api/v2/users/not-valid/`, which
# would show a page header of "Not Found"). Changing the view here
# guarantees that the rendered response will look exactly like the response
# when you visit a URL that has no matching URL paths in `awx.api.urls`.
#
if response.status_code == 404 and 'awx.named_url_rewritten' in request.environ:
self.headers.pop('Allow', None)
response = super(APIView, self).finalize_response(request, response, *args, **kwargs)
view = ApiErrorView()
setattr(view, 'request', request)
response.renderer_context['view'] = view
return response
if response.status_code >= 400:
status_msg = "status %s received by user %s attempting to access %s from %s" % \
(response.status_code, request.user, request.path, request.META.get('REMOTE_ADDR', None))
@@ -192,9 +221,11 @@ class APIView(views.APIView):
response.data['detail'] += ' To establish a login session, visit /api/login/.'
logger.info(status_msg)
else:
logger.warn(status_msg)
logger.warning(status_msg)
response = super(APIView, self).finalize_response(request, response, *args, **kwargs)
time_started = getattr(self, 'time_started', None)
response['X-API-Product-Version'] = get_awx_version()
response['X-API-Product-Name'] = 'AWX' if isinstance(get_licenser(), StubLicense) else 'Red Hat Ansible Tower'
response['X-API-Node'] = settings.CLUSTER_HOST_ID
if time_started:
time_elapsed = time.time() - self.time_started
@@ -205,6 +236,9 @@ class APIView(views.APIView):
response['X-API-Query-Count'] = len(q_times)
response['X-API-Query-Time'] = '%0.3fs' % sum(q_times)
if getattr(self, 'deprecated', False):
response['Warning'] = '299 awx "This resource has been deprecated and will be removed in a future release."' # noqa
return response
def get_authenticate_header(self, request):
@@ -489,9 +523,12 @@ class SubListAPIView(ParentMixin, ListAPIView):
parent = self.get_parent_object()
self.check_parent_access(parent)
qs = self.request.user.get_queryset(self.model).distinct()
sublist_qs = getattrd(parent, self.relationship).distinct()
sublist_qs = self.get_sublist_queryset(parent)
return qs & sublist_qs
def get_sublist_queryset(self, parent):
return getattrd(parent, self.relationship).distinct()
class DestroyAPIView(generics.DestroyAPIView):
@@ -542,6 +579,15 @@ class SubListCreateAPIView(SubListAPIView, ListCreateAPIView):
})
return d
def get_queryset(self):
if hasattr(self, 'parent_key'):
# Prefer this filtering because ForeignKey allows us more assumptions
parent = self.get_parent_object()
self.check_parent_access(parent)
qs = self.request.user.get_queryset(self.model)
return qs.filter(**{self.parent_key: parent})
return super(SubListCreateAPIView, self).get_queryset()
def create(self, request, *args, **kwargs):
# If the object ID was not specified, it probably doesn't exist in the
# DB yet. We want to see if we can create it. The URL may choose to
@@ -568,7 +614,7 @@ class SubListCreateAPIView(SubListAPIView, ListCreateAPIView):
status=status.HTTP_400_BAD_REQUEST)
# Verify we have permission to add the object as given.
if not request.user.can_access(self.model, 'add', serializer.initial_data):
if not request.user.can_access(self.model, 'add', serializer.validated_data):
raise PermissionDenied()
# save the object through the serializer, reload and returned the saved
@@ -815,7 +861,7 @@ class CopyAPIView(GenericAPIView):
@staticmethod
def _decrypt_model_field_if_needed(obj, field_name, field_val):
if field_name in getattr(type(obj), 'REENCRYPTION_BLACKLIST_AT_COPY', []):
if field_name in getattr(type(obj), 'REENCRYPTION_BLOCKLIST_AT_COPY', []):
return field_val
if isinstance(obj, Credential) and field_name == 'inputs':
for secret in obj.credential_type.secret_fields:
@@ -861,7 +907,7 @@ class CopyAPIView(GenericAPIView):
field_val = getattr(obj, field.name)
except AttributeError:
continue
# Adjust copy blacklist fields here.
# Adjust copy blocked fields here.
if field.name in fields_to_discard or field.name in [
'id', 'pk', 'polymorphic_ctype', 'unifiedjobtemplate_ptr', 'created_by', 'modified_by'
] or field.name.endswith('_role'):
@@ -958,6 +1004,11 @@ class CopyAPIView(GenericAPIView):
if hasattr(new_obj, 'admin_role') and request.user not in new_obj.admin_role.members.all():
new_obj.admin_role.members.add(request.user)
if sub_objs:
# store the copied object dict into cache, because it's
# often too large for postgres' notification bus
# (which has a default maximum message size of 8k)
key = 'deep-copy-{}'.format(str(uuid.uuid4()))
cache.set(key, sub_objs, timeout=3600)
permission_check_func = None
if hasattr(type(self), 'deep_copy_permission_check_func'):
permission_check_func = (
@@ -965,7 +1016,7 @@ class CopyAPIView(GenericAPIView):
)
trigger_delayed_deep_copy(
self.model.__module__, self.model.__name__,
obj.pk, new_obj.pk, request.user.pk, sub_objs,
obj.pk, new_obj.pk, request.user.pk, key,
permission_check_func=permission_check_func
)
serializer = self._get_copy_return_serializer(new_obj)

View File

@@ -2,6 +2,7 @@
# All Rights Reserved.
from collections import OrderedDict
from uuid import UUID
# Django
from django.core.exceptions import PermissionDenied
@@ -20,8 +21,10 @@ from rest_framework.fields import JSONField as DRFJSONField
from rest_framework.request import clone_request
# AWX
from awx.main.fields import JSONField
from awx.api.fields import ChoiceNullField
from awx.main.fields import JSONField, ImplicitRoleField
from awx.main.models import InventorySource, NotificationTemplate
from awx.main.scheduler.kubernetes import PodManager
class Metadata(metadata.SimpleMetadata):
@@ -58,7 +61,8 @@ class Metadata(metadata.SimpleMetadata):
'type': _('Data type for this {}.'),
'url': _('URL for this {}.'),
'related': _('Data structure with URLs of related resources.'),
'summary_fields': _('Data structure with name/description for related resources.'),
'summary_fields': _('Data structure with name/description for related resources. '
'The output for some objects may be limited for performance reasons.'),
'created': _('Timestamp when this {} was created.'),
'modified': _('Timestamp when this {} was last modified.'),
}
@@ -83,6 +87,8 @@ class Metadata(metadata.SimpleMetadata):
# FIXME: Still isn't showing all default values?
try:
default = field.get_default()
if type(default) is UUID:
default = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
if field.field_name == 'TOWER_URL_BASE' and default == 'https://towerhost':
default = '{}://{}'.format(self.request.scheme, self.request.get_host())
field_info['default'] = default
@@ -95,7 +101,15 @@ class Metadata(metadata.SimpleMetadata):
field_info['children'] = self.get_serializer_info(field)
if not isinstance(field, (RelatedField, ManyRelatedField)) and hasattr(field, 'choices'):
field_info['choices'] = [(choice_value, choice_name) for choice_value, choice_name in field.choices.items()]
choices = [
(choice_value, choice_name) for choice_value, choice_name in field.choices.items()
]
if not any(choice in ('', None) for choice, _ in choices):
if field.allow_blank:
choices = [("", "---------")] + choices
if field.allow_null and not isinstance(field, ChoiceNullField):
choices = [(None, "---------")] + choices
field_info['choices'] = choices
# Indicate if a field is write-only.
if getattr(field, 'write_only', False):
@@ -157,9 +171,16 @@ class Metadata(metadata.SimpleMetadata):
isinstance(field, JSONField) or
isinstance(model_field, JSONField) or
isinstance(field, DRFJSONField) or
isinstance(getattr(field, 'model_field', None), JSONField)
isinstance(getattr(field, 'model_field', None), JSONField) or
field.field_name == 'credential_passwords'
):
field_info['type'] = 'json'
elif (
isinstance(field, ManyRelatedField) and
field.field_name == 'credentials'
# launch-time credentials
):
field_info['type'] = 'list_of_ids'
elif isinstance(model_field, BooleanField):
field_info['type'] = 'boolean'
@@ -200,6 +221,9 @@ class Metadata(metadata.SimpleMetadata):
if not isinstance(meta, dict):
continue
if field == "pod_spec_override":
meta['default'] = PodManager().pod_definition
# Add type choices if available from the serializer.
if field == 'type' and hasattr(serializer, 'get_type_choices'):
meta['choices'] = serializer.get_type_choices()
@@ -252,6 +276,16 @@ class Metadata(metadata.SimpleMetadata):
if getattr(view, 'related_search_fields', None):
metadata['related_search_fields'] = view.related_search_fields
# include role names in metadata
roles = []
model = getattr(view, 'model', None)
if model:
for field in model._meta.get_fields():
if type(field) is ImplicitRoleField:
roles.append(field.name)
if len(roles) > 0:
metadata['object_roles'] = roles
from rest_framework import generics
if isinstance(view, generics.ListAPIView) and hasattr(view, 'paginator'):
metadata['max_page_size'] = view.paginator.max_page_size

View File

@@ -3,14 +3,28 @@
# Django REST Framework
from django.conf import settings
from django.core.paginator import Paginator as DjangoPaginator
from rest_framework import pagination
from rest_framework.response import Response
from rest_framework.utils.urls import replace_query_param
class DisabledPaginator(DjangoPaginator):
@property
def num_pages(self):
return 1
@property
def count(self):
return 200
class Pagination(pagination.PageNumberPagination):
page_size_query_param = 'page_size'
max_page_size = settings.MAX_PAGE_SIZE
count_disabled = False
def get_next_link(self):
if not self.page.has_next():
@@ -39,3 +53,17 @@ class Pagination(pagination.PageNumberPagination):
for pl in context['page_links']]
return context
def paginate_queryset(self, queryset, request, **kwargs):
self.count_disabled = 'count_disabled' in request.query_params
try:
if self.count_disabled:
self.django_paginator_class = DisabledPaginator
return super(Pagination, self).paginate_queryset(queryset, request, **kwargs)
finally:
self.django_paginator_class = DjangoPaginator
def get_paginated_response(self, data):
if self.count_disabled:
return Response({'results': data})
return super(Pagination, self).get_paginated_response(data)

View File

@@ -249,3 +249,8 @@ class InstanceGroupTowerPermission(ModelAccessPermission):
if request.method == 'DELETE' and obj.name == "tower":
return False
return super(InstanceGroupTowerPermission, self).has_object_permission(request, view, obj)
class WebhookKeyPermission(permissions.BasePermission):
def has_object_permission(self, request, view, obj):
return request.user.can_access(view.model, 'admin', obj, request.data)

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,7 @@
# Cancel Inventory Update
Make a GET request to this resource to determine if the inventory update can be
cancelled. The response will include the following field:
canceled. The response will include the following field:
* `can_cancel`: Indicates whether this update can be canceled (boolean,
read-only)

View File

@@ -1,7 +1,7 @@
{% ifmeth GET %}
# Determine if a Job can be cancelled
# Determine if a Job can be canceled
Make a GET request to this resource to determine if the job can be cancelled.
Make a GET request to this resource to determine if the job can be canceled.
The response will include the following field:
* `can_cancel`: Indicates whether this job can be canceled (boolean, read-only)

View File

@@ -1,7 +1,7 @@
# Cancel Project Update
Make a GET request to this resource to determine if the project update can be
cancelled. The response will include the following field:
canceled. The response will include the following field:
* `can_cancel`: Indicates whether this update can be canceled (boolean,
read-only)

View File

@@ -1 +1,2 @@
# Test Logging Configuration

View File

@@ -1,6 +1,6 @@
{% ifmeth GET %}
# List Roles for a Team:
{% ifmeth GET %}
Make a GET request to this resource to retrieve a list of roles associated with the selected team.
{% include "api/_list_common.md" %}

View File

@@ -1,6 +1,6 @@
{% ifmeth GET %}
# List Roles for a User:
{% ifmeth GET %}
Make a GET request to this resource to retrieve a list of roles associated with the selected user.
{% include "api/_list_common.md" %}

View File

@@ -0,0 +1,12 @@
Webhook Secret Key:
Make a GET request to this resource to obtain the secret key for a job
template or workflow job template configured to be triggered by
webhook events. The response will include the following fields:
* `webhook_key`: Secret key that needs to be copied and added to the
webhook configuration of the service this template will be receiving
webhook events from (string, read-only)
Make an empty POST request to this resource to generate a new
replacement `webhook_key`.

View File

@@ -1,7 +1,7 @@
# Copyright (c) 2017 Ansible, Inc.
# All Rights Reserved.
from django.conf.urls import url
from django.conf.urls import include, url
from awx.api.views import (
JobTemplateList,
@@ -45,6 +45,7 @@ urls = [
url(r'^(?P<pk>[0-9]+)/object_roles/$', JobTemplateObjectRolesList.as_view(), name='job_template_object_roles_list'),
url(r'^(?P<pk>[0-9]+)/labels/$', JobTemplateLabelList.as_view(), name='job_template_label_list'),
url(r'^(?P<pk>[0-9]+)/copy/$', JobTemplateCopy.as_view(), name='job_template_copy'),
url(r'^(?P<pk>[0-9]+)/', include('awx.api.urls.webhooks'), {'model_kwarg': 'job_templates'}),
]
__all__ = ['urls']

View File

@@ -1,11 +1,15 @@
# Copyright (c) 2017 Ansible, Inc.
# All Rights Reserved.
from datetime import timedelta
from django.utils.timezone import now
from django.conf import settings
from django.conf.urls import url
from oauthlib import oauth2
from oauth2_provider import views
from awx.main.models import RefreshToken
from awx.api.views import (
ApiOAuthAuthorizationRootView,
)
@@ -14,6 +18,21 @@ from awx.api.views import (
class TokenView(views.TokenView):
def create_token_response(self, request):
# Django OAuth2 Toolkit has a bug whereby refresh tokens are *never*
# properly expired (ugh):
#
# https://github.com/jazzband/django-oauth-toolkit/issues/746
#
# This code detects and auto-expires them on refresh grant
# requests.
if request.POST.get('grant_type') == 'refresh_token' and 'refresh_token' in request.POST:
refresh_token = RefreshToken.objects.filter(
token=request.POST['refresh_token']
).first()
if refresh_token:
expire_seconds = settings.OAUTH2_PROVIDER.get('REFRESH_TOKEN_EXPIRE_SECONDS', 0)
if refresh_token.created + timedelta(seconds=expire_seconds) < now():
return request.build_absolute_uri(), {}, 'The refresh token has expired.', '403'
try:
return super(TokenView, self).create_token_response(request)
except oauth2.AccessDeniedError as e:

View File

@@ -10,6 +10,7 @@ from awx.api.views import (
OrganizationAdminsList,
OrganizationInventoriesList,
OrganizationProjectsList,
OrganizationJobTemplatesList,
OrganizationWorkflowJobTemplatesList,
OrganizationTeamsList,
OrganizationCredentialList,
@@ -18,6 +19,7 @@ from awx.api.views import (
OrganizationNotificationTemplatesErrorList,
OrganizationNotificationTemplatesStartedList,
OrganizationNotificationTemplatesSuccessList,
OrganizationNotificationTemplatesApprovalList,
OrganizationInstanceGroupsList,
OrganizationObjectRolesList,
OrganizationAccessList,
@@ -32,6 +34,7 @@ urls = [
url(r'^(?P<pk>[0-9]+)/admins/$', OrganizationAdminsList.as_view(), name='organization_admins_list'),
url(r'^(?P<pk>[0-9]+)/inventories/$', OrganizationInventoriesList.as_view(), name='organization_inventories_list'),
url(r'^(?P<pk>[0-9]+)/projects/$', OrganizationProjectsList.as_view(), name='organization_projects_list'),
url(r'^(?P<pk>[0-9]+)/job_templates/$', OrganizationJobTemplatesList.as_view(), name='organization_job_templates_list'),
url(r'^(?P<pk>[0-9]+)/workflow_job_templates/$', OrganizationWorkflowJobTemplatesList.as_view(), name='organization_workflow_job_templates_list'),
url(r'^(?P<pk>[0-9]+)/teams/$', OrganizationTeamsList.as_view(), name='organization_teams_list'),
url(r'^(?P<pk>[0-9]+)/credentials/$', OrganizationCredentialList.as_view(), name='organization_credential_list'),
@@ -43,6 +46,8 @@ urls = [
name='organization_notification_templates_error_list'),
url(r'^(?P<pk>[0-9]+)/notification_templates_success/$', OrganizationNotificationTemplatesSuccessList.as_view(),
name='organization_notification_templates_success_list'),
url(r'^(?P<pk>[0-9]+)/notification_templates_approvals/$', OrganizationNotificationTemplatesApprovalList.as_view(),
name='organization_notification_templates_approvals_list'),
url(r'^(?P<pk>[0-9]+)/instance_groups/$', OrganizationInstanceGroupsList.as_view(), name='organization_instance_groups_list'),
url(r'^(?P<pk>[0-9]+)/object_roles/$', OrganizationObjectRolesList.as_view(), name='organization_object_roles_list'),
url(r'^(?P<pk>[0-9]+)/access_list/$', OrganizationAccessList.as_view(), name='organization_access_list'),

View File

@@ -14,6 +14,7 @@ from awx.api.views import (
ApiV2RootView,
ApiV2PingView,
ApiV2ConfigView,
ApiV2SubscriptionView,
AuthView,
UserMeList,
DashboardView,
@@ -22,9 +23,7 @@ from awx.api.views import (
UnifiedJobList,
HostAnsibleFactsDetail,
JobCredentialsList,
JobExtraCredentialsList,
JobTemplateCredentialsList,
JobTemplateExtraCredentialsList,
SchedulePreview,
ScheduleZoneInfo,
OAuth2ApplicationList,
@@ -33,7 +32,9 @@ from awx.api.views import (
OAuth2ApplicationDetail,
)
from awx.api.views.metrics import MetricsView
from awx.api.views.metrics import (
MetricsView,
)
from .organization import urls as organization_urls
from .user import urls as user_urls
@@ -80,9 +81,7 @@ v2_urls = [
url(r'^credential_types/', include(credential_type_urls)),
url(r'^credential_input_sources/', include(credential_input_source_urls)),
url(r'^hosts/(?P<pk>[0-9]+)/ansible_facts/$', HostAnsibleFactsDetail.as_view(), name='host_ansible_facts_detail'),
url(r'^jobs/(?P<pk>[0-9]+)/extra_credentials/$', JobExtraCredentialsList.as_view(), name='job_extra_credentials_list'),
url(r'^jobs/(?P<pk>[0-9]+)/credentials/$', JobCredentialsList.as_view(), name='job_credentials_list'),
url(r'^job_templates/(?P<pk>[0-9]+)/extra_credentials/$', JobTemplateExtraCredentialsList.as_view(), name='job_template_extra_credentials_list'),
url(r'^job_templates/(?P<pk>[0-9]+)/credentials/$', JobTemplateCredentialsList.as_view(), name='job_template_credentials_list'),
url(r'^schedules/preview/$', SchedulePreview.as_view(), name='schedule_rrule'),
url(r'^schedules/zoneinfo/$', ScheduleZoneInfo.as_view(), name='schedule_zoneinfo'),
@@ -94,6 +93,7 @@ v2_urls = [
url(r'^metrics/$', MetricsView.as_view(), name='metrics_view'),
url(r'^ping/$', ApiV2PingView.as_view(), name='api_v2_ping_view'),
url(r'^config/$', ApiV2ConfigView.as_view(), name='api_v2_config_view'),
url(r'^config/subscriptions/$', ApiV2SubscriptionView.as_view(), name='api_v2_subscription_view'),
url(r'^auth/$', AuthView.as_view()),
url(r'^me/$', UserMeList.as_view(), name='user_me_list'),
url(r'^dashboard/$', DashboardView.as_view(), name='dashboard_view'),

14
awx/api/urls/webhooks.py Normal file
View File

@@ -0,0 +1,14 @@
from django.conf.urls import url
from awx.api.views import (
WebhookKeyView,
GithubWebhookReceiver,
GitlabWebhookReceiver,
)
urlpatterns = [
url(r'^webhook_key/$', WebhookKeyView.as_view(), name='webhook_key'),
url(r'^github/$', GithubWebhookReceiver.as_view(), name='webhook_receiver_github'),
url(r'^gitlab/$', GitlabWebhookReceiver.as_view(), name='webhook_receiver_gitlab'),
]

View File

@@ -1,7 +1,7 @@
# Copyright (c) 2017 Ansible, Inc.
# All Rights Reserved.
from django.conf.urls import url
from django.conf.urls import include, url
from awx.api.views import (
WorkflowJobTemplateList,
@@ -16,6 +16,7 @@ from awx.api.views import (
WorkflowJobTemplateNotificationTemplatesErrorList,
WorkflowJobTemplateNotificationTemplatesStartedList,
WorkflowJobTemplateNotificationTemplatesSuccessList,
WorkflowJobTemplateNotificationTemplatesApprovalList,
WorkflowJobTemplateAccessList,
WorkflowJobTemplateObjectRolesList,
WorkflowJobTemplateLabelList,
@@ -38,9 +39,12 @@ urls = [
name='workflow_job_template_notification_templates_error_list'),
url(r'^(?P<pk>[0-9]+)/notification_templates_success/$', WorkflowJobTemplateNotificationTemplatesSuccessList.as_view(),
name='workflow_job_template_notification_templates_success_list'),
url(r'^(?P<pk>[0-9]+)/notification_templates_approvals/$', WorkflowJobTemplateNotificationTemplatesApprovalList.as_view(),
name='workflow_job_template_notification_templates_approvals_list'),
url(r'^(?P<pk>[0-9]+)/access_list/$', WorkflowJobTemplateAccessList.as_view(), name='workflow_job_template_access_list'),
url(r'^(?P<pk>[0-9]+)/object_roles/$', WorkflowJobTemplateObjectRolesList.as_view(), name='workflow_job_template_object_roles_list'),
url(r'^(?P<pk>[0-9]+)/labels/$', WorkflowJobTemplateLabelList.as_view(), name='workflow_job_template_label_list'),
url(r'^(?P<pk>[0-9]+)/', include('awx.api.urls.webhooks'), {'model_kwarg': 'workflow_job_templates'}),
]
__all__ = ['urls']

View File

@@ -12,7 +12,9 @@ import socket
import sys
import time
from base64 import b64encode
from collections import OrderedDict, Iterable
from collections import OrderedDict
from urllib3.exceptions import ConnectTimeoutError
# Django
@@ -72,17 +74,17 @@ from awx.api.generics import (
SubListDestroyAPIView
)
from awx.api.versioning import reverse
from awx.conf.license import get_license
from awx.main import models
from awx.main.utils import (
camelcase_to_underscore,
extract_ansible_vars,
get_awx_version,
get_awx_http_client_headers,
get_object_or_400,
getattrd,
get_pk_from_dict,
schedule_task_manager,
ignore_inventory_computed_fields
ignore_inventory_computed_fields,
set_environ
)
from awx.main.utils.encryption import encrypt_value
from awx.main.utils.filters import SmartFilter
@@ -102,7 +104,7 @@ from awx.main.scheduler.dag_workflow import WorkflowDAG
from awx.api.views.mixin import (
ControlledByScmMixin, InstanceGroupMembershipMixin,
OrganizationCountsMixin, RelatedJobsPreventDeleteMixin,
UnifiedJobDeletionMixin,
UnifiedJobDeletionMixin, NoTruncateMixin,
)
from awx.api.views.organization import ( # noqa
OrganizationList,
@@ -111,6 +113,7 @@ from awx.api.views.organization import ( # noqa
OrganizationUsersList,
OrganizationAdminsList,
OrganizationProjectsList,
OrganizationJobTemplatesList,
OrganizationWorkflowJobTemplatesList,
OrganizationTeamsList,
OrganizationActivityStreamList,
@@ -119,6 +122,7 @@ from awx.api.views.organization import ( # noqa
OrganizationNotificationTemplatesErrorList,
OrganizationNotificationTemplatesStartedList,
OrganizationNotificationTemplatesSuccessList,
OrganizationNotificationTemplatesApprovalList,
OrganizationInstanceGroupsList,
OrganizationAccessList,
OrganizationObjectRolesList,
@@ -147,6 +151,12 @@ from awx.api.views.root import ( # noqa
ApiV2RootView,
ApiV2PingView,
ApiV2ConfigView,
ApiV2SubscriptionView,
)
from awx.api.views.webhooks import ( # noqa
WebhookKeyView,
GithubWebhookReceiver,
GitlabWebhookReceiver,
)
@@ -163,6 +173,15 @@ def api_exception_handler(exc, context):
exc = ParseError(exc.args[0])
if isinstance(context['view'], UnifiedJobStdout):
context['view'].renderer_classes = [renderers.BrowsableAPIRenderer, JSONRenderer]
if isinstance(exc, APIException):
req = context['request']._request
if 'awx.named_url_rewritten' in req.environ and not str(getattr(exc, 'status_code', 0)).startswith('2'):
# if the URL was rewritten, and it's not a 2xx level status code,
# revert the request.path to its original value to avoid leaking
# any context about the existance of resources
req.path = req.environ['awx.named_url_rewritten']
if exc.status_code == 403:
exc = NotFound(detail=_('Not found.'))
return exception_handler(exc, context)
@@ -198,20 +217,15 @@ class DashboardView(APIView):
'failed': ec2_inventory_failed.count()}
user_groups = get_user_queryset(request.user, models.Group)
groups_job_failed = (
models.Group.objects.filter(hosts_with_active_failures__gt=0) | models.Group.objects.filter(groups_with_active_failures__gt=0)
).count()
groups_inventory_failed = models.Group.objects.filter(inventory_sources__last_job_failed=True).count()
data['groups'] = {'url': reverse('api:group_list', request=request),
'failures_url': reverse('api:group_list', request=request) + "?has_active_failures=True",
'total': user_groups.count(),
'job_failed': groups_job_failed,
'inventory_failed': groups_inventory_failed}
user_hosts = get_user_queryset(request.user, models.Host)
user_hosts_failed = user_hosts.filter(has_active_failures=True)
user_hosts_failed = user_hosts.filter(last_job_host_summary__failed=True)
data['hosts'] = {'url': reverse('api:host_list', request=request),
'failures_url': reverse('api:host_list', request=request) + "?has_active_failures=True",
'failures_url': reverse('api:host_list', request=request) + "?last_job_host_summary__failed=True",
'total': user_hosts.count(),
'failed': user_hosts_failed.count()}
@@ -245,13 +259,6 @@ class DashboardView(APIView):
'total': hg_projects.count(),
'failed': hg_failed_projects.count()}
user_jobs = get_user_queryset(request.user, models.Job)
user_failed_jobs = user_jobs.filter(failed=True)
data['jobs'] = {'url': reverse('api:job_list', request=request),
'failure_url': reverse('api:job_list', request=request) + "?failed=True",
'total': user_jobs.count(),
'failed': user_failed_jobs.count()}
user_list = get_user_queryset(request.user, models.User)
team_list = get_user_queryset(request.user, models.Team)
credential_list = get_user_queryset(request.user, models.Credential)
@@ -383,6 +390,13 @@ class InstanceGroupDetail(RelatedJobsPreventDeleteMixin, RetrieveUpdateDestroyAP
serializer_class = serializers.InstanceGroupSerializer
permission_classes = (InstanceGroupTowerPermission,)
def update_raw_data(self, data):
if self.get_object().is_containerized:
data.pop('policy_instance_percentage', None)
data.pop('policy_instance_minimum', None)
data.pop('policy_instance_list', None)
return super(InstanceGroupDetail, self).update_raw_data(data)
def destroy(self, request, *args, **kwargs):
instance = self.get_object()
if instance.controller is not None:
@@ -568,6 +582,7 @@ class TeamUsersList(BaseUsersList):
serializer_class = serializers.UserSerializer
parent_model = models.Team
relationship = 'member_role.members'
ordering = ('username',)
class TeamRolesList(SubListAttachDetachAPIView):
@@ -904,6 +919,7 @@ class UserList(ListCreateAPIView):
model = models.User
serializer_class = serializers.UserSerializer
permission_classes = (UserPermission,)
ordering = ('username',)
class UserMeList(ListAPIView):
@@ -911,6 +927,7 @@ class UserMeList(ListAPIView):
model = models.User
serializer_class = serializers.UserSerializer
name = _('Me')
ordering = ('username',)
def get_queryset(self):
return self.model.objects.filter(pk=self.request.user.pk)
@@ -1086,7 +1103,7 @@ class UserRolesList(SubListAttachDetachAPIView):
credential_content_type = ContentType.objects.get_for_model(models.Credential)
if role.content_type == credential_content_type:
if role.content_object.organization and user not in role.content_object.organization.member_role:
if 'disassociate' not in request.data and role.content_object.organization and user not in role.content_object.organization.member_role:
data = dict(msg=_("You cannot grant credential access to a user not in the credentials' organization"))
return Response(data, status=status.HTTP_400_BAD_REQUEST)
@@ -1254,6 +1271,7 @@ class CredentialOwnerUsersList(SubListAPIView):
serializer_class = serializers.UserSerializer
parent_model = models.Credential
relationship = 'admin_role.members'
ordering = ('username',)
class CredentialOwnerTeamsList(SubListAPIView):
@@ -1375,6 +1393,7 @@ class CredentialExternalTest(SubDetailAPIView):
model = models.Credential
serializer_class = serializers.EmptySerializer
obj_permission_type = 'use'
def post(self, request, *args, **kwargs):
obj = self.get_object()
@@ -1389,10 +1408,18 @@ class CredentialExternalTest(SubDetailAPIView):
obj.credential_type.plugin.backend(**backend_kwargs)
return Response({}, status=status.HTTP_202_ACCEPTED)
except requests.exceptions.HTTPError as exc:
message = 'HTTP {}\n{}'.format(exc.response.status_code, exc.response.text)
message = 'HTTP {}'.format(exc.response.status_code)
return Response({'inputs': message}, status=status.HTTP_400_BAD_REQUEST)
except Exception as exc:
return Response({'inputs': str(exc)}, status=status.HTTP_400_BAD_REQUEST)
message = exc.__class__.__name__
args = getattr(exc, 'args', [])
for a in args:
if isinstance(
getattr(a, 'reason', None),
ConnectTimeoutError
):
message = str(a.reason)
return Response({'inputs': message}, status=status.HTTP_400_BAD_REQUEST)
class CredentialInputSourceDetail(RetrieveUpdateDestroyAPIView):
@@ -1441,10 +1468,18 @@ class CredentialTypeExternalTest(SubDetailAPIView):
obj.plugin.backend(**backend_kwargs)
return Response({}, status=status.HTTP_202_ACCEPTED)
except requests.exceptions.HTTPError as exc:
message = 'HTTP {}\n{}'.format(exc.response.status_code, exc.response.text)
message = 'HTTP {}'.format(exc.response.status_code)
return Response({'inputs': message}, status=status.HTTP_400_BAD_REQUEST)
except Exception as exc:
return Response({'inputs': str(exc)}, status=status.HTTP_400_BAD_REQUEST)
message = exc.__class__.__name__
args = getattr(exc, 'args', [])
for a in args:
if isinstance(
getattr(a, 'reason', None),
ConnectTimeoutError
):
message = str(a.reason)
return Response({'inputs': message}, status=status.HTTP_400_BAD_REQUEST)
class HostRelatedSearchMixin(object):
@@ -1600,7 +1635,8 @@ class HostInsights(GenericAPIView):
def _call_insights_api(self, url, session, headers):
try:
res = session.get(url, headers=headers, timeout=120)
with set_environ(**settings.AWX_TASK_ENV):
res = session.get(url, headers=headers, timeout=120)
except requests.exceptions.SSLError:
raise BadGateway(_('SSLError while trying to connect to {}').format(url))
except requests.exceptions.Timeout:
@@ -1632,18 +1668,6 @@ class HostInsights(GenericAPIView):
return session
def _get_headers(self):
license = get_license(show_key=False).get('license_type', 'UNLICENSED')
headers = {
'Content-Type': 'application/json',
'User-Agent': '{} {} ({})'.format(
'AWX' if license == 'open' else 'Red Hat Ansible Tower',
get_awx_version(),
license
)
}
return headers
def _get_platform_info(self, host, session, headers):
url = '{}/api/inventory/v1/hosts?insights_id={}'.format(
@@ -1710,7 +1734,7 @@ class HostInsights(GenericAPIView):
username = cred.get_input('username', default='')
password = cred.get_input('password', default='')
session = self._get_session(username, password)
headers = self._get_headers()
headers = get_awx_http_client_headers()
data = self._get_insights(host, session, headers)
return Response(data, status=status.HTTP_200_OK)
@@ -2136,13 +2160,22 @@ class InventorySourceHostsList(HostRelatedSearchMixin, SubListDestroyAPIView):
def perform_list_destroy(self, instance_list):
inv_source = self.get_parent_object()
with ignore_inventory_computed_fields():
# Activity stream doesn't record disassociation here anyway
# no signals-related reason to not bulk-delete
models.Host.groups.through.objects.filter(
host__inventory_sources=inv_source
).delete()
r = super(InventorySourceHostsList, self).perform_list_destroy(instance_list)
update_inventory_computed_fields.delay(inv_source.inventory_id, True)
if not settings.ACTIVITY_STREAM_ENABLED_FOR_INVENTORY_SYNC:
from awx.main.signals import disable_activity_stream
with disable_activity_stream():
# job host summary deletion necessary to avoid deadlock
models.JobHostSummary.objects.filter(host__inventory_sources=inv_source).update(host=None)
models.Host.objects.filter(inventory_sources=inv_source).delete()
r = super(InventorySourceHostsList, self).perform_list_destroy([])
else:
# Advance delete of group-host memberships to prevent deadlock
# Activity stream doesn't record disassociation here anyway
# no signals-related reason to not bulk-delete
models.Host.groups.through.objects.filter(
host__inventory_sources=inv_source
).delete()
r = super(InventorySourceHostsList, self).perform_list_destroy(instance_list)
update_inventory_computed_fields.delay(inv_source.inventory_id)
return r
@@ -2157,12 +2190,19 @@ class InventorySourceGroupsList(SubListDestroyAPIView):
def perform_list_destroy(self, instance_list):
inv_source = self.get_parent_object()
with ignore_inventory_computed_fields():
# Same arguments for bulk delete as with host list
models.Group.hosts.through.objects.filter(
group__inventory_sources=inv_source
).delete()
r = super(InventorySourceGroupsList, self).perform_list_destroy(instance_list)
update_inventory_computed_fields.delay(inv_source.inventory_id, True)
if not settings.ACTIVITY_STREAM_ENABLED_FOR_INVENTORY_SYNC:
from awx.main.signals import disable_activity_stream
with disable_activity_stream():
models.Group.objects.filter(inventory_sources=inv_source).delete()
r = super(InventorySourceGroupsList, self).perform_list_destroy([])
else:
# Advance delete of group-host memberships to prevent deadlock
# Same arguments for bulk delete as with host list
models.Group.hosts.through.objects.filter(
group__inventory_sources=inv_source
).delete()
r = super(InventorySourceGroupsList, self).perform_list_destroy(instance_list)
update_inventory_computed_fields.delay(inv_source.inventory_id)
return r
@@ -2324,70 +2364,24 @@ class JobTemplateLaunch(RetrieveAPIView):
old field structure to launch endpoint
TODO: delete this method with future API version changes
'''
ignored_fields = {}
modern_data = data.copy()
id_fd = '{}_id'.format('inventory')
if 'inventory' not in modern_data and id_fd in modern_data:
modern_data['inventory'] = modern_data[id_fd]
# Automatically convert legacy launch credential arguments into a list of `.credentials`
if 'credentials' in modern_data and 'extra_credentials' in modern_data:
raise ParseError({"error": _(
"'credentials' cannot be used in combination with 'extra_credentials'."
)})
if 'extra_credentials' in modern_data:
# make a list of the current credentials
existing_credentials = obj.credentials.all()
template_credentials = list(existing_credentials) # save copy of existing
new_credentials = []
if 'extra_credentials' in modern_data:
existing_credentials = [
cred for cred in existing_credentials
if cred.credential_type.kind not in ('cloud', 'net')
]
prompted_value = modern_data.pop('extra_credentials')
# validate type, since these are not covered by a serializer
if not isinstance(prompted_value, Iterable):
msg = _(
"Incorrect type. Expected a list received {}."
).format(prompted_value.__class__.__name__)
raise ParseError({'extra_credentials': [msg], 'credentials': [msg]})
# add the deprecated credential specified in the request
if not isinstance(prompted_value, Iterable) or isinstance(prompted_value, str):
prompted_value = [prompted_value]
# If user gave extra_credentials, special case to use exactly
# the given list without merging with JT credentials
if prompted_value:
obj._deprecated_credential_launch = True # signal to not merge credentials
new_credentials.extend(prompted_value)
# combine the list of "new" and the filtered list of "old"
new_credentials.extend([cred.pk for cred in existing_credentials])
if new_credentials:
# If provided list doesn't contain the pre-existing credentials
# defined on the template, add them back here
for cred_obj in template_credentials:
if cred_obj.pk not in new_credentials:
new_credentials.append(cred_obj.pk)
modern_data['credentials'] = new_credentials
# credential passwords were historically provided as top-level attributes
if 'credential_passwords' not in modern_data:
modern_data['credential_passwords'] = data.copy()
return (modern_data, ignored_fields)
return modern_data
def post(self, request, *args, **kwargs):
obj = self.get_object()
try:
modern_data, ignored_fields = self.modernize_launch_payload(
modern_data = self.modernize_launch_payload(
data=request.data, obj=obj
)
except ParseError as exc:
@@ -2397,8 +2391,6 @@ class JobTemplateLaunch(RetrieveAPIView):
if not serializer.is_valid():
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
ignored_fields.update(serializer._ignored_fields)
if not request.user.can_access(models.JobLaunchConfig, 'add', serializer.validated_data, template=obj):
raise PermissionDenied()
@@ -2414,11 +2406,11 @@ class JobTemplateLaunch(RetrieveAPIView):
data = OrderedDict()
if isinstance(new_job, models.WorkflowJob):
data['workflow_job'] = new_job.id
data['ignored_fields'] = self.sanitize_for_response(ignored_fields)
data['ignored_fields'] = self.sanitize_for_response(serializer._ignored_fields)
data.update(serializers.WorkflowJobSerializer(new_job, context=self.get_serializer_context()).to_representation(new_job))
else:
data['job'] = new_job.id
data['ignored_fields'] = self.sanitize_for_response(ignored_fields)
data['ignored_fields'] = self.sanitize_for_response(serializer._ignored_fields)
data.update(serializers.JobSerializer(new_job, context=self.get_serializer_context()).to_representation(new_job))
headers = {'Location': new_job.get_absolute_url(request)}
return Response(data, status=status.HTTP_201_CREATED, headers=headers)
@@ -2534,7 +2526,7 @@ class JobTemplateSurveySpec(GenericAPIView):
if not isinstance(val, allow_types):
return Response(dict(error=_("'{field_name}' in survey question {idx} expected to be {type_label}.").format(
field_name=field_name, type_label=type_label, **context
)))
)), status=status.HTTP_400_BAD_REQUEST)
if survey_item['variable'] in variable_set:
return Response(dict(error=_("'variable' '%(item)s' duplicated in survey question %(survey)s.") % {
'item': survey_item['variable'], 'survey': str(idx)}), status=status.HTTP_400_BAD_REQUEST)
@@ -2549,7 +2541,7 @@ class JobTemplateSurveySpec(GenericAPIView):
"'{survey_item[type]}' in survey question {idx} is not one of '{allowed_types}' allowed question types."
).format(
allowed_types=', '.join(JobTemplateSurveySpec.ALLOWED_TYPES.keys()), **context
)))
)), status=status.HTTP_400_BAD_REQUEST)
if 'default' in survey_item and survey_item['default'] != '':
if not isinstance(survey_item['default'], JobTemplateSurveySpec.ALLOWED_TYPES[qtype]):
type_label = 'string'
@@ -2567,11 +2559,35 @@ class JobTemplateSurveySpec(GenericAPIView):
if survey_item[key] is not None and (not isinstance(survey_item[key], int)):
return Response(dict(error=_(
"The {min_or_max} limit in survey question {idx} expected to be integer."
).format(min_or_max=key, **context)))
if qtype in ['multiplechoice', 'multiselect'] and 'choices' not in survey_item:
return Response(dict(error=_(
"Survey question {idx} of type {survey_item[type]} must specify choices.".format(**context)
)))
).format(min_or_max=key, **context)), status=status.HTTP_400_BAD_REQUEST)
# if it's a multiselect or multiple choice, it must have coices listed
# choices and defualts must come in as strings seperated by /n characters.
if qtype == 'multiselect' or qtype == 'multiplechoice':
if 'choices' in survey_item:
if isinstance(survey_item['choices'], str):
survey_item['choices'] = '\n'.join(choice for choice in survey_item['choices'].splitlines() if choice.strip() != '')
else:
return Response(dict(error=_(
"Survey question {idx} of type {survey_item[type]} must specify choices.".format(**context)
)), status=status.HTTP_400_BAD_REQUEST)
# If there is a default string split it out removing extra /n characters.
# Note: There can still be extra newline characters added in the API, these are sanitized out using .strip()
if 'default' in survey_item:
if isinstance(survey_item['default'], str):
survey_item['default'] = '\n'.join(choice for choice in survey_item['default'].splitlines() if choice.strip() != '')
list_of_defaults = survey_item['default'].splitlines()
else:
list_of_defaults = survey_item['default']
if qtype == 'multiplechoice':
# Multiplechoice types should only have 1 default.
if len(list_of_defaults) > 1:
return Response(dict(error=_(
"Multiple Choice (Single Select) can only have one default value.".format(**context)
)), status=status.HTTP_400_BAD_REQUEST)
if any(item not in survey_item['choices'] for item in list_of_defaults):
return Response(dict(error=_(
"Default choice must be answered from the choices listed.".format(**context)
)), status=status.HTTP_400_BAD_REQUEST)
# Process encryption substitution
if ("default" in survey_item and isinstance(survey_item['default'], str) and
@@ -2668,28 +2684,12 @@ class JobTemplateCredentialsList(SubListCreateAttachDetachAPIView):
return {"error": _("Cannot assign multiple {credential_type} credentials.").format(
credential_type=sub.unique_hash(display=True))}
kind = sub.credential_type.kind
if kind not in ('ssh', 'vault', 'cloud', 'net'):
if kind not in ('ssh', 'vault', 'cloud', 'net', 'kubernetes'):
return {'error': _('Cannot assign a Credential of kind `{}`.').format(kind)}
return super(JobTemplateCredentialsList, self).is_valid_relation(parent, sub, created)
class JobTemplateExtraCredentialsList(JobTemplateCredentialsList):
deprecated = True
def get_queryset(self):
sublist_qs = super(JobTemplateExtraCredentialsList, self).get_queryset()
sublist_qs = sublist_qs.filter(credential_type__kind__in=['cloud', 'net'])
return sublist_qs
def is_valid_relation(self, parent, sub, created=False):
valid = super(JobTemplateExtraCredentialsList, self).is_valid_relation(parent, sub, created)
if sub.credential_type.kind not in ('cloud', 'net'):
return {'error': _('Extra credentials must be network or cloud.')}
return valid
class JobTemplateLabelList(DeleteLastUnattachLabelMixin, SubListCreateAttachDetachAPIView):
model = models.Label
@@ -3117,6 +3117,17 @@ class WorkflowJobTemplateCopy(CopyAPIView):
data.update(messages)
return Response(data)
def _build_create_dict(self, obj):
"""Special processing of fields managed by char_prompts
"""
r = super(WorkflowJobTemplateCopy, self)._build_create_dict(obj)
field_names = set(f.name for f in obj._meta.get_fields())
for field_name, ask_field_name in obj.get_ask_mapping().items():
if field_name in r and field_name not in field_names:
r.setdefault('char_prompts', {})
r['char_prompts'][field_name] = r.pop(field_name)
return r
@staticmethod
def deep_copy_permission_check_func(user, new_objs):
for obj in new_objs:
@@ -3145,7 +3156,6 @@ class WorkflowJobTemplateLabelList(JobTemplateLabelList):
class WorkflowJobTemplateLaunch(RetrieveAPIView):
model = models.WorkflowJobTemplate
obj_permission_type = 'start'
serializer_class = serializers.WorkflowJobLaunchSerializer
@@ -3162,10 +3172,15 @@ class WorkflowJobTemplateLaunch(RetrieveAPIView):
extra_vars.setdefault(v, u'')
if extra_vars:
data['extra_vars'] = extra_vars
if obj.ask_inventory_on_launch:
data['inventory'] = obj.inventory_id
else:
data.pop('inventory', None)
modified_ask_mapping = models.WorkflowJobTemplate.get_ask_mapping()
modified_ask_mapping.pop('extra_vars')
for field_name, ask_field_name in obj.get_ask_mapping().items():
if not getattr(obj, ask_field_name):
data.pop(field_name, None)
elif field_name == 'inventory':
data[field_name] = getattrd(obj, "%s.%s" % (field_name, 'id'), None)
else:
data[field_name] = getattr(obj, field_name)
return data
def post(self, request, *args, **kwargs):
@@ -3214,7 +3229,7 @@ class WorkflowJobRelaunch(GenericAPIView):
jt = obj.job_template
if not jt:
raise ParseError(_('Cannot relaunch slice workflow job orphaned from job template.'))
elif not jt.inventory or min(jt.inventory.hosts.count(), jt.job_slice_count) != obj.workflow_nodes.count():
elif not obj.inventory or min(obj.inventory.hosts.count(), jt.job_slice_count) != obj.workflow_nodes.count():
raise ParseError(_('Cannot relaunch sliced workflow job after slice count has changed.'))
new_workflow_job = obj.create_relaunch_workflow_job()
new_workflow_job.signal_start()
@@ -3279,6 +3294,11 @@ class WorkflowJobTemplateNotificationTemplatesSuccessList(WorkflowJobTemplateNot
relationship = 'notification_templates_success'
class WorkflowJobTemplateNotificationTemplatesApprovalList(WorkflowJobTemplateNotificationTemplatesAnyList):
relationship = 'notification_templates_approvals'
class WorkflowJobTemplateAccessList(ResourceAccessList):
model = models.User # needs to be User for AccessLists's
@@ -3364,6 +3384,11 @@ class WorkflowJobNotificationsList(SubListAPIView):
relationship = 'notifications'
search_fields = ('subject', 'notification_type', 'body',)
def get_sublist_queryset(self, parent):
return self.model.objects.filter(Q(unifiedjob_notifications=parent) |
Q(unifiedjob_notifications__unified_job_node__workflow_job=parent,
unifiedjob_notifications__workflowapproval__isnull=False)).distinct()
class WorkflowJobActivityStreamList(SubListAPIView):
@@ -3481,16 +3506,6 @@ class JobCredentialsList(SubListAPIView):
relationship = 'credentials'
class JobExtraCredentialsList(JobCredentialsList):
deprecated = True
def get_queryset(self):
sublist_qs = super(JobExtraCredentialsList, self).get_queryset()
sublist_qs = sublist_qs.filter(credential_type__kind__in=['cloud', 'net'])
return sublist_qs
class JobLabelList(SubListAPIView):
model = models.Label
@@ -3713,7 +3728,7 @@ class JobHostSummaryDetail(RetrieveAPIView):
serializer_class = serializers.JobHostSummarySerializer
class JobEventList(ListAPIView):
class JobEventList(NoTruncateMixin, ListAPIView):
model = models.JobEvent
serializer_class = serializers.JobEventSerializer
@@ -3725,8 +3740,13 @@ class JobEventDetail(RetrieveAPIView):
model = models.JobEvent
serializer_class = serializers.JobEventSerializer
def get_serializer_context(self):
context = super().get_serializer_context()
context.update(no_truncate=True)
return context
class JobEventChildrenList(SubListAPIView):
class JobEventChildrenList(NoTruncateMixin, SubListAPIView):
model = models.JobEvent
serializer_class = serializers.JobEventSerializer
@@ -3750,8 +3770,14 @@ class JobEventHostsList(HostRelatedSearchMixin, SubListAPIView):
relationship = 'hosts'
name = _('Job Event Hosts List')
def get_queryset(self):
parent_event = self.get_parent_object()
self.check_parent_access(parent_event)
qs = self.request.user.get_queryset(self.model).filter(job_events_as_primary_host=parent_event)
return qs
class BaseJobEventsList(SubListAPIView):
class BaseJobEventsList(NoTruncateMixin, SubListAPIView):
model = models.JobEvent
serializer_class = serializers.JobEventSerializer
@@ -3772,8 +3798,7 @@ class HostJobEventsList(BaseJobEventsList):
def get_queryset(self):
parent_obj = self.get_parent_object()
self.check_parent_access(parent_obj)
qs = self.request.user.get_queryset(self.model).filter(
Q(host=parent_obj) | Q(hosts=parent_obj)).distinct()
qs = self.request.user.get_queryset(self.model).filter(host=parent_obj)
return qs
@@ -3789,9 +3814,7 @@ class JobJobEventsList(BaseJobEventsList):
def get_queryset(self):
job = self.get_parent_object()
self.check_parent_access(job)
qs = job.job_events
qs = qs.select_related('host')
qs = qs.prefetch_related('hosts', 'children')
qs = job.job_events.select_related('host').order_by('start_line')
return qs.all()
@@ -3947,7 +3970,7 @@ class AdHocCommandRelaunch(GenericAPIView):
return Response(data, status=status.HTTP_201_CREATED, headers=headers)
class AdHocCommandEventList(ListAPIView):
class AdHocCommandEventList(NoTruncateMixin, ListAPIView):
model = models.AdHocCommandEvent
serializer_class = serializers.AdHocCommandEventSerializer
@@ -3959,8 +3982,13 @@ class AdHocCommandEventDetail(RetrieveAPIView):
model = models.AdHocCommandEvent
serializer_class = serializers.AdHocCommandEventSerializer
def get_serializer_context(self):
context = super().get_serializer_context()
context.update(no_truncate=True)
return context
class BaseAdHocCommandEventsList(SubListAPIView):
class BaseAdHocCommandEventsList(NoTruncateMixin, SubListAPIView):
model = models.AdHocCommandEvent
serializer_class = serializers.AdHocCommandEventSerializer
@@ -4226,8 +4254,15 @@ class NotificationTemplateTest(GenericAPIView):
def post(self, request, *args, **kwargs):
obj = self.get_object()
notification = obj.generate_notification("Tower Notification Test {} {}".format(obj.id, settings.TOWER_URL_BASE),
{"body": "Ansible Tower Test Notification {} {}".format(obj.id, settings.TOWER_URL_BASE)})
msg = "Tower Notification Test {} {}".format(obj.id, settings.TOWER_URL_BASE)
if obj.notification_type in ('email', 'pagerduty'):
body = "Ansible Tower Test Notification {} {}".format(obj.id, settings.TOWER_URL_BASE)
elif obj.notification_type in ('webhook', 'grafana'):
body = '{{"body": "Ansible Tower Test Notification {} {}"}}'.format(obj.id, settings.TOWER_URL_BASE)
else:
body = {"body": "Ansible Tower Test Notification {} {}".format(obj.id, settings.TOWER_URL_BASE)}
notification = obj.generate_notification(msg, body)
if not notification:
return Response({}, status=status.HTTP_400_BAD_REQUEST)
else:
@@ -4333,7 +4368,7 @@ class RoleUsersList(SubListAttachDetachAPIView):
credential_content_type = ContentType.objects.get_for_model(models.Credential)
if role.content_type == credential_content_type:
if role.content_object.organization and user not in role.content_object.organization.member_role:
if 'disassociate' not in request.data and role.content_object.organization and user not in role.content_object.organization.member_role:
data = dict(msg=_("You cannot grant credential access to a user not in the credentials' organization"))
return Response(data, status=status.HTTP_400_BAD_REQUEST)

View File

@@ -70,12 +70,16 @@ class InventoryUpdateEventsList(SubListAPIView):
class InventoryScriptList(ListCreateAPIView):
deprecated = True
model = CustomInventoryScript
serializer_class = CustomInventoryScriptSerializer
class InventoryScriptDetail(RetrieveUpdateDestroyAPIView):
deprecated = True
model = CustomInventoryScript
serializer_class = CustomInventoryScriptSerializer
@@ -92,6 +96,8 @@ class InventoryScriptDetail(RetrieveUpdateDestroyAPIView):
class InventoryScriptObjectRolesList(SubListAPIView):
deprecated = True
model = Role
serializer_class = RoleSerializer
parent_model = CustomInventoryScript
@@ -105,6 +111,8 @@ class InventoryScriptObjectRolesList(SubListAPIView):
class InventoryScriptCopy(CopyAPIView):
deprecated = True
model = CustomInventoryScript
copy_return_serializer_class = CustomInventoryScriptSerializer

View File

@@ -39,3 +39,4 @@ class MetricsView(APIView):
if (request.user.is_superuser or request.user.is_system_auditor):
return Response(metrics().decode('UTF-8'))
raise PermissionDenied()

View File

@@ -4,10 +4,7 @@
import dateutil
import logging
from django.db.models import (
Count,
F,
)
from django.db.models import Count
from django.db import transaction
from django.shortcuts import get_object_or_404
from django.utils.timezone import now
@@ -175,28 +172,18 @@ class OrganizationCountsMixin(object):
inv_qs = Inventory.accessible_objects(self.request.user, 'read_role')
project_qs = Project.accessible_objects(self.request.user, 'read_role')
jt_qs = JobTemplate.accessible_objects(self.request.user, 'read_role')
# Produce counts of Foreign Key relationships
db_results['inventories'] = inv_qs\
.values('organization').annotate(Count('organization')).order_by('organization')
db_results['inventories'] = inv_qs.values('organization').annotate(Count('organization')).order_by('organization')
db_results['teams'] = Team.accessible_objects(
self.request.user, 'read_role').values('organization').annotate(
Count('organization')).order_by('organization')
JT_project_reference = 'project__organization'
JT_inventory_reference = 'inventory__organization'
db_results['job_templates_project'] = JobTemplate.accessible_objects(
self.request.user, 'read_role').exclude(
project__organization=F(JT_inventory_reference)).values(JT_project_reference).annotate(
Count(JT_project_reference)).order_by(JT_project_reference)
db_results['job_templates'] = jt_qs.values('organization').annotate(Count('organization')).order_by('organization')
db_results['job_templates_inventory'] = JobTemplate.accessible_objects(
self.request.user, 'read_role').values(JT_inventory_reference).annotate(
Count(JT_inventory_reference)).order_by(JT_inventory_reference)
db_results['projects'] = project_qs\
.values('organization').annotate(Count('organization')).order_by('organization')
db_results['projects'] = project_qs.values('organization').annotate(Count('organization')).order_by('organization')
# Other members and admins of organization are always viewable
db_results['users'] = org_qs.annotate(
@@ -212,11 +199,7 @@ class OrganizationCountsMixin(object):
'admins': 0, 'projects': 0}
for res, count_qs in db_results.items():
if res == 'job_templates_project':
org_reference = JT_project_reference
elif res == 'job_templates_inventory':
org_reference = JT_inventory_reference
elif res == 'users':
if res == 'users':
org_reference = 'id'
else:
org_reference = 'organization'
@@ -229,14 +212,6 @@ class OrganizationCountsMixin(object):
continue
count_context[org_id][res] = entry['%s__count' % org_reference]
# Combine the counts for job templates by project and inventory
for org in org_id_list:
org_id = org['id']
count_context[org_id]['job_templates'] = 0
for related_path in ['job_templates_project', 'job_templates_inventory']:
if related_path in count_context[org_id]:
count_context[org_id]['job_templates'] += count_context[org_id].pop(related_path)
full_context['related_field_counts'] = count_context
return full_context
@@ -270,3 +245,11 @@ class ControlledByScmMixin(object):
obj = super(ControlledByScmMixin, self).get_parent_object()
self._reset_inv_src_rev(obj)
return obj
class NoTruncateMixin(object):
def get_serializer_context(self):
context = super().get_serializer_context()
if self.request.query_params.get('no_truncate'):
context.update(no_truncate=True)
return context

View File

@@ -20,7 +20,7 @@ from awx.main.models import (
Role,
User,
Team,
InstanceGroup,
InstanceGroup
)
from awx.api.generics import (
ListCreateAPIView,
@@ -28,6 +28,7 @@ from awx.api.generics import (
SubListAPIView,
SubListCreateAttachDetachAPIView,
SubListAttachDetachAPIView,
SubListCreateAPIView,
ResourceAccessList,
BaseUsersList,
)
@@ -35,14 +36,13 @@ from awx.api.generics import (
from awx.api.serializers import (
OrganizationSerializer,
InventorySerializer,
ProjectSerializer,
UserSerializer,
TeamSerializer,
ActivityStreamSerializer,
RoleSerializer,
NotificationTemplateSerializer,
WorkflowJobTemplateSerializer,
InstanceGroupSerializer,
ProjectSerializer, JobTemplateSerializer, WorkflowJobTemplateSerializer
)
from awx.api.views.mixin import (
RelatedJobsPreventDeleteMixin,
@@ -94,7 +94,7 @@ class OrganizationDetail(RelatedJobsPreventDeleteMixin, RetrieveUpdateDestroyAPI
org_counts['projects'] = Project.accessible_objects(**access_kwargs).filter(
organization__id=org_id).count()
org_counts['job_templates'] = JobTemplate.accessible_objects(**access_kwargs).filter(
project__organization__id=org_id).count()
organization__id=org_id).count()
full_context['related_field_counts'] = {}
full_context['related_field_counts'][org_id] = org_counts
@@ -128,21 +128,27 @@ class OrganizationAdminsList(BaseUsersList):
ordering = ('username',)
class OrganizationProjectsList(SubListCreateAttachDetachAPIView):
class OrganizationProjectsList(SubListCreateAPIView):
model = Project
serializer_class = ProjectSerializer
parent_model = Organization
relationship = 'projects'
parent_key = 'organization'
class OrganizationWorkflowJobTemplatesList(SubListCreateAttachDetachAPIView):
class OrganizationJobTemplatesList(SubListCreateAPIView):
model = JobTemplate
serializer_class = JobTemplateSerializer
parent_model = Organization
parent_key = 'organization'
class OrganizationWorkflowJobTemplatesList(SubListCreateAPIView):
model = WorkflowJobTemplate
serializer_class = WorkflowJobTemplateSerializer
parent_model = Organization
relationship = 'workflows'
parent_key = 'organization'
@@ -195,6 +201,11 @@ class OrganizationNotificationTemplatesSuccessList(OrganizationNotificationTempl
relationship = 'notification_templates_success'
class OrganizationNotificationTemplatesApprovalList(OrganizationNotificationTemplatesAnyList):
relationship = 'notification_templates_approvals'
class OrganizationInstanceGroupsList(SubListAttachDetachAPIView):
model = InstanceGroup

View File

@@ -17,7 +17,10 @@ from rest_framework.permissions import AllowAny, IsAuthenticated
from rest_framework.response import Response
from rest_framework import status
import requests
from awx.api.generics import APIView
from awx.conf.registry import settings_registry
from awx.main.ha import is_ha_environment
from awx.main.utils import (
get_awx_version,
@@ -35,6 +38,7 @@ from awx.main.models import (
InstanceGroup,
JobTemplate,
)
from awx.main.utils import set_environ
logger = logging.getLogger('awx.api.views.root')
@@ -58,6 +62,7 @@ class ApiRootView(APIView):
data['oauth2'] = drf_reverse('api:oauth_authorization_root_view')
data['custom_logo'] = settings.CUSTOM_LOGO
data['custom_login_info'] = settings.CUSTOM_LOGIN_INFO
data['login_redirect_override'] = settings.LOGIN_REDIRECT_OVERRIDE
return Response(data)
@@ -169,6 +174,51 @@ class ApiV2PingView(APIView):
return Response(response)
class ApiV2SubscriptionView(APIView):
permission_classes = (IsAuthenticated,)
name = _('Configuration')
swagger_topic = 'System Configuration'
def check_permissions(self, request):
super(ApiV2SubscriptionView, self).check_permissions(request)
if not request.user.is_superuser and request.method.lower() not in {'options', 'head'}:
self.permission_denied(request) # Raises PermissionDenied exception.
def post(self, request):
from awx.main.utils.common import get_licenser
data = request.data.copy()
if data.get('rh_password') == '$encrypted$':
data['rh_password'] = settings.REDHAT_PASSWORD
try:
user, pw = data.get('rh_username'), data.get('rh_password')
with set_environ(**settings.AWX_TASK_ENV):
validated = get_licenser().validate_rh(user, pw)
if user:
settings.REDHAT_USERNAME = data['rh_username']
if pw:
settings.REDHAT_PASSWORD = data['rh_password']
except Exception as exc:
msg = _("Invalid License")
if (
isinstance(exc, requests.exceptions.HTTPError) and
getattr(getattr(exc, 'response', None), 'status_code', None) == 401
):
msg = _("The provided credentials are invalid (HTTP 401).")
elif isinstance(exc, requests.exceptions.ProxyError):
msg = _("Unable to connect to proxy server.")
elif isinstance(exc, requests.exceptions.ConnectionError):
msg = _("Could not connect to subscription service.")
elif isinstance(exc, (ValueError, OSError)) and exc.args:
msg = exc.args[0]
else:
logger.exception(smart_text(u"Invalid license submitted."),
extra=dict(actor=request.user.username))
return Response({"error": msg}, status=status.HTTP_400_BAD_REQUEST)
return Response(validated)
class ApiV2ConfigView(APIView):
permission_classes = (IsAuthenticated,)
@@ -260,7 +310,8 @@ class ApiV2ConfigView(APIView):
# If the license is valid, write it to the database.
if license_data_validated['valid_key']:
settings.LICENSE = license_data
settings.TOWER_URL_BASE = "{}://{}".format(request.scheme, request.get_host())
if not settings_registry.is_setting_read_only('TOWER_URL_BASE'):
settings.TOWER_URL_BASE = "{}://{}".format(request.scheme, request.get_host())
return Response(license_data_validated)
logger.warning(smart_text(u"Invalid license submitted."),

246
awx/api/views/webhooks.py Normal file
View File

@@ -0,0 +1,246 @@
from hashlib import sha1
import hmac
import logging
import urllib.parse
from django.utils.encoding import force_bytes
from django.utils.translation import ugettext_lazy as _
from django.views.decorators.csrf import csrf_exempt
from rest_framework import status
from rest_framework.exceptions import PermissionDenied
from rest_framework.permissions import AllowAny
from rest_framework.response import Response
from awx.api import serializers
from awx.api.generics import APIView, GenericAPIView
from awx.api.permissions import WebhookKeyPermission
from awx.main.models import Job, JobTemplate, WorkflowJob, WorkflowJobTemplate
logger = logging.getLogger('awx.api.views.webhooks')
class WebhookKeyView(GenericAPIView):
serializer_class = serializers.EmptySerializer
permission_classes = (WebhookKeyPermission,)
def get_queryset(self):
qs_models = {
'job_templates': JobTemplate,
'workflow_job_templates': WorkflowJobTemplate,
}
self.model = qs_models.get(self.kwargs['model_kwarg'])
return super().get_queryset()
def get(self, request, *args, **kwargs):
obj = self.get_object()
return Response({'webhook_key': obj.webhook_key})
def post(self, request, *args, **kwargs):
obj = self.get_object()
obj.rotate_webhook_key()
obj.save(update_fields=['webhook_key'])
return Response({'webhook_key': obj.webhook_key}, status=status.HTTP_201_CREATED)
class WebhookReceiverBase(APIView):
lookup_url_kwarg = None
lookup_field = 'pk'
permission_classes = (AllowAny,)
authentication_classes = ()
ref_keys = {}
def get_queryset(self):
qs_models = {
'job_templates': JobTemplate,
'workflow_job_templates': WorkflowJobTemplate,
}
model = qs_models.get(self.kwargs['model_kwarg'])
if model is None:
raise PermissionDenied
return model.objects.filter(webhook_service=self.service).exclude(webhook_key='')
def get_object(self):
queryset = self.get_queryset()
lookup_url_kwarg = self.lookup_url_kwarg or self.lookup_field
filter_kwargs = {self.lookup_field: self.kwargs[lookup_url_kwarg]}
obj = queryset.filter(**filter_kwargs).first()
if obj is None:
raise PermissionDenied
return obj
def get_event_type(self):
raise NotImplementedError
def get_event_guid(self):
raise NotImplementedError
def get_event_status_api(self):
raise NotImplementedError
def get_event_ref(self):
key = self.ref_keys.get(self.get_event_type(), '')
value = self.request.data
for element in key.split('.'):
try:
if element.isdigit():
value = value[int(element)]
else:
value = (value or {}).get(element)
except Exception:
value = None
if value == '0000000000000000000000000000000000000000': # a deleted ref
value = None
return value
def get_signature(self):
raise NotImplementedError
def check_signature(self, obj):
if not obj.webhook_key:
raise PermissionDenied
mac = hmac.new(force_bytes(obj.webhook_key), msg=force_bytes(self.request.body), digestmod=sha1)
logger.debug("header signature: %s", self.get_signature())
logger.debug("calculated signature: %s", force_bytes(mac.hexdigest()))
if not hmac.compare_digest(force_bytes(mac.hexdigest()), self.get_signature()):
raise PermissionDenied
@csrf_exempt
def post(self, request, *args, **kwargs):
# Ensure that the full contents of the request are captured for multiple uses.
request.body
logger.debug(
"headers: {}\n"
"data: {}\n".format(request.headers, request.data)
)
obj = self.get_object()
self.check_signature(obj)
event_type = self.get_event_type()
event_guid = self.get_event_guid()
event_ref = self.get_event_ref()
status_api = self.get_event_status_api()
kwargs = {
'unified_job_template_id': obj.id,
'webhook_service': obj.webhook_service,
'webhook_guid': event_guid,
}
if WorkflowJob.objects.filter(**kwargs).exists() or Job.objects.filter(**kwargs).exists():
# Short circuit if this webhook has already been received and acted upon.
logger.debug("Webhook previously received, returning without action.")
return Response({'message': _("Webhook previously received, aborting.")},
status=status.HTTP_202_ACCEPTED)
kwargs = {
'_eager_fields': {
'launch_type': 'webhook',
'webhook_service': obj.webhook_service,
'webhook_credential': obj.webhook_credential,
'webhook_guid': event_guid,
},
'extra_vars': {
'tower_webhook_event_type': event_type,
'tower_webhook_event_guid': event_guid,
'tower_webhook_event_ref': event_ref,
'tower_webhook_status_api': status_api,
'tower_webhook_payload': request.data,
}
}
new_job = obj.create_unified_job(**kwargs)
new_job.signal_start()
return Response({'message': "Job queued."}, status=status.HTTP_202_ACCEPTED)
class GithubWebhookReceiver(WebhookReceiverBase):
service = 'github'
ref_keys = {
'pull_request': 'pull_request.head.sha',
'pull_request_review': 'pull_request.head.sha',
'pull_request_review_comment': 'pull_request.head.sha',
'push': 'after',
'release': 'release.tag_name',
'commit_comment': 'comment.commit_id',
'create': 'ref',
'page_build': 'build.commit',
}
def get_event_type(self):
return self.request.META.get('HTTP_X_GITHUB_EVENT')
def get_event_guid(self):
return self.request.META.get('HTTP_X_GITHUB_DELIVERY')
def get_event_status_api(self):
if self.get_event_type() != 'pull_request':
return
return self.request.data.get('pull_request', {}).get('statuses_url')
def get_signature(self):
header_sig = self.request.META.get('HTTP_X_HUB_SIGNATURE')
if not header_sig:
logger.debug("Expected signature missing from header key HTTP_X_HUB_SIGNATURE")
raise PermissionDenied
hash_alg, signature = header_sig.split('=')
if hash_alg != 'sha1':
logger.debug("Unsupported signature type, expected: sha1, received: {}".format(hash_alg))
raise PermissionDenied
return force_bytes(signature)
class GitlabWebhookReceiver(WebhookReceiverBase):
service = 'gitlab'
ref_keys = {
'Push Hook': 'checkout_sha',
'Tag Push Hook': 'checkout_sha',
'Merge Request Hook': 'object_attributes.last_commit.id',
}
def get_event_type(self):
return self.request.META.get('HTTP_X_GITLAB_EVENT')
def get_event_guid(self):
# GitLab does not provide a unique identifier on events, so construct one.
h = sha1()
h.update(force_bytes(self.request.body))
return h.hexdigest()
def get_event_status_api(self):
if self.get_event_type() != 'Merge Request Hook':
return
project = self.request.data.get('project', {})
repo_url = project.get('web_url')
if not repo_url:
return
parsed = urllib.parse.urlparse(repo_url)
return "{}://{}/api/v4/projects/{}/statuses/{}".format(
parsed.scheme, parsed.netloc, project['id'], self.get_event_ref())
def get_signature(self):
return force_bytes(self.request.META.get('HTTP_X_GITLAB_TOKEN') or '')
def check_signature(self, obj):
if not obj.webhook_key:
raise PermissionDenied
# GitLab only returns the secret token, not an hmac hash. Use
# the hmac `compare_digest` helper function to prevent timing
# analysis by attackers.
if not hmac.compare_digest(force_bytes(obj.webhook_key), self.get_signature()):
raise PermissionDenied

View File

@@ -2,14 +2,14 @@
# All Rights Reserved.
import os
import logging
import django
from awx import __version__ as tower_version
# Prepare the AWX environment.
from awx import prepare_env, MODE
from channels.routing import get_default_application # noqa
prepare_env() # NOQA
from django.core.wsgi import get_wsgi_application # NOQA
from channels.asgi import get_channel_layer
"""
ASGI config for AWX project.
@@ -32,6 +32,5 @@ if MODE == 'production':
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "awx.settings")
channel_layer = get_channel_layer()
django.setup()
channel_layer = get_default_application()

View File

@@ -1,17 +1,18 @@
# Python
import os
import re
import logging
import urllib.parse as urlparse
from collections import OrderedDict
# Django
from django.core.validators import URLValidator
from django.core.validators import URLValidator, _lazy_re_compile
from django.utils.translation import ugettext_lazy as _
# Django REST Framework
from rest_framework.fields import ( # noqa
BooleanField, CharField, ChoiceField, DictField, EmailField, IntegerField,
ListField, NullBooleanField
BooleanField, CharField, ChoiceField, DictField, DateTimeField, EmailField,
IntegerField, ListField, NullBooleanField
)
logger = logging.getLogger('awx.conf.fields')
@@ -118,14 +119,42 @@ class StringListPathField(StringListField):
class URLField(CharField):
# these lines set up a custom regex that allow numbers in the
# top-level domain
tld_re = (
r'\.' # dot
r'(?!-)' # can't start with a dash
r'(?:[a-z' + URLValidator.ul + r'0-9' + '-]{2,63}' # domain label, this line was changed from the original URLValidator
r'|xn--[a-z0-9]{1,59})' # or punycode label
r'(?<!-)' # can't end with a dash
r'\.?' # may have a trailing dot
)
host_re = '(' + URLValidator.hostname_re + URLValidator.domain_re + tld_re + '|localhost)'
regex = _lazy_re_compile(
r'^(?:[a-z0-9\.\-\+]*)://' # scheme is validated separately
r'(?:[^\s:@/]+(?::[^\s:@/]*)?@)?' # user:pass authentication
r'(?:' + URLValidator.ipv4_re + '|' + URLValidator.ipv6_re + '|' + host_re + ')'
r'(?::\d{2,5})?' # port
r'(?:[/?#][^\s]*)?' # resource path
r'\Z', re.IGNORECASE)
def __init__(self, **kwargs):
schemes = kwargs.pop('schemes', None)
regex = kwargs.pop('regex', None)
self.allow_plain_hostname = kwargs.pop('allow_plain_hostname', False)
self.allow_numbers_in_top_level_domain = kwargs.pop('allow_numbers_in_top_level_domain', True)
super(URLField, self).__init__(**kwargs)
validator_kwargs = dict(message=_('Enter a valid URL'))
if schemes is not None:
validator_kwargs['schemes'] = schemes
if regex is not None:
validator_kwargs['regex'] = regex
if self.allow_numbers_in_top_level_domain and regex is None:
# default behavior is to allow numbers in the top level domain
# if a custom regex isn't provided
validator_kwargs['regex'] = URLField.regex
self.validators.append(URLValidator(**validator_kwargs))
def to_representation(self, value):
@@ -143,9 +172,9 @@ class URLField(CharField):
netloc = '{}:{}'.format(netloc, url_parts.port)
if url_parts.username:
if url_parts.password:
netloc = '{}:{}@{}' % (url_parts.username, url_parts.password, netloc)
netloc = '{}:{}@{}'.format(url_parts.username, url_parts.password, netloc)
else:
netloc = '{}@{}' % (url_parts.username, netloc)
netloc = '{}@{}'.format(url_parts.username, netloc)
value = urlparse.urlunsplit([url_parts.scheme, netloc, url_parts.path, url_parts.query, url_parts.fragment])
except Exception:
raise # If something fails here, just fall through and let the validators check it.

View File

@@ -1,13 +1,12 @@
# Copyright (c) 2016 Ansible, Inc.
# All Rights Reserved.
# Tower
from awx.main.utils.common import get_licenser
__all__ = ['get_license']
def _get_validated_license_data():
from awx.main.utils.common import get_licenser
return get_licenser().validate()

View File

@@ -2,7 +2,6 @@
from __future__ import unicode_literals
from django.db import migrations
from awx.conf.migrations import _reencrypt
class Migration(migrations.Migration):
@@ -12,5 +11,8 @@ class Migration(migrations.Migration):
]
operations = [
migrations.RunPython(_reencrypt.replace_aesecb_fernet),
# This list is intentionally empty.
# Tower 3.2 included several data migrations that are no longer
# necessary (this list is now empty because Tower 3.2 is past EOL and
# cannot be directly upgraded to modern versions of Tower)
]

View File

@@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations
from awx.conf.migrations import _rename_setting
def copy_allowed_ips(apps, schema_editor):
_rename_setting.rename_setting(apps, schema_editor, old_key='PROXY_IP_WHITELIST', new_key='PROXY_IP_ALLOWED_LIST')
class Migration(migrations.Migration):
dependencies = [
('conf', '0006_v331_ldap_group_type'),
]
operations = [
migrations.RunPython(copy_allowed_ips),
]

View File

@@ -1,30 +1,13 @@
import base64
import hashlib
from django.utils.encoding import smart_str
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives.ciphers import Cipher
from cryptography.hazmat.primitives.ciphers.algorithms import AES
from cryptography.hazmat.primitives.ciphers.modes import ECB
from awx.conf import settings_registry
__all__ = ['replace_aesecb_fernet', 'get_encryption_key', 'encrypt_field',
'decrypt_value', 'decrypt_value', 'should_decrypt_field']
def replace_aesecb_fernet(apps, schema_editor):
from awx.main.utils.encryption import encrypt_field
Setting = apps.get_model('conf', 'Setting')
for setting in Setting.objects.filter().order_by('pk'):
if settings_registry.is_setting_encrypted(setting.key):
if should_decrypt_field(setting.value):
setting.value = decrypt_field(setting, 'value')
setting.value = encrypt_field(setting, 'value')
setting.save()
__all__ = ['get_encryption_key', 'decrypt_field']
def get_encryption_key(field_name, pk=None):
@@ -76,38 +59,3 @@ def decrypt_field(instance, field_name, subfield=None):
key = get_encryption_key(field_name, getattr(instance, 'pk', None))
return decrypt_value(key, value)
def encrypt_field(instance, field_name, ask=False, subfield=None, skip_utf8=False):
'''
Return content of the given instance and field name encrypted.
'''
value = getattr(instance, field_name)
if isinstance(value, dict) and subfield is not None:
value = value[subfield]
if not value or value.startswith('$encrypted$') or (ask and value == 'ASK'):
return value
if skip_utf8:
utf8 = False
else:
utf8 = type(value) == str
value = smart_str(value)
key = get_encryption_key(field_name, getattr(instance, 'pk', None))
encryptor = Cipher(AES(key), ECB(), default_backend()).encryptor()
block_size = 16
while len(value) % block_size != 0:
value += '\x00'
encrypted = encryptor.update(value) + encryptor.finalize()
b64data = base64.b64encode(encrypted)
tokens = ['$encrypted', 'AES', b64data]
if utf8:
# If the value to encrypt is utf-8, we need to add a marker so we
# know to decode the data when it's decrypted later
tokens.insert(1, 'UTF8')
return '$'.join(tokens)
def should_decrypt_field(value):
if hasattr(value, 'startswith'):
return value.startswith('$encrypted$') and '$AESCBC$' not in value
return False

View File

@@ -1,14 +1,9 @@
# Python
from collections import namedtuple
import contextlib
import logging
import re
import sys
import threading
import time
import traceback
import urllib.parse
from io import StringIO
# Django
from django.conf import LazySettings
@@ -16,7 +11,7 @@ from django.conf import settings, UserSettingsHolder
from django.core.cache import cache as django_cache
from django.core.exceptions import ImproperlyConfigured
from django.db import transaction, connection
from django.db.utils import Error as DBError
from django.db.utils import Error as DBError, ProgrammingError
from django.utils.functional import cached_property
# Django REST Framework
@@ -36,18 +31,18 @@ logger = logging.getLogger('awx.conf.settings')
# Store a special value to indicate when a setting is not set in the database.
SETTING_CACHE_NOTSET = '___notset___'
# Cannot store None in memcached; use a special value instead to indicate None.
# Cannot store None in cache; use a special value instead to indicate None.
# If the special value for None is the same as the "not set" value, then a value
# of None will be equivalent to the setting not being set (and will raise an
# AttributeError if there is no other default defined).
# SETTING_CACHE_NONE = '___none___'
SETTING_CACHE_NONE = SETTING_CACHE_NOTSET
# Cannot store empty list/tuple in memcached; use a special value instead to
# Cannot store empty list/tuple in cache; use a special value instead to
# indicate an empty list.
SETTING_CACHE_EMPTY_LIST = '___[]___'
# Cannot store empty dict in memcached; use a special value instead to indicate
# Cannot store empty dict in cache; use a special value instead to indicate
# an empty dict.
SETTING_CACHE_EMPTY_DICT = '___{}___'
@@ -60,15 +55,6 @@ SETTING_CACHE_DEFAULTS = True
__all__ = ['SettingsWrapper', 'get_settings_to_cache', 'SETTING_CACHE_NOTSET']
def normalize_broker_url(value):
parts = value.rsplit('@', 1)
match = re.search('(amqp://[^:]+:)(.*)', parts[0])
if match:
prefix, password = match.group(1), match.group(2)
parts[0] = prefix + urllib.parse.quote(password)
return '@'.join(parts)
@contextlib.contextmanager
def _ctit_db_wrapper(trans_safe=False):
'''
@@ -88,43 +74,21 @@ def _ctit_db_wrapper(trans_safe=False):
logger.debug('Obtaining database settings in spite of broken transaction.')
transaction.set_rollback(False)
yield
except DBError:
# We want the _full_ traceback with the context
# First we get the current call stack, which constitutes the "top",
# it has the context up to the point where the context manager is used
top_stack = StringIO()
traceback.print_stack(file=top_stack)
top_lines = top_stack.getvalue().strip('\n').split('\n')
top_stack.close()
# Get "bottom" stack from the local error that happened
# inside of the "with" block this wraps
exc_type, exc_value, exc_traceback = sys.exc_info()
bottom_stack = StringIO()
traceback.print_tb(exc_traceback, file=bottom_stack)
bottom_lines = bottom_stack.getvalue().strip('\n').split('\n')
# Glue together top and bottom where overlap is found
bottom_cutoff = 0
for i, line in enumerate(bottom_lines):
if line in top_lines:
# start of overlapping section, take overlap from bottom
top_lines = top_lines[:top_lines.index(line)]
bottom_cutoff = i
break
bottom_lines = bottom_lines[bottom_cutoff:]
tb_lines = top_lines + bottom_lines
tb_string = '\n'.join(
['Traceback (most recent call last):'] +
tb_lines +
['{}: {}'.format(exc_type.__name__, str(exc_value))]
)
bottom_stack.close()
# Log the combined stack
except DBError as exc:
if trans_safe:
if 'check_migrations' not in sys.argv:
logger.debug('Database settings are not available, using defaults, error:\n{}'.format(tb_string))
if 'migrate' not in sys.argv and 'check_migrations' not in sys.argv:
level = logger.exception
if isinstance(exc, ProgrammingError):
if 'relation' in str(exc) and 'does not exist' in str(exc):
# this generally means we can't fetch Tower configuration
# because the database hasn't actually finished migrating yet;
# this is usually a sign that a service in a container (such as ws_broadcast)
# has come up *before* the database has finished migrating, and
# especially that the conf.settings table doesn't exist yet
level = logger.debug
level('Database settings are not available, using defaults.')
else:
logger.debug('Error modifying something related to database settings.\n{}'.format(tb_string))
logger.exception('Error modifying something related to database settings.')
finally:
if trans_safe and is_atomic and rollback_set:
transaction.set_rollback(rollback_set)
@@ -136,6 +100,15 @@ def filter_sensitive(registry, key, value):
return value
class TransientSetting(object):
__slots__ = ('pk', 'value')
def __init__(self, pk, value):
self.pk = pk
self.value = value
class EncryptedCacheProxy(object):
def __init__(self, cache, registry, encrypter=None, decrypter=None):
@@ -163,7 +136,6 @@ class EncryptedCacheProxy(object):
def get(self, key, **kwargs):
value = self.cache.get(key, **kwargs)
value = self._handle_encryption(self.decrypter, key, value)
logger.debug('cache get(%r, %r) -> %r', key, empty, filter_sensitive(self.registry, key, value))
return value
def set(self, key, value, log=True, **kwargs):
@@ -186,8 +158,6 @@ class EncryptedCacheProxy(object):
self.set(key, value, log=False, **kwargs)
def _handle_encryption(self, method, key, value):
TransientSetting = namedtuple('TransientSetting', ['pk', 'value'])
if value is not empty and self.registry.is_setting_encrypted(key):
# If the setting exists in the database, we'll use its primary key
# as part of the AES key when encrypting/decrypting
@@ -443,22 +413,13 @@ class SettingsWrapper(UserSettingsHolder):
value = self._get_local(name)
if value is not empty:
return value
value = self._get_default(name)
# sometimes users specify RabbitMQ passwords that contain
# unescaped : and @ characters that confused urlparse, e.g.,
# amqp://guest:a@ns:ibl3#@localhost:5672//
#
# detect these scenarios, and automatically escape the user's
# password so it just works
if name == 'BROKER_URL':
value = normalize_broker_url(value)
return value
return self._get_default(name)
def _set_local(self, name, value):
field = self.registry.get_setting_field(name)
if field.read_only:
logger.warning('Attempt to set read only setting "%s".', name)
raise ImproperlyConfigured('Setting "%s" is read only.'.format(name))
raise ImproperlyConfigured('Setting "{}" is read only.'.format(name))
try:
data = field.to_representation(value)
@@ -489,7 +450,7 @@ class SettingsWrapper(UserSettingsHolder):
field = self.registry.get_setting_field(name)
if field.read_only:
logger.warning('Attempt to delete read only setting "%s".', name)
raise ImproperlyConfigured('Setting "%s" is read only.'.format(name))
raise ImproperlyConfigured('Setting "{}" is read only.'.format(name))
for setting in Setting.objects.filter(key=name, user__isnull=True):
setting.delete()
# pre_delete handler will delete from cache.

View File

@@ -325,17 +325,3 @@ def test_setting_singleton_delete_no_read_only_fields(api_request, dummy_setting
)
assert response.data['FOO_BAR'] == 23
@pytest.mark.django_db
def test_setting_logging_test(api_request):
with mock.patch('awx.conf.views.AWXProxyHandler.perform_test') as mock_func:
api_request(
'post',
reverse('api:setting_logging_test'),
data={'LOG_AGGREGATOR_HOST': 'http://foobar', 'LOG_AGGREGATOR_TYPE': 'logstash'}
)
call = mock_func.call_args_list[0]
args, kwargs = call
given_settings = kwargs['custom_settings']
assert given_settings.LOG_AGGREGATOR_HOST == 'http://foobar'
assert given_settings.LOG_AGGREGATOR_TYPE == 'logstash'

View File

@@ -1,7 +1,7 @@
import pytest
from rest_framework.fields import ValidationError
from awx.conf.fields import StringListBooleanField, StringListPathField, ListTuplesField
from awx.conf.fields import StringListBooleanField, StringListPathField, ListTuplesField, URLField
class TestStringListBooleanField():
@@ -62,7 +62,7 @@ class TestListTuplesField():
FIELD_VALUES = [
([('a', 'b'), ('abc', '123')], [("a", "b"), ("abc", "123")]),
]
FIELD_VALUES_INVALID = [
("abc", type("abc")),
([('a', 'b', 'c'), ('abc', '123', '456')], type(('a',))),
@@ -130,3 +130,25 @@ class TestStringListPathField():
field.to_internal_value([value])
assert e.value.detail[0] == "{} is not a valid path choice.".format(value)
class TestURLField():
regex = "^https://www.example.org$"
@pytest.mark.parametrize("url,schemes,regex, allow_numbers_in_top_level_domain, expect_no_error",[
("ldap://www.example.org42", "ldap", None, True, True),
("https://www.example.org42", "https", None, False, False),
("https://www.example.org", None, regex, None, True),
("https://www.example3.org", None, regex, None, False),
("ftp://www.example.org", "https", None, None, False)
])
def test_urls(self, url, schemes, regex, allow_numbers_in_top_level_domain, expect_no_error):
kwargs = {}
kwargs.setdefault("allow_numbers_in_top_level_domain", allow_numbers_in_top_level_domain)
kwargs.setdefault("schemes", schemes)
kwargs.setdefault("regex", regex)
field = URLField(**kwargs)
if expect_no_error:
field.run_validators(url)
else:
with pytest.raises(ValidationError):
field.run_validators(url)

View File

@@ -29,9 +29,10 @@ def reg(request):
# as "defined in a settings file". This is analogous to manually
# specifying a setting on the filesystem (e.g., in a local_settings.py in
# development, or in /etc/tower/conf.d/<something>.py)
defaults = request.node.get_marker('defined_in_file')
if defaults:
settings.configure(**defaults.kwargs)
for marker in request.node.own_markers:
if marker.name == 'defined_in_file':
settings.configure(**marker.kwargs)
settings._wrapped = SettingsWrapper(settings._wrapped,
cache,
registry)

View File

@@ -41,13 +41,16 @@ def settings(request):
cache = LocMemCache(str(uuid4()), {}) # make a new random cache each time
settings = LazySettings()
registry = SettingsRegistry(settings)
defaults = {}
# @pytest.mark.defined_in_file can be used to mark specific setting values
# as "defined in a settings file". This is analogous to manually
# specifying a setting on the filesystem (e.g., in a local_settings.py in
# development, or in /etc/tower/conf.d/<something>.py)
in_file_marker = request.node.get_marker('defined_in_file')
defaults = in_file_marker.kwargs if in_file_marker else {}
for marker in request.node.own_markers:
if marker.name == 'defined_in_file':
defaults = marker.kwargs
defaults['DEFAULTS_SNAPSHOT'] = {}
settings.configure(**defaults)
settings._wrapped = SettingsWrapper(settings._wrapped,
@@ -63,15 +66,6 @@ def test_unregistered_setting(settings):
assert settings.cache.get('DEBUG') is None
def test_cached_settings_unicode_is_auto_decoded(settings):
# https://github.com/linsomniac/python-memcached/issues/79
# https://github.com/linsomniac/python-memcached/blob/288c159720eebcdf667727a859ef341f1e908308/memcache.py#L961
value = 'Iñtërnâtiônàlizætiøn' # this simulates what python-memcached does on cache.set()
settings.cache.set('DEBUG', value)
assert settings.cache.get('DEBUG') == 'Iñtërnâtiônàlizætiøn'
def test_read_only_setting(settings):
settings.registry.register(
'AWX_READ_ONLY',
@@ -251,31 +245,6 @@ def test_setting_from_db(settings, mocker):
assert settings.cache.get('AWX_SOME_SETTING') == 'FROM_DB'
@pytest.mark.parametrize('encrypted', (True, False))
def test_setting_from_db_with_unicode(settings, mocker, encrypted):
settings.registry.register(
'AWX_SOME_SETTING',
field_class=fields.CharField,
category=_('System'),
category_slug='system',
default='DEFAULT',
encrypted=encrypted
)
# this simulates a bug in python-memcached; see https://github.com/linsomniac/python-memcached/issues/79
value = 'Iñtërnâtiônàlizætiøn'
setting_from_db = mocker.Mock(id=1, key='AWX_SOME_SETTING', value=value)
mocks = mocker.Mock(**{
'order_by.return_value': mocker.Mock(**{
'__iter__': lambda self: iter([setting_from_db]),
'first.return_value': setting_from_db
}),
})
with mocker.patch('awx.conf.models.Setting.objects.filter', return_value=mocks):
assert settings.AWX_SOME_SETTING == 'Iñtërnâtiônàlizætiøn'
assert settings.cache.get('AWX_SOME_SETTING') == 'Iñtërnâtiônàlizætiøn'
@pytest.mark.defined_in_file(AWX_SOME_SETTING='DEFAULT')
def test_read_only_setting_assignment(settings):
"read-only settings cannot be overwritten"

View File

@@ -3,15 +3,20 @@
# Python
import collections
import logging
import subprocess
import sys
import socket
from socket import SHUT_RDWR
# Django
from django.db import connection
from django.conf import settings
from django.http import Http404
from django.utils.translation import ugettext_lazy as _
# Django REST Framework
from rest_framework.exceptions import PermissionDenied, ValidationError
from rest_framework.exceptions import PermissionDenied
from rest_framework.response import Response
from rest_framework import serializers
from rest_framework import status
@@ -26,7 +31,6 @@ from awx.api.generics import (
from awx.api.permissions import IsSuperUser
from awx.api.versioning import reverse
from awx.main.utils import camelcase_to_underscore
from awx.main.utils.handlers import AWXProxyHandler, LoggingConnectivityException
from awx.main.tasks import handle_setting_changes
from awx.conf.models import Setting
from awx.conf.serializers import SettingCategorySerializer, SettingSingletonSerializer
@@ -127,7 +131,8 @@ class SettingSingletonDetail(RetrieveUpdateDestroyAPIView):
setting.save(update_fields=['value'])
settings_change_list.append(key)
if settings_change_list:
handle_setting_changes.delay(settings_change_list)
connection.on_commit(lambda: handle_setting_changes.delay(settings_change_list))
def destroy(self, request, *args, **kwargs):
instance = self.get_object()
@@ -142,7 +147,7 @@ class SettingSingletonDetail(RetrieveUpdateDestroyAPIView):
setting.delete()
settings_change_list.append(setting.key)
if settings_change_list:
handle_setting_changes.delay(settings_change_list)
connection.on_commit(lambda: handle_setting_changes.delay(settings_change_list))
# When TOWER_URL_BASE is deleted from the API, reset it to the hostname
# used to make the request as a default.
@@ -161,40 +166,53 @@ class SettingLoggingTest(GenericAPIView):
filter_backends = []
def post(self, request, *args, **kwargs):
defaults = dict()
for key in settings_registry.get_registered_settings(category_slug='logging'):
try:
defaults[key] = settings_registry.get_setting_field(key).get_default()
except serializers.SkipField:
defaults[key] = None
obj = type('Settings', (object,), defaults)()
serializer = self.get_serializer(obj, data=request.data)
serializer.is_valid(raise_exception=True)
# Special validation specific to logging test.
errors = {}
for key in ['LOG_AGGREGATOR_TYPE', 'LOG_AGGREGATOR_HOST']:
if not request.data.get(key, ''):
errors[key] = 'This field is required.'
if errors:
raise ValidationError(errors)
if request.data.get('LOG_AGGREGATOR_PASSWORD', '').startswith('$encrypted$'):
serializer.validated_data['LOG_AGGREGATOR_PASSWORD'] = getattr(
settings, 'LOG_AGGREGATOR_PASSWORD', ''
)
# Error if logging is not enabled
enabled = getattr(settings, 'LOG_AGGREGATOR_ENABLED', False)
if not enabled:
return Response({'error': 'Logging not enabled'}, status=status.HTTP_409_CONFLICT)
# Send test message to configured logger based on db settings
try:
default_logger = settings.LOG_AGGREGATOR_LOGGERS[0]
if default_logger != 'awx':
default_logger = f'awx.analytics.{default_logger}'
except IndexError:
default_logger = 'awx'
logging.getLogger(default_logger).error('AWX Connection Test Message')
hostname = getattr(settings, 'LOG_AGGREGATOR_HOST', None)
protocol = getattr(settings, 'LOG_AGGREGATOR_PROTOCOL', None)
try:
class MockSettings:
pass
mock_settings = MockSettings()
for k, v in serializer.validated_data.items():
setattr(mock_settings, k, v)
AWXProxyHandler().perform_test(custom_settings=mock_settings)
if mock_settings.LOG_AGGREGATOR_PROTOCOL.upper() == 'UDP':
return Response(status=status.HTTP_201_CREATED)
except LoggingConnectivityException as e:
return Response({'error': str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
return Response(status=status.HTTP_200_OK)
subprocess.check_output(
['rsyslogd', '-N1', '-f', '/var/lib/awx/rsyslog/rsyslog.conf'],
stderr=subprocess.STDOUT
)
except subprocess.CalledProcessError as exc:
return Response({'error': exc.output}, status=status.HTTP_400_BAD_REQUEST)
# Check to ensure port is open at host
if protocol in ['udp', 'tcp']:
port = getattr(settings, 'LOG_AGGREGATOR_PORT', None)
# Error if port is not set when using UDP/TCP
if not port:
return Response({'error': 'Port required for ' + protocol}, status=status.HTTP_400_BAD_REQUEST)
else:
# if http/https by this point, domain is reacheable
return Response(status=status.HTTP_202_ACCEPTED)
if protocol == 'udp':
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
else:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.settimeout(.5)
s.connect((hostname, int(port)))
s.shutdown(SHUT_RDWR)
s.close()
return Response(status=status.HTTP_202_ACCEPTED)
except Exception as e:
return Response({'error': str(e)}, status=status.HTTP_400_BAD_REQUEST)
# Create view functions for all of the class-based views to simplify inclusion

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -11,7 +11,6 @@ from functools import reduce
from django.conf import settings
from django.db.models import Q, Prefetch
from django.contrib.auth.models import User
from django.contrib.contenttypes.models import ContentType
from django.utils.translation import ugettext_lazy as _
from django.core.exceptions import ObjectDoesNotExist
@@ -307,7 +306,7 @@ class BaseAccess(object):
return True # User has access to both, permission check passed
def check_license(self, add_host_name=None, feature=None, check_expiration=True):
def check_license(self, add_host_name=None, feature=None, check_expiration=True, quiet=False):
validation_info = get_licenser().validate()
if validation_info.get('license_type', 'UNLICENSED') == 'open':
return
@@ -317,10 +316,21 @@ class BaseAccess(object):
validation_info['time_remaining'] = 99999999
validation_info['grace_period_remaining'] = 99999999
if quiet:
report_violation = lambda message: None
else:
report_violation = lambda message: logger.warning(message)
if (
validation_info.get('trial', False) is True or
validation_info['instance_count'] == 10 # basic 10 license
):
def report_violation(message):
raise PermissionDenied(message)
if check_expiration and validation_info.get('time_remaining', None) is None:
raise PermissionDenied(_("License is missing."))
if check_expiration and validation_info.get("grace_period_remaining") <= 0:
raise PermissionDenied(_("License has expired."))
elif check_expiration and validation_info.get("grace_period_remaining") <= 0:
report_violation(_("License has expired."))
free_instances = validation_info.get('free_instances', 0)
available_instances = validation_info.get('available_instances', 0)
@@ -328,11 +338,11 @@ class BaseAccess(object):
if add_host_name:
host_exists = Host.objects.filter(name=add_host_name).exists()
if not host_exists and free_instances == 0:
raise PermissionDenied(_("License count of %s instances has been reached.") % available_instances)
report_violation(_("License count of %s instances has been reached.") % available_instances)
elif not host_exists and free_instances < 0:
raise PermissionDenied(_("License count of %s instances has been exceeded.") % available_instances)
report_violation(_("License count of %s instances has been exceeded.") % available_instances)
elif not add_host_name and free_instances < 0:
raise PermissionDenied(_("Host count exceeds available instances."))
report_violation(_("Host count exceeds available instances."))
def check_org_host_limit(self, data, add_host_name=None):
validation_info = get_licenser().validate()
@@ -394,14 +404,6 @@ class BaseAccess(object):
# Cannot copy manual project without errors
user_capabilities[display_method] = False
continue
elif display_method in ['start', 'schedule'] and isinstance(obj, Group): # TODO: remove in 3.3
try:
if obj.deprecated_inventory_source and not obj.deprecated_inventory_source._can_update():
user_capabilities[display_method] = False
continue
except Group.deprecated_inventory_source.RelatedObjectDoesNotExist:
user_capabilities[display_method] = False
continue
elif display_method in ['start', 'schedule'] and isinstance(obj, (Project)):
if obj.scm_type == '':
user_capabilities[display_method] = False
@@ -456,7 +458,7 @@ class BaseAccess(object):
else:
relationship = 'members'
return access_method(obj, parent_obj, relationship, skip_sub_obj_read_check=True, data={})
except (ParseError, ObjectDoesNotExist):
except (ParseError, ObjectDoesNotExist, PermissionDenied):
return False
return False
@@ -493,7 +495,7 @@ class NotificationAttachMixin(BaseAccess):
# due to this special case, we use symmetrical logic with attach permission
return self._can_attach(notification_template=sub_obj, resource_obj=obj)
return super(NotificationAttachMixin, self).can_unattach(
obj, sub_obj, relationship, relationship, data=data
obj, sub_obj, relationship, data=data
)
@@ -639,8 +641,8 @@ class UserAccess(BaseAccess):
# in these cases only superusers can modify orphan users
return False
return not obj.roles.all().exclude(
content_type=ContentType.objects.get_for_model(User)
).filter(ancestors__in=self.user.roles.all()).exists()
ancestors__in=self.user.roles.all()
).exists()
else:
return self.is_all_org_admin(obj)
@@ -652,7 +654,7 @@ class UserAccess(BaseAccess):
if obj.is_superuser and super_users.count() == 1:
# cannot delete the last active superuser
return False
if self.user.is_superuser:
if self.can_admin(obj, None, allow_orphans=True):
return True
return False
@@ -778,7 +780,6 @@ class OrganizationAccess(NotificationAttachMixin, BaseAccess):
return self.user in obj.admin_role
def can_delete(self, obj):
self.check_license(check_expiration=False)
is_change_possible = self.can_change(obj, None)
if not is_change_possible:
return False
@@ -898,7 +899,7 @@ class HostAccess(BaseAccess):
model = Host
select_related = ('created_by', 'modified_by', 'inventory',
'last_job__job_template', 'last_job_host_summary__job',)
prefetch_related = ('groups',)
prefetch_related = ('groups', 'inventory_sources')
def filtered_queryset(self):
return self.model.objects.filter(inventory__in=Inventory.accessible_pk_qs(self.user, 'read_role'))
@@ -1400,7 +1401,7 @@ class JobTemplateAccess(NotificationAttachMixin, BaseAccess):
'''
model = JobTemplate
select_related = ('created_by', 'modified_by', 'inventory', 'project',
select_related = ('created_by', 'modified_by', 'inventory', 'project', 'organization',
'next_schedule',)
prefetch_related = (
'instance_groups',
@@ -1424,16 +1425,11 @@ class JobTemplateAccess(NotificationAttachMixin, BaseAccess):
Users who are able to create deploy jobs can also run normal and check (dry run) jobs.
'''
if not data: # So the browseable API will work
return (
Project.accessible_objects(self.user, 'use_role').exists() or
Inventory.accessible_objects(self.user, 'use_role').exists())
return Project.accessible_objects(self.user, 'use_role').exists()
# if reference_obj is provided, determine if it can be copied
reference_obj = data.get('reference_obj', None)
if 'survey_enabled' in data and data['survey_enabled']:
self.check_license(feature='surveys')
if self.user.is_superuser:
return True
@@ -1493,22 +1489,23 @@ class JobTemplateAccess(NotificationAttachMixin, BaseAccess):
return self.user in obj.execute_role
def can_change(self, obj, data):
data_for_change = data
if self.user not in obj.admin_role and not self.user.is_superuser:
return False
if data is not None:
data = dict(data)
if data is None:
return True
if self.changes_are_non_sensitive(obj, data):
if 'survey_enabled' in data and obj.survey_enabled != data['survey_enabled'] and data['survey_enabled']:
self.check_license(feature='surveys')
return True
data = dict(data)
for required_field in ('inventory', 'project'):
required_obj = getattr(obj, required_field, None)
if required_field not in data_for_change and required_obj is not None:
data_for_change[required_field] = required_obj.pk
return self.can_read(obj) and (self.can_add(data_for_change) if data is not None else True)
if self.changes_are_non_sensitive(obj, data):
return True
for required_field, cls in (('inventory', Inventory), ('project', Project)):
is_mandatory = True
if not getattr(obj, '{}_id'.format(required_field)):
is_mandatory = False
if not self.check_related(required_field, cls, data, obj=obj, role_field='use_role', mandatory=is_mandatory):
return False
return True
def changes_are_non_sensitive(self, obj, data):
'''
@@ -1516,8 +1513,7 @@ class JobTemplateAccess(NotificationAttachMixin, BaseAccess):
thus can be made by a job template administrator which may not have access
to the any inventory, project, or credentials associated with the template.
'''
# We are white listing fields that can
field_whitelist = [
allowed_fields = [
'name', 'description', 'forks', 'limit', 'verbosity', 'extra_vars',
'job_tags', 'force_handlers', 'skip_tags', 'ask_variables_on_launch',
'ask_tags_on_launch', 'ask_job_type_on_launch', 'ask_skip_tags_on_launch',
@@ -1532,7 +1528,7 @@ class JobTemplateAccess(NotificationAttachMixin, BaseAccess):
if k not in [x.name for x in obj._meta.concrete_fields]:
continue
if hasattr(obj, k) and getattr(obj, k) != v:
if k not in field_whitelist and v != getattr(obj, '%s_id' % k, None) \
if k not in allowed_fields and v != getattr(obj, '%s_id' % k, None) \
and not (hasattr(obj, '%s_id' % k) and getattr(obj, '%s_id' % k) is None and v == ''): # Equate '' to None in the case of foreign keys
return False
return True
@@ -1543,9 +1539,9 @@ class JobTemplateAccess(NotificationAttachMixin, BaseAccess):
@check_superuser
def can_attach(self, obj, sub_obj, relationship, data, skip_sub_obj_read_check=False):
if relationship == "instance_groups":
if not obj.project.organization:
if not obj.organization:
return False
return self.user.can_access(type(sub_obj), "read", sub_obj) and self.user in obj.project.organization.admin_role
return self.user.can_access(type(sub_obj), "read", sub_obj) and self.user in obj.organization.admin_role
if relationship == 'credentials' and isinstance(sub_obj, Credential):
return self.user in obj.admin_role and self.user in sub_obj.use_role
return super(JobTemplateAccess, self).can_attach(
@@ -1576,6 +1572,7 @@ class JobAccess(BaseAccess):
select_related = ('created_by', 'modified_by', 'job_template', 'inventory',
'project', 'project_update',)
prefetch_related = (
'organization',
'unified_job_template',
'instance_group',
'credentials__credential_type',
@@ -1596,42 +1593,19 @@ class JobAccess(BaseAccess):
return qs.filter(
Q(job_template__in=JobTemplate.accessible_objects(self.user, 'read_role')) |
Q(inventory__organization__in=org_access_qs) |
Q(project__organization__in=org_access_qs)).distinct()
def related_orgs(self, obj):
orgs = []
if obj.inventory and obj.inventory.organization:
orgs.append(obj.inventory.organization)
if obj.project and obj.project.organization and obj.project.organization not in orgs:
orgs.append(obj.project.organization)
return orgs
def org_access(self, obj, role_types=['admin_role']):
orgs = self.related_orgs(obj)
for org in orgs:
for role_type in role_types:
role = getattr(org, role_type)
if self.user in role:
return True
return False
Q(organization__in=org_access_qs)).distinct()
def can_add(self, data, validate_license=True):
if validate_license:
self.check_license()
if not data: # So the browseable API will work
return True
return self.user.is_superuser
raise NotImplementedError('Direct job creation not possible in v2 API')
def can_change(self, obj, data):
return (obj.status == 'new' and
self.can_read(obj) and
self.can_add(data, validate_license=False))
raise NotImplementedError('Direct job editing not supported in v2 API')
@check_superuser
def can_delete(self, obj):
return self.org_access(obj)
if not obj.organization:
return False
return self.user in obj.organization.admin_role
def can_start(self, obj, validate_license=True):
if validate_license:
@@ -1651,45 +1625,32 @@ class JobAccess(BaseAccess):
except JobLaunchConfig.DoesNotExist:
config = None
# Standard permissions model
if obj.job_template and (self.user not in obj.job_template.execute_role):
return False
# Check if JT execute access (and related prompts) is sufficient
if obj.job_template is not None:
if config is None:
prompts_access = False
elif not config.has_user_prompts(obj.job_template):
prompts_access = True
elif obj.created_by_id != self.user.pk and vars_are_encrypted(config.extra_data):
prompts_access = False
if self.save_messages:
self.messages['detail'] = _('Job was launched with secret prompts provided by another user.')
else:
prompts_access = (
JobLaunchConfigAccess(self.user).can_add({'reference_obj': config}) and
not config.has_unprompted(obj.job_template)
)
jt_access = self.user in obj.job_template.execute_role
if prompts_access and jt_access:
if config and obj.job_template:
if not config.has_user_prompts(obj.job_template):
return True
elif not jt_access:
return False
elif obj.created_by_id != self.user.pk and vars_are_encrypted(config.extra_data):
# never allowed, not even for org admins
raise PermissionDenied(_('Job was launched with secret prompts provided by another user.'))
elif not config.has_unprompted(obj.job_template):
if JobLaunchConfigAccess(self.user).can_add({'reference_obj': config}):
return True
org_access = bool(obj.inventory) and self.user in obj.inventory.organization.inventory_admin_role
project_access = obj.project is None or self.user in obj.project.admin_role
credential_access = all([self.user in cred.use_role for cred in obj.credentials.all()])
# Standard permissions model without job template involved
if obj.organization and self.user in obj.organization.execute_role:
return True
elif not (obj.job_template or obj.organization):
raise PermissionDenied(_('Job has been orphaned from its job template and organization.'))
elif obj.job_template and config is not None:
raise PermissionDenied(_('Job was launched with prompted fields you do not have access to.'))
elif obj.job_template and config is None:
raise PermissionDenied(_('Job was launched with unknown prompted fields. Organization admin permissions required.'))
# job can be relaunched if user could make an equivalent JT
ret = org_access and credential_access and project_access
if not ret and self.save_messages and not self.messages:
if not obj.job_template:
pretext = _('Job has been orphaned from its job template.')
elif config is None:
pretext = _('Job was launched with unknown prompted fields.')
else:
pretext = _('Job was launched with prompted fields.')
if credential_access:
self.messages['detail'] = '{} {}'.format(pretext, _(' Organization level permissions required.'))
else:
self.messages['detail'] = '{} {}'.format(pretext, _(' You do not have permission to related resources.'))
return ret
return False
def get_method_capability(self, method, obj, parent_obj):
if method == 'start':
@@ -1702,10 +1663,16 @@ class JobAccess(BaseAccess):
def can_cancel(self, obj):
if not obj.can_cancel:
return False
# Delete access allows org admins to stop running jobs
if self.user == obj.created_by or self.can_delete(obj):
# Users may always cancel their own jobs
if self.user == obj.created_by:
return True
return obj.job_template is not None and self.user in obj.job_template.admin_role
# Users with direct admin to JT may cancel jobs started by anyone
if obj.job_template and self.user in obj.job_template.admin_role:
return True
# If orphaned, allow org JT admins to stop running jobs
if not obj.job_template and obj.organization and self.user in obj.organization.job_template_admin_role:
return True
return False
class SystemJobTemplateAccess(BaseAccess):
@@ -1940,11 +1907,11 @@ class WorkflowJobNodeAccess(BaseAccess):
# TODO: notification attachments?
class WorkflowJobTemplateAccess(NotificationAttachMixin, BaseAccess):
'''
I can only see/manage Workflow Job Templates if I'm a super user
I can see/manage Workflow Job Templates based on object roles
'''
model = WorkflowJobTemplate
select_related = ('created_by', 'modified_by', 'next_schedule',
select_related = ('created_by', 'modified_by', 'organization', 'next_schedule',
'admin_role', 'execute_role', 'read_role',)
def filtered_queryset(self):
@@ -1962,10 +1929,6 @@ class WorkflowJobTemplateAccess(NotificationAttachMixin, BaseAccess):
if not data: # So the browseable API will work
return Organization.accessible_objects(self.user, 'workflow_admin_role').exists()
# will check this if surveys are added to WFJT
if 'survey_enabled' in data and data['survey_enabled']:
self.check_license(feature='surveys')
return (
self.check_related('organization', Organization, data, role_field='workflow_admin_role', mandatory=True) and
self.check_related('inventory', Inventory, data, role_field='use_role')
@@ -2034,7 +1997,7 @@ class WorkflowJobAccess(BaseAccess):
I can also cancel it if I started it
'''
model = WorkflowJob
select_related = ('created_by', 'modified_by',)
select_related = ('created_by', 'modified_by', 'organization',)
def filtered_queryset(self):
return WorkflowJob.objects.filter(
@@ -2089,23 +2052,20 @@ class WorkflowJobAccess(BaseAccess):
self.messages['detail'] = _('Workflow Job was launched with unknown prompts.')
return False
# execute permission to WFJT is mandatory for any relaunch
if self.user not in template.execute_role:
return False
# Check if access to prompts to prevent relaunch
if config.prompts_dict():
if obj.created_by_id != self.user.pk and vars_are_encrypted(config.extra_data):
if self.save_messages:
self.messages['detail'] = _('Job was launched with secret prompts provided by another user.')
return False
raise PermissionDenied(_("Job was launched with secret prompts provided by another user."))
if not JobLaunchConfigAccess(self.user).can_add({'reference_obj': config}):
if self.save_messages:
self.messages['detail'] = _('Job was launched with prompts you lack access to.')
return False
raise PermissionDenied(_('Job was launched with prompts you lack access to.'))
if config.has_unprompted(template):
if self.save_messages:
self.messages['detail'] = _('Job was launched with prompts no longer accepted.')
return False
raise PermissionDenied(_('Job was launched with prompts no longer accepted.'))
# execute permission to WFJT is mandatory for any relaunch
return (self.user in template.execute_role)
return True # passed config checks
def can_recreate(self, obj):
node_qs = obj.workflow_job_nodes.all().prefetch_related('inventory', 'credentials', 'unified_job_template')
@@ -2239,7 +2199,7 @@ class JobEventAccess(BaseAccess):
'''
model = JobEvent
prefetch_related = ('hosts', 'job__job_template', 'host',)
prefetch_related = ('job__job_template', 'host',)
def filtered_queryset(self):
return self.model.objects.filter(
@@ -2331,6 +2291,7 @@ class UnifiedJobTemplateAccess(BaseAccess):
prefetch_related = (
'last_job',
'current_job',
'organization',
'credentials__credential_type',
Prefetch('labels', queryset=Label.objects.all().order_by('name')),
)
@@ -2370,6 +2331,7 @@ class UnifiedJobAccess(BaseAccess):
prefetch_related = (
'created_by',
'modified_by',
'organization',
'unified_job_node__workflow_job',
'unified_job_template',
'instance_group',
@@ -2400,8 +2362,7 @@ class UnifiedJobAccess(BaseAccess):
Q(unified_job_template_id__in=UnifiedJobTemplate.accessible_pk_qs(self.user, 'read_role')) |
Q(inventoryupdate__inventory_source__inventory__id__in=inv_pk_qs) |
Q(adhoccommand__inventory__id__in=inv_pk_qs) |
Q(job__inventory__organization__in=org_auditor_qs) |
Q(job__project__organization__in=org_auditor_qs)
Q(organization__in=org_auditor_qs)
)
return qs
@@ -2428,6 +2389,9 @@ class ScheduleAccess(BaseAccess):
def can_add(self, data):
if not JobLaunchConfigAccess(self.user).can_add(data):
return False
if not data:
return Role.objects.filter(role_field__in=['update_role', 'execute_role'], ancestors__in=self.user.roles.all()).exists()
return self.check_related('unified_job_template', UnifiedJobTemplate, data, role_field='execute_role', mandatory=True)
@check_superuser
@@ -2515,13 +2479,16 @@ class NotificationAccess(BaseAccess):
class LabelAccess(BaseAccess):
'''
I can see/use a Label if I have permission to associated organization
I can see/use a Label if I have permission to associated organization, or to a JT that the label is on
'''
model = Label
prefetch_related = ('modified_by', 'created_by', 'organization',)
def filtered_queryset(self):
return self.model.objects.all()
return self.model.objects.filter(
Q(organization__in=Organization.accessible_pk_qs(self.user, 'read_role')) |
Q(unifiedjobtemplate_labels__in=UnifiedJobTemplate.accessible_pk_qs(self.user, 'read_role'))
)
@check_superuser
def can_add(self, data):

View File

@@ -0,0 +1,169 @@
import datetime
import asyncio
import logging
import aioredis
import redis
import re
from prometheus_client import (
generate_latest,
Gauge,
Counter,
Enum,
CollectorRegistry,
parser,
)
from django.conf import settings
BROADCAST_WEBSOCKET_REDIS_KEY_NAME = 'broadcast_websocket_stats'
logger = logging.getLogger('awx.main.analytics.broadcast_websocket')
def dt_to_seconds(dt):
return int((dt - datetime.datetime(1970,1,1)).total_seconds())
def now_seconds():
return dt_to_seconds(datetime.datetime.now())
def safe_name(s):
# Replace all non alpha-numeric characters with _
return re.sub('[^0-9a-zA-Z]+', '_', s)
# Second granularity; Per-minute
class FixedSlidingWindow():
def __init__(self, start_time=None):
self.buckets = dict()
self.start_time = start_time or now_seconds()
def cleanup(self, now_bucket=None):
now_bucket = now_bucket or now_seconds()
if self.start_time + 60 < now_bucket:
self.start_time = now_bucket - 60
# Delete old entries
for k in list(self.buckets.keys()):
if k < self.start_time:
del self.buckets[k]
def record(self, ts=None):
now_bucket = ts or dt_to_seconds(datetime.datetime.now())
val = self.buckets.get(now_bucket, 0)
self.buckets[now_bucket] = val + 1
self.cleanup(now_bucket)
def render(self, ts=None):
self.cleanup(now_bucket=ts)
return sum(self.buckets.values()) or 0
class BroadcastWebsocketStatsManager():
def __init__(self, event_loop, local_hostname):
self._local_hostname = local_hostname
self._event_loop = event_loop
self._stats = dict()
self._redis_key = BROADCAST_WEBSOCKET_REDIS_KEY_NAME
def new_remote_host_stats(self, remote_hostname):
self._stats[remote_hostname] = BroadcastWebsocketStats(self._local_hostname,
remote_hostname)
return self._stats[remote_hostname]
def delete_remote_host_stats(self, remote_hostname):
del self._stats[remote_hostname]
async def run_loop(self):
try:
redis_conn = await aioredis.create_redis_pool(settings.BROKER_URL)
while True:
stats_data_str = ''.join(stat.serialize() for stat in self._stats.values())
await redis_conn.set(self._redis_key, stats_data_str)
await asyncio.sleep(settings.BROADCAST_WEBSOCKET_STATS_POLL_RATE_SECONDS)
except Exception as e:
logger.warn(e)
await asyncio.sleep(settings.BROADCAST_WEBSOCKET_STATS_POLL_RATE_SECONDS)
self.start()
def start(self):
self.async_task = self._event_loop.create_task(self.run_loop())
return self.async_task
@classmethod
def get_stats_sync(cls):
'''
Stringified verion of all the stats
'''
redis_conn = redis.Redis.from_url(settings.BROKER_URL)
stats_str = redis_conn.get(BROADCAST_WEBSOCKET_REDIS_KEY_NAME) or b''
return parser.text_string_to_metric_families(stats_str.decode('UTF-8'))
class BroadcastWebsocketStats():
def __init__(self, local_hostname, remote_hostname):
self._local_hostname = local_hostname
self._remote_hostname = remote_hostname
self._registry = CollectorRegistry()
# TODO: More robust replacement
self.name = safe_name(self._local_hostname)
self.remote_name = safe_name(self._remote_hostname)
self._messages_received_total = Counter(f'awx_{self.remote_name}_messages_received_total',
'Number of messages received, to be forwarded, by the broadcast websocket system',
registry=self._registry)
self._messages_received = Gauge(f'awx_{self.remote_name}_messages_received',
'Number forwarded messages received by the broadcast websocket system, for the duration of the current connection',
registry=self._registry)
self._connection = Enum(f'awx_{self.remote_name}_connection',
'Websocket broadcast connection',
states=['disconnected', 'connected'],
registry=self._registry)
self._connection.state('disconnected')
self._connection_start = Gauge(f'awx_{self.remote_name}_connection_start',
'Time the connection was established',
registry=self._registry)
self._messages_received_per_minute = Gauge(f'awx_{self.remote_name}_messages_received_per_minute',
'Messages received per minute',
registry=self._registry)
self._internal_messages_received_per_minute = FixedSlidingWindow()
def unregister(self):
self._registry.unregister(f'awx_{self.remote_name}_messages_received')
self._registry.unregister(f'awx_{self.remote_name}_connection')
def record_message_received(self):
self._internal_messages_received_per_minute.record()
self._messages_received.inc()
self._messages_received_total.inc()
def record_connection_established(self):
self._connection.state('connected')
self._connection_start.set_to_current_time()
self._messages_received.set(0)
def record_connection_lost(self):
self._connection.state('disconnected')
def get_connection_duration(self):
return (datetime.datetime.now() - self._connection_established_ts).total_seconds()
def render(self):
msgs_per_min = self._internal_messages_received_per_minute.render()
self._messages_received_per_minute.set(msgs_per_min)
def serialize(self):
self.render()
registry_data = generate_latest(self._registry).decode('UTF-8')
return registry_data

View File

@@ -31,7 +31,7 @@ data _since_ the last report date - i.e., new data in the last 24 hours)
'''
@register('config', '1.0')
@register('config', '1.1')
def config(since):
license_info = get_license(show_key=False)
install_type = 'traditional'
@@ -52,7 +52,8 @@ def config(since):
'tower_version': get_awx_version(),
'ansible_version': get_ansible_version(),
'license_type': license_info.get('license_type', 'UNLICENSED'),
'free_instances': license_info.get('free instances', 0),
'free_instances': license_info.get('free_instances', 0),
'total_licensed_instances': license_info.get('instance_count', 0),
'license_expiry': license_info.get('time_remaining', 0),
'pendo_tracking': settings.PENDO_TRACKING_STATE,
'authentication_backends': settings.AUTHENTICATION_BACKENDS,
@@ -121,22 +122,27 @@ def cred_type_counts(since):
return counts
@register('inventory_counts', '1.0')
@register('inventory_counts', '1.2')
def inventory_counts(since):
counts = {}
for inv in models.Inventory.objects.filter(kind='').annotate(num_sources=Count('inventory_sources', distinct=True),
num_hosts=Count('hosts', distinct=True)).only('id', 'name', 'kind'):
source_list = []
for source in inv.inventory_sources.filter().annotate(num_hosts=Count('hosts', distinct=True)).values('name','source', 'num_hosts'):
source_list.append(source)
counts[inv.id] = {'name': inv.name,
'kind': inv.kind,
'hosts': inv.num_hosts,
'sources': inv.num_sources
'sources': inv.num_sources,
'source_list': source_list
}
for smart_inv in models.Inventory.objects.filter(kind='smart'):
counts[smart_inv.id] = {'name': smart_inv.name,
'kind': smart_inv.kind,
'num_hosts': smart_inv.hosts.count(),
'num_sources': smart_inv.inventory_sources.count()
'hosts': smart_inv.hosts.count(),
'sources': 0,
'source_list': []
}
return counts
@@ -166,6 +172,8 @@ def instance_info(since, include_hostnames=False):
instances = models.Instance.objects.values_list('hostname').values(
'uuid', 'version', 'capacity', 'cpu', 'memory', 'managed_by_policy', 'hostname', 'last_isolated_check', 'enabled')
for instance in instances:
consumed_capacity = sum(x.task_impact for x in models.UnifiedJob.objects.filter(execution_node=instance['hostname'],
status__in=('running', 'waiting')))
instance_info = {
'uuid': instance['uuid'],
'version': instance['version'],
@@ -174,7 +182,9 @@ def instance_info(since, include_hostnames=False):
'memory': instance['memory'],
'managed_by_policy': instance['managed_by_policy'],
'last_isolated_check': _get_isolated_datetime(instance['last_isolated_check']),
'enabled': instance['enabled']
'enabled': instance['enabled'],
'consumed_capacity': consumed_capacity,
'remaining_capacity': instance['capacity'] - consumed_capacity
}
if include_hostnames is True:
instance_info['hostname'] = instance['hostname']
@@ -217,10 +227,12 @@ def query_info(since, collection_type):
# Copies Job Events from db to a .csv to be shipped
@table_version('events_table.csv', '1.0')
@table_version('events_table.csv', '1.1')
@table_version('unified_jobs_table.csv', '1.0')
@table_version('unified_job_template_table.csv', '1.0')
def copy_tables(since, full_path):
@table_version('workflow_job_node_table.csv', '1.0')
@table_version('workflow_job_template_node_table.csv', '1.0')
def copy_tables(since, full_path, subset=None):
def _copy_table(table, query, path):
file_path = os.path.join(path, table + '_table.csv')
file = open(file_path, 'w', encoding='utf-8')
@@ -244,15 +256,21 @@ def copy_tables(since, full_path):
main_jobevent.job_id,
main_jobevent.host_id,
main_jobevent.host_name
, CAST(main_jobevent.event_data::json->>'start' AS TIMESTAMP WITH TIME ZONE) AS start,
CAST(main_jobevent.event_data::json->>'end' AS TIMESTAMP WITH TIME ZONE) AS end,
main_jobevent.event_data::json->'duration' AS duration,
main_jobevent.event_data::json->'res'->'warnings' AS warnings,
main_jobevent.event_data::json->'res'->'deprecations' AS deprecations
FROM main_jobevent
WHERE main_jobevent.created > {}
ORDER BY main_jobevent.id ASC) TO STDOUT WITH CSV HEADER'''.format(since.strftime("'%Y-%m-%d %H:%M:%S'"))
_copy_table(table='events', query=events_query, path=full_path)
if not subset or 'events' in subset:
_copy_table(table='events', query=events_query, path=full_path)
unified_job_query = '''COPY (SELECT main_unifiedjob.id,
main_unifiedjob.polymorphic_ctype_id,
django_content_type.model,
main_project.organization_id,
main_unifiedjob.organization_id,
main_organization.name as organization_name,
main_unifiedjob.created,
main_unifiedjob.name,
@@ -270,14 +288,13 @@ def copy_tables(since, full_path):
main_unifiedjob.job_explanation,
main_unifiedjob.instance_group_id
FROM main_unifiedjob
JOIN main_job ON main_unifiedjob.id = main_job.unifiedjob_ptr_id
JOIN django_content_type ON main_unifiedjob.polymorphic_ctype_id = django_content_type.id
JOIN main_project ON main_project.unifiedjobtemplate_ptr_id = main_job.project_id
JOIN main_organization ON main_organization.id = main_project.organization_id
WHERE main_unifiedjob.created > {}
AND main_unifiedjob.launch_type != 'sync'
LEFT JOIN main_organization ON main_organization.id = main_unifiedjob.organization_id
WHERE (main_unifiedjob.created > {0} OR main_unifiedjob.finished > {0})
AND main_unifiedjob.launch_type != 'sync'
ORDER BY main_unifiedjob.id ASC) TO STDOUT WITH CSV HEADER'''.format(since.strftime("'%Y-%m-%d %H:%M:%S'"))
_copy_table(table='unified_jobs', query=unified_job_query, path=full_path)
if not subset or 'unified_jobs' in subset:
_copy_table(table='unified_jobs', query=unified_job_query, path=full_path)
unified_job_template_query = '''COPY (SELECT main_unifiedjobtemplate.id,
main_unifiedjobtemplate.polymorphic_ctype_id,
@@ -296,6 +313,71 @@ def copy_tables(since, full_path):
main_unifiedjobtemplate.status
FROM main_unifiedjobtemplate, django_content_type
WHERE main_unifiedjobtemplate.polymorphic_ctype_id = django_content_type.id
ORDER BY main_unifiedjobtemplate.id ASC) TO STDOUT WITH CSV HEADER'''.format(since.strftime("'%Y-%m-%d %H:%M:%S'"))
_copy_table(table='unified_job_template', query=unified_job_template_query, path=full_path)
ORDER BY main_unifiedjobtemplate.id ASC) TO STDOUT WITH CSV HEADER'''
if not subset or 'unified_job_template' in subset:
_copy_table(table='unified_job_template', query=unified_job_template_query, path=full_path)
workflow_job_node_query = '''COPY (SELECT main_workflowjobnode.id,
main_workflowjobnode.created,
main_workflowjobnode.modified,
main_workflowjobnode.job_id,
main_workflowjobnode.unified_job_template_id,
main_workflowjobnode.workflow_job_id,
main_workflowjobnode.inventory_id,
success_nodes.nodes AS success_nodes,
failure_nodes.nodes AS failure_nodes,
always_nodes.nodes AS always_nodes,
main_workflowjobnode.do_not_run,
main_workflowjobnode.all_parents_must_converge
FROM main_workflowjobnode
LEFT JOIN (
SELECT from_workflowjobnode_id, ARRAY_AGG(to_workflowjobnode_id) AS nodes
FROM main_workflowjobnode_success_nodes
GROUP BY from_workflowjobnode_id
) success_nodes ON main_workflowjobnode.id = success_nodes.from_workflowjobnode_id
LEFT JOIN (
SELECT from_workflowjobnode_id, ARRAY_AGG(to_workflowjobnode_id) AS nodes
FROM main_workflowjobnode_failure_nodes
GROUP BY from_workflowjobnode_id
) failure_nodes ON main_workflowjobnode.id = failure_nodes.from_workflowjobnode_id
LEFT JOIN (
SELECT from_workflowjobnode_id, ARRAY_AGG(to_workflowjobnode_id) AS nodes
FROM main_workflowjobnode_always_nodes
GROUP BY from_workflowjobnode_id
) always_nodes ON main_workflowjobnode.id = always_nodes.from_workflowjobnode_id
WHERE main_workflowjobnode.modified > {}
ORDER BY main_workflowjobnode.id ASC) TO STDOUT WITH CSV HEADER'''.format(since.strftime("'%Y-%m-%d %H:%M:%S'"))
if not subset or 'workflow_job_node' in subset:
_copy_table(table='workflow_job_node', query=workflow_job_node_query, path=full_path)
workflow_job_template_node_query = '''COPY (SELECT main_workflowjobtemplatenode.id,
main_workflowjobtemplatenode.created,
main_workflowjobtemplatenode.modified,
main_workflowjobtemplatenode.unified_job_template_id,
main_workflowjobtemplatenode.workflow_job_template_id,
main_workflowjobtemplatenode.inventory_id,
success_nodes.nodes AS success_nodes,
failure_nodes.nodes AS failure_nodes,
always_nodes.nodes AS always_nodes,
main_workflowjobtemplatenode.all_parents_must_converge
FROM main_workflowjobtemplatenode
LEFT JOIN (
SELECT from_workflowjobtemplatenode_id, ARRAY_AGG(to_workflowjobtemplatenode_id) AS nodes
FROM main_workflowjobtemplatenode_success_nodes
GROUP BY from_workflowjobtemplatenode_id
) success_nodes ON main_workflowjobtemplatenode.id = success_nodes.from_workflowjobtemplatenode_id
LEFT JOIN (
SELECT from_workflowjobtemplatenode_id, ARRAY_AGG(to_workflowjobtemplatenode_id) AS nodes
FROM main_workflowjobtemplatenode_failure_nodes
GROUP BY from_workflowjobtemplatenode_id
) failure_nodes ON main_workflowjobtemplatenode.id = failure_nodes.from_workflowjobtemplatenode_id
LEFT JOIN (
SELECT from_workflowjobtemplatenode_id, ARRAY_AGG(to_workflowjobtemplatenode_id) AS nodes
FROM main_workflowjobtemplatenode_always_nodes
GROUP BY from_workflowjobtemplatenode_id
) always_nodes ON main_workflowjobtemplatenode.id = always_nodes.from_workflowjobtemplatenode_id
ORDER BY main_workflowjobtemplatenode.id ASC) TO STDOUT WITH CSV HEADER'''
if not subset or 'workflow_job_template_node' in subset:
_copy_table(table='workflow_job_template_node', query=workflow_job_template_node_query, path=full_path)
return

View File

@@ -5,10 +5,9 @@ import os
import os.path
import tempfile
import shutil
import subprocess
import requests
from django.conf import settings
from django.utils.encoding import smart_str
from django.utils.timezone import now, timedelta
from rest_framework.exceptions import PermissionDenied
@@ -16,6 +15,7 @@ from awx.conf.license import get_license
from awx.main.models import Job
from awx.main.access import access_registry
from awx.main.models.ha import TowerAnalyticsState
from awx.main.utils import get_awx_http_client_headers, set_environ
__all__ = ['register', 'gather', 'ship', 'table_version']
@@ -81,17 +81,16 @@ def gather(dest=None, module=None, collection_type='scheduled'):
last_run = state.last_run
logger.debug("Last analytics run was: {}".format(last_run))
max_interval = now() - timedelta(days=7)
max_interval = now() - timedelta(weeks=4)
if last_run < max_interval or not last_run:
last_run = max_interval
if _valid_license() is False:
logger.exception("Invalid License provided, or No License Provided")
return "Error: Invalid License provided, or No License Provided"
if not settings.INSIGHTS_TRACKING_STATE:
logger.error("Insights analytics not enabled")
if collection_type != 'dry-run' and not settings.INSIGHTS_TRACKING_STATE:
logger.error("Automation Analytics not enabled. Use --dry-run to gather locally without sending.")
return
if module is None:
@@ -135,41 +134,59 @@ def gather(dest=None, module=None, collection_type='scheduled'):
settings.SYSTEM_UUID,
run_now.strftime('%Y-%m-%d-%H%M%S%z')
])
tgz = shutil.make_archive(
os.path.join(os.path.dirname(dest), tarname),
'gztar',
dest
)
shutil.rmtree(dest)
return tgz
try:
tgz = shutil.make_archive(
os.path.join(os.path.dirname(dest), tarname),
'gztar',
dest
)
return tgz
except Exception:
logger.exception("Failed to write analytics archive file")
finally:
shutil.rmtree(dest)
def ship(path):
"""
Ship gathered metrics via the Insights agent
Ship gathered metrics to the Insights API
"""
if not path:
logger.error('Automation Analytics TAR not found')
return
if "Error:" in str(path):
return
try:
agent = 'insights-client'
if shutil.which(agent) is None:
logger.error('could not find {} on PATH'.format(agent))
return
logger.debug('shipping analytics file: {}'.format(path))
try:
cmd = [
agent, '--payload', path, '--content-type', settings.INSIGHTS_AGENT_MIME
]
output = smart_str(subprocess.check_output(cmd, timeout=60 * 5))
logger.debug(output)
# reset the `last_run` when data is shipped
run_now = now()
state = TowerAnalyticsState.get_solo()
state.last_run = run_now
state.save()
except subprocess.CalledProcessError:
logger.exception('{} failure:'.format(cmd))
except subprocess.TimeoutExpired:
logger.exception('{} timeout:'.format(cmd))
url = getattr(settings, 'AUTOMATION_ANALYTICS_URL', None)
if not url:
logger.error('AUTOMATION_ANALYTICS_URL is not set')
return
rh_user = getattr(settings, 'REDHAT_USERNAME', None)
rh_password = getattr(settings, 'REDHAT_PASSWORD', None)
if not rh_user:
return logger.error('REDHAT_USERNAME is not set')
if not rh_password:
return logger.error('REDHAT_PASSWORD is not set')
with open(path, 'rb') as f:
files = {'file': (os.path.basename(path), f, settings.INSIGHTS_AGENT_MIME)}
s = requests.Session()
s.headers = get_awx_http_client_headers()
s.headers.pop('Content-Type')
with set_environ(**settings.AWX_TASK_ENV):
response = s.post(url,
files=files,
verify="/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem",
auth=(rh_user, rh_password),
headers=s.headers,
timeout=(31, 31))
if response.status_code != 202:
return logger.exception('Upload failed with status {}, {}'.format(response.status_code,
response.text))
run_now = now()
state = TowerAnalyticsState.get_solo()
state.last_run = run_now
state.save()
finally:
# cleanup tar.gz
os.remove(path)

View File

@@ -46,6 +46,8 @@ INSTANCE_MEMORY = Gauge('awx_instance_memory', 'RAM (Kb) on each node in a Tower
INSTANCE_INFO = Info('awx_instance', 'Info about each node in a Tower system', ['hostname', 'instance_uuid',])
INSTANCE_LAUNCH_TYPE = Gauge('awx_instance_launch_type_total', 'Type of Job launched', ['node', 'launch_type',])
INSTANCE_STATUS = Gauge('awx_instance_status_total', 'Status of Job launched', ['node', 'status',])
INSTANCE_CONSUMED_CAPACITY = Gauge('awx_instance_consumed_capacity', 'Consumed capacity of each node in a Tower system', ['hostname', 'instance_uuid',])
INSTANCE_REMAINING_CAPACITY = Gauge('awx_instance_remaining_capacity', 'Remaining capacity of each node in a Tower system', ['hostname', 'instance_uuid',])
LICENSE_INSTANCE_TOTAL = Gauge('awx_license_instance_total', 'Total number of managed hosts provided by your license')
LICENSE_INSTANCE_FREE = Gauge('awx_license_instance_free', 'Number of remaining managed hosts provided by your license')
@@ -104,6 +106,8 @@ def metrics():
INSTANCE_CAPACITY.labels(hostname=hostname, instance_uuid=uuid).set(instance_data[uuid]['capacity'])
INSTANCE_CPU.labels(hostname=hostname, instance_uuid=uuid).set(instance_data[uuid]['cpu'])
INSTANCE_MEMORY.labels(hostname=hostname, instance_uuid=uuid).set(instance_data[uuid]['memory'])
INSTANCE_CONSUMED_CAPACITY.labels(hostname=hostname, instance_uuid=uuid).set(instance_data[uuid]['consumed_capacity'])
INSTANCE_REMAINING_CAPACITY.labels(hostname=hostname, instance_uuid=uuid).set(instance_data[uuid]['remaining_capacity'])
INSTANCE_INFO.labels(hostname=hostname, instance_uuid=uuid).info({
'enabled': str(instance_data[uuid]['enabled']),
'last_isolated_check': getattr(instance_data[uuid], 'last_isolated_check', 'None'),

View File

@@ -2,12 +2,14 @@
import json
import logging
import os
from distutils.version import LooseVersion as Version
# Django
from django.utils.translation import ugettext_lazy as _
# Django REST Framework
from rest_framework import serializers
from rest_framework.fields import FloatField
# Tower
from awx.conf import fields, register, register_validate
@@ -52,15 +54,6 @@ register(
category_slug='system',
)
register(
'TOWER_ADMIN_ALERTS',
field_class=fields.BooleanField,
label=_('Enable Administrator Alerts'),
help_text=_('Email Admin users for system events that may require attention.'),
category=_('System'),
category_slug='system',
)
register(
'TOWER_URL_BASE',
field_class=fields.URLField,
@@ -87,11 +80,11 @@ register(
)
register(
'PROXY_IP_WHITELIST',
'PROXY_IP_ALLOWED_LIST',
field_class=fields.StringListField,
label=_('Proxy IP Whitelist'),
label=_('Proxy IP Allowed List'),
help_text=_("If Tower is behind a reverse proxy/load balancer, use this setting "
"to whitelist the proxy IP addresses from which Tower should trust "
"to configure the proxy IP addresses from which Tower should trust "
"custom REMOTE_HOST_HEADERS header values. "
"If this setting is an empty list (the default), the headers specified by "
"REMOTE_HOST_HEADERS will be trusted unconditionally')"),
@@ -153,7 +146,7 @@ register(
register(
'AUTOMATION_ANALYTICS_URL',
field_class=fields.URLField,
default='https://cloud.redhat.com',
default='https://example.com',
schemes=('http', 'https'),
allow_plain_hostname=True, # Allow hostname only without TLD.
label=_('Automation Analytics upload URL.'),
@@ -248,23 +241,11 @@ register(
field_class=fields.StringListField,
required=False,
label=_('Paths to expose to isolated jobs'),
help_text=_('Whitelist of paths that would otherwise be hidden to expose to isolated jobs. Enter one path per line.'),
help_text=_('List of paths that would otherwise be hidden to expose to isolated jobs. Enter one path per line.'),
category=_('Jobs'),
category_slug='jobs',
)
register(
'AWX_ISOLATED_VERBOSITY',
field_class=fields.IntegerField,
min_value=0,
max_value=5,
label=_('Verbosity level for isolated node management tasks'),
help_text=_('This can be raised to aid in debugging connection issues for isolated task execution'),
category=_('Jobs'),
category_slug='jobs',
default=0
)
register(
'AWX_ISOLATED_CHECK_INTERVAL',
field_class=fields.IntegerField,
@@ -298,6 +279,16 @@ register(
category_slug='jobs',
)
register(
'AWX_ISOLATED_HOST_KEY_CHECKING',
field_class=fields.BooleanField,
label=_('Isolated host key checking'),
help_text=_('When set to True, AWX will enforce strict host key checking for communication with isolated nodes.'),
category=_('Jobs'),
category_slug='jobs',
default=False
)
register(
'AWX_ISOLATED_KEY_GENERATION',
field_class=fields.BooleanField,
@@ -335,6 +326,53 @@ register(
category_slug='jobs',
)
register(
'AWX_RESOURCE_PROFILING_ENABLED',
field_class=fields.BooleanField,
default=False,
label=_('Enable detailed resource profiling on all playbook runs'),
help_text=_('If set, detailed resource profiling data will be collected on all jobs. '
'This data can be gathered with `sosreport`.'), # noqa
category=_('Jobs'),
category_slug='jobs',
)
register(
'AWX_RESOURCE_PROFILING_CPU_POLL_INTERVAL',
field_class=FloatField,
default='0.25',
label=_('Interval (in seconds) between polls for cpu usage.'),
help_text=_('Interval (in seconds) between polls for cpu usage. '
'Setting this lower than the default will affect playbook performance.'),
category=_('Jobs'),
category_slug='jobs',
required=False,
)
register(
'AWX_RESOURCE_PROFILING_MEMORY_POLL_INTERVAL',
field_class=FloatField,
default='0.25',
label=_('Interval (in seconds) between polls for memory usage.'),
help_text=_('Interval (in seconds) between polls for memory usage. '
'Setting this lower than the default will affect playbook performance.'),
category=_('Jobs'),
category_slug='jobs',
required=False,
)
register(
'AWX_RESOURCE_PROFILING_PID_POLL_INTERVAL',
field_class=FloatField,
default='0.25',
label=_('Interval (in seconds) between polls for PID count.'),
help_text=_('Interval (in seconds) between polls for PID count. '
'Setting this lower than the default will affect playbook performance.'),
category=_('Jobs'),
category_slug='jobs',
required=False,
)
register(
'AWX_TASK_ENV',
field_class=fields.KeyValueField,
@@ -350,12 +388,21 @@ register(
'INSIGHTS_TRACKING_STATE',
field_class=fields.BooleanField,
default=False,
label=_('Gather data for Automation Insights'),
help_text=_('Enables Tower to gather data on automation and send it to Red Hat Insights.'),
label=_('Gather data for Automation Analytics'),
help_text=_('Enables Tower to gather data on automation and send it to Red Hat.'),
category=_('System'),
category_slug='system',
)
register(
'PROJECT_UPDATE_VVV',
field_class=fields.BooleanField,
label=_('Run Project Updates With Higher Verbosity'),
help_text=_('Adds the CLI -vvv flag to ansible-playbook runs of project_update.yml used for project updates.'),
category=_('Jobs'),
category_slug='jobs',
)
register(
'AWX_ROLES_ENABLED',
field_class=fields.BooleanField,
@@ -376,6 +423,111 @@ register(
category_slug='jobs',
)
register(
'AWX_SHOW_PLAYBOOK_LINKS',
field_class=fields.BooleanField,
default=False,
label=_('Follow symlinks'),
help_text=_(
'Follow symbolic links when scanning for playbooks. Be aware that setting this to True can lead '
'to infinite recursion if a link points to a parent directory of itself.'
),
category=_('Jobs'),
category_slug='jobs',
)
register(
'PRIMARY_GALAXY_URL',
field_class=fields.URLField,
required=False,
allow_blank=True,
label=_('Primary Galaxy Server URL'),
help_text=_(
'For organizations that run their own Galaxy service, this gives the option to specify a '
'host as the primary galaxy server. Requirements will be downloaded from the primary if the '
'specific role or collection is available there. If the content is not avilable in the primary, '
'or if this field is left blank, it will default to galaxy.ansible.com.'
),
category=_('Jobs'),
category_slug='jobs'
)
register(
'PRIMARY_GALAXY_USERNAME',
field_class=fields.CharField,
required=False,
allow_blank=True,
label=_('Primary Galaxy Server Username'),
help_text=_('(This setting is deprecated and will be removed in a future release) '
'For using a galaxy server at higher precedence than the public Ansible Galaxy. '
'The username to use for basic authentication against the Galaxy instance, '
'this is mutually exclusive with PRIMARY_GALAXY_TOKEN.'),
category=_('Jobs'),
category_slug='jobs'
)
register(
'PRIMARY_GALAXY_PASSWORD',
field_class=fields.CharField,
encrypted=True,
required=False,
allow_blank=True,
label=_('Primary Galaxy Server Password'),
help_text=_('(This setting is deprecated and will be removed in a future release) '
'For using a galaxy server at higher precedence than the public Ansible Galaxy. '
'The password to use for basic authentication against the Galaxy instance, '
'this is mutually exclusive with PRIMARY_GALAXY_TOKEN.'),
category=_('Jobs'),
category_slug='jobs'
)
register(
'PRIMARY_GALAXY_TOKEN',
field_class=fields.CharField,
encrypted=True,
required=False,
allow_blank=True,
label=_('Primary Galaxy Server Token'),
help_text=_('For using a galaxy server at higher precedence than the public Ansible Galaxy. '
'The token to use for connecting with the Galaxy instance, '
'this is mutually exclusive with corresponding username and password settings.'),
category=_('Jobs'),
category_slug='jobs'
)
register(
'PRIMARY_GALAXY_AUTH_URL',
field_class=fields.CharField,
required=False,
allow_blank=True,
label=_('Primary Galaxy Authentication URL'),
help_text=_('For using a galaxy server at higher precedence than the public Ansible Galaxy. '
'The token_endpoint of a Keycloak server.'),
category=_('Jobs'),
category_slug='jobs'
)
register(
'PUBLIC_GALAXY_ENABLED',
field_class=fields.BooleanField,
default=True,
label=_('Allow Access to Public Galaxy'),
help_text=_('Allow or deny access to the public Ansible Galaxy during project updates.'),
category=_('Jobs'),
category_slug='jobs'
)
register(
'GALAXY_IGNORE_CERTS',
field_class=fields.BooleanField,
default=False,
label=_('Ignore Ansible Galaxy SSL Certificate Verification'),
help_text=_('If set to true, certificate validation will not be done when'
'installing content from any Galaxy server.'),
category=_('Jobs'),
category_slug='jobs'
)
register(
'STDOUT_MAX_BYTES_DISPLAY',
field_class=fields.IntegerField,
@@ -467,6 +619,18 @@ register(
category_slug='jobs',
)
register(
'MAX_FORKS',
field_class=fields.IntegerField,
allow_null=False,
default=200,
label=_('Maximum number of forks per job.'),
help_text=_('Saving a Job Template with more than this number of forks will result in an error. '
'When set to 0, no limit is applied.'),
category=_('Jobs'),
category_slug='jobs',
)
register(
'LOG_AGGREGATOR_HOST',
field_class=fields.CharField,
@@ -506,7 +670,7 @@ register(
allow_blank=True,
default='',
label=_('Logging Aggregator Username'),
help_text=_('Username for external log aggregator (if required).'),
help_text=_('Username for external log aggregator (if required; HTTP/s only).'),
category=_('Logging'),
category_slug='logging',
required=False,
@@ -518,7 +682,7 @@ register(
default='',
encrypted=True,
label=_('Logging Aggregator Password/Token'),
help_text=_('Password or authentication token for external log aggregator (if required).'),
help_text=_('Password or authentication token for external log aggregator (if required; HTTP/s only).'),
category=_('Logging'),
category_slug='logging',
required=False,
@@ -616,15 +780,61 @@ register(
category=_('Logging'),
category_slug='logging',
)
register(
'LOG_AGGREGATOR_MAX_DISK_USAGE_GB',
field_class=fields.IntegerField,
default=1,
min_value=1,
label=_('Maximum disk persistance for external log aggregation (in GB)'),
help_text=_('Amount of data to store (in gigabytes) during an outage of '
'the external log aggregator (defaults to 1). '
'Equivalent to the rsyslogd queue.maxdiskspace setting.'),
category=_('Logging'),
category_slug='logging',
)
register(
'LOG_AGGREGATOR_MAX_DISK_USAGE_PATH',
field_class=fields.CharField,
default='/var/lib/awx',
label=_('File system location for rsyslogd disk persistence'),
help_text=_('Location to persist logs that should be retried after an outage '
'of the external log aggregator (defaults to /var/lib/awx). '
'Equivalent to the rsyslogd queue.spoolDirectory setting.'),
category=_('Logging'),
category_slug='logging',
)
register(
'LOG_AGGREGATOR_RSYSLOGD_DEBUG',
field_class=fields.BooleanField,
default=False,
label=_('Enable rsyslogd debugging'),
help_text=_('Enabled high verbosity debugging for rsyslogd. '
'Useful for debugging connection issues for external log aggregation.'),
category=_('Logging'),
category_slug='logging',
)
register(
'BROKER_DURABILITY',
field_class=fields.BooleanField,
label=_('Message Durability'),
help_text=_('When set (the default), underlying queues will be persisted to disk. Disable this to enable higher message bus throughput.'),
'AUTOMATION_ANALYTICS_LAST_GATHER',
field_class=fields.DateTimeField,
label=_('Last gather date for Automation Analytics.'),
allow_null=True,
category=_('System'),
category_slug='system',
category_slug='system'
)
register(
'AUTOMATION_ANALYTICS_GATHER_INTERVAL',
field_class=fields.IntegerField,
label=_('Automation Analytics Gather Interval'),
help_text=_('Interval (in seconds) between data gathering.'),
default=14400, # every 4 hours
min_value=1800, # every 30 minutes
category=_('System'),
category_slug='system'
)
@@ -646,4 +856,84 @@ def logging_validate(serializer, attrs):
return attrs
def galaxy_validate(serializer, attrs):
"""Ansible Galaxy config options have mutual exclusivity rules, these rules
are enforced here on serializer validation so that users will not be able
to save settings which obviously break all project updates.
"""
prefix = 'PRIMARY_GALAXY_'
errors = {}
def _new_value(setting_name):
if setting_name in attrs:
return attrs[setting_name]
elif not serializer.instance:
return ''
return getattr(serializer.instance, setting_name, '')
if not _new_value('PRIMARY_GALAXY_URL'):
if _new_value('PUBLIC_GALAXY_ENABLED') is False:
msg = _('A URL for Primary Galaxy must be defined before disabling public Galaxy.')
# put error in both keys because UI has trouble with errors in toggles
for key in ('PRIMARY_GALAXY_URL', 'PUBLIC_GALAXY_ENABLED'):
errors.setdefault(key, [])
errors[key].append(msg)
raise serializers.ValidationError(errors)
from awx.main.constants import GALAXY_SERVER_FIELDS
if not any('{}{}'.format(prefix, subfield.upper()) in attrs for subfield in GALAXY_SERVER_FIELDS):
return attrs
galaxy_data = {}
for subfield in GALAXY_SERVER_FIELDS:
galaxy_data[subfield] = _new_value('{}{}'.format(prefix, subfield.upper()))
if not galaxy_data['url']:
for k, v in galaxy_data.items():
if v:
setting_name = '{}{}'.format(prefix, k.upper())
errors.setdefault(setting_name, [])
errors[setting_name].append(_(
'Cannot provide field if PRIMARY_GALAXY_URL is not set.'
))
for k in GALAXY_SERVER_FIELDS:
if galaxy_data[k]:
setting_name = '{}{}'.format(prefix, k.upper())
if (not serializer.instance) or (not getattr(serializer.instance, setting_name, '')):
# new auth is applied, so check if compatible with version
from awx.main.utils import get_ansible_version
current_version = get_ansible_version()
min_version = '2.9'
if Version(current_version) < Version(min_version):
errors.setdefault(setting_name, [])
errors[setting_name].append(_(
'Galaxy server settings are not available until Ansible {min_version}, '
'you are running {current_version}.'
).format(min_version=min_version, current_version=current_version))
if (galaxy_data['password'] or galaxy_data['username']) and (galaxy_data['token'] or galaxy_data['auth_url']):
for k in ('password', 'username', 'token', 'auth_url'):
setting_name = '{}{}'.format(prefix, k.upper())
if setting_name in attrs:
errors.setdefault(setting_name, [])
errors[setting_name].append(_(
'Setting Galaxy token and authentication URL is mutually exclusive with username and password.'
))
if bool(galaxy_data['username']) != bool(galaxy_data['password']):
msg = _('If authenticating via username and password, both must be provided.')
for k in ('username', 'password'):
setting_name = '{}{}'.format(prefix, k.upper())
errors.setdefault(setting_name, [])
errors[setting_name].append(msg)
if bool(galaxy_data['token']) != bool(galaxy_data['auth_url']):
msg = _('If authenticating via token, both token and authentication URL must be provided.')
for k in ('token', 'auth_url'):
setting_name = '{}{}'.format(prefix, k.upper())
errors.setdefault(setting_name, [])
errors[setting_name].append(msg)
if errors:
raise serializers.ValidationError(errors)
return attrs
register_validate('logging', logging_validate)
register_validate('jobs', galaxy_validate)

View File

@@ -10,8 +10,7 @@ __all__ = [
'ANSI_SGR_PATTERN', 'CAN_CANCEL', 'ACTIVE_STATES', 'STANDARD_INVENTORY_UPDATE_ENV'
]
CLOUD_PROVIDERS = ('azure_rm', 'ec2', 'gce', 'vmware', 'openstack', 'rhv', 'satellite6', 'cloudforms', 'tower')
CLOUD_PROVIDERS = ('azure_rm', 'ec2', 'gce', 'vmware', 'openstack', 'rhv', 'satellite6', 'tower')
SCHEDULEABLE_PROVIDERS = CLOUD_PROVIDERS + ('custom', 'scm',)
PRIVILEGE_ESCALATION_METHODS = [
('sudo', _('Sudo')), ('su', _('Su')), ('pbrun', _('Pbrun')), ('pfexec', _('Pfexec')),
@@ -32,17 +31,17 @@ STANDARD_INVENTORY_UPDATE_ENV = {
CAN_CANCEL = ('new', 'pending', 'waiting', 'running')
ACTIVE_STATES = CAN_CANCEL
CENSOR_VALUE = '************'
ENV_BLACKLIST = frozenset((
ENV_BLOCKLIST = frozenset((
'VIRTUAL_ENV', 'PATH', 'PYTHONPATH', 'PROOT_TMP_DIR', 'JOB_ID',
'INVENTORY_ID', 'INVENTORY_SOURCE_ID', 'INVENTORY_UPDATE_ID',
'AD_HOC_COMMAND_ID', 'REST_API_URL', 'REST_API_TOKEN', 'MAX_EVENT_RES',
'CALLBACK_QUEUE', 'CALLBACK_CONNECTION', 'CACHE',
'JOB_CALLBACK_DEBUG', 'INVENTORY_HOSTVARS',
'AWX_HOST', 'PROJECT_REVISION'
'AWX_HOST', 'PROJECT_REVISION', 'SUPERVISOR_WEB_CONFIG_PATH'
))
# loggers that may be called in process of emitting a log
LOGGER_BLACKLIST = (
LOGGER_BLOCKLIST = (
'awx.main.utils.handlers',
'awx.main.utils.formatters',
'awx.main.utils.filters',
@@ -51,3 +50,7 @@ LOGGER_BLACKLIST = (
# loggers that may be called getting logging settings
'awx.conf'
)
# these correspond to both AWX and Ansible settings to keep naming consistent
# for instance, settings.PRIMARY_GALAXY_AUTH_URL vs env var ANSIBLE_GALAXY_SERVER_FOO_AUTH_URL
GALAXY_SERVER_FIELDS = ('url', 'username', 'password', 'token', 'auth_url')

View File

@@ -1,97 +1,246 @@
import json
import logging
import time
import hmac
import asyncio
from channels import Group
from channels.auth import channel_session_user_from_http, channel_session_user
from django.utils.encoding import smart_str
from django.http.cookie import parse_cookie
from django.core.serializers.json import DjangoJSONEncoder
from django.conf import settings
from django.utils.encoding import force_bytes
from django.contrib.auth.models import User
from channels.generic.websocket import AsyncJsonWebsocketConsumer
from channels.layers import get_channel_layer
from channels.db import database_sync_to_async
logger = logging.getLogger('awx.main.consumers')
XRF_KEY = '_auth_user_xrf'
def discard_groups(message):
if 'groups' in message.channel_session:
for group in message.channel_session['groups']:
Group(group).discard(message.reply_channel)
class WebsocketSecretAuthHelper:
"""
Middlewareish for websockets to verify node websocket broadcast interconnect.
Note: The "ish" is due to the channels routing interface. Routing occurs
_after_ authentication; making it hard to apply this auth to _only_ a subset of
websocket endpoints.
"""
@classmethod
def construct_secret(cls):
nonce_serialized = f"{int(time.time())}"
payload_dict = {
'secret': settings.BROADCAST_WEBSOCKET_SECRET,
'nonce': nonce_serialized
}
payload_serialized = json.dumps(payload_dict)
secret_serialized = hmac.new(force_bytes(settings.BROADCAST_WEBSOCKET_SECRET),
msg=force_bytes(payload_serialized),
digestmod='sha256').hexdigest()
return 'HMAC-SHA256 {}:{}'.format(nonce_serialized, secret_serialized)
@channel_session_user_from_http
def ws_connect(message):
headers = dict(message.content.get('headers', ''))
message.reply_channel.send({"accept": True})
message.content['method'] = 'FAKE'
if message.user.is_authenticated:
message.reply_channel.send(
{"text": json.dumps({"accept": True, "user": message.user.id})}
)
# store the valid CSRF token from the cookie so we can compare it later
# on ws_receive
cookie_token = parse_cookie(
smart_str(headers.get(b'cookie'))
).get('csrftoken')
if cookie_token:
message.channel_session[XRF_KEY] = cookie_token
else:
logger.error("Request user is not authenticated to use websocket.")
message.reply_channel.send({"close": True})
return None
@classmethod
def verify_secret(cls, s, nonce_tolerance=300):
try:
(prefix, payload) = s.split(' ')
if prefix != 'HMAC-SHA256':
raise ValueError('Unsupported encryption algorithm')
(nonce_parsed, secret_parsed) = payload.split(':')
except Exception:
raise ValueError("Failed to parse secret")
try:
payload_expected = {
'secret': settings.BROADCAST_WEBSOCKET_SECRET,
'nonce': nonce_parsed,
}
payload_serialized = json.dumps(payload_expected)
except Exception:
raise ValueError("Failed to create hash to compare to secret.")
secret_serialized = hmac.new(force_bytes(settings.BROADCAST_WEBSOCKET_SECRET),
msg=force_bytes(payload_serialized),
digestmod='sha256').hexdigest()
if secret_serialized != secret_parsed:
raise ValueError("Invalid secret")
# Avoid timing attack and check the nonce after all the heavy lifting
now = int(time.time())
nonce_parsed = int(nonce_parsed)
nonce_diff = now - nonce_parsed
if abs(nonce_diff) > nonce_tolerance:
logger.warn(f"Potential replay attack or machine(s) time out of sync by {nonce_diff} seconds.")
raise ValueError("Potential replay attack or machine(s) time out of sync by {nonce_diff} seconds.")
return True
@classmethod
def is_authorized(cls, scope):
secret = ''
for k, v in scope['headers']:
if k.decode("utf-8") == 'secret':
secret = v.decode("utf-8")
break
WebsocketSecretAuthHelper.verify_secret(secret)
@channel_session_user
def ws_disconnect(message):
discard_groups(message)
class BroadcastConsumer(AsyncJsonWebsocketConsumer):
async def connect(self):
try:
WebsocketSecretAuthHelper.is_authorized(self.scope)
except Exception:
logger.warn(f"client '{self.channel_name}' failed to authorize against the broadcast endpoint.")
await self.close()
return
await self.accept()
await self.channel_layer.group_add(settings.BROADCAST_WEBSOCKET_GROUP_NAME, self.channel_name)
logger.info(f"client '{self.channel_name}' joined the broadcast group.")
async def disconnect(self, code):
logger.info(f"client '{self.channel_name}' disconnected from the broadcast group.")
await self.channel_layer.group_discard(settings.BROADCAST_WEBSOCKET_GROUP_NAME, self.channel_name)
async def internal_message(self, event):
await self.send(event['text'])
@channel_session_user
def ws_receive(message):
from awx.main.access import consumer_access
user = message.user
raw_data = message.content['text']
data = json.loads(raw_data)
class EventConsumer(AsyncJsonWebsocketConsumer):
async def connect(self):
user = self.scope['user']
if user and not user.is_anonymous:
await self.accept()
await self.send_json({"accept": True, "user": user.id})
# store the valid CSRF token from the cookie so we can compare it later
# on ws_receive
cookie_token = self.scope['cookies'].get('csrftoken')
if cookie_token:
self.scope['session'][XRF_KEY] = cookie_token
else:
logger.error("Request user is not authenticated to use websocket.")
# TODO: Carry over from channels 1 implementation
# We should never .accept() the client and close without sending a close message
await self.accept()
await self.send_json({"close": True})
await self.close()
xrftoken = data.get('xrftoken')
if (
not xrftoken or
XRF_KEY not in message.channel_session or
xrftoken != message.channel_session[XRF_KEY]
):
logger.error(
"access denied to channel, XRF mismatch for {}".format(user.username)
)
message.reply_channel.send({
"text": json.dumps({"error": "access denied to channel"})
})
return
async def disconnect(self, code):
current_groups = set(self.scope['session'].pop('groups') if 'groups' in self.scope['session'] else [])
for group_name in current_groups:
await self.channel_layer.group_discard(
group_name,
self.channel_name,
)
if 'groups' in data:
discard_groups(message)
groups = data['groups']
current_groups = set(message.channel_session.pop('groups') if 'groups' in message.channel_session else [])
for group_name,v in groups.items():
if type(v) is list:
for oid in v:
name = '{}-{}'.format(group_name, oid)
access_cls = consumer_access(group_name)
if access_cls is not None:
user_access = access_cls(user)
if not user_access.get_queryset().filter(pk=oid).exists():
message.reply_channel.send({"text": json.dumps(
{"error": "access denied to channel {0} for resource id {1}".format(group_name, oid)})})
continue
current_groups.add(name)
Group(name).add(message.reply_channel)
else:
current_groups.add(group_name)
Group(group_name).add(message.reply_channel)
message.channel_session['groups'] = list(current_groups)
@database_sync_to_async
def user_can_see_object_id(self, user_access, oid):
# At this point user is a channels.auth.UserLazyObject object
# This causes problems with our generic role permissions checking.
# Specifically, type(user) != User
# Therefore, get the "real" User objects from the database before
# calling the access permission methods
user_access.user = User.objects.get(id=user_access.user.id)
res = user_access.get_queryset().filter(pk=oid).exists()
return res
async def receive_json(self, data):
from awx.main.access import consumer_access
user = self.scope['user']
xrftoken = data.get('xrftoken')
if (
not xrftoken or
XRF_KEY not in self.scope["session"] or
xrftoken != self.scope["session"][XRF_KEY]
):
logger.error(f"access denied to channel, XRF mismatch for {user.username}")
await self.send_json({"error": "access denied to channel"})
return
if 'groups' in data:
groups = data['groups']
new_groups = set()
current_groups = set(self.scope['session'].pop('groups') if 'groups' in self.scope['session'] else [])
for group_name,v in groups.items():
if type(v) is list:
for oid in v:
name = '{}-{}'.format(group_name, oid)
access_cls = consumer_access(group_name)
if access_cls is not None:
user_access = access_cls(user)
if not await self.user_can_see_object_id(user_access, oid):
await self.send_json({"error": "access denied to channel {0} for resource id {1}".format(group_name, oid)})
continue
new_groups.add(name)
else:
await self.send_json({"error": "access denied to channel"})
logger.error(f"groups must be a list, not {groups}")
return
old_groups = current_groups - new_groups
for group_name in old_groups:
await self.channel_layer.group_discard(
group_name,
self.channel_name,
)
new_groups_exclusive = new_groups - current_groups
for group_name in new_groups_exclusive:
await self.channel_layer.group_add(
group_name,
self.channel_name
)
self.scope['session']['groups'] = new_groups
await self.send_json({
"groups_current": list(new_groups),
"groups_left": list(old_groups),
"groups_joined": list(new_groups_exclusive)
})
async def internal_message(self, event):
await self.send(event['text'])
def run_sync(func):
event_loop = asyncio.new_event_loop()
event_loop.run_until_complete(func)
event_loop.close()
def _dump_payload(payload):
try:
return json.dumps(payload, cls=DjangoJSONEncoder)
except ValueError:
logger.error("Invalid payload to emit")
return None
def emit_channel_notification(group, payload):
try:
Group(group).send({"text": json.dumps(payload, cls=DjangoJSONEncoder)})
except ValueError:
logger.error("Invalid payload emitting channel {} on topic: {}".format(group, payload))
from awx.main.wsbroadcast import wrap_broadcast_msg # noqa
payload_dumped = _dump_payload(payload)
if payload_dumped is None:
return
channel_layer = get_channel_layer()
run_sync(channel_layer.group_send(
group,
{
"type": "internal.message",
"text": payload_dumped
},
))
run_sync(channel_layer.group_send(
settings.BROADCAST_WEBSOCKET_GROUP_NAME,
{
"type": "internal.message",
"text": wrap_broadcast_msg(group, payload_dumped),
},
))

View File

@@ -1,15 +1,10 @@
from .plugin import CredentialPlugin
from .plugin import CredentialPlugin, CertFiles, raise_for_status
from urllib.parse import quote, urlencode, urljoin
from django.utils.translation import ugettext_lazy as _
import requests
# AWX
from awx.main.utils import (
create_temporary_fifo,
)
aim_inputs = {
'fields': [{
'id': 'url',
@@ -43,7 +38,7 @@ aim_inputs = {
'id': 'object_query',
'label': _('Object Query'),
'type': 'string',
'help_text': _('Lookup query for the object. Ex: "Safe=TestSafe;Object=testAccountName123"'),
'help_text': _('Lookup query for the object. Ex: Safe=TestSafe;Object=testAccountName123'),
}, {
'id': 'object_query_format',
'label': _('Object Query Format'),
@@ -81,27 +76,20 @@ def aim_backend(**kwargs):
request_qs = '?' + urlencode(query_params, quote_via=quote)
request_url = urljoin(url, '/'.join(['AIMWebService', 'api', 'Accounts']))
cert = None
if client_cert and client_key:
cert = (
create_temporary_fifo(client_cert.encode()),
create_temporary_fifo(client_key.encode())
with CertFiles(client_cert, client_key) as cert:
res = requests.get(
request_url + request_qs,
timeout=30,
cert=cert,
verify=verify,
allow_redirects=False,
)
elif client_cert:
cert = create_temporary_fifo(client_cert.encode())
res = requests.get(
request_url + request_qs,
timeout=30,
cert=cert,
verify=verify,
)
res.raise_for_status()
raise_for_status(res)
return res.json()['Content']
aim_plugin = CredentialPlugin(
'CyberArk AIM Secret Lookup',
'CyberArk AIM Central Credential Provider Lookup',
inputs=aim_inputs,
backend=aim_backend
)

View File

@@ -3,6 +3,16 @@ from .plugin import CredentialPlugin
from django.utils.translation import ugettext_lazy as _
from azure.keyvault import KeyVaultClient, KeyVaultAuthentication
from azure.common.credentials import ServicePrincipalCredentials
from msrestazure import azure_cloud
# https://github.com/Azure/msrestazure-for-python/blob/master/msrestazure/azure_cloud.py
clouds = [
vars(azure_cloud)[n]
for n in dir(azure_cloud)
if n.startswith("AZURE_") and n.endswith("_CLOUD")
]
default_cloud = vars(azure_cloud)["AZURE_PUBLIC_CLOUD"]
azure_keyvault_inputs = {
@@ -24,6 +34,12 @@ azure_keyvault_inputs = {
'id': 'tenant',
'label': _('Tenant ID'),
'type': 'string'
}, {
'id': 'cloud_name',
'label': _('Cloud Environment'),
'help_text': _('Specify which azure cloud environment to use.'),
'choices': list(set([default_cloud.name] + [c.name for c in clouds])),
'default': default_cloud.name
}],
'metadata': [{
'id': 'secret_field',
@@ -42,6 +58,7 @@ azure_keyvault_inputs = {
def azure_keyvault_backend(**kwargs):
url = kwargs['url']
[cloud] = [c for c in clouds if c.name == kwargs.get('cloud_name', default_cloud.name)]
def auth_callback(server, resource, scope):
credentials = ServicePrincipalCredentials(
@@ -49,7 +66,7 @@ def azure_keyvault_backend(**kwargs):
client_id = kwargs['client'],
secret = kwargs['secret'],
tenant = kwargs['tenant'],
resource = "https://vault.azure.net",
resource = f"https://{cloud.suffixes.keyvault_dns.split('.', 1).pop()}",
)
token = credentials.token
return token['token_type'], token['access_token']

View File

@@ -1,16 +1,11 @@
from .plugin import CredentialPlugin
from .plugin import CredentialPlugin, CertFiles, raise_for_status
import base64
from urllib.parse import urljoin, quote_plus
from urllib.parse import urljoin, quote
from django.utils.translation import ugettext_lazy as _
import requests
# AWX
from awx.main.utils import (
create_temporary_fifo,
)
conjur_inputs = {
'fields': [{
@@ -55,32 +50,32 @@ conjur_inputs = {
def conjur_backend(**kwargs):
url = kwargs['url']
api_key = kwargs['api_key']
account = quote_plus(kwargs['account'])
username = quote_plus(kwargs['username'])
secret_path = quote_plus(kwargs['secret_path'])
account = quote(kwargs['account'], safe='')
username = quote(kwargs['username'], safe='')
secret_path = quote(kwargs['secret_path'], safe='')
version = kwargs.get('secret_version')
cacert = kwargs.get('cacert', None)
auth_kwargs = {
'headers': {'Content-Type': 'text/plain'},
'data': api_key
'data': api_key,
'allow_redirects': False,
}
if cacert:
auth_kwargs['verify'] = create_temporary_fifo(cacert.encode())
# https://www.conjur.org/api.html#authentication-authenticate-post
resp = requests.post(
urljoin(url, '/'.join(['authn', account, username, 'authenticate'])),
**auth_kwargs
)
resp.raise_for_status()
with CertFiles(cacert) as cert:
# https://www.conjur.org/api.html#authentication-authenticate-post
auth_kwargs['verify'] = cert
resp = requests.post(
urljoin(url, '/'.join(['authn', account, username, 'authenticate'])),
**auth_kwargs
)
raise_for_status(resp)
token = base64.b64encode(resp.content).decode('utf-8')
lookup_kwargs = {
'headers': {'Authorization': 'Token token="{}"'.format(token)},
'allow_redirects': False,
}
if cacert:
lookup_kwargs['verify'] = create_temporary_fifo(cacert.encode())
# https://www.conjur.org/api.html#secrets-retrieve-a-secret-get
path = urljoin(url, '/'.join([
@@ -92,8 +87,10 @@ def conjur_backend(**kwargs):
if version:
path = '?'.join([path, version])
resp = requests.get(path, timeout=30, **lookup_kwargs)
resp.raise_for_status()
with CertFiles(cacert) as cert:
lookup_kwargs['verify'] = cert
resp = requests.get(path, timeout=30, **lookup_kwargs)
raise_for_status(resp)
return resp.text

View File

@@ -3,16 +3,11 @@ import os
import pathlib
from urllib.parse import urljoin
from .plugin import CredentialPlugin
from .plugin import CredentialPlugin, CertFiles, raise_for_status
import requests
from django.utils.translation import ugettext_lazy as _
# AWX
from awx.main.utils import (
create_temporary_fifo,
)
base_inputs = {
'fields': [{
'id': 'url',
@@ -32,14 +27,33 @@ base_inputs = {
'type': 'string',
'multiline': True,
'help_text': _('The CA certificate used to verify the SSL certificate of the Vault server')
}],
}, {
'id': 'role_id',
'label': _('AppRole role_id'),
'type': 'string',
'multiline': False,
'help_text': _('The Role ID for AppRole Authentication')
}, {
'id': 'secret_id',
'label': _('AppRole secret_id'),
'type': 'string',
'multiline': False,
'secret': True,
'help_text': _('The Secret ID for AppRole Authentication')
}
],
'metadata': [{
'id': 'secret_path',
'label': _('Path to Secret'),
'type': 'string',
'help_text': _('The path to the secret stored in the secret backend e.g, /some/secret/')
},{
'id': 'auth_path',
'label': _('Path to Auth'),
'type': 'string',
'help_text': _('The path where the Authentication method is mounted e.g, approle')
}],
'required': ['url', 'token', 'secret_path'],
'required': ['url', 'secret_path'],
}
hashi_kv_inputs = copy.deepcopy(base_inputs)
@@ -88,8 +102,42 @@ hashi_ssh_inputs['metadata'] = [{
hashi_ssh_inputs['required'].extend(['public_key', 'role'])
def handle_auth(**kwargs):
token = None
if kwargs.get('token'):
token = kwargs['token']
elif kwargs.get('role_id') and kwargs.get('secret_id'):
token = approle_auth(**kwargs)
else:
raise Exception('Either token or AppRole parameters must be set')
return token
def approle_auth(**kwargs):
role_id = kwargs['role_id']
secret_id = kwargs['secret_id']
auth_path = kwargs.get('auth_path') or 'approle'
url = urljoin(kwargs['url'], 'v1')
cacert = kwargs.get('cacert', None)
request_kwargs = {'timeout': 30}
# AppRole Login
request_kwargs['json'] = {'role_id': role_id, 'secret_id': secret_id}
sess = requests.Session()
request_url = '/'.join([url, 'auth', auth_path, 'login']).rstrip('/')
with CertFiles(cacert) as cert:
request_kwargs['verify'] = cert
resp = sess.post(request_url, **request_kwargs)
resp.raise_for_status()
token = resp.json()['auth']['client_token']
return token
def kv_backend(**kwargs):
token = kwargs['token']
token = handle_auth(**kwargs)
url = kwargs['url']
secret_path = kwargs['secret_path']
secret_backend = kwargs.get('secret_backend', None)
@@ -97,12 +145,15 @@ def kv_backend(**kwargs):
cacert = kwargs.get('cacert', None)
api_version = kwargs['api_version']
request_kwargs = {'timeout': 30}
if cacert:
request_kwargs['verify'] = create_temporary_fifo(cacert.encode())
request_kwargs = {
'timeout': 30,
'allow_redirects': False,
}
sess = requests.Session()
sess.headers['Authorization'] = 'Bearer {}'.format(token)
# Compatability header for older installs of Hashicorp Vault
sess.headers['X-Vault-Token'] = token
if api_version == 'v2':
if kwargs.get('secret_version'):
@@ -124,8 +175,10 @@ def kv_backend(**kwargs):
path_segments = [secret_path]
request_url = urljoin(url, '/'.join(['v1'] + path_segments)).rstrip('/')
response = sess.get(request_url, **request_kwargs)
response.raise_for_status()
with CertFiles(cacert) as cert:
request_kwargs['verify'] = cert
response = sess.get(request_url, **request_kwargs)
raise_for_status(response)
json = response.json()
if api_version == 'v2':
@@ -142,15 +195,16 @@ def kv_backend(**kwargs):
def ssh_backend(**kwargs):
token = kwargs['token']
token = handle_auth(**kwargs)
url = urljoin(kwargs['url'], 'v1')
secret_path = kwargs['secret_path']
role = kwargs['role']
cacert = kwargs.get('cacert', None)
request_kwargs = {'timeout': 30}
if cacert:
request_kwargs['verify'] = create_temporary_fifo(cacert.encode())
request_kwargs = {
'timeout': 30,
'allow_redirects': False,
}
request_kwargs['json'] = {'public_key': kwargs['public_key']}
if kwargs.get('valid_principals'):
@@ -158,11 +212,16 @@ def ssh_backend(**kwargs):
sess = requests.Session()
sess.headers['Authorization'] = 'Bearer {}'.format(token)
# Compatability header for older installs of Hashicorp Vault
sess.headers['X-Vault-Token'] = token
# https://www.vaultproject.io/api/secret/ssh/index.html#sign-ssh-key
request_url = '/'.join([url, secret_path, 'sign', role]).rstrip('/')
resp = sess.post(request_url, **request_kwargs)
resp.raise_for_status()
with CertFiles(cacert) as cert:
request_kwargs['verify'] = cert
resp = sess.post(request_url, **request_kwargs)
raise_for_status(resp)
return resp.json()['data']['signed_key']

View File

@@ -1,3 +1,55 @@
import os
import tempfile
from collections import namedtuple
from requests.exceptions import HTTPError
CredentialPlugin = namedtuple('CredentialPlugin', ['name', 'inputs', 'backend'])
def raise_for_status(resp):
resp.raise_for_status()
if resp.status_code >= 300:
exc = HTTPError()
setattr(exc, 'response', resp)
raise exc
class CertFiles():
"""
A context manager used for writing a certificate and (optional) key
to $TMPDIR, and cleaning up afterwards.
This is particularly useful as a shared resource for credential plugins
that want to pull cert/key data out of the database and persist it
temporarily to the file system so that it can loaded into the openssl
certificate chain (generally, for HTTPS requests plugins make via the
Python requests library)
with CertFiles(cert_data, key_data) as cert:
# cert is string representing a path to the cert or pemfile
# temporarily written to disk
requests.post(..., cert=cert)
"""
certfile = None
def __init__(self, cert, key=None):
self.cert = cert
self.key = key
def __enter__(self):
if not self.cert:
return None
self.certfile = tempfile.NamedTemporaryFile('wb', delete=False)
self.certfile.write(self.cert.encode())
if self.key:
self.certfile.write(b'\n')
self.certfile.write(self.key.encode())
self.certfile.flush()
return str(self.certfile.name)
def __exit__(self, *args):
if self.certfile and os.path.exists(self.certfile.name):
os.remove(self.certfile.name)

View File

@@ -24,7 +24,7 @@ class RecordedQueryLog(object):
try:
self.threshold = cache.get('awx-profile-sql-threshold')
except Exception:
# if we can't reach memcached, just assume profiling's off
# if we can't reach the cache, just assume profiling's off
self.threshold = None
def append(self, query):
@@ -64,7 +64,7 @@ class RecordedQueryLog(object):
if not os.path.isdir(self.dest):
os.makedirs(self.dest)
progname = ' '.join(sys.argv)
for match in ('uwsgi', 'dispatcher', 'callback_receiver', 'runworker'):
for match in ('uwsgi', 'dispatcher', 'callback_receiver', 'wsbroadcast'):
if match in progname:
progname = match
break
@@ -110,7 +110,7 @@ class RecordedQueryLog(object):
class DatabaseWrapper(BaseDatabaseWrapper):
"""
This is a special subclass of Django's postgres DB backend which - based on
the value of a special flag in memcached - captures slow queries and
the value of a special flag in cache - captures slow queries and
writes profile and Python stack metadata to the disk.
"""
@@ -133,19 +133,19 @@ class DatabaseWrapper(BaseDatabaseWrapper):
# is the same mechanism used by libraries like the django-debug-toolbar)
#
# in _this_ implementation, we represent it as a property which will
# check memcache for a special flag to be set (when the flag is set, it
# check the cache for a special flag to be set (when the flag is set, it
# means we should start recording queries because somebody called
# `awx-manage profile_sql`)
#
# it's worth noting that this property is wrapped w/ @memoize because
# Django references this attribute _constantly_ (in particular, once
# per executed query); doing a memcached.get() _at most_ once per
# per executed query); doing a cache.get() _at most_ once per
# second is a good enough window to detect when profiling is turned
# on/off by a system administrator
try:
threshold = cache.get('awx-profile-sql-threshold')
except Exception:
# if we can't reach memcached, just assume profiling's off
# if we can't reach the cache, just assume profiling's off
threshold = None
self.queries_log.threshold = threshold
return threshold is not None

View File

@@ -1,5 +1,62 @@
import psycopg2
import select
from contextlib import contextmanager
from django.conf import settings
NOT_READY = ([], [], [])
def get_local_queuename():
return settings.CLUSTER_HOST_ID
class PubSub(object):
def __init__(self, conn):
assert conn.autocommit, "Connection must be in autocommit mode."
self.conn = conn
def listen(self, channel):
with self.conn.cursor() as cur:
cur.execute('LISTEN "%s";' % channel)
def unlisten(self, channel):
with self.conn.cursor() as cur:
cur.execute('UNLISTEN "%s";' % channel)
def notify(self, channel, payload):
with self.conn.cursor() as cur:
cur.execute('SELECT pg_notify(%s, %s);', (channel, payload))
def events(self, select_timeout=5, yield_timeouts=False):
while True:
if select.select([self.conn], [], [], select_timeout) == NOT_READY:
if yield_timeouts:
yield None
else:
self.conn.poll()
while self.conn.notifies:
yield self.conn.notifies.pop(0)
def close(self):
self.conn.close()
@contextmanager
def pg_bus_conn():
conf = settings.DATABASES['default']
conn = psycopg2.connect(dbname=conf['NAME'],
host=conf['HOST'],
user=conf['USER'],
password=conf['PASSWORD'],
port=conf['PORT'],
**conf.get("OPTIONS", {}))
# Django connection.cursor().connection doesn't have autocommit=True on
conn.set_session(autocommit=True)
pubsub = PubSub(conn)
yield pubsub
conn.close()

View File

@@ -1,11 +1,10 @@
import logging
import socket
from django.conf import settings
import uuid
import json
from awx.main.dispatch import get_local_queuename
from awx.main.dispatch.kombu import Connection
from kombu import Queue, Exchange, Producer, Consumer
from . import pg_bus_conn
logger = logging.getLogger('awx.main.dispatch')
@@ -20,15 +19,6 @@ class Control(object):
raise RuntimeError('{} must be in {}'.format(service, self.services))
self.service = service
self.queuename = host or get_local_queuename()
self.queue = Queue(self.queuename, Exchange(self.queuename), routing_key=self.queuename)
def publish(self, msg, conn, **kwargs):
producer = Producer(
exchange=self.queue.exchange,
channel=conn,
routing_key=self.queuename
)
producer.publish(msg, expiration=5, **kwargs)
def status(self, *args, **kwargs):
return self.control_with_reply('status', *args, **kwargs)
@@ -36,24 +26,28 @@ class Control(object):
def running(self, *args, **kwargs):
return self.control_with_reply('running', *args, **kwargs)
@classmethod
def generate_reply_queue_name(cls):
return f"reply_to_{str(uuid.uuid4()).replace('-','_')}"
def control_with_reply(self, command, timeout=5):
logger.warn('checking {} {} for {}'.format(self.service, command, self.queuename))
reply_queue = Queue(name="amq.rabbitmq.reply-to")
reply_queue = Control.generate_reply_queue_name()
self.result = None
with Connection(settings.BROKER_URL) as conn:
with Consumer(conn, reply_queue, callbacks=[self.process_message], no_ack=True):
self.publish({'control': command}, conn, reply_to='amq.rabbitmq.reply-to')
try:
conn.drain_events(timeout=timeout)
except socket.timeout:
logger.error('{} did not reply within {}s'.format(self.service, timeout))
raise
return self.result
with pg_bus_conn() as conn:
conn.listen(reply_queue)
conn.notify(self.queuename,
json.dumps({'control': command, 'reply_to': reply_queue}))
for reply in conn.events(select_timeout=timeout, yield_timeouts=True):
if reply is None:
logger.error(f'{self.service} did not reply within {timeout}s')
raise RuntimeError(f"{self.service} did not reply within {timeout}s")
break
return json.loads(reply.payload)
def control(self, msg, **kwargs):
with Connection(settings.BROKER_URL) as conn:
self.publish(msg, conn)
def process_message(self, body, message):
self.result = body
message.ack()
with pg_bus_conn() as conn:
conn.notify(self.queuename, json.dumps(msg))

View File

@@ -1,42 +0,0 @@
from amqp.exceptions import PreconditionFailed
from django.conf import settings
from kombu.connection import Connection as KombuConnection
from kombu.transport import pyamqp
import logging
logger = logging.getLogger('awx.main.dispatch')
__all__ = ['Connection']
class Connection(KombuConnection):
def __init__(self, *args, **kwargs):
super(Connection, self).__init__(*args, **kwargs)
class _Channel(pyamqp.Channel):
def queue_declare(self, queue, *args, **kwargs):
kwargs['durable'] = settings.BROKER_DURABILITY
try:
return super(_Channel, self).queue_declare(queue, *args, **kwargs)
except PreconditionFailed as e:
if "inequivalent arg 'durable'" in getattr(e, 'reply_text', None):
logger.error(
'queue {} durability is not {}, deleting and recreating'.format(
queue,
kwargs['durable']
)
)
self.queue_delete(queue)
return super(_Channel, self).queue_declare(queue, *args, **kwargs)
class _Connection(pyamqp.Connection):
Channel = _Channel
class _Transport(pyamqp.Transport):
Connection = _Connection
self.transport_cls = _Transport

View File

@@ -0,0 +1,56 @@
import logging
import os
import time
from multiprocessing import Process
from django.conf import settings
from django.db import connections
from schedule import Scheduler
from awx.main.dispatch.worker import TaskWorker
logger = logging.getLogger('awx.main.dispatch.periodic')
class Scheduler(Scheduler):
def run_continuously(self):
idle_seconds = max(
1,
min(self.jobs).period.total_seconds() / 2
)
def run():
ppid = os.getppid()
logger.warn('periodic beat started')
while True:
if os.getppid() != ppid:
# if the parent PID changes, this process has been orphaned
# via e.g., segfault or sigkill, we should exit too
pid = os.getpid()
logger.warn(f'periodic beat exiting gracefully pid:{pid}')
raise SystemExit()
try:
for conn in connections.all():
# If the database connection has a hiccup, re-establish a new
# connection
conn.close_if_unusable_or_obsolete()
self.run_pending()
except Exception:
logger.exception(
'encountered an error while scheduling periodic tasks'
)
time.sleep(idle_seconds)
process = Process(target=run)
process.daemon = True
process.start()
def run_continuously():
scheduler = Scheduler()
for task in settings.CELERYBEAT_SCHEDULE.values():
apply_async = TaskWorker.resolve_callable(task['task']).apply_async
total_seconds = task['schedule'].total_seconds()
scheduler.every(total_seconds).seconds.do(apply_async)
scheduler.run_continuously()

View File

@@ -1,7 +1,9 @@
import logging
import os
import random
import signal
import sys
import time
import traceback
from uuid import uuid4
@@ -72,9 +74,6 @@ class PoolWorker(object):
if not body.get('uuid'):
body['uuid'] = str(uuid4())
uuid = body['uuid']
logger.debug('delivered {} to worker[{}] qsize {}'.format(
uuid, self.pid, self.qsize
))
self.managed_tasks[uuid] = body
self.queue.put(body, block=True, timeout=5)
self.messages_sent += 1
@@ -123,8 +122,16 @@ class PoolWorker(object):
# if any tasks were finished, removed them from the managed tasks for
# this worker
for uuid in finished:
self.messages_finished += 1
del self.managed_tasks[uuid]
try:
del self.managed_tasks[uuid]
self.messages_finished += 1
except KeyError:
# ansible _sometimes_ appears to send events w/ duplicate UUIDs;
# UUIDs for ansible events are *not* actually globally unique
# when this occurs, it's _fine_ to ignore this KeyError because
# the purpose of self.managed_tasks is to just track internal
# state of which events are *currently* being processed.
logger.warn('Event UUID {} appears to be have been duplicated.'.format(uuid))
@property
def current_task(self):
@@ -215,7 +222,7 @@ class WorkerPool(object):
idx = len(self.workers)
# It's important to close these because we're _about_ to fork, and we
# don't want the forked processes to inherit the open sockets
# for the DB and memcached connections (that way lies race conditions)
# for the DB and cache connections (that way lies race conditions)
django_connection.close()
django_cache.close()
worker = PoolWorker(self.queue_size, self.target, (idx,) + self.target_args)
@@ -239,7 +246,7 @@ class WorkerPool(object):
' qsize={{ w.managed_tasks|length }}'
' rss={{ w.mb }}MB'
'{% for task in w.managed_tasks.values() %}'
'\n - {% if loop.index0 == 0 %}running {% else %}queued {% endif %}'
'\n - {% if loop.index0 == 0 %}running {% if "age" in task %}for: {{ "%.1f" % task["age"] }}s {% endif %}{% else %}queued {% endif %}'
'{{ task["uuid"] }} '
'{% if "task" in task %}'
'{{ task["task"].rsplit(".", 1)[-1] }}'
@@ -269,7 +276,7 @@ class WorkerPool(object):
logger.warn("could not write to queue %s" % preferred_queue)
logger.warn("detail: {}".format(tb))
write_attempt_order.append(preferred_queue)
logger.warn("could not write payload to any queue, attempted order: {}".format(write_attempt_order))
logger.error("could not write payload to any queue, attempted order: {}".format(write_attempt_order))
return None
def stop(self, signum):
@@ -360,6 +367,26 @@ class AutoscalePool(WorkerPool):
logger.warn('scaling down worker pid:{}'.format(w.pid))
w.quit()
self.workers.remove(w)
if w.alive:
# if we discover a task manager invocation that's been running
# too long, reap it (because otherwise it'll just hold the postgres
# advisory lock forever); the goal of this code is to discover
# deadlocks or other serious issues in the task manager that cause
# the task manager to never do more work
current_task = w.current_task
if current_task and isinstance(current_task, dict):
if current_task.get('task', '').endswith('tasks.run_task_manager'):
if 'started' not in current_task:
w.managed_tasks[
current_task['uuid']
]['started'] = time.time()
age = time.time() - current_task['started']
w.managed_tasks[current_task['uuid']]['age'] = age
if age > (60 * 5):
logger.error(
f'run_task_manager has held the advisory lock for >5m, sending SIGTERM to {w.pid}'
) # noqa
os.kill(w.pid, signal.SIGTERM)
for m in orphaned:
# if all the workers are dead, spawn at least one

View File

@@ -1,12 +1,12 @@
import inspect
import logging
import sys
import json
from uuid import uuid4
from django.conf import settings
from kombu import Exchange, Producer
from awx.main.dispatch.kombu import Connection
from . import pg_bus_conn
logger = logging.getLogger('awx.main.dispatch')
@@ -39,24 +39,22 @@ class task:
add.apply_async([1, 1])
Adder.apply_async([1, 1])
# Tasks can also define a specific target queue or exchange type:
# Tasks can also define a specific target queue or use the special fan-out queue tower_broadcast:
@task(queue='slow-tasks')
def snooze():
time.sleep(10)
@task(queue='tower_broadcast', exchange_type='fanout')
@task(queue='tower_broadcast')
def announce():
print("Run this everywhere!")
"""
def __init__(self, queue=None, exchange_type=None):
def __init__(self, queue=None):
self.queue = queue
self.exchange_type = exchange_type
def __call__(self, fn=None):
queue = self.queue
exchange_type = self.exchange_type
class PublisherMixin(object):
@@ -73,9 +71,12 @@ class task:
kwargs = kwargs or {}
queue = (
queue or
getattr(cls.queue, 'im_func', cls.queue) or
settings.CELERY_DEFAULT_QUEUE
getattr(cls.queue, 'im_func', cls.queue)
)
if not queue:
msg = f'{cls.name}: Queue value required and may not be None'
logger.error(msg)
raise ValueError(msg)
obj = {
'uuid': task_id,
'args': args,
@@ -86,21 +87,8 @@ class task:
if callable(queue):
queue = queue()
if not settings.IS_TESTING(sys.argv):
with Connection(settings.BROKER_URL) as conn:
exchange = Exchange(queue, type=exchange_type or 'direct')
producer = Producer(conn)
logger.debug('publish {}({}, queue={})'.format(
cls.name,
task_id,
queue
))
producer.publish(obj,
serializer='json',
compression='bzip2',
exchange=exchange,
declare=[exchange],
delivery_mode="persistent",
routing_key=queue)
with pg_bus_conn() as conn:
conn.notify(queue, json.dumps(obj))
return (obj, queue)
# If the object we're wrapping *is* a class (e.g., RunJob), return

View File

@@ -33,7 +33,11 @@ def reap(instance=None, status='failed', excluded_uuids=[]):
'''
Reap all jobs in waiting|running for this instance.
'''
me = instance or Instance.objects.me()
me = instance
if me is None:
(changed, me) = Instance.objects.get_or_register()
if changed:
logger.info("Registered tower node '{}'".format(me.hostname))
now = tz_now()
workflow_ctype_id = ContentType.objects.get_for_model(WorkflowJob).id
jobs = UnifiedJob.objects.filter(

View File

@@ -1,3 +1,3 @@
from .base import AWXConsumer, BaseWorker # noqa
from .base import AWXConsumerRedis, AWXConsumerPG, BaseWorker # noqa
from .callback import CallbackBrokerWorker # noqa
from .task import TaskWorker # noqa

View File

@@ -5,14 +5,18 @@ import os
import logging
import signal
import sys
import redis
import json
import psycopg2
import time
from uuid import UUID
from queue import Empty as QueueEmpty
from django import db
from kombu import Producer
from kombu.mixins import ConsumerMixin
from django.conf import settings
from awx.main.dispatch.pool import WorkerPool
from awx.main.dispatch import pg_bus_conn
if 'run_callback_receiver' in sys.argv:
logger = logging.getLogger('awx.main.commands.run_callback_receiver')
@@ -31,16 +35,18 @@ class WorkerSignalHandler:
def __init__(self):
self.kill_now = False
signal.signal(signal.SIGTERM, signal.SIG_DFL)
signal.signal(signal.SIGINT, self.exit_gracefully)
def exit_gracefully(self, *args, **kwargs):
self.kill_now = True
class AWXConsumer(ConsumerMixin):
class AWXConsumerBase(object):
def __init__(self, name, worker, queues=[], pool=None):
self.should_stop = False
def __init__(self, name, connection, worker, queues=[], pool=None):
self.connection = connection
self.name = name
self.total_messages = 0
self.queues = queues
self.worker = worker
@@ -49,25 +55,15 @@ class AWXConsumer(ConsumerMixin):
self.pool = WorkerPool()
self.pool.init_workers(self.worker.work_loop)
def get_consumers(self, Consumer, channel):
logger.debug(self.listening_on)
return [Consumer(queues=self.queues, accept=['json'],
callbacks=[self.process_task])]
@property
def listening_on(self):
return 'listening on {}'.format([
'{} [{}]'.format(q.name, q.exchange.type) for q in self.queues
])
return f'listening on {self.queues}'
def control(self, body, message):
def control(self, body):
logger.warn(body)
control = body.get('control')
if control in ('status', 'running'):
producer = Producer(
channel=self.connection,
routing_key=message.properties['reply_to']
)
reply_queue = body['reply_to']
if control == 'status':
msg = '\n'.join([self.listening_on, self.pool.debug()])
elif control == 'running':
@@ -75,20 +71,21 @@ class AWXConsumer(ConsumerMixin):
for worker in self.pool.workers:
worker.calculate_managed_tasks()
msg.extend(worker.managed_tasks.keys())
producer.publish(msg)
with pg_bus_conn() as conn:
conn.notify(reply_queue, json.dumps(msg))
elif control == 'reload':
for worker in self.pool.workers:
worker.quit()
else:
logger.error('unrecognized control message: {}'.format(control))
message.ack()
def process_task(self, body, message):
def process_task(self, body):
if 'control' in body:
try:
return self.control(body, message)
return self.control(body)
except Exception:
logger.exception("Exception handling control message:")
logger.exception(f"Exception handling control message: {body}")
return
if len(self.pool):
if "uuid" in body and body['uuid']:
@@ -102,23 +99,73 @@ class AWXConsumer(ConsumerMixin):
queue = 0
self.pool.write(queue, body)
self.total_messages += 1
message.ack()
def run(self, *args, **kwargs):
signal.signal(signal.SIGINT, self.stop)
signal.signal(signal.SIGTERM, self.stop)
self.worker.on_start()
super(AWXConsumer, self).run(*args, **kwargs)
# Child should implement other things here
def stop(self, signum, frame):
self.should_stop = True # this makes the kombu mixin stop consuming
self.should_stop = True
logger.warn('received {}, stopping'.format(signame(signum)))
self.worker.on_stop()
raise SystemExit()
class AWXConsumerRedis(AWXConsumerBase):
def run(self, *args, **kwargs):
super(AWXConsumerRedis, self).run(*args, **kwargs)
self.worker.on_start()
time_to_sleep = 1
while True:
queue = redis.Redis.from_url(settings.BROKER_URL)
while True:
try:
res = queue.blpop(self.queues)
time_to_sleep = 1
res = json.loads(res[1])
self.process_task(res)
except redis.exceptions.RedisError:
time_to_sleep = min(time_to_sleep * 2, 30)
logger.exception(f"encountered an error communicating with redis. Reconnect attempt in {time_to_sleep} seconds")
time.sleep(time_to_sleep)
except (json.JSONDecodeError, KeyError):
logger.exception("failed to decode JSON message from redis")
if self.should_stop:
return
class AWXConsumerPG(AWXConsumerBase):
def run(self, *args, **kwargs):
super(AWXConsumerPG, self).run(*args, **kwargs)
logger.warn(f"Running worker {self.name} listening to queues {self.queues}")
init = False
while True:
try:
with pg_bus_conn() as conn:
for queue in self.queues:
conn.listen(queue)
if init is False:
self.worker.on_start()
init = True
for e in conn.events():
self.process_task(json.loads(e.payload))
if self.should_stop:
return
except psycopg2.InterfaceError:
logger.warn("Stale Postgres message bus connection, reconnecting")
continue
class BaseWorker(object):
def read(self, queue):
return queue.get(block=True, timeout=1)
def work_loop(self, queue, finished, idx, *args):
ppid = os.getppid()
signal_handler = WorkerSignalHandler()
@@ -128,7 +175,7 @@ class BaseWorker(object):
if os.getppid() != ppid:
break
try:
body = queue.get(block=True, timeout=1)
body = self.read(queue)
if body == 'QUIT':
break
except QueueEmpty:
@@ -145,7 +192,6 @@ class BaseWorker(object):
finally:
if 'uuid' in body:
uuid = body['uuid']
logger.debug('task {} is finished'.format(uuid))
finished.put(uuid)
logger.warn('worker exiting gracefully pid:{}'.format(os.getpid()))

View File

@@ -1,19 +1,33 @@
import cProfile
import logging
import os
import pstats
import signal
import tempfile
import time
import traceback
from queue import Empty as QueueEmpty
from django.conf import settings
from django.utils.timezone import now as tz_now
from django.db import DatabaseError, OperationalError, connection as django_connection
from django.db.utils import InterfaceError, InternalError
from django.db.utils import InterfaceError, InternalError, IntegrityError
from awx.main.consumers import emit_channel_notification
from awx.main.models import (JobEvent, AdHocCommandEvent, ProjectUpdateEvent,
InventoryUpdateEvent, SystemJobEvent, UnifiedJob)
InventoryUpdateEvent, SystemJobEvent, UnifiedJob,
Job)
from awx.main.tasks import handle_success_and_failure_notifications
from awx.main.models.events import emit_event_detail
from .base import BaseWorker
logger = logging.getLogger('awx.main.commands.run_callback_receiver')
# the number of seconds to buffer events in memory before flushing
# using JobEvent.objects.bulk_create()
BUFFER_SECONDS = .1
class CallbackBrokerWorker(BaseWorker):
'''
@@ -25,90 +39,129 @@ class CallbackBrokerWorker(BaseWorker):
'''
MAX_RETRIES = 2
prof = None
def __init__(self):
self.buff = {}
def read(self, queue):
try:
return queue.get(block=True, timeout=BUFFER_SECONDS)
except QueueEmpty:
return {'event': 'FLUSH'}
def toggle_profiling(self, *args):
if self.prof:
self.prof.disable()
filename = f'callback-{os.getpid()}.pstats'
filepath = os.path.join(tempfile.gettempdir(), filename)
with open(filepath, 'w') as f:
pstats.Stats(self.prof, stream=f).sort_stats('cumulative').print_stats()
pstats.Stats(self.prof).dump_stats(filepath + '.raw')
self.prof = False
logger.error(f'profiling is disabled, wrote {filepath}')
else:
self.prof = cProfile.Profile()
self.prof.enable()
logger.error('profiling is enabled')
def work_loop(self, *args, **kw):
if settings.AWX_CALLBACK_PROFILE:
signal.signal(signal.SIGUSR1, self.toggle_profiling)
return super(CallbackBrokerWorker, self).work_loop(*args, **kw)
def flush(self, force=False):
now = tz_now()
if (
force or
any([len(events) >= 1000 for events in self.buff.values()])
):
for cls, events in self.buff.items():
logger.debug(f'{cls.__name__}.objects.bulk_create({len(events)})')
for e in events:
if not e.created:
e.created = now
e.modified = now
try:
cls.objects.bulk_create(events)
except Exception as exc:
# if an exception occurs, we should re-attempt to save the
# events one-by-one, because something in the list is
# broken/stale (e.g., an IntegrityError on a specific event)
for e in events:
try:
if (
isinstance(exc, IntegrityError) and
getattr(e, 'host_id', '')
):
# this is one potential IntegrityError we can
# work around - if the host disappears before
# the event can be processed
e.host_id = None
e.save()
except Exception:
logger.exception('Database Error Saving Job Event')
for e in events:
emit_event_detail(e)
self.buff = {}
def perform_work(self, body):
try:
event_map = {
'job_id': JobEvent,
'ad_hoc_command_id': AdHocCommandEvent,
'project_update_id': ProjectUpdateEvent,
'inventory_update_id': InventoryUpdateEvent,
'system_job_id': SystemJobEvent,
}
flush = body.get('event') == 'FLUSH'
if not flush:
event_map = {
'job_id': JobEvent,
'ad_hoc_command_id': AdHocCommandEvent,
'project_update_id': ProjectUpdateEvent,
'inventory_update_id': InventoryUpdateEvent,
'system_job_id': SystemJobEvent,
}
if not any([key in body for key in event_map]):
raise Exception('Payload does not have a job identifier')
def _save_event_data():
job_identifier = 'unknown job'
for key, cls in event_map.items():
if key in body:
cls.create_from_data(**body)
job_identifier = body[key]
break
job_identifier = 'unknown job'
job_key = 'unknown'
for key in event_map.keys():
if key in body:
job_identifier = body[key]
job_key = key
break
if settings.DEBUG:
from pygments import highlight
from pygments.lexers import PythonLexer
from pygments.formatters import Terminal256Formatter
from pprint import pformat
if body.get('event') == 'EOF':
event_thing = 'EOF event'
else:
event_thing = 'event {}'.format(body.get('counter', 'unknown'))
logger.info('Callback worker received {} for {} {}'.format(
event_thing, job_key[:-len('_id')], job_identifier
))
logger.debug('Body: {}'.format(
highlight(pformat(body, width=160), PythonLexer(), Terminal256Formatter(style='friendly'))
)[:1024 * 4])
try:
final_counter = body.get('final_counter', 0)
logger.info('Event processing is finished for Job {}, sending notifications'.format(job_identifier))
# EOF events are sent when stdout for the running task is
# closed. don't actually persist them to the database; we
# just use them to report `summary` websocket events as an
# approximation for when a job is "done"
emit_channel_notification(
'jobs-summary',
dict(group_name='jobs', unified_job_id=job_identifier, final_counter=final_counter)
)
# Additionally, when we've processed all events, we should
# have all the data we need to send out success/failure
# notification templates
uj = UnifiedJob.objects.get(pk=job_identifier)
if body.get('event') == 'EOF':
try:
final_counter = body.get('final_counter', 0)
logger.info('Event processing is finished for Job {}, sending notifications'.format(job_identifier))
# EOF events are sent when stdout for the running task is
# closed. don't actually persist them to the database; we
# just use them to report `summary` websocket events as an
# approximation for when a job is "done"
emit_channel_notification(
'jobs-summary',
dict(group_name='jobs', unified_job_id=job_identifier, final_counter=final_counter)
)
# Additionally, when we've processed all events, we should
# have all the data we need to send out success/failure
# notification templates
uj = UnifiedJob.objects.get(pk=job_identifier)
if hasattr(uj, 'send_notification_templates'):
retries = 0
while retries < 5:
if uj.finished:
uj.send_notification_templates('succeeded' if uj.status == 'successful' else 'failed')
break
else:
# wait a few seconds to avoid a race where the
# events are persisted _before_ the UJ.status
# changes from running -> successful
retries += 1
time.sleep(1)
uj = UnifiedJob.objects.get(pk=job_identifier)
except Exception:
logger.exception('Worker failed to emit notifications: Job {}'.format(job_identifier))
return
if isinstance(uj, Job):
# *actual playbooks* send their success/failure
# notifications in response to the playbook_on_stats
# event handling code in main.models.events
pass
elif hasattr(uj, 'send_notification_templates'):
handle_success_and_failure_notifications.apply_async([uj.id])
except Exception:
logger.exception('Worker failed to emit notifications: Job {}'.format(job_identifier))
return
event = cls.create_from_data(**body)
self.buff.setdefault(cls, []).append(event)
retries = 0
while retries <= self.MAX_RETRIES:
try:
_save_event_data()
self.flush(force=flush)
break
except (OperationalError, InterfaceError, InternalError):
if retries >= self.MAX_RETRIES:
logger.exception('Worker could not re-establish database connectivity, giving up on event for Job {}'.format(job_identifier))
logger.exception('Worker could not re-establish database connectivity, giving up on one or more events.')
return
delay = 60 * retries
logger.exception('Database Error Saving Job Event, retry #{i} in {delay} seconds:'.format(
@@ -119,7 +172,7 @@ class CallbackBrokerWorker(BaseWorker):
time.sleep(delay)
retries += 1
except DatabaseError:
logger.exception('Database Error Saving Job Event for Job {}'.format(job_identifier))
logger.exception('Database Error Saving Job Event')
break
except Exception as exc:
tb = traceback.format_exc()

View File

@@ -4,6 +4,7 @@ import importlib
import sys
import traceback
from kubernetes.config import kube_config
from awx.main.tasks import dispatch_startup, inform_cluster_of_shutdown
@@ -107,6 +108,14 @@ class TaskWorker(BaseWorker):
for callback in body.get('errbacks', []) or []:
callback['uuid'] = body['uuid']
self.perform_work(callback)
finally:
# It's frustrating that we have to do this, but the python k8s
# client leaves behind cacert files in /tmp, so we must clean up
# the tmpdir per-dispatcher process every time a new task comes in
try:
kube_config._cleanup_temp_files()
except Exception:
logger.exception('failed to cleanup k8s client tmp files')
for callback in body.get('callbacks', []) or []:
callback['uuid'] = body['uuid']

View File

@@ -7,8 +7,8 @@ import json
import re
import urllib.parse
from jinja2 import Environment, StrictUndefined
from jinja2.exceptions import UndefinedError, TemplateSyntaxError
from jinja2 import sandbox, StrictUndefined
from jinja2.exceptions import UndefinedError, TemplateSyntaxError, SecurityError
# Django
from django.contrib.postgres.fields import JSONField as upstream_JSONBField
@@ -50,13 +50,14 @@ from awx.main.models.rbac import (
batch_role_ancestor_rebuilding, Role,
ROLE_SINGLETON_SYSTEM_ADMINISTRATOR, ROLE_SINGLETON_SYSTEM_AUDITOR
)
from awx.main.constants import ENV_BLACKLIST
from awx.main.constants import ENV_BLOCKLIST
from awx.main import utils
__all__ = ['AutoOneToOneField', 'ImplicitRoleField', 'JSONField',
'SmartFilterField', 'OrderedManyToManyField',
'update_role_parentage_for_instance', 'is_implicit_parent']
'update_role_parentage_for_instance',
'is_implicit_parent']
# Provide a (better) custom error message for enum jsonschema validation
@@ -140,8 +141,9 @@ def resolve_role_field(obj, field):
return []
if len(field_components) == 1:
role_cls = str(utils.get_current_apps().get_model('main', 'Role'))
if not str(type(obj)) == role_cls:
# use extremely generous duck typing to accomidate all possible forms
# of the model that may be used during various migrations
if obj._meta.model_name != 'role' or obj._meta.app_label != 'main':
raise Exception(smart_text('{} refers to a {}, not a Role'.format(field, type(obj))))
ret.append(obj.id)
else:
@@ -197,18 +199,27 @@ def update_role_parentage_for_instance(instance):
updates the parents listing for all the roles
of a given instance if they have changed
'''
parents_removed = set()
parents_added = set()
for implicit_role_field in getattr(instance.__class__, '__implicit_role_fields'):
cur_role = getattr(instance, implicit_role_field.name)
original_parents = set(json.loads(cur_role.implicit_parents))
new_parents = implicit_role_field._resolve_parent_roles(instance)
cur_role.parents.remove(*list(original_parents - new_parents))
cur_role.parents.add(*list(new_parents - original_parents))
removals = original_parents - new_parents
if removals:
cur_role.parents.remove(*list(removals))
parents_removed.add(cur_role.pk)
additions = new_parents - original_parents
if additions:
cur_role.parents.add(*list(additions))
parents_added.add(cur_role.pk)
new_parents_list = list(new_parents)
new_parents_list.sort()
new_parents_json = json.dumps(new_parents_list)
if cur_role.implicit_parents != new_parents_json:
cur_role.implicit_parents = new_parents_json
cur_role.save()
cur_role.save(update_fields=['implicit_parents'])
return (parents_added, parents_removed)
class ImplicitRoleDescriptor(ForwardManyToOneDescriptor):
@@ -256,20 +267,18 @@ class ImplicitRoleField(models.ForeignKey):
field_names = [field_names]
for field_name in field_names:
# Handle the OR syntax for role parents
if type(field_name) == tuple:
continue
if type(field_name) == bytes:
field_name = field_name.decode('utf-8')
if field_name.startswith('singleton:'):
continue
field_name, sep, field_attr = field_name.partition('.')
field = getattr(cls, field_name)
# Non existent fields will occur if ever a parent model is
# moved inside a migration, needed for job_template_organization_field
# migration in particular
# consistency is assured by unit test awx.main.tests.functional
field = getattr(cls, field_name, None)
if type(field) is ReverseManyToOneDescriptor or \
if field and type(field) is ReverseManyToOneDescriptor or \
type(field) is ManyToManyDescriptor:
if '.' in field_attr:
@@ -628,6 +637,14 @@ class CredentialInputField(JSONSchemaField):
else:
decrypted_values[k] = v
# don't allow secrets with $encrypted$ on new object creation
if not model_instance.pk:
for field in model_instance.credential_type.secret_fields:
if value.get(field) == '$encrypted$':
raise serializers.ValidationError({
self.name: [f'$encrypted$ is a reserved keyword, and cannot be used for {field}.']
})
super(JSONSchemaField, self).validate(decrypted_values, model_instance)
errors = {}
for error in Draft4Validator(
@@ -861,9 +878,9 @@ class CredentialTypeInjectorField(JSONSchemaField):
'use is not allowed in credentials.').format(env_var),
code='invalid', params={'value': env_var},
)
if env_var in ENV_BLACKLIST:
if env_var in ENV_BLOCKLIST:
raise django_exceptions.ValidationError(
_('Environment variable {} is blacklisted from use in credentials.').format(env_var),
_('Environment variable {} is not allowed to be used in credentials.').format(env_var),
code='invalid', params={'value': env_var},
)
@@ -923,7 +940,7 @@ class CredentialTypeInjectorField(JSONSchemaField):
self.validate_env_var_allowed(key)
for key, tmpl in injector.items():
try:
Environment(
sandbox.ImmutableSandboxedEnvironment(
undefined=StrictUndefined
).from_string(tmpl).render(valid_namespace)
except UndefinedError as e:
@@ -933,6 +950,10 @@ class CredentialTypeInjectorField(JSONSchemaField):
code='invalid',
params={'value': value},
)
except SecurityError as e:
raise django_exceptions.ValidationError(
_('Encountered unsafe code execution: {}').format(e)
)
except TemplateSyntaxError as e:
raise django_exceptions.ValidationError(
_('Syntax error rendering template for {sub_key} inside of {type} ({error_msg})').format(

View File

@@ -6,13 +6,15 @@ import stat
import tempfile
import time
import logging
import yaml
from django.conf import settings
import ansible_runner
import awx
from awx.main.utils import get_system_task_capacity
from awx.main.queue import CallbackQueueDispatcher
from awx.main.utils import (
get_system_task_capacity
)
logger = logging.getLogger('awx.isolated.manager')
playbook_logger = logging.getLogger('awx.isolated.manager.playbooks')
@@ -29,23 +31,50 @@ def set_pythonpath(venv_libdir, env):
class IsolatedManager(object):
def __init__(self, cancelled_callback=None, check_callback=None):
def __init__(self, event_handler, canceled_callback=None, check_callback=None, pod_manager=None):
"""
:param cancelled_callback: a callable - which returns `True` or `False`
:param event_handler: a callable used to persist event data from isolated nodes
:param canceled_callback: a callable - which returns `True` or `False`
- signifying if the job has been prematurely
cancelled
canceled
"""
self.cancelled_callback = cancelled_callback
self.event_handler = event_handler
self.canceled_callback = canceled_callback
self.check_callback = check_callback
self.idle_timeout = max(60, 2 * settings.AWX_ISOLATED_CONNECTION_TIMEOUT)
self.started_at = None
self.captured_command_artifact = False
self.instance = None
self.pod_manager = pod_manager
def build_inventory(self, hosts):
if self.instance and self.instance.is_containerized:
inventory = {'all': {'hosts': {}}}
fd, path = tempfile.mkstemp(
prefix='.kubeconfig', dir=self.private_data_dir
)
with open(path, 'wb') as temp:
temp.write(yaml.dump(self.pod_manager.kube_config).encode())
temp.flush()
os.chmod(temp.name, stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR)
for host in hosts:
inventory['all']['hosts'][host] = {
"ansible_connection": "community.kubernetes.kubectl",
"ansible_kubectl_config": path,
}
else:
inventory = '\n'.join([
'{} ansible_ssh_user={}'.format(host, settings.AWX_ISOLATED_USERNAME)
for host in hosts
])
return inventory
def build_runner_params(self, hosts, verbosity=1):
env = dict(os.environ.items())
env['ANSIBLE_RETRY_FILES_ENABLED'] = 'False'
env['ANSIBLE_HOST_KEY_CHECKING'] = 'False'
env['ANSIBLE_HOST_KEY_CHECKING'] = str(settings.AWX_ISOLATED_HOST_KEY_CHECKING)
env['ANSIBLE_LIBRARY'] = os.path.join(os.path.dirname(awx.__file__), 'plugins', 'isolated')
env['ANSIBLE_COLLECTIONS_PATHS'] = settings.AWX_ANSIBLE_COLLECTIONS_PATHS
set_pythonpath(os.path.join(settings.ANSIBLE_VENV_PATH, 'lib'), env)
def finished_callback(runner_obj):
@@ -69,25 +98,18 @@ class IsolatedManager(object):
else:
playbook_logger.info(runner_obj.stdout.read())
inventory = '\n'.join([
'{} ansible_ssh_user={}'.format(host, settings.AWX_ISOLATED_USERNAME)
for host in hosts
])
return {
'project_dir': os.path.abspath(os.path.join(
os.path.dirname(awx.__file__),
'playbooks'
)),
'inventory': inventory,
'inventory': self.build_inventory(hosts),
'envvars': env,
'finished_callback': finished_callback,
'verbosity': verbosity,
'cancel_callback': self.cancelled_callback,
'cancel_callback': self.canceled_callback,
'settings': {
'idle_timeout': self.idle_timeout,
'job_timeout': settings.AWX_ISOLATED_LAUNCH_TIMEOUT,
'pexpect_timeout': getattr(settings, 'PEXPECT_TIMEOUT', 5),
'suppress_ansible_output': True,
},
}
@@ -95,7 +117,7 @@ class IsolatedManager(object):
def path_to(self, *args):
return os.path.join(self.private_data_dir, *args)
def run_management_playbook(self, playbook, private_data_dir, **kw):
def run_management_playbook(self, playbook, private_data_dir, idle_timeout=None, **kw):
iso_dir = tempfile.mkdtemp(
prefix=playbook,
dir=private_data_dir
@@ -103,6 +125,10 @@ class IsolatedManager(object):
params = self.runner_params.copy()
params['playbook'] = playbook
params['private_data_dir'] = iso_dir
if idle_timeout:
params['settings']['idle_timeout'] = idle_timeout
else:
params['settings'].pop('idle_timeout', None)
params.update(**kw)
if all([
getattr(settings, 'AWX_ISOLATED_KEY_GENERATION', False) is True,
@@ -128,6 +154,8 @@ class IsolatedManager(object):
'- /artifacts/job_events/*-partial.json.tmp',
# don't rsync the ssh_key FIFO
'- /env/ssh_key',
# don't rsync kube config files
'- .kubeconfig*'
]
for filename, data in (
@@ -152,7 +180,14 @@ class IsolatedManager(object):
logger.debug('Starting job {} on isolated host with `run_isolated.yml` playbook.'.format(self.instance.id))
runner_obj = self.run_management_playbook('run_isolated.yml',
self.private_data_dir,
idle_timeout=max(60, 2 * settings.AWX_ISOLATED_CONNECTION_TIMEOUT),
extravars=extravars)
if runner_obj.status == 'failed':
self.instance.result_traceback = runner_obj.stdout.read()
self.instance.save(update_fields=['result_traceback'])
return 'error', runner_obj.rc
return runner_obj.status, runner_obj.rc
def check(self, interval=None):
@@ -174,16 +209,16 @@ class IsolatedManager(object):
status = 'failed'
rc = None
last_check = time.time()
dispatcher = CallbackQueueDispatcher()
while status == 'failed':
canceled = self.cancelled_callback() if self.cancelled_callback else False
canceled = self.canceled_callback() if self.canceled_callback else False
if not canceled and time.time() - last_check < interval:
# If the job isn't cancelled, but we haven't waited `interval` seconds, wait longer
# If the job isn't canceled, but we haven't waited `interval` seconds, wait longer
time.sleep(1)
continue
if canceled:
logger.warning('Isolated job {} was manually cancelled.'.format(self.instance.id))
logger.warning('Isolated job {} was manually canceled.'.format(self.instance.id))
logger.debug('Checking on isolated job {} with `check_isolated.yml`.'.format(self.instance.id))
runner_obj = self.run_management_playbook('check_isolated.yml',
@@ -203,7 +238,7 @@ class IsolatedManager(object):
except json.decoder.JSONDecodeError: # Just in case it's not fully here yet.
pass
self.consume_events(dispatcher)
self.consume_events()
last_check = time.time()
@@ -231,19 +266,11 @@ class IsolatedManager(object):
# consume events one last time just to be sure we didn't miss anything
# in the final sync
self.consume_events(dispatcher)
# emit an EOF event
event_data = {
'event': 'EOF',
'final_counter': len(self.handled_events)
}
event_data.setdefault(self.event_data_key, self.instance.id)
dispatcher.dispatch(event_data)
self.consume_events()
return status, rc
def consume_events(self, dispatcher):
def consume_events(self):
# discover new events and ingest them
events_path = self.path_to('artifacts', self.ident, 'job_events')
@@ -253,7 +280,7 @@ class IsolatedManager(object):
if os.path.exists(events_path):
for event in set(os.listdir(events_path)) - self.handled_events:
path = os.path.join(events_path, event)
if os.path.exists(path):
if os.path.exists(path) and os.path.isfile(path):
try:
event_data = json.load(
open(os.path.join(events_path, event), 'r')
@@ -267,19 +294,12 @@ class IsolatedManager(object):
# practice
# in this scenario, just ignore this event and try it
# again on the next sync
pass
event_data.setdefault(self.event_data_key, self.instance.id)
dispatcher.dispatch(event_data)
continue
self.event_handler(event_data)
self.handled_events.add(event)
# handle artifacts
if event_data.get('event_data', {}).get('artifact_data', {}):
self.instance.artifacts = event_data['event_data']['artifact_data']
self.instance.save(update_fields=['artifacts'])
def cleanup(self):
# If the job failed for any reason, make a last-ditch effort at cleanup
extravars = {
'private_data_dir': self.private_data_dir,
'cleanup_dirs': [
@@ -336,39 +356,37 @@ class IsolatedManager(object):
private_data_dir
)
if runner_obj.status == 'successful':
for instance in instance_qs:
task_result = {}
try:
task_result = runner_obj.get_fact_cache(instance.hostname)
except Exception:
logger.exception('Failed to read status from isolated instances')
if 'awx_capacity_cpu' in task_result and 'awx_capacity_mem' in task_result:
task_result = {
'cpu': task_result['awx_cpu'],
'mem': task_result['awx_mem'],
'capacity_cpu': task_result['awx_capacity_cpu'],
'capacity_mem': task_result['awx_capacity_mem'],
'version': task_result['awx_capacity_version']
}
IsolatedManager.update_capacity(instance, task_result)
logger.debug('Isolated instance {} successful heartbeat'.format(instance.hostname))
elif instance.capacity == 0:
logger.debug('Isolated instance {} previously marked as lost, could not re-join.'.format(
instance.hostname))
else:
logger.warning('Could not update status of isolated instance {}'.format(instance.hostname))
if instance.is_lost(isolated=True):
instance.capacity = 0
instance.save(update_fields=['capacity'])
logger.error('Isolated instance {} last checked in at {}, marked as lost.'.format(
instance.hostname, instance.modified))
for instance in instance_qs:
task_result = {}
try:
task_result = runner_obj.get_fact_cache(instance.hostname)
except Exception:
logger.exception('Failed to read status from isolated instances')
if 'awx_capacity_cpu' in task_result and 'awx_capacity_mem' in task_result:
task_result = {
'cpu': task_result['awx_cpu'],
'mem': task_result['awx_mem'],
'capacity_cpu': task_result['awx_capacity_cpu'],
'capacity_mem': task_result['awx_capacity_mem'],
'version': task_result['awx_capacity_version']
}
IsolatedManager.update_capacity(instance, task_result)
logger.debug('Isolated instance {} successful heartbeat'.format(instance.hostname))
elif instance.capacity == 0:
logger.debug('Isolated instance {} previously marked as lost, could not re-join.'.format(
instance.hostname))
else:
logger.warning('Could not update status of isolated instance {}'.format(instance.hostname))
if instance.is_lost(isolated=True):
instance.capacity = 0
instance.save(update_fields=['capacity'])
logger.error('Isolated instance {} last checked in at {}, marked as lost.'.format(
instance.hostname, instance.modified))
finally:
if os.path.exists(private_data_dir):
shutil.rmtree(private_data_dir)
def run(self, instance, private_data_dir, playbook, module, module_args,
event_data_key, ident=None):
def run(self, instance, private_data_dir, playbook, module, module_args, ident=None):
"""
Run a job on an isolated host.
@@ -379,26 +397,20 @@ class IsolatedManager(object):
:param playbook: the playbook to run
:param module: the module to run
:param module_args: the module args to use
:param event_data_key: e.g., job_id, inventory_id, ...
For a completed job run, this function returns (status, rc),
representing the status and return code of the isolated
`ansible-playbook` run.
"""
self.ident = ident
self.event_data_key = event_data_key
self.instance = instance
self.private_data_dir = private_data_dir
self.runner_params = self.build_runner_params(
[instance.execution_node],
verbosity=min(5, self.instance.verbosity)
)
status, rc = self.dispatch(playbook, module, module_args)
if status == 'successful':
status, rc = self.check()
else:
# emit an EOF event
event_data = {'event': 'EOF', 'final_counter': 0}
event_data.setdefault(self.event_data_key, self.instance.id)
CallbackQueueDispatcher().dispatch(event_data)
return status, rc

View File

@@ -0,0 +1,96 @@
from django.core.management.base import BaseCommand
from django.db import connection
from awx.main.models import JobTemplate
class Command(BaseCommand):
help = "Find the slowest tasks and hosts for a Job Template's most recent runs."
def add_arguments(self, parser):
parser.add_argument('--template', dest='jt', type=int,
help='ID of the Job Template to profile')
parser.add_argument('--threshold', dest='threshold', type=float, default=30,
help='Only show tasks that took at least this many seconds (defaults to 30)')
parser.add_argument('--history', dest='history', type=float, default=25,
help='The number of historic jobs to look at')
parser.add_argument('--ignore', action='append', help='ignore a specific action (e.g., --ignore git)')
def handle(self, *args, **options):
jt = options['jt']
threshold = options['threshold']
history = options['history']
ignore = options['ignore']
print('## ' + JobTemplate.objects.get(pk=jt).name + f' (last {history} runs)\n')
with connection.cursor() as cursor:
cursor.execute(
f'''
SELECT
b.id, b.job_id, b.host_name, b.created - a.created delta,
b.task task,
b.event_data::json->'task_action' task_action,
b.event_data::json->'task_path' task_path
FROM main_jobevent a JOIN main_jobevent b
ON b.parent_uuid = a.parent_uuid AND a.host_name = b.host_name
WHERE
a.event = 'runner_on_start' AND
b.event != 'runner_on_start' AND
b.event != 'runner_on_skipped' AND
b.failed = false AND
a.job_id IN (
SELECT unifiedjob_ptr_id FROM main_job
WHERE job_template_id={jt}
ORDER BY unifiedjob_ptr_id DESC
LIMIT {history}
)
ORDER BY delta DESC;
'''
)
slowest_events = cursor.fetchall()
def format_td(x):
return str(x).split('.')[0]
fastest = dict()
for event in slowest_events:
_id, job_id, host, duration, task, action, playbook = event
playbook = playbook.rsplit('/')[-1]
if ignore and action in ignore:
continue
if host:
fastest[(action, playbook)] = (_id, host, format_td(duration))
host_counts = dict()
warned = set()
print(f'slowest tasks (--threshold={threshold})\n---')
for event in slowest_events:
_id, job_id, host, duration, task, action, playbook = event
if ignore and action in ignore:
continue
if duration.total_seconds() < threshold:
break
playbook = playbook.rsplit('/')[-1]
human_duration = format_td(duration)
fastest_summary = ''
fastest_match = fastest.get((action, playbook))
if fastest_match[2] != human_duration and (host, action, playbook) not in warned:
warned.add((host, action, playbook))
fastest_summary = ' ' + self.style.WARNING(f'{fastest_match[1]} ran this in {fastest_match[2]}s at /api/v2/job_events/{fastest_match[0]}/')
url = f'/api/v2/jobs/{job_id}/'
print(' -- '.join([url, host, human_duration, action, task, playbook]) + fastest_summary)
host_counts.setdefault(host, [])
host_counts[host].append(duration)
host_counts = sorted(host_counts.items(), key=lambda item: [e.total_seconds() for e in item[1]], reverse=True)
print('\nslowest hosts\n---')
for h, matches in host_counts:
total = len(matches)
total_seconds = sum([e.total_seconds() for e in matches])
print(f'{h} had {total} tasks that ran longer than {threshold} second(s) for a total of {total_seconds}')
print('')

View File

@@ -0,0 +1,40 @@
import time
import sys
from django.db import connection
from django.core.management.base import BaseCommand
class Command(BaseCommand):
def handle(self, *args, **options):
with connection.cursor() as cursor:
start = {}
for relation in (
'main_jobevent', 'main_inventoryupdateevent',
'main_projectupdateevent', 'main_adhoccommandevent'
):
cursor.execute(f"SELECT MAX(id) FROM {relation};")
start[relation] = cursor.fetchone()[0] or 0
clear = False
while True:
lines = []
for relation in (
'main_jobevent', 'main_inventoryupdateevent',
'main_projectupdateevent', 'main_adhoccommandevent'
):
lines.append(relation)
minimum = start[relation]
cursor.execute(
f"SELECT MAX(id) - MIN(id) FROM {relation} WHERE id > {minimum} AND modified > now() - '1 minute'::interval;"
)
events = cursor.fetchone()[0] or 0
lines.append(f'↳ last minute {events}')
lines.append('')
if clear:
for i in range(12):
sys.stdout.write('\x1b[1A\x1b[2K')
for line in lines:
print(line)
clear = True
time.sleep(.25)

View File

@@ -0,0 +1,17 @@
# Copyright (c) 2015 Ansible, Inc.
# All Rights Reserved
from django.core.management.base import BaseCommand
from django.db import connection
class Command(BaseCommand):
"""Checks connection to the database, and prints out connection info if not connected"""
def handle(self, *args, **options):
with connection.cursor() as cursor:
cursor.execute("SELECT version()")
version = str(cursor.fetchone()[0])
return "Database Version: {}".format(version)

View File

@@ -16,13 +16,12 @@ from awx.main.models import (
Job, AdHocCommand, ProjectUpdate, InventoryUpdate,
SystemJob, WorkflowJob, Notification
)
from awx.main.signals import ( # noqa
emit_update_inventory_on_created_or_deleted,
emit_update_inventory_computed_fields,
from awx.main.signals import (
disable_activity_stream,
disable_computed_fields
)
from django.db.models.signals import post_save, post_delete, m2m_changed # noqa
from awx.main.management.commands.deletion import AWXCollector, pre_delete
class Command(BaseCommand):
@@ -60,27 +59,37 @@ class Command(BaseCommand):
action='store_true', dest='only_workflow_jobs',
help='Remove workflow jobs')
def cleanup_jobs(self):
#jobs_qs = Job.objects.exclude(status__in=('pending', 'running'))
#jobs_qs = jobs_qs.filter(created__lte=self.cutoff)
skipped, deleted = 0, 0
jobs = Job.objects.filter(created__lt=self.cutoff)
for job in jobs.iterator():
job_display = '"%s" (%d host summaries, %d events)' % \
(str(job),
job.job_host_summaries.count(), job.job_events.count())
if job.status in ('pending', 'waiting', 'running'):
action_text = 'would skip' if self.dry_run else 'skipping'
self.logger.debug('%s %s job %s', action_text, job.status, job_display)
skipped += 1
else:
action_text = 'would delete' if self.dry_run else 'deleting'
self.logger.info('%s %s', action_text, job_display)
if not self.dry_run:
job.delete()
deleted += 1
skipped += Job.objects.filter(created__gte=self.cutoff).count()
def cleanup_jobs(self):
skipped, deleted = 0, 0
batch_size = 1000000
while True:
# get queryset for available jobs to remove
qs = Job.objects.filter(created__lt=self.cutoff).exclude(status__in=['pending', 'waiting', 'running'])
# get pk list for the first N (batch_size) objects
pk_list = qs[0:batch_size].values_list('pk')
# You cannot delete queries with sql LIMIT set, so we must
# create a new query from this pk_list
qs_batch = Job.objects.filter(pk__in=pk_list)
just_deleted = 0
if not self.dry_run:
del_query = pre_delete(qs_batch)
collector = AWXCollector(del_query.db)
collector.collect(del_query)
_, models_deleted = collector.delete()
if models_deleted:
just_deleted = models_deleted['main.Job']
deleted += just_deleted
else:
just_deleted = 0 # break from loop, this is dry run
deleted = qs.count()
if just_deleted == 0:
break
skipped += (Job.objects.filter(created__gte=self.cutoff) | Job.objects.filter(status__in=['pending', 'waiting', 'running'])).count()
return skipped, deleted
def cleanup_ad_hoc_commands(self):

View File

@@ -0,0 +1,177 @@
from django.contrib.contenttypes.models import ContentType
from django.db.models.deletion import (
DO_NOTHING, Collector, get_candidate_relations_to_delete,
)
from collections import Counter, OrderedDict
from django.db import transaction
from django.db.models import sql
def bulk_related_objects(field, objs, using):
# This overrides the method in django.contrib.contenttypes.fields.py
"""
Return all objects related to ``objs`` via this ``GenericRelation``.
"""
return field.remote_field.model._base_manager.db_manager(using).filter(**{
"%s__pk" % field.content_type_field_name: ContentType.objects.db_manager(using).get_for_model(
field.model, for_concrete_model=field.for_concrete_model).pk,
"%s__in" % field.object_id_field_name: list(objs.values_list('pk', flat=True))
})
def pre_delete(qs):
# taken from .delete method in django.db.models.query.py
assert qs.query.can_filter(), \
"Cannot use 'limit' or 'offset' with delete."
if qs._fields is not None:
raise TypeError("Cannot call delete() after .values() or .values_list()")
del_query = qs._chain()
# The delete is actually 2 queries - one to find related objects,
# and one to delete. Make sure that the discovery of related
# objects is performed on the same database as the deletion.
del_query._for_write = True
# Disable non-supported fields.
del_query.query.select_for_update = False
del_query.query.select_related = False
del_query.query.clear_ordering(force_empty=True)
return del_query
class AWXCollector(Collector):
def add(self, objs, source=None, nullable=False, reverse_dependency=False):
"""
Add 'objs' to the collection of objects to be deleted. If the call is
the result of a cascade, 'source' should be the model that caused it,
and 'nullable' should be set to True if the relation can be null.
Return a list of all objects that were not already collected.
"""
if not objs.exists():
return objs
model = objs.model
self.data.setdefault(model, [])
self.data[model].append(objs)
# Nullable relationships can be ignored -- they are nulled out before
# deleting, and therefore do not affect the order in which objects have
# to be deleted.
if source is not None and not nullable:
if reverse_dependency:
source, model = model, source
self.dependencies.setdefault(
source._meta.concrete_model, set()).add(model._meta.concrete_model)
return objs
def add_field_update(self, field, value, objs):
"""
Schedule a field update. 'objs' must be a homogeneous iterable
collection of model instances (e.g. a QuerySet).
"""
if not objs.exists():
return
model = objs.model
self.field_updates.setdefault(model, {})
self.field_updates[model].setdefault((field, value), [])
self.field_updates[model][(field, value)].append(objs)
def collect(self, objs, source=None, nullable=False, collect_related=True,
source_attr=None, reverse_dependency=False, keep_parents=False):
"""
Add 'objs' to the collection of objects to be deleted as well as all
parent instances. 'objs' must be a homogeneous iterable collection of
model instances (e.g. a QuerySet). If 'collect_related' is True,
related objects will be handled by their respective on_delete handler.
If the call is the result of a cascade, 'source' should be the model
that caused it and 'nullable' should be set to True, if the relation
can be null.
If 'reverse_dependency' is True, 'source' will be deleted before the
current model, rather than after. (Needed for cascading to parent
models, the one case in which the cascade follows the forwards
direction of an FK rather than the reverse direction.)
If 'keep_parents' is True, data of parent model's will be not deleted.
"""
if hasattr(objs, 'polymorphic_disabled'):
objs.polymorphic_disabled = True
if self.can_fast_delete(objs):
self.fast_deletes.append(objs)
return
new_objs = self.add(objs, source, nullable,
reverse_dependency=reverse_dependency)
if not new_objs.exists():
return
model = new_objs.model
if not keep_parents:
# Recursively collect concrete model's parent models, but not their
# related objects. These will be found by meta.get_fields()
concrete_model = model._meta.concrete_model
for ptr in concrete_model._meta.parents.keys():
if ptr:
parent_objs = ptr.objects.filter(pk__in = new_objs.values_list('pk', flat=True))
self.collect(parent_objs, source=model,
collect_related=False,
reverse_dependency=True)
if collect_related:
parents = model._meta.parents
for related in get_candidate_relations_to_delete(model._meta):
# Preserve parent reverse relationships if keep_parents=True.
if keep_parents and related.model in parents:
continue
field = related.field
if field.remote_field.on_delete == DO_NOTHING:
continue
related_qs = self.related_objects(related, new_objs)
if self.can_fast_delete(related_qs, from_field=field):
self.fast_deletes.append(related_qs)
elif related_qs:
field.remote_field.on_delete(self, field, related_qs, self.using)
for field in model._meta.private_fields:
if hasattr(field, 'bulk_related_objects'):
# It's something like generic foreign key.
sub_objs = bulk_related_objects(field, new_objs, self.using)
self.collect(sub_objs, source=model, nullable=True)
def delete(self):
self.sort()
# collect pk_list before deletion (once things start to delete
# queries might not be able to retreive pk list)
del_dict = OrderedDict()
for model, instances in self.data.items():
del_dict.setdefault(model, [])
for inst in instances:
del_dict[model] += list(inst.values_list('pk', flat=True))
deleted_counter = Counter()
with transaction.atomic(using=self.using, savepoint=False):
# update fields
for model, instances_for_fieldvalues in self.field_updates.items():
for (field, value), instances in instances_for_fieldvalues.items():
for inst in instances:
query = sql.UpdateQuery(model)
query.update_batch(inst.values_list('pk', flat=True),
{field.name: value}, self.using)
# fast deletes
for qs in self.fast_deletes:
count = qs._raw_delete(using=self.using)
deleted_counter[qs.model._meta.label] += count
# delete instances
for model, pk_list in del_dict.items():
query = sql.DeleteQuery(model)
count = query.delete_batch(pk_list, self.using)
deleted_counter[model._meta.label] += count
return sum(deleted_counter.values()), dict(deleted_counter)

View File

@@ -1,8 +1,6 @@
# Copyright (c) 2016 Ansible, Inc.
# All Rights Reserved
import subprocess
from django.db import transaction
from django.core.management.base import BaseCommand, CommandError
@@ -33,18 +31,9 @@ class Command(BaseCommand):
with advisory_lock('instance_registration_%s' % hostname):
instance = Instance.objects.filter(hostname=hostname)
if instance.exists():
isolated = instance.first().is_isolated()
instance.delete()
print("Instance Removed")
if isolated:
print('Successfully deprovisioned {}'.format(hostname))
else:
result = subprocess.Popen("rabbitmqctl forget_cluster_node rabbitmq@{}".format(hostname), shell=True).wait()
if result != 0:
print("Node deprovisioning may have failed when attempting to "
"remove the RabbitMQ instance {} from the cluster".format(hostname))
else:
print('Successfully deprovisioned {}'.format(hostname))
print('Successfully deprovisioned {}'.format(hostname))
print('(changed: True)')
else:
print('No instance found matching name {}'.format(hostname))

View File

@@ -11,8 +11,10 @@ class Command(BaseCommand):
help = 'Gather AWX analytics data'
def add_arguments(self, parser):
parser.add_argument('--dry-run', dest='dry-run', action='store_true',
help='Gather analytics without shipping. Works even if analytics are disabled in settings.')
parser.add_argument('--ship', dest='ship', action='store_true',
help='Enable to ship metrics via insights-client')
help='Enable to ship metrics to the Red Hat Cloud')
def init_logging(self):
self.logger = logging.getLogger('awx.main.analytics')
@@ -23,9 +25,14 @@ class Command(BaseCommand):
self.logger.propagate = False
def handle(self, *args, **options):
tgz = gather(collection_type='manual')
self.init_logging()
opt_ship = options.get('ship')
opt_dry_run = options.get('dry-run')
if opt_ship and opt_dry_run:
self.logger.error('Both --ship and --dry-run cannot be processed at the same time.')
return
tgz = gather(collection_type='manual' if not opt_dry_run else 'dry-run')
if tgz:
self.logger.debug(tgz)
if options.get('ship'):
if opt_ship:
ship(tgz)

View File

@@ -28,6 +28,7 @@ from awx.main.models.inventory import (
Host
)
from awx.main.utils.mem_inventory import MemInventory, dict_to_mem_data
from awx.main.utils.safe_yaml import sanitize_jinja
# other AWX imports
from awx.main.models.rbac import batch_role_ancestor_rebuilding
@@ -168,7 +169,7 @@ class AnsibleInventoryLoader(object):
self.tmp_private_dir = build_proot_temp_dir()
logger.debug("Using fresh temporary directory '{}' for isolation.".format(self.tmp_private_dir))
kwargs['proot_temp_dir'] = self.tmp_private_dir
kwargs['proot_show_paths'] = [functioning_dir(self.source)]
kwargs['proot_show_paths'] = [functioning_dir(self.source), settings.AWX_ANSIBLE_COLLECTIONS_PATHS]
logger.debug("Running from `{}` working directory.".format(cwd))
if self.venv_path != settings.ANSIBLE_VENV_PATH:
@@ -270,7 +271,7 @@ class Command(BaseCommand):
logging.DEBUG, 0]))
logger.setLevel(log_levels.get(self.verbosity, 0))
def _get_instance_id(self, from_dict, default=''):
def _get_instance_id(self, variables, default=''):
'''
Retrieve the instance ID from the given dict of host variables.
@@ -278,15 +279,23 @@ class Command(BaseCommand):
the lookup will traverse into nested dicts, equivalent to:
from_dict.get('foo', {}).get('bar', default)
Multiple ID variables may be specified as 'foo.bar,foobar', so that
it will first try to find 'bar' inside of 'foo', and if unable,
will try to find 'foobar' as a fallback
'''
instance_id = default
if getattr(self, 'instance_id_var', None):
for key in self.instance_id_var.split('.'):
if not hasattr(from_dict, 'get'):
instance_id = default
for single_instance_id in self.instance_id_var.split(','):
from_dict = variables
for key in single_instance_id.split('.'):
if not hasattr(from_dict, 'get'):
instance_id = default
break
instance_id = from_dict.get(key, default)
from_dict = instance_id
if instance_id:
break
instance_id = from_dict.get(key, default)
from_dict = instance_id
return smart_text(instance_id)
def _get_enabled(self, from_dict, default=None):
@@ -421,7 +430,7 @@ class Command(BaseCommand):
for mem_host in self.all_group.all_hosts.values():
instance_id = self._get_instance_id(mem_host.variables)
if not instance_id:
logger.warning('Host "%s" has no "%s" variable',
logger.warning('Host "%s" has no "%s" variable(s)',
mem_host.name, self.instance_id_var)
continue
mem_host.instance_id = instance_id
@@ -495,12 +504,6 @@ class Command(BaseCommand):
group_names = all_group_names[offset:(offset + self._batch_size)]
for group_pk in groups_qs.filter(name__in=group_names).values_list('pk', flat=True):
del_group_pks.discard(group_pk)
if self.inventory_source.deprecated_group_id in del_group_pks: # TODO: remove in 3.3
logger.warning(
'Group "%s" from v1 API is not deleted by overwrite',
self.inventory_source.deprecated_group.name
)
del_group_pks.discard(self.inventory_source.deprecated_group_id)
# Now delete all remaining groups in batches.
all_del_pks = sorted(list(del_group_pks))
for offset in range(0, len(all_del_pks), self._batch_size):
@@ -533,12 +536,6 @@ class Command(BaseCommand):
# Set of all host pks managed by this inventory source
all_source_host_pks = self._existing_host_pks()
for db_group in db_groups.all():
if self.inventory_source.deprecated_group_id == db_group.id: # TODO: remove in 3.3
logger.debug(
'Group "%s" from v1 API child group/host connections preserved',
db_group.name
)
continue
# Delete child group relationships not present in imported data.
db_children = db_group.children
db_children_name_pk_map = dict(db_children.values_list('name', 'pk'))
@@ -660,11 +657,12 @@ class Command(BaseCommand):
if group_name in existing_group_names:
continue
mem_group = self.all_group.all_groups[group_name]
group_desc = mem_group.variables.pop('_awx_description', 'imported')
group = self.inventory.groups.update_or_create(
name=group_name,
defaults={
'variables':json.dumps(mem_group.variables),
'description':'imported'
'description':group_desc
}
)[0]
logger.debug('Group "%s" added', group.name)
@@ -787,14 +785,19 @@ class Command(BaseCommand):
# Create any new hosts.
for mem_host_name in sorted(mem_host_names_to_update):
mem_host = self.all_group.all_hosts[mem_host_name]
host_attrs = dict(variables=json.dumps(mem_host.variables),
description='imported')
import_vars = mem_host.variables
host_desc = import_vars.pop('_awx_description', 'imported')
host_attrs = dict(variables=json.dumps(import_vars), description=host_desc)
enabled = self._get_enabled(mem_host.variables)
if enabled is not None:
host_attrs['enabled'] = enabled
if self.instance_id_var:
instance_id = self._get_instance_id(mem_host.variables)
host_attrs['instance_id'] = instance_id
try:
sanitize_jinja(mem_host_name)
except ValueError as e:
raise ValueError(str(e) + ': {}'.format(mem_host_name))
db_host = self.inventory.hosts.update_or_create(name=mem_host_name, defaults=host_attrs)[0]
if enabled is False:
logger.debug('Host "%s" added (disabled)', mem_host_name)
@@ -916,10 +919,14 @@ class Command(BaseCommand):
available_instances = license_info.get('available_instances', 0)
free_instances = license_info.get('free_instances', 0)
time_remaining = license_info.get('time_remaining', 0)
hard_error = license_info.get('trial', False) is True or license_info['instance_count'] == 10
new_count = Host.objects.active_count()
if time_remaining <= 0 and not license_info.get('demo', False):
logger.error(LICENSE_EXPIRED_MESSAGE)
raise CommandError("License has expired!")
if time_remaining <= 0:
if hard_error:
logger.error(LICENSE_EXPIRED_MESSAGE)
raise CommandError("License has expired!")
else:
logger.warning(LICENSE_EXPIRED_MESSAGE)
# special check for tower-type inventory sources
# but only if running the plugin
TOWER_SOURCE_FILES = ['tower.yml', 'tower.yaml']
@@ -932,11 +939,11 @@ class Command(BaseCommand):
'new_count': new_count,
'available_instances': available_instances,
}
if license_info.get('demo', False):
logger.error(DEMO_LICENSE_MESSAGE % d)
else:
if hard_error:
logger.error(LICENSE_MESSAGE % d)
raise CommandError('License count exceeded!')
raise CommandError('License count exceeded!')
else:
logger.warning(LICENSE_MESSAGE % d)
def check_org_host_limit(self):
license_info = get_licenser().validate()
@@ -997,12 +1004,6 @@ class Command(BaseCommand):
except re.error:
raise CommandError('invalid regular expression for --host-filter')
'''
TODO: Remove this deprecation when we remove support for rax.py
'''
if self.source == "rax.py":
logger.info("Rackspace inventory sync is Deprecated in Tower 3.1.0 and support for Rackspace will be removed in a future release.")
begin = time.time()
self.load_inventory_from_database()
@@ -1087,7 +1088,7 @@ class Command(BaseCommand):
if settings.SQL_DEBUG:
logger.warning('update computed fields took %d queries',
len(connection.queries) - queries_before2)
# Check if the license is valid.
# Check if the license is valid.
# If the license is not valid, a CommandError will be thrown,
# and inventory update will be marked as invalid.
# with transaction.atomic() will roll back the changes.

View File

@@ -19,3 +19,7 @@ class Command(BaseCommand):
profile_sql.delay(
threshold=options['threshold'], minutes=options['minutes']
)
print(f"Logging initiated with a threshold of {options['threshold']} second(s) and a duration of"
f" {options['minutes']} minute(s), any queries that meet criteria can"
f" be found in /var/log/tower/profile/."
)

View File

@@ -1,6 +1,8 @@
# Copyright (c) 2015 Ansible, Inc.
# All Rights Reserved
from uuid import uuid4
from awx.main.models import Instance
from django.conf import settings
@@ -22,6 +24,8 @@ class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument('--hostname', dest='hostname', type=str,
help='Hostname used during provisioning')
parser.add_argument('--is-isolated', dest='is_isolated', action='store_true',
help='Specify whether the instance is isolated')
def _register_hostname(self, hostname):
if not hostname:
@@ -37,7 +41,10 @@ class Command(BaseCommand):
def handle(self, **options):
if not options.get('hostname'):
raise CommandError("Specify `--hostname` to use this command.")
self.uuid = settings.SYSTEM_UUID
if options['is_isolated']:
self.uuid = str(uuid4())
else:
self.uuid = settings.SYSTEM_UUID
self.changed = False
self._register_hostname(options.get('hostname'))
if self.changed:

View File

@@ -0,0 +1,129 @@
import base64
import json
import os
from django.core.management.base import BaseCommand
from django.conf import settings
from django.db import transaction
from django.db.models.signals import post_save
from awx.conf import settings_registry
from awx.conf.models import Setting
from awx.conf.signals import on_post_save_setting
from awx.main.models import (
UnifiedJob, Credential, NotificationTemplate, Job, JobTemplate, WorkflowJob,
WorkflowJobTemplate, OAuth2Application
)
from awx.main.utils.encryption import (
encrypt_field, decrypt_field, encrypt_value, decrypt_value, get_encryption_key
)
class Command(BaseCommand):
"""
Regenerate a new SECRET_KEY value and re-encrypt every secret in the
Tower database.
"""
@transaction.atomic
def handle(self, **options):
self.old_key = settings.SECRET_KEY
self.new_key = base64.encodebytes(os.urandom(33)).decode().rstrip()
self._notification_templates()
self._credentials()
self._unified_jobs()
self._oauth2_app_secrets()
self._settings()
self._survey_passwords()
return self.new_key
def _notification_templates(self):
for nt in NotificationTemplate.objects.iterator():
CLASS_FOR_NOTIFICATION_TYPE = dict([(x[0], x[2]) for x in NotificationTemplate.NOTIFICATION_TYPES])
notification_class = CLASS_FOR_NOTIFICATION_TYPE[nt.notification_type]
for field in filter(lambda x: notification_class.init_parameters[x]['type'] == "password",
notification_class.init_parameters):
nt.notification_configuration[field] = decrypt_field(nt, 'notification_configuration', subfield=field, secret_key=self.old_key)
nt.notification_configuration[field] = encrypt_field(nt, 'notification_configuration', subfield=field, secret_key=self.new_key)
nt.save()
def _credentials(self):
for credential in Credential.objects.iterator():
for field_name in credential.credential_type.secret_fields:
if field_name in credential.inputs:
credential.inputs[field_name] = decrypt_field(
credential,
field_name,
secret_key=self.old_key
)
credential.inputs[field_name] = encrypt_field(
credential,
field_name,
secret_key=self.new_key
)
credential.save()
def _unified_jobs(self):
for uj in UnifiedJob.objects.iterator():
if uj.start_args:
uj.start_args = decrypt_field(
uj,
'start_args',
secret_key=self.old_key
)
uj.start_args = encrypt_field(uj, 'start_args', secret_key=self.new_key)
uj.save()
def _oauth2_app_secrets(self):
for app in OAuth2Application.objects.iterator():
raw = app.client_secret
app.client_secret = raw
encrypted = encrypt_value(raw, secret_key=self.new_key)
OAuth2Application.objects.filter(pk=app.pk).update(client_secret=encrypted)
def _settings(self):
# don't update the cache, the *actual* value isn't changing
post_save.disconnect(on_post_save_setting, sender=Setting)
for setting in Setting.objects.filter().order_by('pk'):
if settings_registry.is_setting_encrypted(setting.key):
setting.value = decrypt_field(setting, 'value', secret_key=self.old_key)
setting.value = encrypt_field(setting, 'value', secret_key=self.new_key)
setting.save()
def _survey_passwords(self):
for _type in (JobTemplate, WorkflowJobTemplate):
for jt in _type.objects.exclude(survey_spec={}):
changed = False
if jt.survey_spec.get('spec', []):
for field in jt.survey_spec['spec']:
if field.get('type') == 'password' and field.get('default', ''):
raw = decrypt_value(
get_encryption_key('value', None, secret_key=self.old_key),
field['default']
)
field['default'] = encrypt_value(
raw,
pk=None,
secret_key=self.new_key
)
changed = True
if changed:
jt.save(update_fields=["survey_spec"])
for _type in (Job, WorkflowJob):
for job in _type.objects.exclude(survey_passwords={}).iterator():
changed = False
for key in job.survey_passwords:
if key in job.extra_vars:
extra_vars = json.loads(job.extra_vars)
if not extra_vars.get(key):
continue
raw = decrypt_value(
get_encryption_key('value', None, secret_key=self.old_key),
extra_vars[key]
)
extra_vars[key] = encrypt_value(raw, pk=None, secret_key=self.new_key)
job.extra_vars = json.dumps(extra_vars)
changed = True
if changed:
job.save(update_fields=["extra_vars"])

Some files were not shown because too many files have changed in this diff Show More