package org.cloudbus.cloudsim.container.containerVmProvisioners; import org.cloudbus.cloudsim.container.core.ContainerVm; import java.util.List; /** * Created by sareh on 10/07/15. */ public abstract class ContainerVmPeProvisioner { /** The mips. */ private double mips; /** The available mips. */ private double availableMips; /** * Creates the new PeProvisioner. * * @param mips overall amount of MIPS available in the Pe * * @pre mips>=0 * @post $none */ public ContainerVmPeProvisioner(double mips) { // TODO Auto-generated constructor stub setMips(mips); setAvailableMips(mips); } /** * Allocates MIPS for a given containerVm. * * @param containerVm virtual machine for which the MIPS are being allocated * @param mips the mips * * @return $true if the MIPS could be allocated; $false otherwise * * @pre $none * @post $none */ public abstract boolean allocateMipsForContainerVm(ContainerVm containerVm, double mips); /** * Allocates MIPS for a given VM. * * @param containerVmUid the containerVmUid * @param mips the mips * * @return $true if the MIPS could be allocated; $false otherwise * * @pre $none * @post $none */ public abstract boolean allocateMipsForContainerVm(String containerVmUid, double mips); /** * Allocates MIPS for a given VM. * * @param containerVm virtual machine for which the MIPS are being allocated * @param mips the mips for each virtual Pe * * @return $true if the MIPS could be allocated; $false otherwise * * @pre $none * @post $none */ public abstract boolean allocateMipsForContainerVm(ContainerVm containerVm, List<Double> mips); /** * Gets allocated MIPS for a given VM. * * @param containerVm virtual machine for which the MIPS are being allocated * * @return array of allocated MIPS * * @pre $none * @post $none */ public abstract List<Double> getAllocatedMipsForContainerVm(ContainerVm containerVm); /** * Gets total allocated MIPS for a given VM for all PEs. * * @param containerVm virtual machine for which the MIPS are being allocated * * @return total allocated MIPS * * @pre $none * @post $none */ public abstract double getTotalAllocatedMipsForContainerVm(ContainerVm containerVm); /** * Gets allocated MIPS for a given VM for a given virtual Pe. * * @param containerVm virtual machine for which the MIPS are being allocated * @param peId the pe id * * @return allocated MIPS * * @pre $none * @post $none */ public abstract double getAllocatedMipsForContainerVmByVirtualPeId(ContainerVm containerVm, int peId); /** * Releases MIPS used by a VM. * * @param containerVm the containerVm * * @pre $none * @post none */ public abstract void deallocateMipsForContainerVm(ContainerVm containerVm); /** * Releases MIPS used by all VMs. * * @pre $none * @post none */ public void deallocateMipsForAllContainerVms() { setAvailableMips(getMips()); } /** * Gets the MIPS. * * @return the MIPS */ public double getMips() { return mips; } /** * Sets the MIPS. * * @param mips the MIPS to set */ public void setMips(double mips) { this.mips = mips; } /** * Gets the available MIPS in the PE. * * @return available MIPS * * @pre $none * @post $none */ public double getAvailableMips() { return availableMips; } /** * Sets the available MIPS. * * @param availableMips the availableMips to set */ protected void setAvailableMips(double availableMips) { this.availableMips = availableMips; } /** * Gets the total allocated MIPS. * * @return the total allocated MIPS */ public double getTotalAllocatedMips() { double totalAllocatedMips = getMips() - getAvailableMips(); if (totalAllocatedMips > 0) { return totalAllocatedMips; } return 0; } /** * Gets the utilization of the Pe in percents. * * @return the utilization */ public double getUtilization() { return getTotalAllocatedMips() / getMips(); } }