Предупреждение в vSphere CLI: использование неинициализированного значения $hostname
Я использую vSphere CLI 6.5.0 для сброса виртуальной машины из сценария Perl. Это в контексте (проприетарного) плагина STONITH для Pacemaker.
Сразу после 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 ");
};
Мне интересно, является ли это функция или ошибка. Может ли быть так Vim::get_view
связывается с VMware в то время, когда имя хоста не может быть сообщено (и, следовательно, $hostname
невозможно инициализировать), потому что виртуальная машина перезагружается?
Это звучит маловероятно (например, потому что призыв к ResetVM
происходит после назначения $hostname
), но я подозреваю, что происходит что-то подобное, и в этом случае предупреждение может быть проигнорировано. Я также подозреваю, что проблема связана только с vSphere CLI (то есть не вызвана его использованием внутри стека Pacemaker).
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 ");
};