/*
* The contents of this file are subject to the Mozilla Public License
* Version 1.1 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is available at http://www.abiquo.com/.....
*
* The Initial Developer of the Original Code is Soluciones Grid, S.L. (www.abiquo.com),
* Consell de Cent 296, Principal 2�, 08007 Barcelona, Spain.
*
* No portions of the Code have been created by third parties.
* All Rights Reserved.
*
* Contributor(s): ______________________________________.
*
* Graphical User Interface of this software may be used under the terms
* of the Common Public Attribution License Version 1.0 (the "CPAL License",
* available at http://cpal.abiquo.com/), in which case the
* provisions of CPAL License are applicable instead of those above. In relation
* of this portions of the Code, a Legal Notice according to Exhibits A and B of
* CPAL Licence should be provided in any distribution of the corresponding Code
* to Graphical User Interface.
*/
package com.abiquo.abiserver.services.flex;
import com.abiquo.abiserver.business.locators.resource.ResourceLocator;
import com.abiquo.abiserver.commands.VirtualApplianceCommand;
import com.abiquo.abiserver.pojo.authentication.UserSession;
import com.abiquo.abiserver.pojo.result.BasicResult;
import com.abiquo.abiserver.pojo.user.Enterprise;
import com.abiquo.abiserver.pojo.virtualappliance.VirtualAppliance;
import com.abiquo.abiserver.pojo.virtualappliance.VirtualDataCenter;
/**
* This class defines all services related to Virtual Appliances management
*
* @author Oliver
*/
public class VirtualApplianceService
{
// /////////////////////////
// VirtualDataCenter
/**
* Retrieves a list of VirtualDataCenter that belongs to the same Enterprise
*
* @param userSession The UserSession with the user that called this method
* @param enterprise The Enterprise of which the VirtualDataCenter will be returned
* @return a BasicResult object, containing an ArrayList<VirtualDataCenter>, with the
* VirtualDataCenter assigned to the enterprise
*/
public BasicResult getVirtualDataCentersByEnterprise(UserSession userSession,
Enterprise enterprise)
{
VirtualApplianceCommand virtualApplianceCommand = new VirtualApplianceCommand();
Object[] args = new Object[1];
args[0] = enterprise;
return virtualApplianceCommand.execute(userSession,
ResourceLocator.VIRTUALDATACENTER_GETBYENTERPRISE, args);
}
/**
* Creates a new VirtualDataCenter in the Data Base
*
* @param userSession The UserSession with the user that called this method
* @param virtualDataCenter The VirtualDataCenter that will be created in Data Base
* @return a DataResult object containing the VirtualDataCenter that has been created
*/
public BasicResult createVirtualDataCenter(UserSession userSession,
VirtualDataCenter virtualDataCenter)
{
VirtualApplianceCommand virtualApplianceCommand = new VirtualApplianceCommand();
Object[] args = new Object[2];
args[0] = userSession;
args[1] = virtualDataCenter;
return virtualApplianceCommand.execute(userSession,
ResourceLocator.VIRTUALDATACENTER_CREATE, args);
}
/**
* Updates an existing VirtualDataCenter with new information
*
* @param userSession The UserSession with the user that called this method
* @param virtualDataCenter The VirtualDataCenter that will be updated
* @return a BasicResult object, with the success of the edition
*/
public BasicResult editVirtualDataCenter(UserSession userSession,
VirtualDataCenter virtualDataCenter)
{
VirtualApplianceCommand virtualApplianceCommand = new VirtualApplianceCommand();
Object[] args = new Object[2];
args[0] = userSession;
args[1] = virtualDataCenter;
return virtualApplianceCommand.execute(userSession, ResourceLocator.VIRTUALDATACENTER_EDIT,
args);
}
/**
* Deletes a VirtualDataCenter from the DataBase. A VirtualDataCenter can only be deleted if any
* of its Virtual Appliances are powered on
*
* @param userSession The UserSession with the user that called this method
* @param virtualDataCenter The VirtualDataCenter to be deleted
* @return A BasicResult object with the success of the deletion. BasicResult.success = false
* will be returned if the VirtualDataCenter has any assigned VirtualAppliance powered
* on
*/
public BasicResult deleteVirtualDataCenter(UserSession userSession,
VirtualDataCenter virtualDataCenter)
{
VirtualApplianceCommand virtualApplianceCommand = new VirtualApplianceCommand();
Object[] args = new Object[1];
args[0] = virtualDataCenter;
return virtualApplianceCommand.execute(userSession,
ResourceLocator.VIRTUALDATACENTER_DELETE, args);
}
// /////////////////////////
// VirtualAppliance
/**
* Retrieves a list of Virtual Appliances that belong to the same Enterprise The
* VirtualAppliance retrieved will not contain their Node list, for performance purposes It will
* also return those Virtual Appliance marked as public
*
* @param userSession The UserSession object with the user that called this method
* @param enterprise The Enterprise to retrieve the VirtualAppliance list
* @return a DataResult<ArrayList<VirtualAppliance>> object with the VirtualAppliance that
* belong to the given enterprise
* @see getVirtualApplianceNodes
*/
public BasicResult getVirtualAppliancesByEnterprise(UserSession userSession,
Enterprise enterprise)
{
VirtualApplianceCommand virtualApplianceCommand = new VirtualApplianceCommand();
Object[] args = new Object[1];
args[0] = enterprise;
return virtualApplianceCommand.execute(userSession,
ResourceLocator.VIRTUALAPPLIANCE_GETBYENTERPRISE, args);
}
/**
* Given a VirtualAppliance, retrieves its node list
*
* @param userSession The UserSession object with the user that called this method
* @param virtualAppliance The VirtualAppliance to retrieve the nodes
* @return a DataResult<ArrayList<Node>> object, containing the virtualAppliance's Nodes
*/
public BasicResult getVirtualApplianceNodes(UserSession userSession,
VirtualAppliance virtualAppliance)
{
VirtualApplianceCommand virtualApplianceCommand = new VirtualApplianceCommand();
Object[] args = new Object[1];
args[0] = virtualAppliance;
return virtualApplianceCommand.execute(userSession,
ResourceLocator.VIRTUALAPPLIANCE_GETNODES, args);
}
/**
* Returns the Virtual Appliances that belongs to the user who called this method, or those that
* are public (VirtualAppliance.isPublic)
*
* @deprecated
* @param session
* @return A DataResult object, containing an ArraList of VirtualAppliance
*/
public BasicResult getVirtualAppliancesByUser(UserSession session)
{
VirtualApplianceCommand virtualApplianceCommand = new VirtualApplianceCommand();
Object[] args = new Object[1];
args[0] = session;
return virtualApplianceCommand.execute(session, ResourceLocator.VIRTUALAPPLIANCE_GETBYUSER,
args);
}
/**
* Creates a new Virtual Appliance, that belongs to the user who called this method
*
* @param session
* @param virtualAppliance
* @return A DataResult object containing the VirtualAppliance created in the Data Base
*/
public BasicResult createVirtualAppliance(UserSession session, VirtualAppliance virtualAppliance)
{
VirtualApplianceCommand virtualApplianceCommand = new VirtualApplianceCommand();
Object[] args = new Object[2];
args[0] = session;
args[1] = virtualAppliance;
return virtualApplianceCommand.execute(session, ResourceLocator.VIRTUALAPPLIANCE_CREATE,
args);
}
/**
* Modifies the information of a VirtualAppliance that already exists in the Data Base
*
* @param session
* @param virtualAppliance
* @return A DataResult object, containing an ArrayList of Node, with the Virtual Appliance's
* Nodes updated
*/
public BasicResult editVirtualAppliance(UserSession session, VirtualAppliance virtualAppliance)
{
VirtualApplianceCommand virtualApplianceCommand = new VirtualApplianceCommand();
Object[] args = new Object[2];
args[0] = session;
args[1] = virtualAppliance;
return virtualApplianceCommand
.execute(session, ResourceLocator.VIRTUALAPPLIANCE_EDIT, args);
}
/**
* Deletes a VirtualAppliance that exists in the Data Base
*
* @param session
* @param virtualAppliance
* @return a BasicResult object, containing success = true if the deletion was successful
*/
public BasicResult deleteVirtualAppliance(UserSession session, VirtualAppliance virtualAppliance)
{
VirtualApplianceCommand virtualApplianceCommand = new VirtualApplianceCommand();
Object[] args = new Object[1];
args[0] = virtualAppliance;
return virtualApplianceCommand.execute(session, ResourceLocator.VIRTUALAPPLIANCE_DELETE,
args);
}
/**
* Returns the a list with all Logs entries for a Virtual Appliance Useful to frequently update
* the logs for a VirtualAppliance, without having to return the entire Virtual Appliance
*
* @param session
* @param virtualAppliance The VirtualAppliance which we want to return the list of logs
* @return A DataResult object, containing an ArrayList<Log> with the list of logs for the
* virtualAppliance
*/
public BasicResult getVirtualApplianceUpdatedLogs(UserSession session,
VirtualAppliance virtualAppliance)
{
VirtualApplianceCommand virtualApplianceCommand = new VirtualApplianceCommand();
Object[] args = new Object[1];
args[0] = virtualAppliance;
return virtualApplianceCommand.execute(session,
ResourceLocator.VIRTUALAPPLIANCE_GET_UPDATED_LOGS, args);
}
}