WebVirtCloud is virtualization web interface for admins and users

Overview

Gitpod ready-to-code

WebVirtCloud

Python 3.x & Django 3.2 LTS

Features

  • QEMU/KVM Hypervisor Management
  • QEMU/KVM Instance Management - Create, Delete, Update
  • Hypervisor & Instance web based stats
  • Manage Multiple QEMU/KVM Hypervisor
  • Manage Hypervisor Datastore pools
  • Manage Hypervisor Networks
  • Instance Console Access with Browsers
  • Libvirt API based web management UI
  • User Based Authorization and Authentication
  • User can add SSH public key to root in Instance (Tested only Ubuntu)
  • User can change root password in Instance (Tested only Ubuntu)
  • Supports cloud-init datasource interface

Warning!!!

How to update gstfsd daemon on hypervisor:

wget -O - https://bit.ly/2NAaWXG | sudo tee -a /usr/local/bin/gstfsd
sudo service supervisor restart

Description

WebVirtCloud is a virtualization web interface for admins and users. It can delegate Virtual Machine's to users. A noVNC viewer presents a full graphical console to the guest domain. KVM is currently the only hypervisor supported.

Quick Install with Installer (Beta)

Install an OS and run specified commands. Installer supported OSes: Ubuntu 18.04, Debian 10, Centos/OEL/RHEL 8. It can be installed on a virtual machine, physical host or on a KVM host.

wget https://raw.githubusercontent.com/retspen/webvirtcloud/master/install.sh
chmod 744 install.sh
# run with sudo or root user
./install.sh

Manual Installation

Generate secret key

You should generate SECRET_KEY after cloning repo. Then put it into webvirtcloud/settings.py.

import random, string
haystack = string.ascii_letters + string.digits + string.punctuation
print(''.join([random.SystemRandom().choice(haystack) for _ in range(50)]))

Install WebVirtCloud panel (Ubuntu 18.04+ LTS)

sudo apt-get -y install git virtualenv python3-virtualenv python3-dev python3-lxml libvirt-dev zlib1g-dev libxslt1-dev nginx supervisor libsasl2-modules gcc pkg-config python3-guestfs libsasl2-dev libldap2-dev libssl-dev
git clone https://github.com/retspen/webvirtcloud
cd webvirtcloud
cp webvirtcloud/settings.py.template webvirtcloud/settings.py
# now put secret key to webvirtcloud/settings.py
sudo cp conf/supervisor/webvirtcloud.conf /etc/supervisor/conf.d
sudo cp conf/nginx/webvirtcloud.conf /etc/nginx/conf.d
cd ..
sudo mv webvirtcloud /srv
sudo chown -R www-data:www-data /srv/webvirtcloud
cd /srv/webvirtcloud
virtualenv -p python3 venv
source venv/bin/activate
pip install -r conf/requirements.txt
python3 manage.py migrate
sudo chown -R www-data:www-data /srv/webvirtcloud
sudo rm /etc/nginx/sites-enabled/default

Restart services for running WebVirtCloud:

sudo service nginx restart
sudo service supervisor restart

Setup libvirt and KVM on server

wget -O - https://bit.ly/36baWUu | sudo sh

Done!!

Go to http://serverip and you should see the login screen.

Install WebVirtCloud panel (CentOS8/OEL8)

sudo yum -y install epel-release
sudo yum -y install python3-virtualenv python3-devel libvirt-devel glibc gcc nginx supervisor python3-lxml git python3-libguestfs iproute-tc cyrus-sasl-md5 python3-libguestfs libsasl2-dev libldap2-dev libssl-dev

Creating directories and cloning repo

sudo mkdir /srv && cd /srv
sudo git clone https://github.com/retspen/webvirtcloud && cd webvirtcloud
cp webvirtcloud/settings.py.template webvirtcloud/settings.py
# now put secret key to webvirtcloud/settings.py
# create secret key manually or use that command
sudo sed -r "s/SECRET_KEY = ''/SECRET_KEY = '"`python3 /srv/webvirtcloud/conf/runit/secret_generator.py`"'/" -i /srv/webvirtcloud/webvirtcloud/settings.py

Start installation webvirtcloud

virtualenv-3 venv
source venv/bin/activate
pip3 install -r conf/requirements.txt
cp conf/nginx/webvirtcloud.conf /etc/nginx/conf.d/
python3 manage.py migrate

Configure the supervisor for CentOS

Add the following after the [include] line (after files = ... actually):

sudo vim /etc/supervisord.conf

[program:webvirtcloud]
command=/srv/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /srv/webvirtcloud/gunicorn.conf.py
directory=/srv/webvirtcloud
user=nginx
autostart=true
autorestart=true
redirect_stderr=true

[program:novncd]
command=/srv/webvirtcloud/venv/bin/python3 /srv/webvirtcloud/console/novncd
directory=/srv/webvirtcloud
user=nginx
autostart=true
autorestart=true
redirect_stderr=true

Edit the nginx.conf file

You will need to edit the main nginx.conf file as the one that comes from the rpm's will not work. Comment the following lines:

