fixed merge of master into lts
diff --git a/containers/synchronizer/Dockerfile b/containers/synchronizer/Dockerfile
index 011e8dd..446bf84 100644
--- a/containers/synchronizer/Dockerfile
+++ b/containers/synchronizer/Dockerfile
@@ -4,45 +4,31 @@
     openssh-client \
     python-crypto \
     python-jinja2 \
+    python-netaddr \
     python-paramiko \
     python-yaml \
     python-httplib2 \
     rsync \
+    software-properties-common \
     supervisor
 
-RUN pip install -U \
-    jinja2
+# required for ansible 2.0 OpenStack os_* modules
+RUN pip install --upgrade pbr
+RUN pip install --upgrade six
+RUN pip install shade
 
-# Install custom Ansible
-RUN \
-    git clone -b release1.8.2 git://github.com/ansible/ansible.git /opt/ansible && \
-    git clone -b release1.8.2 git://github.com/ansible/ansible-modules-extras.git /opt/ansible/lib/ansible/modules/extras && \
-    git clone -b release1.8.2 git://github.com/ansible/ansible-modules-extras.git /opt/ansible/v2/ansible/modules/extras && \
-    git clone git://github.com/sb98052/ansible-modules-core.git /opt/ansible/lib/ansible/modules/core && \
-    git clone git://github.com/sb98052/ansible-modules-core.git /opt/ansible/v2/ansible/modules/core && \
-    # git clone uses cached copy, doesn't pick up latest
-    git -C /opt/ansible pull && \
-    git -C /opt/ansible/lib/ansible/modules/core pull && \
-    git -C /opt/ansible/v2/ansible/modules/core pull
+# Install ansible from PPA
+RUN add-apt-repository ppa:ansible/ansible
+RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y \
+    ansible
 
-
-# For Observer
+# For Synchronizer
 RUN mkdir -p /usr/local/share /bin /etc/ansible
 
 COPY conf/ansible-hosts /etc/ansible/hosts
 
-ADD http://phantomjs.googlecode.com/files/phantomjs-1.7.0-linux-x86_64.tar.bz2 /usr/local/share/
-
-RUN git clone git://git.planet-lab.org/fofum.git /tmp/fofum && \
-    cd /tmp/fofum; python setup.py install && \
-    rm -rf /tmp/fofum && \
-    tar jxvf /usr/local/share/phantomjs-1.7.0-linux-x86_64.tar.bz2 -C /usr/local/share/ && \
-    rm -f /usr/local/share/phantomjs-1.7.0-linux-x86_64.tar.bz2 && \
-    ln -s /usr/local/share/phantomjs-1.7.0-linux-x86_64 /usr/local/share/phantomjs && \
-    ln -s /usr/local/share/phantomjs/bin/phantomjs /bin/phantomjs
-
-
 # Supervisor
 COPY conf/synchronizer.conf /etc/supervisor/conf.d/
 
 CMD update-ca-certificates && /usr/bin/supervisord -c /etc/supervisor/conf.d/synchronizer.conf
+
diff --git a/containers/xos/Dockerfile b/containers/xos/Dockerfile
index afc7c9d..d74974e 100644
--- a/containers/xos/Dockerfile
+++ b/containers/xos/Dockerfile
@@ -1,4 +1,4 @@
-FROM       ubuntu:14.04.3
+FROM       ubuntu:14.04.4
 
 # XXX Workaround for docker bug:
 # https://github.com/docker/docker/issues/6345
@@ -29,7 +29,7 @@
     python-setuptools \
     tar \
     wget \
-##### observer dependencies
+##### synchronizer dependencies
     python-keystoneclient \
     python-novaclient \
     python-neutronclient \
@@ -37,19 +37,22 @@
     python-ceilometerclient
 
 RUN pip install \
-    django==1.7 \
+    ca-certs-locater \
+    "django>=1.8,<1.8.99" \
     django-bitfield \
     django-crispy-forms \
     django-encrypted-fields \
     django-extensions \
-    django-filter==0.11.0 \
+    django-filter \
     django-geoposition \
     django-ipware \
     django_rest_swagger \
-    django-suit==0.3a1 \
+    django-suit==0.3a3 \
     django-timezones \
     djangorestframework==3.3.3 \
     dnslib \
+    google-api-python-client \
+    httplib2 \
     jinja2 \
     lxml \
     markdown \
@@ -58,6 +61,7 @@
     psycopg2 \
     python-ceilometerclient \
     python-dateutil \
+    python-gflags \
     python-keyczar \
     python-logstash \
     pygraphviz \
@@ -65,14 +69,7 @@
     pyyaml \
     requests
 
