Feature #391
Κονσόλα VNC στο GUI
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
Associated revisions
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
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
Hide spinner on open_console success, Refs #391
fix vnc console. open console on a new window
Refs #391
open a new window for each console, Refs #391
History
#1 Updated by Vangelis Koukis about 13 years ago
- Category set to Cyclades UI
#2 Updated by Vangelis Koukis about 13 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 about 13 years ago
Αυτό μπαίνει ως "Console" στο list view [αντικαθιστά το "out of band"] και στο icon view [δεξιά στο κενό που υπάρχει τώρα]. Επιτρέπονται πολλαπλές ενέργειες, ας ανοίγουν πολλά παράθυρα.
#4 Updated by Vangelis Koukis almost 14 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 almost 14 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 almost 14 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 almost 14 years ago
- Status changed from Feedback to Assigned
#8 Updated by Vangelis Koukis almost 14 years ago
Αυτό όπως συζητήσαμε σήμερα έχει ένα-δύο μικρά θέματα για να κλείσει:
α) δεν βγάζει το Java applet σε Opera
β) είναι καλύτερα να γίνει χωριστή σελίδα που να φορτώνει και να επηρεάζει με μεταβλητές η Javascript
γ) πρέπει να σβήνει το spinner όταν πετύχει το console action.
#9 Updated by Christos Psaltis almost 14 years ago
- % Done changed from 30 to 90
Τα παραπάνω αντιμετωπίστηκαν. Έχει φτιαχτεί ένα νέο view με το δικό του template και url και οι μεταβλητές περνούν σε αυτό με post απο την javascript. Κάποιοι browsers ανοίγουν pop up και καποιοι νέο tab. Το μόνο που μένει είναι να γίνει override αυτή η συμπεριφορά.
#10 Updated by Christos Psaltis almost 13 years ago
- Status changed from Assigned to Feedback
- % Done changed from 90 to 100
Εδώ έχουν φτιαχτεί και τα pop up
#11 Updated by Constantinos Venetsanopoulos almost 13 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 almost 13 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 almost 13 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 almost 13 years ago
- Status changed from Assigned to Feedback
διόρθωσα το path στο 406ebc3b
#15 Updated by Constantinos Venetsanopoulos almost 13 years ago
- Status changed from Feedback to Assigned
- Priority changed from Medium to High
Φαίνεται ότι παίζει οκ, αλλά για κάθε console πρέπει να ανοίγει διαφορετικό παράθυρο, ώστε να μπορώ να έχω διαφορετικές κονσόλες από διαφορετικά μηχανήματα ταυτόχρονα ανοιχτές
#16 Updated by Mike Muzurakis almost 13 years ago
- Status changed from Assigned to Feedback
Έγινε στο bd16fbbc
#17 Updated by Constantinos Venetsanopoulos almost 13 years ago
- Status changed from Feedback to Closed
ok, closed