package com.sequenceiq.cloudbreak.service.cluster.flow;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.codec.binary.Base64;
import org.springframework.stereotype.Component;
import com.sequenceiq.cloudbreak.common.type.RecipeType;
import com.sequenceiq.cloudbreak.domain.Recipe;
@Component
public class ConsulRecipeBuilder implements RecipeBuilder {
@Override
public List<Recipe> buildRecipes(String recipeName, List<RecipeScript> recipeScripts) {
List<Recipe> recipes = new ArrayList<>();
int index = 0;
for (RecipeScript script : recipeScripts) {
Recipe recipe = new Recipe();
if (recipeScripts.size() > 1) {
recipe.setName(recipeName + "-" + index);
} else {
recipe.setName(recipeName);
}
recipe.setContent(Base64.encodeBase64String(script.getScript().getBytes()));
switch (script.getClusterLifecycleEvent()) {
case PRE_INSTALL:
recipe.setRecipeType(RecipeType.PRE);
break;
case POST_INSTALL:
recipe.setRecipeType(RecipeType.POST);
break;
default:
throw new UnsupportedOperationException("Cluster lifecycle event " + script.getClusterLifecycleEvent() + " is not supported");
}
index++;
recipes.add(recipe);
}
return recipes;
}
}