diff --git a/.gitignore b/.gitignore index f08b443a37..cc1c6605b8 100644 --- a/.gitignore +++ b/.gitignore @@ -31,6 +31,5 @@ pep8.txt nohup.out reports package.json -Vagrantfile -ansible.cfg +tools/vagrant/local.yml *~ diff --git a/Vagrantfile b/Vagrantfile new file mode 100644 index 0000000000..4710edbf2e --- /dev/null +++ b/Vagrantfile @@ -0,0 +1,41 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +Vagrant.require_version '>= 1.5.1' + +Vagrant.configure('2') do |config| + config.vm.define 'tower-precise', primary: true do |precise| + precise.vm.box = "precise-server-cloudimg-amd64" + precise.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/precise/current/precise-server-cloudimg-amd64-vagrant-disk1.box" + + precise.vm.hostname = 'tower-precise' + + precise.vm.network :private_network, ip: '33.33.33.13' + precise.vm.network :forwarded_port, guest: 80, host: 8013 + precise.vm.network :forwarded_port, guest: 8080, host: 8080 + precise.vm.network :forwarded_port, guest: 15672, host: 15013 + precise.vm.network :forwarded_port, guest: 24013, host: 24013 + + precise.vm.synced_folder '.', '/var/ansible/tower/', + :mount_options => [ 'gid=5853', 'dmode=2775' ] + + precise.vm.provider :virtualbox do |vb| + vb.customize ["modifyvm", :id, "--memory", '1024'] + end + end + + config.ssh.forward_agent = true + + config.vm.provision 'ansible' do |ansible| + ansible.extra_vars = { + 'development' => true, + 'target_hosts' => 'vagrant', + 'target_user' => 'vagrant', + 'vagrant' => true, + 'vagrant_host_user' => ENV['USER'], + } + ansible.inventory_path = 'tools/dev_setup/inventory' + ansible.playbook = 'tools/dev_setup/playbook.yml' + ansible.verbose = 'v' + end +end diff --git a/ansible.cfg b/ansible.cfg new file mode 100644 index 0000000000..f84e3cc638 --- /dev/null +++ b/ansible.cfg @@ -0,0 +1,15 @@ +[defaults] + +# Connections +host_key_checking = False +record_host_keys = False +pipelining = True + + +# Command-line specific +module_name = shell + + +# Paths +roles_path = setup/roles:tools/dev_setup/roles + diff --git a/awx/api/utils/decorators.py b/awx/api/utils/decorators.py index a448f6b4c5..79162d4b3e 100644 --- a/awx/api/utils/decorators.py +++ b/awx/api/utils/decorators.py @@ -23,14 +23,14 @@ def paginated(method): # Manually spin up pagination. # How many results do we show? limit = api_settings.PAGINATE_BY - if request.GET.get(api_settings.PAGINATE_BY_PARAM, False): - limit = request.GET[api_settings.PAGINATE_BY_PARAM] + if request.QUERY_PARAMS.get(api_settings.PAGINATE_BY_PARAM, False): + limit = request.QUERY_PARAMS[api_settings.PAGINATE_BY_PARAM] if api_settings.MAX_PAGINATE_BY: limit = min(api_settings.MAX_PAGINATE_BY, limit) limit = int(limit) # What page are we on? - page = int(request.GET.get('page', 1)) + page = int(request.QUERY_PARAMS.get('page', 1)) offset = (page - 1) * limit # Add the limit, offset, and page variables to the keyword arguments diff --git a/awx/main/tests/commands.py b/awx/main/tests/commands.py index c79637371e..d1e8bd27fe 100644 --- a/awx/main/tests/commands.py +++ b/awx/main/tests/commands.py @@ -11,6 +11,7 @@ import sys import tempfile import time import urlparse +import unittest # Django from django.conf import settings @@ -872,6 +873,9 @@ class InventoryImportTest(BaseCommandMixin, BaseLiveServerTest): self.assertEqual(new_inv.total_groups, ngroups) self.assertElapsedLessThan(30) + @unittest.skipIf(getattr(settings, 'LOCAL_DEVELOPMENT', False), + 'Skip this test in local development environments, ' + 'which may vary widely on memory.') def test_large_inventory_file(self): new_inv = self.organizations[0].inventories.create(name='largeinv') self.assertEqual(new_inv.hosts.count(), 0) diff --git a/awx/settings/development.py b/awx/settings/development.py index 43fe6c1d74..ba6cb1362f 100644 --- a/awx/settings/development.py +++ b/awx/settings/development.py @@ -47,6 +47,9 @@ if 'django_jenkins' in INSTALLED_APPS: JSHINT_CHECKED_FILES = [os.path.join(BASE_DIR, 'ui/static/js'), os.path.join(BASE_DIR, 'ui/static/lib/ansible'),] +# If there is an `/etc/awx/settings.py`, include it. +include(optional('/etc/awx/settings.py'), scope=locals()) + # If any local_*.py files are present in awx/settings/, use them to override # default settings for development. If not present, we can still run using # only the defaults.