2017-12-01 4 views
0

Ich verwende vSphere CLI 6.5.0 zum Zurücksetzen einer VM aus einem Perl-Skript. Dies ist im Kontext ein (proprietäres) STONITH-Plugin für Pacemaker.

Unmittelbar nach STONITH meldet journalctl -u pacemaker eine Warnung in vmcontrol.pl, die zu vSphere CLI gehört. Die Warnung wird von fence_legacy gemeldet, die zu Pacemaker gehört.

Use of uninitialized value $hostname in concatenation (.) or string at 
/opt/vmware-vsphere-cli-distrib/apps/vm/vmcontrol.pl line 168. 

Der Fehler tritt in einem Aufruf von UTIL::trace in diesem Zusammenhang:

sub reset_vm { 
    foreach (@$vm_views) { 
     my $mor_host = $_->runtime->host; 
     my $hostname = Vim::get_view(mo_ref => $mor_host)->name; 
     eval { 
     $_->ResetVM(); 
     Util::trace(0, "\nvirtual machine '" . $_->name . "' under host". 
            " $hostname reset successfully "); 
     }; 

Ich frage mich, ob dies ein Feature oder ein Bug. Könnte es sein, dass Vim::get_view mit VMware zu einem Zeitpunkt kommuniziert, an dem der Hostname nicht gemeldet werden kann (und daher $hostname nicht initialisiert werden kann), weil die VM neu gestartet wird?

Es klingt unwahrscheinlich (z. B., weil der Aufruf an ResetVM nach der Zuweisung an $hostname auftritt), aber ich vermute, dass so etwas passiert, in diesem Fall könnte die Warnung ignoriert werden. Ich vermute auch, dass das Problem nur mit vSphere CLI zusammenhängt (d. H. Nicht durch seine Verwendung in einem Pacemaker-Stack verursacht wird).

+0

Als eigenständiges Skript, ich habe keine Probleme mit vmcontrol. Ich kenne die anderen beiden Gegenstände nicht. Haben Sie versucht, vmcontrol als eigenständiges Skript auszuführen? –

+0

@KyleRuddy Genau das plane ich auch. Ich melde mich hier, sobald es fertig ist. – rookie09

Antwort

0

Können Sie dies stattdessen versuchen.

sub reset_vm { 
    foreach $mor_host(@$vm_views) { 
    my $hostname = Vim::get_view(mo_ref => $mor_host->runtime->host, properties =>); 
     eval { 
     $_->ResetVM(); 
     Util::trace(0, "\nvirtual machine '" . $_->name . "' under host". 
           " $hostname reset successfully "); 
     }; 
+0

Thx, aber das Skript 'vmcontrol.pl' ist Teil des vSphere CLI-Produkts von VMware, und ich möchte das überhaupt nicht tun. – rookie09

Verwandte Themen