Skip to content

Commit f929336

Browse files
authored
Merge pull request #20 from copartit/master
1.2.0 - executions pause and resume
2 parents 16992f0 + 7903a72 commit f929336

13 files changed

+164
-1
lines changed

CHANGES.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Change Log
22

3+
## 1.2.0
4+
5+
- Added `st2.executions.pause`, `st2.executions.resume`, `st2.executions.cancel` actions.
6+
37
## 1.1.0
48

59
- Added decrypt and decompress parameters to `st2.kv.get_object`

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,3 +71,9 @@ sensors and more.
7171
action execution.
7272
* ``!st2 executions re-run <execution id>`` - Re-run a particular action
7373
execution.
74+
* ``!st2 executions cancel <execution id>`` - Pause a particular action
75+
execution.
76+
* ``!st2 executions pause <execution id>`` - Pause a particular action
77+
execution.
78+
* ``!st2 executions resume <execution id>`` - Resume a particular action
79+
execution.

actions/executions_cancel.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
from lib.action import St2BaseAction
2+
3+
__all__ = [
4+
'St2ExecutionsCancel'
5+
]
6+
7+
8+
class St2ExecutionsCancel(St2BaseAction):
9+
def run(self, ids):
10+
result = {}
11+
success = True
12+
for i in ids:
13+
try:
14+
res = self.client.executions.delete_by_id(instance_id=i)
15+
if res.get('faultstring'):
16+
success = False
17+
except Exception as exc:
18+
result[i] = str(exc)
19+
success = False
20+
else:
21+
result[i] = res
22+
return success, result

actions/executions_cancel.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
name: "executions.cancel"
3+
enabled: true
4+
description: "Cancel action executions."
5+
runner_type: python-script
6+
entry_point: executions_cancel.py
7+
parameters:
8+
ids:
9+
type: "array"
10+
description: "IDs of action executions to resume."
11+
required: true

actions/executions_pause.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from lib.action import St2BaseAction
2+
from lib.formatters import format_result
3+
4+
__all__ = [
5+
'St2ExecutionsPause'
6+
]
7+
8+
9+
class St2ExecutionsPause(St2BaseAction):
10+
def run(self, ids):
11+
result = {}
12+
success = True
13+
for i in ids:
14+
try:
15+
res = self.client.liveactions.pause(execution_id=i)
16+
except Exception as exc:
17+
result[i] = str(exc)
18+
success = False
19+
else:
20+
result[i] = format_result(item=res)
21+
return success, result

actions/executions_pause.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
name: "executions.pause"
3+
enabled: true
4+
description: "Pause action executions (workflow executions only)."
5+
runner_type: python-script
6+
entry_point: executions_pause.py
7+
parameters:
8+
ids:
9+
type: "array"
10+
description: "IDs of action executions to pause."
11+
required: true

actions/executions_resume.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from lib.action import St2BaseAction
2+
from lib.formatters import format_result
3+
4+
__all__ = [
5+
'St2ExecutionsResume'
6+
]
7+
8+
9+
class St2ExecutionsResume(St2BaseAction):
10+
def run(self, ids):
11+
result = {}
12+
success = True
13+
for i in ids:
14+
try:
15+
res = self.client.liveactions.resume(execution_id=i)
16+
except Exception as exc:
17+
result[i] = str(exc)
18+
success = False
19+
else:
20+
result[i] = format_result(item=res)
21+
return success, result

actions/executions_resume.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
name: "executions.resume"
3+
enabled: true
4+
description: "Resume action executions (workflow executions only)."
5+
runner_type: python-script
6+
entry_point: executions_resume.py
7+
parameters:
8+
ids:
9+
type: "array"
10+
description: "IDs of action executions to resume."
11+
required: true

actions/lib/formatters.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,7 @@ def format_client_list_result(result, exclude_attributes=None):
1414
formatted.append(value)
1515

1616
return formatted
17+
18+
19+
def format_result(item):
20+
return item.to_dict() if item else None

aliases/executions_cancel.yaml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
---
2+
name: "st2_executions_cancel"
3+
action_ref: "st2.executions.cancel"
4+
description: "Cancel action executions."
5+
formats:
6+
- "st2 cancel execution {{ ids }}"
7+
- "st2 executions cancel {{ ids }}"
8+
result:
9+
extra:
10+
slack:
11+
color: "{% if execution.status == 'succeeded' %}#219939{% else %}#d80015{% endif %}"
12+
format: |
13+
{% for key,value in execution.result.result.items() %}
14+
{{ key }} - {% if value is string %}{{ value }}
15+
{% else %}{% if value["faultstring"] %}{{ value["faultstring"] }}{% else %}{{ value["status"] }}{% endif %}
16+
{% endif %}
17+
{% endfor %}

0 commit comments

Comments
 (0)