/* * 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 java.util.ArrayList; import flex.messaging.io.ArrayCollection; import com.abiquo.abiserver.business.locators.resource.ResourceLocator; import com.abiquo.abiserver.commands.InfrastructureCommand; import com.abiquo.abiserver.commands.VirtualApplianceCommand; import com.abiquo.abiserver.pojo.authentication.UserSession; import com.abiquo.abiserver.pojo.infrastructure.VirtualMachine; import com.abiquo.abiserver.pojo.result.BasicResult; import com.abiquo.abiserver.pojo.user.Enterprise; import com.abiquo.abiserver.pojo.virtualappliance.VirtualAppliance; /** * This class defines a wide set of services that are considered "non-blocking services". * * @author Oliver */ public class NonBlockingService { /* ______________________________ INFRASTRUCTURE _______________________________ */ /** * @param session * @param virtualMachine * @return A DataResult object, containing the new State for the virtualMachine */ public BasicResult startVirtualMachine(UserSession session, VirtualMachine virtualMachine) { InfrastructureCommand infrastructureCommand = new InfrastructureCommand(); Object[] args = new Object[1]; args[0] = virtualMachine; return infrastructureCommand.execute(session, ResourceLocator.VIRTUALMACHINE_START, args); } /** * @param session * @param virtualMachine * @return A DataResult object, containing the new State for the virtualMachine */ public BasicResult pauseVirtualMachine(UserSession session, VirtualMachine virtualMachine) { InfrastructureCommand infrastructureCommand = new InfrastructureCommand(); Object[] args = new Object[1]; args[0] = virtualMachine; return infrastructureCommand.execute(session, ResourceLocator.VIRTUALMACHINE_PAUSE, args); } /** * @param session * @param virtualMachine * @return A DataResult object, containing the new State for the virtualMachine */ public BasicResult rebootVirtualMachine(UserSession session, VirtualMachine virtualMachine) { InfrastructureCommand infrastructureCommand = new InfrastructureCommand(); Object[] args = new Object[1]; args[0] = virtualMachine; return infrastructureCommand.execute(session, ResourceLocator.VIRTUALMACHINE_REBOOT, args); } /** * @param session * @param virtualMachine * @return A DataResult object, containing the new State for the virtualMachine */ public BasicResult shutdownVirtualMachine(UserSession session, VirtualMachine virtualMachine) { InfrastructureCommand infrastructureCommand = new InfrastructureCommand(); Object[] args = new Object[1]; args[0] = virtualMachine; return infrastructureCommand .execute(session, ResourceLocator.VIRTUALMACHINE_SHUTDOWN, args); } /** * Checks the current state of a list of virtual machines * * @param session * @param virtualMachinesToCheck * @return A DataResult object containing a list of the same virtual machines with their state * updated */ @SuppressWarnings("unchecked") public BasicResult checkVirtualMachinesState(UserSession session, ArrayCollection virtualMachinesToCheck) { InfrastructureCommand infrastructureCommand = new InfrastructureCommand(); Object[] args = new Object[1]; ArrayList<VirtualMachine> virtualMachines = new ArrayList<VirtualMachine>(virtualMachinesToCheck); args[0] = virtualMachines; return infrastructureCommand.execute(session, ResourceLocator.CHECK_VIRTUAL_MACHINES_STATE, args); } /* ______________________________ VIRTUAL APPLIANCE _______________________________ */ /** * Performs a "Start" action in the Virtual Machine * * @param session * @param virtualAppliance * @return a DataResult object, with a com.abiquo.abiserver.pojo.infrastructure.State object * that represents the state "Running" */ public BasicResult startVirtualAppliance(UserSession session, VirtualAppliance virtualAppliance) { VirtualApplianceCommand virtualApplianceCommand = new VirtualApplianceCommand(); Object[] args = new Object[1]; args[0] = virtualAppliance; return virtualApplianceCommand.execute(session, ResourceLocator.VIRTUALAPPLIANCE_START, args); } /** * Performs a "Shutdown" action in the Virtual Machine * * @param session * @param virtualAppliance * @return a DataResult object, with a com.abiquo.abiserver.pojo.infrastructure.State object * that represents the state "Powered Off" */ public BasicResult shutdownVirtualAppliance(UserSession session, VirtualAppliance virtualAppliance) { VirtualApplianceCommand virtualApplianceCommand = new VirtualApplianceCommand(); Object[] args = new Object[1]; args[0] = virtualAppliance; return virtualApplianceCommand.execute(session, ResourceLocator.VIRTUALAPPLIANCE_SHUTDOWN, 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); } /** * Retrieves an updated list of Virtual Appliances that belong to the same Enterprise The * Virtual Appliances retrieved will not contain their list of nodes, for performance purposes * * @param userSession * @param enterprise The Enterprise to retrieve the VirtualAppliance list * @return a DataResult<ArrayList<VirtualAppliance>> object with the VirtualAppliance that belong * to the given enterprise */ @SuppressWarnings("unchecked") public BasicResult checkVirtualAppliancesByEnterprise(UserSession userSession, Enterprise enterprise) { // This service will call the method getVirtualAppliancesByEnterprise from // VirtualApplianceCommand // since is just what we need VirtualApplianceCommand virtualApplianceCommand = new VirtualApplianceCommand(); Object[] args = new Object[1]; args[0] = enterprise; return virtualApplianceCommand.execute(userSession, ResourceLocator.VIRTUALAPPLIANCE_GETBYENTERPRISE, args); } /** * Retrieves a VirtualAppliance, with the current values in DataBase. Since a client can have an * old version of a VirtualAppliance, this service is useful to get the updated state of a * Virtual Appliance * * @param session * @param virtualAppliance The VirtualAppliance to check. * @return a DataResult<VirtualAppliance> object with the last updated values in DataBase The * returned VirtualAppliance will contain its list of noded */ public BasicResult checkVirtualAppliance(UserSession session, VirtualAppliance virtualAppliance) { VirtualApplianceCommand virtualApplianceCommand = new VirtualApplianceCommand(); Object[] args = new Object[1]; args[0] = virtualAppliance; return virtualApplianceCommand.execute(session, ResourceLocator.CHECK_VIRTUAL_APPLIANCE, args); } }