From 9c1c281279660374c71c09636e0cfe042c438259 Mon Sep 17 00:00:00 2001 From: maqi Date: Thu, 1 Sep 2022 16:43:42 +0800 Subject: [PATCH 1/7] add support openAnolis --- conf/nginx/openAnolis_nginx.conf | 83 ++++++++++++++++++++++++++++++++ webvirtcloud.sh | 38 ++++++++++++++- 2 files changed, 120 insertions(+), 1 deletion(-) create mode 100644 conf/nginx/openAnolis_nginx.conf diff --git a/conf/nginx/openAnolis_nginx.conf b/conf/nginx/openAnolis_nginx.conf new file mode 100644 index 0000000..b6c342d --- /dev/null +++ b/conf/nginx/openAnolis_nginx.conf @@ -0,0 +1,83 @@ +# For more information on configuration, see: +# * Official English Documentation: http://nginx.org/en/docs/ +# * Official Russian Documentation: http://nginx.org/ru/docs/ + +user nginx; +worker_processes auto; +error_log /var/log/nginx/error.log; +pid /run/nginx.pid; + +# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic. +include /usr/share/nginx/modules/*.conf; + +events { + worker_connections 1024; +} + +http { + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + access_log /var/log/nginx/access.log main; + + sendfile on; + tcp_nopush on; + tcp_nodelay on; + keepalive_timeout 65; + types_hash_max_size 4096; + + include /etc/nginx/mime.types; + default_type application/octet-stream; + + # Load modular configuration files from the /etc/nginx/conf.d directory. + # See http://nginx.org/en/docs/ngx_core_module.html#include + # for more information. + include /etc/nginx/conf.d/*.conf; + + server { + listen 80; + listen [::]:80; + server_name _; + root /usr/share/nginx/html; + + # Load configuration files for the default server block. + include /etc/nginx/default.d/*.conf; + + error_page 404 /404.html; + location = /404.html { + } + + error_page 500 502 503 504 /50x.html; + location = /50x.html { + } + } + +# Settings for a TLS enabled server. +# +# server { +# listen 443 ssl http2; +# listen [::]:443 ssl http2; +# server_name _; +# root /usr/share/nginx/html; +# +# ssl_certificate "/etc/pki/nginx/server.crt"; +# ssl_certificate_key "/etc/pki/nginx/private/server.key"; +# ssl_session_cache shared:SSL:1m; +# ssl_session_timeout 10m; +# ssl_ciphers PROFILE=SYSTEM; +# ssl_prefer_server_ciphers on; +# +# # Load configuration files for the default server block. +# include /etc/nginx/default.d/*.conf; +# +# error_page 404 /404.html; +# location = /40x.html { +# } +# +# error_page 500 502 503 504 /50x.html; +# location = /50x.html { +# } +# } + +} diff --git a/webvirtcloud.sh b/webvirtcloud.sh index 5b5248e..e124219 100755 --- a/webvirtcloud.sh +++ b/webvirtcloud.sh @@ -119,7 +119,7 @@ install_packages () { fi done; ;; - fedora|openEuler) + fedora|openEuler|openAnolis) for p in $PACKAGES; do if dnf list installed "$p" >/dev/null 2>&1; then echo " * $p already installed" @@ -403,6 +403,15 @@ case $distro in supervisor_conf_path=/etc/supervisord.d supervisor_file_name=webvirtcloud.ini ;; + *OpenAnolis*|*openAnolis*) + echo " The installer has detected $distro version $version." + distro=uos + nginx_group=nginx + nginxfile=/etc/nginx/conf.d/$APP_NAME.conf + supervisor_service=supervisord + supervisor_conf_path=/etc/supervisord.d + supervisor_file_name=webvirtcloud.ini + ;; *) echo " The installer was unable to determine your OS. Exiting for safety." exit 1 @@ -607,6 +616,33 @@ case $distro in restart_nginx fi ;; + openAnolis) + if [[ "$version" == "20" ]]; then + # Install for openAnolis 20 + tzone=\'$(timedatectl|grep "Time zone"| awk '{print $3}')\' + + echo "* Installing OS requirements." + PACKAGES="git python3-virtualenv python3-devel python3-pip libvirt-devel glibc gcc nginx supervisor python3-lxml python3-libguestfs iproute-tc cyrus-sasl-md5" + install_packages + + set_hosts + + install_webvirtcloud + + echo "* Configuring Nginx." + configure_nginx + + echo "* Configuring Supervisor." + configure_supervisor + + set_firewall + + set_selinux + + restart_supervisor + restart_nginx + fi + ;; esac From 55793d3901b7e08041b857989b3c921e91d6e9e1 Mon Sep 17 00:00:00 2001 From: MAQI7 <97730261+MAQI7@users.noreply.github.com> Date: Fri, 2 Sep 2022 02:06:39 +0000 Subject: [PATCH 2/7] Update webvirtcloud.sh --- webvirtcloud.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/webvirtcloud.sh b/webvirtcloud.sh index e124219..2cd9705 100755 --- a/webvirtcloud.sh +++ b/webvirtcloud.sh @@ -405,7 +405,7 @@ case $distro in ;; *OpenAnolis*|*openAnolis*) echo " The installer has detected $distro version $version." - distro=uos + distro=openAnolis nginx_group=nginx nginxfile=/etc/nginx/conf.d/$APP_NAME.conf supervisor_service=supervisord @@ -617,8 +617,8 @@ case $distro in fi ;; openAnolis) - if [[ "$version" == "20" ]]; then - # Install for openAnolis 20 + if [[ "$version" == "8.4" ]]; then + # Install for openAnolis 8.4 tzone=\'$(timedatectl|grep "Time zone"| awk '{print $3}')\' echo "* Installing OS requirements." From 8c4f1d9fe8015744a51b6479e1ed699938e5db2c Mon Sep 17 00:00:00 2001 From: fangebee <78966083+fangebee@users.noreply.github.com> Date: Thu, 13 Mar 2025 18:17:21 +0100 Subject: [PATCH 3/7] Workaround issue #663 do not confuse a network volume with a network interface --- vrtManager/instance.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vrtManager/instance.py b/vrtManager/instance.py index 9cbe83e..e9659a5 100644 --- a/vrtManager/instance.py +++ b/vrtManager/instance.py @@ -631,7 +631,7 @@ class wvmInstance(wvmConnect): dev_type = dev.get("type") dev_device = dev.get("device") - if dev_type == "file": + if dev_type == "file" or (dev_device == "disk" and dev_type == "network"): dev_target = dev.find("target").get("dev") elif dev_type == "network": From f26fa3d05060ee68fb0a163f4f8d1d29ef4eda77 Mon Sep 17 00:00:00 2001 From: fangebee <78966083+fangebee@users.noreply.github.com> Date: Fri, 14 Mar 2025 10:31:40 +0100 Subject: [PATCH 4/7] Detect RDB pools too --- vrtManager/storage.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/vrtManager/storage.py b/vrtManager/storage.py index 03024f9..0037de2 100644 --- a/vrtManager/storage.py +++ b/vrtManager/storage.py @@ -34,6 +34,8 @@ class wvmStorages(wvmConnect): stg = wvmStorage(self.host, self.login, self.passwd, self.conn, pool_name) if stg.get_target_path() == target: return self.get_storage(pool_name) + if stg.get_type() == "rbd" and stg.get_source_name() == target: + return self.get_storage(pool_name) return None def create_storage(self, stg_type, name, source, target): From 8bca7db917fcb16c91ed4e7c93adb15beb6e14bd Mon Sep 17 00:00:00 2001 From: Liang Suilong Date: Sun, 30 Mar 2025 10:33:51 +0800 Subject: [PATCH 5/7] crypt-r replaces crypt stdlib, support python-3.13 --- conf/requirements.txt | 1 + instances/views.py | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/conf/requirements.txt b/conf/requirements.txt index d423749..bab331c 100644 --- a/conf/requirements.txt +++ b/conf/requirements.txt @@ -24,3 +24,4 @@ tzdata websockify==0.12.0 whitenoise==6.9.0 zipp==3.21.0 +crypt-r==3.13.1 diff --git a/instances/views.py b/instances/views.py index 22e34e8..54b73af 100755 --- a/instances/views.py +++ b/instances/views.py @@ -1,4 +1,4 @@ -import crypt +import crypt_r import json import os import re @@ -476,7 +476,7 @@ def set_root_pass(request, pk): if request.method == "POST": passwd = request.POST.get("passwd", None) if passwd: - passwd_hash = crypt.crypt(passwd, "$6$kgPoiREy") + passwd_hash = crypt_r.crypt(passwd, "$6$kgPoiREy") data = {"action": "password", "passwd": passwd_hash, "vname": instance.name} if instance.proxy.get_status() == 5: From 34f08fc555d551123c884f1b6671aee36ab6d52a Mon Sep 17 00:00:00 2001 From: catborise Date: Fri, 2 May 2025 10:06:09 +0300 Subject: [PATCH 6/7] update requirements --- conf/requirements.txt | 14 +++++++------- dev/requirements.txt | 10 +++++----- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/conf/requirements.txt b/conf/requirements.txt index d423749..ac34388 100644 --- a/conf/requirements.txt +++ b/conf/requirements.txt @@ -2,23 +2,23 @@ Django==4.2.20 django_bootstrap5==25.1 django-bootstrap-icons==0.9.0 django-login-required-middleware==0.9.0 -django-otp==1.5.4 +django-otp==1.6.0 django-qr-code==4.1.0 django-auth-ldap==5.1.0 -djangorestframework==3.15.2 +djangorestframework==3.16.0 drf-nested-routers==0.94.1 drf-yasg==1.21.10 eventlet==0.39.1 gunicorn==23.0.0 libsass==0.23.0 -libvirt-python==11.1.0 -lxml==5.3.1 +libvirt-python==11.2.0 +lxml==5.4.0 ldap3==2.9.1 markdown==3.6 #psycopg2-binary -python-engineio==4.11.2 -python-socketio==5.12.1 -qrcode==8.0 +python-engineio==4.12.0 +python-socketio==5.13.0 +qrcode==8.2 rwlock==0.0.7 tzdata websockify==0.12.0 diff --git a/dev/requirements.txt b/dev/requirements.txt index 00ceebc..4650613 100644 --- a/dev/requirements.txt +++ b/dev/requirements.txt @@ -1,9 +1,9 @@ -r ../conf/requirements.txt -coverage==7.6.12 -django-debug-toolbar==5.0.1 +coverage==7.8.0 +django-debug-toolbar==5.2.0 django-debug-toolbar-template-profiler -pycodestyle==2.12.1 -pyflakes==3.2.0 -pylint==3.3.5 +pycodestyle==2.13.0 +pyflakes==3.3.2 +pylint==3.3.6 yapf==0.43.0 black==25.1.0 From 659a6edb730365ca3010c0eed579b27f1a01c712 Mon Sep 17 00:00:00 2001 From: catborise Date: Fri, 2 May 2025 10:23:51 +0300 Subject: [PATCH 7/7] update minimum python3 requirements. python3 >= 3.11 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7f9069f..341f059 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ [![Gitpod ready-to-code](https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/retspen/webvirtcloud) # WebVirtCloud -###### Python 3.x & Django 4.2 LTS +###### Python >=3.11 & Django 4.2 LTS ## Features * QEMU/KVM Hypervisor Management