Coder Social home page Coder Social logo

osuosl / ganeti_webmgr Goto Github PK

View Code? Open in Web Editor NEW
64.0 26.0 32.0 13.75 MB

Ganeti Web Manager is a Django based web application that allows administrators and clients access to their ganeti clusters. It includes a permissions and quota system that allows administrators to grant access to both clusters and virtual machines. It also includes user groups for structuring access to organizations.

Home Page: https://code.osuosl.org/projects/ganeti-webmgr

License: GNU General Public License v2.0

Ruby 0.01% Python 57.28% CSS 1.88% JavaScript 29.82% HTML 9.70% Makefile 0.01% Shell 1.16% C 0.10% Dockerfile 0.04%

ganeti_webmgr's Introduction

Ganeti Web Manager

Ganeti Web Manager is a Django-based web application that allows administrators and clients access to their ganeti clusters.

Documentation

Documentation for Ganeti Web Manager is hosted by Read the Docs. You can find up to date documentation for current and previous releases at http://ganeti-webmgr.readthedocs.org/en/latest.

If your looking to develop or contribute to GWM, please refer to the development documentation at http://ganeti-webmgr.readthedocs.org/en/develop

Building the Documentation

Our documentation is written in ReStructuredText and built using Sphinx. First you will need to install the dependencies to a virtualenv or to your system's python installation:

pip install -r requirements/docs.txt

Then you will need to run the following commands to build the documentation:

cd docs/
make html

The documentation will be located at docs/build/html/ as html files. If you open index.html with your web browser, it will take you to the table of contents.

Installation

For installation instructions please refer to our installation documentation.

Compatibility

For a list of versions and browsers supported by Ganeti Web Manager check our compatibility documentation.

Dependencies

A list of dependencies can be found in our requirements documentation.

Links

ganeti_webmgr's People

Contributors

ashokgowtham avatar bramwelt avatar bsu avatar chancez avatar cryptw avatar dean avatar dependabot[bot] avatar ekohl avatar gpernot avatar iankronquist avatar jajsmith avatar jordane avatar justinnoah avatar kennric avatar kennym avatar khashf avatar kylc avatar lejonet avatar lmorfitt avatar mathuin avatar mostawesomedude avatar pastly avatar pbanaszkiewicz avatar pramttl avatar qris avatar ramereth avatar regnauld avatar shemuwel avatar tolvstaa avatar tschuy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ganeti_webmgr's Issues

setup failure: pycrypto: fatal error: Python.h: No such file or directory

Hello,

Pretty fresh ubuntu 14.04, checkout from git, sudo ./scripts/setup.sh -D mysql :

Numerous warnings like this:

  The repository located at ftp.osuosl.org is not a trusted or secure host and is being ignored. If this repository is available via HTTPS it is recommended to use HTTPS instead, otherwise you may silence this warning and allow it anyways with '--trusted-host ftp.osuosl.org'.                                                                                    

