summaryrefslogtreecommitdiff
path: root/src/ri-planner/src/main/java/io/trygvis/acme/planning/machine/CloudProcess.java
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2021-02-03 16:35:48 +0100
committerTrygve Laugstøl <trygvis@inamo.no>2021-02-03 16:35:48 +0100
commitbafe762ac01d16904c18404283027e426e19bc73 (patch)
treec22688ad186f5ce635f525704c5035f91b983b68 /src/ri-planner/src/main/java/io/trygvis/acme/planning/machine/CloudProcess.java
parent91abd0b04320a9c9d932df195aca38c1cacfcc5a (diff)
downloadrules-sandbox-bafe762ac01d16904c18404283027e426e19bc73.tar.gz
rules-sandbox-bafe762ac01d16904c18404283027e426e19bc73.tar.bz2
rules-sandbox-bafe762ac01d16904c18404283027e426e19bc73.tar.xz
rules-sandbox-bafe762ac01d16904c18404283027e426e19bc73.zip
Code reorganization.
Moving main code to src, keeping modules in modules/
Diffstat (limited to 'src/ri-planner/src/main/java/io/trygvis/acme/planning/machine/CloudProcess.java')
-rw-r--r--src/ri-planner/src/main/java/io/trygvis/acme/planning/machine/CloudProcess.java48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/ri-planner/src/main/java/io/trygvis/acme/planning/machine/CloudProcess.java b/src/ri-planner/src/main/java/io/trygvis/acme/planning/machine/CloudProcess.java
new file mode 100644
index 0000000..2002903
--- /dev/null
+++ b/src/ri-planner/src/main/java/io/trygvis/acme/planning/machine/CloudProcess.java
@@ -0,0 +1,48 @@
+package io.trygvis.acme.planning.machine;
+
+import org.apache.commons.lang3.builder.CompareToBuilder;
+import org.optaplanner.core.api.domain.entity.PlanningEntity;
+import org.optaplanner.core.api.domain.variable.PlanningVariable;
+
+import java.util.Comparator;
+
+@PlanningEntity(difficultyComparatorClass = CloudProcessDifficultyComparator.class)
+public class CloudProcess {
+ public String id;
+ public int requiredCpu;
+ public int requiredMemory;
+ public int requiredMultiplicand;
+
+ @PlanningVariable(
+ valueRangeProviderRefs = "computerRange",
+ strengthComparatorClass = CloudComputerStrengthComparator.class)
+ public CloudComputer computer;
+
+ public CloudProcess(String id, int requiredCpu, int requiredMemory) {
+ this.id = id;
+ this.requiredCpu = requiredCpu;
+ this.requiredMemory = requiredMemory;
+
+ this.requiredMultiplicand = requiredCpu * requiredMemory;
+ }
+
+ @SuppressWarnings("unused")
+ public CloudProcess() {
+ }
+
+ public String toString() {
+ return id;
+ }
+
+ public static class CloudComputerStrengthComparator implements Comparator<CloudComputer> {
+ public int compare(CloudComputer a, CloudComputer b) {
+ var x = a.instance;
+ var y = b.instance;
+ return new CompareToBuilder()
+ .append(x.multiplicand, y.multiplicand)
+ .append(y.cost, x.cost) // Descending (but this is debatable)
+ .append(x.kind, y.kind)
+ .toComparison();
+ }
+ }
+}