mirror of
https://github.com/ansible/awx.git
synced 2024-10-31 15:21:13 +03:00
Merge branch 'master' into expunge-zeromq-unstable
This commit is contained in:
commit
122bf9fcd3
@ -1768,6 +1768,12 @@ class SystemJobTemplateSchedulesList(SubListCreateAPIView):
|
|||||||
relationship = 'schedules'
|
relationship = 'schedules'
|
||||||
parent_key = 'unified_job_template'
|
parent_key = 'unified_job_template'
|
||||||
|
|
||||||
|
def post(self, request, *args, **kwargs):
|
||||||
|
system_job = self.get_parent_object()
|
||||||
|
if system_job.schedules.count() > 0:
|
||||||
|
return Response({"error": "Multiple schedules for Systems Jobs is not allowed"}, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
return super(SystemJobTemplateSchedulesList, self).post(request, *args, **kwargs)
|
||||||
|
|
||||||
class SystemJobTemplateJobsList(SubListAPIView):
|
class SystemJobTemplateJobsList(SubListAPIView):
|
||||||
|
|
||||||
model = SystemJob
|
model = SystemJob
|
||||||
|
@ -9,18 +9,18 @@ from awx.main.models import *
|
|||||||
class Migration(DataMigration):
|
class Migration(DataMigration):
|
||||||
|
|
||||||
def forwards(self, orm):
|
def forwards(self, orm):
|
||||||
SystemJobTemplate(name='Delete Old Jobs',
|
SystemJobTemplate(name='Cleanup Job Details',
|
||||||
description="Run a job to delete jobs that are older than a given number of days",
|
description="Remove job history older than X days",
|
||||||
job_type="cleanup_jobs",
|
job_type="cleanup_jobs",
|
||||||
created=now(),
|
created=now(),
|
||||||
modified=now()).save()
|
modified=now()).save()
|
||||||
SystemJobTemplate(name='Cleanup Deleted Data',
|
SystemJobTemplate(name='Cleanup Deleted Data',
|
||||||
description="Run a job to cleanup any deleted objects that are older than a given number of days",
|
description="Remove deleted object history older than X days",
|
||||||
job_type="cleanup_deleted",
|
job_type="cleanup_deleted",
|
||||||
created=now(),
|
created=now(),
|
||||||
modified=now()).save()
|
modified=now()).save()
|
||||||
SystemJobTemplate(name='Cleanup Activity Stream',
|
SystemJobTemplate(name='Cleanup Activity Stream',
|
||||||
description="Run a job to purge activity stream data that's older than a given number of days",
|
description="Remove activity stream history older than X days",
|
||||||
job_type="cleanup_activitystream",
|
job_type="cleanup_activitystream",
|
||||||
created=now(),
|
created=now(),
|
||||||
modified=now()).save()
|
modified=now()).save()
|
||||||
|
@ -73,3 +73,23 @@ nested_groups = False
|
|||||||
|
|
||||||
# If you want to exclude any hosts that match a certain regular expression
|
# If you want to exclude any hosts that match a certain regular expression
|
||||||
# pattern_exclude = stage-*
|
# pattern_exclude = stage-*
|
||||||
|
|
||||||
|
# Instance filters can be used to control which instances are retrieved for
|
||||||
|
# inventory. For the full list of possible filters, please read the EC2 API
|
||||||
|
# docs: http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeInstances.html#query-DescribeInstances-filters
|
||||||
|
# Filters are key/value pairs separated by '=', to list multiple filters use
|
||||||
|
# a list separated by commas. See examples below.
|
||||||
|
|
||||||
|
# Retrieve only instances with (key=value) env=stage tag
|
||||||
|
# instance_filters = tag:env=stage
|
||||||
|
|
||||||
|
# Retrieve only instances with role=webservers OR role=dbservers tag
|
||||||
|
# instance_filters = tag:role=webservers,tag:role=dbservers
|
||||||
|
|
||||||
|
# Retrieve only t1.micro instances OR instances with tag env=stage
|
||||||
|
# instance_filters = instance-type=t1.micro,tag:env=stage
|
||||||
|
|
||||||
|
# You can use wildcards in filter values also. Below will list instances which
|
||||||
|
# tag Name value matches webservers1*
|
||||||
|
# (ex. webservers15, webservers1a, webservers123 etc)
|
||||||
|
# instance_filters = tag:Name=webservers1*
|
||||||
|
@ -123,6 +123,7 @@ from boto import ec2
|
|||||||
from boto import rds
|
from boto import rds
|
||||||
from boto import route53
|
from boto import route53
|
||||||
import ConfigParser
|
import ConfigParser
|
||||||
|
from collections import defaultdict
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import json
|
import json
|
||||||
@ -257,6 +258,8 @@ class Ec2Inventory(object):
|
|||||||
pattern_include = config.get('ec2', 'pattern_include')
|
pattern_include = config.get('ec2', 'pattern_include')
|
||||||
if pattern_include and len(pattern_include) > 0:
|
if pattern_include and len(pattern_include) > 0:
|
||||||
self.pattern_include = re.compile(pattern_include)
|
self.pattern_include = re.compile(pattern_include)
|
||||||
|
else:
|
||||||
|
self.pattern_include = None
|
||||||
except ConfigParser.NoOptionError, e:
|
except ConfigParser.NoOptionError, e:
|
||||||
self.pattern_include = None
|
self.pattern_include = None
|
||||||
|
|
||||||
@ -265,8 +268,17 @@ class Ec2Inventory(object):
|
|||||||
pattern_exclude = config.get('ec2', 'pattern_exclude');
|
pattern_exclude = config.get('ec2', 'pattern_exclude');
|
||||||
if pattern_exclude and len(pattern_exclude) > 0:
|
if pattern_exclude and len(pattern_exclude) > 0:
|
||||||
self.pattern_exclude = re.compile(pattern_exclude)
|
self.pattern_exclude = re.compile(pattern_exclude)
|
||||||
|
else:
|
||||||
|
self.pattern_exclude = None
|
||||||
except ConfigParser.NoOptionError, e:
|
except ConfigParser.NoOptionError, e:
|
||||||
self.pattern_exclude = ''
|
self.pattern_exclude = None
|
||||||
|
|
||||||
|
# Instance filters (see boto and EC2 API docs)
|
||||||
|
self.ec2_instance_filters = defaultdict(list)
|
||||||
|
if config.has_option('ec2', 'instance_filters'):
|
||||||
|
for x in config.get('ec2', 'instance_filters', '').split(','):
|
||||||
|
filter_key, filter_value = x.split('=')
|
||||||
|
self.ec2_instance_filters[filter_key].append(filter_value)
|
||||||
|
|
||||||
def parse_cli_args(self):
|
def parse_cli_args(self):
|
||||||
''' Command line argument processing '''
|
''' Command line argument processing '''
|
||||||
@ -312,7 +324,13 @@ class Ec2Inventory(object):
|
|||||||
print("region name: %s likely not supported, or AWS is down. connection to region failed." % region)
|
print("region name: %s likely not supported, or AWS is down. connection to region failed." % region)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
reservations = conn.get_all_instances()
|
reservations = []
|
||||||
|
if self.ec2_instance_filters:
|
||||||
|
for filter_key, filter_values in self.ec2_instance_filters.iteritems():
|
||||||
|
reservations.extend(conn.get_all_instances(filters = { filter_key : filter_values }))
|
||||||
|
else:
|
||||||
|
reservations = conn.get_all_instances()
|
||||||
|
|
||||||
for reservation in reservations:
|
for reservation in reservations:
|
||||||
for instance in reservation.instances:
|
for instance in reservation.instances:
|
||||||
self.add_instance(instance, region)
|
self.add_instance(instance, region)
|
||||||
|
14
awx/wsgi.py
14
awx/wsgi.py
@ -14,6 +14,20 @@ https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/
|
|||||||
from awx import prepare_env
|
from awx import prepare_env
|
||||||
prepare_env()
|
prepare_env()
|
||||||
|
|
||||||
|
import os
|
||||||
|
import logging
|
||||||
|
from django.conf import settings
|
||||||
|
from awx import __version__ as tower_version
|
||||||
|
logger = logging.getLogger('awx.main.models.jobs')
|
||||||
|
try:
|
||||||
|
fd = open("/var/lib/awx/.tower_version", "r")
|
||||||
|
if fd.read().strip() != tower_version:
|
||||||
|
logger.error("Tower Versions don't match, potential invalid setup detected")
|
||||||
|
raise Exception("Tower Versions don't match, potential invalid setup detected")
|
||||||
|
except Exception:
|
||||||
|
logger.error("Missing tower version metadata at /var/lib/awx/.tower_version")
|
||||||
|
raise Exception("Missing tower version metadata at /var/lib/awx/.tower_version")
|
||||||
|
|
||||||
# Return the default Django WSGI application.
|
# Return the default Django WSGI application.
|
||||||
from django.core.wsgi import get_wsgi_application
|
from django.core.wsgi import get_wsgi_application
|
||||||
application = get_wsgi_application()
|
application = get_wsgi_application()
|
||||||
|
Loading…
Reference in New Issue
Block a user