|
6 | 6 |
|
7 | 7 | from lib.utils import filter_none_values |
8 | 8 |
|
9 | | - |
10 | 9 | __all__ = [ |
11 | 10 | 'St2BaseAction' |
12 | 11 | ] |
@@ -60,6 +59,12 @@ def _get_st2_urls(self): |
60 | 59 |
|
61 | 60 | def _get_api_key(self): |
62 | 61 | api_key = self.config.get('api_key', None) |
| 62 | + |
| 63 | + # not found look up from env vars. Assuming the pack is |
| 64 | + # configuered to work with current StackStorm instance. |
| 65 | + if not api_key: |
| 66 | + api_key = os.environ.get('ST2_ACTION_AUTH_API_KEY', None) |
| 67 | + |
63 | 68 | return api_key |
64 | 69 |
|
65 | 70 | def _get_auth_token(self): |
@@ -104,3 +109,31 @@ def _run_client_method(self, method, method_kwargs, format_func, format_kwargs=N |
104 | 109 | result = method(**method_kwargs) |
105 | 110 | result = format_func(result, **format_kwargs or {}) |
106 | 111 | return result |
| 112 | + |
| 113 | + def _manipulate_rule(self, name, pack, enabled): |
| 114 | + rule_name = '{}.{}'.format(pack, name) |
| 115 | + failure_reason = None |
| 116 | + rule = None |
| 117 | + try: |
| 118 | + rule = self.client.rules.get_by_name(name=name, pack=pack) |
| 119 | + if not rule: |
| 120 | + failure_reason = 'rule not found' |
| 121 | + except Exception as exc: |
| 122 | + failure_reason = exc |
| 123 | + |
| 124 | + if failure_reason: |
| 125 | + return 'Could not get rule {}: {}'.format(rule_name, failure_reason) |
| 126 | + |
| 127 | + rule_enabled = rule.enabled |
| 128 | + |
| 129 | + if isinstance(rule_enabled, bool) and rule_enabled == enabled: |
| 130 | + # already enabled, so just return true and formatted results |
| 131 | + return rule |
| 132 | + |
| 133 | + rule.enabled = enabled |
| 134 | + try: |
| 135 | + self.client.rules.update(rule) |
| 136 | + except Exception as exc: |
| 137 | + return 'Could not update rule {}: {}'.format(rule_name, exc) |
| 138 | + |
| 139 | + return rule |
0 commit comments