【问题标题】:warning in vSphere CLI: Use of uninitialized value $hostnamevSphere CLI 中的警告:使用未初始化的值 $hostname
【发布时间】:2017-12-01 12:41:56
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 作为一个独立的脚本,我没有遇到 vmcontrol 的任何问题。我对其他两个项目不熟悉。您是否尝试过将 vmcontrol 作为独立脚本运行?
  • @KyleRuddy 这也是我打算做的。完成后我会在这里报告。

标签: perl vmware vsphere pacemaker stonith


【解决方案1】:

你可以试试这个吗?

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

【讨论】:

  • 谢谢,但脚本 vmcontrol.pl 是 VMware 的 vSphere CLI 产品的一部分,我根本不想修改/修补它。
猜你喜欢
  • 1970-01-01
  • 2017-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多