Code Monkey home page Code Monkey logo

webvirtmgr's Introduction

WebVirtMgr panel - v4.8.9

New project like WebVirtMgr with User Management and Filesystem management - WebVirtCloud

Warning

In latest version app console/webvirtmgr-novnc move to console/webvirtmgr-console you need check your supervisor settings.

Whats new?

Screenshots

Show

Introduction

WebVirtMgr is a libvirt-based Web interface for managing virtual machines. It allows you to create and configure new domains, and adjust a domain's resource allocation. A VNC viewer presents a full graphical console to the guest domain. KVM is currently the only hypervisor supported.

Technology:

The application logic is written in Python & Django. The LIBVIRT Python bindings are used to interacting with the underlying hypervisor.

Installation (Only web panel)

Install WebVirtMgr

Setup host server (Server for VM's)

Setup Host Server

License

WebVirtMgr is licensed under the Apache Licence, Version 2.0.

webvirtmgr's People

Contributors

aaronbrooks-gh avatar ainoniwa avatar alexdo avatar brenard avatar bwcherry avatar cambrant avatar casell avatar daniviga avatar dobber avatar edospadoni avatar embeddedandroid avatar forumi0721 avatar gsanchietti avatar gtranche avatar hyllegaard avatar junkb avatar keyz182 avatar kmwhite avatar mohabusama avatar nowaker avatar nushio avatar pengyao avatar phist0ne avatar retspen avatar schitzosteve2 avatar schmitch avatar specialunderwear avatar sublime- avatar tolbkni avatar winstona 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  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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

webvirtmgr's Issues

Request: IP/Network Pools

Overall, I LOVE this software!

The only thing I see that it could use right now would be having the ability to assign IP addresses to the VMs via WebUI.

Maybe being able to add a range of IP addresses to WebVirtManager that VMs can use, etc?

Can only add "ISOLATE" network

For some reason, when I add a network pool, no matter what I choose from the "Type Forwarding" menu, after creation of the pool it is listed as "ISOLATE" .

Maybe this a problem with my configuration? If so, it'd be good to have some kind of alert from webvirtmgr warning me about this.

no webfrontend after update

toda i made git pull and result is:
MOD_PYTHON ERROR

ProcessId: 19965
Interpreter: 'foo.example.com'

ServerName: 'foo.example.com'
DocumentRoot: '/var/www/webvirtmgr'

URI: '/login/'
Location: None
Directory: None
Filename: '/var/www/webvirtmgr/login'
PathInfo: '/'

Phase: 'PythonHandler'
Handler: 'django.core.handlers.modpython'

Traceback (most recent call last):

File "/usr/lib/python2.7/dist-packages/mod_python/importer.py", line 1537, in HandlerDispatch
default=default_handler, arg=req, silent=hlist.silent)

File "/usr/lib/python2.7/dist-packages/mod_python/importer.py", line 1229, in _process_target
result = _execute_target(config, req, object, arg)

File "/usr/lib/python2.7/dist-packages/mod_python/importer.py", line 1128, in _execute_target
result = object(arg)

File "/usr/lib/python2.7/dist-packages/django/core/handlers/modpython.py", line 180, in handler
return ModPythonHandler()(req)

File "/usr/lib/python2.7/dist-packages/django/core/handlers/modpython.py", line 158, in call
response = self.get_response(request)

File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py", line 179, in get_response
response = self.handle_uncaught_exception(request, resolver, sys.exc_info())

File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py", line 228, in handle_uncaught_exception
return callback(request, **param_dict)

File "/usr/lib/python2.7/dist-packages/django/utils/decorators.py", line 91, in _wrapped_view
response = view_func(request, _args, *_kwargs)

File "/usr/lib/python2.7/dist-packages/django/views/defaults.py", line 32, in server_error
t = loader.get_template(template_name) # You need to create a 500.html template.

File "/usr/lib/python2.7/dist-packages/django/template/loader.py", line 145, in get_template
template, origin = find_template(template_name)

File "/usr/lib/python2.7/dist-packages/django/template/loader.py", line 138, in find_template
raise TemplateDoesNotExist(name)

TemplateDoesNotExist: 500.html

Ubuntu 13.04.

Error 500

I've got this error when try to open console (appear in new window):


Error 500

WebVirtMgr

Sign in

500

Webvirtmgr login problem then update new version

Hi guys,

When i run "git pull" command to get updated version of this project,so everything was ok,but new application does not work properly.Becase when i try to login to webvirtmgr panel that i cannot login.Thus i'm just getting an error message like this "Error 500"

Today i read a warning message which was written in project page's readme file.

Warning

This version of 27.02.2013 - does not support update only the new installation. Or you can upgrade an existing but it will have to delete the file webvirtmgr.db and recreate datebase ./manage.py syncdb

If i run this command,so any virtual machine can corrupted or deleted ? I am not sure.Any suggestion ?

Thank you.

Uptime counter working wrong

At web I see:

Name & Status
Name: build
Status: Running
Uptime: 110.0 (Hour)

And at console of guest:

$ uptime
11:27:59 up 15:15, 1 user, load average: 0.00, 0.01, 0.03

Support for virtual machines with special characters in the name

It would be good to look at supporting virtual machines with special characters in the name of the virtual machine.

I guess this could be fixed by either using a different framework other than Django which would mean a total rewrite of the project -OR- look at using the virtual machine ID in the URL instead of the virtual machine name with the special characters in it that isnt supported by Django

Can not view network pools

When I click "Network pool" I see Error 500
Logs are not informative:

 [07/Feb/2013 11:11:15] "GET /network/1/ HTTP/1.1" 302 0
 [07/Feb/2013 11:11:16] "GET /network/1/int5/ HTTP/1.1" 500 1801

XML of first network:

<network>
  <name>int5</name>
  <uuid>680a2146-a723-193f-0c6f-f8435421be36</uuid>
  <forward mode='bridge'/>
  <bridge name='br5' />
</network>

Does webvirtmgr support more than one network pool?

Gunicorn/virtualenv compatibility issues

I am attempting to deploy webvirtmgr using gunicorn within a virtualenv. So far, I have managed to get the interface up and running by making some changes to the wsgi config files, but am stuck with a libvirt import error when trying to view a connection's details.

The issue seems to be that I can't get the libvirt python module visible in the virtualenv. I'm not sure how to fix that (this isn't necessarily a webvirtmgr issue).

The current wsgi setup dosen't really play nice with gunicorn - I have got it to work by writing my own wsgi.py file and placing it in the top directory, however I'm not sure if it works with apache as well yet (I haven't tested it). Once I am able to confirm it does, I will commit for review. I would probably add a requirements.txt file for easy deployment, but I would need to be a little more familiar with the project's internals beforehand.

Any help would be appreciated, this project looks pretty cool and I would love to make use of / contribute to it.

Authentication Issue

Found this today and am amazed!

I installed on one KVM host, no problem. I installed on another and get authentication error.

I can launch the web page and connect to a host, but when clicking overview I get an "authentication failed: authentication failed". Very similar to issue #19.

I've gone through all the settings twice and don't know why it would be failing. The only difference between machines is that one is using my personal creds for dev that worked, and the one for production uses the username "administrator" for the main account.
Running Ubuntu 12.04 64bit Server in both environments.
What info would help troubleshoot?
Thanks.

VNC not working on debian 6

I can't get to work vnc on debian6, novnc is not available for this distro, so I'm using the normal vnc, the problem is that java is not making the ssh tunnel:

Network Error: com.jcraft.jsch.JSchException: java.net.ConnectException: Connection refused: connect

Any ideas?

Проблема при работе с ВМ, созданным не через webvirtmgr

ВМ не является объектом Джанго, view.py выбрасывает в exception в функции vnc. template/vnc.html при отсутствии пароля выдает вариант шаблона с плангином vnc java, который отсутствует при установке в CentOS.

Для себя решил подстановкой в шаблоне пустого пароля в случае отсутствия vm.vnc_passwd . Приемлемый вариант при ограничении доступа к портам vnc извне.

lvm2 storage pools are not supported

When I try to view virtual machine I got error 500.
Log shows: libvir: error : invalid argument: virStorageVolLookupByPath
Disk defined as follows:

<disk type='block' device='disk'>
      <driver name='qemu' type='raw' cache='none'/>
      <source dev='/dev/kvmguests/yate'/>
      <target dev='vda' bus='virtio'/>
      <alias name='virtio-disk0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </disk>

Display HDD size

Can you display the HDD size for the virtual machine in the 'Technical Details' section next to HDD? Also, can you display it in the Infrastructure view as well?

Thank you!!

sefault when clicking on the menu items

I got a segfault with a core dump when I clicked on "Snapshots" on the menu bar but I was able to reproduce it later (about 5 times) with the other items from the menu (Overview, Create VM, Storage pool, Network pool and Snapshots). The crash happens random but in less than a minute or two.

To reproduce, all I have to do is click on each item in (order or not) until it crashes. Sometime it crashes on the first click sometimes it takes a while.

env LANG=C gdb --core=core /usr/bin/python

Reading symbols from /usr/bin/python...Reading symbols from /usr/lib/debug/usr/bin/python2.7...done.
done.
[New LWP 6556]
[New LWP 6530]
[New LWP 6210]
[New LWP 6211]

warning: Can't read pathname for load map: Input/output error.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `/usr/bin/python ./manage.py runserver 0.0.0.0:8000'.
Program terminated with signal 11, Segmentation fault.
#0  0x000000000084e2c0 in PyFrame_Type ()

Here's the backtrace

#0  0x000000000084e2c0 in PyFrame_Type ()
#1  0x00007f1230ddf8c2 in _sasl_log (conn=<optimized out>, level=5, fmt=
    0x7f121e81d408 "DIGEST-MD5 client mech dispose") at ../../lib/common.c:1986
#2  0x00007f121e817788 in digestmd5_client_mech_dispose (utils=0x7f122003e650, 
    conn_context=0x7f122002d220) at ../../plugins/digestmd5.c:4560
