Even though a user has allowed enabling modify the Virtual Machine, the reconfigure operation fails with the error message "Permission to perform this operation was denied. NoPermission.message.format" using vSphere Client (HTML5).
For example:
vpxd.log
YYYY-MM-DD HH:MM info vpxd[04851] [Originator@6876 sub=vpxLro opID=VmDeviceConnectionManager-apply-256885-ngc:70013108-eb] [VpxLRO] -- FINISH task-2054
2020-06-09T10:23:24.273+09:00 info vpxd[04851] [Originator@6876 sub=Default opID=VmDeviceConnectionManager-apply-256885-ngc:70013108-eb] [VpxLRO] -- ERROR task-2054 -- vm-849 -- vim.VirtualMachine.reconfigure: vim.fault.GenericVmConfigFault:
--> Result:
--> (vim.fault.GenericVmConfigFault) {
--> faultCause = (vmodl.MethodFault) null,
--> faultMessage = (vmodl.LocalizableMessage) [
--> (vmodl.LocalizableMessage) {
--> key = "msg.disk.onlineConnectFail",
--> arg = (vmodl.KeyAnyValue) [
--> (vmodl.KeyAnyValue) {
--> key = "1",
--> value = "ide1:0"
--> }
--> ],
--> message = "Connection control operation failed for disk 'ide1:0'."
--> }
--> ],
--> reason = "Connection control operation failed for disk 'ide1:0'."
--> msg = "Connection control operation failed for disk 'ide1:0'."
--> }
vsphere_client_virgo.log
YYYY-MM-DD HH:MM [DEBUG] https-jsse-nio-9443-exec-9 70013216 100364 200029 com.vmware.vise.vim.commons.vcservice.impl.VcServiceImpl Will determine whether to retry managed method reconfigure for moref ManagedObjectReference: type = VirtualMachine, value = vm-849, serverGuid = aec4b0c7-ab3d-4a18-9552-f70fc527755e. The failure was com.vmware.vim.binding.vim.fault.NoPermission: Permission to perform this operation was denied.
YYYY-MM-DD HH:MM [DEBUG] https-jsse-nio-9443-exec-9 70013216 100364 200029 com.vmware.vise.vim.commons.vcservice.impl.VcServiceImpl Will not retry because of the failure type
YYYY-MM-DD HH:MM [ERROR] https-jsse-nio-9443-exec-9 70013216 100364 200029 com.vmware.vsphere.client.vm.impl.VmMutationProvider Could not reconfigure VM urn:vmomi:VirtualMachine:vm-849:aec4b0c7-ab3d-4a18-9552-f70fc527755e com.vmware.vim.binding.vim.fault.NoPermission: Permission to perform this operation was denied.
at sun.reflect.GeneratedConstructorAccessor393.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.Class.newInstance(Class.java:442)
at com.vmware.vim.vmomi.core.types.impl.ComplexTypeImpl.newInstance(ComplexTypeImpl.java:174)
at com.vmware.vim.vmomi.core.types.impl.DefaultDataObjectFactory.newDataObject(DefaultDataObjectFactory.java:25)
at com.vmware.vim.vmomi.core.soap.impl.unmarshaller.ComplexStackContext.<init>(ComplexStackContext.java:30)
at com.vmware.vim.vmomi.core.soap.impl.unmarshaller.UnmarshallerImpl$UnmarshallSoapFaultContext.parse(UnmarshallerImpl.java:150)
at com.vmware.vim.vmomi.core.soap.impl.unmarshaller.UnmarshallerImpl$UnmarshallSoapFaultContext.unmarshall(UnmarshallerImpl.java:101)
at com.vmware.vim.vmomi.core.soap.impl.unmarshaller.UnmarshallerImpl.unmarshalSoapFault(UnmarshallerImpl.java:88)
at com.vmware.vim.vmomi.core.soap.impl.unmarshaller.UnmarshallerImpl.unmarshalSoapFault(UnmarshallerImpl.java:83)
at com.vmware.vim.vmomi.client.common.impl.SoapFaultStackContext.setValue(SoapFaultStackContext.java:40)
at com.vmware.vim.vmomi.client.common.impl.ResponseUnmarshaller.processNextElement(ResponseUnmarshaller.java:127)
at com.vmware.vim.vmomi.client.common.impl.ResponseUnmarshaller.unmarshal(ResponseUnmarshaller.java:70)
at com.vmware.vim.vmomi.client.common.impl.ResponseImpl.unmarshalResponse(ResponseImpl.java:279)
at com.vmware.vim.vmomi.client.common.impl.ResponseImpl.setResponse(ResponseImpl.java:234)
at com.vmware.vim.vmomi.client.http.impl.HttpExchangeBase.parseResponse(HttpExchangeBase.java:156)
at com.vmware.vim.vmomi.client.http.impl.HttpExchange.run(HttpExchange.java:53)
at com.vmware.vim.vmomi.client.http.impl.HttpProtocolBindingBase.executeRunnable(HttpProtocolBindingBase.java:226)
at com.vmware.vim.vmomi.client.http.impl.HttpProtocolBindingImpl.send(HttpProtocolBindingImpl.java:106)
at com.vmware.vim.vmomi.client.common.impl.MethodInvocationHandlerImpl$CallExecutor.sendCall(MethodInvocationHandlerImpl.java:629)
at com.vmware.vim.vmomi.client.common.impl.MethodInvocationHandlerImpl$CallExecutor.executeCall(MethodInvocationHandlerImpl.java:610)
at com.vmware.vim.vmomi.client.common.impl.MethodInvocationHandlerImpl.completeCall(MethodInvocationHandlerImpl.java:360)
at com.vmware.vim.vmomi.client.common.impl.MethodInvocationHandlerImpl.invokeOperation(MethodInvocationHandlerImpl.java:311)
at com.vmware.vim.vmomi.client.common.impl.MethodInvocationHandlerImpl.invoke(MethodInvocationHandlerImpl.java:184)
at com.sun.proxy.$Proxy725.reconfigure(Unknown Source)
When VM had undergone a failed Tools Upgrade attempt, indicated in the vmx file as follows:
toolsInstallManager.lastInstallError = "21003"
This entry is in .vmx file, the vSphere Client (HTML5) interpreted these configurations of the VM as newly added by the user and although the user did not change anything in the Edit Settings dialog related to them, the operation failed as these changes need higher privilege VirtualMachine.Config.Settings which was missing
Fixed in:
vSphere 7.0 Update3
vSphere 6.7 P06
vSphere 6.5 P08
Workaround:
Adding Permission: "Virtual machine -> Change Configuration -> Change Settings".
or
Remove toolsInstallManager.lastInstallError = "21003" entry from .vmx file.
Impact/Risks:
Unable to modify Virtual Machine settings