
From: ShaoHe Feng <shaohef@linux.vnet.ibm.com> Add a set ticket API in UI. set a ticket for a VM before connect it. also set a cookie to store this ticket. Signed-off-by: ShaoHe Feng <shaohef@linux.vnet.ibm.com> Signed-off-by: Zhou Zheng Sheng <zhshzhou@linux.vnet.ibm.com> --- ui/js/src/kimchi.api.js | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/ui/js/src/kimchi.api.js b/ui/js/src/kimchi.api.js index 7d85fdf..1a34b3b 100644 --- a/ui/js/src/kimchi.api.js +++ b/ui/js/src/kimchi.api.js @@ -311,6 +311,19 @@ var kimchi = { }); }, + setTicketVM: function(vm, data, suc, err, sync) { + kimchi.requestJSON({ + url : kimchi.url + 'vms/' + encodeURIComponent(vm) + '/setticket', + type : 'POST', + contentType : 'application/json', + dataType : 'json', + async : !sync, + data : JSON.stringify(data || {}), + success : suc, + error : err + }); + }, + vncToVM : function(vm) { kimchi.requestJSON({ url : '/config', @@ -318,16 +331,25 @@ var kimchi = { dataType : 'json' }).done(function(data, textStatus, xhr) { proxy_port = data['display_proxy_port']; + var ticket; + kimchi.setTicketVM(vm, function(data) { + }, function(){ + kimchi.message.error.code('KCHAPI6002E'); + }, true); kimchi.requestJSON({ url : "/vms/" + encodeURIComponent(vm) + "/connect", type : "POST", dataType : "json" - }).done(function() { + }).done(function(data, textStatus, xhr) { + ticket = data['ticket']; + alert(ticket) url = 'https://' + location.hostname + ':' + proxy_port; url += "/console.html?url=vnc_auto.html&port=" + proxy_port; url += "&path=?token=" + encodeURIComponent(vm); url += "&kimchi=" + location.port; url += '&encrypt=1'; + kimchi.cookie.remove("ticketVM"); + ticket != null && kimchi.cookie.set("ticketVM", ticket, 100); window.open(url); }); }).error(function() { @@ -342,17 +364,26 @@ var kimchi = { dataType : 'json' }).done(function(data, textStatus, xhr) { proxy_port = data['display_proxy_port']; + var ticket; + kimchi.setTicketVM(vm, function(data) { + }, function(){ + kimchi.message.error.code('KCHAPI6002E'); + }, true); kimchi.requestJSON({ url : "/vms/" + encodeURIComponent(vm) + "/connect", type : "POST", dataType : "json" }).done(function(data, textStatus, xhr) { + ticket = data['ticket']; + alert(ticket) url = 'https://' + location.hostname + ':' + proxy_port; url += "/console.html?url=spice.html&port=" + proxy_port; url += "&listen=" + location.hostname; url += "&token=" + encodeURIComponent(vm); url += "&kimchi=" + location.port; url += '&encrypt=1'; + kimchi.cookie.remove("ticketVM"); + ticket != null && kimchi.cookie.set("ticketVM", ticket, 100); window.open(url); }); }).error(function() { -- 1.9.0