예제 #1
0
def raise_playbook_errors(pbs, instance_ip, hostname, allow_failures=False):
    """
    """
    if not type(pbs) == list:
        pbs = [pbs]
    error_message = ""
    for pb in pbs:
        if pb.stats.dark:
            if hostname in pb.stats.dark:
                error_message += playbook_error_message(
                    pb.stats.dark[hostname], "Unreachable")
            elif instance_ip in pb.stats.dark:
                error_message += playbook_error_message(
                    pb.stats.dark[instance_ip], "Unreachable")
        if not allow_failures and pb.stats.failures:
            if hostname in pb.stats.failures:
                error_message += playbook_error_message(
                    pb.stats.failures[hostname], "failed")
            elif instance_ip in pb.stats.failures:
                error_message += playbook_error_message(
                    pb.stats.failures[instance_ip], "failed")
    if error_message:
        msg = error_message[:-2] + str(
            pb.stats.processed_playbooks.get(hostname, {}))
        raise AnsibleDeployException(msg)
예제 #2
0
def _one_runner_all_playbook_execution(playbook_dir,
                                       host_file,
                                       extra_vars,
                                       my_limit,
                                       logger=None,
                                       limit_playbooks=None,
                                       **runner_opts):
    runner = Runner.factory(
        host_file,
        playbook_dir,
        extra_vars=extra_vars,
        limit_hosts=my_limit,
        logger=logger,
        limit_playbooks=limit_playbooks,
        private_key_file=settings.ATMOSPHERE_PRIVATE_KEYFILE,
        # Use atmosphere settings
        group_vars_map={
            filename: os.path.join(settings.ANSIBLE_GROUP_VARS_DIR, filename)
            for filename in os.listdir(settings.ANSIBLE_GROUP_VARS_DIR)
        },
        **runner_opts)
    if runner.playbooks == []:
        msg = "Playbook directory has no playbooks: %s" \
            % (playbook_dir, )
        if limit_playbooks:
            msg = "'limit_playbooks=%s' generated zero playbooks." \
                  " Available playbooks in directory are: %s" \
                  % (limit_playbooks, runner._get_files(playbook_dir))
        raise AnsibleDeployException(msg)
    runner.run()
    return runner
예제 #3
0
def raise_playbook_errors(pbs, hostname):
    error_message = ""
    for pb in pbs:
        if pb.stats.dark:
            error_message += playbook_error_message(pb.stats.dark[hostname],
                                                    "Unreachable", pb)
        if pb.stats.failures:
            error_message += playbook_error_message(
                pb.stats.failures[hostname], "Failures", pb)
    if error_message:
        raise AnsibleDeployException(error_message[:-1])
예제 #4
0
def raise_playbook_errors(playbook_results,
                          instance_id,
                          instance_ip,
                          hostname,
                          allow_failures=False):
    """
    Return value 4 means unreachable/dark
    Return value 2 means failure
    """
    if not type(playbook_results) == list:
        playbook_results = [playbook_results]
    error_message = ""
    for rc in playbook_results:
        if rc == 4:
            error_message += "Unreachable"
        elif not allow_failures and rc == 2:
            error_message += "Failed"
    if error_message:
        msg = "Instance: %s IP:%s %s - %s" % (instance_id, instance_ip,
                                              'Hostname: ' + hostname if
                                              hostname else "", error_message)
        raise AnsibleDeployException(msg)