#3  digestmd5_client_mech_dispose (conn_context=0x7f122002d220, utils=
    0x7f122003e650) at ../../plugins/digestmd5.c:4553
#4  0x00007f1230ddba84 in client_dispose (pconn=0x7f122003fc70)
    at ../../lib/client.c:332
#5  0x00007f1230ddeab5 in sasl_dispose (pconn=0x7f1220003e38)
    at ../../lib/common.c:852
#6  0x00007f1238153935 in virNetSASLSessionFree (sasl=0x13)
    at /build/buildd/libvirt-0.9.13/./src/rpc/virnetsaslcontext.c:732
#7  0x00007f1238147a3d in virNetClientCloseLocked (client=0x7f122003e3f0)
    at /build/buildd/libvirt-0.9.13/./src/rpc/virnetclient.c:505
#8  virNetClientIOEventLoopPassTheBuck (thiscall=0x0, client=0x7f122003e3f0)
    at /build/buildd/libvirt-0.9.13/./src/rpc/virnetclient.c:1258
#9  virNetClientIOEventLoopPassTheBuck (client=0x7f122003e3f0, thiscall=0x0)
    at /build/buildd/libvirt-0.9.13/./src/rpc/virnetclient.c:1239
#10 0x00007f1238148d4a in virNetClientClose (client=0x7f122003e3f0)
    at /build/buildd/libvirt-0.9.13/./src/rpc/virnetclient.c:547
#11 0x00007f1238136c80 in doRemoteClose (priv=0x7f122001bc40, 
    conn=<optimized out>)
    at /build/buildd/libvirt-0.9.13/./src/remote/remote_driver.c:913
#12 0x00007f1238136e25 in remoteClose (conn=0x7f1220021fa0)
    at /build/buildd/libvirt-0.9.13/./src/remote/remote_driver.c:941
#13 0x00007f12380e916b in virReleaseConnect (conn=conn@entry=0x7f1220021fa0)
    at /build/buildd/libvirt-0.9.13/./src/datatypes.c:114
#14 0x00007f12380e9e08 in virReleaseNetwork (network=0x0)
    at /build/buildd/libvirt-0.9.13/./src/datatypes.c:369
#15 virUnrefNetwork (network=network@entry=0x7f122002d970)
    at /build/buildd/libvirt-0.9.13/./src/datatypes.c:401
#16 0x00007f1238109750 in virNetworkFree (network=network@entry=0x7f122002d970)
    at /build/buildd/libvirt-0.9.13/./src/libvirt.c:10098
#17 0x00007f123840b175 in libvirt_virNetworkFree (self=<optimized out>, 
    args=<optimized out>) at libvirt.c:2862
#18 0x000000000045f912 in call_function (oparg=<optimized out>, pp_stack=
    0x7f12337fb720) at ../Python/ceval.c:4021
#19 PyEval_EvalFrameEx (f=f@entry=
    Frame 0x7f122c14fdd0, for file /usr/lib/python2.7/dist-packages/libvirt.py, line 1918, in __del__ (self=<virNetwork(_conn=<virConnect(_o=None) at remote 0x7f122406f5a8>, _o=<PyCapsule at remote 0x7f1224062b70>) at remote 0x7f122406f998>), throwflag=throwflag@entry=0) at ../Python/ceval.c:2666
#20 0x0000000000467209 in PyEval_EvalCodeEx (co=0x7f122c08a8b0, 
    globals=<optimized out>, locals=<optimized out>, args=<optimized out>, 
    argcount=<optimized out>, kws=kws@entry=0x0, kwcount=kwcount@entry=0, 
    defs=defs@entry=0x0, defcount=defcount@entry=0, closure=closure@entry=0x0)
    at ../Python/ceval.c:3253
#21 0x00000000004a9fea in function_call (func=<optimized out>, 
    arg=<optimized out>, kw=<optimized out>) at ../Objects/funcobject.c:526
#22 0x000000000048249d in PyObject_Call (kw=0x0, arg=
    (<virNetwork(_conn=<virConnect(_o=None) at remote 0x7f122406f5a8>, _o=<PyCapsule at remote 0x7f1224062b70>) at remote 0x7f122406f998>,), func=
    <function at remote 0x7f122c0e2e60>) at ../Objects/abstract.c:2529
#23 instancemethod_call.8751 (func=<function at remote 0x7f122c0e2e60>, arg=
    (<virNetwork(_conn=<virConnect(_o=None) at remote 0x7f122406f5a8>, _o=<PyCapsule at remote 0x7f1224062b70>) at remote 0x7f122406f998>,), kw=0x0)
    at ../Objects/classobject.c:2602
#24 0x000000000049629d in PyObject_Call (kw=<optimized out>, arg=(), func=
    <instancemethod at remote 0x7f1224067190>) at ../Objects/abstract.c:2529
#25 PyEval_CallObjectWithKeywords (func=func@entry=
    <instancemethod at remote 0x7f1224067190>, arg=(), arg@entry=0x0, 
    kw=kw@entry=0x0) at ../Python/ceval.c:3890
#26 0x0000000000489b3d in instance_dealloc.8897 (inst=0x7f122406f998)
    at ../Objects/classobject.c:655
#27 0x00000000004b59f9 in dict_dealloc.18461 (mp=0x7f122002fbb0)
    at ../Objects/dictobject.c:1010
#28 0x00000000004b53d2 in frame_dealloc.14889 (f=
    Frame 0x7f122c015980, for file /home/bbigras/webvirtmgr/polls/views.py, line 946, in network ()) at ../Objects/frameobject.c:471
#29 0x0000000000467220 in PyEval_EvalCodeEx (co=<optimized out>, 
    globals=<optimized out>, locals=locals@entry=0x0, args=<optimized out>, 
    argcount=<optimized out>, kws=0x7f1200000002, kws@entry=0x7f123c623068, 
    kwcount=0, defs=defs@entry=0x0, defcount=defcount@entry=0, closure=0x0)
    at ../Python/ceval.c:3264
#30 0x00000000004aa118 in function_call (func=
    <function at remote 0x7f1234469c08>, arg=<optimized out>, 
    kw=<optimized out>) at ../Objects/funcobject.c:526
#31 0x000000000046172e in PyObject_Call (kw={}, arg=
    (<WSGIRequest(session=<SessionStore(_session_cache={'_auth_user_id': 1, '_auth_user_backend': 'django.contrib.auth.backends.ModelBackend'}, _session_key='bc08f2efeb6671e8dcd1ab89f2ca4680', modified=False, accessed=True) at remote 0x7f1224058c10>, _post_parse_error=False, _stream=<LimitedStream(buffer='', remaining=0, stream=<_fileobject at remote 0x7f1224053850>, buf_size=67108864) at remote 0x7f1224058a50>, _cached_user=<User(username=u'bbigras', first_name=u'', last_name=u'', is_active=True, _state=<ModelState(adding=False, db='default') at remote 0x7f12240586d0>, email=u'[email protected]', is_superuser=True, is_staff=True, last_login=<datetime.datetime at remote 0x7f122880de18>, password=u'pbkdf2_sha256$10000$HHoFIf031md1$AnUgzvvaERCQ2HtHRlw6hn3sUZYmSayjMBQBN0lb6Gk=', id=1, date_joined=<datetime.datetime at remote 0x7f122880ddf0>) at remote 0x7f1224058050>, _read_started=False, META={'wsgi.version': (1, 0), 'wsgi.multiprocess': False, 'PERL_MM_OPT': 'INSTALL_BASE=/home/bbigras/perl5', 'HTTP_REFERER': ...(truncated), func=<function at remote 0x7f1234469c08>) at ../Objects/abstract.c:2529
#32 ext_do_call (nk=604403344, na=<optimized out>, flags=<optimized out>, 
    pp_stack=0x7f12337fbe70, func=<function at remote 0x7f1234469c08>)
    at ../Python/ceval.c:4334
#33 PyEval_EvalFrameEx (f=<optimized out>, throwflag=throwflag@entry=0)
    at ../Python/ceval.c:2705
#34 0x00000000004602b7 in fast_function (nk=<optimized out>, 
    na=<optimized out>, n=<optimized out>, pp_stack=0x7f12337fc040, func=
    <function at remote 0x1320b90>) at ../Python/ceval.c:4107
#35 call_function (oparg=<optimized out>, pp_stack=0x7f12337fc040)
    at ../Python/ceval.c:4042
#36 PyEval_EvalFrameEx (f=f@entry=
    Frame 0x7f12280a54a0, for file /usr/lib/python2.7/dist-packages/django/core/handlers/wsgi.py, line 241, in __call__ (self=<WSGIHandler(_template_response_middleware=[], _exception_middleware=[], _response_middleware=[<instancemethod at remote 0x7f1234450e10>, <instancemethod at remote 0x7f1234450c30>, <instancemethod at remote 0x7f1234450b90>, <instancemethod at remote 0x7f1234450af0>], _request_middleware=[<instancemethod at remote 0x7f1234450960>, <instancemethod at remote 0x7f1234450b40>, <instancemethod at remote 0x7f1234450cd0>, <instancemethod at remote 0x7f1234450dc0>], _view_middleware=[<instancemethod at remote 0x7f1234450be0>]) at remote 0x7f1234268990>, environ={'wsgi.version': (1, 0), 'wsgi.multiprocess': False, 'PERL_MM_OPT': 'INSTALL_BASE=/home/bbigras/perl5', 'HTTP_REFERER': 'http://192.168.0.220:8000/overview/1/', 'HTTP_HOST': '192.168.0.220:8000', 'SERVER_PROTOCOL': 'HTTP/1.1', 'SERVER_SOFTWARE': 'WSGIServer/0.1 Python/2.7.3', 'SCRIPT_NAME': u'', 'LESSOPEN': '| /usr/bin/lesspipe %s', 'PERL_LO...(truncated), throwflag=throwflag@entry=0) at ../Python/ceval.c:2666
#37 0x0000000000467209 in PyEval_EvalCodeEx (co=0x1312630, 
    globals=<optimized out>, locals=<optimized out>, args=<optimized out>, 
    argcount=<optimized out>, kws=kws@entry=0x0, kwcount=kwcount@entry=0, 
    defs=defs@entry=0x0, defcount=defcount@entry=0, closure=closure@entry=0x0)
    at ../Python/ceval.c:3253
#38 0x00000000004a9fea in function_call (func=<optimized out>, 
    arg=<optimized out>, kw=<optimized out>) at ../Objects/funcobject.c:526