Then, the pycrypto dependency fails:

  Running setup.py install for pycrypto
    Complete output from command /opt/ganeti_webmgr/bin/python -c "import setuptools, tokenize;__file__='/tmp/pip-build-GBP3a1/pycrypto/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-0vl95f-record/install-record.txt --single-version-externally-managed --compile --install-headers /opt/ganeti_webmgr/include/site/python2.7/pycrypto:
    running install
    running build
    running build_py
    creating build
    creating build/lib.linux-x86_64-2.7
    creating build/lib.linux-x86_64-2.7/Crypto
    copying lib/Crypto/__init__.py -> build/lib.linux-x86_64-2.7/Crypto
    copying lib/Crypto/pct_warnings.py -> build/lib.linux-x86_64-2.7/Crypto
    creating build/lib.linux-x86_64-2.7/Crypto/Hash
    copying lib/Crypto/Hash/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
    copying lib/Crypto/Hash/MD2.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
    copying lib/Crypto/Hash/SHA256.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
    copying lib/Crypto/Hash/RIPEMD.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
    copying lib/Crypto/Hash/SHA384.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
    copying lib/Crypto/Hash/SHA512.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
    copying lib/Crypto/Hash/MD5.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
    copying lib/Crypto/Hash/SHA.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
    copying lib/Crypto/Hash/MD4.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
    copying lib/Crypto/Hash/SHA224.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
    copying lib/Crypto/Hash/HMAC.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
    copying lib/Crypto/Hash/hashalgo.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
    creating build/lib.linux-x86_64-2.7/Crypto/Cipher
    copying lib/Crypto/Cipher/DES.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
    copying lib/Crypto/Cipher/CAST.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
    copying lib/Crypto/Cipher/blockalgo.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
    copying lib/Crypto/Cipher/DES3.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
    copying lib/Crypto/Cipher/PKCS1_OAEP.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
    copying lib/Crypto/Cipher/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
    copying lib/Crypto/Cipher/ARC2.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
    copying lib/Crypto/Cipher/ARC4.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
    copying lib/Crypto/Cipher/XOR.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
    copying lib/Crypto/Cipher/PKCS1_v1_5.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
    copying lib/Crypto/Cipher/AES.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
    copying lib/Crypto/Cipher/Blowfish.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
    creating build/lib.linux-x86_64-2.7/Crypto/Util
    copying lib/Crypto/Util/asn1.py -> build/lib.linux-x86_64-2.7/Crypto/Util
    copying lib/Crypto/Util/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/Util
    copying lib/Crypto/Util/winrandom.py -> build/lib.linux-x86_64-2.7/Crypto/Util
    copying lib/Crypto/Util/number.py -> build/lib.linux-x86_64-2.7/Crypto/Util
    copying lib/Crypto/Util/Counter.py -> build/lib.linux-x86_64-2.7/Crypto/Util
    copying lib/Crypto/Util/randpool.py -> build/lib.linux-x86_64-2.7/Crypto/Util
    copying lib/Crypto/Util/RFC1751.py -> build/lib.linux-x86_64-2.7/Crypto/Util
    copying lib/Crypto/Util/py21compat.py -> build/lib.linux-x86_64-2.7/Crypto/Util
    copying lib/Crypto/Util/_number_new.py -> build/lib.linux-x86_64-2.7/Crypto/Util
    copying lib/Crypto/Util/py3compat.py -> build/lib.linux-x86_64-2.7/Crypto/Util
    creating build/lib.linux-x86_64-2.7/Crypto/Random
    copying lib/Crypto/Random/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/Random
    copying lib/Crypto/Random/_UserFriendlyRNG.py -> build/lib.linux-x86_64-2.7/Crypto/Random
    copying lib/Crypto/Random/random.py -> build/lib.linux-x86_64-2.7/Crypto/Random
    creating build/lib.linux-x86_64-2.7/Crypto/Random/Fortuna
    copying lib/Crypto/Random/Fortuna/FortunaAccumulator.py -> build/lib.linux-x86_64-2.7/Crypto/Random/Fortuna
    copying lib/Crypto/Random/Fortuna/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/Random/Fortuna
    copying lib/Crypto/Random/Fortuna/FortunaGenerator.py -> build/lib.linux-x86_64-2.7/Crypto/Random/Fortuna
    copying lib/Crypto/Random/Fortuna/SHAd256.py -> build/lib.linux-x86_64-2.7/Crypto/Random/Fortuna
    creating build/lib.linux-x86_64-2.7/Crypto/Random/OSRNG
    copying lib/Crypto/Random/OSRNG/fallback.py -> build/lib.linux-x86_64-2.7/Crypto/Random/OSRNG
    copying lib/Crypto/Random/OSRNG/nt.py -> build/lib.linux-x86_64-2.7/Crypto/Random/OSRNG
    copying lib/Crypto/Random/OSRNG/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/Random/OSRNG
    copying lib/Crypto/Random/OSRNG/posix.py -> build/lib.linux-x86_64-2.7/Crypto/Random/OSRNG
    copying lib/Crypto/Random/OSRNG/rng_base.py -> build/lib.linux-x86_64-2.7/Crypto/Random/OSRNG
    creating build/lib.linux-x86_64-2.7/Crypto/SelfTest
    copying lib/Crypto/SelfTest/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest
    copying lib/Crypto/SelfTest/st_common.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest
    creating build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_ARC4.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_Blowfish.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_ARC2.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_XOR.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_DES3.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_DES.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_CAST.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_pkcs1_oaep.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/common.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_AES.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_pkcs1_15.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
    creating build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_HMAC.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_SHA384.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_RIPEMD.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_SHA256.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_MD5.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_MD4.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_SHA512.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/common.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_SHA.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_SHA224.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_MD2.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
    creating build/lib.linux-x86_64-2.7/Crypto/SelfTest/Protocol
    copying lib/Crypto/SelfTest/Protocol/test_KDF.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Protocol
    copying lib/Crypto/SelfTest/Protocol/test_AllOrNothing.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Protocol
    copying lib/Crypto/SelfTest/Protocol/test_rfc1751.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Protocol
    copying lib/Crypto/SelfTest/Protocol/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Protocol
    copying lib/Crypto/SelfTest/Protocol/test_chaffing.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Protocol
    creating build/lib.linux-x86_64-2.7/Crypto/SelfTest/PublicKey
    copying lib/Crypto/SelfTest/PublicKey/test_importKey.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/PublicKey
    copying lib/Crypto/SelfTest/PublicKey/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/PublicKey
    copying lib/Crypto/SelfTest/PublicKey/test_DSA.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/PublicKey
    copying lib/Crypto/SelfTest/PublicKey/test_ElGamal.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/PublicKey
    copying lib/Crypto/SelfTest/PublicKey/test_RSA.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/PublicKey
    creating build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random
    copying lib/Crypto/SelfTest/Random/test__UserFriendlyRNG.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random
    copying lib/Crypto/SelfTest/Random/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random
    copying lib/Crypto/SelfTest/Random/test_random.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random
    copying lib/Crypto/SelfTest/Random/test_rpoolcompat.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random
    creating build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/Fortuna
    copying lib/Crypto/SelfTest/Random/Fortuna/test_FortunaAccumulator.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/Fortuna
    copying lib/Crypto/SelfTest/Random/Fortuna/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/Fortuna
    copying lib/Crypto/SelfTest/Random/Fortuna/test_SHAd256.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/Fortuna
    copying lib/Crypto/SelfTest/Random/Fortuna/test_FortunaGenerator.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/Fortuna
    creating build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/OSRNG
    copying lib/Crypto/SelfTest/Random/OSRNG/test_generic.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/OSRNG
    copying lib/Crypto/SelfTest/Random/OSRNG/test_posix.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/OSRNG
    copying lib/Crypto/SelfTest/Random/OSRNG/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/OSRNG
    copying lib/Crypto/SelfTest/Random/OSRNG/test_nt.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/OSRNG
    copying lib/Crypto/SelfTest/Random/OSRNG/test_winrandom.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/OSRNG
    copying lib/Crypto/SelfTest/Random/OSRNG/test_fallback.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/OSRNG
    creating build/lib.linux-x86_64-2.7/Crypto/SelfTest/Util
    copying lib/Crypto/SelfTest/Util/test_number.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Util
    copying lib/Crypto/SelfTest/Util/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Util
    copying lib/Crypto/SelfTest/Util/test_winrandom.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Util
    copying lib/Crypto/SelfTest/Util/test_asn1.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Util
    copying lib/Crypto/SelfTest/Util/test_Counter.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Util
    creating build/lib.linux-x86_64-2.7/Crypto/SelfTest/Signature
    copying lib/Crypto/SelfTest/Signature/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Signature
    copying lib/Crypto/SelfTest/Signature/test_pkcs1_pss.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Signature
    copying lib/Crypto/SelfTest/Signature/test_pkcs1_15.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Signature
    creating build/lib.linux-x86_64-2.7/Crypto/Protocol
    copying lib/Crypto/Protocol/Chaffing.py -> build/lib.linux-x86_64-2.7/Crypto/Protocol
    copying lib/Crypto/Protocol/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/Protocol
    copying lib/Crypto/Protocol/AllOrNothing.py -> build/lib.linux-x86_64-2.7/Crypto/Protocol
    copying lib/Crypto/Protocol/KDF.py -> build/lib.linux-x86_64-2.7/Crypto/Protocol
    creating build/lib.linux-x86_64-2.7/Crypto/PublicKey
    copying lib/Crypto/PublicKey/_RSA.py -> build/lib.linux-x86_64-2.7/Crypto/PublicKey
    copying lib/Crypto/PublicKey/_slowmath.py -> build/lib.linux-x86_64-2.7/Crypto/PublicKey
    copying lib/Crypto/PublicKey/pubkey.py -> build/lib.linux-x86_64-2.7/Crypto/PublicKey
    copying lib/Crypto/PublicKey/ElGamal.py -> build/lib.linux-x86_64-2.7/Crypto/PublicKey
    copying lib/Crypto/PublicKey/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/PublicKey
    copying lib/Crypto/PublicKey/RSA.py -> build/lib.linux-x86_64-2.7/Crypto/PublicKey
    copying lib/Crypto/PublicKey/_DSA.py -> build/lib.linux-x86_64-2.7/Crypto/PublicKey
    copying lib/Crypto/PublicKey/DSA.py -> build/lib.linux-x86_64-2.7/Crypto/PublicKey
    creating build/lib.linux-x86_64-2.7/Crypto/Signature
    copying lib/Crypto/Signature/PKCS1_PSS.py -> build/lib.linux-x86_64-2.7/Crypto/Signature
    copying lib/Crypto/Signature/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/Signature
    copying lib/Crypto/Signature/PKCS1_v1_5.py -> build/lib.linux-x86_64-2.7/Crypto/Signature
    running build_ext
    running build_configure
    checking for gcc... gcc
    checking whether the C compiler works... yes
    checking for C compiler default output file name... a.out
    checking for suffix of executables...
    checking whether we are cross compiling... no
    checking for suffix of object files... o
    checking whether we are using the GNU C compiler... yes
    checking whether gcc accepts -g... yes
    checking for gcc option to accept ISO C89... none needed
    checking for __gmpz_init in -lgmp... no
    checking for __gmpz_init in -lmpir... no
    checking whether mpz_powm is declared... no
    checking whether mpz_powm_sec is declared... no
    checking how to run the C preprocessor... gcc -E
    checking for grep that handles long lines and -e... /bin/grep
    checking for egrep... /bin/grep -E
    checking for ANSI C header files... yes
    checking for sys/types.h... yes
    checking for sys/stat.h... yes
    checking for stdlib.h... yes
    checking for string.h... yes
    checking for memory.h... yes
    checking for strings.h... yes
    checking for inttypes.h... yes
    checking for stdint.h... yes
    checking for unistd.h... yes
    checking for inttypes.h... (cached) yes
    checking limits.h usability... yes
    checking limits.h presence... yes
    checking for limits.h... yes
    checking stddef.h usability... yes
    checking stddef.h presence... yes
    checking for stddef.h... yes
    checking for stdint.h... (cached) yes
    checking for stdlib.h... (cached) yes
    checking for string.h... (cached) yes
    checking wchar.h usability... yes
    checking wchar.h presence... yes
    checking for wchar.h... yes
    checking for inline... inline
    checking for int16_t... yes
    checking for int32_t... yes
    checking for int64_t... yes
    checking for int8_t... yes
    checking for size_t... yes
    checking for uint16_t... yes
    checking for uint32_t... yes
    checking for uint64_t... yes
    checking for uint8_t... yes
    checking for stdlib.h... (cached) yes
    checking for GNU libc compatible malloc... yes
    checking for memmove... yes
    checking for memset... yes
    configure: creating ./config.status
    config.status: creating src/config.h
    warning: GMP or MPIR library not found; Not building Crypto.PublicKey._fastmath.
    building 'Crypto.Hash._MD2' extension
    creating build/temp.linux-x86_64-2.7
    creating build/temp.linux-x86_64-2.7/src
    x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -fwrapv -Wall -Wstrict-prototypes -fPIC -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/usr/include/python2.7 -c src/MD2.c -o build/temp.linux-x86_64-2.7/src/MD2.o
    src/MD2.c:31:20: fatal error: Python.h: No such file or directory
     #include "Python.h"
                        ^
    compilation terminated.
    error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

    ----------------------------------------
