Frank Kobzik has uploaded a new change for review.

Change subject: frontend: add fields to .vv file
......................................................................

frontend: add fields to .vv file

This patch adds 2 fields (VM rest resource url string and session id) to
the .vv console descriptor for both SPICE and VNC. This will allow the
client to talk to the engine using rest api.

Change-Id: Icdf4e96c5e535472882e9b01a31b56db207e7fd4
Signed-off-by: Frantisek Kobzik <[email protected]>
Bug-Url: https://bugzilla.redhat.com/975730
---
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/AbstractSpice.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/AbstractVnc.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/SpiceNativeImpl.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/VncNativeImpl.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ConsoleModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ISpice.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/IVnc.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SpiceConsoleModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VncConsoleModel.java
9 files changed, 114 insertions(+), 6 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/87/27687/1

diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/AbstractSpice.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/AbstractSpice.java
index 300aceb..df26ef3 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/AbstractSpice.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/AbstractSpice.java
@@ -72,6 +72,9 @@
 
     private final ConsoleUtils consoleUtils = (ConsoleUtils) 
TypeResolver.getInstance().resolve(ConsoleUtils.class);
 
+    private String vmResourceUrl;
+    private String sessionId;
+
     public AbstractSpice() {
         setWANDisableEffects(new ArrayList<WANDisableEffects>());
         setWanOptionsEnabled(false);
@@ -454,4 +457,20 @@
     public void setTicketValiditySeconds(int ticketValiditySeconds) {
         this.ticketValiditySeconds = ticketValiditySeconds;
     }
+
+    public void setSessionId(String sessionId) {
+        this.sessionId = sessionId;
+    }
+
+    public String getSessionId() {
+        return sessionId;
+    }
+
+    public String getVmResourceUrl() {
+        return vmResourceUrl;
+    }
+
+    public void setVmResourceUrl(String vmResourceUrl) {
+        this.vmResourceUrl = vmResourceUrl;
+    }
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/AbstractVnc.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/AbstractVnc.java
index 9fbb42b..38c1f22 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/AbstractVnc.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/AbstractVnc.java
@@ -15,6 +15,8 @@
     private int ticketValiditySeconds;
     private String toggleFullscreenHotKey;
     private String releaseCursorHotKey;
+    private String sessionId;
+    private String vmResourceUrl;
 
     public AbstractVnc() {
         setRemapCtrlAltDelete(true);
@@ -88,4 +90,20 @@
         this.releaseCursorHotKey = releaseCursorHotKey;
     }
 
+
+    public String getVmResourceUrl() {
+        return vmResourceUrl;
+    }
+
+    public void setVmResourceUrl(String vmResourceUrl) {
+        this.vmResourceUrl = vmResourceUrl;
+    }
+
+    public void setSessionId(String sessionId) {
+        this.sessionId = sessionId;
+    }
+
+    public String getSessionId() {
+        return sessionId;
+    }
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/SpiceNativeImpl.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/SpiceNativeImpl.java
index fc7f7bf..46132a0 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/SpiceNativeImpl.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/SpiceNativeImpl.java
@@ -86,6 +86,12 @@
             
configBuilder.append("\nsecure-channels=").append(formatSecureChannels(getSslChanels()));
 //$NON-NLS-1$
         }
 
+        configBuilder.append("\nvm-resource-url=").append(getVmResourceUrl()); 
//$NON-NLS-1$
+
+        if (getSessionId() != null) {
+            configBuilder.append("\nsession-id=").append(getSessionId()); 
//$NON-NLS-1$
+        }
+
         ConsoleModel.makeConsoleConfigRequest("console.vv", 
"application/x-virt-viewer; charset=UTF-8", configBuilder.toString()); 
//$NON-NLS-1$ $NON-NLS-2$
     }
 
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/VncNativeImpl.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/VncNativeImpl.java
index 9d57e6e..4994e60 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/VncNativeImpl.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/VncNativeImpl.java
@@ -29,6 +29,12 @@
             
configBuilder.append("\nsecure-attention=").append(getSecureAttentionMapping());
 //$NON-NLS-1$
         }
 
