FindPlaybookCustomDependencies
Find custom scripts and integration dependencies used inside of playbooks.
- Type
- python
- Pack
- CommunityCommonScripts
Source
import demistomock as demisto # noqa: F401
from CommonServerPython import * # noqa: F401
def get_custom_scripts_playbooks():
results = {}
final_results = []
req_response = demisto.executeCommand(
"core-api-post", {"uri": "automation/search", "body": '{"query":"system:F AND hidden:F AND deprecated:F"}'}
)
if is_error(req_response):
raise DemistoException(f"error occurred when trying to retrieve the data error: {req_response}")
list_scripts = req_response[0].get("Contents", {}).get("response", {}).get("scripts")
if not list_scripts:
return_results("No custom scripts found.")
else:
for item in list_scripts:
results["ScriptName"] = item["name"]
results["Type"] = item["type"]
results["User"] = item["user"]
results["Modified"] = item["modified"]
query = {"query": "script.name:" + str(item["name"]) + " AND hidden:F AND deprecated:F"}
res = demisto.executeCommand("core-api-post", {"uri": "playbook/search", "body": query})
if is_error(res):
raise DemistoException(f"error occurred when trying to retrieve the data error: {res}")
playbooksUsingScripts = res[0].get("Contents", {}).get("response", {}).get("playbooks")
if not playbooksUsingScripts:
pbnamelist = []
for item in playbooksUsingScripts:
pbnamelist.append(item["name"])
results["playbooksUsingScript"] = pbnamelist
else:
results["playbooksUsingScript"] = "Not used in any playbooks"
final_results.append(results.copy())
markdown = ""
markdown = tableToMarkdown("Custom scripts Used in Playbooks", final_results)
command_results_results = CommandResults(
readable_output=markdown,
outputs_prefix="FindPlaybookCustomDependencies.CustomDependencies.CustomScripts",
outputs_key_field="ScriptName",
outputs=final_results,
)
return_results(command_results_results)
def get_integrations_playbooks() -> None:
results = {}
final_results = []
incident = demisto.incidents()[0]
accountName = incident.get("account")
accountName = f"acc_{accountName}" if accountName != "" else ""
enabledIntegrations = demisto.executeCommand(
"core-api-post",
{
"uri": f"{accountName}/settings/integration/search",
"body": {"preferences": "true"},
},
)[0]["Contents"]["response"]["instances"]
if enabledIntegrations is not None:
integrations_list = []
for item in enabledIntegrations:
integrations_list.append(item["brand"])
integrations_list = list(set(integrations_list))
for brand in integrations_list:
results["IntegrationBrands"] = brand
string_brand = f'"{str(brand)}"'
query = {"query": "brands:" + str(string_brand) + " AND hidden:F AND deprecated:F"}
res = demisto.executeCommand("core-api-post", {"uri": "playbook/search", "body": query})
if is_error(res):
raise DemistoException(f"error occurred when trying to retrieve the data error: {res}")
playbooksUsingIntegrations = res[0].get("Contents", {}).get("response", {}).get("playbooks")
if playbooksUsingIntegrations is not None:
pbnamelist = []
for item in playbooksUsingIntegrations:
pbnamelist.append(item["name"])
results["playbooksUsingIntegrations"] = pbnamelist
else:
results["playbooksUsingIntegrations"] = "Not used in any playbooks"
final_results.append(results.copy())
markdown = ""
markdown = tableToMarkdown("Integrations Used in Playbooks", final_results)
command_results_results = CommandResults(
readable_output=markdown,
outputs_prefix="FindPlaybookCustomDependencies.CustomDependencies.CustomIntegrations",
outputs_key_field="IntegrationBrand",
outputs=final_results,
)
return_results(command_results_results)
else:
return_results("No integrations are enabled")
def main():
mode = str(demisto.args()["mode"])
if mode == "scripts":
get_custom_scripts_playbooks()
elif mode == "integrations":
get_integrations_playbooks()
else:
return_error("Please enter a valid mode. Available modes: scripts, integrations.")
if __name__ in ("__main__", "__builtin__", "builtins"):
main()
README
Find custom scripts and integration dependencies used inside of playbooks.
Script Data
| Name | Description |
|---|---|
| Script Type | python3 |
Dependencies
This script uses the following commands and scripts.
- core-api-post
- Core REST API
Inputs
| Argument Name | Description |
|---|---|
| mode | Finds all the playbooks used by custom scripts and enabled integrations. |
Outputs
| Path | Description | Type |
|---|---|---|
| FindPlaybookCustomDependencies.CustomDependencies.CustomScripts | Context Path for the outputs of the playbooks using a custom script | Unknown |
| FindPlaybookCustomDependencies.CustomDependencies.CustomIntegrations | Context Path for the outputs of the playbooks using a custom integrations | Unknown |