From 6d56fe977ff37c10955759a05849791ac38c3a45 Mon Sep 17 00:00:00 2001 From: alijawadfahs Date: Thu, 19 May 2022 03:11:39 +0200 Subject: [PATCH 1/2] adding the jobIdForEDGE --- .../morphemic/model/NodeCandidate.java | 23 ++++++++++++++++++- .../morphemic/model/NodeTypeRequirement.java | 7 +++++- .../morphemic/nc/NodeCandidateUtils.java | 6 +++-- .../morphemic/service/ByonUtils.java | 10 ++++++-- 4 files changed, 40 insertions(+), 6 deletions(-) diff --git a/scheduling-abstraction-layer/src/main/java/org/activeeon/morphemic/model/NodeCandidate.java b/scheduling-abstraction-layer/src/main/java/org/activeeon/morphemic/model/NodeCandidate.java index 8808e60c..82bf728f 100644 --- a/scheduling-abstraction-layer/src/main/java/org/activeeon/morphemic/model/NodeCandidate.java +++ b/scheduling-abstraction-layer/src/main/java/org/activeeon/morphemic/model/NodeCandidate.java @@ -84,6 +84,10 @@ public class NodeCandidate implements Serializable { @JsonProperty("jobIdForByon") private String jobIdForBYON; + @Column(name = "JOB_ID_FOR_EDGE") + @JsonProperty("jobIdForEdge") + private String jobIdForEDGE; + @Column(name = "PRICE") @JsonProperty("price") private Double price = null; @@ -158,10 +162,16 @@ public class NodeCandidate implements Serializable { return jobIdForBYON; } + public String getJobIdForEDGE() { + return jobIdForEDGE; + } + public void setJobIdForBYON(String jobIdForBYON) { this.jobIdForBYON = jobIdForBYON; } + public void setJobIdForEDGE(String jobIdForEDGE) { this.jobIdForEDGE = jobIdForEDGE; } + public NodeCandidate price(Double price) { this.price = price; return this; @@ -306,6 +316,15 @@ public class NodeCandidate implements Serializable { return nodeCandidateType.value.equals("BYON"); } + /** + * Check if a node candidate is of BYON type + * @return true if yes, false if not + */ + public boolean isEdgeNodeCandidate() { + return nodeCandidateType.value.equals("EDGE"); + } + + /** * Find the first node candidate that * @param hardware A given stored hardware @@ -331,6 +350,7 @@ public class NodeCandidate implements Serializable { return Objects.equals(this.id, nodeCandidate.id) && Objects.equals(this.nodeCandidateType, nodeCandidate.nodeCandidateType) && Objects.equals(this.jobIdForBYON, nodeCandidate.jobIdForBYON) && + Objects.equals(this.jobIdForEDGE, nodeCandidate.jobIdForEDGE) && Objects.equals(this.price, nodeCandidate.price) && Objects.equals(this.cloud, nodeCandidate.cloud) && Objects.equals(this.image, nodeCandidate.image) && @@ -343,7 +363,7 @@ public class NodeCandidate implements Serializable { @Override public int hashCode() { - return Objects.hash(id, nodeCandidateType, jobIdForBYON, price, cloud, image, hardware, location, pricePerInvocation, memoryPrice, environment); + return Objects.hash(id, nodeCandidateType, jobIdForBYON, jobIdForEDGE, price, cloud, image, hardware, location, pricePerInvocation, memoryPrice, environment); } @Override @@ -354,6 +374,7 @@ public class NodeCandidate implements Serializable { sb.append(" id: ").append(toIndentedString(id)).append("\n"); sb.append(" nodeCandidateType: ").append(toIndentedString(nodeCandidateType)).append("\n"); sb.append(" jobIdForBYON: ").append(toIndentedString(jobIdForBYON)).append("\n"); + sb.append(" jobIdForEDGE: ").append(toIndentedString(jobIdForEDGE)).append("\n"); sb.append(" price: ").append(toIndentedString(price)).append("\n"); sb.append(" cloud: ").append(toIndentedString(cloud)).append("\n"); sb.append(" image: ").append(toIndentedString(image)).append("\n"); diff --git a/scheduling-abstraction-layer/src/main/java/org/activeeon/morphemic/model/NodeTypeRequirement.java b/scheduling-abstraction-layer/src/main/java/org/activeeon/morphemic/model/NodeTypeRequirement.java index a9355cb1..6dd8b3c4 100644 --- a/scheduling-abstraction-layer/src/main/java/org/activeeon/morphemic/model/NodeTypeRequirement.java +++ b/scheduling-abstraction-layer/src/main/java/org/activeeon/morphemic/model/NodeTypeRequirement.java @@ -19,6 +19,9 @@ public class NodeTypeRequirement extends Requirement { @JsonProperty("jobIdForByon") private String jobIdForBYON; + @JsonProperty("jobIdForEDGE") + private String jobIdForEDGE; + /** * Get nodeType * @return nodeType @@ -36,12 +39,13 @@ public class NodeTypeRequirement extends Requirement { NodeTypeRequirement nodeTypeRequirement = (NodeTypeRequirement) o; return Objects.equals(this.nodeTypes, nodeTypeRequirement.nodeTypes) && Objects.equals(this.jobIdForBYON, nodeTypeRequirement.jobIdForBYON) && + Objects.equals(this.jobIdForEDGE, nodeTypeRequirement.jobIdForEDGE) && super.equals(o); } @Override public int hashCode() { - return Objects.hash(nodeTypes, jobIdForBYON, super.hashCode()); + return Objects.hash(nodeTypes, jobIdForBYON, jobIdForEDGE, super.hashCode()); } @Override @@ -51,6 +55,7 @@ public class NodeTypeRequirement extends Requirement { sb.append(" ").append(toIndentedString(super.toString())).append("\n"); sb.append(" nodeType: ").append(toIndentedString(nodeTypes)).append("\n"); sb.append(" jobIdForBYON: ").append(toIndentedString(jobIdForBYON)).append("\n"); + sb.append(" jobIdForEDGE: ").append(toIndentedString(jobIdForEDGE)).append("\n"); sb.append("}"); return sb.toString(); } diff --git a/scheduling-abstraction-layer/src/main/java/org/activeeon/morphemic/nc/NodeCandidateUtils.java b/scheduling-abstraction-layer/src/main/java/org/activeeon/morphemic/nc/NodeCandidateUtils.java index be4b86d5..5155bb4a 100644 --- a/scheduling-abstraction-layer/src/main/java/org/activeeon/morphemic/nc/NodeCandidateUtils.java +++ b/scheduling-abstraction-layer/src/main/java/org/activeeon/morphemic/nc/NodeCandidateUtils.java @@ -123,10 +123,12 @@ public class NodeCandidateUtils { return (requirement.getNodeTypes().stream().anyMatch(nodeType -> { if (nodeType.getLiteral().equals(nodeCandidate.getNodeCandidateType().name()) && nodeType.equals(NodeType.BYON) && - requirement.getJobIdForBYON().equals(nodeCandidate.getJobIdForBYON())) { + nodeType.equals(NodeType.EDGE) && + requirement.getJobIdForBYON().equals(nodeCandidate.getJobIdForBYON()) && + requirement.getJobIdForEDGE().equals(nodeCandidate.getJobIdForEDGE())) { return true; } else return nodeType.getLiteral().equals(nodeCandidate.getNodeCandidateType().name()) && - !nodeType.equals(NodeType.BYON); + !nodeType.equals(NodeType.BYON) && !nodeType.equals(NodeType.EDGE); })); } diff --git a/scheduling-abstraction-layer/src/main/java/org/activeeon/morphemic/service/ByonUtils.java b/scheduling-abstraction-layer/src/main/java/org/activeeon/morphemic/service/ByonUtils.java index a17eb602..59b54130 100644 --- a/scheduling-abstraction-layer/src/main/java/org/activeeon/morphemic/service/ByonUtils.java +++ b/scheduling-abstraction-layer/src/main/java/org/activeeon/morphemic/service/ByonUtils.java @@ -38,7 +38,6 @@ public class ByonUtils { LOGGER.debug("Creating the {} node candidate ...", nodeType.toUpperCase()); //Start by setting the universal nodes properties NodeCandidate nc = new NodeCandidate(); - nc.setJobIdForBYON(jobId); nc.setPrice(0.0); nc.setMemoryPrice(0.0); nc.setPricePerInvocation(0.0); @@ -70,7 +69,10 @@ public class ByonUtils { location.setId("byon-location-" + RandomStringUtils.randomAlphanumeric(16)); //set the nc parameters nc.setNodeCandidateType(NodeCandidate.NodeCandidateTypeEnum.BYON); - + // set the nc jobIdForBYON + nc.setJobIdForBYON(jobId); + // set the nc jobIdForEDGE + nc.setJobIdForEDGE(null); } else { //the node type is EDGE @@ -82,6 +84,10 @@ public class ByonUtils { location.setId("edge-location-" + RandomStringUtils.randomAlphanumeric(16)); //set the nc parameters nc.setNodeCandidateType(NodeCandidate.NodeCandidateTypeEnum.EDGE); + // set the nc jobIdForBYON + nc.setJobIdForBYON(null); + // set the nc jobIdForEDGE + nc.setJobIdForEDGE(jobId); } nc.setCloud(dummyCloud); -- GitLab From 9297e69e74ef303588467a5b2214ae6822802dc9 Mon Sep 17 00:00:00 2001 From: Ali Fahs Date: Thu, 19 May 2022 14:32:14 +0200 Subject: [PATCH 2/2] addressing a small comment --- .../main/java/org/activeeon/morphemic/PAGateway.java | 1 + .../org/activeeon/morphemic/model/NodeCandidate.java | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/scheduling-abstraction-layer/src/main/java/org/activeeon/morphemic/PAGateway.java b/scheduling-abstraction-layer/src/main/java/org/activeeon/morphemic/PAGateway.java index f981a641..583967f0 100644 --- a/scheduling-abstraction-layer/src/main/java/org/activeeon/morphemic/PAGateway.java +++ b/scheduling-abstraction-layer/src/main/java/org/activeeon/morphemic/PAGateway.java @@ -347,6 +347,7 @@ public class PAGateway { allNodeCandidates.forEach(nodeCandidate -> { LOGGER.info("Checking node candidate with type: {}", nodeCandidate.getHardware().getName()); if (nodeCandidate.isByonNodeCandidate() || + nodeCandidate.isEdgeNodeCandidate() || JCloudsInstancesUtils.isHandledHardwareInstanceType(nodeCandidate.getCloud().getApi().getProviderName(), nodeCandidate.getHardware().getName()) || WhiteListedInstanceTypesUtils.isHandledHardwareInstanceType(nodeCandidate.getHardware().getName())) { diff --git a/scheduling-abstraction-layer/src/main/java/org/activeeon/morphemic/model/NodeCandidate.java b/scheduling-abstraction-layer/src/main/java/org/activeeon/morphemic/model/NodeCandidate.java index eb48fa67..6b824a23 100644 --- a/scheduling-abstraction-layer/src/main/java/org/activeeon/morphemic/model/NodeCandidate.java +++ b/scheduling-abstraction-layer/src/main/java/org/activeeon/morphemic/model/NodeCandidate.java @@ -315,7 +315,7 @@ public class NodeCandidate implements Serializable { * @return true if yes, false if not */ public boolean isByonNodeCandidate() { - if (nodeCandidateType.value.equals("BYON")) { + if (nodeCandidateType.equals(NodeCandidateTypeEnum.BYON)) { LOGGER.info(" Is BYON: YES"); return true; } else { @@ -329,7 +329,13 @@ public class NodeCandidate implements Serializable { * @return true if yes, false if not */ public boolean isEdgeNodeCandidate() { - return nodeCandidateType.value.equals("EDGE"); + if (nodeCandidateType.equals(NodeCandidateTypeEnum.EDGE)) { + LOGGER.info(" Is EDGE: YES"); + return true; + } else { + LOGGER.info(" Is EDGE: NO"); + return false; + } } -- GitLab