Command "/opt/ganeti_webmgr/bin/python -c "import setuptools, tokenize;__file__='/tmp/pip-build-GBP3a1/pycrypto/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-0vl95f-record/install-record.txt --single-version-externally-managed --compile --install-headers /opt/ganeti_webmgr/include/site/python2.7/pycrypto" failed with error code 1 in /tmp/pip-build-GBP3a1/pycrypto
/opt/ganeti_webmgr/local/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
  InsecurePlatformWarning
Something went wrong. Could not install GWM nor its dependencies
in this virtual environment:
  /opt/ganeti_webmgr
Please refer to the official GWM documentation for assistance:
  http://ganeti-webmgr.readthedocs.org/en/latest/

ext storage support

From Darius Spitznagel

Hello guys,

it would be really cool if you could implement "ext" disk template support (choosing provider + parameter) in your "Create VM" wizard.
I have written my own "lvm based" extstorage provider which you can use to test.
Look at the bottom of https://code.google.com/p/ganeti/wiki/ExtStorageProviders and you will find it.

Kind regards
Darius

error page links to code.osuosl.org

23:31 < MichaelC> You don't use code. anymore then?
23:32 < jme> no, we migrated off redmine/code.o.o
23:33 < MichaelC> Ah. You still link to it on your error page for bug reporting.

