Frank Kobzik has uploaded a new change for review.

Change subject: frontend: Phase 2: Make console clients use ConsoleOptions
......................................................................

frontend: Phase 2: Make console clients use ConsoleOptions

VNC and SPICE clients now use ConsoleOptions directly. Attributes /
getters / setters in AbstractSpice / Vnc and ISpice / IVnc were cleaned.
Moreover:
 - reduntant events from AbstractSpice were removed
 - defective version checking mechanism was removed from AbstractSpice
 and SpicePluginImpl. Now the plugin version is used only in SPICE
 Active-X plugin where it makes sense.
 - Spice Base URL attribute (for retrieving ActiveX Plugin CAB) is moved
 closer to engine's plugin implementation (ISpicePlugin).
 - cleaned unused 'guestID' attribute in Plugin.
 - cleaned unused attributes 'menu','spiceCabURL' and
 'spiceCabObjClassId' for XPI (Firefox) implementation.

Added ConsoleClient interface which are implemented by SPICE and VNC
clients.

Adjustments in ConsoleOptionsFrontendPersisterImpl (todo cleanup would
be nice).

Change-Id: I5a5b5b323f788bd2882984a2dce183791f72949d
Signed-off-by: Frantisek Kobzik <fkob...@redhat.com>
Bug-Url: https://bugzilla.redhat.com/1128763
---
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/console/ConsoleOptions.java
R 
backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/console/ConsoleOptionsTest.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/presenter/popup/ConsolePopupPresenterWidget.java
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/NoVncImpl.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/SpiceHtml5Impl.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/SpicePluginImpl.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/VncNativeImpl.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/WebClientConsoleInvoker.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/ConsoleOptionsFrontendPersisterImpl.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/ConsolePopupView.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Configurator.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ConsoleClient.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/ISpicePlugin.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
M 
frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
M 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/tab/basic/MainTabBasicDetailsPresenterWidget.java
M 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/uicommon/UserPortalConfigurator.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/uicommon/WebAdminConfigurator.java
25 files changed, 264 insertions(+), 863 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/73/37973/6

diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/console/ConsoleOptions.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/console/ConsoleOptions.java
index 4f2e07d..adb68bb 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/console/ConsoleOptions.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/console/ConsoleOptions.java
@@ -35,14 +35,12 @@
     private String cipherSuite;
     private String hostSubject;
     private String trustStore;
-    private String[] localizedStrings;
     private String menu;
     private boolean noTaskMgrExecution;
     private WanColorDepth wanColorDepth;
     private boolean wanOptionsEnabled;
     private boolean smartcardEnabled = false;
     private String spiceProxy = null;
-    private int ticketValiditySeconds;
     // the user can choose to disable the smartcard even when it is enabled, 
but can not choose to enable it, when it is
     // disabled
     private boolean smartcardEnabledOverridden = false;
@@ -232,14 +230,6 @@
         this.trustStore = trustStore;
     }
 
-    public String[] getLocalizedStrings() {
-        return localizedStrings;
-    }
-
-    public void setLocalizedStrings(String[] localizedStrings) {
-        this.localizedStrings = localizedStrings;
-    }
-
     public String getMenu() {
         return menu;
     }
