protected Object doTaskBody()

in software/cm/ansible/src/main/java/org/apache/brooklyn/entity/cm/ansible/AnsibleSshWorkflowStep.java [67:114]


    protected Object doTaskBody(WorkflowStepInstanceExecutionContext context) {
        SshMachineLocation machine = Locations.findUniqueSshMachineLocation(context.getEntity().getLocations()).orThrow("No SSH location available for workflow at " + context.getEntity());

        Object extraVars = context.getInput(ANSIBLE_VARS);
        String playbookName = context.getInput(ANSIBLE_PLAYBOOK);

        String playbookUrl = context.getInput(ANSIBLE_PLAYBOOK_URL);
        Object playbookYamlO = context.getInput(ANSIBLE_PLAYBOOK_YAML);

        if (playbookUrl != null && playbookYamlO != null) {
            throw new IllegalArgumentException( "You cannot specify both "+  AnsibleConfig.ANSIBLE_PLAYBOOK_URL.getName() +
                    " and " + AnsibleConfig.ANSIBLE_PLAYBOOK_YAML.getName() + " as arguments.");
        }

        if (playbookUrl == null && playbookYamlO == null) {
            throw new IllegalArgumentException("You have to specify either " + AnsibleConfig.ANSIBLE_PLAYBOOK_URL.getName() +
                    " or " + AnsibleConfig.ANSIBLE_PLAYBOOK_YAML.getName() + " as arguments.");
        }

        String playbookYaml;
        try {
            playbookYaml = playbookYamlO==null ? null : playbookYamlO instanceof String ? (String) playbookYamlO :
                    BeanWithTypeUtils.newYamlMapper(context.getManagementContext(), false, null, false).writeValueAsString(playbookYamlO);
        } catch (JsonProcessingException e) {
            throw Exceptions.propagateAnnotated("Invalid YAML supplied for playbook", e);
        }
        if (playbookName==null) playbookName = "playbook-"+Strings.firstNonNull(playbookUrl, playbookYaml).hashCode();

        if (!Boolean.FALSE.equals(context.getInput(INSTALL_ANSIBLE))) {
            DynamicTasks.queue(AnsiblePlaybookTasks.installAnsible(getInstallDir(context), false));
            DynamicTasks.queue(AnsiblePlaybookTasks.setUpHostsFile(false));
        }

        if (extraVars != null) {
            DynamicTasks.queue(AnsiblePlaybookTasks.configureExtraVars(getRunDir(context), extraVars, false));
        }

        if (Strings.isNonBlank(playbookUrl)) {
            DynamicTasks.queue(AnsiblePlaybookTasks.installPlaybook(getRunDir(context), playbookName, playbookUrl));
        }

        if (Strings.isNonBlank(playbookYaml)) {
            DynamicTasks.queue(AnsiblePlaybookTasks.buildPlaybookFile(getRunDir(context), playbookName, playbookYaml));
        }

        ProcessTaskFactory<Map<?,?>> tf = SshWorkflowStep.customizeProcessTaskFactory(context, AnsiblePlaybookTasks.runAnsible(getRunDir(context), extraVars, playbookName));
        return DynamicTasks.queue(tf).asTask().getUnchecked();
    }