Search in sources :

Example 16 with Recipe

use of com.sequenceiq.cloudbreak.domain.Recipe in project cloudbreak by hortonworks.

the class HostGroupDecorator method prepareRecipesByRequests.

private void prepareRecipesByRequests(HostGroup subject, IdentityUser user, Iterable<RecipeRequest> recipes, Boolean publicInAccount) {
    for (RecipeRequest recipe : recipes) {
        Recipe convert = conversionService.convert(recipe, Recipe.class);
        convert.setPublicInAccount(publicInAccount);
        convert = recipeService.create(user, convert);
        subject.getRecipes().add(convert);
    }
}
Also used : Recipe(com.sequenceiq.cloudbreak.domain.Recipe) RecipeRequest(com.sequenceiq.cloudbreak.api.model.RecipeRequest)

Example 17 with Recipe

use of com.sequenceiq.cloudbreak.domain.Recipe in project cloudbreak by hortonworks.

the class OrchestratorRecipeExecutor method convert.

private List<RecipeModel> convert(Iterable<Recipe> recipes) {
    List<RecipeModel> result = new ArrayList<>();
    for (Recipe recipe : recipes) {
        String decodedContent = new String(Base64.decodeBase64(recipe.getContent()));
        RecipeModel recipeModel = new RecipeModel(recipe.getName(), recipe.getRecipeType(), decodedContent);
        result.add(recipeModel);
    }
    return result;
}
Also used : Recipe(com.sequenceiq.cloudbreak.domain.Recipe) ArrayList(java.util.ArrayList) RecipeModel(com.sequenceiq.cloudbreak.orchestrator.model.RecipeModel)

Example 18 with Recipe

use of com.sequenceiq.cloudbreak.domain.Recipe in project cloudbreak by hortonworks.

the class RecipeBuilder method buildRecipes.

public List<Recipe> buildRecipes(String recipeName, Collection<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()));
        recipe.setRecipeType(script.getRecipeType());
        index++;
        recipes.add(recipe);
    }
    return recipes;
}
Also used : RecipeScript(com.sequenceiq.cloudbreak.common.model.recipe.RecipeScript) Recipe(com.sequenceiq.cloudbreak.domain.Recipe) ArrayList(java.util.ArrayList)

Example 19 with Recipe

use of com.sequenceiq.cloudbreak.domain.Recipe in project cloudbreak by hortonworks.

the class RecipeEngine method addFsRecipesToHostGroups.

private void addFsRecipesToHostGroups(Credential credential, Iterable<HostGroup> hostGroups, String blueprintText, FileSystem fs) throws IOException {
    String scriptName = fs.getType().toLowerCase();
    FileSystemConfigurator fsConfigurator = fileSystemConfigurators.get(FileSystemType.valueOf(fs.getType()));
    FileSystemConfiguration fsConfiguration = getFileSystemConfiguration(fs);
    List<RecipeScript> recipeScripts = fsConfigurator.getScripts(credential, fsConfiguration);
    List<Recipe> fsRecipes = recipeBuilder.buildRecipes(scriptName, recipeScripts);
    for (int i = 0; i < fsRecipes.size(); i++) {
        RecipeScript recipeScript = recipeScripts.get(i);
        Recipe recipe = fsRecipes.get(i);
        for (HostGroup hostGroup : hostGroups) {
            if (ExecutionType.ALL_NODES == recipeScript.getExecutionType()) {
                hostGroup.addRecipe(recipe);
            } else if (ExecutionType.ONE_NODE == recipeScript.getExecutionType() && isComponentPresent(blueprintText, "NAMENODE", hostGroup)) {
                hostGroup.addRecipe(recipe);
                break;
            }
        }
    }
}
Also used : FileSystemConfigurator(com.sequenceiq.cloudbreak.blueprint.filesystem.FileSystemConfigurator) RecipeScript(com.sequenceiq.cloudbreak.common.model.recipe.RecipeScript) Recipe(com.sequenceiq.cloudbreak.domain.Recipe) HostGroup(com.sequenceiq.cloudbreak.domain.HostGroup) FileSystemConfiguration(com.sequenceiq.cloudbreak.api.model.FileSystemConfiguration)

Example 20 with Recipe

use of com.sequenceiq.cloudbreak.domain.Recipe in project cloudbreak by hortonworks.

the class RecipeRequestToRecipeConverterTest method testConvert.

@Test
public void testConvert() {
    // GIVEN
    // WHEN
    Recipe result = underTest.convert(getRequest("stack/recipe.json"));
    // THEN
    assertAllFieldsNotNull(result, Collections.singletonList("plugins"));
}
Also used : Recipe(com.sequenceiq.cloudbreak.domain.Recipe) Test(org.junit.Test)

Aggregations

Recipe (com.sequenceiq.cloudbreak.domain.Recipe)20 RecipeScript (com.sequenceiq.cloudbreak.common.model.recipe.RecipeScript)5 IdentityUser (com.sequenceiq.cloudbreak.common.model.user.IdentityUser)5 HostGroup (com.sequenceiq.cloudbreak.domain.HostGroup)5 IOException (java.io.IOException)3 NotFoundException (com.sequenceiq.cloudbreak.controller.NotFoundException)2 Cluster (com.sequenceiq.cloudbreak.domain.Cluster)2 ArrayList (java.util.ArrayList)2 FileSystemConfiguration (com.sequenceiq.cloudbreak.api.model.FileSystemConfiguration)1 RecipeRequest (com.sequenceiq.cloudbreak.api.model.RecipeRequest)1 FileSystemConfigurator (com.sequenceiq.cloudbreak.blueprint.filesystem.FileSystemConfigurator)1 Blueprint (com.sequenceiq.cloudbreak.domain.Blueprint)1 Constraint (com.sequenceiq.cloudbreak.domain.Constraint)1 RecipeModel (com.sequenceiq.cloudbreak.orchestrator.model.RecipeModel)1 HashSet (java.util.HashSet)1 Test (org.junit.Test)1