KeylightCreateIssue
Use this script to simplify the process of creating or updating a record in Keylight (v2). You specify custom arguments for which to populate the components. The arguments in this documentation are meant as examples only.
python · Lockpath Keylight
Source
import json import demistomock as demisto from CommonServerPython import * """ This script is used to simplify the process of creating or updating a record in Keylight (v2). You can add fields in the record as script arguments and/or in the code. The format for the `kl-create-record` and `kl-update-record` commands are created quickly. Fill out the args below and add arguments accordingly. `args` dict contains the record fields you want to create in the component through create/update records. `lookup_fields` - specifies which fields are lookup fields and what components they are taken from. Output - locate the json file to create/update your records in `Keylight.JSON` """ def main(): ############################################################## args = { # 'field_name': 'field_value', "Task ID": demisto.args().get("task_id"), # Example "Audit Project": demisto.args().get("project"), # Example } lookup_fields = { # 'argName': 'componentName', "Audit Project": "Audit Projects" # Example } ############################################################## components = demisto.executeCommand("kl-get-component", {})[0].get("Contents", {}) final_json = [] for field_name in args: if field_name in lookup_fields: component_id = get_component_id_by_name(lookup_fields.get(field_name), components) records = demisto.executeCommand("kl-get-records", {"component_id": component_id})[0].get("Contents", {}) lookup_field_id = get_lookup_id(args[field_name], records) field = {"fieldName": field_name, "value": lookup_field_id, "isLookup": True} final_json.append(field) else: field = {"fieldName": field_name, "value": args[field_name], "isLookup": False} final_json.append(field) return_outputs(json.dumps(final_json, indent=4), {"Keylight.JSON": json.dumps(final_json)}, final_json) def get_lookup_id(lookup_value, records): for record in records: if record.get("DisplayName", "") == lookup_value: return record.get("ID", -1) raise ValueError(f"Could not find {lookup_value} in the specified component.") def get_component_id_by_name(component_name, components): for component in components: if component.get("Name") == component_name: return component.get("ID", -1) raise ValueError("Could not find component.") if __name__ == "__builtin__" or __name__ == "builtins": main()
README
Use this script to simplify the process of creating or updating a record in Keylight (v2). You specify custom arguments for which to populate the components. The arguments in this documentation are meant as examples only.
Script Data
| Name | Description |
|---|---|
| Script Type | python3 |
| Cortex XSOAR Version | 5.0.0 |
Dependencies
This script uses the following commands and scripts.
- kl-get-component
- kl-get-records
Inputs
| Argument Name | Description |
|---|---|
| task_id | The task ID (task name) of the task to create. This is not a lookup field. |
| project | The project name to create. This is a lookup field. |
Outputs
| Path | Description | Type |
|---|---|---|
| Keylight.JSON | The format needed to create or update a record in Keylight(v2). | Unknown |