sureshanaparti commented on a change in pull request #4300:
URL: https://github.com/apache/cloudstack/pull/4300#discussion_r580219285
##########
File path: server/src/main/java/com/cloud/servlet/ConsoleProxyServlet.java
##########
@@ -417,6 +425,40 @@ private String composeThumbnailUrl(String rootUrl,
VirtualMachine vm, HostVO hos
return sb.toString();
}
+ /**
+ * Sets the URL to establish a VNC over websocket connection
+ */
+ private void setWebsocketUrl(VirtualMachine vm, ConsoleProxyClientParam
param) {
+ String ticket = acquireVncTicketForVmwareVm(vm);
+ String wsUrl = composeWebsocketUrlForVmwareVm(ticket, param);
+ param.setWebsocketUrl(wsUrl);
+ }
+
+ /**
+ * Format expected: wss://<ESXi_HOST_IP>:443/ticket/<TICKET_ID>
+ */
+ private String composeWebsocketUrlForVmwareVm(String ticket,
ConsoleProxyClientParam param) {
+ param.setClientHostPort(443);
+ return String.format("wss://%s:%s/ticket/%s",
param.getClientHostAddress(), param.getClientHostPort(), ticket);
+ }
+
+ /**
+ * Acquires a ticket to be used for console proxy as described in 'Removal
of VNC Server from ESXi' on:
+ *
https://docs.vmware.com/en/VMware-vSphere/7.0/rn/vsphere-esxi-vcenter-server-70-release-notes.html
+ */
+ private String acquireVncTicketForVmwareVm(VirtualMachine vm) {
+ try {
+ s_logger.info("Acquiring VNC ticket for VM = " + vm.getHostName());
+ GetVmVncTicketCommand cmd = new
GetVmVncTicketCommand(vm.getInstanceName());
+ Answer answer = agentManager.send(vm.getHostId(), cmd);
+ GetVmVncTicketAnswer ans = (GetVmVncTicketAnswer) answer;
+ return ans.getTicket();
+ } catch (AgentUnavailableException | OperationTimedoutException e) {
+ s_logger.error("Error acquiring ticket", e);
+ return null;
Review comment:
in case of failure, better send the error msg with result as fail in the
answer, and process accordingly on the receiving side.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]