#    server {
#        listen       80 default_server;
#        listen       [::]:80 default_server;
#        server_name  _;
#        root         /usr/share/nginx/html;
#
#        # Load configuration files for the default server block.
#        include /etc/nginx/default.d/*.conf;
#
#        location / {
#        }
#
#        error_page 404 /404.html;
#            location = /40x.html {
#        }
#
#        error_page 500 502 503 504 /50x.html;
#            location = /50x.html {
#        }
#    }
}

Also make sure file in /etc/nginx/conf.d/webvirtcloud.conf has the proper paths:

upstream gunicorn_server {
    #server unix:/srv/webvirtcloud/venv/wvcloud.socket fail_timeout=0;
    server 127.0.0.1:8000 fail_timeout=0;
}
server {
    listen 80;

    server_name servername.domain.com;
    access_log /var/log/nginx/webvirtcloud-access_log; 

    location /static/ {
        root /srv/webvirtcloud;
        expires max;
    }

    location / {
        proxy_pass http://gunicorn_server;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_for;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Forwarded-Proto $remote_addr;
        proxy_connect_timeout 1800;
        proxy_read_timeout 1800;
        proxy_send_timeout 1800;
        client_max_body_size 1024M;
    }
}

Change permissions so nginx can read the webvirtcloud folder:

sudo chown -R nginx:nginx /srv/webvirtcloud

Change permission for selinux:

sudo semanage fcontext -a -t httpd_sys_content_t "/srv/webvirtcloud(/.*)"
sudo setsebool -P httpd_can_network_connect on -P

Add required user to the kvm group(if you not install with root):

sudo usermod -G kvm -a <username>

Allow http ports on firewall:

sudo firewall-cmd --add-service=http
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-port=6080/tcp
sudo firewall-cmd --add-port=6080/tcp --permanent

Let's restart nginx and the supervisord services:

sudo systemctl restart nginx && systemctl restart supervisord

And finally, check everything is running:

sudo supervisorctl status
gstfsd             RUNNING   pid 24662, uptime 6:01:40
novncd             RUNNING   pid 24661, uptime 6:01:40
webvirtcloud       RUNNING   pid 24660, uptime 6:01:40

Apache mod_wsgi configuration

WSGIDaemonProcess webvirtcloud threads=2 maximum-requests=1000 display-name=webvirtcloud
WSGIScriptAlias / /srv/webvirtcloud/webvirtcloud/wsgi_custom.py

Install final required packages for libvirtd and others on Host Server

wget -O - https://clck.ru/9V9fH | sudo sh

Done!!

Go to http://serverip and you should see the login screen.

Alternative running novncd via runit(Debian)

Alternative to running nonvcd via supervisor is runit.

On Debian systems install runit and configure novncd service:

apt install runit runit-systemd
mkdir /etc/service/novncd/
ln -s /srv/webvirtcloud/conf/runit/novncd.sh /etc/service/novncd/run
systemctl start runit.service

Default credentials

login: admin
password: admin

Configuring Compute SSH connection

This is a short example of configuring cloud and compute side of the ssh connection.

On the webvirtcloud machine you need to generate ssh keys and optionally disable StrictHostKeyChecking.

chown www-data -R ~www-data
sudo -u www-data ssh-keygen
cat > ~www-data/.ssh/config << EOF
Host *
StrictHostKeyChecking no
EOF
chown www-data -R ~www-data/.ssh/config

You need to put cloud public key into authorized keys on the compute node. Simpliest way of doing this is to use ssh tool from the webvirtcloud server.

sudo -u www-data ssh-copy-id root@compute1

Host SMBIOS information is not available

If you see warning

Unsupported configuration: Host SMBIOS information is not available

Then you need to install dmidecode package on your host using your package manager and restart libvirt daemon.

Debian/Ubuntu like:

sudo apt-get install dmidecode
sudo service libvirt-bin restart

Arch Linux

sudo pacman -S dmidecode
systemctl restart libvirtd

Cloud-init

Currently supports only root ssh authorized keys and hostname. Example configuration of the cloud-init client follows.

datasource:
  OpenStack:
      metadata_urls: [ "http://webvirtcloud.domain.com/datasource" ]

Reverse-Proxy

Edit WS_PUBLIC_PORT at settings.py file to expose redirect to 80 or 443. Default: 6080

WS_PUBLIC_PORT = 80

How To Update

# Go to Installation Directory
cd /srv/webvirtcloud
source venv/bin/activate
git pull
pip3 install -U -r conf/requirements.txt 
python3 manage.py migrate
sudo service supervisor restart

Running tests

Server on which tests will be performed must have libvirt up and running. It must not contain vms. It must have default storage which not contain any disk images. It must have default network which must be on. Setup venv

python -m venv venv
source venv/bin/activate
pip install -r conf/requirements.txt

Run tests

python manage.py test

LDAP Configuration

The example settings are based on an OpenLDAP server with groups defined as "cn" of class "groupOfUniqueNames"

Enable LDAP

sudo sed -i "s/LDAP_ENABLED = False/LDAP_ENABLED = True/g"" /srv/webvirtcloud/webvirtcloud/settings.py

Set the LDAP server name and root DN

