I am attempting to deploy an OVA to my cluster with mixed ESXi versions, and encountering errors on the "Select Resource" page depending on which host I choose. I'm hoping someone can provide feedback about the behavior I'm seeing.
OVA: VMware Integrated OpenStack 2.5.0, also tried 3.1.0
vCenter: Tried with both 6.5 GA (Version 6.5.0 Build 4602587) and 6.5 a (Version 6.5.0 Build 4944578), and I have verified the behavior occurs both with the Appliance as well as Windows vCenter
ESXi host versions in cluster:
- 6.5.0 4564106 (6.5 GA)
- 6.5.0 4887370 (6.5 a)
- 6.0.0 3620759 (6.0 U2)
I am able to successfully deploy the OVA if I select the cluster as the resource in Step #3.
I am also able to successfully deploy the OVA if I select the ESXi host with 6.0 U2.
However, if I select either of the 6.5 hosts, I encounter an error, after the "Validating..." modal goes away.
The given OVF descriptor is invalid: The operation is not allowed in the current state of the host.;
When this happens there is no error present in the Events or Tasks. Although it is interesting to note that if I cancel the Deploy OVF template wizard, there is an "Import OVF package" task that is stuck at 0% in tasks, until I cancel it. This happens whether or not I receive the error.
The error above also appears in the Virgo log:
vsphere.client.provisioning.spec.DeployOnResourcePoolValidationSpec {
commonContext = java.lang.Object[]:[
com.vmware.vsphere.client.provisioning.ovf.impl.ResourcePoolDeploySession {
host = ManagedObjectReference: type = HostSystem, value = host-27, serverGuid = c5f54088-c0f1-47b6-b2cc-ba6032954eae
folder = null
source = file://VMware-OpenStack-2.5.0.0-3955000_OVF10.ova
provisioningTarget = ManagedObjectReference: type = ResourcePool, value = resgroup-8, serverGuid = c5f54088-c0f1-47b6-b2cc-ba6032954eae
sourceType = PUSH_SOURCE
pushContentType = OVF_SOURCE
pushOvfOption = MANIFEST_CERTIFICATE
sessionId = aeae6954-f03d-4d06-ba0a-5b156dc9f4a9:c5f54088-c0f1-47b6-b2cc-ba6032954eae
clientToken = 27b55e40-e94e-4820-8acc-c9b47f31af8c
},
com.vmware.vsphere.client.provisioning.workflow.Workflow {
id = deployOvfOnResourcePool
contextObject = ManagedObjectReference: type = ClusterComputeResource, value = domain-c7, serverGuid = c5f54088-c0f1-47b6-b2cc-ba6032954eae
},
recursion@home,
]
name = VMware-OpenStack-2.5.0.0-3955000_OVF10
template = file://VMware-OpenStack-2.5.0.0-3955000_OVF10.ova
provisioningTarget = ManagedObjectReference: type = ResourcePool, value = resgroup-8, serverGuid = c5f54088-c0f1-47b6-b2cc-ba6032954eae
host = ManagedObjectReference: type = HostSystem, value = host-27, serverGuid = c5f54088-c0f1-47b6-b2cc-ba6032954eae
folder = null
sourceType = PUSH_SOURCE
pushContentType = OVF_SOURCE
pushOvfOption = MANIFEST_CERTIFICATE
} com.vmware.vim.binding.vmodl.MethodFault: The given OVF descriptor is invalid: The operation is not allowed in the current state of the host.;
at com.vmware.vsphere.client.provisioning.impl.ProvisioningResourcePoolMutationProvider.validate(ProvisioningResourcePoolMutationProvider.java:317)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.vmware.vise.data.provider.DelegatingServiceBase.invokeProviderInternal(DelegatingServiceBase.java:400)
at com.vmware.vise.data.provider.DelegatingServiceBase.delegate(DelegatingServiceBase.java:115)
at com.vmware.vise.data.mutation.impl.MutationServiceImpl.validate(MutationServiceImpl.java:303)
at sun.reflect.GeneratedMethodAccessor723.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:319)
at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.doInvoke(ServiceInvoker.java:56)
at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.invoke(ServiceInvoker.java:60)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.eclipse.gemini.blueprint.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:57)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at com.sun.proxy.$Proxy220.validate(Unknown Source)
at sun.reflect.GeneratedMethodAccessor722.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at flex.messaging.services.remoting.adapters.JavaAdapter.invoke(JavaAdapter.java:418)
at com.vmware.vise.messaging.remoting.JavaAdapterEx.invoke(JavaAdapterEx.java:72)
at flex.messaging.services.RemotingService.serviceMessage(RemotingService.java:183)
at flex.messaging.MessageBroker.routeMessageToService(MessageBroker.java:1400)
at flex.messaging.endpoints.AbstractEndpoint.serviceMessage(AbstractEndpoint.java:1011)
at flex.messaging.endpoints.AbstractEndpoint$$FastClassByCGLIB$$1a3ef066.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:689)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.flex.core.MessageInterceptionAdvice.invoke(MessageInterceptionAdvice.java:66)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.adapter.ThrowsAdviceInterceptor.invoke(ThrowsAdviceInterceptor.java:124)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.Cglib2AopProxy$FixedChainStaticTargetInterceptor.intercept(Cglib2AopProxy.java:573)
at com.vmware.vise.messaging.endpoints.AMFEndpoint$$EnhancerByCGLIB$$25b86fa6.serviceMessage(<generated>)
at flex.messaging.endpoints.amf.MessageBrokerFilter.invoke(MessageBrokerFilter.java:103)
at flex.messaging.endpoints.amf.LegacyFilter.invoke(LegacyFilter.java:158)
at flex.messaging.endpoints.amf.SessionFilter.invoke(SessionFilter.java:44)
at flex.messaging.endpoints.amf.BatchProcessFilter.invoke(BatchProcessFilter.java:67)
at flex.messaging.endpoints.amf.SerializationFilter.invoke(SerializationFilter.java:166)
at flex.messaging.endpoints.BaseHTTPEndpoint.service(BaseHTTPEndpoint.java:291)
at com.vmware.vise.messaging.endpoints.AMFEndpoint$$EnhancerByCGLIB$$25b86fa6.service(<generated>)
at org.springframework.flex.servlet.MessageBrokerHandlerAdapter.handle(MessageBrokerHandlerAdapter.java:109)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at com.vmware.vise.security.SessionManagementFilter.doFilterInternal(SessionManagementFilter.java:82)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at com.vmware.vsphere.client.logging.MDCLogFilter.doFilterInternal(MDCLogFilter.java:41)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:683)
at org.eclipse.virgo.web.tomcat.support.ApplicationNameTrackingValve.invoke(ApplicationNameTrackingValve.java:33)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
What is more interesting is that I am able to deploy to different hosts in the cluster by removing certain combinations of other hosts.
As mentioned above, when all 3 versions of hosts are present in the host, I can only deploy to the 6.0U2 host selected as the resource.
When I remove the 6.0U2 host from inventory, I can only deploy to the 6.5 GA host selected as the resource.
And finally, when I remove all other versions from the cluster, I can deploy to the 6.5a host selected as the resource.
Can anyone confirm this behavior, or provide some details why I am able to select some hosts as the resource but not others? It appears that I can only select the lowest version of ESXi in the cluster as the resource. If you can point me to somewhere in the documentation that may explain this behavior I would appreciate it!