0

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

在 STONITH 之后立即报告属于 vSphere CLIjournalctl -u pacemaker的警告。vmcontrol.pl警告由 Pacemaker 报告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 ");
      };

我想知道这是一个功能还是一个错误。是不是因为 VM 正在重新启动Vim::get_view而无法报告主机名(因此$hostname无法初始化)时与 VMware 通信?

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

4

1 回答 1

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 ");
      };
于 2017-12-01T13:44:10.140 回答