sudo sed -i "s/LDAP_URL = ''/LDAP_URL = 'myldap.server.com'/g"" /srv/webvirtcloud/webvirtcloud/settings.py
sudo sed -i "s/LDAP_ROOT_DN = ''/LDAP_ROOT_DN = 'dc=server,dc=com'/g"" /srv/webvirtcloud/webvirtcloud/settings.py

Set the user that has browse access to LDAP and its password

sudo sed -i "s/LDAP_MASTER_DN = ''/LDAP_MASTER_DN = 'cn=admin,ou=users,dc=kendar,dc=org'/g"" /srv/webvirtcloud/webvirtcloud/settings.py
sudo sed -i "s/LDAP_MASTER_PW = ''/LDAP_MASTER_PW = 'password'/g"" /srv/webvirtcloud/webvirtcloud/settings.py

Set the attribute that will be used to find the username, i usually use the cn

sudo sed -i "s/LDAP_USER_UID_PREFIX = ''/LDAP_USER_UID_PREFIX = 'cn'/g"" /srv/webvirtcloud/webvirtcloud/settings.py

You can now create the filters to retrieve the users for the various group. This will be used during the user creation only

sudo sed -i "s/LDAP_SEARCH_GROUP_FILTER_ADMINS = ''/LDAP_SEARCH_GROUP_FILTER_ADMINS = 'memberOf=cn=admins,dc=kendar,dc=org'/g"" /srv/webvirtcloud/webvirtcloud/settings.py
sudo sed -i "s/LDAP_SEARCH_GROUP_FILTER_STAFF = ''/LDAP_SEARCH_GROUP_FILTER_STAFF = 'memberOf=cn=staff,dc=kendar,dc=org'/g"" /srv/webvirtcloud/webvirtcloud/settings.py
sudo sed -i "s/LDAP_SEARCH_GROUP_FILTER_USERS = ''/LDAP_SEARCH_GROUP_FILTER_USERS = 'memberOf=cn=users,dc=kendar,dc=org'/g"" /srv/webvirtcloud/webvirtcloud/settings.py

Now when you login with an LDAP user it will be assigned the rights defined. The user will be authenticated then with ldap and authorized through the WebVirtCloud permissions.

If you'd like to move a user from ldap to WebVirtCloud, just change its password from the UI and (eventually) remove from the group in ldap

Screenshots

Instance Detail: Instance List:
Other:

License

WebVirtCloud is licensed under the Apache Licence, Version 2.0.

