[Kimchi-devel] [PATCH 3/4] support ticket in UI.

shaohef at linux.vnet.ibm.com shaohef at linux.vnet.ibm.com
Tue May 20 15:27:18 UTC 2014


From: ShaoHe Feng <shaohef at 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 at linux.vnet.ibm.com>
Signed-off-by: Zhou Zheng Sheng <zhshzhou at 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




More information about the Kimchi-devel mailing list