+        configBuilder.append("\nvm-resource-url=").append(getVmResourceUrl()); 
//$NON-NLS-1$
+
+        if (getSessionId() != null) {
+            configBuilder.append("\nsession-id=").append(getSessionId()); 
//$NON-NLS-1$
+        }
+
         ConsoleModel.makeConsoleConfigRequest("console.vv", 
"application/x-virt-viewer; charset=UTF-8", configBuilder.toString()); 
//$NON-NLS-1$ $NON-NLS-2$
     }
 
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ConsoleModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ConsoleModel.java
index 0858664..9a452ed 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ConsoleModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ConsoleModel.java
@@ -17,7 +17,9 @@
 import org.ovirt.engine.ui.frontend.AsyncQuery;
 import org.ovirt.engine.ui.frontend.Frontend;
 import org.ovirt.engine.ui.frontend.INewAsyncCallback;
+import org.ovirt.engine.ui.frontend.communication.StorageCallback;
 import org.ovirt.engine.ui.frontend.utils.BaseContextPathData;
+import org.ovirt.engine.ui.frontend.utils.FrontendUrlUtils;
 import org.ovirt.engine.ui.uicommonweb.BaseCommandTarget;
 import org.ovirt.engine.ui.uicommonweb.UICommand;
 import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider;
@@ -293,6 +295,17 @@
         return textArea;
     }
 
+    protected String buildVmResourceUrl() {
+        return FrontendUrlUtils.getRootURL() +
+            BaseContextPathData.getInstance().getPath().substring(1) + // chop 
the leading '/'
+            "api/vms/" + //$NON-NLS-1$
+            getEntity().getId().toString();
+    }
+
+    protected void retrieveSessionId(StorageCallback callback) {
+        Frontend.getInstance().retrieveFromHttpSession("RestApiSessionId", 
callback);
+    }
+
     protected String getToggleFullScreenKeys() {
         return (String) 
AsyncDataProvider.getConfigValuePreConverted(ConfigurationValues.ConsoleToggleFullScreenKeys);
     }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ISpice.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ISpice.java
index b15aad3..bd241cb 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ISpice.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ISpice.java
@@ -164,4 +164,9 @@
 
     int getTicketValiditySeconds();
 
+    void setSessionId(String sessionId);
+    String getSessionId();
+    String getVmResourceUrl();
+    void setVmResourceUrl(String vmResourceUrl);
+
 }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/IVnc.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/IVnc.java
index b7716c2..318c857 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/IVnc.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/IVnc.java
@@ -12,6 +12,10 @@
     int getTicketValiditySeconds();
     void setToggleFullscreenHotKey(String toggleFullscreenHotKey);
     void setReleaseCursorHotKey(String releaseCursorHotKey);
+    void setSessionId(String sessionId);
+    String getSessionId();
+    String getVmResourceUrl();
+    void setVmResourceUrl(String vmResourceUrl);
 
     void invokeClient();
 
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SpiceConsoleModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SpiceConsoleModel.java
index f4a8b62..84c36bb 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SpiceConsoleModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SpiceConsoleModel.java
@@ -4,7 +4,6 @@
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
-
 import org.ovirt.engine.core.common.action.ChangeDiskCommandParameters;
 import org.ovirt.engine.core.common.action.RunVmParams;
 import org.ovirt.engine.core.common.action.SetVmTicketParameters;
@@ -34,6 +33,7 @@
 import org.ovirt.engine.ui.frontend.AsyncQuery;
 import org.ovirt.engine.ui.frontend.Frontend;
 import org.ovirt.engine.ui.frontend.INewAsyncCallback;
+import org.ovirt.engine.ui.frontend.communication.StorageCallback;
 import org.ovirt.engine.ui.uicommonweb.BaseCommandTarget;
 import org.ovirt.engine.ui.uicommonweb.ConsoleUtils;
 import org.ovirt.engine.ui.uicommonweb.ILogger;
@@ -177,13 +177,32 @@
                 getspice().setWanOptionsEnabled(false);
             }
 