Comments
  • 502 Bad Gateway

    502 Bad Gateway

    Hi guys, So I gad webvirtmgr installed and running perfectly. I saw the development of this one and decided to try it out. So I followed the steps on a ubuntu server and all I get is a 502 Bad Gateway when trying to acces the server on a browser. All I did differently from the readme was to remove the .conf related to webvirtmgr.

    Error I'm getting on nginx log: [error] 1900#0: *3 connect() failed (111: Connection refused) while connecting to upstream, client: 10.0.1.2, server: , request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8000/", host: "10.0.1.66"

    Supervisor log: 2015-08-02 21:11:40,387 WARN received SIGTERM indicating exit request 2015-08-02 21:11:40,388 INFO waiting for gstfsd to die 2015-08-02 21:11:40,391 INFO stopped: gstfsd (terminated by SIGTERM) 2015-08-02 21:11:45,556 CRIT Supervisor running as root (no user in config file) 2015-08-02 21:11:45,556 WARN Included extra file "/etc/supervisor/conf.d/webvirtcloud.conf" during parsing 2015-08-02 21:11:45,556 WARN Included extra file "/etc/supervisor/conf.d/gstfsd.conf" during parsing 2015-08-02 21:11:45,601 INFO RPC interface 'supervisor' initialized 2015-08-02 21:11:45,601 CRIT Server 'unix_http_server' running without any HTTP authentication checking 2015-08-02 21:11:45,603 INFO daemonizing the supervisord process 2015-08-02 21:11:45,604 INFO supervisord started with pid 1873 2015-08-02 21:11:46,607 INFO spawnerr: can't find command '/srv/webvirtcloud/venv/bin/gunicorn' 2015-08-02 21:11:46,609 INFO spawned: 'novncd' with pid 1874 2015-08-02 21:11:46,613 INFO spawned: 'gstfsd' with pid 1875 2015-08-02 21:11:46,658 INFO exited: novncd (exit status 1; not expected) 2015-08-02 21:11:47,661 INFO spawnerr: can't find command '/srv/webvirtcloud/venv/bin/gunicorn' 2015-08-02 21:11:47,663 INFO spawned: 'novncd' with pid 1876 2015-08-02 21:11:47,664 INFO success: gstfsd entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) 2015-08-02 21:11:47,708 INFO exited: novncd (exit status 1; not expected) 2015-08-02 21:11:49,713 INFO spawnerr: can't find command '/srv/webvirtcloud/venv/bin/gunicorn' 2015-08-02 21:11:49,715 INFO spawned: 'novncd' with pid 1877 2015-08-02 21:11:49,760 INFO exited: novncd (exit status 1; not expected) 2015-08-02 21:11:52,766 INFO spawnerr: can't find command '/srv/webvirtcloud/venv/bin/gunicorn' 2015-08-02 21:11:52,766 INFO gave up: webvirtcloud entered FATAL state, too many start retries too quickly 2015-08-02 21:11:52,769 INFO spawned: 'novncd' with pid 1878 2015-08-02 21:11:52,812 INFO exited: novncd (exit status 1; not expected) 2015-08-02 21:11:53,814 INFO gave up: novncd entered FATAL state, too many start retries too quickly

    Any ideas here?

    Thank you, Igor

    opened by ikolubr 57
  • VNC Fullscreen and Send Keys not working

    VNC Fullscreen and Send Keys not working

    @catborise - after you changes didn't worked for me I was able to get the noVNC project from github and make it work in my setup. I have a separate "Send CtrlAltDel" button now, which is working, but the dropdown menu with the send alt+FN keys and fullscreen keys from the console-base.html are not working. I guess it is something it they way those are being called from the html as I am getting: referenceError: sendCtrlAltFN is not defined when I try to send alt+f2 for exmaple

    Can you please tell me how those should look as I cannot find a solution for that? Thank you!

    opened by lord-kyron 30
  • create instance from template enhanced and others

    create instance from template enhanced and others

    Hi, Create instance from template was does not work as expected.

    1. Domain Capabilities info added
    2. Get list of video graphics from domain capabilities
    3. Get list of bus choices from domain capabilities(before that it was static info)
    4. While creating instance with template choice, vm was creating with console password and local listener and network-filter. These are converted to selectable.
    5. Add progress bar to creation of vm.
    6. Check destination image before cloning template, if it is exist or not.
    7. Update bootstrap-table-min to 0.8
    8. Make grouped instance view foldable(by @honza801 )
    9. show vdi url on access tab.

    if you merge it. i will appreciate. thanks.

    opened by catborise 19
  • ImportError: cannot import name VIR_DOMAIN_UNDEFINE_KEEP_NVRAM

    ImportError: cannot import name VIR_DOMAIN_UNDEFINE_KEEP_NVRAM

    After pulling latest version this error occure:

    File "/srv/webvirtcloud/instances/views.py", line 25, in from libvirt import libvirtError, VIR_DOMAIN_XML_SECURE, VIR_DOMAIN_UNDEFINE_KEEP_NVRAM, VIR_DOMAIN_UNDEFINE_NVRAM ImportError: cannot import name VIR_DOMAIN_UNDEFINE_KEEP_NVRAM

    I can't find VIR_DOMAIN_UNDEFINE_KEEP_NVRAM defined in libvirt module which is pulled by pip (latest requirements file).

    By removing offending import part, I am able again to migrate/start application

    opened by ssbaksa 18
  • Feature request: image template re-organisation

    Feature request: image template re-organisation

    @catborise - I think this, can be nice addition, but I would like your opinion: I think that if you mark an instance as Template, it should appear under a new tab - Templates. It will be easier to differentiate. This tab can only appear, if there are some templates. Also - in addition - all instances, marked as templates (or even the whole template tab) to be visible for all user, who can "clone templates". This way, when a new user with only this permission is created, he will be able to see the templates out of the box and choose one to clone and use, without the admin to specifically give him rights (the admin can always remove some user from instance owners). Maybe this can be achieve with a user group, called "all", which will include wall users by default and this group can be assigned by default to the template instances (otherwise in the "user" column in Instances page there will be too many usernames displayed I think)

    What do you think and will you be able to do it? Sorry for so much feature requests, but I have several ideas for better experience when using this tool, but I don't have the developer skills to make all those changes. :)

    opened by lord-kyron 17
  • 302 ERR_TOO_MANY_REDIRECTS

    302 ERR_TOO_MANY_REDIRECTS

    it seems everything is ok。 but when i Go to http://serverip

    the url become http://serverip/accounts/login/?next=/accounts/login/ and tell me ERR_TOO_MANY_REDIRECTS

    why?

    opened by tree1123 16
  • Error: Failed to connect socket to '/var/run/libvirt/libvirt-sock': Permission denied

    Error: Failed to connect socket to '/var/run/libvirt/libvirt-sock': Permission denied

    I have just installed it and have not changed anything. I added a compute node and then got this error. I added myself to the libvirt group and virt-manager works just fine. Only Webvirtcloud has this issue. Help?

    opened by TurboCheetah 16
  • Is it possible to host panel on one machine and use it as instance too?

    Is it possible to host panel on one machine and use it as instance too?

    Hello. I have a panel hosted on one machine, and I need to use it and be able to create VPSes on it too. Could you please tell me if it’s possible, and if it is, could you tell me more details on how to setup instance, as when I try to create it, I get B21257A0-C0D0-4454-99FA-9CA5682C98A5 I do not understand where exactly should I add the key. Also, many of those commands for generating keys do not seem to work on Ubuntu 18.04...

    opened by OpenSource03 13
  • Problem with installation on VzLinux

    Problem with installation on VzLinux

    # cat /etc/redhat-release 
    Virtuozzo Linux release 7.2
    # ls /etc/yum.repos.d/
    epel.repo  epel-testing.repo  factory.repo  openvz.repo  redhat.repo  vzlinux.repo
    

    Clean VzLinux (distro based on RHEL 7) with added EPEL 7.7 repo.

    After step I get an error:

    # venv/bin/pip install -r conf/requirements.txt
    ...
    Installing collected packages: Django, numpy, websockify, gunicorn, libvirt-python, libxml2-python
      Running setup.py install for websockify ... done
      Running setup.py install for libvirt-python ... error
        Complete output from command /srv/webvirtcloud/venv/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-tUB7Li/libvirt-python/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-8E3lRv-record/install-record.txt --single-version-externally-managed --compile --install-headers /srv/webvirtcloud/venv/include/site/python2.7/libvirt-python:
        running install
        running build
        /usr/bin/pkg-config --print-errors --atleast-version=0.9.11 libvirt
        /srv/webvirtcloud/venv/bin/python generator.py libvirt /usr/share/libvirt/api/libvirt-api.xml
        Found 409 functions in /usr/share/libvirt/api/libvirt-api.xml
        Found 0 functions in libvirt-override-api.xml
        Generated 339 wrapper functions
        Missing type converters:
        virTypedParameterPtr:1
        virTypedParameterPtr *:1
        ERROR: failed virDomainGetPerfEvents
        ERROR: failed virDomainSetPerfEvents
        error: command '/srv/webvirtcloud/venv/bin/python' failed with exit status 1
    
        ----------------------------------------
    Command "/srv/webvirtcloud/venv/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-tUB7Li/libvirt-python/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-8E3lRv-record/install-record.txt --single-version-externally-managed --compile --install-headers /srv/webvirtcloud/venv/include/site/python2.7/libvirt-python" failed with error code 1 in /tmp/pip-build-tUB7Li/libvirt-python/
    
    opened by Amet13 12
  • HTTP/500 on /console when instance uuid is changing

    HTTP/500 on /console when instance uuid is changing

    We've got lots of VMs which are recreating via our scripts or terraform. That VMs preserve their names, but uuid changes each recreation. One of the places where it breaks webvirtcloud is virtual console. When VM is changing its uuid virtual console stops working and return 500 error. As a workaround, we're deleting everything from table instances_instance, but it doesn't look very good :) Is there any config parameter or something else which can help to fix the problem?

    opened by pznamensky 11
  • NwFilter load templates problem

    NwFilter load templates problem

    NwFilter templates problem. Somehow, templates have been lost from directory.

    Request Method: | GET -- | -- http://172.17.252.168:80/compute/2/nwfilters/ 1.11.14 TemplateDoesNotExist nwfilters.html /srv/webvirtcloud/venv/local/lib/python2.7/site-packages/django/template/loader.py in get_template, line 25 /srv/webvirtcloud/venv/bin/python2 2.7.12 ['/srv/webvirtcloud', '/srv/webvirtcloud/venv/bin', '/srv/webvirtcloud/venv/lib/python2.7', '/srv/webvirtcloud/venv/lib/python2.7/plat-x86_64-linux-gnu', '/srv/webvirtcloud/venv/lib/python2.7/lib-tk', '/srv/webvirtcloud/venv/lib/python2.7/lib-old', '/srv/webvirtcloud/venv/lib/python2.7/lib-dynload', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/srv/webvirtcloud/venv/local/lib/python2.7/site-packages'] Fri, 28 Sep 2018 09:01:16 +0000

    Template-loader postmortem

    Django tried loading these templates, in this order:

    Using engine django:

    django.template.loaders.filesystem.Loader: /srv/webvirtcloud/templates/nwfilters.html (Source does not exist)
    django.template.loaders.app_directories.Loader: /srv/webvirtcloud/venv/local/lib/python2.7/site-packages/django/contrib/admin/templates/nwfilters.html (Source does not exist)
    django.template.loaders.app_directories.Loader: /srv/webvirtcloud/venv/local/lib/python2.7/site-packages/django/contrib/auth/templates/nwfilters.html (Source does not exist)
    django.template.loaders.app_directories.Loader: /srv/webvirtcloud/computes/templates/nwfilters.html (Source does not exist)
    django.template.loaders.app_directories.Loader: /srv/webvirtcloud/console/templates/nwfilters.html (Source does not exist)
    django.template.loaders.app_directories.Loader: /srv/webvirtcloud/networks/templates/nwfilters.html (Source does not exist)
    django.template.loaders.app_directories.Loader: /srv/webvirtcloud/storages/templates/nwfilters.html (Source does not exist)
    django.template.loaders.app_directories.Loader: /srv/webvirtcloud/interfaces/templates/nwfilters.html (Source does not exist)
    django.template.loaders.app_directories.Loader: /srv/webvirtcloud/instances/templates/nwfilters.html (Source does not exist)
    django.template.loaders.app_directories.Loader: /srv/webvirtcloud/secrets/templates/nwfilters.html (Source does not exist)
    django.template.loaders.app_directories.Loader: /srv/webvirtcloud/logs/templates/nwfilters.html (Source does not exist)
    django.template.loaders.app_directories.Loader: /srv/webvirtcloud/accounts/templates/nwfilters.html (Source does not exist)
    django.template.loaders.app_directories.Loader: /srv/webvirtcloud/create/templates/nwfilters.html (Source does not exist)
    django.template.loaders.app_directories.Loader: /srv/webvirtcloud/datasource/templates/nwfilters.html (Source does not exist)
    

    Environment:

    Request Method: GET Request URL: http://172.17.252.168:80/compute/2/nwfilters/

    Django Version: 1.11.14 Python Version: 2.7.12 Installed Applications: ('django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'computes', 'console', 'networks', 'storages', 'interfaces', 'instances', 'secrets', 'logs', 'accounts', 'create', 'datasource') Installed Middleware: ('django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.RemoteUserMiddleware', 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware')

    Template loader postmortem Django tried loading these templates, in this order:

    Using engine django: * django.template.loaders.filesystem.Loader: /srv/webvirtcloud/templates/nwfilters.html (Source does not exist) * django.template.loaders.app_directories.Loader: /srv/webvirtcloud/venv/local/lib/python2.7/site-packages/django/contrib/admin/templates/nwfilters.html (Source does not exist) * django.template.loaders.app_directories.Loader: /srv/webvirtcloud/venv/local/lib/python2.7/site-packages/django/contrib/auth/templates/nwfilters.html (Source does not exist) * django.template.loaders.app_directories.Loader: /srv/webvirtcloud/computes/templates/nwfilters.html (Source does not exist) * django.template.loaders.app_directories.Loader: /srv/webvirtcloud/console/templates/nwfilters.html (Source does not exist) * django.template.loaders.app_directories.Loader: /srv/webvirtcloud/networks/templates/nwfilters.html (Source does not exist) * django.template.loaders.app_directories.Loader: /srv/webvirtcloud/storages/templates/nwfilters.html (Source does not exist) * django.template.loaders.app_directories.Loader: /srv/webvirtcloud/interfaces/templates/nwfilters.html (Source does not exist) * django.template.loaders.app_directories.Loader: /srv/webvirtcloud/instances/templates/nwfilters.html (Source does not exist) * django.template.loaders.app_directories.Loader: /srv/webvirtcloud/secrets/templates/nwfilters.html (Source does not exist) * django.template.loaders.app_directories.Loader: /srv/webvirtcloud/logs/templates/nwfilters.html (Source does not exist) * django.template.loaders.app_directories.Loader: /srv/webvirtcloud/accounts/templates/nwfilters.html (Source does not exist) * django.template.loaders.app_directories.Loader: /srv/webvirtcloud/create/templates/nwfilters.html (Source does not exist) * django.template.loaders.app_directories.Loader: /srv/webvirtcloud/datasource/templates/nwfilters.html (Source does not exist)

    Traceback:

    File "/srv/webvirtcloud/venv/local/lib/python2.7/site-packages/django/core/handlers/exception.py" in inner 41. response = get_response(request)

    File "/srv/webvirtcloud/venv/local/lib/python2.7/site-packages/django/core/handlers/base.py" in _legacy_get_response 249. response = self._get_response(request)

    File "/srv/webvirtcloud/venv/local/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response 187. response = self.process_exception_by_middleware(e, request)

    File "/srv/webvirtcloud/venv/local/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response 185. response = wrapped_callback(request, *callback_args, **callback_kwargs)

    File "/srv/webvirtcloud/venv/local/lib/python2.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view 23. return view_func(request, *args, **kwargs)

    File "/srv/webvirtcloud/nwfilters/views.py" in nwfilters 113. 'compute': compute})

    File "/srv/webvirtcloud/venv/local/lib/python2.7/site-packages/django/shortcuts.py" in render 30. content = loader.render_to_string(template_name, context, request, using=using)

    File "/srv/webvirtcloud/venv/local/lib/python2.7/site-packages/django/template/loader.py" in render_to_string 67. template = get_template(template_name, using=using)

    File "/srv/webvirtcloud/venv/local/lib/python2.7/site-packages/django/template/loader.py" in get_template 25. raise TemplateDoesNotExist(template_name, chain=chain)

    Exception Type: TemplateDoesNotExist at /compute/2/nwfilters/ Exception Value: nwfilters.html

    opened by ssbaksa 11
  • not able to get into swagger / redoc

    not able to get into swagger / redoc

    Hi,

    Trying to get rest list via swagger / redoc and get the following error: Not Found The requested resource was not found on this server.

    Something that need to be installed / configured before?

    Thanks

    opened by gironaptik 3
  • Gunicorn defunct process ?

    Gunicorn defunct process ?

    Hello,

    I just upgrade my webvirtcloud instance three days ago and I notice some weird defunct process just after launching supervisord:

    www-data 3204598 1 0 Nov20 ? 00:00:29 /opt/webvirtcloud/venv/bin/python /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py www-data 3204599 3204598 0 Nov20 ? 00:00:07 /opt/webvirtcloud/venv/bin/python /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py www-data 3204605 3204598 0 Nov20 ? 00:00:00 /opt/webvirtcloud/venv/bin/python /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py www-data 3204606 3204599 0 Nov20 ? 00:00:00 [bash] www-data 3204611 3204605 0 Nov20 ? 00:00:00 [bash] www-data 3204616 3204598 0 Nov20 ? 00:00:00 /opt/webvirtcloud/venv/bin/python /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py www-data 3204618 3204598 0 Nov20 ? 00:00:00 /opt/webvirtcloud/venv/bin/python /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py www-data 3204626 3204598 0 Nov20 ? 00:00:00 /opt/webvirtcloud/venv/bin/python /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py www-data 3204627 3204598 0 Nov20 ? 00:00:00 /opt/webvirtcloud/venv/bin/python /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py www-data 3204628 3204598 0 Nov20 ? 00:00:00 /opt/webvirtcloud/venv/bin/python /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py www-data 3204631 3204616 0 Nov20 ? 00:00:00 [bash] www-data 3204636 3204598 0 Nov20 ? 00:00:07 /opt/webvirtcloud/venv/bin/python /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py www-data 3204637 3204618 0 Nov20 ? 00:00:00 [bash] www-data 3204642 3204626 0 Nov20 ? 00:00:00 [bash] www-data 3204647 3204627 0 Nov20 ? 00:00:00 [bash] www-data 3204652 3204598 0 Nov20 ? 00:00:07 /opt/webvirtcloud/venv/bin/python /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py www-data 3204653 3204598 0 Nov20 ? 00:00:00 /opt/webvirtcloud/venv/bin/python /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py www-data 3204655 3204636 0 Nov20 ? 00:00:00 [bash] www-data 3204663 3204598 0 Nov20 ? 00:00:07 /opt/webvirtcloud/venv/bin/python /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py www-data 3204664 3204652 0 Nov20 ? 00:00:00 [bash] www-data 3204669 3204653 0 Nov20 ? 00:00:00 [bash] www-data 3204675 3204663 0 Nov20 ? 00:00:00 [bash] www-data 3204680 3204598 0 Nov20 ? 00:00:00 /opt/webvirtcloud/venv/bin/python /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py www-data 3204681 3204598 0 Nov20 ? 00:00:00 /opt/webvirtcloud/venv/bin/python /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py www-data 3204683 3204628 0 Nov20 ? 00:00:00 [bash] www-data 3204690 3204680 0 Nov20 ? 00:00:00 [bash] www-data 3204695 3204598 0 Nov20 ? 00:00:07 /opt/webvirtcloud/venv/bin/python /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py www-data 3204696 3204681 0 Nov20 ? 00:00:00 [bash] www-data 3204702 3204598 0 Nov20 ? 00:00:00 /opt/webvirtcloud/venv/bin/python /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py www-data 3204705 3204598 0 Nov20 ? 00:00:07 /opt/webvirtcloud/venv/bin/python /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py www-data 3204706 3204702 0 Nov20 ? 00:00:00 [bash] www-data 3204707 3204598 0 Nov20 ? 00:00:00 /opt/webvirtcloud/venv/bin/python /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py www-data 3204712 3204705 0 Nov20 ? 00:00:00 [bash] www-data 3204717 3204707 0 Nov20 ? 00:00:00 [bash] www-data 3204724 3204695 0 Nov20 ? 00:00:00 [bash] www-data 3207256 3207241 0 Nov20 ? 00:00:13 /opt/webvirtcloud/venv/bin/python3 /opt/webvirtcloud/console/novncd www-data 3207258 3207256 0 Nov20 ? 00:00:00 [bash]

    pstree view:

    |-gunicorn /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py | |-gunicorn /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py | | |-(bash) | |-{gunicorn} | |-gunicorn /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py | | |-(bash) | | -{gunicorn} | |-gunicorn /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py | | |-(bash) | |-{gunicorn} | |-gunicorn /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py | | |-(bash) | | -{gunicorn} | |-gunicorn /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py | | |-(bash) | |-{gunicorn} | |-gunicorn /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py | | |-(bash) | | -{gunicorn} | |-gunicorn /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py | | |-(bash) | |-{gunicorn} | |-gunicorn /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py | | |-(bash) | | -{gunicorn} | |-gunicorn /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py | | |-(bash) | |-{gunicorn} | |-gunicorn /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py | | |-(bash) | | -{gunicorn} | |-gunicorn /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py | | |-(bash) | |-{gunicorn} | |-gunicorn /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py | | |-(bash) | | -{gunicorn} | |-gunicorn /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py | | |-(bash) | |-{gunicorn} | |-gunicorn /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py | | |-(bash) | | -{gunicorn} | |-gunicorn /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py | | |-(bash) | |-{gunicorn} | |-gunicorn /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py | | |-(bash) | | -{gunicorn} |-gunicorn /opt/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /opt/webvirtcloud/gunicorn.conf.py | |-(bash) | -{gunicorn}

    Gunicorn conf: https://justpaste.it/cf0zk Debian 11 with nginx version: nginx/1.18.0

    Any ideas ?

    Thank you !

    opened by ochbob 1
  • Centos 7 install

    Centos 7 install

    Current release cant be installed on OS with python <= 3.7 django-bootstrap5 - required 3.7

    Main problem that centos 7 has in stable reps only 3.6.8. Its gonna be good if you wi;; have some release history

    opened by IMCAgro 0
  • Cannot add network interfaces

    Cannot add network interfaces

    I choose DHCP mode IPv6, but it say that

    * The IPv6 address must not contain any special characters
    * The IPv6 gateway must not contain any special characters
    
    opened by shizhx 1
  • isn't only kvm host can be ssh connectd?

    isn't only kvm host can be ssh connectd?

    my localhost only kvm host be ssh connectd.other hosts will show issue like image

    i do some test, restore kvm's snapshot,it was created before kvm.and come out the same issue so can I assume that only kvm hosts can be connected

    opened by choricc 2
