Update package versions, settings, and tooling

This commit is contained in:
Wayne Witzel III
2017-11-09 17:17:30 -05:00
parent 6c1919273b
commit 8faf588775
10 changed files with 161 additions and 147 deletions

View File

@@ -203,8 +203,11 @@ develop:
fi
version_file:
mkdir -p /var/lib/awx/
python -c "import awx as awx; print awx.__version__" > /var/lib/awx/.awx_version
mkdir -p /var/lib/awx/; \
if [ "$(VENV_BASE)" ]; then \
. $(VENV_BASE)/awx/bin/activate; \
fi; \
python -c "import awx as awx; print awx.__version__" > /var/lib/awx/.awx_version; \
# Do any one-time init tasks.
comma := ,
@@ -284,7 +287,7 @@ flower:
@if [ "$(VENV_BASE)" ]; then \
. $(VENV_BASE)/awx/bin/activate; \
fi; \
$(PYTHON) manage.py celery flower --address=0.0.0.0 --port=5555 --broker=amqp://guest:guest@$(RABBITMQ_HOST):5672//
celery flower --address=0.0.0.0 --port=5555 --broker=amqp://guest:guest@$(RABBITMQ_HOST):5672//
collectstatic:
@if [ "$(VENV_BASE)" ]; then \
@@ -322,8 +325,7 @@ celeryd:
@if [ "$(VENV_BASE)" ]; then \
. $(VENV_BASE)/awx/bin/activate; \
fi; \
$(PYTHON) manage.py celeryd -l DEBUG -B -Ofair --autoreload --autoscale=100,4 --schedule=$(CELERY_SCHEDULE_FILE) -Q tower_scheduler,tower_broadcast_all,$(COMPOSE_HOST),$(AWX_GROUP_QUEUES) -n celery@$(COMPOSE_HOST)
#$(PYTHON) manage.py celery multi show projects jobs default -l DEBUG -Q:projects projects -Q:jobs jobs -Q:default default -c:projects 1 -c:jobs 3 -c:default 3 -Ofair -B --schedule=$(CELERY_SCHEDULE_FILE)
celery worker -A awx -l DEBUG -B -Ofair --autoscale=100,4 --schedule=$(CELERY_SCHEDULE_FILE) -Q tower_scheduler,tower_broadcast_all,$(COMPOSE_HOST),$(AWX_GROUP_QUEUES) -n celery@$(COMPOSE_HOST)
# Run to start the zeromq callback receiver
receiver:

View File

