Feature #391

Κονσόλα VNC στο GUI

Added by Giorgos Gousios over 11 years ago. Updated over 11 years ago.

Status:Closed Start date:04/06/2011
Priority:High Due date:
Assignee:Christos Psaltis % Done:

100%

Category:Cyclades UI Spent time: -
Target version:v0.3

Description

Πρέπει να προστεθεί στο GUI ενέργεια "Console" η οποία επικοινωνεί με το API για τη δημιουργία VNC consoles


Related issues

related to Synnefo - Bug #647: Στο παράθυρο console υπάρχει μία λευκή γραμμή πάνω από το... Closed 06/07/2011
related to Synnefo - Bug #501: Το παράθυρο για console είναι υπερβολικά μικρό Closed 05/10/2011
related to Synnefo - Bug #497: Η κονσόλα δεν ανοίγει σε list view Closed 05/10/2011
blocks Synnefo - Feature #349: Δυνατότητα για πρόσβαση OOB σε κονσόλα, μέσω VNC Closed 03/31/2011 04/06/2011

Associated revisions

Revision b02144c8
Added by Vangelis Koukis over 11 years ago

Add initial VNC console functionality in UI

Add initial support for VNC consoles in the UI.
Add a show_vnc_console() function in JS, which performs a "console"
API action to receive a VNC console endpoint, then connects using
the TightVNC Java Viewer in a popup window.

This is an initial buggy implementation, see #391 for what remains
to be done.

Refs #391

Revision 1d4fecef
Added by Christos Psaltis over 11 years ago

Several fixes concerning console action.

This includes: * Replace "out of band" with "console" in list view * Fix margins around console action in icon view * You can open a console only to active machines

Refs #391

Revision 74175c17
Added by Christos Psaltis over 11 years ago

Hide spinner on open_console success, Refs #391

Revision 6912c72b
Added by Markos Gogoulos over 11 years ago

fix vnc console. open console on a new window

Refs #391

Revision bd16fbbc
Added by Mike Muzurakis over 11 years ago

open a new window for each console, Refs #391

History

#1 Updated by Vangelis Koukis over 11 years ago

  • Category set to Cyclades UI

#2 Updated by Vangelis Koukis over 11 years ago

  • Target version changed from v0.2 to v0.3

Υλοποιείται το κουμπί "OOB access", στο list view, το οποίο βγάζει ένα νέο popup παράθυρο, το οποίο θα περιέχει κείμενο του στυλ "αυτό είναι το παράθυρο για το serverId 30." Εκεί, μπορεί να προστεθεί στη συνέχεια κάποιος VNC client σε Java applet.
Αυτό πηγαίνει για υλοποίηση στο timeframe της v0.3.

#3 Updated by Vangelis Koukis over 11 years ago

Αυτό μπαίνει ως "Console" στο list view [αντικαθιστά το "out of band"] και στο icon view [δεξιά στο κενό που υπάρχει τώρα]. Επιτρέπονται πολλαπλές ενέργειες, ας ανοίγουν πολλά παράθυρα.

#4 Updated by Vangelis Koukis over 11 years ago

  • Status changed from New to Assigned
  • Assignee set to Dimitris Moraitis

Στο b02144c822d έχω βάλει μια πρώτη υλοποίηση της δυνατότητας για VNC console στο UI.
Είπα να προσπαθήσω να κάνω κάτι για να προχωρήσω τα πράγματα, αν κάτι δεν σας αρέσει το αλλάζετε όπως θέλετε,
αφού το συζητήσουμε εδώ.

Έχει αρκετά θέματα/bugs, αλλά η core λειτουργικότητα είναι εντάξει.

Πρόσθεσα μία νέα ενέργεια δεξιά [console] στο icon view, η οποία τρέχει την show_vnc_console() σε Javascript.
Η show_vnc_console() πετάει ένα popup με τον TightVNC Java viewer, τον οποίο βάζει να συνδεθεί στο endpoint που έχει πάρει προηγουμένως με χρήση του "console" action από το API.