Releases(v1.0)
Owner
Anatoliy Guskov
Software Developer
Anatoliy Guskov
With Django Hijack, admins can log in and work on behalf of other users without having to know their credentials.

Django Hijack With Django Hijack, admins can log in and work on behalf of other users without having to know their credentials. Docs 3.x docs are avai

null 1.2k Jan 2, 2023
Django Smuggler is a pluggable application for Django Web Framework that helps you to import/export fixtures via the automatically-generated administration interface.

Django Smuggler Django Smuggler is a pluggable application for Django Web Framework to easily dump/load fixtures via the automatically-generated admin

semente 373 Dec 26, 2022
BitcartCC is a platform for merchants, users and developers which offers easy setup and use.

BitcartCC is a platform for merchants, users and developers which offers easy setup and use.

BitcartCC 270 Jan 7, 2023
Django app that enables staff to log in as other users using their own credentials.

Impostor Impostor is a Django application which allows staff members to login as a different user by using their own username and password. Login Logg

Andreu Vallbona Plazas 144 Dec 13, 2022
Simple and extensible administrative interface framework for Flask

Flask-Admin The project was recently moved into its own organization. Please update your references to [email protected]:flask-admin/flask-admin.git. Int

Flask-Admin 5.2k Dec 29, 2022
Simple and extensible administrative interface framework for Flask