Make VNC info clickable

The VNC information on the GWM overview page should be clickable to open the default VNC client.

missing slash in menu_base.html for jquery-ui/jquery-ui.js path

having installed the 0.11.2-rc1 release onto an ubuntu 14.04 host (w/mysql), i was getting an error when trying to change the owner of a vm or import a vm while attaching an owner.

on the "Change Owner" page (which apparently has the mistaken page title of "Rename Virtual Machine"), when i entered a user in the text field and clicked "Save" it returned:

This field is required.

similarly, on the "Orphaned Virtual Machines" page when i entered a user's name and hit "Update Selected" it threw back:

owner
This field is required.

in neither case was the change made, and there was no autocomplete / dropdown for the field.

eventually i found the following in the apache access.log:

208.70.27.190 - - [29/Oct/2015:21:49:00 +0000] "GET /staticjquery-ui/jquery-ui.js HTTP/1.1" 404 2894 "https://gwm.us.archive.org/users" "Mozilla/5.0 (X11; Linux x86_64; rv:41.0) Gecko/20100101 Firefox/41.0 Iceweasel/41.0.2"

and a minor correction to ganeti_webmgr/templates/menu_base.html appears to resolve the issue (pull request pending; looks like it was addressed in master).

Not seeing migrate on sharedfile image templates

Hello All,

My nodes are on Ganeti 2.12.4 while I'm using the latest release of Ganeti Web Manager (0.11.1).

From the Ganeti Web Manager interface, I created an image on a shared filesystem with the sharedfile disk template and noticed I had no options to perform any sort of migration. I can see the migration option for the DRBD instances that I've created but none for sharedfile.

As I was digging through the GWM code, I found some sanity checks for the live migration functionality. I noticed that there were two tests, one for DRBD and one for a "shared" template which to my knowledge doesn't exist. Here is a link to that line of code:
https://github.com/osuosl/ganeti_webmgr/blob/master/ganeti_webmgr/ganeti_web/templatetags/webmgr_tags.py#L140

I believe that the "shared" template referred to in the code is actually supposed to be the sharedfile template. If I change that line to reference sharedfile template, I gain the migration ability in GWM and don't receive any errors when using it.

Here is the commit of my fork to show exactly the change I'm speaking of:
SuperGlobal@6e08a8f

I do although believe there are other pieces that need to be changed to reference the sharedfile template instead of referencing the non-existent "shared" template.

Debian 8 pip compatibility?

I've installed all of the dependencies, but the setup.sh script fails when it reaches /opt/ganeti_webmgr/bin/pip

Have tried reinstalling pip in various ways. Does it only work with older versions of pip now?

it breaks on "from pip import main" and produces the error:

Traceback (most recent call last): File "/opt/ganeti_webmgr/bin/pip", line 7, in <module> from pip import main File "/opt/ganeti_webmgr/local/lib/python2.7/site-packages/pip/__init__.py", line 76, in <module> from pip.commands import commands, get_summaries, get_similar_commands File "/opt/ganeti_webmgr/local/lib/python2.7/site-packages/pip/commands/__init__.py", line 6, in <module> from pip.commands.bundle import BundleCommand File "/opt/ganeti_webmgr/local/lib/python2.7/site-packages/pip/commands/bundle.py", line 6, in <module> from pip.commands.install import InstallCommand File "/opt/ganeti_webmgr/local/lib/python2.7/site-packages/pip/commands/install.py", line 5, in <module> from pip.req import InstallRequirement, RequirementSet, parse_requirements File "/opt/ganeti_webmgr/local/lib/python2.7/site-packages/pip/req/__init__.py", line 3, in <module> from .req_install import InstallRequirement File "/opt/ganeti_webmgr/local/lib/python2.7/site-packages/pip/req/req_install.py", line 42, in <module> from pip.utils.hashes import Hashes File "/opt/ganeti_webmgr/local/lib/python2.7/site-packages/pip/utils/hashes.py", line 5, in <module> from pip.exceptions import HashMismatch, HashMissing, InstallationError ImportError: cannot import name HashMissing Something went wrong. Could not install GWM nor its dependencies in this virtual environment: /opt/ganeti_webmgr

