package org.ovirt.engine.ui.uicommonweb.models;
import static org.ovirt.engine.ui.uicommonweb.ConsoleOptionsFrontendPersister.ConsoleContext;
import org.ovirt.engine.core.common.businessentities.VM;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.ui.uicommonweb.models.vms.ConsoleModel;
/**
* This class contains all consoles and related methods for a single VM.
*/
public interface VmConsoles {
/**
* Convenience method that determines if vm/pool can be used with given protocol.
*/
boolean canSelectProtocol(ConsoleProtocol protocol);
/**
* Selects given protocol or throws IAE when the protocol cannot be used.
*/
void selectProtocol(ConsoleProtocol protocol) throws IllegalArgumentException;
/**
* Returns currently selected console protocol.
*/
ConsoleProtocol getSelectedProcotol();
/**
* Returns console model for given type.
* @param type - desired console type
*/
<T extends ConsoleModel> T getConsoleModel(Class<T> type);
/**
* Method determining if it's possible to connect to selected console.
*
* @return true if it's possible to connect to selected console.
*/
boolean canConnectToConsole();
/**
* Invokes selected console.
*
* @throws IllegalStateException when
*/
void connect() throws ConsoleConnectException;
/**
* Returns the VM associated with consoles.
*/
VM getVm();
/**
* Sets a new vm for these consoles.
* Due to uicommon design parent object MUST secure freshness of this object. Use this method for this reason only.
* @param vm - new VM
*/
void setVm(VM vm);
/**
* Get id of underlying entity (various implementation may want to return various names).
* @return id of underlying entity
*/
Guid getEntityId();
/**
* Get name of underlying entity (various implementation may want to return various names).
* @return name of underlying entity
*/
String getEntityName();
/**
* Returns the message explaining why it's console cannot be connected to.
*/
public String cannotConnectReason();
/**
* Returns the context where this class is used (Webadmin, Basic/Extended Userportal).
*/
ConsoleContext getConsoleContext();
/**
* Thrown by VmConsoles.connect if error occurs when connecting to the console.
* Contains a localized message with error description.
*/
class ConsoleConnectException extends Exception {
private final String localizedErrorMessage;
public ConsoleConnectException(String localizedErrorMessage) {
this.localizedErrorMessage = localizedErrorMessage;
}
public String getLocalizedErrorMessage() {
return localizedErrorMessage;
}
}
}