PK BI%F %F ganeti-webmgr-0.10/index.html
Ganeti Web Manager is a Django based web frontend for managing Ganeti virtualization clusters. Since Ganeti only provides a command-line interface, Ganeti Web Manager‘s goal is to provide a user friendly interface to Ganeti by being feature complete with Ganeti’s RAPI. On top of Ganeti it provides a permission system for managing access to clusters and virtual machines and an in browser VNC console.
If you don’t already have a Ganeti cluster setup, these directions can help you get started. If you are looking for support, please contact us through these channels. If you are looking to deploy Ganeti Web Manager for the first time, check out our Installation guide. If you already have a Ganeti Web Manager instance running it might be time to upgrade.
Ganeti Web Manager is licensed under the GPLv2. It is currently developed and maintained by the Oregon State University Open Source Lab and a handful of volunteers. If you would like to get involved in development see our development guide.
Currently we have use Fabric, a tool for streamlining administration tasks, to deploy Ganeti Web Manager.
Before installing Ganeti Web Manager, make sure you have all the required Dependencies installed.
Download and unpack the latest release, currently this is 0.9.2.
# Use wget or curl to download from the command line. wget https://code.osuosl.org/attachements/download/3231/ganeti-webmgr-0.9.2.tar.gz
Change to the project directory.
cd ganeti_webmgr
Run Fabric to automatically create a python virtual environment and install required dependencies. This may take a few minutes.
# Deploy a production environment
fab deploy
Changed in version 0.10: fab prod deploy is now fab deploy. fab dev deploy is still the same.
Note
If you would like a more noisy output, adding v, as in fab v deploy, will provide more verbosity.
While in the project root, copy the default settings file settings.py.dist to settings.py:
cp settings.py.dist settings.py
Getting Ganeti Web Manager up and running requires a minimum configuration of a database server. If you don’t have a database server available, and are fine using SQLite, you can skip this step.
Edit settings.py and change the database backend to your preferred database along with filling any any relevant details relating to your database setup.
'default': {
# Add 'postgresql_psycopg2', 'postgresql', 'mysql',
# 'sqlite3' or 'oracle'.
'ENGINE': 'django.db.backends.',
# Or path to database file if using sqlite3.
'NAME': 'ganeti.db',
# Not used with sqlite3.
'USER': '',
# Not used with sqlite3.
'PASSWORD': '',
# Set to empty string for localhost. Not used with sqlite3.
'HOST': '',
# Set to empty string for default. Not used with sqlite3.
'PORT': '',
}
Initialize Database:
MySQL/SQLite:
# Create new tables and migrate all apps using southdb
./manage.py syncdb --migrate
Postgres:
Note
This assumes your doing a fresh install of Ganeti Web Manager on a new Postgres database.
./manage.py syncdb --all
./manage.py migrate --fake
Build the search indexes
./manage.py rebuild_index
Note
Running ./manage.py update_index on a regular basis ensures that the search indexes stay up-to-date when models change in Ganeti Web Manager.
Congradulations! Ganeti Web Manager is now installed and initialized. Next, you’ll want to look into Configuring and Deployment, if you are going to be setting up a production instance. Otherwise, if you just want to play around with Ganeti Web Manager, or are developing, take a look at Testing.
Ganeti Web Manager caches objects for performance reasons.
Ganeti is a bottleneck when accessing data. In tests, over 97% of time taken to render a normal page in Ganeti Web Manager is spent waiting for Ganeti to respond to queries. Thus, Ganeti Web Manager caches some of Ganeti’s data.
Sometimes it is necessary to refresh objects manually. To do this, navigate to the detail page for the cluster of the object that needs to be refreshed, and click the “Refresh” button. This will refresh the cluster and all of its objects.
Some database-bound objects cache Ganeti data automatically. The functionality for this caching is encapsulated in the CachedClusterObject class. Any models which inherit from this class will gain this functionality.
The cache cannot currently be bypassed reasonably. CachedClusterObject uses __init__() to do part of its work. An unreasonable, albeit working, technique is to abuse the ORM:
values = VirtualMachine.objects.get(id=id)
vm = VirtualMachine()
for k, v in values.items():
setattr(vm, k, v)
RAPI clients are cached in memory, and a hash of cluster information is stored in order to locate them quickly. The entire scheme is no longer necessary since RAPI clients are no longer expensive to allocate, and will be removed soon.
Please activate JavaScript to enable the search functionality.
From here you can search these documents. Enter your search words into the box below and click "search". Note that the search function will automatically search for all of the words. Pages containing fewer words won't appear in the result list.