/* * 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.scheduler; import java.util.List; import com.abiquo.abiserver.pojo.infrastructure.PhysicalMachine; import com.abiquo.abiserver.pojo.infrastructure.VirtualMachine; import com.abiquo.abiserver.pojo.virtualimage.VirtualImage; public interface IScheduler { /** * Return an VirtualMachine (on a PhysicalMachine on the given dataCenter) object ready to * deploy the given VirtualImage. (Optimistic: update PyhisicalMachine's VirtualMachine resource * usages, if image deploy do not success call ''rollback'') * * @precondition An active databse transaction (HibernateUtils.getSession().beginTranstion()) * MUST to be opened before running this method. * @param targetImage, target image to deploy on returned VirtualMachine. Used to filer * PhysicalMachines without enough cpu, ram or hd. * @param dataCenter, required data center for the selected PyhisicalMachine's VirtualMachine. * @return a new Instance of VirtualMachine on a PhysicalMachine (on dataCenter) with enough * cpu,ram,hd for the desired VirtualImage. * @throws SchedulerException if there is not any PhysicalMachine with enough resources. */ public VirtualMachine selectMachine(VirtualImage targetImage, String dataCenter) throws SchedulerException; /** * Return an list VirtualMachine (on a PhysicalMachine on the given dataCenter) ready to deploy * the given VirtualImages. (Optimistic: update PyhisicalMachine's VirtualMachine resource * usages, if image deploy do not success call ''rollback'') * * @precondition An active databse transaction (HibernateUtils.getSession().beginTranstion()) * MUST to be opened before running this method. * @param targetImage, target image to deploy on returned VirtualMachine. Used to filer * PhysicalMachines without enough cpu, ram or hd. * @param dataCenter, required data center for the selected PyhisicalMachine's VirtualMachine. * @return a new Instance of VirtualMachine on a PhysicalMachine (on dataCenter) with enough * cpu,ram,hd for the desired VirtualImage. * @throws SchedulerException if there is not any PhysicalMachine with enough resources. */ public List<VirtualMachine> selectMachines(List<VirtualImage> targetImages, String dataCenter) throws SchedulerException; /** * Called if some error during VirtualMachine deploy for the VirtualImage. It updates the * optimistic PyhisicalMachine's VirtualMachine resource usages form ''selectMachine''. * * @precondition An active databse transaction (HibernateUtils.getSession().beginTranstion()) * MUST to be opened before running this method. */ public void rollback(VirtualMachine virtual, PhysicalMachine physicalMachine); }