Univention Bugzilla – Bug 27747
Speicherangabe wird nicht validiert
Last modified: 2012-10-09 11:54:07 CEST
Gibt man bei der Hauptspeichergröße für eine VM etwas Falsches ein, hat die VM anschließend "-1024 B". Hier sollte die Eingabe validiert werden, bevor der Benutzer eine Change hat, die Daten abzuspeichern.
Created attachment 4482 [details] Validate memory size Use the same regexp as in the DomainWizard to validate the entered memory size.
Der Patch ist erstmal eine Zwischenlösung. Langfristig sollte das Textfeld in UMC für die Eingabe der RAM- und Festplattengröße durch ein eigenes Widget ersetzt werden, was die komfortable Eingabe von KiB-TiB-Werten erlaubt, die entsprechenden Limits für RAM (>= 4 MiB, derzeit <x GiB, Schrittweite 1 MiB) und Festplatte (eher >= 1 GiB, <X TiB, Schrittweite 1 GiB). Zudem sollte zwischen UMC-Frontend und UMC-Backend kein String der Form "X.Y [KMGT]B" ausgetauscht werden, sondern wie zwischen UMC-Backend und UVMMd direkt die Größe in Bytes, was die Validierung (u.a. für Bug #26645) vereinfacht.
Noch ein Nachtrag: Die minimale RAM-Größe ist 4 MiB, was derzeit nur im Wizard, aber nicht auf der DomainPage erzwungen wird. KiB macht von daher hier auch keinen Sinn und sollte erst gar nicht angeboten und akzeptiert werden.
Die RegExp wurde nun auch in die DomainPage übernommen. Dort alsauch im DomainWizard wurde Kilobyte entfernt. Der Bug lasse ich offen, weil die Überprüfung auf 4 MiB noch fehlt und das ganze nochmal überarbeitet werden muß. svn33828, univention-virtual-machine-manager-daemon_1.0.111-1.378.201206271323 ChangeLog: svn13657 \item A validation constraint was added to the memory size of domains (\ucsBug{27747}).
Die Überprüfung von 4 MiB wurde nun auch noch im Frontend integriert. Die Ersetzung des Textfeldes durch ein eigenes Widget aus comment #2 wird in einem eigenen Bug #27778 weiterverfolgt. Akzeptiert werden jetzt folgende Werte: 1 2 B 3 K 4 MB 5 GiB Nur im DomainWizard wird bei ersterem die Standard-Einheit MB ergänzt. Angaben unter 4 MiB werden nicht akzeptiert. svn33912, univention-virtual-machine-manager-daemon_1.0.111-2.379.201206291604 ChangeLog: ±0
Akzeptiert werden grundsätzlich die Einheiten: B/KB/KIB/MB/MIB/GB/GIB (in allen Kombinationen von upper/lower case) Darüber hinaus gibt es eine Fehlermeldung wenn der angebgene Speicher 4 194 304 Byte unterschreitet. Changelogeintrag ist in Ordnung, Verified.
Die Werte wurde zwar im JavaScipt frontend akzeptiert, allerdings konnte das Python-Backend damit nicht umgehen und hat so z.B. "512 M" zu "-1" umgewandelt. Der Python-Code wurde angeglichen und die fehlenden Unit-Doc-Tests für in MemorySize.num2str() ergänzt. Das ganze ist per "python umc/python/uvmm/tools.py" nachprüfbar: Für die bisher akzeptierten Werte hat sich nichts geändert, neu hinzugekommen sind '512 B', '512 MiB' und eine verbesserte Fehlerbehandlung für ungültige Einheiten wie "2 XB". svn34178, univention-virtual-machine-manager-daemon_1.0.111-3 TBB ChangeLog: ±0
MemorySize().str2num('512 B') liefert "-1" zurück.
Die Funktion MemorySize.str2num() akzeptiert die Einheit sowohl im String alsauch als Standardvorgabe als extra Parameter. Dabei wurde noch übersehen, daß dort auch noch [Ii] und [Bb] vorkommen, was dann zu einer erfolglosen Umwandlung des Faktors geführt hat. Der Unit-(doc-)Test läuft jetzt auch wieder durch: python umc/python/uvmm/tools.py # → ø svn34197, svn34198, univention-virtual-machine-manager-daemon_1.0.111-5.384.201207131254 ChangeLog: ±0
(In reply to comment #9) > Die Funktion MemorySize.str2num() akzeptiert die Einheit sowohl im String > alsauch als Standardvorgabe als extra Parameter. Dabei wurde noch übersehen, > daß dort auch noch [Ii] und [Bb] vorkommen, was dann zu einer erfolglosen > Umwandlung des Faktors geführt hat. > > Der Unit-(doc-)Test läuft jetzt auch wieder durch: > python umc/python/uvmm/tools.py # → ø > > svn34197, svn34198, > univention-virtual-machine-manager-daemon_1.0.111-5.384.201207131254 > ChangeLog: ±0 >>> ms.str2num('512') 512L >>> ms.str2num('512 B') 512L >>> ms.str2num('512 B', unit='MB') 536870912L >>> ms.str2num('512', unit='MB') 536870912L >>> ms.str2num('512', unit='MiB') 536870912L >>> ms.str2num('512', unit='MiBas') -1 Jetzt sieht's gut aus. Verified.
UCS 3.0-2 has been released: http://forum.univention.de/viewtopic.php?f=54&t=1905 If this error occurs again, please use "Clone This Bug".