MCPcopy Create free account
hub / github.com/devnullvoid/pvetui / ConnectToNodeEmbeddedWithClient

Method ConnectToNodeEmbeddedWithClient

internal/vnc/service.go:264–296  ·  view source on GitHub ↗

ConnectToNodeEmbeddedWithClient opens an embedded VNC shell connection to a node using the built-in noVNC client and specific client.

(client *api.Client, nodeName string)

Source from the content-addressed store, hash-verified

262
263// ConnectToNodeEmbeddedWithClient opens an embedded VNC shell connection to a node using the built-in noVNC client and specific client.
264func (s *Service) ConnectToNodeEmbeddedWithClient(client *api.Client, nodeName string) (string, error) {
265 s.logger.Info("Starting embedded VNC shell connection for node: %s", nodeName)
266
267 // Create or get existing session for this node using specific client
268 session, err := s.sessionManager.CreateNodeSessionWithClient(client, nodeName)
269 if err != nil {
270 s.logger.Error("Failed to create node session for %s: %v", nodeName, err)
271
272 return "", fmt.Errorf("failed to create node session: %w", err)
273 }
274
275 s.logger.Info("Node VNC session ready: %s (Port: %d, Session: %s)", nodeName, session.Port, session.ID)
276
277 // Store the actual VNC URL in the server for forwarding
278 if session.Server != nil {
279 session.Server.actualVNCURL = session.URL
280 }
281
282 // Create shortened URL for easier copying
283 shortenedURL := createShortenedVNCURL(session.URL)
284
285 // Open the embedded VNC client in the default browser
286 err = openBrowser(session.URL)
287 if err != nil {
288 s.logger.Error("Failed to open embedded VNC client for node %s: %v", nodeName, err)
289
290 return shortenedURL, err
291 }
292
293 s.logger.Info("Successfully opened embedded VNC client for node %s (Session: %s)", nodeName, session.ID)
294
295 return shortenedURL, nil
296}
297
298// Session Management Methods
299

Callers 2

ConnectToNodeEmbeddedMethod · 0.95
connectToNodeVNCMethod · 0.80

Calls 5

createShortenedVNCURLFunction · 0.85
openBrowserFunction · 0.85
InfoMethod · 0.65
ErrorMethod · 0.65

Tested by

no test coverage detected