1
0
Fork 0
mirror of https://github.com/retspen/webvirtcloud synced 2026-10-18 00:50:07 +00:00
webvirtcloud/DEPENDENCY_UPGRADE_PLAN.md
catborise 67364e2a05 feat(api): migrate API documentation from drf-yasg to drf-spectacular
- Replace abandoned drf-yasg with drf-spectacular and drf-spectacular-sidecar
- Configure OpenAPI 3.0 schema generation and offline sidecar assets in settings
- Update schema, Swagger UI, and ReDoc routes in webvirtcloud/urls.py
- Add backwards-compatible AutoSchema fallback for existing settings installations
- Remove 130 obsolete legacy drf-yasg static assets
- Update upgrade instructions in README.md and project documentation
2026-09-25 08:08:36 +03:00

5.5 KiB
Raw Blame History

WebVirtCloud - Bağımlılık ve Kütüphane Güncelleme Planı

Bu doküman, WebVirtCloud projesinde yer alan eski, desteği kesilmiş veya yeni Python/Django sürümleriyle uyumsuzluk riski taşıyan kütüphanelerin tespitini ve adım adım güncelleme yol haritasını içermektedir.


1. Tespit Edilen Kütüphaneler ve Durum Analizi

1.1. Kritik ve Acil Müdahale Gerektirenler (Python 3.12+ Uyumsuzlukları)

Kütüphane / Dosya Mevcut Durum Risk Seviyesi Tespit ve Sorun
vrtManager/rwlock.py currentThread() kullanımı 🔴 Kritik (Bozucu) Python 3.10'da kullanımdan kaldırılmış (deprecated), Python 3.12'de tamamen silinmiştir. Python 3.12 üzerinde ImportError: cannot import name 'currentThread' from 'threading' hatası verir. threading.current_thread() ile değiştirilmelidir.
rwlock==0.0.7 (conf/requirements.txt) 2014 sürümü (Terk edilmiş) 🟡 Gereksiz Bağımlılık Projede kod zaten vrtManager/rwlock.py üzerinden yerel (vendored) çalışmaktadır. requirements.txt içerisindeki bu harici paket gereksizdir ve temizlenebilir.
console/novncd & socketiod (optparse) optparse kullanımı 🟠 Orta (Kullanımdan Kaldırıldı) optparse Python 3.2'den beri deprecated olup yerini standart argparse kütüphanesine bırakmıştır. Modern Python standartlarına göre refactor edilmelidir.
eventlet==0.40.1 socketiod içinde kullanılır 🟠 Yüksek Risk Eventlet, Python 3.12+ C-API ve greenlet değişiklikleriyle uyumluluk sorunları yaşamaktadır. Gelecekte asyncio/ASGI mimarisine geçiş planlanmalıdır.

1.2. Django & API Ekosistemi

Kütüphane Mevcut Sürüm Hedef Sürüm Açıklama & Strateji
Django 4.2.23 (LTS) 5.1.x / 5.2 (LTS) Django 4.2 LTS desteği Nisan 2026'da sona ermektedir. Django 5.x LTS'e yükseltme yapılarak performans kazanımları (asenkron ORM geliştirmeleri, yeni form alanları) elde edilmelidir.
django-login-required-middleware 0.9.0 (2017) Kaldırılacak (Native) Paket 2017'den beri güncellenmemiştir. Django 5.1 ile birlikte Django artık yerleşik django.contrib.auth.middleware.LoginRequiredMiddleware sunmaktadır. Harici paket tamamen devreden çıkarılabilir.
drf-yasg 1.21.10 drf-spectacular ✅ Terk edilmiş Swagger 2.0 kütüphanesi yerine modern OpenAPI 3.0 standardı olan drf-spectacular (sidecar ile offline/air-gapped destekli) kuruldu.
IPy.py (vrtManager/IPy.py) Vendored 1.01 (2011) Python Standard ipaddress ✅ 1650+ satırlık eski harici kod silindi, standart ipaddress modülüne geçildi ve 15 adet unit test eklendi.

1.3. Ön Yüz (Frontend) ve VNC İstemcisi

Kütüphane Mevcut Sürüm Güncel Sürüm Yenilikler & Faydalar
jQuery 3.6.1 (2022) 3.7.1 Güvenlik yamaları, seçici (selector) optimizasyonları ve hata düzeltmeleri.
Bootstrap 5.2.2 (2022) 5.3.3 Yerel Karanlık Mod (Dark Mode) desteği, CSS değişkenleri mimarisi, erişilebilirlik ve form iyileştirmeleri.
noVNC (static/js/novnc) 2020 Sürümü 1.5.0 Çok daha kararlı WebSocket yeniden bağlanma (auto-reconnect), dokunmatik ekran desteği, güvenlik düzeltmeleri ve modern ES modül yapısı.

1.4. Altyapı ve Konteyner

Bileşen Mevcut Durum Önerilen Durum Açıklama
Dockerfile Base Image phusion/baseimage:jammy-1.0.1 (Ubuntu 22.04) phusion/baseimage:noble-1.0.0 (Ubuntu 24.04 LTS) Ubuntu 24.04 LTS tabanına geçilerek daha yeni sistem kütüphaneleri (libvirt, openssl, gcc) temin edilebilir.

2. Aşamalı Güncelleme Yol Haritası (Migration Roadmap)

Aşama 1: Hızlı Kazanımlar ve Python 3.12+ Uyumluluğu (Hemen Yapılabilir)

  1. vrtManager/rwlock.py Düzeltmesi:
    • currentThread() çağrılarını current_thread() ile değiştirerek Python 3.12'deki kritik çökme riskini ortadan kaldırmak.
  2. requirements.txt Temizliği:
    • Kullanılmayan rwlock==0.0.7 paketini conf/requirements.txt dosyasından silmek.
  3. Frontend Kütüphanelerinin Güncellenmesi:
    • jQuery 3.6.1 -> 3.7.1
    • Bootstrap 5.2.2 -> 5.3.3

Aşama 2: API ve Dokümantasyon Modernizasyonu (Orta Vadeli)

  1. Swagger / OpenAPI Göçü:
    • drf-yasg yerine drf-spectacular kurulumu.
    • webvirtcloud/urls.py ve urls-api.py rotalarının OpenAPI 3.0 şemasına güncellenmesi.
  2. CLI Argümanları Refactor:
    • console/novncd ve console/socketiod içerisindeki optparse yerine standart argparse modülünün entegre edilmesi.

Aşama 3: Django 5.x LTS Geçişi (Büyük Sürüm Güncellemesi)

  1. LoginRequiredMiddleware Değişimi:
    • django-login-required-middleware paketinin kaldırılması.
    • Django 5.1+'ın yerleşik django.contrib.auth.middleware.LoginRequiredMiddleware sınıfına geçilmesi.
  2. Django 4.2 -> 5.1/5.2 Yükseltmesi:
    • conf/requirements.txt içinde Django sürümünün artırılması.
    • python3 manage.py check ve test suitinin (pytest / python manage.py test) koşturularak deprecation uyarılarının temizlenmesi.

Aşama 4: noVNC ve Ağ Modülleri Optimizasyonu

  1. noVNC 1.5.0 Entegrasyonu:
    • static/js/novnc/ klasörünün noVNC 1.5.0 resmi sürümüyle yenilenmesi.
  2. vrtManager/IPy.py Refactor:
    • Harici IPy kütüphanesi yerine standart ipaddress kütüphanesine geçiş.