@@ -298,14 +288,6 @@
 
     public void setSpiceProxy(String spiceProxy) {
         this.spiceProxy = spiceProxy;
-    }
-
-    public int getTicketValiditySeconds() {
-        return ticketValiditySeconds;
-    }
-
-    public void setTicketValiditySeconds(int ticketValiditySeconds) {
-        this.ticketValiditySeconds = ticketValiditySeconds;
     }
 
     /**
diff --git 
a/frontend/webadmin/modules/gwt-common/src/test/java/org/ovirt/engine/ui/common/uicommon/AbstractSpiceTest.java
 
b/backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/console/ConsoleOptionsTest.java
similarity index 66%
rename from 
frontend/webadmin/modules/gwt-common/src/test/java/org/ovirt/engine/ui/common/uicommon/AbstractSpiceTest.java
rename to 
backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/console/ConsoleOptionsTest.java
index 9cfc0ca..1cba6ba 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/test/java/org/ovirt/engine/ui/common/uicommon/AbstractSpiceTest.java
+++ 
b/backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/console/ConsoleOptionsTest.java
@@ -1,29 +1,32 @@
-package org.ovirt.engine.ui.common.uicommon;
+package org.ovirt.engine.core.common.console;
 
 import org.junit.Test;
 
+
 import static org.junit.Assert.assertEquals;
 
-public class AbstractSpiceTest {
+public class ConsoleOptionsTest {
+
     @Test
     public void testAdjustLegacySecureChannels() throws Exception {
         String legacyChannels = 
"smain,sdisplay,sinputs,scursor,splayback,srecord,ssmartcard,susbredir"; 
//$NON-NLS-1$
         String correctChannels = 
"main,display,inputs,cursor,playback,record,smartcard,usbredir";//$NON-NLS-1$
 
-        assertEquals(correctChannels, 
AbstractSpice.adjustLegacySecureChannels(legacyChannels));
+        assertEquals(correctChannels, 
ConsoleOptions.adjustLegacySecureChannels(legacyChannels));
     }
 
     @Test
     public void testAdjustLegacySecureChannelsWithEmptyChannels() throws 
Exception {
         String legacyChannels = "";//$NON-NLS-1$
         String correctChannels = "";//$NON-NLS-1$
-        assertEquals(correctChannels, 
AbstractSpice.adjustLegacySecureChannels(legacyChannels));
+        assertEquals(correctChannels, 
ConsoleOptions.adjustLegacySecureChannels(legacyChannels));
     }
 
     @Test
     public void testAdjustLegacySecureChannelsWithNullChannels() throws 
Exception {
         String legacyChannels = null;
         String correctChannels = null;
-        assertEquals(correctChannels, 
AbstractSpice.adjustLegacySecureChannels(legacyChannels));
+        assertEquals(correctChannels, 
ConsoleOptions.adjustLegacySecureChannels(legacyChannels));
     }
+
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/presenter/popup/ConsolePopupPresenterWidget.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/presenter/popup/ConsolePopupPresenterWidget.java
index 737c841..a21d627 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/presenter/popup/ConsolePopupPresenterWidget.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/presenter/popup/ConsolePopupPresenterWidget.java
@@ -166,10 +166,6 @@
                 getView().edit(model);
             }
         };
-
-        spice.getUsbAutoShareChangedEvent().addListener(viewUpdatingListener);
-        spice.getWANColorDepthChangedEvent().addListener(viewUpdatingListener);
-        
spice.getWANDisableEffectsChangeEvent().addListener(viewUpdatingListener);
     }
 
     private void removeListeners(ConsolePopupModel model) {
@@ -181,10 +177,6 @@
         if (spice == null) {
             return;
         }
-
-        
spice.getUsbAutoShareChangedEvent().removeListener(viewUpdatingListener);
-        
spice.getWANColorDepthChangedEvent().removeListener(viewUpdatingListener);
-        
spice.getWANDisableEffectsChangeEvent().removeListener(viewUpdatingListener);
     }
 
     private void initView(ConsolePopupModel model) {
@@ -214,10 +206,10 @@
 
         ISpice spice = 
model.getVmConsoles().getConsoleModel(SpiceConsoleModel.class).getspice();
         if (spice != null) {
-            if (!spice.isWanOptionsEnabled()) {
+            if (!spice.getOptions().isWanOptionsEnabled()) {
                 getView().selectWanOptionsEnabled(false);
             }
-            spiceProxyUserPreference = 
vmConsoles.getConsoleModel(SpiceConsoleModel.class).getspice().isSpiceProxyEnabled();
+            spiceProxyUserPreference = 
vmConsoles.getConsoleModel(SpiceConsoleModel.class).getspice().getOptions().isSpiceProxyEnabled();
         }
 
         if (!consoleUtils.isBrowserPluginSupported(ConsoleProtocol.SPICE)) {
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 6b8b574..d21c5e6 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
@@ -1,12 +1,7 @@
 package org.ovirt.engine.ui.common.uicommon;
 
-import java.util.Arrays;
-import java.util.List;
-
 import org.ovirt.engine.core.common.businessentities.GraphicsType;
 import org.ovirt.engine.core.common.console.ConsoleOptions;
-import org.ovirt.engine.core.compat.StringHelper;
-import org.ovirt.engine.core.compat.Version;
 import org.ovirt.engine.ui.uicommonweb.models.vms.SpiceConsoleModel;
 import org.ovirt.engine.ui.uicompat.Event;
 import org.ovirt.engine.ui.uicompat.EventArgs;
@@ -15,54 +10,17 @@
 
     protected final ConsoleOptions consoleOptions = new 
ConsoleOptions(GraphicsType.SPICE);
 
-    protected Event<EventArgs> disconnectedEvent = new Event<EventArgs>(
-            SpiceConsoleModel.spiceDisconnectedEventDefinition);
-    protected Event<EventArgs> connectedEvent = new Event<EventArgs>(
-            SpiceConsoleModel.spiceConnectedEventDefinition);
-    protected Event<EventArgs> menuItemSelectedEvent = new Event<EventArgs>(
-            SpiceConsoleModel.spiceMenuItemSelectedEventDefinition);
-    protected Event<EventArgs> usbAutoShareChangedEvent = new Event<EventArgs>(
-            SpiceConsoleModel.usbAutoShareChangedEventDefinition);
-    protected final Event<EventArgs> wanColorDepthChangedEvent = new 
Event<EventArgs>(
-            SpiceConsoleModel.wanColorDepthChangedEventDefinition);
-    protected final Event<EventArgs> wanDisableEffectsChangeEvent = new 
Event<EventArgs>(
-            SpiceConsoleModel.wanDisableEffectsChangeEventDefinition);
+    // long term todo - move these events to plugin impl
+    protected Event<EventArgs> disconnectedEvent = new 
Event<>(SpiceConsoleModel.spiceDisconnectedEventDefinition);
+    protected Event<EventArgs> connectedEvent = new 
Event<>(SpiceConsoleModel.spiceConnectedEventDefinition);
+    protected Event<EventArgs> menuItemSelectedEvent = new 
Event<>(SpiceConsoleModel.spiceMenuItemSelectedEventDefinition);
 
-    protected Version currentVersion = new Version(4, 4);
-    protected Version desiredVersion = new Version(4, 4);
-
-    protected String guestID;
-
-    ClientAgentType cat = new ClientAgentType();
-    protected String spiceBaseURL;
 
     public AbstractSpice() {
     }
 
-    public void setWANDisableEffects(List<ConsoleOptions.WanDisableEffects> 
disableEffects) {
-        this.consoleOptions.setWanDisableEffects(disableEffects);
-        getWANDisableEffectsChangeEvent().raise(this, EventArgs.EMPTY);
-    }
-
-    public void setWANColorDepth(ConsoleOptions.WanColorDepth colorDepth) {
-        this.consoleOptions.setWanColorDepth(colorDepth);
-        getWANColorDepthChangedEvent().raise(this, EventArgs.EMPTY);
-    }
-
-    public List<ConsoleOptions.WanDisableEffects> getWANDisableEffects() {
-        return consoleOptions.getWanDisableEffects();
-    }
-
-    public ConsoleOptions.WanColorDepth getWANColorDepth() {
-        return consoleOptions.getWanColorDepth();
-    }
-
-    public Event<EventArgs> getWANDisableEffectsChangeEvent() {
-        return wanDisableEffectsChangeEvent;
-    }
-
-    public Event<EventArgs> getWANColorDepthChangedEvent() {
-        return wanColorDepthChangedEvent;
+    public ConsoleOptions getOptions() {
+        return consoleOptions;
     }
 
     public Event<EventArgs> getDisconnectedEvent() {
@@ -89,331 +47,4 @@
         this.menuItemSelectedEvent = menuItemSelectedEvent;
     }
 
-    public void setUsbAutoShareChangedEvent(Event<EventArgs> 
usbAutoShareChangedEvent) {
-        this.usbAutoShareChangedEvent = usbAutoShareChangedEvent;
-    }
-
-    public Event<EventArgs> getUsbAutoShareChangedEvent() {
-        return usbAutoShareChangedEvent;
-    }
-
-    public Version getCurrentVersion() {
-        return currentVersion;
-    }
-
-    public void setCurrentVersion(Version currentVersion) {
-        this.currentVersion = currentVersion;
-    }
-
-    // This should be defined by UiCommon
-    public Version getDesiredVersion() {
-        return desiredVersion;
-    }
-
-    public void setDesiredVersion(Version desiredVersion) {
-        this.desiredVersion = desiredVersion;
-    }
-
-    public String getDesiredVersionStr() {
-        return desiredVersion.toString().replace('.', ',');
-    }
-
-    public int getPort() {
-        Integer port = consoleOptions.getPort();
-        return port == null
-                ? 0
-                : port;
-    }
-
-    public void setPort(int port) {
-        this.consoleOptions.setPort(port);
-    }
-
-    public String getHost() {
-        return consoleOptions.getHost();
-    }
-
-    public void setHost(String host) {
-        this.consoleOptions.setHost(host);
-    }
-
-    public boolean isFullScreen() {
-        return consoleOptions.isFullScreen();
-    }
-
-    public void setFullScreen(boolean fullScreen) {
-        this.consoleOptions.setFullScreen(fullScreen);
-    }
-
-    public String getPassword() {
-        return consoleOptions.getTicket();
-    }
-
-    public void setPassword(String password) {
-        this.consoleOptions.setTicket(password);
-    }
-
-    public int getNumberOfMonitors() {
-        return consoleOptions.getNumberOfMonitors();
-    }
-
-    public void setNumberOfMonitors(int numberOfMonitors) {
-        this.consoleOptions.setNumberOfMonitors(numberOfMonitors);
-    }
-
-    public int getUsbListenPort() {
-        return consoleOptions.getUsbListenPort();
-    }
-
-    public void setUsbListenPort(int usbListenPort) {
-        this.consoleOptions.setUsbListenPort(usbListenPort);
-    }
-
-    public boolean isAdminConsole() {
-        return consoleOptions.isAdminConsole();
-    }
-
-    public void setAdminConsole(boolean adminConsole) {
-        this.consoleOptions.setAdminConsole(adminConsole);
-    }
-
-    public String getGuestHostName() {
-        return consoleOptions.getGuestHostName();
-    }
-
-    public void setGuestHostName(String guestHostName) {
-        this.consoleOptions.setGuestHostName(guestHostName);
-    }
-
-    public int getSecurePort() {
-        return consoleOptions.getSecurePort() & 0xffff;
-    }
-
-    public void setSecurePort(int securePort) {
-        this.consoleOptions.setSecurePort(securePort);
-    }
-
-    public String getSslChanels() {
-        return consoleOptions.getSslChanels();
-    }
-
-    public void setSslChanels(String sslChanels) {
-        
this.consoleOptions.setSslChanels(adjustLegacySecureChannels(sslChanels));
-    }
-
-    /**
-     * Reformat secure channels string if they are in legacy ('s'-prefixed) 
format.
-     * @param legacySecureChannels (e.g. "smain,sinput")
-     * @return secure channels in correct format (e.g. "main,input")
-     */
-    static String adjustLegacySecureChannels(String legacySecureChannels) {
-        if (StringHelper.isNullOrEmpty(legacySecureChannels)) {
-            return legacySecureChannels;
-        }
-
-        String secureChannels = legacySecureChannels;
-        List<String> legacyChannels = Arrays.asList(
-                new String[]{"smain", "sdisplay", "sinputs", "scursor", 
"splayback", "srecord", "ssmartcard", "susbredir"}); // $NON-NLS-1$ $NON-NLS-2$ 
$NON-NLS-3$ $NON-NLS-4$ $NON-NLS-5$ $NON-NLS-6$ $NON-NLS-7$ $NON-NLS-8$
-
-        for (String channel : legacyChannels) {
-            secureChannels = secureChannels.replace(channel, 
channel.substring(1));
-        }
-
-        return secureChannels;
-    }
-
-    public String getCipherSuite() {
-        return consoleOptions.getCipherSuite();
-    }
-
-    public void setCipherSuite(String cipherSuite) {
-        this.consoleOptions.setCipherSuite(cipherSuite);
-    }
-
-    public String getHostSubject() {
-        return consoleOptions.getHostSubject();
-    }
-
-    public void setHostSubject(String hostSubject) {
-        this.consoleOptions.setHostSubject(hostSubject);
-    }
-
-    public String getTrustStore() {
-        return consoleOptions.getTrustStore();
-    }
-
-    public void setTrustStore(String trustStore) {
-        this.consoleOptions.setTrustStore(trustStore);
-    }
-
-    public String getTitle() {
-        return consoleOptions.getTitle();
-    }
-
-    public void setTitle(String title) {
-        this.consoleOptions.setTitle(title);
-    }
-
-    public String getToggleFullscreenHotKey() {
-        return consoleOptions.getToggleFullscreenHotKey();
-    }
-
-    public void setToggleFullscreenHotKey(String toggleFullscreenHotKey) {
-        this.consoleOptions.setToggleFullscreenHotKey(toggleFullscreenHotKey);
-    }
-
-    public String getReleaseCursorHotKey() {
-        return consoleOptions.getReleaseCursorHotKey();
-    }
-
-    public void setReleaseCursorHotKey(String releaseCursorHotKey) {
-        this.consoleOptions.setReleaseCursorHotKey(releaseCursorHotKey);
-    }
-
-    public String[] getLocalizedStrings() {
-        return consoleOptions.getLocalizedStrings();
-    }
-
-    public void setLocalizedStrings(String[] localizedStrings) {
-        this.consoleOptions.setLocalizedStrings(localizedStrings);
-    }
-
-    public String getMenu() {
-        return consoleOptions.getMenu();
-    }
-
-    public void setMenu(String menu) {
-        this.consoleOptions.setMenu(menu);
-    }
-
-    public String getGuestID() {
-        return guestID;
-    }
-
-    public void setGuestID(String guestID) {
-        this.guestID = guestID;
-    }
-
-    public boolean getNoTaskMgrExecution() {
-        return consoleOptions.isNoTaskMgrExecution();
-    }
-
-    public void setNoTaskMgrExecution(boolean noTaskMgrExecution) {
-        this.consoleOptions.setNoTaskMgrExecution(noTaskMgrExecution);
-    }
-
-    public boolean isRemapCtrlAltDel() {
-        return consoleOptions.isRemapCtrlAltDelete();
-    }
-
-    public void setRemapCtrlAltDel(boolean remapCtrlAltDelete) {
-        this.consoleOptions.setRemapCtrlAltDelete(remapCtrlAltDelete);
-    }
-
-    public boolean getUsbAutoShare() {
-        return consoleOptions.isUsbAutoShare();
-    }
-
-    public void setUsbAutoShare(boolean usbAutoShare) {
-        this.consoleOptions.setUsbAutoShare(usbAutoShare);
-        getUsbAutoShareChangedEvent().raise(this, EventArgs.EMPTY);
-    }
-
-    public String getUsbFilter() {
-        return consoleOptions.getUsbFilter();
-    }
-
-    public void setUsbFilter(String usbFilter) {
-        consoleOptions.setUsbFilter(usbFilter);
-    }
-
-    public String getSpiceBaseURL() {
-        return spiceBaseURL;
-    }
-
-    public void setSpiceBaseURL(String spiceBaseURL) {
-        this.spiceBaseURL = spiceBaseURL;
-    }
-
-    public boolean passSmartcardOption() {
-        return isSmartcardEnabled() && !isSmartcardEnabledOverridden();
-    }
-
-    public boolean isSmartcardEnabled() {
-        return consoleOptions.isSmartcardEnabled();
-    }
-
-    public void setSmartcardEnabled(boolean smartcardEnabled) {
-        this.consoleOptions.setSmartcardEnabled(smartcardEnabled);
-    }
-
-    protected int colorDepthAsInt() {
-        if (getWANColorDepth() != null) {
-            return getWANColorDepth().asInt();
-        }
-
-        return ConsoleOptions.WanColorDepth.depth16.asInt();
-    }
-
-    public boolean isWanOptionsEnabled() {
-        return consoleOptions.isWanOptionsEnabled();
-    }
-
-    public void setWanOptionsEnabled(boolean wanOptionsEnabled) {
-        this.consoleOptions.setWanOptionsEnabled(wanOptionsEnabled);
-    }
-
-    public void setOverrideEnabledSmartcard(boolean enabled) {
-        this.consoleOptions.setSmartcardEnabledOverridden(enabled);
-    }
-
-    /**
-     * Returns true if the user has choosen to disable the smartcard even it 
is by default enabled
-     */
-    public boolean isSmartcardEnabledOverridden() {
-        return this.consoleOptions.isSmartcardEnabledOverridden();
-    }
-
-    protected String disableEffectsAsString() {
-        StringBuffer disableEffectsBuffer = new StringBuffer("");
-        int countdown = getWANDisableEffects().size();
-        for (ConsoleOptions.WanDisableEffects disabledEffect : 
getWANDisableEffects()) {
-            disableEffectsBuffer.append(disabledEffect.asString());
-
-            if (countdown != 1) {
-                disableEffectsBuffer.append(", "); //$NON-NLS-1$
-            }
-            countdown--;
-        }
-
-        return disableEffectsBuffer.toString();
-    }
-
-    public String getSpiceProxy() {
-        return consoleOptions.getSpiceProxy();
-    }
-
-    public void setSpiceProxy(String spiceProxy) {
-        this.consoleOptions.setSpiceProxy(spiceProxy);
-    }
-
-    public void setSpiceProxyEnabled(boolean enabled) {
-        this.consoleOptions.setSpiceProxyEnabled(enabled);
-    }
-
-    public boolean isSpiceProxyEnabled() {
-        return consoleOptions.isSpiceProxyEnabled();
-    }
-
-    protected String getSecureAttentionMapping() {
-        return ConsoleOptions.SECURE_ATTENTION_MAPPING;
-    }
-
-    public int getTicketValiditySeconds() {
-        return consoleOptions.getTicketValiditySeconds();
-    }
-
-    public void setTicketValiditySeconds(int ticketValiditySeconds) {
-        this.consoleOptions.setTicketValiditySeconds(ticketValiditySeconds);
-    }
 }
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 7e8afaf..8608210 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
@@ -7,73 +7,12 @@
 
     private final ConsoleOptions consoleOptions = new 
