public AvailabilityType getAvailability() {
return AvailabilityType.UP;
}
public BundleDeployResult deployBundle(BundleDeployRequest request) {
BundleDeployResult result = new BundleDeployResult();
// the file template recipe processor does not support reverting deployments
// thus we need to fail-fast if a revert deployment is being requested
if (request.isRevert()) {
result.setErrorMessage("File template bundles cannot be reverted");
return result;
}
try {
BundleResourceDeployment resourceDeployment = request.getResourceDeployment();
BundleDeployment bundleDeployment = resourceDeployment.getBundleDeployment();
BundleVersion bundleVersion = bundleDeployment.getBundleVersion();
BundleManagerProvider bundleManagerProvider = request.getBundleManagerProvider();
// before processing the recipe, wipe the dest dir if we need to perform a clean deployment
if (request.isCleanDeployment()) {
File deployDir = request.getAbsoluteDestinationDirectory();
if (deployDir.exists()) {
bundleManagerProvider.auditDeployment(resourceDeployment, "Cleaning Deployment", deployDir
.getAbsolutePath(), null, null, "The existing deployment found at ["
+ deployDir.getAbsolutePath() + "] will be removed.", null);
FileUtils.purge(deployDir, true);
}
}
// process the recipe
String recipe = bundleVersion.getRecipe();
RecipeParser parser = new RecipeParser();
ProcessingRecipeContext recipeContext = new ProcessingRecipeContext(recipe, request
.getPackageVersionFiles(), this.resourceContext.getSystemInformation(), request
.getBundleFilesLocation().getAbsolutePath(), resourceDeployment, bundleManagerProvider);
bundleManagerProvider.auditDeployment(resourceDeployment, "Configurtion Variable Replacement",
bundleDeployment.getName(), null, null, "setting replacement variable values using ["
+ bundleDeployment.getConfiguration().toString(true) + "]", null);
recipeContext.setReplacementVariableValues(bundleDeployment.getConfiguration());
recipeContext.addReplacementVariableValue(DEPLOY_DIR, request.getAbsoluteDestinationDirectory()
.getAbsolutePath());
recipeContext.addReplacementVariableValue(DEPLOY_ID, Integer.toString(bundleDeployment.getId()));
recipeContext.addReplacementVariableValue(DEPLOY_NAME, bundleDeployment.getName());
parser.setReplaceReplacementVariables(true);
bundleManagerProvider.auditDeployment(resourceDeployment, "Parse Recipe", bundleDeployment.getName(), null,
null, "Parsing Recipe using context [" + recipeContext + "]", null);
parser.parseRecipe(recipeContext);
} catch (Throwable t) {
log.error("Failed to deploy bundle [" + request + "]", t);
result.setErrorMessage(t);
}
return result;
}