Skip to content

Commit

Permalink
Modifications on extensions loading.
Browse files Browse the repository at this point in the history
  • Loading branch information
thiagotts committed Sep 24, 2012
1 parent 96a6852 commit cb2bf89
Show file tree
Hide file tree
Showing 7 changed files with 30 additions and 52 deletions.
18 changes: 12 additions & 6 deletions src/main/java/cloudreports/enums/AllocationPolicy.java
Expand Up @@ -45,8 +45,10 @@ public enum AllocationPolicy implements Serializable {
*/
SINGLE_THRESHOLD {
@Override
public VmAllocationPolicy getPolicy(List<PowerHost> hostList, double upperUtilizationThreshold, String policyAlias) {
return new VmAllocationPolicySingleThreshold(hostList,upperUtilizationThreshold);
public VmAllocationPolicy getPolicy(List<PowerHost> hostList, double upperUtilizationThreshold,
double lowerUtilizationThreshold, double schedulingInterval,
String policyAlias) {
return new VmAllocationPolicySingleThreshold(hostList, upperUtilizationThreshold);
}
},

Expand All @@ -55,10 +57,12 @@ public VmAllocationPolicy getPolicy(List<PowerHost> hostList, double upperUtiliz
*/
EXTENSION {
@Override
public VmAllocationPolicy getPolicy(List<PowerHost> hostList, double upperUtilizationThreshold, String policyAlias) {
public VmAllocationPolicy getPolicy(List<PowerHost> hostList, double upperUtilizationThreshold,
double lowerUtilizationThreshold, double schedulingInterval,
String policyAlias) {
try{
Class<?>[] types = new Class<?>[]{ List.class, double.class };
Object[] arguments = new Object[]{ hostList, upperUtilizationThreshold };
Class<?>[] types = new Class<?>[]{ List.class, double.class, double.class, double.class };
Object[] arguments = new Object[]{ hostList, upperUtilizationThreshold, lowerUtilizationThreshold, schedulingInterval};
return (VmAllocationPolicy) ExtensionsLoader.getExtension("VmAllocationPolicy", policyAlias, types, arguments);
}
catch(Exception e) {
Expand All @@ -79,7 +83,9 @@ public VmAllocationPolicy getPolicy(List<PowerHost> hostList, double upperUtiliz
* @return a CloudSim's VmAllocationPolicy subtype.
* @since 1.0
*/
public abstract VmAllocationPolicy getPolicy(List<PowerHost> hostList, double upperUtilizationThreshold, String policyAlias);
public abstract VmAllocationPolicy getPolicy(List<PowerHost> hostList, double upperUtilizationThreshold,
double lowerUtilizationThreshold, double schedulingInterval,
String policyAlias);

/**
* Gets an instance of an allocation policy based on its alias.
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/cloudreports/enums/BwProvisioner.java
Expand Up @@ -39,7 +39,7 @@ public enum BwProvisioner {
*/
SIMPLE {
@Override
public org.cloudbus.cloudsim.provisioners.BwProvisioner getProvisioner(int num, String provisionerAlias) {
public org.cloudbus.cloudsim.provisioners.BwProvisioner getProvisioner(long num, String provisionerAlias) {
return new BwProvisionerSimple(num);
}
},
Expand All @@ -49,9 +49,9 @@ public org.cloudbus.cloudsim.provisioners.BwProvisioner getProvisioner(int num,
*/
EXTENSION {
@Override
public org.cloudbus.cloudsim.provisioners.BwProvisioner getProvisioner(int num, String provisionerAlias) {
public org.cloudbus.cloudsim.provisioners.BwProvisioner getProvisioner(long num, String provisionerAlias) {
try {
Class<?>[] types = new Class<?>[]{int.class};
Class<?>[] types = new Class<?>[]{long.class};
Object[] arguments = new Object[]{num};
return (org.cloudbus.cloudsim.provisioners.BwProvisioner) ExtensionsLoader.getExtension("BwProvisioner", provisionerAlias, types, arguments);
} catch (Exception e) {
Expand All @@ -69,7 +69,7 @@ public org.cloudbus.cloudsim.provisioners.BwProvisioner getProvisioner(int num,
* @return a CloudSim's BwProvisioner subtype.
* @since 1.0
*/
public abstract org.cloudbus.cloudsim.provisioners.BwProvisioner getProvisioner(int num, String provisionerAlias);
public abstract org.cloudbus.cloudsim.provisioners.BwProvisioner getProvisioner(long num, String provisionerAlias);

/**
* Gets an instance of bandwidth provisioner based on its alias.
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/cloudreports/enums/RamProvisioner.java
Expand Up @@ -40,8 +40,8 @@ public enum RamProvisioner {
*/
SIMPLE {
@Override
public org.cloudbus.cloudsim.provisioners.RamProvisioner getProvisioner(int avaiableRam, String provisionerAlias) {
return new RamProvisionerSimple(avaiableRam);
public org.cloudbus.cloudsim.provisioners.RamProvisioner getProvisioner(int availableRam, String provisionerAlias) {
return new RamProvisionerSimple(availableRam);
}
},

Expand Down
8 changes: 5 additions & 3 deletions src/main/java/cloudreports/extensions/ExtensionsLoader.java
Expand Up @@ -117,7 +117,7 @@ public static List<String> getExtensionsAliasesByType(String type) {
}
catch (NullPointerException e) {
continue;
}
}
}

return listAliases;
Expand Down Expand Up @@ -172,7 +172,7 @@ public static Object getExtension(String type, String alias, Class<?>[] construc
private static String getFileName(String type, String alias) {
if(classnamesXml == null) return null;

NodeList classNodes = classnamesXml.getElementsByTagName("class");
NodeList classNodes = classnamesXml.getElementsByTagName("class");
for(int index = 0; index < classNodes.getLength(); index++) {
if(classNodes.item(index).getAttributes().getNamedItem("type").getNodeValue().equals(type) &&
classNodes.item(index).getAttributes().getNamedItem("alias").getNodeValue().equals(alias))
Expand Down Expand Up @@ -215,7 +215,9 @@ private static String getClassnameOfExtension(String type, String alias) {
*/
private static Document getClassnamesXml() {
File classnamesXmlFile = new File(classnamesXmlPath);
if(!classnamesXmlFile.exists() || !classnamesXmlFile.isFile()) return null;
if(!classnamesXmlFile.exists() || !classnamesXmlFile.isFile()) {
return null;
}

DocumentBuilder db;
try {
Expand Down
Expand Up @@ -23,7 +23,6 @@
import cloudreports.models.Migration;
import java.util.*;
import org.cloudbus.cloudsim.Vm;
import org.cloudbus.cloudsim.power.PowerHost;

/**
* A subtype of CloudSim's VmAllocationPolicySimple class.
Expand All @@ -36,15 +35,6 @@
*/
public interface VmAllocationPolicyExtensible {

/**
* A method whose implementations must return the upper utilization
* threshold.
*
* @return the upper utilization threshold.
* @since 1.1
*/
double getUpperUtilizationThreshold();

/**
* A method whose implementations must optimize the allocation
* of virtual machines.
Expand All @@ -55,24 +45,5 @@ public interface VmAllocationPolicyExtensible {
* @since 1.1
*/
List<Migration> getListOfMigrationsToBeExecuted(List<? extends Vm> vmList);

/**
* A method whose implementations must distribute virtual machines
* among hosts.
*
* @param migrationList a list of migrations to be executed.
* @param overusedHosts a list of overused hosts.
* @since 1.1
*/
void distributeVms(List<Migration> migrationList, List<PowerHost> overusedHosts);

/**
* A method whose implementations must consolidate the allocation
* of virtual machines among hosts.
*
* @param migrationList a list of migrations to be executed.
* @since 1.1
*/
void consolidateVms(List<Migration> migrationList);

}
Expand Up @@ -54,9 +54,7 @@ public class VmAllocationPolicySingleThreshold extends VmAllocationPolicySimple
* @param utilizationThreshold the utilization threshold value.
* @since 1.0
*/
public VmAllocationPolicySingleThreshold(List<? extends PowerHost> list,
double utilizationThreshold) {

public VmAllocationPolicySingleThreshold(List<? extends PowerHost> list, double utilizationThreshold) {
super(list);
this.upperUtilizationThreshold = utilizationThreshold;
}
Expand Down Expand Up @@ -95,7 +93,6 @@ public List<Migration> getListOfMigrationsToBeExecuted(List<? extends Vm> vmList
* @param overusedHosts the list of overused hosts.
* @since 1.0
*/
@Override
public void distributeVms(List<Migration> migrationList, List<PowerHost> overusedHosts) {
List<PowerHost> targetHosts = getNotOverusedHosts();

Expand All @@ -118,7 +115,6 @@ public void distributeVms(List<Migration> migrationList, List<PowerHost> overuse
* @param migrationList the list of migrations to be executed.
* @since 1.0
*/
@Override
public void consolidateVms(List<Migration> migrationList) {
List<PowerHost> activeHosts = getActiveHosts();
List<PowerHost> targetHosts = activeHosts;
Expand All @@ -140,7 +136,6 @@ public void consolidateVms(List<Migration> migrationList) {
}
}

@Override
public double getUpperUtilizationThreshold() {
return this.upperUtilizationThreshold;
}
Expand Down
8 changes: 6 additions & 2 deletions src/main/java/cloudreports/simulation/EntityFactory.java
Expand Up @@ -86,15 +86,19 @@ static HashMap<String, PowerDatacenter> createDatacenters() {


try {
VmAllocationPolicy allocationPolicy = AllocationPolicy.getInstance(dcr.getAllocationPolicyAlias()).getPolicy(hostList, dcr.getUpperUtilizationThreshold(), dcr.getAllocationPolicyAlias());
AllocationPolicy instance = AllocationPolicy.getInstance(dcr.getAllocationPolicyAlias());
VmAllocationPolicy allocationPolicy = instance.getPolicy(hostList, dcr.getUpperUtilizationThreshold(),
dcr.getLowerUtilizationThreshold(),
dcr.getSchedulingInterval(),
dcr.getAllocationPolicyAlias());
if (allocationPolicy == null) {
Dialog.showErrorMessage(null, "Error loading \"" + dcr.getAllocationPolicyAlias() + "\" allocation policy.");
return null;
}

PowerDatacenter newDC = new PowerDatacenter(dcr.getName(),
chars,
AllocationPolicy.getInstance(dcr.getAllocationPolicyAlias()).getPolicy(hostList, dcr.getUpperUtilizationThreshold(), dcr.getAllocationPolicyAlias()),
allocationPolicy,
storageList,
dcr.getSchedulingInterval(),
dcr.getMonitoringInterval());
Expand Down

0 comments on commit cb2bf89

Please sign in to comment.