summaryrefslogtreecommitdiff
path: root/module/acme-planner/src/main/java/io/trygvis/acme/planning/machine/CloudPlaningMain.java
diff options
context:
space:
mode:
Diffstat (limited to 'module/acme-planner/src/main/java/io/trygvis/acme/planning/machine/CloudPlaningMain.java')
-rw-r--r--module/acme-planner/src/main/java/io/trygvis/acme/planning/machine/CloudPlaningMain.java52
1 files changed, 52 insertions, 0 deletions
diff --git a/module/acme-planner/src/main/java/io/trygvis/acme/planning/machine/CloudPlaningMain.java b/module/acme-planner/src/main/java/io/trygvis/acme/planning/machine/CloudPlaningMain.java
new file mode 100644
index 0000000..60b3fd3
--- /dev/null
+++ b/module/acme-planner/src/main/java/io/trygvis/acme/planning/machine/CloudPlaningMain.java
@@ -0,0 +1,52 @@
+package io.trygvis.acme.planning.machine;
+
+import org.optaplanner.core.api.solver.SolverFactory;
+
+import java.util.ArrayList;
+
+public class CloudPlaningMain {
+ public static final ScalewayInstance Stardust1_s = new ScalewayInstance("Stardust1-s", 0.0025, 1000, 1000);
+ public static final ScalewayInstance DEV1_S = new ScalewayInstance("DEV1-S", 0.01, 2000, 2000);
+ public static final ScalewayInstance DEV1_M = new ScalewayInstance("DEV1-M", 0.02, 3000, 4000);
+ public static final ScalewayInstance DEV1_L = new ScalewayInstance("DEV1-L", 0.04, 4000, 8000);
+ public static final ScalewayInstance DEV1_XL = new ScalewayInstance("DEV1-XL", 0.06, 4000, 12000);
+
+ public static void main(String[] args) {
+ var solverFactory = SolverFactory.<CloudBalance>createFromXmlResource("io/trygvis/acme/planning/machine/solver-config.xml");
+ var solver = solverFactory.buildSolver();
+
+ var computers = new ArrayList<CloudComputer>();
+
+ computers.add(new CloudComputer("acme-1", DEV1_S));
+ computers.add(new CloudComputer("acme-2", DEV1_M));
+ computers.add(new CloudComputer("acme-3", DEV1_S));
+
+ var processes = new ArrayList<CloudProcess>();
+
+ processes.add(new CloudProcess("statera", 200, 1000));
+ processes.add(new CloudProcess("statera-console", 100, 50));
+ processes.add(new CloudProcess("4tune-web", 100, 50));
+ processes.add(new CloudProcess("4tune-api", 200, 200));
+ processes.add(new CloudProcess("pdb", 500, 500));
+ processes.add(new CloudProcess("mdb", 500, 200));
+
+ var unsolvedCloudBalance = new CloudBalance(computers, processes);
+
+ var solvedCloudBalance = solver.solve(unsolvedCloudBalance);
+
+ System.out.println("solvedCloudBalance.getScore() = " + solvedCloudBalance.getScore());
+ for (CloudProcess process : solvedCloudBalance.getProcessList()) {
+ System.out.println("process.id = " + process.id);
+ if (process.computer == null) {
+ System.out.println("COMPUTER IS NULL");
+ } else {
+ System.out.println("process.computer.host = " + process.computer.host);
+ }
+ }
+
+ System.out.println("------------------------------------------------------------------------");
+
+// System.out.println("\nSolved cloudBalance with 400 computers and 1200 processes:\n"
+// + toDisplayString(solvedCloudBalance));
+ }
+}