Flask-Admin The project was recently moved into its own organization. Please update your references to [email protected]:flask-admin/flask-admin.git. Int

Flask-Admin 4.6k Feb 7, 2021
Modern responsive template for the Django admin interface with improved functionality. We are proud to announce completely new Jet. Please check out Live Demo

Django JET Modern template for Django admin interface with improved functionality Attention! NEW JET We are proud to announce completely new Jet. Plea

Geex Arts 3.4k Dec 29, 2022
A jazzy skin for the Django Admin-Interface (official repository).

Django Grappelli A jazzy skin for the Django admin interface. Grappelli is a grid-based alternative/extension to the Django administration interface.

Patrick Kranzlmueller 3.4k Dec 31, 2022
django's default admin interface made customizable. popup windows replaced by modals. :mage: :zap:

django-admin-interface django-admin-interface is a modern responsive flat admin interface customizable by the admin itself. Features Beautiful default

Fabio Caccamo 1.3k Dec 31, 2022
Modern theme for Django admin interface

Django Suit Modern theme for Django admin interface. Django Suit is alternative theme/skin/extension for Django administration interface. Project home

Kaspars Sprogis 2.2k Dec 29, 2022
A flat theme for Django admin interface. Modern, fresh, simple.

Django Flat Theme django-flat-theme is included as part of Django from version 1.9! ?? Please use this app if your project is powered by an older Djan

