我正在使用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堆栈中的使用造成的)。
答案 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 ");
};