Trove Horizon plugin.
Go to file
Samuel Matzek 220433719e Fix unstable test case
The DatabaseConfigurationsTests.test_values_tab_discard_action
test is unstable, failing and succeeding on subsequent runs.

The root cause of the instability is the django local memory cache
used by the test cases. This cache has defaults that will cull
33% of the cache entries when it reaches its max capacity of 300.

During the test runs the cache becomes full and the culling will
randomly choose to cull the cached configuratoin being used by the
test case about 33% of the time. This leads to test case failure.

In a production environment the cache used is memcached which has
different behavior. If the cache entry were still culled, for the
"discard changes" option, that would be equivalent to a discard
since the configuration manager would re-fetch.

In the test case flow it breaks because the 'changed values'
fetch gets a cache miss.

The fix is to set the cache configuration for the tests to use
a higher max_entries value and change the cull frequency to only
cull 5% of the entries every cull.

Change-Id: I44bcf14c4ed17505de94b44b01ffcccd818399b7
2017-11-09 13:30:03 -06:00
devstack Ensure to compile translation catalogs 2016-02-24 00:37:48 +09:00
releasenotes Merge "Update reno for stable/pike" 2017-11-03 12:21:49 +00:00
tools make trove-dashboard use upper-constraints 2016-11-03 22:02:45 +00:00
trove_dashboard Fix unstable test case 2017-11-09 13:30:03 -06:00
.gitignore Add reno for release notes management 2016-04-14 20:56:32 +00:00
.gitreview Add missing .gitreview file 2016-01-12 16:44:45 +00:00
babel-django.cfg Setup for translations 2016-01-26 07:46:57 +09:00
babel-djangojs.cfg Setup for translations 2016-01-26 07:46:57 +09:00
CONTRIBUTING.rst Completing the plugin 2015-12-18 15:53:31 -07:00
HACKING.rst Completing the plugin 2015-12-18 15:53:31 -07:00
LICENSE Completing the plugin 2015-12-18 15:53:31 -07:00
manage.py Completing the plugin 2015-12-18 15:53:31 -07:00
MANIFEST.in Completing the plugin 2015-12-18 15:53:31 -07:00
README.rst Update launchpad link to trove-dashboard 2017-03-20 21:24:02 +09:00
requirements.txt Completing the plugin 2015-12-18 15:53:31 -07:00
run_tests.sh Completing the plugin 2015-12-18 15:53:31 -07:00
setup.cfg Update home-page in setup.cfg 2016-12-05 13:25:51 +08:00
setup.py Completing the plugin 2015-12-18 15:53:31 -07:00
test-requirements.txt Remove discover from test-requirements 2016-07-21 07:56:28 +00:00
tox.ini Fix Django 1.10 Compatibility 2016-12-09 14:51:46 -05:00

OpenStack Dashboard plugin for Trove project

image

How to use with Horizon on server:

Use pip to install the package on the server running Horizon. Then either copy or link the files in trove_dashboard/enabled to openstack_dashboard/local/enabled. This step will cause the Horizon service to pick up the trove plugin when it starts.

How to use with devstack:

Add the following to your devstack local.conf file:

enable_plugin trove-dashboard git://git.openstack.org/openstack/trove-dashboard

To run unit tests:

./run_tests.sh

Editing Code

Apache

Make a change to trove-dashboard then goto to the horizon directory and compress the code with django and then restart apache.:

# rsync code to /opt/stack/trove-dashboard
# copy or link files from trove-dashboard/enabled/* to horizon/openstack_dashboard/local/enabled/
cd /opt/stack/horizon
python manage.py compress
python manage.py collectstatic --noinput
sudo service apache2 restart

Django

You can also speed up development time using the django test server instead of apache.:

/opt/stack/horizon/run_tests.sh --runserver

If you set COMPRESS_ENABLED and COMPRESS_OFFLINE to False in local_settings.py that allows you to bypass the compress and collectstatic as well.

Settings

The use of a cross-process cache such as Memcached is required.

Install Memcached itself and a Memcached binding such as python-memcached.

For a single horizon instance use the CACHES setting like the example below.

CACHES = {
'default': {

'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': '127.0.0.1:11211',

},

}

For multiple horizon instances behind a load balancer configure each instance to use the same cache like the example below.

CACHES = {
'default': {

'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': [u'10.2.100.133:11211', u'10.2.100.134:11211'']

},

}

NOTE:

As of the Mitaka release, the dashboard for trove is now maintained outside of the Horizon codebase, in this repository.

Trove project: https://git.openstack.org/openstack/trove

Trove at wiki.openstack.org: https://wiki.openstack.org/wiki/Trove

Launchpad project: https://launchpad.net/trove-dashboard