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
