Troubleshooting: vSphere Plugin 4.2.0 and 3.1.3 does not allow adding arrays in certain versions of vCenter
Problem Identified by Customer
After the plugin is successfully installed, if you aren't able to add arrays to the plugin, you might have an issue that is fixed in plugin version 4.2.1. This issue has been seen on vCenter 5.5, 6.0 and 6.5 with the plugin versions 4.2 and 3.1.3.
In the HTML5 GUI, this is the error you'll see:
Whereas in FLEX/FLASH you'll see something different:
In this latter case it's vague so you'll need to work further through the Troubleshooting steps to verify the presence of SocketFactory errors in vsphere_client_virgo.log to know whether you've hit this issue for sure or not.
Troubleshooting
To confirm the issue, please follow the below steps.
1. Go to the virgo logs on the vCenter; if the customer is using HTML5, they'll be at this path: /var/log/vmware/vsphere-ui/logs/vsphere_client_virgo.log
If the customer is using the Flex (Flash) client, they'll be at this path: /var/log/vmware/vsphere-client/logs/vsphere_client_virgo.log
2. You're going to look for this error: errorMessage='javax/net/SocketFactory'
Here is an example of the full body of the error on an HTML5 client:
[2019-12-13T02:23:56.831Z] [INFO ] SsoTokenRenewalExecutor-223 ######## 100029 200004 com.vmware.vsphere.client.security.sso.SsoTokenLifetimeManager sessionId 100029, clientId 200004, Token expiration time: Sun Jan 12 02:23:56 UTC 2020 Token renewal scheduled approximately for: Sun Jan 12 02:18:56 UTC 2020 [2019-12-13T02:25:37.205Z] [WARN ] http-bio-5090-exec-7 com.purestorage.purestoragehtml.services.FlashArrayServiceImpl Caught throwable. java.lang.NoClassDefFoundError: javax/net/SocketFactory at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:525) at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:387) at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:168) at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:326) at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:605) at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:440) at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:835) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56) at com.purestorage.purestoragehtml.services.util.FlashArrayHelper.checkConnection(Unknown Source) at com.purestorage.purestoragehtml.services.FlashArrayServiceImpl$1.invoke(Unknown Source) at com.purestorage.purestoragehtml.services.FlashArrayServiceImpl$1.invoke(Unknown Source) at com.purestorage.purestoragehtml.services.logging.TypedPureOperationLogger.invoke(Unknown Source) at com.purestorage.purestoragehtml.services.FlashArrayServiceImpl.createFlashArray(Unknown Source) 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 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.$Proxy778.createFlashArray(Unknown Source) at com.purestorage.purestoragehtml.mvc.controller.FlashArrayServiceController.createFlashArray(Unknown Source) 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 org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:100) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:604) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:565) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) 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.doFilter(SessionManagementFilter.java:134) 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:219) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:494) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:689) at org.eclipse.virgo.web.tomcat.support.ApplicationNameTrackingValve.invoke(ApplicationNameTrackingValve.java:33) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:1025) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1137) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:317) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748)[2019-12-13T02:25:37.207Z] [ERROR] http-bio-5090-exec-7 com.purestorage.purestoragehtml.services.FlashArrayServiceImpl createFlashArray : error = TypedPureResponse{error=PureResponseError{code=-4, errorMessage='javax/net/SocketFactory', detailMessage='null'}, result=null} [2019-12-13T02:25:37.208Z] [INFO ] http-bio-5090-exec-7 com.purestorage.purestoragehtml.services.FlashArrayServiceImpl createFlashArray : duration = 4 ms, params = CreateFlashArrayRequest(name=420-1, url=flasharray-m20-1.purecloud.com, username=pureuser, password=pureuser), result = TypedPureResponse{error=PureResponseError{code=-4, errorMessage='javax/net/SocketFactory', detailMessage='null'}, result=null} ^C
Resolution
The customer has two options currently:
1. If they are using HTML5, update to plugin version 4.2.1 (to manually update the plugin on the array, follow the instructions here or have the customer install 4.2.1 directly to their vCenter by using this guide for Powershell).
2. If they are using Flash/Flex, uninstall 3.1.3 and install 3.1.1.