vSphere CLI中的警告:使用未初始化的值$ hostname

时间:2017-12-01 12:41:57

标签: perl vmware vsphere pacemaker stonith

我正在使用vSphere CLI 6.5.0从Perl脚本重置VM。这是Pacemaker的(专有)STONITH插件。

在STONITH之后,journalctl -u pacemaker立即在vmcontrol.pl中报告一个属于vSphere CLI的警告。警告由fence_legacy报告,属于Pacemaker。

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

在此上下文中调用UTIL::trace时发生错误:

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 ");
      };

我想知道这是一个功能还是一个bug。可能是Vim::get_view在无法报告主机名的情况下与VMware进行通信(因此无法初始化$hostname),因为VM正在重新启动?

这听起来不太可能(例如,因为ResetVM的调用发生在$hostname之后),但我怀疑这样的事情正在发生,在这种情况下警告可能会被忽略。我还怀疑该问题仅与vSphere CLI有关(即不是由于它在Pacemaker堆栈中的使用造成的)。

1 个答案:

答案 0 :(得分:0)

你可以试试这个。

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 ");
      };