Category Archives: IaaS Web Server

vRA 7.3.1 Upgrade Issue (401 error in the Infrastructure tab)

After a recent update to VMware vRealize Automation from 7.3.0 to 7.3.1, I found 401 errors appear in the Infrastructure tab. After some little time I found the solution.

In the Web_Admin_All.log located in C:\Program Files (x86)\VMware\vCAC\Server\Website\Logs on the IaaS web server, you see errors similar to:

[UTC:2016-03-31 18:18:00 Local:2016-03-31 12:18] [Error]: [sub-thread-Id=”21″ context token] Error occurred writing to the repository tracking log
System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a send. —> System.IO.IOException:
The handshake failed due to an unexpected packet format.
at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Net.TlsStream.ProcessAuthentication(LazyAsyncResult result)
at System.Net.TlsStream.Write(Byte[] buffer, Int32 offset, Int32 size)
at System.Net.ConnectStream.WriteHeaders(Boolean async)
— End of inner exception stack trace —
at System.Net.HttpWebRequest.GetRequestStream(TransportContext& context)
at System.Net.HttpWebRequest.GetRequestStream()
at System.Data.Services.Client.ODataRequestMessageWrapper.SetRequestStream(ContentStream requestStreamContent)
at System.Data.Services.Client.BatchSaveResult.BatchRequest()
at System.Data.Services.Client.DataServiceContext.SaveChanges(SaveChangesOptions options)
at DynamicOps.Repository.RepositoryServiceContext.SaveChanges(SaveChangesOptions options)
at DynamicOps.Repository.Tracking.RepoLoggingSingleton.WriteExceptionToLogs(String message, Exception exceptionObject, Boolean writeAsWarning)
INNER EXCEPTION: System.IO.IOException: The handshake failed due to an unexpected packet format.
at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Net.TlsStream.ProcessAuthentication(LazyAsyncResult result)
at System.Net.TlsStream.Write(Byte[] buffer, Int32 offset, Int32 size)
at System.Net.ConnectStream.WriteHeaders(Boolean async)

Note: The preceding log is only an example. Date, time, and environmental variables may vary depending on your environment.

In the web.config file for the web administration service located in C:\Program Files (x86)\VMware\vCAC\Server\Website on the IaaS web server, the repository address is set to localhost on port 80, similar to: <add key=”repositoryAddress” value=”https://localhost:80/repository/” />

Under some circumstances, the web.config file can be updated with an invalid URL during the update of the IaaS web services. To resolve this issue, update the web.config with the correct URL using the following procedure.

Note: If there are more than one IaaS web servers, this procedure will need to be completed on all nodes.

Solution

  1. Log in to the IaaS web server and navigate to the location of the C:\Program Files (x86)\VMware\vCAC\Server\Website\web.config file.
  2. Back up the website web.config file.
  3. Change the repository address to use the appropriate FQDN for the Model Manager Website, which resides on the IaaS web server(s), similar to the following example:<add key=”repositoryAddress</SPAN>” value=”https://<IaaS Web FQDN>:443/repository/” />If there is only a single server, this will likely by the FQDN of the host. If there is more than one server, a VIP FQDN pointing to a load balancer will likely be in use.
  4. Run iisreset from an administrative command prompt to restart the service.

Reference: https://kb.vmware.com/s/article/2144965

Regards