From 4a2c1a17092b323f8436baecb68b472a9f4491fb Mon Sep 17 00:00:00 2001 From: Dain Sundstrom Date: Wed, 4 Apr 2012 11:50:54 -0700 Subject: [PATCH] Resolve assignment before using in a filter --- .../coordinator/AgentFilterBuilder.java | 3 ++- .../galaxy/shared/InstallationUtils.java | 21 ++++++++++++------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/galaxy-coordinator/src/main/java/com/proofpoint/galaxy/coordinator/AgentFilterBuilder.java b/galaxy-coordinator/src/main/java/com/proofpoint/galaxy/coordinator/AgentFilterBuilder.java index eac9398..a3a30a5 100644 --- a/galaxy-coordinator/src/main/java/com/proofpoint/galaxy/coordinator/AgentFilterBuilder.java +++ b/galaxy-coordinator/src/main/java/com/proofpoint/galaxy/coordinator/AgentFilterBuilder.java @@ -12,6 +12,7 @@ import com.proofpoint.galaxy.shared.Assignment; import com.proofpoint.galaxy.shared.HttpUriBuilder; import com.proofpoint.galaxy.shared.Installation; +import com.proofpoint.galaxy.shared.InstallationUtils; import com.proofpoint.galaxy.shared.Repository; import com.proofpoint.galaxy.shared.SlotStatus; @@ -352,7 +353,7 @@ public static class AssignablePredicate implements Predicate public AssignablePredicate(Assignment assignment, boolean allowDuplicateInstallationsOnAnAgent, Repository repository) { - this.assignment = assignment; + this.assignment = InstallationUtils.resolveAssignment(repository, assignment); this.allowDuplicateInstallationsOnAnAgent = allowDuplicateInstallationsOnAnAgent; this.repository = repository; } diff --git a/galaxy-shared/src/main/java/com/proofpoint/galaxy/shared/InstallationUtils.java b/galaxy-shared/src/main/java/com/proofpoint/galaxy/shared/InstallationUtils.java index 83cdb47..550d48d 100644 --- a/galaxy-shared/src/main/java/com/proofpoint/galaxy/shared/InstallationUtils.java +++ b/galaxy-shared/src/main/java/com/proofpoint/galaxy/shared/InstallationUtils.java @@ -19,14 +19,8 @@ public class InstallationUtils { public static Installation toInstallation(Repository repository, Assignment assignment) { - // resolve assignment - String resolvedBinary = repository.binaryResolve(assignment.getBinary()); - Preconditions.checkArgument(resolvedBinary != null, "Unknown binary " + assignment.getBinary()); + assignment = resolveAssignment(repository, assignment); - String resolvedConfig = repository.configResolve(assignment.getConfig()); - Preconditions.checkArgument(resolvedConfig != null, "Unknown config " + assignment.getConfig()); - - assignment = new Assignment(resolvedBinary, resolvedConfig); // load resources Map resources = readResources(repository, assignment); @@ -44,6 +38,19 @@ public static Installation toInstallation(Repository repository, Assignment assi resources); } + public static Assignment resolveAssignment(Repository repository, Assignment assignment) + { + // resolve assignment + String resolvedBinary = repository.binaryResolve(assignment.getBinary()); + Preconditions.checkArgument(resolvedBinary != null, "Unknown binary " + assignment.getBinary()); + + String resolvedConfig = repository.configResolve(assignment.getConfig()); + Preconditions.checkArgument(resolvedConfig != null, "Unknown config " + assignment.getConfig()); + + assignment = new Assignment(resolvedBinary, resolvedConfig); + return assignment; + } + public static boolean resourcesAreAvailable(Map availableResources, Map requiredResources) { for (Entry entry : requiredResources.entrySet()) {