Χρειάζεται να γίνουν τα εξής για να κλείσει το συγκεκριμένο:
α) η ενέργεια να πάει και στο list view.
β) να στοιχιστούν σωστά οι ενέργειες, γιατί τώρα έχουν ξεφύγει [δεν ξέρω πώς λειτουργεί αυτό, απλώς πρόσθεσα την ενέργεια, διορθώστε κατά το δοκούν].
γ) η ενέργεια Console να βγαίνει μόνο σε "ACTIVE" μηχανήματα.
δ) να μη χρειάζεται επιβεβαίωση για την εκτέλεσή της.
ε) το popup να ενημερώνει το χρήστη ότι πρέπει να εγκαταστήσει το JRE6 plugin αν εντοπίσει ότι δεν υπάρχει υποστήριξη για Java.

Δεδομένου ότι αυτή τη στιγμή δεν τρέχετε vncauthproxy, η κλήση "console" θα αποτυγχάνει. Επειδή δεν μας ενδιαφέρει στη φάση ανάπτυξης του UI [αρκεί να βγαίνει σωστά το παράθυρο με τον viewer], πειράξτε τοπικά το "console" action στο API ώστε να επιστρέφει πάντα ένα προκαθορισμένο endpoint, ίσα-ίσα για να πετυχαίνει η ενέργεια. Αυτή η αλλαγή προφανώς δεν πρέπει να γίνει push στο repository.

#5 Updated by Christos Psaltis over 11 years ago

  • Status changed from Assigned to Feedback
  • Assignee changed from Dimitris Moraitis to Christos Psaltis
  • % Done changed from 0 to 30

Στο 1d4fecef έχουν διορθωθεί τα α, β, και γ των όσων αναφέρει ο βαγγέλης παραπάνω, στο 4.

Για να γίνει το δ χρειάζονται εκτεταμένες αλλαγές στο workflow εκτέλεσης των actions. Αυτό πρακτικά σημαίνει δύο πράγματα: * Χρειάζεται αρκετό χρόνο για να γίνει χωρίς να προσφέρει ιδιαίτερη λειτουργικότητα. * Γίνεται μη συνεπής ο τρόπος με τον οποίο γίνονται τα actions, άλλα απαιτούν confirm και άλλα όχι, προκαλώντας σύγχιση στους χρήστες.

Πώς θέλετε να προχωρήσουμε στο δ;

Γενικά δεν έχω καταλάβει πώς μπορούμε να δοκιμάσουμε το action, Μπορείς να μου δώσεις λίγες οδηγίες ακόμα;

#6 Updated by Vangelis Koukis over 11 years ago

ΟΚ, ας αφήσουμε το (δ), ας γίνονται όλες οι ενέργειες ακριβώς με τον ίδιο τρόπο.

Περισσότερα για τη δοκιμή του action:
Το πρόβλημα με τη δοκιμή του action είναι ότι το UI θέλει να εκτελέσει το action "console" στο API, για να πάρει πίσω τα στοιχεία της σύνδεσης VNC (host, port, password). Επειδή εσείς δεν τρέχετε vncauthproxy, ο οποίος είναι η γέφυρα από το μηχάνημα που τρέχει το Django προς την VNC console του KVM, θα παίρνετε μονίμως 500 ή κάτι ανάλογο όταν ζητάτε το "console" ACTION. Οπότε πειράξτε το API implementation [χωρίς να το κάνετε commit], ώστε να λειτουργεί πάντα σε TEST mode, δείτε την api/actions.py:get_console().

Η ενέργεια λειτουργεί σωστά αν βγαίνει το popup και ο Java viewer προσπαθεί να συνδεθεί κάπου [το κάπου είναι τα προκαθορισμένα, άκυρα στοιχεία που επιστρέφει η get_console() σε TEST mode]. Αν λειτουργεί σωστά ως εκεί, και ανοίγουν όλα τα παράθυρα όπως πρέπει, και περνιούνται σωστά οι παράμετροι στο applet από την show_vnc_console() της Javascript, όλα ΟΚ.

#7 Updated by Vangelis Koukis over 11 years ago

  • Status changed from Feedback to Assigned