Don't skip tests unnecessarily

Right now we're skipping at least one test because it's not passing. We shouldn't do that. There is one tests suite which is skipped if selenium isn't installed, I think that's acceptable.

Incidentally, I think we should get selenium to run with phantomjs like PGD does. That way we can run it in a Docker container or in Travis.

Min/Max RAM values appear incorrectly

From Chance Zibolski

Originally posted here: https://groups.google.com/forum/#!topic/ganeti-webmgr/X9pDeC2NDOo

I'm testing 0.11.0rc1 under debian wheezy, pointing to ganeti 2.11.5

Virtual machines are showing "-1 MiB" for the minmem setting, in the page which gives the overview settings for that VM.

Memory (Min/Max) -1 MiB / 1.00 GiB

But:

root@nuc1:~# gnt-instance info host87.ws.nsrc.org | grep mem
mem_path:
maxmem: 1024
memory: default (1024)
minmem: 256

-- Chance: This is likely due to the fact that we use -1 as the default value for these fields, and there is something which is probably not looking at the right data from the Ganeti RAPI. I also know they deprecated certain keys in a recent version of Ganeti, that could be related as well.

CDROM Image Setting

From Lance Albertson

I've always wanted this feature in GWM. Right now if a user wants to boot from a CDROM image, they have to know a path on the cluster to install an ISO from. Its not the best design from a UI perspective. I'd rather see a feature for cluster admins to add a CDROM Image which points to the path. This setting would be per cluster and can be edited after adding and removed later of course.

Instead of a user picking a path, they just use a drop-down which is populated with the ISO images.

Add a favicon

Because this is seriously boring:

gwm

And there's a good chance of losing your tab in a pile of nonsense.

Feature request: support for ganeti tags

Hey,
would be nice if GWM could support for adding, editing, removing ganeti tags (gnt-instance add-tags). I use them pretty extensively to arrange instances in my cluster. I see they are already used by GWM for assigning instances to an owner, shouldn't be too much of an issue adding integration with the GUI to manually edit custom instance tags, and searching instances based on tags.

Thanks for your work
Gianfilippo

Unable to syncdb

Following the documentation on this page, we were unable to initilise the database using the following commends.
http://ganeti-webmgr.readthedocs.org/en/latest/getting_started/installing.html

django-admin.py syncdb --migrate

The following error is what we see - can you provide any assistance please?

(ganeti_webmgr)[root@localhost ganeti_webmgr]# django-admin.py syncdb --migrate Traceback (most recent call last): File "/opt/ganeti_webmgr/bin/django-admin.py", line 5, in <module> management.execute_from_command_line() File "/opt/ganeti_webmgr/lib/python2.7/site-packages/django/core/management/__init__.py", line 443, in execute_from_command_line utility.execute() File "/opt/ganeti_webmgr/lib/python2.7/site-packages/django/core/management/__init__.py", line 382, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/opt/ganeti_webmgr/lib/python2.7/site-packages/django/core/management/__init__.py", line 261, in fetch_command klass = load_command_class(app_name, subcommand) File "/opt/ganeti_webmgr/lib/python2.7/site-packages/django/core/management/__init__.py", line 69, in load_command_class module = import_module('%s.management.commands.%s' % (app_name, name)) File "/opt/ganeti_webmgr/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module __import__(name) File "/opt/ganeti_webmgr/lib/python2.7/site-packages/south/management/commands/__init__.py", line 10, in <module> import django.template.loaders.app_directories File "/opt/ganeti_webmgr/lib/python2.7/site-packages/django/template/loaders/app_directories.py", line 21, in <module> mod = import_module(app) File "/opt/ganeti_webmgr/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module __import__(name) File "/opt/ganeti_webmgr/lib/python2.7/site-packages/haystack/__init__.py", line 154, in <module> handle_registrations() File "/opt/ganeti_webmgr/lib/python2.7/site-packages/haystack/__init__.py", line 151, in handle_registrations search_sites_conf = importlib.import_module(settings.HAYSTACK_SITECONF) File "/opt/ganeti_webmgr/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module __import__(name) File "/opt/ganeti_webmgr/lib/python2.7/site-packages/ganeti_webmgr/search_sites.py", line 2, in <module> haystack.autodiscover() File "/opt/ganeti_webmgr/lib/python2.7/site-packages/haystack/__init__.py", line 121, in autodiscover importlib.import_module("%s.search_indexes" % app) File "/opt/ganeti_webmgr/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module __import__(name) File "/opt/ganeti_webmgr/lib/python2.7/site-packages/ganeti_webmgr/ganeti_web/search_indexes.py", line 3, in <module> from ganeti_webmgr.virtualmachines.models import VirtualMachine File "/opt/ganeti_webmgr/lib/python2.7/site-packages/ganeti_webmgr/virtualmachines/models.py", line 5, in <module> from ganeti_webmgr.clusters.models import CachedClusterObject File "/opt/ganeti_webmgr/lib/python2.7/site-packages/ganeti_webmgr/clusters/models.py", line 297, in <module> class Cluster(CachedClusterObject): File "/opt/ganeti_webmgr/lib/python2.7/site-packages/ganeti_webmgr/clusters/models.py", line 309, in Cluster max_length=128, blank=True) File "/opt/ganeti_webmgr/lib/python2.7/site-packages/django_fields/fields.py", line 50, in __init__ self.cipher = self.cipher_object.new(settings.SECRET_KEY[:32]) File "/opt/ganeti_webmgr/lib/python2.7/site-packages/Crypto/Cipher/AES.py", line 95, in new return AESCipher(key, *args, **kwargs) File "/opt/ganeti_webmgr/lib/python2.7/site-packages/Crypto/Cipher/AES.py", line 59, in __init__ blockalgo.BlockAlgo.__init__(self, _AES, key, *args, **kwargs) File "/opt/ganeti_webmgr/lib/python2.7/site-packages/Crypto/Cipher/blockalgo.py", line 141, in __init__ self._cipher = factory.new(key, *args, **kwargs) ValueError: Key cannot be the null string

