Documentation

9. Supported Attributes for Custom Notifications

This section describes the list of supported job attributes and the proper syntax for constructing the message text for notifications. The supported job attributes are:

  • allow_simultaneous - (boolean) indicates if multiple jobs can run simultaneously from the JT associated with this job
  • controller_node - (string) the instance that managed the isolated execution environment
  • created - (datetime) timestamp when this job was created
  • custom_virtualenv - (string) custom virtual environment used to execute job
  • description - (string) optional description of the job
  • diff_mode - (boolean) if enabled, textual changes made to any templated files on the host are shown in the standard output
  • elapsed - (decimal) elapsed time in seconds that the job ran
  • execution_node - (string) node the job executed on
  • failed - (boolean) true if job failed
  • finished - (datetime) date and time the job finished execution
  • force_handlers - (boolean) when handlers are forced, they will run when notified even if a task fails on that host (note that some conditions - e.g. unreachable hosts - can still prevent handlers from running)
  • forks - (int) number of forks requested for job
  • id - (int) database id for this job
  • job_explanation - (string) status field to indicate the state of the job if it wasn’t able to run and capture stdout
  • job_slice_count - (integer) if run as part of a sliced job, the total number of slices (if 1, job is not part of a sliced job)
  • job_slice_number - (integer) if run as part of a sliced job, the ID of the inventory slice operated on (if not part of a sliced job, attribute is not used)
  • job_tags - (string) only tasks with specified tags will execute
  • job_type - (choice) run, check, or scan
  • launch_type - (choice) manual, relaunch, callback, scheduled, dependency, workflow, sync, or scm
  • limit - (string) playbook execution limited to this set of hosts, if specified
  • modified - (datetime) timestamp when this job was last modified
  • name - (string) name of this job
  • playbook - (string) playbook executed
  • scm_revision - (string) scm revision from the project used for this job, if available
  • skip_tags - (string) playbook execution skips over this set of tag(s), if specified
  • start_at_task - (string) playbook execution begins at the task matching this name, if specified
  • started - (datetime) date and time the job was queued for starting
  • status - (choice) new, pending, waiting, running, successful, failed, error, canceled
  • timeout - (int) amount of time (in seconds) to run before the task is canceled
  • type - (choice) data type for this job
  • url - (string) URL for this job
  • use_fact_cache - (boolean) if enabled for job, Tower acts as an Ansible Fact Cache Plugin, persisting facts at the end of a playbook run to the database and caching facts for use by Ansible
  • verbosity - (choice) 0 through 5 (corresponding to Normal through WinRM Debug)
  • host_status_counts (count of hosts uniquely assigned to each status)
    • skipped (integer)
    • ok (integer)
    • changed (integer)
    • failures (integer)
    • dark (integer)
  • playbook_counts:
    • play_count - (integer) count of plays executed
    • task_count - (integer) count of tasks executed
  • summary_fields:
    • inventory
      • id - (integer) database ID for inventory
      • name - (string) name of the inventory
      • description - (string) optional description of the inventory
      • has_active_failures - (boolean) (deprecated) flag indicating whether any hosts in this inventory have failed
      • total_hosts - (deprecated) (int) total number of hosts in this inventory.
      • hosts_with_active_failures - (deprecated) (int) number of hosts in this inventory with active failures
      • total_groups - (deprecated) (int) total number of groups in this inventory
      • groups_with_active_failures - (deprecated) (int) number of hosts in this inventory with active failures
      • has_inventory_sources - (deprecated) (boolean) flag indicating whether this inventory has external inventory sources
      • total_inventory_sources - (int) total number of external inventory sources configured within this inventory
      • inventory_sources_with_failures - (int) number of external inventory sources in this inventory with failures
      • organization_id - (id) organization containing this inventory
      • kind - (choice) (empty string) (indicating hosts have direct link with inventory) or ‘smart’
    • project
      • id - (int) database ID for project
      • name - (string) name of the project
      • description - (string) optional description of the project
      • status - (choices) one of new, pending, waiting, running, successful, failed, error, canceled, never updated, ok, or missing
      • scm_type (choice) - one of (empty string), git, hg, svn, insights
    • project_update
      • id - (int) database ID for project update
      • name - (string) name of project update
      • description - (string) optional description for the project update
      • status - (choice) one of new, pending, waiting, running, successful, failed, error, or canceled
      • failed - (boolean) indicates if project update failed
    • job_template
      • id - (int) database ID for job template
      • name - (string) name of job template
      • description - (string) optional description for the job template
    • unified_job_template
      • id - (int) database ID for unified job template
      • name - (string) name of unified job template
      • description - (string) optional description for the unified job template
      • unified_job_type - (choice) unified job type (job, workflow_job, project_update, etc.)
    • instance_group
      • id - (int) database ID for instance group
      • name - (string) name of instance group
    • created_by
      • id - (int) database ID of user
      • username - (string) username
      • first_name - (string) first name
      • last_name - (string) last name
    • labels
      • count - (int) number of labels
      • results - list of dictionaries representing labels (e.g. {“id”: 5, “name”: “database jobs”})
    • source_workflow_job
      • id - (int) database ID of source workflow job
      • name - (string) name of source workflow jbo
      • description - (string) optional description of source workflow job
      • elapsed - (decimal) elapsed time in seconds that the source workflow job ran
      • failed - (boolean) indicates if source workflow job failed
      • status - (choice) one of new, pending, waiting, running, successful, failed, error, canceled

Information about a job can be referenced in a custom notification message using grouped curly braces {{ }}. Specific job attributes are accessed using dotted notation, for example {{ job.summary_fields.inventory.name }}. Any characters used in front or around the braces, or plain text, can be added for clarification, such as ‘#’ for job ID and single-quotes to denote some descriptor. Custom messages can include a number of variables throughout the message:

{{ job_friendly_name }} {{ job.id }} ran on {{ job.execution node }} in {{ job.elapsed }} seconds.

In addition to the job attributes, there are some other variables that can be added to the template:

  • approval_node_name - (string) the approval node name

  • approval_status - (choice) one of approved, denied, and timed_out

  • url - (string) URL of the job for which the notification is emitted (this applies to start, success, fail, and approval notifications)

  • workflow_url - (string) URL to the relevant approval node. This allows the notification recipient to go to the relevant workflow job page to see what’s going on (i.e., This node can be viewed at: {{ workflow_url }}). In cases of approval-related notifications, both url and workflow_url are the same.

  • job_friendly_name - (string) the friendly name of the job

  • job_metadata - (string) job metadata as a JSON string, for example:

    {'url': 'https://towerhost/$/jobs/playbook/13',
     'traceback': '',
     'status': 'running',
     'started': '2019-08-07T21:46:38.362630+00:00',
     'project': 'Stub project',
     'playbook': 'ping.yml',
     'name': 'Stub Job Template',
     'limit': '',
     'inventory': 'Stub Inventory',
     'id': 42,
     'hosts': {},
     'friendly_name': 'Job',
     'finished': False,
     'credential': 'Stub credential',
     'created_by': 'admin'}