November 7, 2017
Did you know you can do something like this with StackStorm ChatOps?
Looks simple, but it’s a very useful thing to have in your ChatOps toolset, especially for potentially long-running commands.
This small feature was implemented a while ago, but we didn’t make much of a song and dance about it, so you might have missed it.
execution.elapsed_seconds
Jinja variable in ChatOps Alias template to get the action duration in seconds (123.4422
).to_human_time_from_seconds
and make it readable (2m3s
)Putting everything together in a Jinja expression:
{{ execution.elapsed_seconds | to_human_time_from_seconds }}
And here is a ChatOps Alias example with the Slack attachments API in place:
# Example from:
# /2015/06/24/ansible-chatops-get-started-%F0%9F%9A%80/
---
name: chatops.ansible_package_update
action_ref: st2-chatops-aliases.update_package
description: Update package on remote hosts
formats:
- display: "update <package> on <hosts>"
representation:
- "update {{ package }} on {{ hosts }}"
- "upgrade {{ package }} on {{ hosts }}"
result:
format: |
Update package `{{ execution.parameters.package }}` on `{{ execution.parameters.hosts }}` host(s): {~}
{% if execution.result.stderr %}
*Exit Status*: `{{ execution.result.return_code }}`
*Stderr:* ```{{ execution.result.stderr }}```
*Stdout:*
{% endif %}
```{{ execution.result.stdout }}```
extra:
slack:
color: "{% if execution.result.succeeded %}good{% else %}danger{% endif %}"
fields:
- title: Updated nodes
value: "{{ execution.result.stdout|regex_replace('(?!changed=1).', '')|wordcount }}"
short: true
- title: Executed in
# THIS line
value: ":timer_clock: {{ execution.elapsed_seconds | to_human_time_from_seconds }}"
short: true
footer: "{{ execution.id }}"
footer_icon: "/wp/wp-content/uploads/2015/01/favicon.png"
FYI: Since StackStorm
v1.4
ChatOps integrates with the Slack attachments API, allowing you to produce nicely formatted message responses like you see in the screenshot.
Enjoy!
If you have some cool ChatOps ideas – we’ll be glad to hear from you via Feature Request or meet us in StackStorm Public Slack.