Wrong OS shown when OS is "noop"

From Chance Zibolski

Originally from: https://groups.google.com/forum/#!topic/ganeti-webmgr/X9pDeC2NDOo

I'm testing 0.11.0rc1 under debian wheezy, pointing to ganeti 2.11.5

(1) For instances with operating system "noop", ganeti web manager displays them as "Unknown or invalid OS"

However it seems perfectly valid to me:

root@nuc1:# gnt-os list
Name
debootstrap+default
debootstrap+precise
image+cd
image+default
noop
snf-image+default
snf-image+trusty
snf-image+wheezy
root@nuc1:
# gnt-instance list | grep noop
host87.ws.nsrc.org kvm noop nuc2.ws.nsrc.org running 1.0G
windows0 kvm noop nuc1.ws.nsrc.org running 1.5G

(this is ganeti-os-noop from grnet)

When creating a new instance, this OS appears under heading "Unknown" as variant "noop". So it appears that it's just having problems with OS definitions with no variants.

when I try to access any URL after logging in I get a Terrible Event

[Mon Sep 21 16:22:08 2015] [error] ERROR:django.request:Internal Server Error: /
[Mon Sep 21 16:22:08 2015] [error] Traceback (most recent call last):
[Mon Sep 21 16:22:08 2015] [error] File "/opt/ganeti_webmgr/lib/python2.6/site-packages/django/core/handlers/base.py", line 109, in get_response
[Mon Sep 21 16:22:08 2015] [error] response = callback(request, _callback_args, *_callback_kwargs)
[Mon Sep 21 16:22:08 2015] [error] File "/opt/ganeti_webmgr/lib/python2.6/site-packages/django/contrib/auth/decorators.py", line 20, in _wrapped_view
[Mon Sep 21 16:22:08 2015] [error] return view_func(request, _args, *_kwargs)
[Mon Sep 21 16:22:08 2015] [error] File "/opt/ganeti_webmgr/lib/python2.6/site-packages/ganeti_webmgr/ganeti_web/views/general.py", line 213, in overview
[Mon Sep 21 16:22:08 2015] [error] orphaned, import_ready, missing = get_vm_counts(clusters)
[Mon Sep 21 16:22:08 2015] [error] File "/opt/ganeti_webmgr/lib/python2.6/site-packages/ganeti_webmgr/ganeti_web/views/general.py", line 180, in get_vm_counts
[Mon Sep 21 16:22:08 2015] [error] for cluster in clusters:
[Mon Sep 21 16:22:08 2015] [error] File "/opt/ganeti_webmgr/lib/python2.6/site-packages/django/db/models/query.py", line 118, in _result_iter
[Mon Sep 21 16:22:08 2015] [error] self._fill_cache()
[Mon Sep 21 16:22:08 2015] [error] File "/opt/ganeti_webmgr/lib/python2.6/site-packages/django/db/models/query.py", line 892, in _fill_cache
[Mon Sep 21 16:22:08 2015] [error] self._result_cache.append(self.iter.next())
[Mon Sep 21 16:22:08 2015] [error] File "/opt/ganeti_webmgr/lib/python2.6/site-packages/django/db/models/query.py", line 301, in iterator
[Mon Sep 21 16:22:08 2015] [error] obj = model(*row[index_start:aggregate_start])
[Mon Sep 21 16:22:08 2015] [error] File "/opt/ganeti_webmgr/lib/python2.6/site-packages/ganeti_webmgr/clusters/models.py", line 61, in init
[Mon Sep 21 16:22:08 2015] [error] self.load_info()
[Mon Sep 21 16:22:08 2015] [error] File "/opt/ganeti_webmgr/lib/python2.6/site-packages/ganeti_webmgr/clusters/models.py", line 104, in load_info
[Mon Sep 21 16:22:08 2015] [error] self.refresh()
[Mon Sep 21 16:22:08 2015] [error] File "/opt/ganeti_webmgr/lib/python2.6/site-packages/ganeti_webmgr/clusters/models.py", line 136, in refresh
[Mon Sep 21 16:22:08 2015] [error] info
= self._refresh()
[Mon Sep 21 16:22:08 2015] [error] File "/opt/ganeti_webmgr/lib/python2.6/site-packages/ganeti_webmgr/clusters/models.py", line 633, in _refresh
[Mon Sep 21 16:22:08 2015] [error] return self.rapi.GetInfo()
[Mon Sep 21 16:22:08 2015] [error] File "/opt/ganeti_webmgr/lib/python2.6/site-packages/ganeti_webmgr/utils/client.py", line 308, in GetInfo
[Mon Sep 21 16:22:08 2015] [error] None, None)
[Mon Sep 21 16:22:08 2015] [error] File "/opt/ganeti_webmgr/lib/python2.6/site-packages/ganeti_webmgr/utils/client.py", line 245, in _SendRequest
[Mon Sep 21 16:22:08 2015] [error] r = requests.request(method, url, *_kwargs)
[Mon Sep 21 16:22:08 2015] [error] File "/opt/ganeti_webmgr/lib/python2.6/site-packages/requests/api.py", line 50, in request
[Mon Sep 21 16:22:08 2015] [error] response = session.request(method=method, url=url, *_kwargs)
[Mon Sep 21 16:22:08 2015] [error] File "/opt/ganeti_webmgr/lib/python2.6/site-packages/requests/sessions.py", line 465, in request
[Mon Sep 21 16:22:08 2015] [error] resp = self.send(prep, *_send_kwargs)
[Mon Sep 21 16:22:08 2015] [error] File "/opt/ganeti_webmgr/lib/python2.6/site-packages/requests/sessions.py", line 573, in send
[Mon Sep 21 16:22:08 2015] [error] r = adapter.send(request, *_kwargs)
[Mon Sep 21 16:22:08 2015] [error] File "/opt/ganeti_webmgr/lib/python2.6/site-packages/requests/adapters.py", line 370, in send
[Mon Sep 21 16:22:08 2015] [error] timeout=timeout
[Mon Sep 21 16:22:08 2015] [error] File "/opt/ganeti_webmgr/lib/python2.6/site-packages/requests/packages/urllib3/connectionpool.py", line 544, in urlopen
[Mon Sep 21 16:22:08 2015] [error] body=body, headers=headers)
[Mon Sep 21 16:22:08 2015] [error] File "/opt/ganeti_webmgr/lib/python2.6/site-packages/requests/packages/urllib3/connectionpool.py", line 341, in _make_request
[Mon Sep 21 16:22:08 2015] [error] self._validate_conn(conn)
[Mon Sep 21 16:22:08 2015] [error] File "/opt/ganeti_webmgr/lib/python2.6/site-packages/requests/packages/urllib3/connectionpool.py", line 761, in _validate_conn
[Mon Sep 21 16:22:08 2015] [error] conn.connect()
[Mon Sep 21 16:22:08 2015] [error] File "/opt/ganeti_webmgr/lib/python2.6/site-packages/requests/packages/urllib3/connection.py", line 204, in connect
[Mon Sep 21 16:22:08 2015] [error] conn = self._new_conn()
[Mon Sep 21 16:22:08 2015] [error] File "/opt/ganeti_webmgr/lib/python2.6/site-packages/requests/packages/urllib3/connection.py", line 134, in _new_conn
[Mon Sep 21 16:22:08 2015] [error](self.host, self.port), self.timeout, **extra_kw)
[Mon Sep 21 16:22:08 2015] [error] File "/opt/ganeti_webmgr/lib/python2.6/site-packages/requests/packages/urllib3/util/connection.py", line 75, in create_connection
[Mon Sep 21 16:22:08 2015] [error] sock.settimeout(timeout)
[Mon Sep 21 16:22:08 2015] [error] File "", line 1, in settimeout
[Mon Sep 21 16:22:08 2015] [error] TypeError: a float is required

