ConnectToVMEmbeddedWithClient opens an embedded VNC connection to a VM using the built-in noVNC client and specific client.
(client *api.Client, vm *api.VM)
| 221 | |
| 222 | // ConnectToVMEmbeddedWithClient opens an embedded VNC connection to a VM using the built-in noVNC client and specific client. |
| 223 | func (s *Service) ConnectToVMEmbeddedWithClient(client *api.Client, vm *api.VM) (string, error) { |
| 224 | s.logger.Info("Starting embedded VNC connection for VM: %s (ID: %d, Type: %s, Node: %s)", vm.Name, vm.ID, vm.Type, vm.Node) |
| 225 | |
| 226 | // Create or get existing session for this VM using specific client |
| 227 | session, err := s.sessionManager.CreateVMSessionWithClient(client, vm) |
| 228 | if err != nil { |
| 229 | s.logger.Error("Failed to create VM session for %s: %v", vm.Name, err) |
| 230 | |
| 231 | return "", fmt.Errorf("failed to create VM session: %w", err) |
| 232 | } |
| 233 | |
| 234 | s.logger.Info("VM VNC session ready: %s (Port: %d, Session: %s)", vm.Name, session.Port, session.ID) |
| 235 | |
| 236 | // Store the actual VNC URL in the server for forwarding |
| 237 | if session.Server != nil { |
| 238 | session.Server.actualVNCURL = session.URL |
| 239 | } |
| 240 | |
| 241 | // Create shortened URL for easier copying |
| 242 | shortenedURL := createShortenedVNCURL(session.URL) |
| 243 | |
| 244 | // Open the embedded VNC client in the default browser |
| 245 | err = openBrowser(session.URL) |
| 246 | if err != nil { |
| 247 | s.logger.Error("Failed to open embedded VNC client for VM %s: %v", vm.Name, err) |
| 248 | |
| 249 | return shortenedURL, err |
| 250 | } |
| 251 | |
| 252 | s.logger.Info("Successfully opened embedded VNC client for VM %s (Session: %s)", vm.Name, session.ID) |
| 253 | |
| 254 | return shortenedURL, nil |
| 255 | } |
| 256 | |
| 257 | // ConnectToNodeEmbedded opens an embedded VNC shell connection to a node using the built-in noVNC client |
| 258 | // This method supports multiple concurrent sessions - each node gets its own session. |
no test coverage detected