Commit Graph

277 Commits

Author SHA1 Message Date
Chris Meyers
203df91a5d more robust test mode checking 2016-10-03 09:28:44 -04:00
Chris Meyers
dd3c3c9f29 Merge branch 'feature-ha_task_manager' into devel 2016-09-29 10:27:17 -04:00
Chris Meyers
d65120538d scheduler messages need not be durable 2016-09-27 16:05:30 -04:00
Chris Meyers
04f69727f2 fully message driven job execution
TODO:
* Need a distributed lock (leverage postgres)
* Less memory-intensive graph representation
* Maybe serializer/deserializer graph to database
  * Iterative graph building instead of full rebuild.
2016-09-27 14:16:18 -04:00
Chris Meyers
cdb65ccac9 replace task manager with event driven scheduler 2016-09-27 14:16:18 -04:00
Chris Meyers
cc90204b0f task manager using messages
* First pass, adapt singleton task manager to process messages and run
jobs based on events instead of a busy loop.
* Still need to make message handing run in celery, not in a consumption
loop
2016-09-27 14:05:29 -04:00
Chris Church
6ebe45b1bd Configure Tower in Tower:
* Add separate Django app for configuration: awx.conf.
* Migrate from existing main.TowerSettings model to conf.Setting.
* Add settings wrapper to allow get/set/del via django.conf.settings.
* Update existing references to tower_settings to use django.conf.settings.
* Add a settings registry to allow for each Django app to register configurable settings.
* Support setting validation and conversion using Django REST Framework fields.
* Add /api/v1/settings/ to display a list of setting categories.
* Add /api/v1/settings/<slug>/ to display all settings in a category as a single object.
* Allow PUT/PATCH to update setting singleton, DELETE to reset to defaults.
* Add "all" category to display all settings across categories.
* Add "changed" category to display only settings configured in the database.
* Support per-user settings via "user" category (/api/v1/settings/user/).
* Support defaults for user settings via "user-defaults" category (/api/v1/settings/user-defaults/).
* Update serializer metadata to support category, category_slug and placeholder on OPTIONS responses.
* Update serializer metadata to handle child fields of a list/dict.
* Hide raw data form in browsable API for OPTIONS and DELETE.
* Combine existing licensing code into single "TaskEnhancer" class.
* Move license helper functions from awx.api.license into awx.conf.license.
* Update /api/v1/config/ to read/verify/update license using TaskEnhancer and settings wrapper.
* Add support for caching settings accessed via settings wrapper.
* Invalidate cached settings when Setting model changes or is deleted.
* Preload all database settings into cache on first access via settings wrapper.
* Add support for read-only settings than can update their value depending on other settings.
* Use setting_changed signal whenever a setting changes.
* Register configurable authentication, jobs, system and ui settings.
* Register configurable LDAP, RADIUS and social auth settings.
* Add custom fields and validators for URL, LDAP, RADIUS and social auth settings.
* Rewrite existing validator for Credential ssh_private_key to support validating private keys, certs or combinations of both.
* Get all unit/functional tests working with above changes.
* Add "migrate_to_database_settings" command to determine settings to be migrated into the database and comment them out when set in Python settings files.
* Add support for migrating license key from file to database.
* Remove database-configuable settings from local_settings.py example files.
* Update setup role to no longer install files for database-configurable settings.

f 94ff6ee More settings work.
f af4c4e0 Even more db settings stuff.
f 96ea9c0 More settings, attempt at singleton serializer for settings.
f 937c760 More work on singleton/category views in API, add code to comment out settings in Python files, work on command to migrate settings to database.
f 425b0d3 Minor fixes for sprint demo.
f ea402a4 Add support for read-only settings, cleanup license engine, get license support working with DB settings.
f ec289e4 Rename migration, minor fixmes, update setup role.
f 603640b Rewrite key/cert validator, finish adding social auth fields, hook up signals for setting_changed, use None to imply a setting is not set.
f 67d1b5a Get functional/unit tests passing.
f 2919b62 Flake8 fixes.
f e62f421 Add redbaron to requirements, get file to database migration working (except for license).
f c564508 Add support for migrating license file.
f 982f767 Add support for regex in social map fields.
2016-09-26 22:14:47 -04:00
Matthew Jones
f3a8eb9daf Merge pull request #3509 from ansible/ha_installer
Improvements to the setup/installer to support new HA workflows
2016-09-16 15:53:38 -04:00
Matthew Jones
d8ea0920c5 Update configuration and playbook for rabbitmq
* Purge remaining zeromq settings
* Make sure we have CALLBACK_QUEUE defined where needed
* Update setup playbook to not be tied to old ha primary/secondary concept
2016-09-16 11:35:46 -04:00
Matthew Jones
3de4aae548 Fixing up HA induced flake8 issues 2016-09-15 13:51:17 -04:00
Chris Meyers
bf3c68d8b4 Merge pull request #3497 from chrismeyersfsu/fix-flake8_deps
Fix flake8 deps
2016-09-15 13:33:41 -04:00
Chris Meyers
f06b212266 flake8 fixes 2016-09-15 10:25:36 -04:00
Matthew Jones
f5d2c5c18a Merge branch 'ramparts_and_ha' into devel
* ramparts_and_ha: (21 commits)
  Rename database migrations for devel integration
  Integrate callback receiver refactoring
  Fix an issue running jobs in the cluster
  Implement a more dynamic celery queue system
  Purge old munin monitors and tools
  Refactor Tower HA Instance logic and models
  Docker compose improvements
  Initial Docker Compose workflow for Tower cluster
  Add memcached role for setup playbook
  Removing qpid from deb packaging
  Refactor rabbitmq role
  Integrate memcached into setup playbook
  Remove mongodb shutdown task
  Remove dependency on erlang_sd_notify
  Add initial rabbitmq role
  Initial rabbitmq setup playbook integration
  Update development environment for rabbit
  Replace qpid with rabbitmq
  Remove redis role from setup playbook
  Update qpid packaging, remove migrations
  ...