Make sure all PRs are accompanied by docs

While working on GWM I keep finding outdated or incomplete docs. I spoke with @jordane on how to fix this and joked about making travis check that changes were made to the docs. He recommended that I actually do that.

Attempting to create a VM on a read-only cluster throws exception

From Nate Aune

When I try to add a new VM, and haven't specified a username/password for the Ganeti cluster, I get the following error:
It should probably prevent me from trying to create a new VM, if I haven't filled out the username/password for the cluster.

Environment:

Request Method: POST
Request URL: http://localhost:8000/vm/add

Django Version: 1.4.8
Python Version: 2.7.3
Installed Applications:
('django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.formtools',
 'django.contrib.messages',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.staticfiles',
 'registration',
 'ganeti_web',
 'object_permissions',
 'object_log',
 'south',
 'haystack',
 'muddle',
 'muddle.shots',
 'muddle_users',
 'include_strip_tag',
 'django_tables2')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.middleware.transaction.TransactionMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.locale.LocaleMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'ganeti_web.middleware.PermissionDeniedMiddleware')

Traceback:
File "/Users/nateaune/Dropbox/code/ganeti_webmgr/venv/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
1.                         response = callback(request, _callback_args, *_callback_kwargs)
   File "/Users/nateaune/Dropbox/code/ganeti_webmgr/venv/lib/python2.7/site-packages/django/views/generic/base.py" in view
2.             return self.dispatch(request, _args, *_kwargs)
   File "/Users/nateaune/Dropbox/code/ganeti_webmgr/venv/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapper
