tree 433d7356d89eef21460825eee39b8c9536c1e67f
parent ce3075a85ed86b5c084b1d5f7d60d345fdb6c092
author Zack Williams <zdw@cs.arizona.edu> 1461106434 -0700
committer Zack Williams <zdw@cs.arizona.edu> 1470232396 -0700

Update container ubuntu version, and switch to ansible PPA

remove vestigal Dockerfile

updated Dockerfile to LTS versions of Django, jQuery. Removed use of easy_install (using pip instead)

apply changes made to Dockerfile to devel/templ dockerfiles

have to quote version specification with commas, whitespace

"null has no effect on ManyToManyField" per django 1.8

Have to supply fields = '__all__' in class Meta in 1.8

more additions of default __all__ fields in Meta

more fields = '__all__'

another fields = '__all__'

increase keysize to 2048

stop including event_manager.py which was commented out. This removes the fofum dep

change from nova_compute to os_server

let os_* ansible modules work

Make compatible with django 1.8

rename openstack due to module name conflict with upstream

s/openstack/openstack_xos/

s/openstack/openstack_xos/ module renaming

don't specify ancient openstack client versions

specify keystone API 2.0

_ not .

update to novaclient v2

s/quantum/neutron/ and fix client

fix get_query_set v. get_queryset per django change

revert testing change

Fixme: NovaDB disables, so disable the code that relies on it and throws runtime errors

tracebacks when a RuntimeWarning: DateTimeField xxxx received a naive datet
ime

more commenting out of nonfunctional code

don't include gateway if not set

sort imports, switch to xos.logger

comment out defective function

fix django deprecation warning

remove unused import which was causing a deprecation warning

fix more deprecation warnings

Django 1.8 requires Meta to have fields specified

make creation of tenant it's own step

fix order

os_ ansible module fix

turn off django DEBUG

switch to os_* modules for networking

os_* module-ify user creation

syntax

use legacy keystone_user to create roles

use dict keys appropriate for os_* module results

Make admin role name a config variable as it varies between openstack deployments

set 'body_format' properly, as it's an Ansible 2.0 feature that was being ignored earlier and was set incorrectly for json data

s/queryset/get_queryset/ in admin.py of services using proxy models

fix wget > curl subsitution, duplicate pip package

django 1.8 requires fields in Meta for ModelForm children

fields = '__all__' for 1.8 compat

work around no-gateway options that were hacked into custom Ansible

download/checksum jQuery UI

add missing '.min' component to jquery-ui.min.css path

remove PhantomJS

set REQUESTS_CA_BUNDLE in script that runs ansible

change close_connection() to close_old_connections() per 1.8

same close_old_connections fix

use the CA cert for more OS clients

fix sync_ports to use CA cert

More SSL compat fixes

cleanup, fix instance sync

fields attribute to Meta

more fields attribute

note about not placing new services in the services directory

Fixed ui routing conflict with syncNotification

Fixed ui routing conflict with syncNotification

Removed backbone deps and views

Started E2E UI Tests with selenium

Test running locally, still broken in container because of phantomjs

Removed backone templates

download services (WIP)

Makefile for downloading services

download services for frontend config

update test-standalone to download services

update cord-pod to download services

fix service directories

rename old service directories

fix service directory name

add the onos service back in

fix missing keys

updating .gitreview

download services before bootstrapping

rename MySite to mysite in test infrastructure

Add install_dependencies

use separate project for bootstrap

prevent dirs being created as root in cord_pod config

remove onboard directory that was removed in master

look up capitalization issue of 'admin' vs 'Admin' in OpenStack

remove --no-gateway option as it breaks the VTN

turn on DEBUG, as in master

cleanup of onboarding synchronizer Dockerfile

extend ssh timeout in ansbile to work around initial login name lookup failure on vsg container

move 'timeout' directive in ansible config

ansible 2.1 fixes, logic fix on subnet without gateways

revert sync_controller_users.yaml change until we get a sane way to deal with openstack roles

Change-Id: If79756113ec40ea4bff686ac33c9994b4a31b1d1