-RUN easy_install --upgrade httplib2
-
-RUN easy_install \
-    python_gflags \
-    google_api_python_client \
-    httplib2.ca_certs_locater
-
-ADD http://code.jquery.com/jquery-1.9.1.min.js /usr/local/lib/python2.7/dist-packages/suit/static/suit/js/
+ADD http://code.jquery.com/jquery-1.12.3.min.js /usr/local/lib/python2.7/dist-packages/suit/static/suit/js/
 
 # Install XOS
 RUN git clone git://github.com/open-cloud/xos.git /tmp/xos && \
@@ -94,3 +91,4 @@
 
 # Define default command.
 CMD update-ca-certificates && python /opt/xos/manage.py runserver 0.0.0.0:8000 --insecure --makemigrations
+
diff --git a/containers/xos/Dockerfile.devel b/containers/xos/Dockerfile.devel
index 5dc62a6..7580f16 100644
--- a/containers/xos/Dockerfile.devel
+++ b/containers/xos/Dockerfile.devel
@@ -1,4 +1,4 @@
-FROM       ubuntu:14.04.3
+FROM       ubuntu:14.04.4
 
 # XXX Workaround for docker bug:
 # https://github.com/docker/docker/issues/6345
@@ -29,7 +29,7 @@
     python-setuptools \
     tar \
     wget \
-##### observer dependencies
+##### synchronizer dependencies
     python-keystoneclient \
     python-novaclient \
     python-neutronclient \
@@ -37,19 +37,22 @@
     python-ceilometerclient
 
 RUN pip install \
-    django==1.7 \
+    ca-certs-locater \
+    "django>=1.8,<1.8.99" \
     django-bitfield \
     django-crispy-forms \
     django-encrypted-fields \
     django-extensions \
-    django-filter==0.11.0 \
+    django-filter \
     django-geoposition \
     django-ipware \
     django_rest_swagger \
-    django-suit==0.3a1 \
+    django-suit==0.3a3 \
     django-timezones \
     djangorestframework==3.3.3 \
     dnslib \
+    google-api-python-client \
+    httplib2 \
     jinja2 \
     lxml \
     markdown \
@@ -58,6 +61,7 @@
     psycopg2 \
     python-ceilometerclient \
     python-dateutil \
+    python-gflags \
     python-keyczar \
     python-logstash \
     pygraphviz \
@@ -65,14 +69,7 @@
     pyyaml \
     requests
 
-RUN easy_install --upgrade httplib2
-
-RUN easy_install \
-    python_gflags \
-    google_api_python_client \
-    httplib2.ca_certs_locater
-
-ADD http://code.jquery.com/jquery-1.9.1.min.js /usr/local/lib/python2.7/dist-packages/suit/static/suit/js/
+ADD http://code.jquery.com/jquery-1.12.3.min.js /usr/local/lib/python2.7/dist-packages/suit/static/suit/js/
 
 # Install XOS
 ADD xos /opt/xos
diff --git a/containers/xos/Dockerfile.templ b/containers/xos/Dockerfile.templ
index cfcf9ac..da78613 100644
--- a/containers/xos/Dockerfile.templ
+++ b/containers/xos/Dockerfile.templ
@@ -1,4 +1,4 @@
-FROM       ubuntu:14.04.3
+FROM       ubuntu:14.04.4
 
 # XXX Workaround for docker bug:
 # https://github.com/docker/docker/issues/6345
@@ -29,36 +29,38 @@
     python-setuptools \
     tar \
     wget \
-##### observer dependencies
+##### synchronizer dependencies
     python-keystoneclient \
     python-novaclient \
     python-neutronclient \
     python-glanceclient \
     python-ceilometerclient
 
-RUN pip install -U \
-    django==1.7 \
+RUN pip install \
+    ca-certs-locater \
+    "django>=1.8,<1.8.99" \
     django-bitfield \
     django-crispy-forms \
     django-encrypted-fields \
-    django_evolution \
     django-extensions \
-    django-filter==0.11.0 \
+    django-filter \
     django-geoposition \
     django-ipware \
     django_rest_swagger \
-    django-suit==0.3a1 \
+    django-suit==0.3a3 \
     django-timezones \
     djangorestframework==3.3.3 \
     dnslib \
-    google_api_python_client \
+    google-api-python-client \
     httplib2 \
-    httplib2.ca_certs_locater \
     lxml \
     markdown \
     netaddr \
+    pyOpenSSL \
+    psycopg2 \
+    python-ceilometerclient \
     python-dateutil \
-    python_gflags \
+    python-gflags \
     python-keyczar \
     python-logstash \
     pygraphviz \
@@ -66,7 +68,7 @@
     pyyaml \
     requests
 
