Commit 533c005a authored by Dietmar Maurer's avatar Dietmar Maurer

improve novnc console, and display connection errors

parent 1372f67e
...@@ -9,6 +9,28 @@ PVE_vnc_console_event = function(appletid, action, err) { ...@@ -9,6 +9,28 @@ PVE_vnc_console_event = function(appletid, action, err) {
return; return;
} }
comp.detectMigratedVM();
}
return;
};
Ext.define('PVE.VNCConsole', {
extend: 'Ext.panel.Panel',
alias: ['widget.pveVNCConsole'],
novnc: false,
last_novnc_state: undefined,
last_novnc_msg: undefined,
detectMigratedVM: function() {
var me = this;
if (!me.vmid) {
return;
}
// try to detect migrated VM // try to detect migrated VM
PVE.Utils.API2Request({ PVE.Utils.API2Request({
url: '/cluster/resources', url: '/cluster/resources',
...@@ -16,45 +38,20 @@ PVE_vnc_console_event = function(appletid, action, err) { ...@@ -16,45 +38,20 @@ PVE_vnc_console_event = function(appletid, action, err) {
success: function(response) { success: function(response) {
var list = response.result.data; var list = response.result.data;
Ext.Array.each(list, function(item) { Ext.Array.each(list, function(item) {
if (item.type === 'qemu' && item.vmid == comp.vmid) { if (item.type === 'qemu' && item.vmid == me.vmid) {
if (item.node !== comp.nodename) { if (item.node !== me.nodename) {
//console.log("MOVED VM to node " + item.node); //console.log("MOVED VM to node " + item.node);
comp.nodename = item.node; me.nodename = item.node;
comp.url = "/nodes/" + comp.nodename + "/" + item.type + "/" + comp.vmid + "/vncproxy"; me.url = "/nodes/" + me.nodename + "/" + item.type + "/" + me.vmid + "/vncproxy";
//console.log("NEW URL " + comp.url); //console.log("NEW URL " + comp.url);
comp.reloadApplet(); me.reloadApplet();
} }
return false; // break return false; // break
} }
}); });
} }
}); });
} },
return;
/*
var el = Ext.get(appletid);
if (!el)
return;
if (action === "close") {
// el.remove();
} else if (action === "error") {
// console.log("TESTERROR: " + err);
// var compid = appletid.replace("-vncapp", "");
// var comp = Ext.getCmp(compid);
}
//Ext.get('mytestid').remove();
*/
};
Ext.define('PVE.VNCConsole', {
extend: 'Ext.panel.Panel',
alias: ['widget.pveVNCConsole'],
novnc: false,
initComponent : function() { initComponent : function() {
var me = this; var me = this;
...@@ -91,6 +88,25 @@ Ext.define('PVE.VNCConsole', { ...@@ -91,6 +88,25 @@ Ext.define('PVE.VNCConsole', {
var innerDoc = novnciframe.contentDocument || novnciframe.contentWindow.document; var innerDoc = novnciframe.contentDocument || novnciframe.contentWindow.document;
aw = innerDoc.getElementById('noVNC_canvas').width + 8; aw = innerDoc.getElementById('noVNC_canvas').width + 8;
ah = innerDoc.getElementById('noVNC_canvas').height + 8; ah = innerDoc.getElementById('noVNC_canvas').height + 8;
var novnc_state = innerDoc.getElementById('noVNC_status_state').innerHTML;
var novnc_msg = innerDoc.getElementById('noVNC_status_msg').innerHTML;
if (novnc_state !== me.last_novnc_state || novnc_msg !== me.last_novnc_msg) {
me.last_novnc_state = novnc_state;
me.last_novnc_msg = novnc_msg;
if (novnc_state !== 'normal') {
PVE.Utils.setErrorMask(box, novnc_msg || 'unknown');
} else {
PVE.Utils.setErrorMask(box); // clear mask
}
if (novnc_state === 'disconnected') {
me.detectMigratedVM();
}
}
} else { } else {
applet = Ext.getDom(myid); applet = Ext.getDom(myid);
...@@ -353,6 +369,7 @@ Ext.define('PVE.KVMConsole', { ...@@ -353,6 +369,7 @@ Ext.define('PVE.KVMConsole', {
'->', '->',
{ {
text: gettext('Refresh'), text: gettext('Refresh'),
hidden: me.novnc ? true : false,
handler: function() { handler: function() {
var applet = Ext.getDom(me.appletID); var applet = Ext.getDom(me.appletID);
applet.sendRefreshRequest(); applet.sendRefreshRequest();
...@@ -446,6 +463,7 @@ Ext.define('PVE.OpenVZConsole', { ...@@ -446,6 +463,7 @@ Ext.define('PVE.OpenVZConsole', {
'->', '->',
{ {
text: gettext('Refresh'), text: gettext('Refresh'),
hidden: me.novnc ? true : false,
handler: function() { handler: function() {
var applet = Ext.getDom(me.appletID); var applet = Ext.getDom(me.appletID);
applet.sendRefreshRequest(); applet.sendRefreshRequest();
...@@ -482,34 +500,32 @@ Ext.define('PVE.Shell', { ...@@ -482,34 +500,32 @@ Ext.define('PVE.Shell', {
throw "no node name specified"; throw "no node name specified";
} }
var tbar = [ var tbar = [ '->' ];
'->',
{ if (!me.novnc) {
tbar.push({
text: gettext('Refresh'), text: gettext('Refresh'),
handler: function() { handler: function() {
var applet = Ext.getDom(me.appletID); var applet = Ext.getDom(me.appletID);
applet.sendRefreshRequest(); applet.sendRefreshRequest();
} }
});
} }
];
if (!me.ugradeSystem) { if (!me.ugradeSystem) {
// we dont want to restart the upgrade script // we dont want to restart the upgrade script
tbar.push([ tbar.push({
{
text: gettext('Reload'), text: gettext('Reload'),
handler: function () { me.reloadApplet(); } handler: function () { me.reloadApplet(); }
}]); });
} }
tbar.push([ tbar.push({
{
text: gettext('Shell'), text: gettext('Shell'),
handler: function() { handler: function() {
PVE.Utils.openVNCViewer('shell', undefined, me.nodename, undefined, me.novnc); PVE.Utils.openVNCViewer('shell', undefined, me.nodename, undefined, me.novnc);
} }
} });
]);
var baseUrl = "/nodes/" + me.nodename; var baseUrl = "/nodes/" + me.nodename;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment