package org.ovirt.engine.ui.uicommonweb.models.userportal;
import java.util.Collections;
import org.ovirt.engine.core.compat.*;
import org.ovirt.engine.ui.uicompat.*;
import org.ovirt.engine.core.common.businessentities.*;
import org.ovirt.engine.core.common.vdscommands.*;
import org.ovirt.engine.core.common.queries.*;
import org.ovirt.engine.core.common.action.*;
import org.ovirt.engine.ui.frontend.*;
import org.ovirt.engine.ui.uicommonweb.*;
import org.ovirt.engine.ui.uicommonweb.models.*;
import org.ovirt.engine.core.common.*;
import org.ovirt.engine.ui.uicommonweb.dataprovider.*;
import org.ovirt.engine.ui.uicommonweb.models.vms.*;
import org.ovirt.engine.ui.uicompat.*;
import org.ovirt.engine.core.common.businessentities.*;
import org.ovirt.engine.ui.uicommonweb.*;
import org.ovirt.engine.ui.uicommonweb.models.*;
@SuppressWarnings("unused")
public class PoolItemBehavior extends ItemBehavior
{
public PoolItemBehavior(UserPortalItemModel item)
{
super(item);
}
@Override
public void OnEntityChanged()
{
UpdateProperties();
UpdateActionAvailability();
}
@Override
public void EntityPropertyChanged(PropertyChangedEventArgs e)
{
}
@Override
public void ExecuteCommand(UICommand command)
{
if (command == getItem().getTakeVmCommand())
{
TakeVm();
}
}
@Override
public void eventRaised(Event ev, Object sender, EventArgs args)
{
//Do nothing. There are no events to handle for pools.
}
private void TakeVm()
{
vm_pools entity = (vm_pools)getItem().getEntity();
Frontend.RunAction(VdcActionType.AttachUserToVmFromPoolAndRun, new VmPoolUserParameters(entity.getvm_pool_id(), Frontend.getLoggedInUser(), false),
new IFrontendActionAsyncCallback() {
@Override
public void Executed(FrontendActionAsyncResult result) {
PoolItemBehavior behavior = (PoolItemBehavior)result.getState();
VdcReturnValueBase returnValueBase = result.getReturnValue();
Guid Guid = (Guid)returnValueBase.getActionReturnValue();
behavior.PostTakeVm(Guid);
}
}, this);
}
public void PostTakeVm(Guid vmId)
{
AsyncDataProvider.GetVmById(new AsyncQuery(this,
new INewAsyncCallback() {
@Override
public void OnSuccess(Object target, Object returnValue) {
PoolItemBehavior behavior = (PoolItemBehavior)target;
UserPortalItemModel model = behavior.getItem();
model.setEntity(returnValue);
}
}), vmId);
}
private void UpdateProperties()
{
vm_pools entity = (vm_pools)getItem().getEntity();
getItem().setName(entity.getvm_pool_name());
getItem().setDescription(entity.getvm_pool_description());
getItem().setIsPool(true);
getItem().setIsServer(false);
getItem().setStatus(VMStatus.Down);
getItem().setIsFromPool(false);
getItem().setPoolType(entity.getvm_pool_type());
AsyncDataProvider.GetAnyVm(new AsyncQuery(this,
new INewAsyncCallback() {
@Override
public void OnSuccess(Object target, Object returnValue) {
PoolItemBehavior behavior = (PoolItemBehavior)target;
VM vm = (VM)returnValue;
if (vm != null)
{
UserPortalItemModel model = behavior.getItem();
model.setOsType(vm.getvm_os());
}
}
}), entity.getvm_pool_name());
}
private void UpdateActionAvailability()
{
getItem().getTakeVmCommand().setIsAvailable(true);
getItem().getRunCommand().setIsAvailable(false);
getItem().getPauseCommand().setIsAvailable(true);
getItem().getShutdownCommand().setIsAvailable(true);
getItem().getStopCommand().setIsAvailable(true);
getItem().getReturnVmCommand().setIsAvailable(false);
getItem().getPauseCommand().setIsExecutionAllowed(false);
getItem().getShutdownCommand().setIsExecutionAllowed(false);
getItem().getStopCommand().setIsExecutionAllowed(false);
}
}