-ADD http://code.jquery.com/jquery-1.9.1.min.js /usr/local/lib/python2.7/dist-packages/suit/static/suit/js/
+ADD http://code.jquery.com/jquery-1.12.3.min.js /usr/local/lib/python2.7/dist-packages/suit/static/suit/js/
 
 # Install XOS
 RUN git clone XOS_GIT_REPO -b XOS_GIT_BRANCH /tmp/xos && \
diff --git a/xos/configurations/common/Dockerfile.common b/xos/configurations/common/Dockerfile.common
deleted file mode 100644
index aedd245..0000000
--- a/xos/configurations/common/Dockerfile.common
+++ /dev/null
@@ -1,144 +0,0 @@
-FROM       ubuntu:14.04.2
-MAINTAINER Andy Bavier <acb@cs.princeton.edu>
-
-# XXX Workaround for docker bug:
-# https://github.com/docker/docker/issues/6345
-# Kernel 3.15 breaks docker, uss the line below as a workaround
-# until there is a fix
-RUN ln -s -f /bin/true /usr/bin/chfn
-# XXX End workaround
-
-# Install.
-RUN apt-get update && apt-get install -y \
-    git \
-    postgresql \
-    python-psycopg2 \
-    graphviz \
-    graphviz-dev \
-    libxslt1.1 \
-    libxslt1-dev \
-    python-pip \
-    tar \
-    gcc \
-    python-httplib2 \
-    geoip-database \
-    libgeoip1 \
-    wget \
-    curl \
-    python-dev \
-    libyaml-dev \
-    pkg-config \
-    python-pycurl
-
-RUN pip install django==1.7
-RUN pip install djangorestframework==2.4.4
-RUN pip install markdown  # Markdown support for the browseable API.
-RUN pip install pyyaml    # YAML content-type support.
-RUN pip install django-filter==0.11.0  # Filtering support
-RUN pip install lxml  # XML manipulation library
-RUN pip install netaddr # IP Addr library
-RUN pip install pytz
-RUN pip install django-timezones
-RUN pip install requests
-RUN pip install python-logstash
-RUN pip install django-crispy-forms
-RUN pip install django-geoposition
-RUN pip install django-extensions
-RUN pip install django-suit==0.3a1
-RUN pip install django-bitfield
-RUN pip install django-ipware
-RUN pip install django-encrypted-fields
-RUN pip install python-keyczar
-RUN pip install pygraphviz --install-option="--include-path=/usr/include/graphviz" --install-option="--library-path=/usr/lib/graphviz/"
-RUN pip install dnslib
-
-RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-keystoneclient
-RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-novaclient
-RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-neutronclient
-RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-glanceclient
-RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-ceilometerclient
-
-RUN pip install django_rest_swagger
-
-RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-setuptools
-RUN easy_install python_gflags
-RUN easy_install --upgrade httplib2
-RUN easy_install google_api_python_client
-RUN easy_install httplib2.ca_certs_locater
-
-# Install custom Ansible
-RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-crypto
-RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-yaml
-RUN DEBIAN_FRONTEND=noninteractive apt-get install -y openssh-client
-RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-paramiko
-RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-jinja2
-RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-httplib2
-RUN git clone -b release1.8.2 git://github.com/ansible/ansible.git /opt/ansible
-RUN git clone -b release1.8.2 git://github.com/ansible/ansible-modules-extras.git /opt/ansible/lib/ansible/modules/extras
-RUN git clone -b release1.8.2 git://github.com/ansible/ansible-modules-extras.git /opt/ansible/v2/ansible/modules/extras
-RUN git clone git://github.com/sb98052/ansible-modules-core.git /opt/ansible/lib/ansible/modules/core
-RUN git clone git://github.com/sb98052/ansible-modules-core.git /opt/ansible/v2/ansible/modules/core
-ADD ansible-hosts /etc/ansible/hosts
-
-ADD http://code.jquery.com/jquery-1.9.1.min.js /usr/local/lib/python2.7/dist-packages/suit/static/suit/js/
-
-# For Observer
-RUN git clone git://git.planet-lab.org/fofum.git /tmp/fofum
-RUN cd /tmp/fofum; python setup.py install
-RUN rm -rf /tmp/fofum
-
-RUN mkdir -p /usr/local/share /bin
-ADD http://phantomjs.googlecode.com/files/phantomjs-1.7.0-linux-x86_64.tar.bz2 /usr/local/share/
-RUN tar jxvf /usr/local/share/phantomjs-1.7.0-linux-x86_64.tar.bz2 -C /usr/local/share/
-RUN rm -f /usr/local/share/phantomjs-1.7.0-linux-x86_64.tar.bz2
-RUN ln -s /usr/local/share/phantomjs-1.7.0-linux-x86_64 /usr/local/share/phantomjs
-RUN ln -s /usr/local/share/phantomjs/bin/phantomjs /bin/phantomjs
-
-# Supervisor
-RUN DEBIAN_FRONTEND=noninteractive apt-get install -y supervisor
-ADD observer.conf /etc/supervisor/conf.d/
-
-# Get XOS
-ADD xos /opt/xos
-
-# Initscript is broken in Ubuntu
-#ADD observer-initscript /etc/init.d/xosobserver
-
-RUN chmod +x /opt/xos/tools/xos-manage
-RUN /opt/xos/tools/xos-manage genkeys
-
-# Workaround for AUFS issue
-# https://github.com/docker/docker/issues/783#issuecomment-56013588
-RUN mkdir /etc/ssl/private-copy; mv /etc/ssl/private/* /etc/ssl/private-copy/; rm -r /etc/ssl/private; mv /etc/ssl/private-copy /etc/ssl/private; chmod -R 0700 /etc/ssl/private; chown -R postgres /etc/ssl/private
-
-# Set postgres password to match default value in settings.py
-RUN service postgresql start; sudo -u postgres psql -c "alter user postgres with password 'password';"
-
-# Turn DEBUG on so that devel server will serve static files
-#    (not necessary if --insecure is passed to 'manage.py runserver')
-# RUN sed -i 's/DEBUG = False/DEBUG = True/' /opt/xos/xos/settings.py
-
-# Cruft to workaround problems with migrations, should go away...
-RUN /opt/xos/tools/xos-manage remigrate
-
-# git clone uses cached copy, doesn't pick up latest
-RUN git -C /opt/ansible pull
-RUN git -C /opt/ansible/lib/ansible/modules/core pull
-RUN git -C /opt/ansible/v2/ansible/modules/core pull
-
-# install Tosca engine
-RUN apt-get install -y m4
-RUN pip install python-dateutil
-RUN bash /opt/xos/tosca/install_tosca.sh
-
-EXPOSE 8000
-
-# Set environment variables.
-ENV HOME /root
-
-# Define working directory.
-WORKDIR /root
-
-# Define default command.
-#CMD ["/bin/bash"]
-#CMD /opt/xos/tools/docker_start_xos
diff --git a/xos/core/admin.py b/xos/core/admin.py
index 5cc0ddd..4721a08 100644
--- a/xos/core/admin.py
+++ b/xos/core/admin.py
@@ -723,6 +723,7 @@
     class Meta:
         model = Deployment
         many_to_many = ["flavors", ]
+        fields = '__all__'
 
     def __init__(self, *args, **kwargs):
         request = kwargs.pop('request', None)
@@ -857,6 +858,7 @@
 
     class Meta:
         model = Controller
+        fields = '__all__'
 
     def __init__(self, *args, **kwargs):
         request = kwargs.pop('request', None)
@@ -1194,6 +1196,7 @@
         widgets = {
             'service': LinkedSelect
         }
+        fields = '__all__'
 
     def clean(self):
         cleaned_data = super(SliceForm, self).clean()
@@ -1422,6 +1425,7 @@
             'site': LinkedSelect,
             'deployment': LinkedSelect
         }
+        fields = '__all__'
 
     def __init__(self, *args, **kwargs):
         request = kwargs.pop('request', None)
@@ -1491,6 +1495,7 @@
             'node': LinkedSelect,
             'image': LinkedSelect
         }
+        fields = '__all__'
 
 
 class TagAdmin(XOSBaseAdmin):
@@ -1703,6 +1708,7 @@
     class Meta:
         model = User
         widgets = {'public_key': UploadTextareaWidget, }
+        fields = '__all__'
 
     def clean_password(self):
         # Regardless of what the user provides, return the initial value.
@@ -1737,6 +1743,7 @@
 
     class Meta:
         app_label = "core"
+        fields = '__all__'
 
     # The forms to add and change user instances
     form = UserChangeForm
@@ -1899,6 +1906,7 @@
         widgets = {
             'slice': LinkedSelect
         }
+        fields = '__all__'
 
 
 class ReservationAddForm(forms.ModelForm):
@@ -1923,6 +1931,7 @@
         widgets = {
             'slice': LinkedSelect
         }
+        fields = '__all__'
 
 
 class ReservationAddRefreshForm(ReservationAddForm):
@@ -2088,6 +2097,7 @@
             'topologyParameters': UploadTextareaWidget,
             'controllerParameters': UploadTextareaWidget,
         }
+        fields = '__all__'
 
 
 class NetworkAdmin(XOSBaseAdmin):
@@ -2313,6 +2323,7 @@
             'messages': forms.Textarea(attrs={'rows': 20, 'cols': 80, 'class': 'input-xxlarge'}),
             'output': forms.Textarea(attrs={'rows': 3, 'cols': 80, 'class': 'input-xxlarge'})
         }
+        fields = '__all__'
 
 
 class ProgramAdmin(XOSBaseAdmin):
@@ -2353,6 +2364,7 @@
         widgets = {
             'addresses': UploadTextareaWidget(attrs={'rows': 20, 'cols': 80, 'class': "input-xxlarge"}),
         }
+        fields = '__all__'
 
 
 class AddressPoolAdmin(XOSBaseAdmin):
diff --git a/xos/core/models/dashboard.py b/xos/core/models/dashboard.py
index 5228381..e667261 100644
--- a/xos/core/models/dashboard.py
+++ b/xos/core/models/dashboard.py
@@ -10,7 +10,7 @@
     url = StrippedCharField(max_length=1024, help_text="URL of Dashboard")
     controllers = models.ManyToManyField(Controller, blank=True, related_name="dashboardviews", through='ControllerDashboardView')
     enabled = models.BooleanField(default=True)
-    deployments = models.ManyToManyField(Deployment, blank=True, null=True, related_name="dashboardviews", help_text="Deployments that should be included in this view")
+    deployments = models.ManyToManyField(Deployment, blank=True, related_name="dashboardviews", help_text="Deployments that should be included in this view")
 
     def __unicode__(self):  return u'%s' % (self.name)
 
diff --git a/xos/core/models/plcorebase.py b/xos/core/models/plcorebase.py
index c8c25a7..00061b6 100644
--- a/xos/core/models/plcorebase.py
+++ b/xos/core/models/plcorebase.py
@@ -197,8 +197,8 @@
 
     # default values for created and updated are only there to keep evolution
     # from failing.
-    created = models.DateTimeField(auto_now_add=True, default=timezone.now)
-    updated = models.DateTimeField(auto_now=True, default=timezone.now)
+    created = models.DateTimeField(auto_now_add=True)
+    updated = models.DateTimeField(auto_now=True)
     enacted = models.DateTimeField(null=True, blank=True, default=None)
     policed = models.DateTimeField(null=True, blank=True, default=None)
 
diff --git a/xos/core/models/serviceclass.py b/xos/core/models/serviceclass.py
index ccc3180..a51b476 100644
--- a/xos/core/models/serviceclass.py
+++ b/xos/core/models/serviceclass.py
@@ -16,7 +16,7 @@
     membershipFee = models.IntegerField(default=0)
     membershipFeeMonths = models.IntegerField(default=12)
     upgradeRequiresApproval = models.BooleanField(default=False)
-    upgradeFrom = models.ManyToManyField('self', blank=True, null=True)
+    upgradeFrom = models.ManyToManyField('self', blank=True)
 
     class Meta(PlCoreBase.Meta):
        verbose_name_plural = "Service classes"
diff --git a/xos/services/ceilometer/admin.py b/xos/services/ceilometer/admin.py
index 062a2ae..b12340e 100644
--- a/xos/services/ceilometer/admin.py
+++ b/xos/services/ceilometer/admin.py
@@ -33,6 +33,7 @@
 
     class Meta:
         model = CeilometerService
+        fields = '__all__'
 
 class CeilometerServiceAdmin(ReadOnlyAwareAdmin):
     model = CeilometerService
@@ -86,6 +87,7 @@
 
     class Meta:
         model = MonitoringChannel
+        fields = '__all__'
 
 class MonitoringChannelAdmin(ReadOnlyAwareAdmin):
     list_display = ('backend_status_icon', 'id', )
@@ -136,6 +138,7 @@
 
     class Meta:
         model = SFlowService
+        fields = '__all__'
 
 class SFlowServiceAdmin(ReadOnlyAwareAdmin):
     model = SFlowService
@@ -191,6 +194,7 @@
 
     class Meta:
         model = SFlowTenant
+        fields = '__all__'
 
 class SFlowTenantAdmin(ReadOnlyAwareAdmin):
     list_display = ('backend_status_icon', 'creator', 'listening_endpoint' )
diff --git a/xos/services/cord/admin.py b/xos/services/cord/admin.py
index e7704d3..331cf1c 100644
--- a/xos/services/cord/admin.py
+++ b/xos/services/cord/admin.py
@@ -79,6 +79,7 @@
 
     class Meta:
         model = VOLTTenant
+        fields = '__all__'
 
 class VOLTTenantAdmin(ReadOnlyAwareAdmin):
     list_display = ('backend_status_icon', 'id', 'service_specific_id', 's_tag', 'c_tag', 'subscriber_root' )
@@ -133,6 +134,7 @@
 
     class Meta:
         model = VSGService
+        fields = '__all__'
 
 class VSGServiceAdmin(ReadOnlyAwareAdmin):
     model = VSGService
@@ -205,6 +207,8 @@
 
     class Meta:
         model = VSGTenant
+        fields = '__all__'
+
 
 class VSGTenantAdmin(ReadOnlyAwareAdmin):
     list_display = ('backend_status_icon', 'id', 'subscriber_tenant' )
@@ -238,6 +242,8 @@
 
     class Meta:
         model = VBNGService
+        fields = '__all__'
+
 
 class VBNGServiceAdmin(ReadOnlyAwareAdmin):
     model = VBNGService
@@ -301,6 +307,7 @@
 
     class Meta:
         model = VBNGTenant
+        fields = '__all__'
 
 class VBNGTenantAdmin(ReadOnlyAwareAdmin):
     list_display = ('backend_status_icon', 'id', 'subscriber_tenant' )
@@ -377,6 +384,8 @@
 
     class Meta:
         model = CordSubscriberRoot
+        fields = '__all__'
+
 
 class CordSubscriberRootAdmin(ReadOnlyAwareAdmin):
     list_display = ('backend_status_icon', 'id',  'name', )
diff --git a/xos/services/exampleservice/admin.py b/xos/services/exampleservice/admin.py
index f679e4e..f4bf20d 100644
--- a/xos/services/exampleservice/admin.py
+++ b/xos/services/exampleservice/admin.py
@@ -13,6 +13,7 @@
 
     class Meta:
         model = ExampleService
+        fields = '__all__'
 
     def __init__(self, *args, **kwargs):
         super(ExampleServiceForm, self).__init__(*args, **kwargs)
@@ -64,6 +65,7 @@
 
     class Meta:
         model = ExampleTenant
+        fields = '__all__'
 
     creator = forms.ModelChoiceField(queryset=User.objects.all())
 
diff --git a/xos/services/hpc/admin.py b/xos/services/hpc/admin.py
index d9f28c6..208f5af 100644
--- a/xos/services/hpc/admin.py
+++ b/xos/services/hpc/admin.py
@@ -125,6 +125,7 @@
         widgets = {
             'serviceProvider' : LinkedSelect
         }
+        fields = '__all__'
 
     def __init__(self, *args, **kwargs):
       request = kwargs.pop('request', None)
@@ -180,6 +181,7 @@
         widgets = {
             'contentProvider' : LinkedSelect
         }
+        fields = '__all__'
 
 class CDNPrefixAdmin(HPCAdmin):
     form = CDNPrefixForm
diff --git a/xos/services/onos/admin.py b/xos/services/onos/admin.py
index fb0f1d7..f7347ae 100644
--- a/xos/services/onos/admin.py
+++ b/xos/services/onos/admin.py
@@ -45,6 +45,7 @@
 
     class Meta:
         model = ONOSService
+        fields = '__all__'
 
 class ONOSServiceAdmin(ReadOnlyAwareAdmin):
     model = ONOSService
@@ -103,6 +104,7 @@
 
     class Meta:
         model = ONOSApp
+        fields = '__all__'
 
 class ONOSAppAdmin(ReadOnlyAwareAdmin):
     list_display = ('backend_status_icon', 'name', )
diff --git a/xos/services/vrouter/admin.py b/xos/services/vrouter/admin.py
index 318b3dc..dd701c4 100644
--- a/xos/services/vrouter/admin.py
+++ b/xos/services/vrouter/admin.py
@@ -28,6 +28,7 @@
 
     class Meta:
         model = VRouterService
+        fields = '__all__'
 
 class VRouterServiceAdmin(ReadOnlyAwareAdmin):
     model = VRouterService
@@ -93,6 +94,7 @@
 
     class Meta:
         model = VRouterTenant
+        fields = '__all__'
 
 class VRouterTenantAdmin(ReadOnlyAwareAdmin):
     list_display = ('backend_status_icon', 'id', 'subscriber_tenant', 'public_ip' )
diff --git a/xos/services/vtn/admin.py b/xos/services/vtn/admin.py
index c64e054..45aa8e8 100644
--- a/xos/services/vtn/admin.py
+++ b/xos/services/vtn/admin.py
@@ -53,6 +53,7 @@
 
     class Meta:
         model = VTNService
+        fields = '__all__'
 
 class VTNServiceAdmin(ReadOnlyAwareAdmin):
     model = VTNService
diff --git a/xos/services/vtr/admin.py b/xos/services/vtr/admin.py
index 5015fc8..6f6d978 100644
--- a/xos/services/vtr/admin.py
+++ b/xos/services/vtr/admin.py
@@ -89,6 +89,7 @@
 
     class Meta:
         model = VTRTenant
+        fields = '__all__'
 
 class VTRTenantAdmin(ReadOnlyAwareAdmin):
     list_display = ('backend_status_icon', 'id', 'target', 'test', 'argument' )
diff --git a/xos/synchronizers/base/backend.py b/xos/synchronizers/base/backend.py
index 5f11d46..c4f0f0f 100644
--- a/xos/synchronizers/base/backend.py
+++ b/xos/synchronizers/base/backend.py
@@ -3,7 +3,7 @@
 import threading
 import time
 from synchronizers.base.event_loop import XOSObserver
-from synchronizers.base.event_manager import EventListener
+#from synchronizers.base.event_manager import EventListener
 from xos.logger import Logger, logging
 from synchronizers.model_policy import run_policy
 from xos.config import Config
diff --git a/xos/synchronizers/base/run_ansible b/xos/synchronizers/base/run_ansible
index a504ec3..4e724fc 100755
--- a/xos/synchronizers/base/run_ansible
+++ b/xos/synchronizers/base/run_ansible
@@ -1,4 +1,3 @@
 #!/bin/bash
 
-source /opt/ansible/hacking/env-setup >> /dev/null
 ansible-playbook -v "$@"
diff --git a/xos/synchronizers/base/steps/sync_instances.yaml b/xos/synchronizers/base/steps/sync_instances.yaml
index a61e5cf..70da32d 100644
--- a/xos/synchronizers/base/steps/sync_instances.yaml
+++ b/xos/synchronizers/base/steps/sync_instances.yaml
@@ -2,28 +2,26 @@
 - hosts: 127.0.0.1
   connection: local
   tasks:
-  - nova_compute:
-      auth_url: {{ endpoint }}
-      login_username: {{ admin_user }}
-      login_password: {{ admin_password }}
-      login_tenant_name: {{ admin_tenant }}
+  - os_server:
       name: {{ name }}
+      auth:
+        auth_url: {{ endpoint }}
+        username: {{ admin_user }}
+        password: {{ admin_password }}
+        project_name: {{ project_name }}
       {% if delete -%}
       state: absent
       {% else -%}
       state: present
-      availability_zone: {{ availability_zone }}
-      image_name: {{ image_name }}
-      wait_for: 200
-      flavor_name: {{ flavor_name }}
-      user_data: "{{ user_data }}"
+      availability_zone: "{{ availability_zone }}"
+      image: {{ image_name }}
+      flavor: {{ flavor_name }}
+      timeout: 200
+      userdata: "{{ user_data }}"
       config_drive: yes
       nics:
-      {% for net in nics %}
-          - net-id: {{ net }}
-      {% endfor %}
-      {% for port in ports %}
-          - port-id: {{ port }}
+      {% for nic in nics %}
+          - {{ nic.kind }}-id: {{ nic.value }}
       {% endfor %}
 
       {% if meta %}
@@ -33,3 +31,4 @@
       {% endfor %}
       {% endif %}
       {% endif %}
+
diff --git a/xos/synchronizers/openstack/steps/sync_controller_networks.yaml b/xos/synchronizers/openstack/steps/sync_controller_networks.yaml
index b885516..eeab6d1 100644
--- a/xos/synchronizers/openstack/steps/sync_controller_networks.yaml
+++ b/xos/synchronizers/openstack/steps/sync_controller_networks.yaml
@@ -31,7 +31,7 @@
         {% if use_vtn %}
         gateway_ip={{ gateway }}
         {% else %}
-        no_gateway=true
+        gateway_ip="None"
         {% endif %}
         dns_nameservers=8.8.8.8
         cidr={{ cidr }}
diff --git a/xos/synchronizers/openstack/steps/sync_instances.py b/xos/synchronizers/openstack/steps/sync_instances.py
index 3a1bc52..e1561b5 100644
--- a/xos/synchronizers/openstack/steps/sync_instances.py
+++ b/xos/synchronizers/openstack/steps/sync_instances.py
@@ -168,7 +168,7 @@
                      'domain': controller.domain,
                      'admin_user': instance.creator.email,
                      'admin_password': instance.creator.remote_password,
-                     'admin_tenant': instance.slice.name,
+                     'project_name': instance.slice.login_base,
                      'tenant': instance.slice.name,
                      'tenant_description': instance.slice.description,
                      'name':instance_name,
diff --git a/xos/synchronizers/openstack/steps/sync_instances.yaml b/xos/synchronizers/openstack/steps/sync_instances.yaml
index 3e7182a..70da32d 100644
--- a/xos/synchronizers/openstack/steps/sync_instances.yaml
+++ b/xos/synchronizers/openstack/steps/sync_instances.yaml
@@ -2,21 +2,22 @@
 - hosts: 127.0.0.1
   connection: local
   tasks:
-  - nova_compute:
-      auth_url: {{ endpoint }}
-      login_username: {{ admin_user }}
-      login_password: {{ admin_password }}
-      login_tenant_name: {{ admin_tenant }}
+  - os_server:
       name: {{ name }}
+      auth:
+        auth_url: {{ endpoint }}
+        username: {{ admin_user }}
+        password: {{ admin_password }}
+        project_name: {{ project_name }}
       {% if delete -%}
       state: absent
       {% else -%}
       state: present
-      availability_zone: {{ availability_zone }}
-      image_name: {{ image_name }}
-      wait_for: 200
-      flavor_name: {{ flavor_name }}
-      user_data: "{{ user_data }}"
+      availability_zone: "{{ availability_zone }}"
+      image: {{ image_name }}
+      flavor: {{ flavor_name }}
+      timeout: 200
+      userdata: "{{ user_data }}"
       config_drive: yes
       nics:
       {% for nic in nics %}
@@ -30,3 +31,4 @@
       {% endfor %}
       {% endif %}
       {% endif %}
+
diff --git a/xos/templates/admin/base.html b/xos/templates/admin/base.html
index b47bf74..6fef7d6 100644
--- a/xos/templates/admin/base.html
+++ b/xos/templates/admin/base.html
@@ -24,7 +24,7 @@
   <link rel="stylesheet" type="text/css" href="{% block stylesheet_rtl %}{% static "admin/css/rtl.css" %}{% endblock %}"/>
   {% endif %}
   <script type="text/javascript">window.__admin_media_prefix__ = "{% filter escapejs %}{% static "admin/" %}{% endfilter %}";</script>
-  <script src="{% static 'suit/js/jquery-1.9.1.min.js' %}"></script>
+  <script src="{% static 'suit/js/jquery-1.12.3.min.js' %}"></script>
   <script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
   <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
   <script type="text/javascript" src="{% static 'log4javascript-1.4.6/log4javascript.js' %}"></script>
diff --git a/xos/templates/admin/dashboard/dashboard_base.html b/xos/templates/admin/dashboard/dashboard_base.html
index 5d510b8..6977da4 100644
--- a/xos/templates/admin/dashboard/dashboard_base.html
+++ b/xos/templates/admin/dashboard/dashboard_base.html
@@ -12,11 +12,6 @@
 <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
 <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.2/leaflet.css" />
 <script src="http://cdn.leafletjs.com/leaflet-0.7.2/leaflet.js"></script>
-
-
-<!-- no need to include jquery here as it's already included by base.html. Including it multiple times will break mtuity statistics. -->
-<!-- src="http://code.jquery.com/jquery-1.9.1.js" -->
-
 <script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
 <script src="http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.4/jquery.dataTables.min.js"></script>
 <script type="text/javascript" src="{% static 'log4javascript-1.4.6/log4javascript.js' %}"></script>
diff --git a/xos/templates/admin/login.html b/xos/templates/admin/login.html
index 386d579..34b7415 100644
--- a/xos/templates/admin/login.html
+++ b/xos/templates/admin/login.html
@@ -6,7 +6,7 @@
 {% if XOS_BRANDING_CSS %}
 <link rel="stylesheet" type="text/css" href="{{ XOS_BRANDING_CSS }}">
 {% endif %}
-<script src="{% static 'suit/js/jquery-1.9.1.min.js' %}"></script>
+<script src="{% static 'suit/js/jquery-1.12.3.min.js' %}"></script>
 <script src="http://code.jquery.com/ui/1.11.0/jquery-ui.js"></script>
 {% endblock %}
 
diff --git a/xos/templates/admin/wholePage.html b/xos/templates/admin/wholePage.html
index 156c8aa..1df13c9 100644
--- a/xos/templates/admin/wholePage.html
+++ b/xos/templates/admin/wholePage.html
@@ -5,7 +5,7 @@
 <link rel="stylesheet" type="text/css" href="{% static 'suit/bootstrap/css/bootstrap.min.css' %}" media="all"/>
 <link rel="stylesheet" type="text/css" href="{% static 'suit/css/suit.css' %}" media="all">
 <link rel="stylesheet" type="text/css" href="{% static 'xos.css' %}" media="all">
-<script src="{% static 'suit/js/jquery-1.9.1.min.js' %}"></script>
+<script src="{% static 'suit/js/jquery-1.12.3.min.js' %}"></script>
 <script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
 {% block extrahead %}{% endblock %}
 </head>
diff --git a/xos/tools/xos-manage b/xos/tools/xos-manage
index e955b5d..3aa5a75 100755
--- a/xos/tools/xos-manage
+++ b/xos/tools/xos-manage
@@ -128,7 +128,7 @@
     mkdir -p private_keys
     echo "Generating keys"
 	keyczart create --location=private_keys --name="OpenCloud" --purpose=crypt --asymmetric=rsa
-	keyczart addkey --location=private_keys --status=primary --size=1024
+	keyczart addkey --location=private_keys --status=primary --size=2048
 	keyczart pubkey --location=private_keys --destination=public_keys
     if [[ ! -f public_keys/1 ]]; then
         echo "FAILED to create keys"