2016-09-15 10:19:57 -04:00
Matthew Jones
ab395b0009 Integrate callback receiver refactoring
* Drop ZMQ as the communication mechanism between job_event_callback and
  callback_receiver
* Setup queue and exchange for callback broker communication
* Refactor event plugin and callback receiver to efficiently handle
  message submission and processing
* Integrate django caching for parent processing
2016-09-14 11:42:13 -04:00
Matthew Jones
799f321760 Fix an issue running jobs in the cluster
The old VENV_PATH settings were still in place
2016-09-12 10:43:40 -04:00
Matthew Jones
988bbc4f4f Purge more qpid configuration 2016-09-12 09:50:42 -04:00
Matthew Jones
807cced571 Implement a more dynamic celery queue system
* Meant to be a starting point to more efficiently manage work routing
  and to balance work across all tower nodes
* Integrate flower as a dev tool that starts alongside other nodes.
  Helpful for observing and monitoring the queues/exchanges
* For the moment, force the task manager to only run on one node (not
  sure if this is needed)
* Define queues and routes for all task work
* Bump celery version to 3.1.23
* Expose flower through haproxy
2016-09-09 15:18:18 -04:00
Matthew Jones
0c1e1fa2fb Refactor Tower HA Instance logic and models
* Gut the HA middleware
* Purge concept of primary and secondary.
* UUID is not the primary host identifier, now it's based mostly on the
  username.  Some work probably still left to do to make sure this is
  legit.  Also removed unique constraint from the uuid field.  This
  might become the cluster ident now... or it may just deprecate
* No more secondary -> primary redirection
* Initial revision of /api/v1/ping
* Revise and gut tower-manage register_instance
* Rename awx/main/socket.py to awx/main/socket_queue.py to prevent
  conflict with the "socket" module from python base
* Revist/gut the Instance manager... not sure if this manager is really
  needed anymore
2016-09-08 13:37:53 -04:00
Matthew Jones
ebf103f345 Initial Docker Compose workflow for Tower cluster
The goal is to share a common pattern with the existing development work
2016-09-08 10:18:14 -04:00
Leigh Johnson
6d643ca339 Add uncached template loaders to development settings 2016-09-07 15:47:50 -04:00
Matthew Jones
27ab6705e7 Merge branch 'ramparts_and_ha' into devel
* ramparts_and_ha:
  Removing qpid from deb packaging
  Refactor rabbitmq role
  Integrate memcached into setup playbook
  Remove mongodb shutdown task
  Remove dependency on erlang_sd_notify
  Add initial rabbitmq role
  Initial rabbitmq setup playbook integration
  Update development environment for rabbit
  Replace qpid with rabbitmq
  Remove redis role from setup playbook
  Update qpid packaging, remove migrations
  Integrate packaging for qpid/memcached
2016-09-06 09:47:11 -04:00
Alan Rominger
2fada7a6ad fix flake8 2016-09-01 15:34:06 -04:00
Chris Meyers
ac2f0bdf57 handle mime svg in devel 2016-09-01 12:53:26 -04:00
Matthew Jones
f3b7fe18ce Integrate memcached into setup playbook 2016-09-01 11:41:20 -04:00
Matthew Jones
f0b7622672 Update development environment for rabbit 2016-08-31 14:47:20 -04:00
Matthew Jones
116e40dbe7 Fix some venv issues related to the new dev env 2016-08-30 14:21:11 -04:00
Matthew Jones
dcb4959443 Initial qpid development work
* Switch base tower devel image from u14.04 to c7
* Switch container image to build python dependencies into itself
  instead of forcing it to be built on startup
* Upgrade venv pip to 8.1.2
* Neuter queue.py which was heavily tied to redis and was basically
  orphaned code
* Alter local_settings to override default cache settings and use
  memcached