ConsoleOptions(GraphicsType.VNC);
 
+    public ConsoleOptions getOptions() {
+        return consoleOptions;
+    }
+
     public AbstractVnc() {
         consoleOptions.setRemapCtrlAltDelete(true);
-    }
-
-    public String getTitle() {
-        return consoleOptions.getTitle();
-    }
-
-    public void setTitle(String title) {
-        consoleOptions.setTitle(title);
-    }
-
-    public String getVncHost() {
-        return consoleOptions.getHost();
-    }
-
-    public String getVncPort() {
-        Integer port = consoleOptions.getPort();
-        return (port == null)
-                ? null
-                : port.toString();
-    }
-
-    public String getTicket() {
-        return consoleOptions.getTicket();
-    }
-
-    public void setVncHost(String vncHost) {
-        consoleOptions.setHost(vncHost);
-    }
-
-    public void setVncPort(String vncPort) {
-        consoleOptions.setPort((vncPort == null)
-                ? null
-                : Integer.parseInt(vncPort));
-    }
-
-    public void setTicket(String ticket) {
-        consoleOptions.setTicket(ticket);
-    }
-
-    public boolean isRemapCtrlAltDelete() {
-        return consoleOptions.isRemapCtrlAltDelete();
-    }
-
-    public void setRemapCtrlAltDelete(boolean remapCtrlAltDelete) {
-        consoleOptions.setRemapCtrlAltDelete(remapCtrlAltDelete);
-    }
-
-    protected String getSecureAttentionMapping() {
-        return ConsoleOptions.SECURE_ATTENTION_MAPPING;
-    }
-
-    public String getToggleFullscreenHotKey() {
-        return consoleOptions.getToggleFullscreenHotKey();
-    }
-
-    public void setToggleFullscreenHotKey(String toggleFullscreenHotKey) {
-        consoleOptions.setToggleFullscreenHotKey(toggleFullscreenHotKey);
-    }
-
-    public String getReleaseCursorHotKey() {
-        return consoleOptions.getReleaseCursorHotKey();
-    }
-
-    public void setReleaseCursorHotKey(String releaseCursorHotKey) {
-        consoleOptions.setReleaseCursorHotKey(releaseCursorHotKey);
     }
 
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/NoVncImpl.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/NoVncImpl.java
index 617f978..24eaaf6 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/NoVncImpl.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/NoVncImpl.java
@@ -13,12 +13,16 @@
 
     public NoVncImpl() {
         this.config = new WebsocketProxyConfig(
-                (String) 
AsyncDataProvider.getInstance().getConfigValuePreConverted(ConfigurationValues.WebSocketProxy),
 getVncHost());
+                (String) 
AsyncDataProvider.getInstance().getConfigValuePreConverted(ConfigurationValues.WebSocketProxy),
+                getOptions().getHost());
     }
 
     @Override
     public void invokeClient() {
-        WebClientConsoleInvoker invoker = new 
WebClientConsoleInvoker(CLIENT_PAGE, config, getVncHost(), getVncPort(), 
getTicket(), false);
+        WebClientConsoleInvoker invoker =
+                new WebClientConsoleInvoker(CLIENT_PAGE, config,
+                        getOptions().getHost(), getOptions().getPort(),
+                        getOptions().getTicket(), false);
         invoker.invokeClient();
     }
 
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/SpiceHtml5Impl.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/SpiceHtml5Impl.java
index c53096b..7e9deb5 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/SpiceHtml5Impl.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/SpiceHtml5Impl.java
@@ -12,16 +12,17 @@
     private final WebsocketProxyConfig config;
 
     public SpiceHtml5Impl() {
-        super();
-
         this.config = new WebsocketProxyConfig(
-                (String) 
AsyncDataProvider.getInstance().getConfigValuePreConverted(ConfigurationValues.WebSocketProxy),
 getHost());
+                (String) 
AsyncDataProvider.getInstance().getConfigValuePreConverted(ConfigurationValues.WebSocketProxy),
+                getOptions().getHost());
     }
 
     @Override
-    public void connect() {
+    public void invokeClient() {
         boolean sslTarget = consoleOptions.getSecurePort() == -1 ? false : 
true;
-        WebClientConsoleInvoker invoker = new 
WebClientConsoleInvoker(CLIENT_PAGE, config, getHost(), 
String.valueOf(sslTarget ? consoleOptions.getSecurePort() : 
consoleOptions.getPort()), getPassword(), sslTarget);
+        int port = sslTarget ? consoleOptions.getSecurePort() : 
consoleOptions.getPort();
+        WebClientConsoleInvoker invoker =
+                new WebClientConsoleInvoker(CLIENT_PAGE, config, 
getOptions().getHost(), port, getOptions().getTicket(), sslTarget);
         invoker.invokeClient();
     }
 
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 8d72378..090e314 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
@@ -1,5 +1,6 @@
 package org.ovirt.engine.ui.common.uicommon;
 
+import org.ovirt.engine.core.common.console.ConsoleOptions;
 import org.ovirt.engine.core.compat.StringHelper;
 import org.ovirt.engine.ui.uicommonweb.models.vms.ConsoleModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.ISpiceNative;
@@ -11,74 +12,75 @@
     }
 
     @Override