@@ -5,7 +5,6 @@ import os
import re # noqa
import sys
import ldap
import djcelery
from datetime import timedelta
from kombu import Queue, Exchange
@@ -42,7 +41,6 @@ def IS_TESTING(argv=None):
DEBUG = True
TEMPLATE_DEBUG = DEBUG
SQL_DEBUG = DEBUG
ADMINS = (
@@ -195,20 +193,37 @@ CSRF_COOKIE_SECURE = True
# Limit CSRF cookies to browser sessions
CSRF_COOKIE_AGE = None
TEMPLATE_CONTEXT_PROCESSORS = ( # NOQA
'django.contrib.auth.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
'django.core.context_processors.static',
'django.core.context_processors.tz',
'django.contrib.messages.context_processors.messages',
'django.core.context_processors.request',
'awx.ui.context_processors.settings',
'awx.ui.context_processors.version',
'social.apps.django_app.context_processors.backends',
'social.apps.django_app.context_processors.login_redirect',
)
TEMPLATES = [
{
'NAME': 'default',
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'OPTIONS': {
'debug': DEBUG,
'context_processors': [# NOQA
'django.contrib.auth.context_processors.auth',
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.template.context_processors.i18n',
'django.template.context_processors.media',
'django.template.context_processors.static',
'django.template.context_processors.tz',
'django.contrib.messages.context_processors.messages',
'awx.ui.context_processors.settings',
'awx.ui.context_processors.version',
'social_django.context_processors.backends',
'social_django.context_processors.login_redirect',
],
'loaders': [
'django.template.loaders.cached.Loader',
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
],
},
'DIRS': [
os.path.join(BASE_DIR, 'templates'),
],
},
]
MIDDLEWARE_CLASSES = ( # NOQA
'django.contrib.sessions.middleware.SessionMiddleware',
@@ -217,6 +232,7 @@ MIDDLEWARE_CLASSES = ( # NOQA
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'debug_toolbar.middleware.DebugToolbarMiddleware',
'awx.main.middleware.ActivityStreamMiddleware',
'awx.sso.middleware.SocialAuthMiddleware',
'crum.CurrentRequestUserMiddleware',
@@ -224,16 +240,6 @@ MIDDLEWARE_CLASSES = ( # NOQA
'awx.main.middleware.URLModificationMiddleware',
)
TEMPLATE_DIRS = (
os.path.join(BASE_DIR, 'templates'),
)
TEMPLATE_LOADERS = (
('django.template.loaders.cached.Loader', (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
)),
)
ROOT_URLCONF = 'awx.urls'
@@ -248,12 +254,11 @@ INSTALLED_APPS = (
'django.contrib.staticfiles',
'rest_framework',
'django_extensions',
'djcelery',
'kombu.transport.django',
'django_celery_results',
'channels',
'polymorphic',
'taggit',
'social.apps.django_app.default',
'social_django',
'awx.conf',
'awx.main',
'awx.api',
@@ -302,11 +307,11 @@ AUTHENTICATION_BACKENDS = (
'awx.sso.backends.LDAPBackend',
'awx.sso.backends.RADIUSBackend',
'awx.sso.backends.TACACSPlusBackend',
'social.backends.google.GoogleOAuth2',
'social.backends.github.GithubOAuth2',
'social.backends.github.GithubOrganizationOAuth2',
'social.backends.github.GithubTeamOAuth2',
'social.backends.azuread.AzureADOAuth2',
'social_core.backends.google.GoogleOAuth2',
'social_core.backends.github.GithubOAuth2',
'social_core.backends.github.GithubOrganizationOAuth2',
'social_core.backends.github.GithubTeamOAuth2',
'social_core.backends.azuread.AzureADOAuth2',
'awx.sso.backends.SAMLAuth',
'django.contrib.auth.backends.ModelBackend',
)
@@ -410,41 +415,35 @@ DEVSERVER_DEFAULT_PORT = '8013'
# Set default ports for live server tests.
os.environ.setdefault('DJANGO_LIVE_TEST_SERVER_ADDRESS', 'localhost:9013-9199')
# Initialize Django-Celery.
djcelery.setup_loader()
BROKER_URL = 'amqp://guest:guest@localhost:5672//'
CELERY_BROKER_URL = 'amqp://guest:guest@localhost:5672//'
CELERY_EVENT_QUEUE_TTL = 5
CELERY_DEFAULT_QUEUE = 'tower'
CELERY_TASK_DEFAULT_QUEUE = 'tower'
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TRACK_STARTED = True
CELERYD_TASK_TIME_LIMIT = None
CELERYD_TASK_SOFT_TIME_LIMIT = None
CELERYD_POOL_RESTARTS = True
CELERYBEAT_SCHEDULER = 'celery.beat.PersistentScheduler'
CELERYBEAT_MAX_LOOP_INTERVAL = 60
CELERY_RESULT_BACKEND = 'djcelery.backends.database:DatabaseBackend'
CELERY_TASK_TRACK_STARTED = True
CELERY_TASK_TIME_LIMIT = None
CELERY_TASK_SOFT_TIME_LIMIT = None
CELERY_WORKER_POOL_RESTARTS = True
CELERY_BEAT_SCHEDULER = 'celery.beat.PersistentScheduler'
CELERY_BEAT_MAX_LOOP_INTERVAL = 60
CELERY_RESULT_BACKEND = 'django-db'
CELERY_IMPORTS = ('awx.main.scheduler.tasks',)
CELERY_QUEUES = (
CELERY_TASK_QUEUES = (
Queue('default', Exchange('default'), routing_key='default'),
Queue('tower', Exchange('tower'), routing_key='tower'),
Queue('tower_scheduler', Exchange('scheduler', type='topic'), routing_key='tower_scheduler.job.#', durable=False),
Broadcast('tower_broadcast_all')
)
CELERY_ROUTES = {'awx.main.scheduler.tasks.run_task_manager': {'queue': 'tower',
'routing_key': 'tower'},
'awx.main.scheduler.tasks.run_job_launch': {'queue': 'tower_scheduler',
'routing_key': 'tower_scheduler.job.launch'},
'awx.main.scheduler.tasks.run_job_complete': {'queue': 'tower_scheduler',
'routing_key': 'tower_scheduler.job.complete'},
'awx.main.tasks.cluster_node_heartbeat': {'queue': 'default',
'routing_key': 'cluster.heartbeat'},
'awx.main.tasks.purge_old_stdout_files': {'queue': 'default',
'routing_key': 'cluster.heartbeat'}}
CELERY_TASK_ROUTES = {
'awx.main.scheduler.tasks.run_task_manager': {'queue': 'tower', 'routing_key': 'tower'},
'awx.main.scheduler.tasks.run_job_launch': {'queue': 'tower_scheduler', 'routing_key': 'tower_scheduler.job.launch'},
'awx.main.scheduler.tasks.run_job_complete': {'queue': 'tower_scheduler', 'routing_key': 'tower_scheduler.job.complete'},
'awx.main.tasks.cluster_node_heartbeat': {'queue': 'default', 'routing_key': 'cluster.heartbeat'},
'awx.main.tasks.purge_old_stdout_files': {'queue': 'default', 'routing_key': 'cluster.heartbeat'},
}
CELERYBEAT_SCHEDULE = {
CELERY_BEAT_SCHEDULE = {
'tower_scheduler': {
'task': 'awx.main.tasks.awx_periodic_scheduler',
'schedule': timedelta(seconds=30),
@@ -491,22 +490,22 @@ else:
}
# Social Auth configuration.
SOCIAL_AUTH_STRATEGY = 'awx.sso.strategies.django_strategy.AWXDjangoStrategy'
SOCIAL_AUTH_STORAGE = 'social.apps.django_app.default.models.DjangoStorage'
SOCIAL_AUTH_STRATEGY = 'social_django.strategy.DjangoStrategy'
SOCIAL_AUTH_STORAGE = 'social_django.models.DjangoStorage'
SOCIAL_AUTH_USER_MODEL = AUTH_USER_MODEL # noqa
SOCIAL_AUTH_PIPELINE = (
'social.pipeline.social_auth.social_details',
'social.pipeline.social_auth.social_uid',
'social.pipeline.social_auth.auth_allowed',
'social.pipeline.social_auth.social_user',
'social.pipeline.user.get_username',
'social.pipeline.social_auth.associate_by_email',
'social.pipeline.user.create_user',
'social_core.pipeline.social_auth.social_details',
'social_core.pipeline.social_auth.social_uid',
'social_core.pipeline.social_auth.auth_allowed',
'social_core.pipeline.social_auth.social_user',
'social_core.pipeline.user.get_username',
'social_core.pipeline.social_auth.associate_by_email',
'social_core.pipeline.user.create_user',
'awx.sso.pipeline.check_user_found_or_created',
'social.pipeline.social_auth.associate_user',
'social.pipeline.social_auth.load_extra_data',
'social_core.pipeline.social_auth.associate_user',
'social_core.pipeline.social_auth.load_extra_data',
'awx.sso.pipeline.set_is_active_for_new_user',
'social.pipeline.user.user_details',
'social_core.pipeline.user.user_details',
'awx.sso.pipeline.prevent_inactive_login',
'awx.sso.pipeline.update_user_orgs',
'awx.sso.pipeline.update_user_teams',

View File

@@ -39,13 +39,14 @@ SESSION_COOKIE_SECURE = False
CSRF_COOKIE_SECURE = False
# Override django.template.loaders.cached.Loader in defaults.py
TEMPLATE_LOADERS = (
template = next((tpl_backend for tpl_backend in TEMPLATES if tpl_backend['NAME'] == 'default'), None) # noqa
template['OPTIONS']['loaders'] = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
)
# Disable capturing all SQL queries when running celeryd in development.
if 'celeryd' in sys.argv:
if 'celery' in sys.argv:
SQL_DEBUG = False
CELERYD_HIJACK_ROOT_LOGGER = False
@@ -123,11 +124,11 @@ except ImportError:
sys.exit(1)
CLUSTER_HOST_ID = socket.gethostname()
CELERY_ROUTES['awx.main.tasks.cluster_node_heartbeat'] = {'queue': CLUSTER_HOST_ID, 'routing_key': CLUSTER_HOST_ID}
CELERY_TASK_ROUTES['awx.main.tasks.cluster_node_heartbeat'] = {'queue': CLUSTER_HOST_ID, 'routing_key': CLUSTER_HOST_ID}
# Production only runs this schedule on controlling nodes
# but development will just run it on all nodes
CELERY_ROUTES['awx.main.tasks.awx_isolated_heartbeat'] = {'queue': CLUSTER_HOST_ID, 'routing_key': CLUSTER_HOST_ID}
CELERYBEAT_SCHEDULE['isolated_heartbeat'] = {
CELERY_TASK_ROUTES['awx.main.tasks.awx_isolated_heartbeat'] = {'queue': CLUSTER_HOST_ID, 'routing_key': CLUSTER_HOST_ID}
CELERY_BEAT_SCHEDULE['isolated_heartbeat'] = {
'task': 'awx.main.tasks.awx_isolated_heartbeat',
'schedule': timedelta(seconds = AWX_ISOLATED_PERIODIC_CHECK),
'options': {'expires': AWX_ISOLATED_PERIODIC_CHECK * 2,}
@@ -135,7 +136,7 @@ CELERYBEAT_SCHEDULE['isolated_heartbeat'] = {
# Supervisor service name dictionary used for programatic restart
SERVICE_NAME_DICT = {
"celery": "celeryd",
"celery": "celery",
"callback": "receiver",
"runworker": "channels",
"uwsgi": "uwsgi",

View File

@@ -12,6 +12,8 @@
# MISC PROJECT SETTINGS
###############################################################################
import os
import urllib
def patch_broken_pipe_error():
"""Monkey Patch BaseServer.handle_error to not write
@@ -51,7 +53,7 @@ MANAGERS = ADMINS
# Database settings to use PostgreSQL for development.
DATABASES = {
'default': {
'ENGINE': 'transaction_hooks.backends.postgresql_psycopg2',
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'awx-dev',
'USER': 'awx-dev',
'PASSWORD': 'AWXsome1',
@@ -67,7 +69,7 @@ DATABASES = {
if is_testing(sys.argv):
DATABASES = {
'default': {
'ENGINE': 'transaction_hooks.backends.sqlite3',
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'awx.sqlite3'),
'TEST': {
# Test database cannot be :memory: for celery/inventory tests.
@@ -79,15 +81,15 @@ if is_testing(sys.argv):
MONGO_DB = 'system_tracking_test'
# Celery AMQP configuration.
BROKER_URL = "amqp://{}:{}@{}/{}".format(os.environ.get("RABBITMQ_USER"),
CELERY_BROKER_URL = "amqp://{}:{}@{}/{}".format(os.environ.get("RABBITMQ_USER"),
os.environ.get("RABBITMQ_PASS"),
os.environ.get("RABBITMQ_HOST"),
os.environ.get("RABBITMQ_VHOST"))
urllib.quote(os.environ.get("RABBITMQ_VHOST", "/"), safe=''))
CHANNEL_LAYERS = {
'default': {'BACKEND': 'asgi_amqp.AMQPChannelLayer',
'default': {'BACKEND': 'asgi_rabbitmq.RabbitmqChannelLayer',
'ROUTING': 'awx.main.routing.channel_routing',
'CONFIG': {'url': BROKER_URL}}
'CONFIG': {'url': CELERY_BROKER_URL}}
}
# Mongo host configuration
@@ -114,6 +116,7 @@ SYSTEM_UUID = '00000000-0000-0000-0000-000000000000'
# timezone as the operating system.
# If running in a Windows environment this must be set to the same as your
# system time zone.
USE_TZ = False
TIME_ZONE = None
# Language code for this installation. All choices can be found here:
@@ -191,7 +194,7 @@ EMAIL_SUBJECT_PREFIX = '[AWX] '
LOGGING['handlers']['syslog'] = {
'level': 'WARNING',
'filters': ['require_debug_false'],
'class': 'django.utils.log.NullHandler',
'class': 'logging.NullHandler',
'formatter': 'simple',
}

View File

@@ -60,8 +60,8 @@ LOGGING['handlers']['rbac_migrations']['filename'] = '/var/log/tower/tower_rbac_
# Supervisor service name dictionary used for programatic restart
SERVICE_NAME_DICT = {
"beat": "awx-celeryd-beat",
"celery": "awx-celeryd",
"beat": "awx-celery-beat",
"celery": "awx-celery",
"callback": "awx-callback-receiver",
"channels": "awx-channels-worker",
"uwsgi": "awx-uwsgi",

View File

@@ -31,9 +31,9 @@ AWX_PROOT_ENABLED = False
CLUSTER_HOST_ID = "awx"
SYSTEM_UUID = '00000000-0000-0000-0000-000000000000'
CELERY_QUEUES += (Queue(CLUSTER_HOST_ID, Exchange(CLUSTER_HOST_ID), routing_key=CLUSTER_HOST_ID),)
CELERY_ROUTES['awx.main.tasks.cluster_node_heartbeat'] = {'queue': CLUSTER_HOST_ID, 'routing_key': CLUSTER_HOST_ID}
CELERY_ROUTES['awx.main.tasks.purge_old_stdout_files'] = {'queue': CLUSTER_HOST_ID, 'routing_key': CLUSTER_HOST_ID}
CELERY_TASK_QUEUES += (Queue(CLUSTER_HOST_ID, Exchange(CLUSTER_HOST_ID), routing_key=CLUSTER_HOST_ID),)
CELERY_TASK_ROUTES['awx.main.tasks.cluster_node_heartbeat'] = {'queue': CLUSTER_HOST_ID, 'routing_key': CLUSTER_HOST_ID}
CELERY_TASK_ROUTES['awx.main.tasks.purge_old_stdout_files'] = {'queue': CLUSTER_HOST_ID, 'routing_key': CLUSTER_HOST_ID}
###############################################################################
@@ -79,7 +79,7 @@ LOGGING['handlers']['management_playbooks'] = {'class': 'logging.NullHandler'}
DATABASES = {
'default': {
'ATOMIC_REQUESTS': True,
'ENGINE': 'transaction_hooks.backends.postgresql_psycopg2',
'ENGINE': 'django.db.backends.postgresql',
'NAME': os.getenv("DATABASE_NAME", None),
'USER': os.getenv("DATABASE_USER", None),
'PASSWORD': os.getenv("DATABASE_PASSWORD", None),
@@ -88,7 +88,7 @@ DATABASES = {
}
}
BROKER_URL = 'amqp://{}:{}@{}:{}/{}'.format(
CELERY_BROKER_URL = 'amqp://{}:{}@{}:{}/{}'.format(
os.getenv("RABBITMQ_USER", None),
os.getenv("RABBITMQ_PASSWORD", None),
os.getenv("RABBITMQ_HOST", None),
@@ -98,7 +98,7 @@ BROKER_URL = 'amqp://{}:{}@{}:{}/{}'.format(
CHANNEL_LAYERS = {
'default': {'BACKEND': 'asgi_amqp.AMQPChannelLayer',
'ROUTING': 'awx.main.routing.channel_routing',
'CONFIG': {'url': BROKER_URL}}
'CONFIG': {'url': CELERY_BROKER_URL}}
}

View File

@@ -65,7 +65,7 @@ data:
DATABASES = {
'default': {
'ATOMIC_REQUESTS': True,
'ENGINE': 'transaction_hooks.backends.postgresql_psycopg2',
'ENGINE': 'django.db.backends.postgresql',
'NAME': "{{ pg_database }}",
'USER': "{{ pg_username }}",
'PASSWORD': "{{ pg_password }}",
@@ -73,7 +73,7 @@ data:
'PORT': "{{ pg_port }}",
}
}
BROKER_URL = 'amqp://{}:{}@{}:{}/{}'.format(
CELERY_BROKER_URL = 'amqp://{}:{}@{}:{}/{}'.format(
"awx",
"abcdefg",
"localhost",
@@ -82,7 +82,7 @@ data:
CHANNEL_LAYERS = {
'default': {'BACKEND': 'asgi_amqp.AMQPChannelLayer',
'ROUTING': 'awx.main.routing.channel_routing',
'CONFIG': {'url': BROKER_URL}}
'CONFIG': {'url': CELERY_BROKER_URL}}
}
CACHES = {
'default': {

View File

@@ -1,28 +1,29 @@
apache-libcloud==2.0.0
appdirs==1.4.2
asgi-amqp==0.4.1
asgiref==1.0.1
asgi-rabbitmq==0.5.4
asgiref==1.1.2
azure==2.0.0rc6
backports.ssl-match-hostname==3.5.0.1
boto==2.46.1
boto3==1.4.4
channels==0.17.3
celery==3.1.17
daphne>=0.15.0,<1.0.0
Django==1.8.16
channels==1.1.8
celery==4.1
daphne==1.3.0
Django==1.11.7
django-auth-ldap==1.2.8
django-celery==3.1.17
django-celery-beat==1.1.0
django-celery-results==1.0.1
django-crum==0.7.1
django-extensions==1.7.8
django-jsonfield==1.0.1
django-polymorphic==1.2
django-polymorphic==1.3
django-pglocks==1.0.2
django-radius==1.1.0
django-solo==1.1.2
django-split-settings==0.2.5
django-taggit==0.22.1
django-transaction-hooks==0.2
djangorestframework==3.3.3
djangorestframework==3.7.3
djangorestframework-yaml==1.0.3
gevent-websocket==0.9.5
irc==15.1.1
@@ -33,6 +34,7 @@ ordereddict==1.1
pexpect==4.2.1
psphere==0.5.2
psutil==5.2.2
psycopg2==2.7.3.2
pycrypto==2.6.1
pygerduty==0.35.2
pyOpenSSL==17.0.0
@@ -41,7 +43,8 @@ python-logstash==0.4.6
python-memcached==1.58
python-radius==1.0
python-saml==2.2.1
python-social-auth==0.2.21
social-auth-core==1.5.0
social-auth-app-django==2.0.0
pyvmomi==6.5
redbaron==0.6.3
requests-futures==0.9.7
@@ -50,7 +53,7 @@ shade==1.20.0
slackclient==1.0.6
tacacs_plus==1.0
twilio==6.1.0
twisted==16.6.0
twisted==17.9.0
uWSGI==2.0.14
xmltodict==0.11.0
pip==9.0.1

View File

@@ -5,15 +5,15 @@
# pip-compile --output-file requirements/requirements.txt requirements/requirements.in
#
adal==0.4.5 # via msrestazure
amqp==1.4.9 # via kombu
anyjson==0.3.3 # via kombu
amqp==2.2.2 # via kombu
apache-libcloud==2.0.0
appdirs==1.4.2
asgi-amqp==0.4.1
asgiref==1.0.1
asgi-rabbitmq==0.5.4
asgiref==1.1.2
asn1crypto==0.22.0 # via cryptography
attrs==17.2.0 # via service-identity
autobahn==17.6.1 # via daphne
attrs==17.2.0 # via automat, service-identity
autobahn==17.10.1 # via daphne
automat==0.6.0 # via twisted
azure-batch==1.0.0 # via azure
azure-common[autorest]==1.1.4 # via azure-batch, azure-mgmt-batch, azure-mgmt-compute, azure-mgmt-keyvault, azure-mgmt-logic, azure-mgmt-network, azure-mgmt-redis, azure-mgmt-resource, azure-mgmt-scheduler, azure-mgmt-storage, azure-servicebus, azure-servicemanagement-legacy, azure-storage
azure-mgmt-batch==1.0.0 # via azure-mgmt
@@ -36,47 +36,52 @@ babel==2.3.4 # via osc-lib, oslo.i18n, python-cinderclient, python-
backports.functools-lru-cache==1.4 # via jaraco.functools
backports.ssl-match-hostname==3.5.0.1
baron==0.6.6 # via redbaron
billiard==3.3.0.23 # via celery
billiard==3.5.0.3 # via celery
boto3==1.4.4
boto==2.46.1
botocore==1.5.72 # via boto3, s3transfer
celery==3.1.17
#certifi==2017.4.17 # via msrest
cached-property==1.3.1 # via asgi-rabbitmq
celery==4.1
#certifi==2017.11.5 # via msrest
cffi==1.10.0 # via cryptography
channels==0.17.3
channels==1.1.8
cliff==2.7.0 # via osc-lib, python-designateclient, python-neutronclient, python-openstackclient
cmd2==0.7.2 # via cliff
constantly==15.1.0 # via twisted
cryptography==1.9 # via adal, azure-storage, pyopenssl, secretstorage, twilio
daphne==0.15.0
daphne==1.3.0
debtcollector==1.15.0 # via oslo.config, oslo.utils, python-designateclient, python-keystoneclient, python-neutronclient
decorator==4.0.11 # via shade
defusedxml==0.4.1 # via python-saml
deprecation==1.0.1 # via openstacksdk
django-auth-ldap==1.2.8
django-celery==3.1.17
django-celery-beat==1.1.0
django-celery-results==1.0.1
django-crum==0.7.1
django-extensions==1.7.8
django-jsonfield==1.0.1
django-polymorphic==1.2
django-pglocks==1.0.2
django-polymorphic==1.3
django-radius==1.1.0
django-solo==1.1.2
django-split-settings==0.2.5
django-taggit==0.22.1
django-transaction-hooks==0.2
django==1.8.16 # via channels, django-auth-ldap, django-crum, django-split-settings, django-transaction-hooks
django==1.11.7
djangorestframework-yaml==1.0.3
djangorestframework==3.3.3
#docutils==0.12 # via botocore
djangorestframework==3.7.3
#dm.xmlsec.binding==1.3.2 # via python-saml
#docutils==0.14 # via botocore
dogpile.cache==0.6.3 # via python-ironicclient, shade
enum34==1.1.6 # via cryptography, msrest
ephem==3.7.6.0 # via django-celery-beat
funcsigs==1.0.2 # via debtcollector, oslo.utils
functools32==3.2.3.post2 # via jsonschema
futures==3.1.1 # via azure-storage, requests-futures, s3transfer, shade
futures==3.1.1 # via asgi-rabbitmq, azure-storage, requests-futures, s3transfer, shade
gevent-websocket==0.9.5
gevent==1.2.2 # via gevent-websocket
greenlet==0.4.12 # via gevent
hyperlink==17.3.1 # via twisted
idna==2.5 # via cryptography, twilio
incremental==17.5.0 # via twisted
inflect==0.2.5 # via jaraco.itertools
@@ -93,24 +98,23 @@ jaraco.stream==1.1.2 # via irc
jaraco.text==1.9.2 # via irc, jaraco.collections
jmespath==0.9.3 # via boto3, botocore, shade
jsonpatch==1.16 # via openstacksdk, shade, warlock
jsonpickle==0.9.4 # via asgi-amqp
jsonpointer==1.10 # via jsonpatch
jsonschema==2.6.0
keyring==10.3.3 # via msrestazure
keystoneauth1==2.21.0 # via openstacksdk, os-client-config, osc-lib, python-cinderclient, python-designateclient, python-glanceclient, python-ironicclient, python-keystoneclient, python-neutronclient, python-novaclient, python-openstackclient, shade
kombu==3.0.35 # via asgi-amqp, celery
lxml==3.8.0 # via pyvmomi
kombu==4.1.0 # via celery
lxml==3.8.0 # via dm.xmlsec.binding, pyvmomi
m2crypto==0.25.1
markdown==2.6.7
monotonic==1.3 # via oslo.utils
more-itertools==3.2.0 # via irc, jaraco.functools, jaraco.itertools
msgpack-python==0.4.8 # via asgi-amqp, oslo.serialization
msgpack-python==0.4.8 # via asgi-rabbitmq, oslo.serialization
msrest==0.4.10 # via azure-common, msrestazure
msrestazure==0.4.9 # via azure-common
munch==2.1.1 # via shade
netaddr==0.7.19 # via oslo.config, oslo.utils, pyrad, python-neutronclient
netifaces==0.10.6 # via oslo.utils, shade
oauthlib==2.0.2 # via python-social-auth, requests-oauthlib
oauthlib==2.0.2 # via requests-oauthlib, social-auth-core
openstacksdk==0.9.17 # via python-openstackclient
ordereddict==1.1
os-client-config==1.27.0 # via openstacksdk, osc-lib, python-neutronclient, shade
@@ -119,22 +123,22 @@ oslo.config==4.6.0 # via python-keystoneclient
oslo.i18n==3.15.3 # via osc-lib, oslo.config, oslo.utils, python-cinderclient, python-glanceclient, python-ironicclient, python-keystoneclient, python-neutronclient, python-novaclient, python-openstackclient
oslo.serialization==2.18.0 # via python-ironicclient, python-keystoneclient, python-neutronclient, python-novaclient
oslo.utils==3.26.0 # via osc-lib, oslo.serialization, python-cinderclient, python-designateclient, python-glanceclient, python-ironicclient, python-keystoneclient, python-neutronclient, python-novaclient, python-openstackclient
packaging==16.8 # via setuptools
pbr==3.1.1 # via cliff, debtcollector, keystoneauth1, openstacksdk, osc-lib, oslo.i18n, oslo.serialization, oslo.utils, positional, python-cinderclient, python-designateclient, python-glanceclient, python-ironicclient, python-keystoneclient, python-neutronclient, python-novaclient, python-openstackclient, requestsexceptions, shade, stevedore
pexpect==4.2.1
pika==0.11.0 # via asgi-rabbitmq
positional==1.1.1 # via keystoneauth1, python-keystoneclient
prettytable==0.7.2 # via cliff, python-cinderclient, python-glanceclient, python-ironicclient, python-novaclient
psphere==0.5.2
psutil==5.2.2
psycopg2==2.7.1
psycopg2==2.7.3.2
ptyprocess==0.5.1 # via pexpect
pyasn1-modules==0.0.9 # via service-identity
pyasn1==0.2.3 # via pyasn1-modules, service-identity
pycparser==2.17 # via cffi
pycrypto==2.6.1
pygerduty==0.35.2
pyjwt==1.5.0 # via adal, python-social-auth, twilio
pyopenssl==17.0.0 # via pyvmomi, service-identity, twilio
pyjwt==1.5.0 # via adal, social-auth-core, twilio
pyopenssl==17.0.0
pyparsing==2.2.0
pyrad==2.1 # via django-radius
python-cinderclient==2.2.0 # via python-openstackclient, shade
@@ -148,18 +152,17 @@ python-logstash==0.4.6
python-memcached==1.58
python-neutronclient==6.3.0 # via shade
python-novaclient==9.0.1 # via python-openstackclient, shade
python-openid==2.2.5 # via python-social-auth
python-openid==2.2.5 # via social-auth-core
python-openstackclient==3.11.0 # via python-ironicclient
python-radius==1.0
python-saml==2.2.1
python-social-auth==0.2.21
pytz==2017.2 # via babel, celery, irc, oslo.serialization, oslo.utils, tempora, twilio
pytz==2017.3 # via babel, celery, django, irc, oslo.serialization, oslo.utils, tempora, twilio
pyvmomi==6.5
pyyaml==3.12 # via cliff, djangorestframework-yaml, os-client-config, oslo.config, psphere, python-ironicclient
redbaron==0.6.3
requests-futures==0.9.7
requests-oauthlib==0.8.0 # via msrest, python-social-auth
requests==2.14.2 # via adal, apache-libcloud, azure-servicebus, azure-servicemanagement-legacy, azure-storage, keystoneauth1, msrest, python-designateclient, python-glanceclient, python-ironicclient, python-keystoneclient, python-neutronclient, python-social-auth, pyvmomi, requests-futures, requests-oauthlib, slackclient, twilio
requests-oauthlib==0.8.0 # via msrest, social-auth-core
requests==2.14.2 # via adal, apache-libcloud, azure-servicebus, azure-servicemanagement-legacy, azure-storage, keystoneauth1, msrest, python-designateclient, python-glanceclient, python-ironicclient, python-keystoneclient, python-neutronclient, pyvmomi, requests-futures, requests-oauthlib, slackclient, social-auth-core, twilio
requestsexceptions==1.2.0 # via os-client-config, shade
rfc3986==1.0.0 # via oslo.config
rply==0.7.4 # via baron
@@ -168,23 +171,26 @@ secretstorage==2.3.1 # via keyring
service-identity==16.0.0
shade==1.20.0
simplejson==3.11.1 # via osc-lib, python-cinderclient, python-neutronclient, python-novaclient
six==1.10.0 # via asgi-amqp, asgiref, autobahn, cliff, cmd2, cryptography, debtcollector, django-extensions, irc, jaraco.classes, jaraco.collections, jaraco.itertools, jaraco.logging, jaraco.stream, keystoneauth1, more-itertools, munch, openstacksdk, osc-lib, oslo.config, oslo.i18n, oslo.serialization, oslo.utils, packaging, pygerduty, pyopenssl, pyrad, python-cinderclient, python-dateutil, python-designateclient, python-glanceclient, python-ironicclient, python-keystoneclient, python-memcached, python-neutronclient, python-novaclient, python-openstackclient, python-social-auth, pyvmomi, setuptools, shade, slackclient, stevedore, tacacs-plus, tempora, twilio, txaio, warlock, websocket-client
six==1.10.0 # via asgiref, autobahn, automat, cliff, cmd2, cryptography, debtcollector, django-extensions, irc, jaraco.classes, jaraco.collections, jaraco.itertools, jaraco.logging, jaraco.stream, keystoneauth1, more-itertools, munch, openstacksdk, osc-lib, oslo.config, oslo.i18n, oslo.serialization, oslo.utils, pygerduty, pyopenssl, pyrad, python-cinderclient, python-dateutil, python-designateclient, python-glanceclient, python-ironicclient, python-keystoneclient, python-memcached, python-neutronclient, python-novaclient, python-openstackclient, pyvmomi, shade, slackclient, social-auth-app-django, social-auth-core, stevedore, tacacs-plus, tempora, twilio, txaio, warlock, websocket-client
slackclient==1.0.6
social-auth-app-django==2.0.0
social-auth-core==1.5.0
stevedore==1.23.0 # via cliff, keystoneauth1, openstacksdk, osc-lib, oslo.config, python-designateclient, python-keystoneclient
suds==0.4 # via psphere
tacacs_plus==1.0
tempora==1.7 # via irc, jaraco.logging
twilio==6.1.0
twisted==16.6.0
txaio==2.8.0 # via autobahn
typing==3.6.1 # via m2crypto
twisted==17.9.0
txaio==2.8.2 # via autobahn
typing==3.6.2 # via m2crypto
unicodecsv==0.14.1 # via cliff
uwsgi==2.0.14
vine==1.1.4 # via amqp
warlock==1.2.0 # via python-glanceclient
websocket-client==0.44.0 # via slackclient
wrapt==1.10.10 # via debtcollector, positional, python-glanceclient
xmltodict==0.11.0
zope.interface==4.4.2 # via twisted
zope.interface==4.4.3 # via twisted
# The following packages are considered to be unsafe in a requirements file:
pip==9.0.1

View File

@@ -4,7 +4,7 @@ minfds = 4096
nodaemon=true
[program:celeryd]
command = python manage.py celeryd -l DEBUG -B --autoreload --autoscale=20,3 --schedule=/celerybeat-schedule -Q tower_scheduler,tower_broadcast_all,%(ENV_AWX_GROUP_QUEUES)s,%(ENV_HOSTNAME)s -n celery@%(ENV_HOSTNAME)s
command = celery -l DEBUG -B --autoreload --autoscale=20,3 --schedule=/celerybeat-schedule -Q tower_scheduler,tower_broadcast_all,%(ENV_AWX_GROUP_QUEUES)s,%(ENV_HOSTNAME)s -n celery@%(ENV_HOSTNAME)s
autostart = true
autorestart = true
redirect_stderr=true