library for resilient-circuits functions
Project description
Recent Changes
2020-01-16: version 35.0.195
-
Added OAuth2 Client Credentials workflow handler
-
Added support for timeout argument in integrations config section
Resilient Library for Integrations
This package contains common library calls which facilitate the development of functions for IBM Resilient.
Revision History
Revision | Notes |
---|---|
v34 | Added timeout to [integrations]. For previous versions, this value should be added manually |
Modules in this package include:
- function_results - A class to standardize on the payload returned from functions. In addition to integration results returned, meta-data about the integration execution environment is returned (see
function_results.ResultPayload
).
json structure created:
{
"version": "1.0", -- used to track different versions of the payload
"success": True|False,
"reason": str, -- a string to explain if success=False
"content": json, -- the result of the function call
"raw": str, -- a string representation of content. This is sometimes
needed when the result of one function is piped into
the next
"inputs": json, -- a copy of the input parameters, useful for post-processor
script use
"metrics": json -- a set of information to capture specifics metrics
about the function's runtime environment
}
- function_metrics - A class to collect metrics information to be added to the resulting json payload. This is embedded in
function_results.ResultPayload
json structure created:
{
"version": "1.0",
"package": str, -- function name
"package_version": str, -- function version
"host": str, -- hostname of execution node
"execution_time_ms": int -- execution time of function in milliseconds
"timestamp": str -- execution date/time formatted as:
yyyy-MM-dd hh:mm:ss
}
-
html2markdown - A class to convert html code to markdown. Parameters exist to customize the conversion to the type of markdown output required.
-
integration_errors - Contains a simple exception for function failures:
IntegrationError
-
requests_common - A class of common code for making REST API calls with logic for proxies and standard return code handling.
-
resilient_common - Common code for interacting with Resilient. Functions include:
* build\_incident_url - Build a URL back to the issuing incident for 3rd party software reference. * build\_resilient_url - Build a URL to access resilient. Useful for API calls. * clean_html - Remove html code from rich text fields. Data is concatenated together. Use html2markdown for better results. * unescape - Restore data which has been encoded for URL transmission (ex. \> = >). * validate_fields - Ensure require fields from Resilient or the app.config file are present. * get\_file_attachment - Return a byte string of a Resilient attachment related to an incident, task or artifact. * get\_file\_attachment\_name - Return the name of an attachment * readable_datetime - Convert epoch formatted data and time value into a string. * str\_to_bool - Convert string values into boolean.
Prerequisites:
resilient version 30 or later
resilient-circuits version 30 or later
Usage examples:
from resilient_lib import build_incident_url, build_resilient_url
url_to_incident = build_incident_url(build_resilient_url("https://my.resilient.com",
8443), 12345)
self.assertEqual("https://my.resilient.com:8443/#incidents/12345", url_to_incident)
from resilient_lib import RequestsCommon
from resilient_lib import ResultPayload
fr = ResultPayload(pgkname, **function_params)
req_common = RequestsCommon(app_config_params, function_params)
result = req_common.execute_call('post', issue_url, payload, log=log,
basicauth=(function_params['user'],
function_params['password']), verify_flag=
function_params['verifyFlag'], headers=HTTP_HEADERS)
results_payload = fr.done(True, None, result)
from resilient_lib import MarkdownParser
data = "<div class='rte'><div><strong><u>underline and strong</u></strong></div></div>"
markdown = "*_underline and strong_*"
parser = MarkdownParser(bold="*", underline="_") # override defaults
converted = parser.convert(data)
self.assertEqual(converted, markdown)
- oauth2_client_credentials_session - has OAuth2ClientCredentialsSession class that
standardizes OAuth2 Client Credential flow's implementation. It subclasses
requests.Session
to provide a convenient interaction.
Usage example:
>>> api1 = OAuth2ClientCredentialsSession('https://example1.com/<tenant_id>/oauth/v2/',\
client_id='xxx', client_secret='xxx')
>>> api2 = OAuth2ClientCredentialsSession('https://example2.com/<tenant_id>/oauth/v2/',\
client_id='xxx', client_secret='xxx')
>>>
>>> api1.post('https://example1.com/v4/me/messages', data={}) # use as a regular requests session object
>>> api2.get('https://example2.com/v2/me/updates')
>>> # When writing an integration, use RequestsCommon to get the proxies defined in in your app.config file.
>>> rc = RequestsCommon(xxx)
>>> api3 = OAuth2ClientCredentialsSession('https://example3.com/{}/test', proxies=rc.get_proxies())
Installation
Install this package as:
$ pip install resilient_lib-<version>.tar.gz
Setup
To configure the library properties, run: resilient-circuits config [-u | -c]
.
Then edit the [integrations] section to define proxy settings which will be used for all integrations which use this library:
[integrations]
# These proxy settings will be used by all integrations.
# To override, add any parameter to your specific integration section
http_proxy=
https_proxy=
timeout=30
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.