-    public void connect() {
+    public void invokeClient() {
+        ConsoleOptions options = getOptions();
         StringBuilder configBuilder = new StringBuilder("[virt-viewer]"); 
//$NON-NLS-1$
 
         int fullscreen = 0;
-        if (isFullScreen()) {
+        if (options.isFullScreen()) {
             fullscreen = 1;
         }
 
         int enableSmartcard = 0;
-        if (isSmartcardEnabled()) {
+        if (options.isSmartcardEnabled()) {
             enableSmartcard = 1;
         }
 
         int usbAutoShare = 0;
-        if (getUsbAutoShare()) {
+        if (options.isUsbAutoShare()) {
             usbAutoShare = 1;
         }
 
         configBuilder.append("\ntype=spice") //$NON-NLS-1$
-            .append("\nhost=").append(getHost()) //$NON-NLS-1$
-            .append("\nport=").append(Integer.toString(getPort())) 
//$NON-NLS-1$
-            .append("\npassword=").append(getPassword()) //$NON-NLS-1$
-            .append("\n# Password is valid for 
").append(getTicketValiditySeconds()).append(" seconds.") 
//$$NON-NLS-1$NON-NLS-2$
-            .append("\ntls-port=").append(getSecurePort()) //$NON-NLS-1$
+            .append("\nhost=").append(options.getHost()) //$NON-NLS-1$
+            .append("\nport=").append(options.getPort()) //$NON-NLS-1$
+            .append("\npassword=").append(options.getTicket())//$NON-NLS-1$
+            .append("\n# Password is valid for 
").append(ConsoleOptions.TICKET_VALIDITY_SECONDS).append(" seconds.") 
//$$NON-NLS-1$NON-NLS-2$
+            .append("\ntls-port=").append(getOptions().getSecurePort()) 
//$NON-NLS-1$
             .append("\nfullscreen=").append(fullscreen) //$NON-NLS-1$
-            .append("\ntitle=").append(getTitle()) //$NON-NLS-1$
+            .append("\ntitle=").append(options.getTitle()) //$NON-NLS-1$
             .append("\nenable-smartcard=").append(enableSmartcard) 
//$NON-NLS-1$
             .append("\nenable-usb-autoshare=").append(usbAutoShare) 
//$NON-NLS-1$
             .append("\ndelete-this-file=1") //$NON-NLS-1$
-            .append("\nusb-filter=").append(getUsbFilter()); //$NON-NLS-1$
+            .append("\nusb-filter=").append(options.getUsbFilter()); 
//$NON-NLS-1$
 
-        if (getCipherSuite() != null) {
-            configBuilder.append("\ntls-ciphers=").append(getCipherSuite()); 
//$NON-NLS-1$
+        if (options.getCipherSuite() != null) {
+            
configBuilder.append("\ntls-ciphers=").append(options.getCipherSuite()); 
//$NON-NLS-1$
         }
 
-        if (!StringHelper.isNullOrEmpty(getHostSubject())) {
-            configBuilder.append("\nhost-subject=").append(getHostSubject()); 
//$NON-NLS-1$
+        if (!StringHelper.isNullOrEmpty(options.getHostSubject())) {
+            
configBuilder.append("\nhost-subject=").append(options.getHostSubject()); 
//$NON-NLS-1$
         }
 
-        if (getTrustStore() != null) {
+        if (options.getTrustStore() != null) {
             //virt-viewer-file doesn't want newlines in ca
-            String trustStore= getTrustStore().replace("\n", "\\n");  
//$NON-NLS-1$ $NON-NLS-2$
+            String trustStore= options.getTrustStore().replace("\n", "\\n");  
//$NON-NLS-1$ $NON-NLS-2$
             configBuilder.append("\nca=").append(trustStore); //$NON-NLS-1$
         }
 
-        if (isWanOptionsEnabled()) {
-            configBuilder.append("\ncolor-depth=").append(colorDepthAsInt()) 
//$NON-NLS-1$
-                
.append("\ndisable-effects=").append(disableEffectsAsString()); //$NON-NLS-1$
+        if (options.isWanOptionsEnabled()) {
+            
configBuilder.append("\ncolor-depth=").append(options.colorDepthAsInt()) 
//$NON-NLS-1$
+                
.append("\ndisable-effects=").append(options.disableEffectsAsString()); 
//$NON-NLS-1$
         }
 
-        if (!StringHelper.isNullOrEmpty(getToggleFullscreenHotKey())) {
-            
configBuilder.append("\ntoggle-fullscreen=").append(getToggleFullscreenHotKey());
 //$NON-NLS-1$
+        if (!StringHelper.isNullOrEmpty(options.getToggleFullscreenHotKey())) {
+            
configBuilder.append("\ntoggle-fullscreen=").append(options.getToggleFullscreenHotKey());
 //$NON-NLS-1$
         }
 
-        if (!StringHelper.isNullOrEmpty(getReleaseCursorHotKey())) {
-            
configBuilder.append("\nrelease-cursor=").append(getReleaseCursorHotKey()); 
//$NON-NLS-1$
+        if (!StringHelper.isNullOrEmpty(options.getReleaseCursorHotKey())) {
+            
configBuilder.append("\nrelease-cursor=").append(options.getReleaseCursorHotKey());
 //$NON-NLS-1$
         }
 
-        if (isRemapCtrlAltDel() && 
!StringHelper.isNullOrEmpty(getSecureAttentionMapping())) {
-            
configBuilder.append("\nsecure-attention=").append(getSecureAttentionMapping());
 //$NON-NLS-1$
+        if (options.isRemapCtrlAltDelete()) {
+            
configBuilder.append("\nsecure-attention=").append(ConsoleOptions.SECURE_ATTENTION_MAPPING);
 //$NON-NLS-1$
         }
 
-        if (!StringHelper.isNullOrEmpty(getSpiceProxy())) {
-            configBuilder.append("\nproxy=").append(getSpiceProxy()); 
//$NON-NLS-1$
+        if (!StringHelper.isNullOrEmpty(options.getSpiceProxy())) {
+            configBuilder.append("\nproxy=").append(options.getSpiceProxy()); 
//$NON-NLS-1$
         }
 
-        if (!StringHelper.isNullOrEmpty(getSslChanels())) {
-            
configBuilder.append("\nsecure-channels=").append(formatSecureChannels(getSslChanels()));
 //$NON-NLS-1$
+        if (!StringHelper.isNullOrEmpty(options.getSslChanels())) {
+            
configBuilder.append("\nsecure-channels=").append(formatSecureChannels(getOptions().getSslChanels()));
 //$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/SpicePluginImpl.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/SpicePluginImpl.java
index 5894b11..d7c339c 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/SpicePluginImpl.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/SpicePluginImpl.java
@@ -4,19 +4,26 @@
 import java.util.List;
 import java.util.logging.Logger;
 
+import org.ovirt.engine.core.common.console.ConsoleOptions;
 import org.ovirt.engine.core.compat.StringHelper;
+import org.ovirt.engine.core.compat.Version;
 import org.ovirt.engine.ui.uicommonweb.Configurator;
 import org.ovirt.engine.ui.uicommonweb.ConsoleUtils;
 import org.ovirt.engine.ui.uicommonweb.TypeResolver;
 import org.ovirt.engine.ui.uicommonweb.models.vms.ISpicePlugin;
 
 public class SpicePluginImpl extends AbstractSpice implements ISpicePlugin {
+
+    protected Version pluginVersion = new Version(4, 4);
+    protected String spiceBaseURL;
+
     private static final Logger logger = 
Logger.getLogger(SpicePluginImpl.class.getName());
     private final Configurator configurator = (Configurator) 
TypeResolver.getInstance().resolve(Configurator.class);
     private final ConsoleUtils cu = (ConsoleUtils) 
TypeResolver.getInstance().resolve(ConsoleUtils.class);
+    private final ClientAgentType cat = new ClientAgentType();
 
     @Override
-    public void connect() {
+    public void invokeClient() {
         logger.warning("Connecting via spice..."); //$NON-NLS-1$
 
         if (configurator.isClientLinuxFirefox()) {
@@ -49,6 +56,13 @@
         }
     }
 
+    private String getPortAsString() {
+        Integer port = getOptions().getPort();
+        return (port == null)
+                ? null
+                : port.toString();
+    }
+
     public String getHotKeysAsString() {
         List<String> hotKeysList = getHotKeysAsList();
 
@@ -67,17 +81,18 @@
 
     private List<String> getHotKeysAsList() {
         List<String> result = new LinkedList<String>();
+        ConsoleOptions options = getOptions();
 
-        if (!StringHelper.isNullOrEmpty(getReleaseCursorHotKey())) {
-            result.add("release-cursor=" + getReleaseCursorHotKey()); // 
$NON-NLS-1$
+        if (!StringHelper.isNullOrEmpty(options.getReleaseCursorHotKey())) {
+            result.add("release-cursor=" + options.getReleaseCursorHotKey()); 
// $NON-NLS-1$
         }
 
-        if (!StringHelper.isNullOrEmpty(getToggleFullscreenHotKey())) {
-            result.add("toggle-fullscreen=" + getToggleFullscreenHotKey()); // 
$NON-NLS-1$
+        if (!StringHelper.isNullOrEmpty(options.getToggleFullscreenHotKey())) {
+            result.add("toggle-fullscreen=" + 
options.getToggleFullscreenHotKey()); // $NON-NLS-1$
         }
 
-        if (isRemapCtrlAltDel() && 
!StringHelper.isNullOrEmpty(getSecureAttentionMapping())) {
-            result.add("secure-attention=" + getSecureAttentionMapping()); // 
$NON-NLS-1$
+        if (options.isRemapCtrlAltDelete()) {
+            result.add("secure-attention=" + 
ConsoleOptions.SECURE_ATTENTION_MAPPING); // $NON-NLS-1$
         }
 
         return result;
@@ -119,41 +134,38 @@
                                                return;
                                                }
 
-                                               var hostIp = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getHost()();
-                                               var port = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getPort()();
-                                               var fullScreen = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::isFullScreen()();
-                                               var password = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getPassword()();
-                                               var numberOfMonitors = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getNumberOfMonitors()();
-                                               var usbListenPort = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getUsbListenPort()();
-                                               var adminConsole = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::isAdminConsole()();
-                                               var guestHostName = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getGuestHostName()();
-                                               var securePort = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getSecurePort()();
-                                               var sslChanels = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getSslChanels()();
-                                               var cipherSuite = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getCipherSuite()();
-                                               var hostSubject = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getHostSubject()();
-                                               var trustStore = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getTrustStore()();
-                                               var title = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getTitle()();
+                                               var options = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getOptions()();
+
+                                               var hostIp = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::getHost()();
+                                               var port = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getPortAsString()();
+                                               var fullScreen = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::isFullScreen()();
+                                               var password = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::getTicket()();
+                                               var numberOfMonitors = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::getNumberOfMonitors()();
+                                               var usbListenPort = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::getUsbListenPort()();
+                                               var adminConsole = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::isAdminConsole()();
+                                               var guestHostName = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::getGuestHostName()();
+                                               var securePort = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::getSecurePort()();
+                                               var sslChanels = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::getSslChanels()();
+                                               var cipherSuite = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::getCipherSuite()();
+                                               var hostSubject = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::getHostSubject()();
+                                               var trustStore = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::getTrustStore()();
+                                               var title = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::getTitle()();
                                                var hotKey = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getHotKeysAsString()();
-                                               var menu = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getMenu()();
-                                               var guestID = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getGuestID()();
-                                               var version = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getCurrentVersion()();
-                                               var spiceCabURL = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getSpiceCabURL()();
-                                               var spiceCabOjectClassId = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getSpiceObjectClassId()();
                                                var id = "SpiceX_" + 
guestHostName;
-                                               var noTaskMgrExecution = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getNoTaskMgrExecution()();
-                                               var usbAutoShare = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getUsbAutoShare()();
-                                               var usbFilter = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getUsbFilter()();
+                                               var noTaskMgrExecution = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::isNoTaskMgrExecution()();
+                                               var usbAutoShare = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::isUsbAutoShare()();
+                                               var usbFilter = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::getUsbFilter()();
                                                var disconnectedEvent = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getDisconnectedEvent()();
                                                var connectedEvent = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getConnectedEvent()();
-                                               var wanOptionsEnabled = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::isWanOptionsEnabled()();
+                                               var wanOptionsEnabled = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::isWanOptionsEnabled()();
                                                // the !! is there to convert 
the value to boolean because it is returned as int
-                                               var smartcardEnabled =  
!!th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::passSmartcardOption()();
-                                               var colorDepth = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::colorDepthAsInt()();
-                                               var disableEffects = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::disableEffectsAsString()();
-                                               var spiceProxy = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getSpiceProxy()();
+                                               var smartcardEnabled =  
!!optio...@org.ovirt.engine.core.common.console.ConsoleOptions::passSmartcardOption()();
+                                               var colorDepth = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::colorDepthAsInt()();
+                                               var disableEffects = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::disableEffectsAsString()();
+                                               var spiceProxy = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::getSpiceProxy()();
                                                var model = this;
 
-                                               //alert("Smartcard 
["+smartcardEnabled+"] disableEffects ["+disableEffects+"], wanOptionsEnabled 
["+wanOptionsEnabled+"], colorDepth ["+colorDepth+"], Host IP ["+hostIp+"], 
port ["+port+"], fullScreen ["+fullScreen+"], password ["+password+"], 
numberOfMonitors ["+numberOfMonitors+"], Usb Listen Port ["+usbListenPort+"], 
Admin Console ["+adminConsole+"], Guest HostName ["+guestHostName+"], Secure 
Port ["+securePort+"], Ssl Chanels ["+sslChanels+"], cipherSuite 
["+cipherSuite+"], Host Subject ["+hostSubject+"], Title [" + title+"], Hot Key 
["+hotKey+"], Menu ["+menu+"], GuestID [" + guestID+"], version ["+version+"]");
+                                               //alert("Smartcard 
["+smartcardEnabled+"] disableEffects ["+disableEffects+"], wanOptionsEnabled 
["+wanOptionsEnabled+"], colorDepth ["+colorDepth+"], Host IP ["+hostIp+"], 
port ["+port+"], fullScreen ["+fullScreen+"], password ["+password+"], 
numberOfMonitors ["+numberOfMonitors+"], Usb Listen Port ["+usbListenPort+"], 
Admin Console ["+adminConsole+"], Guest HostName ["+guestHostName+"], Secure 
Port ["+securePort+"], Ssl Chanels ["+sslChanels+"], cipherSuite 
["+cipherSuite+"], Host Subject ["+hostSubject+"], Title [" + title+"], Hot Key 
["+hotKey+"]);
                                                
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::loadXpi(Ljava/lang/String;)(id);
                                                var client = 
document.getElementById(id);
                                                client.hostIP = hostIp;
@@ -274,43 +286,43 @@
                                                            
object.addEventListener(eventName, callbackFn, false);
                                                        }
                                                    }
+                                                   var options = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getOptions()();
 
-                                                   var hostIp = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getHost()();
-                                                   var port = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getPort()();
-                                                   var fullScreen = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::isFullScreen()();
-                                                   var password = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getPassword()();
-                                                   var numberOfMonitors = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getNumberOfMonitors()();
-                                                   var usbListenPort = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getUsbListenPort()();
-                                                   var adminConsole = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::isAdminConsole()();
-                                                   var guestHostName = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getGuestHostName()();
-                                                   var securePort = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getSecurePort()();
-                                                   var sslChanels = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getSslChanels()();
-                                                   var cipherSuite = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getCipherSuite()();
-                                                   var hostSubject = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getHostSubject()();
-                                                   var trustStore = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getTrustStore()();
-                                                   var title = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getTitle()();
+                                                   var hostIp = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::getHost()();
+                                                   var port = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getPortAsString()();
+                                                   var fullScreen = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::isFullScreen()();
+                                                   var password = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::getTicket()()();
+                                                   var numberOfMonitors = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::getNumberOfMonitors()();
+                                                   var usbListenPort = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::getUsbListenPort()();
+                                                   var adminConsole = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::isAdminConsole()();
+                                                   var guestHostName = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::getGuestHostName()();
+                                                   var securePort = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::getSecurePort()();
+                                                   var sslChanels = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::getSslChanels()();
+                                                   var cipherSuite = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::getCipherSuite()();
+                                                   var hostSubject = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::getHostSubject()();
+                                                   var trustStore = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::getTrustStore()();
+                                                   var title = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::getTitle()();
                                                    var hotKey = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getHotKeysAsString()();
-                                                   var menu = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getMenu()();
-                                                   var guestID = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getGuestID()();
-                                                   var version = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getDesiredVersionStr()();
+                                                   var menu = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::getMenu()();
+                                                   var version = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getPluginVersionStr()();
                                                    var spiceCabURL = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getSpiceCabURL()();
                                                    var spiceCabOjectClassId = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getSpiceObjectClassId()();
-                                                   var noTaskMgrExecution = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getNoTaskMgrExecution()();
-                                                   var usbAutoShare = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getUsbAutoShare()();
-                                                   var usbFilter = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getUsbFilter()();
+                                                   var noTaskMgrExecution = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::isNoTaskMgrExecution()();
+                                                   var usbAutoShare = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::isUsbAutoShare()();
+                                                   var usbFilter = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::getUsbFilter()();
                                                    var disconnectedEvent = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getDisconnectedEvent()();
                                                    var menuItemSelectedEvent = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getMenuItemSelectedEvent()();
                                                    var connectedEvent = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getConnectedEvent()();
-                                                   var wanOptionsEnabled = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::isWanOptionsEnabled()();
+                                                   var wanOptionsEnabled = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::isWanOptionsEnabled()();
                                                    // the !! is there to 
convert the value to boolean because it is returned as int
-                                                   var smartcardEnabled =  
!!th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::passSmartcardOption()();
-                                                   var colorDepth = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::colorDepthAsInt()();
-                                                   var disableEffects = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::disableEffectsAsString()();
-                                                   var spiceProxy = 
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::getSpiceProxy()();
+                                                   var smartcardEnabled =  
!!optio...@org.ovirt.engine.core.common.console.ConsoleOptions::passSmartcardOption()();
+                                                   var colorDepth = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::colorDepthAsInt()();
+                                                   var disableEffects = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::disableEffectsAsString()();
+                                                   var spiceProxy = 
optio...@org.ovirt.engine.core.common.console.ConsoleOptions::getSpiceProxy()();
                                                    var codebase = spiceCabURL 
+ "#version=" + version;
                                                    var model = this;
                                                    var id = "SpiceX_" + 
guestHostName;
-                                                   //alert("Host IP 
["+hostIp+"], port ["+port+"], fullScreen ["+fullScreen+"], password 
["+password+"], numberOfMonitors ["+numberOfMonitors+"], Usb Listen Port 
["+usbListenPort+"], Admin Console ["+adminConsole+"], Guest HostName 
["+guestHostName+"], Secure Port ["+securePort+"], Ssl Chanels 
["+sslChanels+"], cipherSuite ["+cipherSuite+"], Host Subject 
["+hostSubject+"], Title [" + title+"], Hot Key ["+hotKey+"], Menu ["+menu+"], 
GuestID [" + guestID+"], version ["+version+"]");
+                                                   //alert("Host IP 
["+hostIp+"], port ["+port+"], fullScreen ["+fullScreen+"], password 
["+password+"], numberOfMonitors ["+numberOfMonitors+"], Usb Listen Port 
["+usbListenPort+"], Admin Console ["+adminConsole+"], Guest HostName 
["+guestHostName+"], Secure Port ["+securePort+"], Ssl Chanels 
["+sslChanels+"], cipherSuite ["+cipherSuite+"], Host Subject 
["+hostSubject+"], Title [" + title+"], Hot Key ["+hotKey+"], Menu ["+menu+"], 
version ["+version+"]");
                                                    //alert("Trust Store 
["+trustStore+"]");
 
                                                    
th...@org.ovirt.engine.ui.common.uicommon.SpicePluginImpl::loadActiveX(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)(id,codebase,spiceCabOjectClassId);
@@ -393,4 +405,20 @@
                                                    }
                                                    }-*/;
 
+    public void setPluginVersion(Version pluginVersion) {
+        this.pluginVersion = pluginVersion;
+    }
+
+    private String getPluginVersionStr() {
+        return pluginVersion.toString().replace('.', ',');
+    }
+
+    public String getSpiceBaseURL() {
+        return spiceBaseURL;
+    }
+
+    public void setSpiceBaseURL(String spiceBaseURL) {
+        this.spiceBaseURL = spiceBaseURL;
+    }
+
 }
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 bb47bc9..70e6741 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
@@ -9,26 +9,28 @@
 
     @Override
     public void invokeClient() {
+        ConsoleOptions options = getOptions();
         StringBuilder configBuilder = new StringBuilder("[virt-viewer]"); 
//$NON-NLS-1$
         configBuilder.append("\ntype=vnc") //$NON-NLS-1$
-                .append("\nhost=").append(getVncHost()) //$NON-NLS-1$
-                .append("\nport=").append(getVncPort()) //$NON-NLS-1$
-                .append("\npassword=").append(getTicket()) //$NON-NLS-1$
+                .append("\nhost=").append(options.getHost()) //$NON-NLS-1$
+                .append("\nport=").append(options.getPort()) //$NON-NLS-1$
+                .append("\npassword=").append(options.getTicket()) 
//$NON-NLS-1$
                 .append("\n# Password is valid for ") //$NON-NLS-1$
                 .append(ConsoleOptions.TICKET_VALIDITY_SECONDS).append(" 
seconds.") //$NON-NLS-1$
                 .append("\ndelete-this-file=1") //$NON-NLS-1$
-                .append("\ntitle=").append(getTitle()); //$NON-NLS-1$
+                .append("\ntitle=").append(options.getTitle()); //$NON-NLS-1$
 
-        if (!StringHelper.isNullOrEmpty(getToggleFullscreenHotKey())) {
-            
configBuilder.append("\ntoggle-fullscreen=").append(getToggleFullscreenHotKey());
 //$NON-NLS-1$
+        if (!StringHelper.isNullOrEmpty(options.getToggleFullscreenHotKey())) {
+            
configBuilder.append("\ntoggle-fullscreen=").append(options.getToggleFullscreenHotKey());
 //$NON-NLS-1$
         }
 
-        if (!StringHelper.isNullOrEmpty(getReleaseCursorHotKey())) {
-            
configBuilder.append("\nrelease-cursor=").append(getReleaseCursorHotKey()); 
//$NON-NLS-1$
+        String releaseCursorHotKey = options.getReleaseCursorHotKey();
+        if (!StringHelper.isNullOrEmpty(releaseCursorHotKey)) {
+            
configBuilder.append("\nrelease-cursor=").append(releaseCursorHotKey); 
//$NON-NLS-1$
         }
 
-        if (isRemapCtrlAltDelete() && 
!StringHelper.isNullOrEmpty(getSecureAttentionMapping())) {
-            
configBuilder.append("\nsecure-attention=").append(getSecureAttentionMapping());
 //$NON-NLS-1$
+        if (options.isRemapCtrlAltDelete()) {
+            
configBuilder.append("\nsecure-attention=").append(ConsoleOptions.SECURE_ATTENTION_MAPPING);
 //$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/WebClientConsoleInvoker.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/WebClientConsoleInvoker.java
index cbf45c5..896abaf 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/WebClientConsoleInvoker.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/WebClientConsoleInvoker.java
@@ -21,13 +21,13 @@
     private final String host;
     private final String port;
 
-    public WebClientConsoleInvoker(String clientPage, WebsocketProxyConfig 
proxyConfig, String host, String port, String password, boolean useSsl) {
+    public WebClientConsoleInvoker(String clientPage, WebsocketProxyConfig 
proxyConfig, String host, Integer port, String password, boolean useSsl) {
         this.clientPage = clientPage;
         this.proxyConfig = proxyConfig;
         this.host = host;
-        this.port = port;
         this.password = password;
         this.useSsl = useSsl;
+        this.port = (port == null) ? null : port.toString();
     }
 
     public void invokeClient() {
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/ConsoleOptionsFrontendPersisterImpl.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/ConsoleOptionsFrontendPersisterImpl.java
index 83a038d..facdbf7 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/ConsoleOptionsFrontendPersisterImpl.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/ConsoleOptionsFrontendPersisterImpl.java
@@ -126,7 +126,7 @@
         try {
             
vmConsoles.getConsoleModel(VncConsoleModel.class).setVncImplementation(VncConsoleModel.ClientConsoleMode
                     
.valueOf(clientStorage.getLocalItem(keyMaker.make(VNC_CLIENT_MODE))));
-            
asVnc(vmConsoles).setRemapCtrlAltDelete(readBool(keyMaker.make(REMAP_CAD_VNC)));
+            
asVnc(vmConsoles).getOptions().setRemapCtrlAltDelete(readBool(keyMaker.make(REMAP_CAD_VNC)));
         } catch (Exception e) {
             logger.log(Level.WARNING, "Failed loading VNC data. Exception 
message: " + e.getMessage()); //$NON-NLS-1$
         }
@@ -139,19 +139,19 @@
         clientStorage.setLocalItem(keyMaker.make(SPICE_CLIENT_MODE),
                 consoleModel.getClientConsoleMode().toString());
 
-        storeBool(keyMaker.make(OPEN_IN_FULL_SCREEN), spice.isFullScreen());
-        storeBool(keyMaker.make(SMARTCARD_ENABLED_OVERRIDDEN), 
spice.isSmartcardEnabledOverridden());
-        storeBool(keyMaker.make(WAN_OPTIONS), spice.isWanOptionsEnabled());
-        storeBool(keyMaker.make(USB_AUTOSHARE), spice.getUsbAutoShare());
-        storeBool(keyMaker.make(SPICE_PROXY_ENABLED), 
spice.isSpiceProxyEnabled());
-        storeBool(keyMaker.make(REMAP_CAD_SPICE), spice.isRemapCtrlAltDel());
+        storeBool(keyMaker.make(OPEN_IN_FULL_SCREEN), 
spice.getOptions().isFullScreen());
+        storeBool(keyMaker.make(SMARTCARD_ENABLED_OVERRIDDEN), 
spice.getOptions().isSmartcardEnabledOverridden());
+        storeBool(keyMaker.make(WAN_OPTIONS), 
spice.getOptions().isWanOptionsEnabled());
+        storeBool(keyMaker.make(USB_AUTOSHARE), 
spice.getOptions().isUsbAutoShare());
+        storeBool(keyMaker.make(SPICE_PROXY_ENABLED), 
spice.getOptions().isSpiceProxyEnabled());
+        storeBool(keyMaker.make(REMAP_CAD_SPICE), 
spice.getOptions().isRemapCtrlAltDelete());
     }
 
     private void storeVncData(VmConsoles vmConsoles, KeyMaker keyMaker) {
         VncConsoleModel consoleModel = 
vmConsoles.getConsoleModel(VncConsoleModel.class);
         if (consoleModel != null) {
             clientStorage.setLocalItem(keyMaker.make(VNC_CLIENT_MODE), 
consoleModel.getClientConsoleMode().toString());
-            storeBool(keyMaker.make(REMAP_CAD_VNC), 
consoleModel.getVncImpl().isRemapCtrlAltDelete());
+            storeBool(keyMaker.make(REMAP_CAD_VNC), 
consoleModel.getVncImpl().getOptions().isRemapCtrlAltDelete());
         }
     }
 
@@ -183,17 +183,17 @@
 
         ISpice spice = asSpice(vmConsoles);
         if 
(vmConsoles.getConsoleModel(SpiceConsoleModel.class).isWanOptionsAvailableForMyVm())
 {
-            spice.setWanOptionsEnabled(readBool(keyMaker.make(WAN_OPTIONS)));
+            
spice.getOptions().setWanOptionsEnabled(readBool(keyMaker.make(WAN_OPTIONS)));
         }
 
         if (consoleUtils.isSpiceProxyDefined(vmConsoles.getVm())) {
-            
spice.setSpiceProxyEnabled(readBool(keyMaker.make(SPICE_PROXY_ENABLED)));
+            
spice.getOptions().setSpiceProxyEnabled(readBool(keyMaker.make(SPICE_PROXY_ENABLED)));
         }
 
-        spice.setFullScreen(readBool(keyMaker.make(OPEN_IN_FULL_SCREEN)));
-        
spice.setOverrideEnabledSmartcard(readBool(keyMaker.make(SMARTCARD_ENABLED_OVERRIDDEN)));
-        spice.setUsbAutoShare(readBool(keyMaker.make(USB_AUTOSHARE)));
-        spice.setRemapCtrlAltDel(readBool(keyMaker.make(REMAP_CAD_SPICE)));
+        
spice.getOptions().setFullScreen(readBool(keyMaker.make(OPEN_IN_FULL_SCREEN)));
+        
spice.getOptions().setSmartcardEnabledOverridden(readBool(keyMaker.make(SMARTCARD_ENABLED_OVERRIDDEN)));
+        
spice.getOptions().setUsbAutoShare(readBool(keyMaker.make(USB_AUTOSHARE)));
+        
spice.getOptions().setRemapCtrlAltDelete(readBool(keyMaker.make(REMAP_CAD_SPICE)));
     }
 
     protected ISpice asSpice(VmConsoles vmConsoles) {
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/ConsolePopupView.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/ConsolePopupView.java
index df4508f..4e8fc66 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/ConsolePopupView.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/ConsolePopupView.java
@@ -213,12 +213,12 @@
 
             @Override
             protected void updateModel(ISpice spice, boolean value) {
-                spice.setOverrideEnabledSmartcard(value);
+                spice.getOptions().setSmartcardEnabledOverridden(value);
             }
 
             @Override
             protected boolean extractBoolean(ISpice spice) {
-                return spice.isSmartcardEnabledOverridden();
+                return spice.getOptions().isSmartcardEnabledOverridden();
             }
 
         });
@@ -228,12 +228,12 @@
 
             @Override
             protected void updateModel(ISpice spice, boolean value) {
-                spice.setWanOptionsEnabled(value);
+                spice.getOptions().setWanOptionsEnabled(value);
             }
 
             @Override
             protected boolean extractBoolean(ISpice spice) {
-                return spice.isWanOptionsEnabled();
+                return spice.getOptions().isWanOptionsEnabled();
             }
 
         });
@@ -242,12 +242,12 @@
         remapCtrlAltDeleteSpice = new 
EntityModelValueCheckBoxEditor<ConsoleModel>(Align.RIGHT, new SpiceRenderer() {
             @Override
             protected void updateModel(ISpice spice, boolean value) {
-                spice.setRemapCtrlAltDel(value);
+                spice.getOptions().setRemapCtrlAltDelete(value);
             }
 
             @Override
             protected boolean extractBoolean(ISpice spice) {
-                return spice.isRemapCtrlAltDel();
+                return spice.getOptions().isRemapCtrlAltDelete();
             }
 
         });
@@ -255,12 +255,12 @@
         remapCtrlAltDeleteVnc = new 
EntityModelValueCheckBoxEditor<ConsoleModel>(Align.RIGHT, new VncRenderer() {
             @Override
             protected void updateModel(IVnc vnc, boolean value) {
-                vnc.setRemapCtrlAltDelete(value);
+                vnc.getOptions().setRemapCtrlAltDelete(value);
             }
 
             @Override
             protected boolean extractBoolean(IVnc vnc) {
-                return vnc.isRemapCtrlAltDelete();
+                return vnc.getOptions().isRemapCtrlAltDelete();
             }
         });
 
@@ -268,12 +268,12 @@
 
             @Override
             protected void updateModel(ISpice spice, boolean value) {
-                spice.setUsbAutoShare(value);
+                spice.getOptions().setUsbAutoShare(value);
             }
 
             @Override
             protected boolean extractBoolean(ISpice spice) {
-                return spice.getUsbAutoShare();
+                return spice.getOptions().isUsbAutoShare();
             }
         });
         enableUsbAutoshare.setLabel(constants.usbAutoshare());
@@ -282,12 +282,12 @@
 
             @Override
             protected void updateModel(ISpice spice, boolean value) {
-                spice.setFullScreen(value);
+                spice.getOptions().setFullScreen(value);
             }
 
             @Override
             protected boolean extractBoolean(ISpice spice) {
-                return spice.isFullScreen();
+                return spice.getOptions().isFullScreen();
             }
         });
         openInFullScreen.setLabel(constants.openInFullScreen());
@@ -296,12 +296,12 @@
 
             @Override
             protected void updateModel(ISpice spice, boolean value) {
-                spice.setSpiceProxyEnabled(value);
+                spice.getOptions().setSpiceProxyEnabled(value);
             }
 
             @Override
             protected boolean extractBoolean(ISpice spice) {
-                return spice.isSpiceProxyEnabled();
+                return spice.getOptions().isSpiceProxyEnabled();
             }
         });
         enableSpiceProxy.setLabel(constants.enableSpiceProxy());
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Configurator.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Configurator.java
index 9454903..8dd2ee7 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Configurator.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Configurator.java
@@ -8,6 +8,7 @@
 import org.ovirt.engine.ui.frontend.utils.FrontendUrlUtils;
 import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider;
 import org.ovirt.engine.ui.uicommonweb.models.vms.ISpice;
+import org.ovirt.engine.ui.uicommonweb.models.vms.ISpicePlugin;
 import org.ovirt.engine.ui.uicompat.Event;
 import org.ovirt.engine.ui.uicompat.EventArgs;
 
@@ -263,12 +264,14 @@
     }
 
     public void configure(ISpice spice) {
-        spice.setDesiredVersion(getSpiceVersion());
-        spice.setCurrentVersion(getSpiceVersion());
-        spice.setAdminConsole(getSpiceAdminConsole());
-        spice.setFullScreen(getSpiceFullScreen());
-        spice.setSpiceBaseURL(getSpiceBaseURL());
-        spice.setUsbFilter(getUsbFilter());
+        if (spice instanceof ISpicePlugin) {
+            ((ISpicePlugin) spice).setPluginVersion(getSpiceVersion());
+            ((ISpicePlugin) spice).setSpiceBaseURL(getSpiceBaseURL());
+        }
+
+        spice.getOptions().setAdminConsole(getSpiceAdminConsole());
+        spice.getOptions().setFullScreen(getSpiceFullScreen());
+        spice.getOptions().setUsbFilter(getUsbFilter());
         updateSpiceUsbAutoShare(spice);
 
         if (!isInitialized) {
@@ -293,7 +296,7 @@
                                                                             
new INewAsyncCallback() {
                                                                                
 @Override
                                                                                
 public void onSuccess(Object target, Object returnValue) {
-                                                                               
     spice.setUsbAutoShare((Boolean) returnValue);
+                                                                               
     spice.getOptions().setUsbAutoShare((Boolean) returnValue);
                                                                                
 }
                                                                             
}));
     }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ConsoleClient.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ConsoleClient.java
new file mode 100644
index 0000000..8e1fe40
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ConsoleClient.java
@@ -0,0 +1,8 @@
+package org.ovirt.engine.ui.uicommonweb.models.vms;
+
+import org.ovirt.engine.core.common.console.ConsoleOptions;
+
+public interface ConsoleClient {
+    ConsoleOptions getOptions();
+    void invokeClient();
+}
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 156e8d3..24a6c0b 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
@@ -7,8 +7,6 @@
 import com.google.gwt.user.client.ui.FormPanel.SubmitCompleteHandler;
 import com.google.gwt.user.client.ui.RootPanel;
 import com.google.gwt.user.client.ui.TextArea;
-import org.ovirt.engine.core.common.businessentities.GraphicsInfo;
-import org.ovirt.engine.core.common.businessentities.GraphicsType;
 import org.ovirt.engine.core.common.businessentities.VM;
 import org.ovirt.engine.core.common.businessentities.VMStatus;
 import org.ovirt.engine.core.common.queries.ConfigurationValues;
@@ -35,8 +33,6 @@
 public abstract class ConsoleModel extends EntityModel<VM> {
     public static final String GET_ATTACHMENT_SERVLET_URL = 
BaseContextPathData.getInstance().getPath()
             + "services/attachment/"; //$NON-NLS-1$
-
-    protected static final int TICKET_VALIDITY_SECONDS = 120;
 
     private static String EJECT_LABEL;
 
@@ -319,11 +315,4 @@
         return getEntity().getName() + ":%d" + releaseCursorMsg; //$NON-NLS-1$
     }
 
-    protected Integer extractDisplayPort(GraphicsType graphicsType) {
-        GraphicsInfo graphicsInfo = 
getEntity().getGraphicsInfos().get(graphicsType);
-        if (graphicsInfo != null && graphicsInfo.getPort() != null) {
-            return graphicsInfo.getPort();
-        }
-        return 0;
-    }
 }
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 a175a76..870bec0 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
@@ -1,164 +1,12 @@
 package org.ovirt.engine.ui.uicommonweb.models.vms;
 
-import java.util.List;
-
-import org.ovirt.engine.core.common.console.ConsoleOptions.WanColorDepth;
-import org.ovirt.engine.core.common.console.ConsoleOptions.WanDisableEffects;
-import org.ovirt.engine.core.compat.Version;
 import org.ovirt.engine.ui.uicompat.Event;
 import org.ovirt.engine.ui.uicompat.EventArgs;
 
-/**
- * Represents an implementor of a Spice. That way we have a bridge between 
Console model and concrete Spice accessor. In
- * case of WPF there will be direct Spice ActiveX instantiation, while Web 
implementor of Spice will generate
- * corresponding HTML.
- */
-public interface ISpice {
+public interface ISpice extends ConsoleClient {
 
     Event<EventArgs> getDisconnectedEvent();
-
     Event<EventArgs> getConnectedEvent();
-
     Event<EventArgs> getMenuItemSelectedEvent();
-
-    Event<EventArgs> getUsbAutoShareChangedEvent();
-
-    Event<EventArgs> getWANDisableEffectsChangeEvent();
-
-    Event<EventArgs> getWANColorDepthChangedEvent();
-
-    Version getCurrentVersion();
-
-    Version getDesiredVersion();
-
-    void setDesiredVersion(Version value);
-
-    int getPort();
-
-    void setPort(int value);
-
-    String getHost();
-
-    void setHost(String value);
-
-    boolean isFullScreen();
-
-    void setFullScreen(boolean value);
-
-    String getPassword();
-
-    void setPassword(String value);
-
-    int getNumberOfMonitors();
-
-    void setNumberOfMonitors(int value);
-
-    int getUsbListenPort();
-
-    void setUsbListenPort(int value);
-
-    boolean isAdminConsole();
-
-    void setAdminConsole(boolean value);
-
-    String getGuestHostName();
-
-    void setGuestHostName(String value);
-
-    int getSecurePort();
-
-    void setSecurePort(int value);
-
-    String getSslChanels();
-
-    void setSslChanels(String value);
-
-    String getCipherSuite();
-
-    void setCipherSuite(String value);
-
-    String getHostSubject();
-
-    void setHostSubject(String value);
-
-    String getTrustStore();
-
-    void setTrustStore(String value);
-
-    String getTitle();
-
-    void setTitle(String value);
-
-    String getToggleFullscreenHotKey();
-
-    void setToggleFullscreenHotKey(String toggleFullscreenHotKey);
-
-    String getReleaseCursorHotKey();
-
-    void setReleaseCursorHotKey(String releaseCursorHotKey);
-
-    String[] getLocalizedStrings();
-
-    void setLocalizedStrings(String[] value);
-
-    String getMenu();
-
-    void setMenu(String value);
-
-    String getGuestID();
-
-    void setGuestID(String value);
-
-    boolean getNoTaskMgrExecution();
-
-    void setNoTaskMgrExecution(boolean value);
-
-    boolean isRemapCtrlAltDel();
-
-    void setRemapCtrlAltDel(boolean value);
-
-    boolean getUsbAutoShare();
-
-    void setUsbAutoShare(boolean value);
-
-    void setWANDisableEffects(List<WanDisableEffects> disableEffects);
-
-    List<WanDisableEffects> getWANDisableEffects();
-
-    void setWANColorDepth(WanColorDepth colorDepth);
-
-    WanColorDepth getWANColorDepth();
-
-    String getUsbFilter();
-
-    void setUsbFilter(String value);
-
-    void connect();
-
-    void setCurrentVersion(Version currentVersion);
-
-    void setSpiceBaseURL(String spiceBaseURL);
-
-    boolean isWanOptionsEnabled();
-
-    void setWanOptionsEnabled(boolean enabled);
-
-    public void setSmartcardEnabled(boolean enabled);
-
-    boolean isSmartcardEnabled();
-
-    void setOverrideEnabledSmartcard(boolean enabled);
-
-    boolean isSmartcardEnabledOverridden();
-
-    void setSpiceProxy(String spiceProxy);
-
-    void setSpiceProxyEnabled(boolean enabled);
-
-    boolean isSpiceProxyEnabled();
-
-    void setTicketValiditySeconds(int seconds);
-
-    int getTicketValiditySeconds();
 
 }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ISpicePlugin.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ISpicePlugin.java
index 01cad5e..b843e8e 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ISpicePlugin.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ISpicePlugin.java
@@ -1,7 +1,11 @@
 package org.ovirt.engine.ui.uicommonweb.models.vms;
 
+import org.ovirt.engine.core.compat.Version;
+
 public interface ISpicePlugin extends ISpice {
 
-    public boolean detectBrowserPlugin();
+    boolean detectBrowserPlugin();
+    void setPluginVersion(Version value);
+    void setSpiceBaseURL(String spiceBaseURL);
 
 }
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 d110f83..4cc1ee0 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
@@ -1,16 +1,5 @@
 package org.ovirt.engine.ui.uicommonweb.models.vms;
 
-public interface IVnc {
-
-    void setVncHost(String host);
-    void setVncPort(String port);
-    void setTicket(String ticket);
-    void setTitle(String title);
-    boolean isRemapCtrlAltDelete();
-    void setRemapCtrlAltDelete(boolean remapCtrlAltDelete);
-    void setToggleFullscreenHotKey(String toggleFullscreenHotKey);
-    void setReleaseCursorHotKey(String releaseCursorHotKey);
-
-    void invokeClient();
-
+public interface IVnc extends ConsoleClient {
+  // todo consider existence of these markers
 }
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 4270f3b..aa657ca 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
@@ -1,6 +1,5 @@
 package org.ovirt.engine.ui.uicommonweb.models.vms;
 
-import com.google.gwt.user.client.Window;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -23,6 +22,7 @@
 import org.ovirt.engine.core.common.businessentities.UsbPolicy;
 import org.ovirt.engine.core.common.businessentities.VM;
 import org.ovirt.engine.core.common.businessentities.VMStatus;
+import org.ovirt.engine.core.common.console.ConsoleOptions;
 import org.ovirt.engine.core.common.errors.VdcBllErrors;
 import org.ovirt.engine.core.common.queries.ConfigurationValues;
 import org.ovirt.engine.core.common.queries.GetConfigurationValueParameters;
@@ -60,9 +60,6 @@
     public static EventDefinition spiceDisconnectedEventDefinition;
     public static EventDefinition spiceConnectedEventDefinition;
     public static EventDefinition spiceMenuItemSelectedEventDefinition;
-    public static EventDefinition usbAutoShareChangedEventDefinition;
-    public static EventDefinition wanColorDepthChangedEventDefinition;
-    public static EventDefinition wanDisableEffectsChangeEventDefinition;
 
     private SpiceMenu menu;
     private ISpice privatespice;
@@ -80,9 +77,6 @@
         spiceDisconnectedEventDefinition = new 
EventDefinition("SpiceDisconnected", SpiceConsoleModel.class); //$NON-NLS-1$
         spiceConnectedEventDefinition = new EventDefinition("SpiceConnected", 
SpiceConsoleModel.class); //$NON-NLS-1$
         spiceMenuItemSelectedEventDefinition = new 
EventDefinition("SpiceMenuItemSelected", SpiceConsoleModel.class); //$NON-NLS-1$
-        usbAutoShareChangedEventDefinition = new 
EventDefinition("UsbAutoShareChanged", SpiceConsoleModel.class); //$NON-NLS-1$
-        wanColorDepthChangedEventDefinition = new 
EventDefinition("ColorDepthChanged", SpiceConsoleModel.class); //$NON-NLS-1$
-        wanDisableEffectsChangeEventDefinition = new 
EventDefinition("DisableEffectsChange", SpiceConsoleModel.class); //$NON-NLS-1$
     }
 
     public SpiceConsoleModel(VM myVm, Model parentModel) {
@@ -147,7 +141,7 @@
 
         if (getEntity() != null) {
             boolean isSpiceProxyDefined = 
consoleUtils.isSpiceProxyDefined(getEntity());
-            getspice().setSpiceProxyEnabled(isSpiceProxyDefined);
+            getspice().getOptions().setSpiceProxyEnabled(isSpiceProxyDefined);
         }
     }
 
@@ -166,13 +160,6 @@
     protected void connect() {
         if (getEntity() != null) {
             getLogger().debug("Connecting to Spice console..."); //$NON-NLS-1$
-            // Check a spice version.
-            if (getConfigurator().getIsAdmin()
-                    && 
getspice().getCurrentVersion().compareTo(getspice().getDesiredVersion()) < 0)
-            {
-                Window.alert("Spice client version is not as desired (" + 
getspice().getDesiredVersion() + ")"); //$NON-NLS-1$ //$NON-NLS-2$
-                return;
-            }
 
             // Don't connect if there VM is not running on any host.
             if (getEntity().getRunOnVds() == null) {
@@ -181,7 +168,7 @@
 
             // If it is not windows or SPICE guest agent is not installed, 
make sure the WAN options are disabled.
             if 
(!AsyncDataProvider.getInstance().isWindowsOsType(getEntity().getVmOsId()) || 
!getEntity().getHasSpiceDriver()) {
-                getspice().setWanOptionsEnabled(false);
+                getspice().getOptions().setWanOptionsEnabled(false);
             }
 
             UICommand setVmTicketCommand = new UICommand("setVmCommand", new 
BaseCommandTarget() { //$NON-NLS-1$
@@ -377,47 +364,44 @@
         if (spiceInfo == null) {
             throw new IllegalStateException("Trying to invoke SPICE console 
but VM GraphicsInfo is null.");//$NON-NLS-1$
         }
-        getspice().setSmartcardEnabled(getEntity().isSmartcardEnabled());
-        Integer port = spiceInfo.getPort();
-        getspice().setPort(port == null ? 0 : port);
-        getspice().setPassword(ticket);
-        getspice().setTicketValiditySeconds(TICKET_VALIDITY_SECONDS);
-        getspice().setNumberOfMonitors(getEntity().getNumOfMonitors());
-        getspice().setGuestHostName(getEntity().getVmHost().split("[ ]", 
-1)[0]); //$NON-NLS-1$
+        ConsoleOptions options = getspice().getOptions();
+        options.setSmartcardEnabled(getEntity().isSmartcardEnabled());
+        int port = 0;
+        if (spiceInfo.getPort() != null) {
+            port = spiceInfo.getPort();
+        }
+        options.setPort(port);
+        options.setTicket(ticket);
+        options.setNumberOfMonitors(getEntity().getNumOfMonitors());
+        options.setGuestHostName(getEntity().getVmHost().split("[ ]", -1)[0]); 
//$NON-NLS-1$
         if (spiceInfo.getTlsPort() != null) {
-            getspice().setSecurePort(spiceInfo.getTlsPort());
+            options.setSecurePort(spiceInfo.getTlsPort());
         }
         if (!StringHelper.isNullOrEmpty(spiceSecureChannels)) {
-            getspice().setSslChanels(spiceSecureChannels);
+            options.setSslChanels(spiceSecureChannels);
         }
         if (!StringHelper.isNullOrEmpty(cipherSuite)) {
-            getspice().setCipherSuite(cipherSuite);
+            options.setCipherSuite(cipherSuite);
         }
 
-        getspice().setHostSubject(certificateSubject);
-        getspice().setTrustStore(caCertificate);
+        options.setHostSubject(certificateSubject);
+        options.setTrustStore(caCertificate);
 
-        getspice().setTitle(getClientTitle());
+        options.setTitle(getClientTitle());
 
-        getspice().setSpiceProxy(determineSpiceProxy());
+        options.setSpiceProxy(determineSpiceProxy());
 
         // If 'AdminConsole' is true, send true; otherwise, false should be 
sent only for VMs with SPICE driver
         // installed.
-        getspice().setAdminConsole(getConfigurator().getSpiceAdminConsole() ? 
true : !getEntity().getHasSpiceDriver());
+        options.setAdminConsole(getConfigurator().getSpiceAdminConsole() ? 
true : !getEntity().getHasSpiceDriver());
 
         // Update 'UsbListenPort' value
-        getspice().setUsbListenPort(getConfigurator().getIsUsbEnabled()
+        options.setUsbListenPort(getConfigurator().getIsUsbEnabled()
                 && getEntity().getUsbPolicy() == UsbPolicy.ENABLED_LEGACY ? 
getConfigurator().getSpiceDefaultUsbPort()
                 : getConfigurator().getSpiceDisableUsbListenPort());
 
-        getspice().setToggleFullscreenHotKey(getToggleFullScreenKeys());
-        getspice().setReleaseCursorHotKey(getReleaseCursorKeys());
-
-        getspice().setLocalizedStrings(new String[]{
-                ConstantsManager.getInstance().getConstants().usb(),
-                ConstantsManager.getInstance()
-                        .getConstants()
-                        
.usbDevicesNoUsbdevicesClientSpiceUsbRedirectorNotInstalled()});
+        options.setToggleFullscreenHotKey(getToggleFullScreenKeys());
+        options.setReleaseCursorHotKey(getReleaseCursorKeys());
 
         // Create menu.
         int id = 1;
@@ -466,9 +450,7 @@
                 .getConstants()
                 .stopSpiceConsole(), CommandStop));
 
-        getspice().setMenu(menu.toString());
-
-        getspice().setGuestID(getEntity().getId().toString());
+        options.setMenu(menu.toString());
 
         // Subscribe to events.
         getspice().getDisconnectedEvent().addListener(this);
@@ -480,13 +462,13 @@
         }
         else {
             // Try to connect.
-            getspice().setHost(displayIp);
+            options.setHost(displayIp);
             spiceConnect();
         }
     }
 
     private String determineSpiceProxy() {
-        if (!getspice().isSpiceProxyEnabled()) {
+        if (!getspice().getOptions().isSpiceProxyEnabled()) {
             return null;
         }
 
@@ -519,7 +501,7 @@
                 SpiceConsoleModel spiceConsoleModel = (SpiceConsoleModel) 
model;
                 String address =
                         (String) ((VdcQueryReturnValue) 
ReturnValue).getReturnValue();
-                spiceConsoleModel.getspice().setHost(address);
+                spiceConsoleModel.getspice().getOptions().setHost(address);
                 spiceConsoleModel.spiceConnect();
             }
         };
@@ -531,7 +513,7 @@
 
     private void setVmTicket() {
         // Create ticket for single sign on.
-        Frontend.getInstance().runAction(VdcActionType.SetVmTicket, new 
SetVmTicketParameters(getEntity().getId(), null, TICKET_VALIDITY_SECONDS, 
GraphicsType.SPICE),
+        Frontend.getInstance().runAction(VdcActionType.SetVmTicket, new 
SetVmTicketParameters(getEntity().getId(), null, 
ConsoleOptions.TICKET_VALIDITY_SECONDS, GraphicsType.SPICE),
                 new IFrontendActionAsyncCallback() {
                     @Override
                     public void executed(FrontendActionAsyncResult result) {
@@ -642,7 +624,7 @@
     public void spiceConnect()
     {
         try {
-            getspice().connect();
+            getspice().invokeClient();
         } catch (RuntimeException ex) {
             getLogger().error("Exception on Spice connect", ex); //$NON-NLS-1$
         }
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 ea6e60e..0707ed5 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
@@ -6,6 +6,7 @@
 import org.ovirt.engine.core.common.businessentities.GraphicsInfo;
 import org.ovirt.engine.core.common.businessentities.GraphicsType;
 import org.ovirt.engine.core.common.businessentities.VM;
+import org.ovirt.engine.core.common.console.ConsoleOptions;
 import org.ovirt.engine.core.common.queries.ConfigurationValues;
 import org.ovirt.engine.core.common.queries.IdQueryParameters;
 import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
@@ -114,7 +115,7 @@
 
         Frontend.getInstance().runAction(VdcActionType.SetVmTicket, new 
SetVmTicketParameters(getEntity().getId(),
                     null,
-                    TICKET_VALIDITY_SECONDS, GraphicsType.VNC), new 
IFrontendActionAsyncCallback() {
+                ConsoleOptions.TICKET_VALIDITY_SECONDS, GraphicsType.VNC), new 
IFrontendActionAsyncCallback() {
 
                 @Override
                 public void executed(FrontendActionAsyncResult result) {
@@ -152,14 +153,13 @@
     }
 
     private void setAndInvokeClient() {
-        vncImpl.setVncHost(getHost());
+        vncImpl.getOptions().setHost(getHost());
         GraphicsInfo vncInfo = 
getEntity().getGraphicsInfos().get(GraphicsType.VNC);
-        Integer port = vncInfo.getPort();
-        vncImpl.setVncPort(port == null ? null : port.toString());
-        vncImpl.setTicket(getOtp64());
-        vncImpl.setTitle(getClientTitle());
-        vncImpl.setToggleFullscreenHotKey(getToggleFullScreenKeys());
-        vncImpl.setReleaseCursorHotKey(getReleaseCursorKeys());
+        vncImpl.getOptions().setPort(vncInfo.getPort());
+        vncImpl.getOptions().setTicket(getOtp64());
+        vncImpl.getOptions().setTitle(getClientTitle());
+        
vncImpl.getOptions().setToggleFullscreenHotKey(getToggleFullScreenKeys());
+        vncImpl.getOptions().setReleaseCursorHotKey(getReleaseCursorKeys());
 
         vncImpl.invokeClient();
     }
diff --git 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
index 36e786a..599dae6 100644
--- 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
+++ 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
@@ -1815,12 +1815,6 @@
     @DefaultStringValue("No host found in 'UP' state in the cluster, please 
select another cluster.")
     String volumeEmptyClusterValidationMsg();
 
-    @DefaultStringValue("USB")
-    String usb();
-
-    @DefaultStringValue("USB Devices,No USB devices,Client's SPICE USB 
Redirector is not installed")
-    String usbDevicesNoUsbdevicesClientSpiceUsbRedirectorNotInstalled();
-
     @DefaultStringValue("Change CD")
     String changeCd();
 
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/tab/basic/MainTabBasicDetailsPresenterWidget.java
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/tab/basic/MainTabBasicDetailsPresenterWidget.java
index 0ee8378..80eb9eb 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/tab/basic/MainTabBasicDetailsPresenterWidget.java
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/tab/basic/MainTabBasicDetailsPresenterWidget.java
@@ -219,7 +219,7 @@
 
         ConsoleProtocol selectedProcotol = vmConsoles.getSelectedProcotol();
         boolean smartcardEnabled = selectedProcotol == ConsoleProtocol.SPICE 
&& vmConsoles.getVm().isSmartcardEnabled();
-        boolean smartcardOverriden = 
vmConsoles.getConsoleModel(SpiceConsoleModel.class).getspice().isSmartcardEnabledOverridden();
+        boolean smartcardOverriden = 
vmConsoles.getConsoleModel(SpiceConsoleModel.class).getspice().getOptions().isSmartcardEnabledOverridden();
 
         if (smartcardEnabled && !smartcardOverriden) {
             return 
messages.consoleWithSmartcard(consoleTypeToName.get(selectedProcotol));
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/uicommon/UserPortalConfigurator.java
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/uicommon/UserPortalConfigurator.java
index 3b91d71..10dc88b 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/uicommon/UserPortalConfigurator.java
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/uicommon/UserPortalConfigurator.java
@@ -83,7 +83,7 @@
             @SuppressWarnings("unchecked")
             @Override
             public void onSuccess(Object target, Object returnValue) {
-                spice.setWANDisableEffects((List<WanDisableEffects>) 
returnValue);
+                
spice.getOptions().setWanDisableEffects((List<WanDisableEffects>) returnValue);
             }
         }));
     }
@@ -92,7 +92,7 @@
         AsyncDataProvider.getInstance().getWANColorDepth(new AsyncQuery(this, 
new INewAsyncCallback() {
             @Override
             public void onSuccess(Object target, Object returnValue) {
-                spice.setWANColorDepth((WanColorDepth) returnValue);
+                spice.getOptions().setWanColorDepth((WanColorDepth) 
returnValue);
             }
         }));
     }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/uicommon/WebAdminConfigurator.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/uicommon/WebAdminConfigurator.java
index d0b5264..feffbf6 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/uicommon/WebAdminConfigurator.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/uicommon/WebAdminConfigurator.java
@@ -61,8 +61,8 @@
     @Override
     public void configure(ISpice spice) {
         super.configure(spice);
-        spice.setWANDisableEffects(new ArrayList<WanDisableEffects>());
-        spice.setWanOptionsEnabled(false);
+        spice.getOptions().setWanDisableEffects(new 
ArrayList<WanDisableEffects>());
+        spice.getOptions().setWanOptionsEnabled(false);
     }
 
     @Override


-- 
To view, visit https://gerrit.ovirt.org/37973
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I5a5b5b323f788bd2882984a2dce183791f72949d
Gerrit-PatchSet: 6
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Frank Kobzik <fkob...@redhat.com>
Gerrit-Reviewer: Tomas Jelinek <tjeli...@redhat.com>
Gerrit-Reviewer: automat...@ovirt.org
Gerrit-Reviewer: oVirt Jenkins CI Server
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to