VMware vSphere 7.0 sürümü kurumsal sanallaştırma ortamlarında geniş çapta kullanılan bir platformdur. Ancak vSphere Client kullanarak sanal makine yapılandırmasını değiştirmeye çalışırken “object is not an instance of declaring class” hata mesajı ile karşılaşabilirsiniz. Bu hata sanal makinenin donanım sürümünü yükseltmeye çalışırken başarısız olması sonucu, .vmx yapılandırma dosyasına “virtualHW.scheduledUpgrade.state = ‘failed'” satırının eklenmesinden kaynaklanmaktadır. vSphere Client uygulaması sanal makinenin yapılandırmasını değiştirmek için VM reconfiguration API‘sini kullanır ve bu satırı bir yapılandırma ayarı olarak yorumlamaya çalışırken hata ile karşılaşır.
Bu makalede bu hatanın belirtilerini nedenlerini ve sorunu çözmek için uygulanabilecek adımları ele alacağız.
vSphere Client ile sanal makine yapılandırmasını düzenlemeye çalışırken işlem başarısız olur ve aşağıdaki hatayı verecektir.
java.lang.IllegalArgumentException: object is not an instance of declaring class
/var/log/vmware/vsphere-ui/logs/vsphere_client_virgo.log dosyasında aşağıdaki hata mesajları görülebilir.
[ERROR] http-nio-5090-exec-227 com.vmware.vsphere.client.vm.impl.VmMutationProvider
Could not reconfigure VM ... com.vmware.vim.vmomi.client.exception.InternalException:
java.lang.IllegalArgumentException: object is not an instance of declaring class
Bu hata sanal makine donanım yükseltme girişiminden kaynaklanmaktadır. Başarısız olan sanal makine donanım versiyon yükseltme işlemi sonucunda sanal makinenin .vmx yapılandırma dosyasına şu satır eklenmiştir.
virtualHW.scheduledUpgrade.state = "failed"
Bu satır sanal makinenin yapılandırmasını değiştirmeye çalışırken vSphere Client tarafından yanlış bir ayar olarak yorumlanır ve hata oluşur.
Bu sorun, vCenter Server 7.0 Update 3i sürümünde düzeltilmiştir. Eğer mümkünse, vCenter’ınızı en son sürüme yükseltmeniz önerilir. Ancak yükseltme yapamıyorsanız aşağıdaki geçici çözümü uygulayarak hatayı giderebilirsiniz.
Hata veren .vmx yapılandırma dosyasından ilgili satırı kaldırarak sorunu çözebilirsiniz. Öncelikle hata veren sanal makineyi kapatın. SSH kullanarak sanal makinenin çalıştığı ESXi host’a bağlanın. Aşağıdaki komutu kullanarak ilgili sanal makinenin konumuna gidin:
cd /vmfs/volumes/<datastore>/<VM_name>
.vmx dosyasını düzenlemek için vi aracını kullanabilirsiniz.
vi <VM_name>.vmx
Açılan dosyada aşağıdaki satırı bulunuz.
virtualHW.scheduledUpgrade.state = "failed"
Bu satırı silin ve ardından dosyayı kaydediniz.
Sanal makinenin kimlik numarasını görmek için aşağıdaki komutu çalıştırınız. Çıktının ilk sütununda VM ID bilgisi bulunur.
vim-cmd vmsvc/getallvms
Öğrendiğiniz VM ID’yi kullanarak yapılandırmayı yeniden yükleyiniz.
vim-cmd vmsvc/reload 14
Son olarak vSphere Client’ten çıkış yapın ve tekrar giriş yapın. Artık sanal makinenin ayarlarını başarılı bir şekilde düzenleyebilirsiniz. Sanal sunucu açılmaz ise inventory’den kaldırınız ve .vmx dosyasını kullanarak tekrardan envantere dahil ediniz.