/**
* Copyright (C) 2008 - Abiquo Holdings S.L. All rights reserved.
*
* Please see /opt/abiquo/tomcat/webapps/legal/ on Abiquo server
* or contact contact@abiquo.com for licensing information.
*/
package com.abiquo.hypervisor.util;
import static com.abiquo.hypervisor.model.enumerator.VirtualMachineEvent.CREATED;
import static com.abiquo.hypervisor.model.enumerator.VirtualMachineEvent.DESTROYED;
import static com.abiquo.hypervisor.model.enumerator.VirtualMachineEvent.UNKNOWN;
import com.abiquo.hypervisor.model.State;
import com.abiquo.hypervisor.model.VirtualMachineIdentifier;
import com.abiquo.hypervisor.model.VirtualMachineStateChange;
import com.abiquo.hypervisor.model.enumerator.VirtualMachineEvent;
import com.google.common.base.Function;
public class HypervisorMonitorUtils
{
/**
* Given a {@link VirtualMachineIdentifier}, returns the String
* {@link VirtualMachineIdentifier#getName()}
*/
public static final Function<VirtualMachineIdentifier, String> ExtractIdentifierName =
new Function<VirtualMachineIdentifier, String>()
{
@Override
public String apply(final VirtualMachineIdentifier identifier)
{
return identifier.getName();
}
};
/**
* Given a virtual machine name, returns a {@link VirtualMachineStateChange} based on the
* provided name and with the {@link VirtualMachineEvent#CREATED} event
*/
public static final Function<String, VirtualMachineStateChange> CreatedStateChange =
new Function<String, VirtualMachineStateChange>()
{
@Override
public VirtualMachineStateChange apply(final String virtualMachine)
{
return newVirtualMachineStateChange(virtualMachine, CREATED);
}
};
/**
* Given a virtual machine name, returns a {@link VirtualMachineStateChange} based on the
* provided name and with the {@link VirtualMachineEvent#DESTROYED} event
*/
public static final Function<String, VirtualMachineStateChange> DestroyedStateChange =
new Function<String, VirtualMachineStateChange>()
{
@Override
public VirtualMachineStateChange apply(final String virtualMachine)
{
return newVirtualMachineStateChange(virtualMachine, DESTROYED);
}
};
/**
* Given a virtual machine name, returns a {@link VirtualMachineStateChange} based on the
* provided name and with the {@link VirtualMachineEvent#UNKNOWN} event
*/
public static final Function<String, VirtualMachineStateChange> UnknownStateChange =
new Function<String, VirtualMachineStateChange>()
{
@Override
public VirtualMachineStateChange apply(final String virtualMachine)
{
return newVirtualMachineStateChange(virtualMachine, UNKNOWN);
}
};
public static VirtualMachineStateChange newVirtualMachineStateChange(
final String virtualMachine, final State state)
{
return newVirtualMachineStateChange(virtualMachine, VirtualMachineEvent.from(state));
}
public static VirtualMachineStateChange newVirtualMachineStateChange(
final String virtualMachine, final VirtualMachineEvent event)
{
return new VirtualMachineStateChange(new VirtualMachineIdentifier(virtualMachine), event);
}
}