elky 416 Sep 22, 2022
📱 An extension for Django admin that makes interface mobile-friendly. Merged into Django 2.0

Django Flat Responsive django-flat-responsive is included as part of Django from version 2.0! ?? Use this app if your project is powered by an older D

elky 248 Sep 2, 2022
A jazzy skin for the Django Admin-Interface (official repository).

Django Grappelli A jazzy skin for the Django admin interface. Grappelli is a grid-based alternative/extension to the Django administration interface.

Patrick Kranzlmueller 3.4k Dec 31, 2022
Modern theme for Django admin interface

Django Suit Modern theme for Django admin interface. Django Suit is alternative theme/skin/extension for Django administration interface. Project home

Kaspars Sprogis 2.2k Dec 29, 2022
aiohttp admin is generator for admin interface based on aiohttp

aiohttp admin is generator for admin interface based on aiohttp

Mykhailo Havelia 17 Nov 16, 2022
Disable dark mode in Django admin user interface in Django 3.2.x.

Django Non Dark Admin Disable or enable dark mode user interface in Django admin panel (Django==3.2). Installation For install this app run in termina

Artem Galichkin 6 Nov 23, 2022
Real-time monitor and web admin for Celery distributed task queue

Flower Flower is a web based tool for monitoring and administrating Celery clusters. Features Real-time monitoring using Celery Events Task progress a

Mher Movsisyan 5.5k Dec 28, 2022
A Django app that creates automatic web UIs for Python scripts.

Wooey is a simple web interface to run command line Python scripts. Think of it as an easy way to get your scripts up on the web for routine data anal

Wooey 1.9k Jan 1, 2023
A python application for manipulating pandas data frames from the comfort of your web browser

A python application for manipulating pandas data frames from the comfort of your web browser. Data flows are represented as a Directed Acyclic Graph, and nodes can be ran individually as the user sees fit.

Schlerp 161 Jan 4, 2023