#39 0x000000000048249d in PyObject_Call (kw=0x0, arg=
    (<WSGIHandler(_template_response_middleware=[], _exception_middleware=[], _response_middleware=[<instancemethod at remote 0x7f1234450e10>, <instancemethod at remote 0x7f1234450c30>, <instancemethod at remote 0x7f1234450b90>, <instancemethod at remote 0x7f1234450af0>], _request_middleware=[<instancemethod at remote 0x7f1234450960>, <instancemethod at remote 0x7f1234450b40>, <instancemethod at remote 0x7f1234450cd0>, <instancemethod at remote 0x7f1234450dc0>], _view_middleware=[<instancemethod at remote 0x7f1234450be0>]) at remote 0x7f1234268990>, {'wsgi.version': (1, 0), 'wsgi.multiprocess': False, 'PERL_MM_OPT': 'INSTALL_BASE=/home/bbigras/perl5', 'HTTP_REFERER': 'http://192.168.0.220:8000/overview/1/', 'HTTP_HOST': '192.168.0.220:8000', 'SERVER_PROTOCOL': 'HTTP/1.1', 'SERVER_SOFTWARE': 'WSGIServer/0.1 Python/2.7.3', 'SCRIPT_NAME': u'', 'LESSOPEN': '| /usr/bin/lesspipe %s', 'PERL_LOCAL_LIB_ROOT': '/home/bbigras/perl5', 'SSH_CLIENT': '192.168.0.136 6196 22', 'REQUEST_METHOD': 'GET', 'LOGNAME': 'bbigras', 'USER...(truncated), func=<function at remote 0x13655f0>) at ../Objects/abstract.c:2529
#40 instancemethod_call.8751 (func=<function at remote 0x13655f0>, arg=
    (<WSGIHandler(_template_response_middleware=[], _exception_middleware=[], _response_middleware=[<instancemethod at remote 0x7f1234450e10>, <instancemethod at remote 0x7f1234450c30>, <instancemethod at remote 0x7f1234450b90>, <instancemethod at remote 0x7f1234450af0>], _request_middleware=[<instancemethod at remote 0x7f1234450960>, <instancemethod at remote 0x7f1234450b40>, <instancemethod at remote 0x7f1234450cd0>, <instancemethod at remote 0x7f1234450dc0>], _view_middleware=[<instancemethod at remote 0x7f1234450be0>]) at remote 0x7f1234268990>, {'wsgi.version': (1, 0), 'wsgi.multiprocess': False, 'PERL_MM_OPT': 'INSTALL_BASE=/home/bbigras/perl5', 'HTTP_REFERER': 'http://192.168.0.220:8000/overview/1/', 'HTTP_HOST': '192.168.0.220:8000', 'SERVER_PROTOCOL': 'HTTP/1.1', 'SERVER_SOFTWARE': 'WSGIServer/0.1 Python/2.7.3', 'SCRIPT_NAME': u'', 'LESSOPEN': '| /usr/bin/lesspipe %s', 'PERL_LOCAL_LIB_ROOT': '/home/bbigras/perl5', 'SSH_CLIENT': '192.168.0.136 6196 22', 'REQUEST_METHOD': 'GET', 'LOGNAME': 'bbigras', 'USER...(truncated), kw=0x0) at ../Objects/classobject.c:2602
#41 0x000000000049e116 in PyObject_Call (func=
    <instancemethod at remote 0x7f1228816d70>, arg=<optimized out>, 
    kw=<optimized out>) at ../Objects/abstract.c:2529
#42 0x00000000004f2105 in slot_tp_call.26005 (self=<optimized out>, args=
    ({'wsgi.version': (1, 0), 'wsgi.multiprocess': False, 'PERL_MM_OPT': 'INSTALL_BASE=/home/bbigras/perl5', 'HTTP_REFERER': 'http://192.168.0.220:8000/overview/1/', 'HTTP_HOST': '192.168.0.220:8000', 'SERVER_PROTOCOL': 'HTTP/1.1', 'SERVER_SOFTWARE': 'WSGIServer/0.1 Python/2.7.3', 'SCRIPT_NAME': u'', 'LESSOPEN': '| /usr/bin/lesspipe %s', 'PERL_LOCAL_LIB_ROOT': '/home/bbigras/perl5', 'SSH_CLIENT': '192.168.0.136 6196 22', 'REQUEST_METHOD': 'GET', 'LOGNAME': 'bbigras', 'USER': 'bbigras', 'PATH': '/home/bbigras/perl5/bin:/home/bbigras/perl5/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games', 'QUERY_STRING': '', 'HOME': '/home/bbigras', 'DEBFULLNAME': 'Bruno Bigras', 'wsgi.errors': <file at remote 0x7f123c63b270>, 'RUN_MAIN': 'true', 'LANG': 'fr_CA.UTF-8', 'HTTP_ACCEPT_CHARSET': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3', 'TERM': 'screen', 'SHELL': '/bin/bash', 'TZ': 'Europe/Zaporozhye', 'XDG_SESSION_COOKIE': '296cc6a52ee454cd4442bef350cb4ef1-1357851127.522519-1673400962', 'LANGUAGE':...(truncated), kwds=0x0) at ../Objects/typeobject.c:5428
#43 0x00000000004600be in PyObject_Call (kw=0x0, arg=<optimized out>, func=
    <WSGIHandler(_template_response_middleware=[], _exception_middleware=[], _response_middleware=[<instancemethod at remote 0x7f1234450e10>, <instancemethod at remote 0x7f1234450c30>, <instancemethod at remote 0x7f1234450b90>, <instancemethod at remote 0x7f1234450af0>], _request_middleware=[<instancemethod at remote 0x7f1234450960>, <instancemethod at remote 0x7f1234450b40>, <instancemethod at remote 0x7f1234450cd0>, <instancemethod at remote 0x7f1234450dc0>], _view_middleware=[<instancemethod at remote 0x7f1234450be0>]) at remote 0x7f1234268990>)
    at ../Objects/abstract.c:2529
#44 do_call (nk=<optimized out>, na=<optimized out>, pp_stack=0x7f12337fc5f0, 
    func=
    <WSGIHandler(_template_response_middleware=[], _exception_middleware=[], _response_middleware=[<instancemethod at remote 0x7f1234450e10>, <instancemethod at remote 0x7f1234450c30>, <instancemethod at remote 0x7f1234450b90>, <instancemethod at remote 0x7f1234450af0>], _request_middleware=[<instancemethod at remote 0x7f1234450960>, <instancemethod at remote 0x7f1234450b40>, <instancemethod at remote 0x7f1234450cd0>, <instancemethod at remote 0x7f1234450dc0>], _view_middleware=[<instancemethod at remote 0x7f1234450be0>]) at remote 0x7f1234268990>)
    at ../Python/ceval.c:4239
#45 call_function (oparg=<optimized out>, pp_stack=0x7f12337fc5f0)
    at ../Python/ceval.c:4044
#46 PyEval_EvalFrameEx (f=<optimized out>, throwflag=throwflag@entry=0)
    at ../Python/ceval.c:2666
#47 0x00000000004602b7 in fast_function (nk=<optimized out>, 
    na=<optimized out>, n=<optimized out>, pp_stack=0x7f12337fc7c0, func=
    <function at remote 0x130f938>) at ../Python/ceval.c:4107
#48 call_function (oparg=<optimized out>, pp_stack=0x7f12337fc7c0)
    at ../Python/ceval.c:4042
#49 PyEval_EvalFrameEx (f=<optimized out>, throwflag=throwflag@entry=0)
    at ../Python/ceval.c:2666
#50 0x00000000004602b7 in fast_function (nk=<optimized out>, 
    na=<optimized out>, n=<optimized out>, pp_stack=0x7f12337fc990, func=
    <function at remote 0x1315b18>) at ../Python/ceval.c:4107
#51 call_function (oparg=<optimized out>, pp_stack=0x7f12337fc990)
    at ../Python/ceval.c:4042
#52 PyEval_EvalFrameEx (f=f@entry=
    Frame 0x7f1228097bf0, for file /usr/lib/python2.7/SocketServer.py, line 649, in __init__ (self=<WSGIRequestHandler(style=<dummy(NOTICE=<function at remote 0x7f1224071410>, HTTP_SERVER_ERROR=<function at remote 0x7f1224071320>, SQL_TABLE=<function at remote 0x7f1224071758>, SQL_COLTYPE=<function at remote 0x7f1224071398>, HTTP_NOT_FOUND=<function at remote 0x7f1224071668>, HTTP_REDIRECT=<function at remote 0x7f1224071848>, SQL_FIELD=<function at remote 0x7f1224071578>, HTTP_SUCCESS=<function at remote 0x7f1224071488>, HTTP_BAD_REQUEST=<function at remote 0x7f12240715f0>, HTTP_INFO=<function at remote 0x7f1224071500>, ERROR=<function at remote 0x7f12240717d0>, SQL_KEYWORD=<function at remote 0x7f12240712a8>, HTTP_NOT_MODIFIED=<function at remote 0x7f12240716e0>, ERROR_OUTPUT=<function at remote 0x7f12240717d0>) at remote 0x7f1224064e60>, wfile=<_fileobject at remote 0x7f1224053750>, raw_requestline='GET /network/1/default/ HTTP/1.1\r\n', request=<_socketobject at remote 0x7f1224041830>, admin_media_prefix='stat...(truncated), throwflag=throwflag@entry=0) at ../Python/ceval.c:2666
#53 0x0000000000467209 in PyEval_EvalCodeEx (co=0x12bde30, 
    globals=<optimized out>, locals=locals@entry=0x0, args=<optimized out>, 
    argcount=<optimized out>, kws=kws@entry=0x7f123c623068, kwcount=0, 
    defs=defs@entry=0x0, defcount=defcount@entry=0, closure=0x0)
    at ../Python/ceval.c:3253
#54 0x00000000004aa118 in function_call (func=<function at remote 0x12efe60>, 
    arg=<optimized out>, kw=<optimized out>) at ../Objects/funcobject.c:526
#55 0x000000000046172e in PyObject_Call (kw={}, arg=
    (<WSGIRequestHandler(style=<dummy(NOTICE=<function at remote 0x7f1224071410>, HTTP_SERVER_ERROR=<function at remote 0x7f1224071320>, SQL_TABLE=<function at remote 0x7f1224071758>, SQL_COLTYPE=<function at remote 0x7f1224071398>, HTTP_NOT_FOUND=<function at remote 0x7f1224071668>, HTTP_REDIRECT=<function at remote 0x7f1224071848>, SQL_FIELD=<function at remote 0x7f1224071578>, HTTP_SUCCESS=<function at remote 0x7f1224071488>, HTTP_BAD_REQUEST=<function at remote 0x7f12240715f0>, HTTP_INFO=<function at remote 0x7f1224071500>, ERROR=<function at remote 0x7f12240717d0>, SQL_KEYWORD=<function at remote 0x7f12240712a8>, HTTP_NOT_MODIFIED=<function at remote 0x7f12240716e0>, ERROR_OUTPUT=<function at remote 0x7f12240717d0>) at remote 0x7f1224064e60>, wfile=<_fileobject at remote 0x7f1224053750>, raw_requestline='GET /network/1/default/ HTTP/1.1\r\n', request=<_socketobject at remote 0x7f1224041830>, admin_media_prefix='static/admin/', server=<WSGIServer(RequestHandlerClass=<type at remote 0x13a4c10>, base_environ={'...(truncated), func=<function at remote 0x12efe60>) at ../Objects/abstract.c:2529
#56 ext_do_call (nk=876910472, na=<optimized out>, flags=<optimized out>, 
    pp_stack=0x7f12337fcc90, func=<function at remote 0x12efe60>)
    at ../Python/ceval.c:4334
#57 PyEval_EvalFrameEx (f=f@entry=
    Frame 0x7f122402ad10, for file /usr/lib/python2.7/dist-packages/django/core/servers/basehttp.py, line 139, in __init__ (self=<WSGIRequestHandler(style=<dummy(NOTICE=<function at remote 0x7f1224071410>, HTTP_SERVER_ERROR=<function at remote 0x7f1224071320>, SQL_TABLE=<function at remote 0x7f1224071758>, SQL_COLTYPE=<function at remote 0x7f1224071398>, HTTP_NOT_FOUND=<function at remote 0x7f1224071668>, HTTP_REDIRECT=<function at remote 0x7f1224071848>, SQL_FIELD=<function at remote 0x7f1224071578>, HTTP_SUCCESS=<function at remote 0x7f1224071488>, HTTP_BAD_REQUEST=<function at remote 0x7f12240715f0>, HTTP_INFO=<function at remote 0x7f1224071500>, ERROR=<function at remote 0x7f12240717d0>, SQL_KEYWORD=<function at remote 0x7f12240712a8>, HTTP_NOT_MODIFIED=<function at remote 0x7f12240716e0>, ERROR_OUTPUT=<function at remote 0x7f12240717d0>) at remote 0x7f1224064e60>, wfile=<_fileobject at remote 0x7f1224053750>, raw_requestline='GET /network/1/default/ HTTP/1.1\r\n', request=<_socketobject at remote 0x7f1224041...(truncated), throwflag=throwflag@entry=0) at ../Python/ceval.c:2705
#58 0x0000000000467209 in PyEval_EvalCodeEx (co=0x12ed430, 
    globals=<optimized out>, locals=<optimized out>, args=<optimized out>, 
    argcount=<optimized out>, kws=kws@entry=0x0, kwcount=kwcount@entry=0, 
    defs=defs@entry=0x0, defcount=defcount@entry=0, closure=closure@entry=0x0)
    at ../Python/ceval.c:3253
#59 0x00000000004a9fea in function_call (func=<optimized out>, 
    arg=<optimized out>, kw=<optimized out>) at ../Objects/funcobject.c:526
#60 0x000000000048249d in PyObject_Call (kw=0x0, arg=
    (<WSGIRequestHandler(style=<dummy(NOTICE=<function at remote 0x7f1224071410>, HTTP_SERVER_ERROR=<function at remote 0x7f1224071320>, SQL_TABLE=<function at remote 0x7f1224071758>, SQL_COLTYPE=<function at remote 0x7f1224071398>, HTTP_NOT_FOUND=<function at remote 0x7f1224071668>, HTTP_REDIRECT=<function at remote 0x7f1224071848>, SQL_FIELD=<function at remote 0x7f1224071578>, HTTP_SUCCESS=<function at remote 0x7f1224071488>, HTTP_BAD_REQUEST=<function at remote 0x7f12240715f0>, HTTP_INFO=<function at remote 0x7f1224071500>, ERROR=<function at remote 0x7f12240717d0>, SQL_KEYWORD=<function at remote 0x7f12240712a8>, HTTP_NOT_MODIFIED=<function at remote 0x7f12240716e0>, ERROR_OUTPUT=<function at remote 0x7f12240717d0>) at remote 0x7f1224064e60>, wfile=<_fileobject at remote 0x7f1224053750>, raw_requestline='GET /network/1/default/ HTTP/1.1\r\n', request=<_socketobject at remote 0x7f1224041830>, admin_media_prefix='static/admin/', server=<WSGIServer(RequestHandlerClass=<type at remote 0x13a4c10>, base_environ={'...(truncated), func=<function at remote 0x13d91b8>) at ../Objects/abstract.c:2529
#61 instancemethod_call.8751 (func=<function at remote 0x13d91b8>, func@entry=
    <instancemethod at remote 0x7f1234381dc0>, arg=
    (<WSGIRequestHandler(style=<dummy(NOTICE=<function at remote 0x7f1224071410>, HTTP_SERVER_ERROR=<function at remote 0x7f1224071320>, SQL_TABLE=<function at remote 0x7f1224071758>, SQL_COLTYPE=<function at remote 0x7f1224071398>, HTTP_NOT_FOUND=<function at remote 0x7f1224071668>, HTTP_REDIRECT=<function at remote 0x7f1224071848>, SQL_FIELD=<function at remote 0x7f1224071578>, HTTP_SUCCESS=<function at remote 0x7f1224071488>, HTTP_BAD_REQUEST=<function at remote 0x7f12240715f0>, HTTP_INFO=<function at remote 0x7f1224071500>, ERROR=<function at remote 0x7f12240717d0>, SQL_KEYWORD=<function at remote 0x7f12240712a8>, HTTP_NOT_MODIFIED=<function at remote 0x7f12240716e0>, ERROR_OUTPUT=<function at remote 0x7f12240717d0>) at remote 0x7f1224064e60>, wfile=<_fileobject at remote 0x7f1224053750>, raw_requestline='GET /network/1/default/ HTTP/1.1\r\n', request=<_socketobject at remote 0x7f1224041830>, admin_media_prefix='static/admin/', server=<WSGIServer(RequestHandlerClass=<type at remote 0x13a4c10>, base_environ={'...(truncated), arg@entry=
    (<_socketobject at remote 0x7f1224041830>, ('192.168.0.136', 6562), <WSGIServer(RequestHandlerClass=<type at remote 0x13a4c10>, base_environ={'CONTENT_LENGTH': '', 'SERVER_NAME': 'ubuntu', 'GATEWAY_INTERFACE': 'CGI/1.1', 'SCRIPT_NAME': '', 'SERVER_PORT': '8000', 'REMOTE_HOST': ''}, _BaseServer__shutdown_request=False, server_name='ubuntu', server_address=('0.0.0.0', 8000), application=<WSGIHandler(_template_response_middleware=[], _exception_middleware=[], _response_middleware=[<instancemethod at remote 0x7f1234450e10>, <instancemethod at remote 0x7f1234450c30>, <instancemethod at remote 0x7f1234450b90>, <instancemethod at remote 0x7f1234450af0>], _request_middleware=[<instancemethod at remote 0x7f1234450960>, <instancemethod at remote 0x7f1234450b40>, <instancemethod at remote 0x7f1234450cd0>, <instancemethod at remote 0x7f1234450dc0>], _view_middleware=[<instancemethod at remote 0x7f1234450be0>]) at remote 0x7f1234268990>, server_port=8000, _BaseServer__is_shut_down=<_Event(_Verbose__verbose=False, _Event__...(truncated), kw=kw@entry=0x0) at ../Objects/classobject.c:2602
#62 0x0000000000491bb4 in PyObject_Call (kw=0x0, arg=
    (<_socketobject at remote 0x7f1224041830>, ('192.168.0.136', 6562), <WSGIServer(RequestHandlerClass=<type at remote 0x13a4c10>, base_environ={'CONTENT_LENGTH': '', 'SERVER_NAME': 'ubuntu', 'GATEWAY_INTERFACE': 'CGI/1.1', 'SCRIPT_NAME': '', 'SERVER_PORT': '8000', 'REMOTE_HOST': ''}, _BaseServer__shutdown_request=False, server_name='ubuntu', server_address=('0.0.0.0', 8000), application=<WSGIHandler(_template_response_middleware=[], _exception_middleware=[], _response_middleware=[<instancemethod at remote 0x7f1234450e10>, <instancemethod at remote 0x7f1234450c30>, <instancemethod at remote 0x7f1234450b90>, <instancemethod at remote 0x7f1234450af0>], _request_middleware=[<instancemethod at remote 0x7f1234450960>, <instancemethod at remote 0x7f1234450b40>, <instancemethod at remote 0x7f1234450cd0>, <instancemethod at remote 0x7f1234450dc0>], _view_middleware=[<instancemethod at remote 0x7f1234450be0>]) at remote 0x7f1234268990>, server_port=8000, _BaseServer__is_shut_down=<_Event(_Verbose__verbose=False, _Event__...(truncated), func=<instancemethod at remote 0x7f1234381dc0>)
    at ../Objects/abstract.c:2529
#63 slot_tp_init.25982 (self=<optimized out>, args=
    (<_socketobject at remote 0x7f1224041830>, ('192.168.0.136', 6562), <WSGIServer(RequestHandlerClass=<type at remote 0x13a4c10>, base_environ={'CONTENT_LENGTH': '', 'SERVER_NAME': 'ubuntu', 'GATEWAY_INTERFACE': 'CGI/1.1', 'SCRIPT_NAME': '', 'SERVER_PORT': '8000', 'REMOTE_HOST': ''}, _BaseServer__shutdown_request=False, server_name='ubuntu', server_address=('0.0.0.0', 8000), application=<WSGIHandler(_template_response_middleware=[], _exception_middleware=[], _response_middleware=[<instancemethod at remote 0x7f1234450e10>, <instancemethod at remote 0x7f1234450c30>, <instancemethod at remote 0x7f1234450b90>, <instancemethod at remote 0x7f1234450af0>], _request_middleware=[<instancemethod at remote 0x7f1234450960>, <instancemethod at remote 0x7f1234450b40>, <instancemethod at remote 0x7f1234450cd0>, <instancemethod at remote 0x7f1234450dc0>], _view_middleware=[<instancemethod at remote 0x7f1234450be0>]) at remote 0x7f1234268990>, server_port=8000, _BaseServer__is_shut_down=<_Event(_Verbose__verbose=False, _Event__...(truncated), kwds=0x0) at ../Objects/typeobject.c:5688
#64 0x00000000004aac6e in type_call.25628 (type=0x13a4c10, args=
    (<_socketobject at remote 0x7f1224041830>, ('192.168.0.136', 6562), <WSGIServer(RequestHandlerClass=<type at remote 0x13a4c10>, base_environ={'CONTENT_LENGTH': '', 'SERVER_NAME': 'ubuntu', 'GATEWAY_INTERFACE': 'CGI/1.1', 'SCRIPT_NAME': '', 'SERVER_PORT': '8000', 'REMOTE_HOST': ''}, _BaseServer__shutdown_request=False, server_name='ubuntu', server_address=('0.0.0.0', 8000), application=<WSGIHandler(_template_response_middleware=[], _exception_middleware=[], _response_middleware=[<instancemethod at remote 0x7f1234450e10>, <instancemethod at remote 0x7f1234450c30>, <instancemethod at remote 0x7f1234450b90>, <instancemethod at remote 0x7f1234450af0>], _request_middleware=[<instancemethod at remote 0x7f1234450960>, <instancemethod at remote 0x7f1234450b40>, <instancemethod at remote 0x7f1234450cd0>, <instancemethod at remote 0x7f1234450dc0>], _view_middleware=[<instancemethod at remote 0x7f1234450be0>]) at remote 0x7f1234268990>, server_port=8000, _BaseServer__is_shut_down=<_Event(_Verbose__verbose=False, _Event__...(truncated), kwds=0x0) at ../Objects/typeobject.c:741
#65 0x00000000004600be in PyObject_Call (kw=0x0, arg=<optimized out>, func=
    <type at remote 0x13a4c10>) at ../Objects/abstract.c:2529
#66 do_call (nk=<optimized out>, na=<optimized out>, pp_stack=0x7f12337fd240, 
    func=<type at remote 0x13a4c10>) at ../Python/ceval.c:4239
#67 call_function (oparg=<optimized out>, pp_stack=0x7f12337fd240)
    at ../Python/ceval.c:4044
#68 PyEval_EvalFrameEx (f=<optimized out>, throwflag=throwflag@entry=0)
    at ../Python/ceval.c:2666
#69 0x00000000004602b7 in fast_function (nk=<optimized out>, 
    na=<optimized out>, n=<optimized out>, pp_stack=0x7f12337fd410, func=
    <function at remote 0x12ef488>) at ../Python/ceval.c:4107
#70 call_function (oparg=<optimized out>, pp_stack=0x7f12337fd410)
    at ../Python/ceval.c:4042
#71 PyEval_EvalFrameEx (f=f@entry=
    Frame 0x7f1220021620, for file /usr/lib/python2.7/SocketServer.py, line 593, in process_request_thread (self=<WSGIServer(RequestHandlerClass=<type at remote 0x13a4c10>, base_environ={'CONTENT_LENGTH': '', 'SERVER_NAME': 'ubuntu', 'GATEWAY_INTERFACE': 'CGI/1.1', 'SCRIPT_NAME': '', 'SERVER_PORT': '8000', 'REMOTE_HOST': ''}, _BaseServer__shutdown_request=False, server_name='ubuntu', server_address=('0.0.0.0', 8000), application=<WSGIHandler(_template_response_middleware=[], _exception_middleware=[], _response_middleware=[<instancemethod at remote 0x7f1234450e10>, <instancemethod at remote 0x7f1234450c30>, <instancemethod at remote 0x7f1234450b90>, <instancemethod at remote 0x7f1234450af0>], _request_middleware=[<instancemethod at remote 0x7f1234450960>, <instancemethod at remote 0x7f1234450b40>, <instancemethod at remote 0x7f1234450cd0>, <instancemethod at remote 0x7f1234450dc0>], _view_middleware=[<instancemethod at remote 0x7f1234450be0>]) at remote 0x7f1234268990>, server_port=8000, _BaseServer__is_shut_down=...(truncated), throwflag=throwflag@entry=0) at ../Python/ceval.c:2666
#72 0x0000000000467209 in PyEval_EvalCodeEx (co=0x12bd8b0, 
    globals=<optimized out>, locals=locals@entry=0x0, args=<optimized out>, 
    argcount=<optimized out>, kws=kws@entry=0x7f123c623068, kwcount=0, 
    defs=defs@entry=0x0, defcount=defcount@entry=0, closure=0x0)
    at ../Python/ceval.c:3253
#73 0x00000000004aa118 in function_call (func=<function at remote 0x12efd70>, 
    arg=<optimized out>, kw=<optimized out>) at ../Objects/funcobject.c:526
#74 0x000000000046172e in PyObject_Call (kw={}, arg=
    (<WSGIServer(RequestHandlerClass=<type at remote 0x13a4c10>, base_environ={'CONTENT_LENGTH': '', 'SERVER_NAME': 'ubuntu', 'GATEWAY_INTERFACE': 'CGI/1.1', 'SCRIPT_NAME': '', 'SERVER_PORT': '8000', 'REMOTE_HOST': ''}, _BaseServer__shutdown_request=False, server_name='ubuntu', server_address=('0.0.0.0', 8000), application=<WSGIHandler(_template_response_middleware=[], _exception_middleware=[], _response_middleware=[<instancemethod at remote 0x7f1234450e10>, <instancemethod at remote 0x7f1234450c30>, <instancemethod at remote 0x7f1234450b90>, <instancemethod at remote 0x7f1234450af0>], _request_middleware=[<instancemethod at remote 0x7f1234450960>, <instancemethod at remote 0x7f1234450b40>, <instancemethod at remote 0x7f1234450cd0>, <instancemethod at remote 0x7f1234450dc0>], _view_middleware=[<instancemethod at remote 0x7f1234450be0>]) at remote 0x7f1234268990>, server_port=8000, _BaseServer__is_shut_down=<_Event(_Verbose__verbose=False, _Event__flag=False, _Event__cond=<_Condition(_Verbose__verbose=False, _Cond...(truncated), func=<function at remote 0x12efd70>) at ../Objects/abstract.c:2529
#75 ext_do_call (nk=604402624, na=<optimized out>, flags=<optimized out>, 
    pp_stack=0x7f12337fd710, func=<function at remote 0x12efd70>)
    at ../Python/ceval.c:4334
#76 PyEval_EvalFrameEx (f=<optimized out>, throwflag=throwflag@entry=0)
    at ../Python/ceval.c:2705
#77 0x00000000004602b7 in fast_function (nk=<optimized out>, 
    na=<optimized out>, n=<optimized out>, pp_stack=0x7f12337fd8e0, func=
    <function at remote 0xd92b18>) at ../Python/ceval.c:4107
#78 call_function (oparg=<optimized out>, pp_stack=0x7f12337fd8e0)
    at ../Python/ceval.c:4042
#79 PyEval_EvalFrameEx (f=<optimized out>, throwflag=throwflag@entry=0)
    at ../Python/ceval.c:2666
#80 0x00000000004602b7 in fast_function (nk=<optimized out>, 
    na=<optimized out>, n=<optimized out>, pp_stack=0x7f12337fdab0, func=
    <function at remote 0xd92c80>) at ../Python/ceval.c:4107
#81 call_function (oparg=<optimized out>, pp_stack=0x7f12337fdab0)
    at ../Python/ceval.c:4042
#82 PyEval_EvalFrameEx (f=f@entry=
    Frame 0x7f122402ca20, for file /usr/lib/python2.7/threading.py, line 525, in __bootstrap (self=<Thread(_Thread__ident=139716150159104, _Thread__block=<_Condition(_Verbose__verbose=False, _Condition__lock=<thread.lock at remote 0x7f123426ee90>, acquire=<built-in method acquire of thread.lock object at remote 0x7f123426ee90>, _Condition__waiters=[], release=<built-in method release of thread.lock object at remote 0x7f123426ee90>) at remote 0x7f122403ccd0>, _Thread__name='Thread-20', _Thread__daemonic=False, _Thread__started=<_Event(_Verbose__verbose=False, _Event__flag=True, _Event__cond=<_Condition(_Verbose__verbose=False, _Condition__lock=<thread.lock at remote 0x7f123426ec30>, acquire=<built-in method acquire of thread.lock object at remote 0x7f123426ec30>, _Condition__waiters=[], release=<built-in method release of thread.lock object at remote 0x7f123426ec30>) at remote 0x7f122403c090>) at remote 0x7f122403c490>, _Thread__stderr=<file at remote 0x7f123c63b270>, _Thread__target=<instancemethod at remote 0x7f...(truncated), throwflag=throwflag@entry=0) at ../Python/ceval.c:2666
#83 0x0000000000467209 in PyEval_EvalCodeEx (co=0xd84a30, 
    globals=<optimized out>, locals=<optimized out>, args=<optimized out>, 
    argcount=<optimized out>, kws=kws@entry=0x0, kwcount=kwcount@entry=0, 
    defs=defs@entry=0x0, defcount=defcount@entry=0, closure=closure@entry=0x0)
    at ../Python/ceval.c:3253
#84 0x00000000004a9fea in function_call (func=<optimized out>, 
    arg=<optimized out>, kw=<optimized out>) at ../Objects/funcobject.c:526
#85 0x000000000048249d in PyObject_Call (kw=0x0, arg=
    (<Thread(_Thread__ident=139716150159104, _Thread__block=<_Condition(_Verbose__verbose=False, _Condition__lock=<thread.lock at remote 0x7f123426ee90>, acquire=<built-in method acquire of thread.lock object at remote 0x7f123426ee90>, _Condition__waiters=[], release=<built-in method release of thread.lock object at remote 0x7f123426ee90>) at remote 0x7f122403ccd0>, _Thread__name='Thread-20', _Thread__daemonic=False, _Thread__started=<_Event(_Verbose__verbose=False, _Event__flag=True, _Event__cond=<_Condition(_Verbose__verbose=False, _Condition__lock=<thread.lock at remote 0x7f123426ec30>, acquire=<built-in method acquire of thread.lock object at remote 0x7f123426ec30>, _Condition__waiters=[], release=<built-in method release of thread.lock object at remote 0x7f123426ec30>) at remote 0x7f122403c090>) at remote 0x7f122403c490>, _Thread__stderr=<file at remote 0x7f123c63b270>, _Thread__target=<instancemethod at remote 0x7f12343f17d0>, _Thread__kwargs={}, _Verbose__verbose=False, _Thread__args=(<_socketobject at rem...(truncated), func=<function at remote 0xd92b90>) at ../Objects/abstract.c:2529
#86 instancemethod_call.8751 (func=<function at remote 0xd92b90>, arg=
    (<Thread(_Thread__ident=139716150159104, _Thread__block=<_Condition(_Verbose__verbose=False, _Condition__lock=<thread.lock at remote 0x7f123426ee90>, acquire=<built-in method acquire of thread.lock object at remote 0x7f123426ee90>, _Condition__waiters=[], release=<built-in method release of thread.lock object at remote 0x7f123426ee90>) at remote 0x7f122403ccd0>, _Thread__name='Thread-20', _Thread__daemonic=False, _Thread__started=<_Event(_Verbose__verbose=False, _Event__flag=True, _Event__cond=<_Condition(_Verbose__verbose=False, _Condition__lock=<thread.lock at remote 0x7f123426ec30>, acquire=<built-in method acquire of thread.lock object at remote 0x7f123426ec30>, _Condition__waiters=[], release=<built-in method release of thread.lock object at remote 0x7f123426ec30>) at remote 0x7f122403c090>) at remote 0x7f122403c490>, _Thread__stderr=<file at remote 0x7f123c63b270>, _Thread__target=<instancemethod at remote 0x7f12343f17d0>, _Thread__kwargs={}, _Verbose__verbose=False, _Thread__args=(<_socketobject at rem...(truncated), kw=0x0) at ../Objects/classobject.c:2602
#87 0x000000000049629d in PyObject_Call (kw=<optimized out>, arg=(), func=
    <instancemethod at remote 0x7f1228816d20>) at ../Objects/abstract.c:2529
#88 PyEval_CallObjectWithKeywords (func=
    <instancemethod at remote 0x7f1228816d20>, arg=(), kw=<optimized out>)
    at ../Python/ceval.c:3890
#89 0x00000000004d8e12 in t_bootstrap.49493 (boot_raw=0x7f1234211930)
    at ../Modules/threadmodule.c:614
#90 0x00007f123c238e9a in start_thread (arg=0x7f12337fe700)
    at pthread_create.c:308
#91 0x00007f123b64bcbd in clone ()
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#92 0x0000000000000000 in ?? ()

webvirtmgr: 437f051
python : 2.7.3-5ubuntu4
python-django : 1.4.1-2ubuntu0.2
Ubuntu 12.10 (x86_64)

Any ideas?

Virtual Machine - New Flavor - values

Hi, would it be possible so that we could type in our own value rather than choose one from a drop down list for VCPU and RAM and HDD when creating New Flavor?

For example I want to create a 'New Flavor' with 12GB of RAM and this is not possible. Also, typing my own value would be easier :)

Thanks!

It is not work on debian squeeze or ... ?

$ ./manage.py syncdb
Traceback (most recent call last):
File "./manage.py", line 14, in
execute_manager(settings)
File "/usr/lib/pymodules/python2.6/django/core/management/init.py", line 438, in execute_manager
utility.execute()
File "/usr/lib/pymodules/python2.6/django/core/management/init.py", line 379, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/lib/pymodules/python2.6/django/core/management/base.py", line 191, in run_from_argv
self.execute(_args, *_options.dict)
File "/usr/lib/pymodules/python2.6/django/core/management/base.py", line 219, in execute
self.validate()
File "/usr/lib/pymodules/python2.6/django/core/management/base.py", line 249, in validate
num_errors = get_validation_errors(s, app)
File "/usr/lib/pymodules/python2.6/django/core/management/validation.py", line 28, in get_validation_errors
for (app_name, error) in get_app_errors().items():
File "/usr/lib/pymodules/python2.6/django/db/models/loading.py", line 146, in get_app_errors
self._populate()
File "/usr/lib/pymodules/python2.6/django/db/models/loading.py", line 61, in _populate
self.load_app(app_name, True)
File "/usr/lib/pymodules/python2.6/django/db/models/loading.py", line 76, in load_app
app_module = import_module(app_name)
File "/usr/lib/pymodules/python2.6/django/utils/importlib.py", line 35, in import_module
import(name)
ImportError: No module named staticfiles

why?

Support for editing and creating custom virtual machine specifications

Currently WebVirtMgr only allows for 6 predefined virtual machine specifications to be created:

micro
mini
small
medium
large
xlarge

It would be good to have a separate template file where these are stored making it easier to edit them or add our own custom virtual machine specification. At the moment this is only possible by editing:

/var/www/webvirtmgr/virtmgr/views.py

To add a new virtual machine specification (called webnode in this example) I would have to edit the above file like so:

    flavors = {}
    flavors[1] = ('webnode', '3', '12288', '16')
    flavors[2] = ('micro', '1', '256', '10')
    flavors[3] = ('mini', '1', '512', '20')
    flavors[4] = ('small', '2', '1024', '40')
    flavors[5] = ('medium', '2', '2048', '80')
    flavors[6] = ('large', '4', '4096', '160')
    flavors[7] = ('xlarge', '6', '8192', '320')

New dashboard view of all virtual machines

A nice to have would be a dashboard of all virtual machines separated by the KVM host they are running on. Or, just a list of all virtual machines from all hosts that have been added to WebVirtMgr and in the 'Name & Status' for each virtual machine the name of the KVM host that the virtual machine is running on.

libvir: RPC error : authentication failed: authentication failed

When trying to manage a new connection, I get an error at the top of the connection's overview page saying "authentication failed: authentication failed", while the dashboard says the connection was successful. Also, "libvir: RPC error : authentication failed: authentication failed" is output in the gunicorn console.

I tried to test it via virsh, but I am still unable to connect. Any ideas?

(venv)jlillis@odin:/opt/webvirtmgr$ virsh -c qemu+tcp://127.0.0.1/system nodeinfo
Please enter your authentication name: jlillis
Please enter your password:
error: authentication failed: authentication failed
error: failed to connect to the hypervisor

Can not start manage

I can login "http://127.0.0.1:8000/dashboard/" successfully and add a connect. However, when clicked the button "manage" ,

it always jumped to "http://127.0.0.1:8000/overview/1/" , and see the following errors:

TypeError at /overview/1/

getMemoryStats() takes exactly 5 arguments (3 given)

Request Method: GET
Request URL: http://127.0.0.1:8000/overview/1/
Django Version: 1.3.2
Exception Type: TypeError
Exception Value:

getMemoryStats() takes exactly 5 arguments (3 given)

Exception Location: /root/webvirtmgr/../webvirtmgr/overview/views.py in get_mem_usage, line 92
Python Executable: /usr/bin/python
Python Version: 2.7.2
Python Path:

['/root/webvirtmgr',
'/usr/lib64/python27.zip',
'/usr/lib64/python2.7',
'/usr/lib64/python2.7/plat-linux2',
'/usr/lib64/python2.7/lib-tk',
'/usr/lib64/python2.7/lib-old',
'/usr/lib64/python2.7/lib-dynload',
'/usr/lib64/python2.7/site-packages',
'/usr/lib64/python2.7/site-packages/PIL',
'/usr/lib64/python2.7/site-packages/gst-0.10',
'/usr/lib64/python2.7/site-packages/gtk-2.0',
'/usr/lib/python2.7/site-packages',
'/usr/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg-info']

Server time: Mon, 3 Sep 2012 15:28:47 +0300
Traceback Switch to copy-and-paste view

/usr/lib/python2.7/site-packages/django/core/handlers/base.py in get_response

...

I just follow the steps given by https://github.com/retspen/webvirtmgr , and start by "./manage.py runserver 127.0.0.1:8000"

Question User / Customer Support

It would be really cool if there could be user accounts, limit users resources, or create vm's for that user. and maybe having a little api for creating stopping starting machines. And you will have a cloud then and there :).

authentication failed :(

Hi all,
i trying to use WebVirtMgr on my Mageia 64bit. When i start it with:
$ ./manage.py runserver 127.0.0.1:8000

seems that all work but when i try to overview... i receive auth failed:
http://img407.imageshack.us/img407/4402/noauth.jpg

in https://www.webvirtmgr.net/docs/ is required to add user by using
saslpasswd2 and THIS IS PROBLEM: saslpasswd2 -a libvirt fred (as sampe)
don't create passwd.db file. In messages i saw:
saslpasswd2: could not find auxprop plugin, was searching for [all]

could you help me ?

locale.getdefaultlocale error

./manage.py syncdb

Creating tables ...
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_user_permissions
Creating table auth_user_groups
Creating table auth_user
Creating table django_content_type
Creating table django_session
Creating table django_site
Creating table django_admin_log
Creating table virtmgr_host
Creating table virtmgr_vm

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Traceback (most recent call last):
File "./manage.py", line 14, in
execute_manager(settings)
File "/usr/lib64/python2.7/site-packages/django/core/management/init.py", line 459, in execute_manager
utility.execute()
File "/usr/lib64/python2.7/site-packages/django/core/management/init.py", line 382, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/lib64/python2.7/site-packages/django/core/management/base.py", line 196, in run_from_argv
self.execute(_args, *_options.dict)
File "/usr/lib64/python2.7/site-packages/django/core/management/base.py", line 232, in execute
output = self.handle(_args, _options)
File "/usr/lib64/python2.7/site-packages/django/core/management/base.py", line 371, in handle
return self.handle_noargs(
_options)
File "/usr/lib64/python2.7/site-packages/django/core/management/commands/syncdb.py", line 110, in handle_noargs
emit_post_sync_signal(created_models, verbosity, interactive, db)
File "/usr/lib64/python2.7/site-packages/django/core/management/sql.py", line 189, in emit_post_sync_signal
interactive=interactive, db=db)
File "/usr/lib64/python2.7/site-packages/django/dispatch/dispatcher.py", line 172, in send
response = receiver(signal=self, sender=sender, *_named)
File "/usr/lib64/python2.7/site-packages/django/contrib/auth/management/init.py", line 73, in create_superuser
call_command("createsuperuser", interactive=True, database=db)
File "/usr/lib64/python2.7/site-packages/django/core/management/init.py", line 150, in call_command
return klass.execute(_args, *_defaults)
File "/usr/lib64/python2.7/site-packages/django/core/management/base.py", line 232, in execute
output = self.handle(_args, *_options)
File "/usr/lib64/python2.7/site-packages/django/contrib/auth/management/commands/createsuperuser.py", line 70, in handle
default_username = get_default_username()
File "/usr/lib64/python2.7/site-packages/django/contrib/auth/management/init.py", line 105, in get_default_username
default_username = get_system_username()
File "/usr/lib64/python2.7/site-packages/django/contrib/auth/management/init.py", line 85, in get_system_username
return getpass.getuser().decode(locale.getdefaultlocale()[1])
TypeError: decode() argument 1 must be string, not None

VNC settings

I love the webvirtmgr. For the users in my office that are die hard virt-manager users, is there a way to get the VNC to play nice across both?

On a VM created from webvirtmgr, a console session opens flawlessly. From virt-manager, it asks for a password, but no password I've tried works.

On a VM created from virt-manager, a console session opens and prompts for ssh credentials from webvirtmgr (which is fine if that's the only option)

My issue is that I prefer to create the VMs in webvirtmgr, but thus far I'm not able to give console access to the virt-manager users. Is there a way to get them to play nice together?
Thanks.

Create VM "Error 500"

Hello,

When i try to create a vm machine on webvirtmanger,i am getting error message below.

Error 500

any idea ?

Update WebVirtMgr to be fully Django 1.5 compliant

Currently, WebVirtMgr uses Django 1.3, while the current version is 1.5. We should aim to have a 1.5-compliant version out, while maintaining the 1.3 branch for CentOS systems (which don't have 1.5 in the repositories yet).

Directory structure, settings, import paths, and probably more will need to be changed to be 'fully' 1.5 compliant.

Can't get the last version to work on debian 6

Hello, I love webvirt but I can not make the last version to work on
my debian 6, I know you recomend ubuntu but I have all my kvm hosts
running debian, can you please help me?

This is the error:

http://pastebin.com/9mfeG3xh

I have the following python and django versions:

colossus:/home/kbs# dpkg -l | grep python
ii libapache2-mod-python 3.3.1-9+b1
ii libpython2.6 2.6.6-8+b1
ii python 2.6.6-3+squeeze7
ii python-apt 0.7.100.1+squeeze1
ii python-apt-common 0.7.100.1+squeeze1
ii python-central 0.6.16+nmu1
ii python-django 1.4.5-1~bpo60+2
ii python-libvirt 0.8.3-5+squeeze5
ii python-libxml2 2.7.8.dfsg-2+squeeze7
ii python-minimal 2.6.6-3+squeeze7
ii python-pycurl 7.19.0-3+b1
ii python-reportbug 4.12.6
ii python-support 1.0.10
ii python-urlgrabber 3.9.1-4 A
ii python2.6 2.6.6-8+b1
ii python2.6-minimal 2.6.6-8+b1 A

The connection works well:

colossus:/home/kbs# virsh -c qemu+tcp://127.0.0.1/system nodeinfo
Please enter your authentication name: root
Please enter your password:
CPU model: x86_64
CPU(s): 2
CPU frequency: 2813 MHz
CPU socket(s): 1
Core(s) per socket: 2
Thread(s) per core: 1
NUMA cell(s): 1
Memory size: 8197568 kB

I get to see the dashboard and adding the connection, but when I click
the "overview" button, it gives me an 500 error:

WebVirtMgr

Sign in

500

What can I do?

Thanks

500 when clicking on a virtual machine

I got a 500 error when I click on a virtual machinage name.

With the following URL : http://ip:8000/vm/1/my_vm_name/, I see in the log :

libvir: Storage Driver error : Storage volume not found: no storage vol with matching path
[10/Jan/2013 21:50:50] "GET /vm/1/my_vm_name/ HTTP/1.1" 500 1801
[10/Jan/2013 21:50:50] "GET /vm/1/js/jquery.js HTTP/1.1" 404 1838
[10/Jan/2013 21:50:50] "GET /vm/1/js/bootstrap.js HTTP/1.1" 404 1838
[10/Jan/2013 21:50:50] "GET /vm/1/css/bootstrap-responsive.css HTTP/1.1" 404 1838
[10/Jan/2013 21:50:50] "GET /vm/1/css/bootstrap.css HTTP/1.1" 404 1838
[10/Jan/2013 21:50:50] "GET /vm/1/img/favicon.ico HTTP/1.1" 404 1838

Here's the disk part of dumpxml my_vm_name :

<disk type='file' device='disk'>
  <driver name='qemu' type='raw'/>
  <source file='/home/bbigras/my_vm_name.qcow2'/>
  <target dev='hda' bus='ide'/>
  <address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>

I'm using webvirtmgr on the same host as KVM.

Ubuntu 12.10 (x86_64)
libvirt-bin: 0.9.13-0ubuntu12.1
webvirtmgr: c45f2a4

TemplateDoesNotExist at /login/

After ./manage.py syncdb

login.html

Request Method: GET
Request URL: http://webvirtmgr.local.ru/login/
Django Version: 1.4.3
Exception Type: TemplateDoesNotExist
Exception Value:

login.html

Exception Location: /usr/lib/python2.7/dist-packages/django/template/loader.py in find_template, line 138
Python Executable: /usr/bin/python
Python Version: 2.7.3
Python Path:

['/var/www',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/pymodules/python2.7',
'/var/www/webvirtmgr']

Server time: Sat, 2 Mar 2013 16:30:57 +0200

full http://pastebin.com/NBQEReTR

Crash

Created VM, tried to open it's page.
Environment:

Request Method: GET
Request URL: http://marion.lhc:8000/vm/2/debian/

Django Version: 1.3.1
Python Version: 2.7.3
Installed Applications:
['django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.admin',
'webvirtmgr.model']
Installed Middleware:
('django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.csrf.CsrfViewMiddleware')

Traceback:
File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response

  1.                     response = callback(request, _callback_args, *_callback_kwargs)
    
    File "/home/lex/webvirtmgr/../webvirtmgr/vm/views.py" in index
  2. active = get_vm_active()
    File "/home/lex/webvirtmgr/../webvirtmgr/vm/views.py" in get_vm_active
  3.      state = dom.isActive()
    

Exception Type: AttributeError at /vm/2/debian/
Exception Value: 'str' object has no attribute 'isActive'

Can't parse a virtual machine XML with more than one VHDD

Example of XML:

<domain type='kvm'>
  <name>ftp-server</name>
  <uuid>2860935b-6828-db50-b2e7-4fcfddd02506</uuid>
  <memory unit='KiB'>307200</memory>
  <currentMemory unit='KiB'>307200</currentMemory>
  <vcpu>1</vcpu>
  <os>
    <type arch='i686' machine='pc-0.14'>hvm</type>
    <boot dev='hd'/>
    <bootmenu enable='no'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <cpu mode='custom' match='exact'>
    <model fallback='allow'>n270</model>
    <feature policy='force' name='x2apic'/>
  </cpu>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/bin/qemu-kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw'/>
      <source file='/virtual.images.1/ftp.img'/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </disk>
    <disk type='block' device='disk'>
      <driver name='qemu' type='raw'/>
      <source dev='/dev/vg_data/ftp.data'/>
      <target dev='vdb' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </disk>
    <controller type='usb' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
    </controller>
    <interface type='bridge'>
      <mac address='52:54:00:6b:d3:eb'/>
      <source bridge='br0'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </interface>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='-1' autoport='yes' keymap='en-us'/>
    <video>
      <model type='cirrus' vram='9216' heads='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </memballoon>
  </devices>
</domain>

Error 500 on Overview

OS : CentOS 6.2 x86_64
Python : 2.6.6
Libvirt : 0.9.4
Django : 1.3.4

Getting this fast empty webpage when clicking on "Overview" :

Error 500
- Sign in -

Workaround is to change "webvirtmgr/polls/views.py". Replace :

cpu = conn.getCPUStats(-1,0)

with :

cpu = 0

and replace :

get_freemem = conn.getMemoryStats(-1,0)

with :

get_freemem = 0

Of course, CPU and Memory usage only display "0" after that. Needs better solution.

Add new Virtual Machine options for 'Action For This Server'

The below options would be good to have and make the application much easier to use:

Add a 'Shutdown' button (virsh shutdown 'servername')
Add a 'Force Shutdown' button (virsh destroy 'servername')
Add a 'Delete and Remove' button (virsh undefine 'servername' and then virsh vol-delete --pool 'poolname' 'severname')

Getting a 500 error if any storage pool is stopped when I try to create a new VM.

On WebVirtMgr panel v2.0.0 created from a new git clone.

I get a 500 error if any storage pool is stopped when I try to create a new VM.

It might be useful to trap this error and handle it by either telling the user about the problem or by giving the option to start the pool directly from the error page.

Debug:

Environment:

Request Method: GET
Request URL: http://ra.home:81/webvirtmgr/newvm/1/

Django Version: 1.4.5
Python Version: 2.7.4
Installed Applications:
('django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'vds')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware')


Traceback:
File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
  111.                         response = callback(request, *callback_args, **callback_kwargs)
File "/var/www81/webvirtmgr/newvm/views.py" in newvm
  140.         all_img = libvirt_func.images_get_storages(conn, all_storages)
File "/var/www81/webvirtmgr/libvirt_func.py" in images_get_storages
  257.         stg.refresh(0)
File "/usr/lib/python2.7/dist-packages/libvirt.py" in refresh
  2441.         if ret == -1: raise libvirtError ('virStoragePoolRefresh() failed', pool=self)

Exception Type: libvirtError at /newvm/1/
Exception Value: Requested operation is not valid: storage pool 'storage' is not active

VNC: Could not connect to server

Если можно, я буду писать по русски.

В общем, впервые установил данную ПУ на свой сервер. Все делал по инструкции и вроде бы все работает.

Но не получается подключится по VNC.

Получаю ошибку: Network error: could not connect to server: hostname.blablabla:5900

Насколько я понял, VNC работает по localhost (судя по netstat), а ПУ пытается подключится по hostname. Если создать SSH туннель и подключится через TightVNC, то все работает, но это неудобно.. Прошу помощи разобраться в данной проблеме.

VNC is broken when webvirtmgr is hosted on a HTTPS webserver

These lines of code in templates/vnc.html causes VNC to fail to connect if you are using apache over HTTPS.

                       'encrypt':      WebUtil.getQueryVar('encrypt',
                                (window.location.protocol === "https:")),

I replaced it with:

                       'encrypt':      false,

And then VNC showed properly and I have no more issues.

404 returned on clicking VM

I can see the overview of the host just fine. And on some of the VMs, I can log in and see details about that VM, but 3 of 4 show me a 404 message. Here's the output from the web server:

Fails with 404:
administrator@qp-kvm-ibm:~/webvirtmgr$ ./manage.py runserver 10.20.5.1:8000
Validating models...

0 errors found
Django version 1.3.1, using settings 'webvirtmgr.settings'
Development server is running at http://10.20.5.1:8000/
Quit the server with CONTROL-C.
[28/Feb/2013 20:59:45] "GET / HTTP/1.1" 302 0
[28/Feb/2013 20:59:45] "GET /dashboard/ HTTP/1.1" 200 5552
[28/Feb/2013 21:00:01] "GET /overview/1/ HTTP/1.1" 200 9551
[28/Feb/2013 21:00:07] "GET /vm/1/qp-IntuitChat/ HTTP/1.1" 404 1838
[28/Feb/2013 21:00:07] "GET /vm/1/static/css/bootstrap.css HTTP/1.1" 404 1838
[28/Feb/2013 21:00:07] "GET /vm/1/static/css/bootstrap-responsive.css HTTP/1.1" 404 1838
[28/Feb/2013 21:00:07] "GET /vm/1/static/js/jquery.js HTTP/1.1" 404 1838
[28/Feb/2013 21:00:07] "GET /vm/1/static/js/bootstrap.js HTTP/1.1" 404 1838
[28/Feb/2013 21:00:07] "GET /vm/1/static/js/bootstrap.js HTTP/1.1" 404 1838
^Cadministrator@qp-kvm-ibm:~/webvirtmgr$

Works fine:
administrator@qp-kvm-ibm:~/webvirtmgr$ ./manage.py runserver 10.20.5.1:8000
Validating models...

0 errors found
Django version 1.3.1, using settings 'webvirtmgr.settings'
Development server is running at http://10.20.5.1:8000/
Quit the server with CONTROL-C.
[28/Feb/2013 21:04:26] "GET / HTTP/1.1" 302 0
[28/Feb/2013 21:04:27] "GET /dashboard/ HTTP/1.1" 200 5552
[28/Feb/2013 21:04:32] "GET /overview/1/ HTTP/1.1" 200 9551
[28/Feb/2013 21:04:37] "GET /vm/1/winApache/ HTTP/1.1" 200 9012
^Cadministrator@qp-kvm-ibm:~/webvirtmgr

All files are stored in the same locations and have the same permissions and ownership.
Ubuntu Server 12.04 x64

Any ideas of what's different? Thanks

Adding 'image' to LVM Storage Pool Problems

Hello.

I have a volume group setup for KVM to use called kvmspace. From the UI, I try adding a new image called centos123 and the following is the output from webvirtmgr:

libvir:  error : internal error Child process (/sbin/lvchange -aln kvmspace/centos123) unexpected exit status 5:   One or more specified logical volume(s) not found.

Any ideas to correcting this?

Getting error 500 on creating new VM

I'm always getting an errorcode 500 when I want to create a virtual machine. The test.img will be created. I'm using the integrated webserver started with ./manage.py runserver 0.0.0.0:8000

Error when clicking on a virtual machine that is shutdown

If a virtual machine has been shutdown, trying to click on it from the list causes a '500' error.

Traceback (most recent call last):

File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py", line 111, in get_response
response = callback(request, _callback_args, *_callback_kwargs)

File "/var/www/webvirtmgr/virtmgr/views.py", line 1217, in vm
hdd_image = get_dom_hdd(storages)

File "/var/www/webvirtmgr/virtmgr/views.py", line 1167, in get_dom_hdd
img = conn.storageVolLookupByPath(hdd)

File "/usr/lib/python2.7/dist-packages/libvirt.py", line 2830, in storageVolLookupByPath
if ret is None:raise libvirtError('virStorageVolLookupByPath() failed', conn=self)

libvirtError: Storage volume not found: no storage vol with matching path

<ModPythonRequest
path:/vm/1/web302.ln1.vm.prod/,
GET:<QueryDict: {}>,
POST:<QueryDict: {}>,
COOKIES:{'csrftoken': 'd44f4f73a7bcc71dfc2a6b5ea9fa11e9',
'sessionid': 'b9d9dc651ca4ad0adff8bdf3fe2f53dd'},
META:{'AUTH_TYPE': None,
'CONTENT_LENGTH': 0,
'CONTENT_TYPE': None,
'CSRF_COOKIE': 'd44f4f73a7bcc71dfc2a6b5ea9fa11e9',
'GATEWAY_INTERFACE': 'CGI/1.1',
'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8',
'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.5',
'HTTP_CONNECTION': 'keep-alive',
'HTTP_COOKIE': 'csrftoken=d44f4f73a7bcc71dfc2a6b5ea9fa11e9; sessionid=b9d9dc651ca4ad0adff8bdf3fe2f53dd',
'HTTP_HOST': '10.3.117.100',
'HTTP_REFERER': 'http://10.3.117.100/overview/1/',
'HTTP_USER_AGENT': 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0',
'PATH_INFO': u'/vm/1/web302.ln1.vm.prod/',
'PATH_TRANSLATED': None,
'QUERY_STRING': None,
'REMOTE_ADDR': '172.17.25.41',
'REMOTE_HOST': None,
'REMOTE_IDENT': None,
'REMOTE_USER': None,
'REQUEST_METHOD': 'GET',
'SCRIPT_NAME': '/webvirtmgr',
'SERVER_NAME': 'kvmmaster.ln1.vm.prod',
'SERVER_PORT': 80,
'SERVER_PROTOCOL': 'HTTP/1.1',
'SERVER_SOFTWARE': 'mod_python'}>

Method to customise the virtual machine XML template and also set VNC password for webvirtmgr.db

It would be good to have an easy way (a separate template or config file) specifically for customising the XML template that gets created for each virtual machine through WebVirtMgr. At the moment if anyone wishes to edit how the XML virtual machine config files get created this has to be done by manually making changes to:

/var/www/webvirtmgr/virtmgr/views.py

It would be good to do this through the web interface as well if possible. Another feature would be an option to specify a VNC password in it so that the same password is written to:

/var/www/webvirtmgr/webvirtmgr.db

At the moment I have to change (line 553 of views.py):

vnc_passwd = ''.join([choice(letters + digits) for i in range(12)])
to
vnc_passwd = 'P@ssw0rd'

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.