Bug 23092 - Anzeige der VMs auf einem nicht erreichbaren Virtualisierungsserver
Anzeige der VMs auf einem nicht erreichbaren Virtualisierungsserver
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: Virtualization - UVMM
UCS 2.4
Other Linux
: P5 enhancement (vote)
: UCS 2.4-4
Assigned To: Philipp Hahn
Stefan Gohmann
:
Depends on:
Blocks: 23821 23906 24190
  Show dependency treegraph
 
Reported: 2011-07-26 17:31 CEST by Stefan Gohmann
Modified: 2011-12-27 11:01 CET (History)
2 users (show)

See Also:
What kind of report is it?: ---
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number:
Bug group (optional):
Max CVSS v3 score:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Stefan Gohmann univentionstaff 2011-07-26 17:31:29 CEST
Wenn ein Virtualisierungsserver ausfällt, dann hat der Admin keine Chance zu sehen, welche Instanzen auf dem Server liefen. Dadurch wird es schwierig zu sehen, welche Instanzen gerade nicht verfügbar sind.

UVMM sollte so erweitert werden, dass die Instanzen angezeigt werden, auch wenn der Virtualisierungsserver nicht erreichbar ist. Ideal wäre, wenn auch die Konfiguration als Read-Only angezeigt wird. Am besten so wie beim nicht erreichbaren Server auch mit einem roten Icon.

Dann könnte als zusätzliches Feature das Verschieben der Instanzen von einem ausgefallenen Server auf einen laufenden Server ermöglicht werden.
Comment 1 Stefan Gohmann univentionstaff 2011-09-01 14:37:48 CEST
Siehe auch Ticket #2011082510002264.
Comment 2 Philipp Hahn univentionstaff 2011-09-27 09:55:38 CEST
UVMMd und das UMC-Modul wurden nun so erweitert, das die VMs ausgefallener Server weiterhin angezeigt werden. Eine Fail-Over-Migration ist die einzig mögliche Aktion für solche VMs.

In Rahmen dieser Arbeiten mussten große Teile überarbeitet werden, da vorher
1. Server nur über ihren Namen und nicht über die vollständige URI identifiziert wurden,
2. VMs über ihren Namen anstatt über ihre UUID identifiziert wurden.
Dies hat zu vielen (fehlerträchtigen) zusätzlichen Abfragen innerhalb von UVMMd geführt, was im Rahmen dieses Bugs dann zu vielen Work-Arounds geführt hätte.

Weiterhin wurden für den TreeView bisher alle Daten von allen VMs von allen Servern abgefragt, einige wenige Daten extrahiert und der überwiegende Teil verworfen, nur damit die nachfolgende Implementierung die Daten erneut anfordert. Der TreeView wurde jetzt so umgearbeitet, das er die angeforderten Informationen für die Dauer des Requests behält und die Daten so weiterverwendet werden können.