-            UICommand setVmTicketCommand = new UICommand("setVmCommand", new 
BaseCommandTarget() { //$NON-NLS-1$
+            final UICommand setVmTicketCommand = new UICommand("setVmCommand", 
new BaseCommandTarget() { //$NON-NLS-1$
                 @Override
                 public void executeCommand(UICommand uiCommand) {
                     setVmTicket();
                 }
             });
-            executeCommandWithConsoleSafenessWarning(setVmTicketCommand);
+
+            retrieveSessionId(new StorageCallback() {
+
+                private void executeSetVmTicket() {
+                    
executeCommandWithConsoleSafenessWarning(setVmTicketCommand);
+                }
+
+                @Override
+                public void onSuccess(String result) {
+                    getspice().setSessionId(result);
+                    executeSetVmTicket();
+                }
+
+                @Override
+                public void onFailure(Throwable caught) {
+                    getLogger().warn("Problem when determining session id. 
Continuing anyway."); //$NON-NLS-1$
+                    executeSetVmTicket();
+                }
+            });
+
         }
     }
 
@@ -373,6 +392,7 @@
             caCertificate = (String) returnValues.get(5).getReturnValue();
         }
 
+        getspice().setVmResourceUrl(buildVmResourceUrl());
         getspice().setHost(getEntity().getDisplayIp());
         getspice().setSmartcardEnabled(getEntity().isSmartcardEnabled());
         getspice().setPort((getEntity().getDisplay() == null ? 0 : 
getEntity().getDisplay()));
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VncConsoleModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VncConsoleModel.java
index b58c6f8..8dbf86b 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VncConsoleModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VncConsoleModel.java
@@ -13,6 +13,7 @@
 import org.ovirt.engine.ui.frontend.AsyncQuery;
 import org.ovirt.engine.ui.frontend.Frontend;
 import org.ovirt.engine.ui.frontend.INewAsyncCallback;
+import org.ovirt.engine.ui.frontend.communication.StorageCallback;
 import org.ovirt.engine.ui.uicommonweb.BaseCommandTarget;
 import org.ovirt.engine.ui.uicommonweb.ConsoleUtils;
 import org.ovirt.engine.ui.uicommonweb.TypeResolver;
@@ -97,14 +98,30 @@
         }
         getLogger().debug("VNC console info..."); //$NON-NLS-1$
 
-        UICommand setVmTicketCommand = new UICommand("setVmCommand", new 
BaseCommandTarget() { //$NON-NLS-1$
+        final UICommand setVmTicketCommand = new UICommand("setVmCommand", new 
BaseCommandTarget() { //$NON-NLS-1$
             @Override
             public void executeCommand(UICommand uiCommand) {
                 setVmTicket();
             }
         });
 
-        executeCommandWithConsoleSafenessWarning(setVmTicketCommand);
+        retrieveSessionId(new StorageCallback() { //$NON-NLS-1$
+
+            private void executeSetVmTicket() {
+                executeCommandWithConsoleSafenessWarning(setVmTicketCommand);
+            }
+
+            @Override
+            public void onSuccess(String result) {
+                vncImpl.setSessionId(result);
+                executeSetVmTicket();
+            }
+
+            @Override
+            public void onFailure(Throwable caught) {
+                getLogger().warn("Problem when determining session id. 
Continuing anyway."); //$NON-NLS-1$
+                executeSetVmTicket();
+            }});
     }
 
     @Override
@@ -164,7 +181,7 @@
         vncImpl.setToggleFullscreenHotKey(getToggleFullScreenKeys());
         vncImpl.setReleaseCursorHotKey(getReleaseCursorKeys());
         vncImpl.setTicketValiditySeconds(TICKET_VALIDITY_SECONDS);
-
+        vncImpl.setVmResourceUrl(buildVmResourceUrl());
         vncImpl.invokeClient();
     }
 


-- 
To view, visit http://gerrit.ovirt.org/27687
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Icdf4e96c5e535472882e9b01a31b56db207e7fd4
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Frank Kobzik <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to