3.             return bound_func(_args, *_kwargs)
   File "/Users/nateaune/Dropbox/code/ganeti_webmgr/venv/lib/python2.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view
4.                 return view_func(request, _args, *_kwargs)
   File "/Users/nateaune/Dropbox/code/ganeti_webmgr/venv/lib/python2.7/site-packages/django/utils/decorators.py" in bound_func
5.                 return func(self, _args2, *_kwargs2)
   File "/Users/nateaune/Dropbox/code/ganeti_webmgr/ganeti_web/views/generic.py" in dispatch
6.         return super(LoginRequiredMixin, self).dispatch(_args, *_kwargs)
   File "/Users/nateaune/Dropbox/code/ganeti_webmgr/ganeti_web/views/generic.py" in dispatch
7.             **kwargs)
   File "/Users/nateaune/Dropbox/code/ganeti_webmgr/venv/lib/python2.7/site-packages/django/contrib/formtools/wizard/views.py" in dispatch
8.         response = super(WizardView, self).dispatch(request, _args, *_kwargs)
   File "/Users/nateaune/Dropbox/code/ganeti_webmgr/venv/lib/python2.7/site-packages/django/views/generic/base.py" in dispatch
9.         return handler(request, _args, *_kwargs)
   File "/Users/nateaune/Dropbox/code/ganeti_webmgr/venv/lib/python2.7/site-packages/django/contrib/formtools/wizard/views.py" in post
10.                 return self.render_done(form, **kwargs)
    File "/Users/nateaune/Dropbox/code/ganeti_webmgr/venv/lib/python2.7/site-packages/django/contrib/formtools/wizard/views.py" in render_done
11.         done_response = self.done(final_form_list, **kwargs)
    File "/Users/nateaune/Dropbox/code/ganeti_webmgr/ganeti_web/forms/virtual_machine.py" in done
12.             vm = template_to_instance(template, hostname, owner)
    File "/Users/nateaune/Dropbox/code/ganeti_webmgr/ganeti_web/backend/templates.py" in template_to_instance
13.                                          **kwargs)
    File "/Users/nateaune/Dropbox/code/ganeti_webmgr/ganeti_web/util/client.py" in CreateInstance
14.                                  content=body)
    File "/Users/nateaune/Dropbox/code/ganeti_webmgr/ganeti_web/util/client.py" in _SendRequest
15.             raise GanetiApiError(str(r.status_code), code=r.status_code)

Exception Type: GanetiApiError at /vm/add
Exception Value: 401

Fix failing/erroring tests

Some tests fail because my configuration isn't right. I'm trying to figure out what the right configuration is.

These tests are failing on Travis:

======================================================================
ERROR: test_site_profile_not_available (django.contrib.auth.tests.models.ProfileTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/Django-1.4.20-py2.7.egg/django/contrib/auth/tests/models.py", line 29, in test_site_profile_not_available
    del settings.AUTH_PROFILE_MODULE
  File "/home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/Django-1.4.20-py2.7.egg/django/utils/functional.py", line 215, in __delattr__
    delattr(self._wrapped, name)
AttributeError: AUTH_PROFILE_MODULE
======================================================================
ERROR: test_management_command (registration.tests.RegistrationModelTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/django_registration-0.7-py2.7.egg/registration/tests.py", line 141, in test_management_command
    management.call_command('cleanupregistration')
  File "/home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/Django-1.4.20-py2.7.egg/django/core/management/__init__.py", line 136, in call_command
    raise CommandError("Unknown command: %r" % name)
CommandError: Unknown command: 'cleanupregistration'
----------------------------------------------------------------------

FAILED (errors=2, skipped=3)

Wrong OS shown when OS is "noop"

I hit this issue from here or here.

For instances with operating system "noop", ganeti web manager displays them as "Unknown or invalid OS". This is ganeti-os-noop from grnet.
unknown-os

When creating a new instance, this OS appears under heading "Unknown" as variant "noop". So it appears that it's just having problems with OS definitions with no variants.

Missing Dependencies in Debian8

When using scripts/setup.sh on Debian 8 the following packages are not being installed through apt:

  • build-essential
  • python-dev
  • libffi-dev
  • libssl-dev

minified javascripts

There are some minified javascripts committed to source tree in ganeti_webmgr/static/js, notably jquery.tablesorter.min.js and others.

Minified javascripts are effectively the same as pre-compiled binaries --
un-readable, non-modifiable and non-distributable in
Debian. The case of jquery.tablesorter.min.js is particularly bad because minified version have no license and no copyright attribution.

It is the best (practice) to have no minified files in source tree at all.
Please replace all minified javascripts with their original uncompressed versions.

unicode exceptions, database requirements for installation

In MySQL, If your database is not encoded with utf8, running the command: django-admin.py refreshcache will throw errors. I believe this should, at its very least, be documented as a requirement, or included in the installation process when creating the tables, or when running: django-admin.py syncdb --migrate have the script check what encoding the database is using and describe the requirement.

We where using latin1_swedish_ci before we understood what the problem was.

No option to set initrd_path at instance creation time

From Brian Candler

The instance creation wizard allows you to set kernel_path but not initrd_path (step 5 of 5).

This seems to be an oversight, because kernel_path is not really useful without initrd_path.

You can set an initrd_path cluster-wide, but this is very limiting: e.g. no way to select between a suitable initrd for 32 or 64 bit kernels.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.