#8 Updated by Vangelis Koukis over 11 years ago

Αυτό όπως συζητήσαμε σήμερα έχει ένα-δύο μικρά θέματα για να κλείσει:

α) δεν βγάζει το Java applet σε Opera
β) είναι καλύτερα να γίνει χωριστή σελίδα που να φορτώνει και να επηρεάζει με μεταβλητές η Javascript
γ) πρέπει να σβήνει το spinner όταν πετύχει το console action.

#9 Updated by Christos Psaltis over 11 years ago

  • % Done changed from 30 to 90

Τα παραπάνω αντιμετωπίστηκαν. Έχει φτιαχτεί ένα νέο view με το δικό του template και url και οι μεταβλητές περνούν σε αυτό με post απο την javascript. Κάποιοι browsers ανοίγουν pop up και καποιοι νέο tab. Το μόνο που μένει είναι να γίνει override αυτή η συμπεριφορά.

#10 Updated by Christos Psaltis over 11 years ago

  • Status changed from Assigned to Feedback
  • % Done changed from 90 to 100

Εδώ έχουν φτιαχτεί και τα pop up

#11 Updated by Constantinos Venetsanopoulos over 11 years ago

  • Status changed from Feedback to Assigned

Στο pop up παίρνω το error:

java.lang.NoClassDefFoundError: /static/vncviewer/VncViewer (wrong name: VncViewer)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at sun.plugin2.applet.Applet2ClassLoader.findClass(Applet2ClassLoader.java:247)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Plugin2ClassLoader.java:250)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Plugin2ClassLoader.java:180)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Plugin2ClassLoader.java:161)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Plugin2ClassLoader.java:675)
at sun.plugin2.applet.Plugin2Manager.createApplet(Plugin2Manager.java:3025)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1498)
at java.lang.Thread.run(Thread.java:662)
Exception: java.lang.NoClassDefFoundError: /static/vncviewer/VncViewer (wrong name: VncViewer)

#12 Updated by Markos Gogoulos over 11 years ago

Ο κώδικας που φορτώνει το vnc έχει μπει σε ξεχωριστό template, το ui/templates/machine_console.html
Ίσως υπάρχει κάποιο πρόβλημα στις τιμές του class ή του jar που προσπαθεί να φορτώσει αυτή η γραμμή

<applet code="/static/vncviewer/VncViewer.class" archive="/static/vncviewer/VncViewer.jar" width={{console_width}} height={{console_height}}>

#13 Updated by Vangelis Koukis over 11 years ago

Markos Gogoulos wrote:

Ο κώδικας που φορτώνει το vnc έχει μπει σε ξεχωριστό template, το ui/templates/machine_console.html
Ίσως υπάρχει κάποιο πρόβλημα στις τιμές του class ή του jar που προσπαθεί να φορτώσει αυτή η γραμμή

<applet code="/static/vncviewer/VncViewer.class" archive="/static/vncviewer/VncViewer.jar" width={{console_width}} height={{console_height}}>

Ναι, διότι έγινε λάθος κατά την αντιγραφή της από τον αρχικό κώδικα...
Θέλει CODE="VncViewer.class"

#14 Updated by Christos Psaltis over 11 years ago

  • Status changed from Assigned to Feedback

διόρθωσα το path στο 406ebc3b

#15 Updated by Constantinos Venetsanopoulos over 11 years ago

  • Status changed from Feedback to Assigned
  • Priority changed from Medium to High

Φαίνεται ότι παίζει οκ, αλλά για κάθε console πρέπει να ανοίγει διαφορετικό παράθυρο, ώστε να μπορώ να έχω διαφορετικές κονσόλες από διαφορετικά μηχανήματα ταυτόχρονα ανοιχτές

#16 Updated by Mike Muzurakis over 11 years ago

  • Status changed from Assigned to Feedback

Έγινε στο bd16fbbc

#17 Updated by Constantinos Venetsanopoulos over 11 years ago

  • Status changed from Feedback to Closed

ok, closed

Also available in: Atom PDF