Weitere interne Änderungen:
1. Im UVMM-Protokoll wurden die URI bei den Node_Data ergänzt und einige Datentypen von Feldern korrigiert.
2. Die Fehlerbehandlung in der Kommunikation zwischen UVMMd und UMC-Modul verwendet nun durchgehende Exceptions (Bug #19541)

Weitere sichtbare Änderungen:
1. Beim Migrieren gibt es nun einen 'Cancel'-Knopf.
2. Beim Migrieren werden Image-Dateien, die von mehreren VMs benutzt werden, nicht mehr zum Löschen vorausgewählt.
3. Die Icons wurden überarbeitet und ergänzt: Sie haben jetzt alle eine einheitliche Größe von 16×16.

svn27210..27224,27253...27257
univention-management-console_3.0.112-1.527.201109270946
univention-virtual-machine-manager-daemon_0.9.333-1.272.201109270948

QA: UCS-DVS is the only known external user. Make sure this still works:
 univention-dvs-sessionbroker/umc/modules/univention/management/console/handlers/dvs_templates/__init__.py:552:
  instance_cmd = umcp.SimpleCommand('uvmm/domain/overview', options={'group': 'default', 'node': netloc, 'domain': self.domain_info.name}, switch_module_if_required=True)
 univention-dvs-sessionbroker/umc/modules/univention/management/console/handlers/dvs/__init__.py:475:
  server_cmd = umcp.SimpleCommand('uvmm/node/overview', options={'group': 'default', 'node': server}, switch_module_if_required=True)
 univention-dvs-sessionbroker/umc/modules/univention/management/console/handlers/dvs/__init__.py:476:
  instance_cmd = umcp.SimpleCommand('uvmm/domain/overview', options={'group': 'default', 'node': server, 'domain': instance}, switch_module_if_required=True)
Comment 3 Philipp Hahn univentionstaff 2011-09-27 12:30:49 CEST
Es wurde noch eine Fehler korrigiert, wenn UVMMd initial gestartet wird und noch nie eine erfolgreiche Verbindung zu einem Server aufbauen konnte. In diesem Fall wurde ein leeres Node_Data-Objekt für den Server erstellt, dessen .name-Attribut Node war. Dies hat dann im UMC-Modul zu einem Traceback geführt.

# uvmm query qemu://xen6.pmhahn5.test/system | grep name

svn27270, univention-virtual-machine-manager-daemon_0.9.333-2.273.201109271223
Comment 4 Philipp Hahn univentionstaff 2011-09-27 20:51:09 CEST
Es trat noch das Problem auf, das beim Zusammenbrechen der Verbindung das UMC-Modul weiterhin durch eine explizite Anfrage an den UVMMd die Größe der Image-Dateien feststellen wollte. Dies hat dazu geführt, das die Domain nicht angezeigt wurde, bis der TCP-Timeout eintrat.
Hierzu wurden jetzt noch zwei Änderungen durchgeführt:
1. Für die expliziten storage-Aufrufe wurde ein Wrapper um die libvirt-Aufrufe implementiert, der diese in einem eigenen Thread startet, aber spätestens nach 10s einen TimeoutError wirft.
2. Statt die Image-Datei-Größe und den Storage-Pool-Namen jeweils explizit abfragen zu müssen, speichert der UVMMd diese nun im Rahmen seines üblichen Caching-Verhaltens diese Informationen zwischen und liefert diese direkt zusammen mit den anderen Informationen über die VMs aus. Dadurch kann sich das UMC-Modul die explizite Anfrage sparen.

Weitere Änderungen:
3. Beim löschen von einzelnen Laufwerken wurde im Gegensatz zum Löschen der kompletten VM nicht überprüft, ob die Image-Datei noch von anderen VMs mitbenutzt wird. Beide Funktionen nutzen nun die selbe Implementierung zum Überprüfen, ob es sich um ein Shared-Image handelt bzw. ob dieses in einem Storage-Pool liegt, über des es gelöscht werden kann.
4. Über die UCR-Variable uvmm/umc/show/treeview kann die Anzahl der Ebenen begrenzt werden, die im TreeView angezeigt werden.

svn27284..27287, univention-virtual-machine-manager-daemon_0.9.333-3.274.201109272048
Comment 5 Philipp Hahn univentionstaff 2011-09-29 08:25:31 CEST
Ursache für Bug #23857 war ein Problem im UMC-Modul von UVMM: Dort wurde für eine "<interface type="ethernet">"-Konfiguration keine "<source>" angegeben, weshalb dort dann "None" eingetragen wurde, was zu besagten Traceback geführt hat.
Das Problem wurde in UVMM dadurch behoben, das dort statt dessen dann _('unknown') ausgegeben wird.

svn27317,27320 univention-virtual-machine-manager-daemon_0.9.333-7.278.201109282228

Siehe auch Bug #23843 für ähnliche Probleme, weshalb der ChangeLog-Eintrag jetzt nicht ergänzt wird.
Comment 6 Stefan Gohmann univentionstaff 2011-09-29 13:55:11 CEST
Funcktioniert. Auch ein umfangreicher DVS Test war erfolgreich.
Comment 7 Philipp Hahn univentionstaff 2011-11-09 09:01:24 CET
In einem Fehlerfall ist noch folgender Traceback aufgetreten:
    Traceback (most recent call last):
      File "/usr/lib/python2.4/site-packages/univention/management/console/handlers/__init__.py", line 160, in execute
        func( object )
      File "/usr/lib/python2.4/site-packages/univention/management/console/handlers/uvmm/__init__.py", line 429, in uvmm_overview
        res = tv.get_tree_response(TreeView.LEVEL_ROOT)
      File "/usr/lib/python2.4/site-packages/univention/management/console/handlers/uvmm/treeview.py", line 181, in get_tree_response
        table = self.get_tree(current=current_path)
      File "/usr/lib/python2.4/site-packages/univention/management/console/handlers/uvmm/treeview.py", line 194, in get_tree
        self.node_tree = node_tree = self.uvmm_client.get_node_tree()
      File "/usr/lib/python2.4/site-packages/univention/management/console/handlers/uvmm/uvmmd.py", line 480, in get_node_tree
        node_info = protocol.Data_node()
    AttributeError: 'module' object has no attribute 'Data_node'

s/Data_node/Data_Node/ wurde korrigiert.

svn28894, univention-virtual-machine-manager_0.9.335-2.308.201111090901
Comment 8 Philipp Hahn univentionstaff 2011-11-12 01:55:08 CET
Und noch ein Traceback im Fehlerfall:
#
File "/usr/lib/pymodules/python2.6/univention/uvmm/node.py", line 314, in update_expensive
#
    logger.warning('Failed to query disk %s#%s: %s', self.pd.uri, dev.source, e.get_error_message())
#
AttributeError: 'Data_Domain' object has no attribute 'uri'

uri → uuid

svn29101, univention-virtual-machine-manager-daemon_0.9.335-3.318.201111120152

ChangeLog: ±0
Comment 9 Stefan Gohmann univentionstaff 2011-12-27 11:01:41 CET
UCS 2.4-4 wurde veröffentlicht. Sollte der hier beschriebene Bug mit einer
neueren Version von UCS erneut auftreten, so sollte dieser Bug dupliziert
werden: "Clone This Bug"