* Alter local settings to refer to qpid instead of redis for celery
  broker
* Purge redis python dependencies and add qpid and memcached
* Update docker-compose to purge redis and add qpid and memcached
2016-08-24 16:23:47 -04:00
Matthew Jones
8893f8278a Merge branch 'release_3.0.2' into devel
* release_3.0.2: (126 commits)
  Disable permissions tab in Credential > Edit form if Credential is private (#3288)
  Tweaked the popover text for job and skip tags on JT add/edit
  Workaround a cascade setnull polymorphic issue
  flake8
  Fixed old test expectations
  Made it so the credential organization field can't be changed
  Skip some unit tests
  Fixed org auditor visibility of team credentials
  Fix sosreport
  fix credential kind options for list
  interpret any code below 300 as success
  bail when status code is over 300
  Make CloudForms inventory_script work
  Use no_log when handling passwords
  Prevent ignored task from being displayed as failing.
  making ec2 cred optional on group->edit
  making ec2 credential optional for ec2 inventory
  Revert "Fix to ensure org auditors can see team credentials"
  Fixed team credential list to work with corrected permissions
  Making the username and password fields optional
  ...
2016-08-18 22:52:55 -04:00
James Laska
ee66fd4aa5 Make CloudForms inventory_script work
Fixes a few flake8 issues while at it.
2016-08-11 18:50:42 -04:00
Chris Church
0687168e5e Don't use Redis as cache when running tests. 2016-08-08 11:58:54 -04:00
Chris Church
891e06d6ef Add config for using Redis as cache, add memoize function to store results in cache. 2016-08-08 11:58:54 -04:00
James Laska
f53a1b8f6c Use foreman.id instead
foreman.uuid isn't always present
2016-07-27 10:18:31 -04:00
James Laska
11d68d1ebe Complete Sat6 integration
Various fixes to get sat-6 integration working.

* inventory_import.py - the inventory script is called foreman.py
* tasks.py - be sure to call `add_section()` before using it
* defaults.py - Add various SATELLITE6_* enablement variables

Relates #3119
2016-07-25 15:13:39 -04:00
Wayne Witzel III
81c4a82db8 fix issue with rbac_migrations logger 2016-07-25 11:22:50 -04:00
Chris Meyers
a1b29d8f4b Merge pull request #3087 from chrismeyersfsu/fix-migration_log
log migration to standard tower log dir
2016-07-22 13:10:42 -04:00
Chris Meyers
e5b031e533 use existing logging infrastructure 2016-07-22 12:52:25 -04:00
Chris Meyers
c42af3c61a forgot to remove label cleanup periodic task 2016-07-22 10:33:30 -04:00
AlanCoding
06c37d39ef Make development environment use ATOMIC_REQUESTS 2016-07-14 14:43:25 -04:00
Akita Noek
b57739a800 Converted except T,e expressions to except T as e 2016-06-27 15:12:37 -04:00
Matthew Jones
79cbd68a13 Rev boto and add ap-northeast-2 to ec2 regions 2016-06-01 14:22:08 -04:00
Chris Meyers
ae73be12f1 remove statsd 2016-05-10 11:56:04 -04:00
Matthew Jones
6cece17024 Purge cleanup_deleted tasks as they aren't needed
This also adds a periodic static task to cleanup auth tokens
2016-05-05 16:04:36 -04:00
Matthew Jones
e5bebf7b51 Change docker project default directory 2016-05-05 11:04:53 -04:00
Matthew Jones
da7a61354a Merge pull request #1635 from matburt/new_azure_inventory_and_credentials
Implement Azure RM creds and inventory
2016-04-21 14:38:13 -04:00
Matthew Jones
296f70ce17 Implement Azure RM creds and inventory
* Vendor ansible's azure_rm inventory script
* Add new inventory type
* Add new credential type
* Expand host instance_id column from varchar 100 to 1024 to accept the
  long instance ids returned by Azure
* Make the inventory_import azure match rename more explicit.
2016-04-21 13:51:30 -04:00
AlanCoding
ca682fb362 remove connection error in fresh install, mongo setting in dev environment 2016-04-20 10:15:06 -04:00
Matthew Jones
6f79ec8830 Revert "Merge pull request #1534 from chrismeyersfsu/fix-config_performance"
This reverts commit 7cc144fa59f157a5e1789a913e0d9a31720141ec, reversing
changes made to 86af9950e754b06f40cb293a36ab365f589273db.
2016-04-14 11:40:07 -04:00
Chris Meyers
043f97fe35 fixes config endpoint performance issue 2016-04-13 17:28:38 -04:00
Akita Noek
f3cae7e1f0 Log basic auth requests to the debug log
Part of #1087
2016-04-11 17:03:04 -04:00
Graham Mainwaring
a6acb5181a Merge pull request #1417 from ansible/python27_el6
EL6 Python 2.7 and Tower virtualenvs
2016-04-06 10:57:18 -04:00