XCloudRegionsPieWidget

XCLOUD dynamic section, showing the top ten regions types in a pie chart.

python · Cortex XDR by Palo Alto Networks

Details

IDXCloudRegionsPieWidget
Languagepython
From Version6.5.0
Docker Imagedemisto/python3:3.12.13.10116658
Tagsdynamic-section

README

XCLOUD dynamic section, showing the top ten regions types in a pie chart.

Script Data


Name Description
Script Type python3
Tags dynamic-section
Cortex XSOAR Version 6.5.0

Inputs


There are no inputs for this script.

Outputs


There are no outputs for this script.

import collections
import random
from collections import Counter

import demistomock as demisto  # noqa: F401
from CommonServerPython import *  # noqa: F401


def parse_data(regions_name):
    regions_name_data = []

    regions_collections: Counter = collections.Counter(regions_name)
    top_regions = regions_collections.most_common(5)

    for region in top_regions:
        random_number = random.randint(0, 16777215)
        hex_number = str(hex(random_number))  # convert to hexadecimal
        color = f"#{hex_number[2:].zfill(6)}"  # remove 0x and prepend '#'

        region_widget_data = {
            "data": [region[1]],
            "groups": None,
            "name": str(region[0]),
            "label": str(region[0]),
            "color": color,
        }

        regions_name_data.append(region_widget_data)

    return {"Type": 17, "ContentsFormat": "pie", "Contents": {"stats": regions_name_data, "params": {"layout": "horizontal"}}}


def main():
    incident = demisto.incidents()
    regions_name = incident[0].get("CustomFields", {}).get("cloudregionlist", "0")
    if regions_name:
        data = parse_data(regions_name)

    else:
        data = {
            "Type": 17,
            "ContentsFormat": "bar",
            "Contents": {
                "stats": [
                    {"data": [0], "groups": None, "name": "N/A", "label": "N/A", "color": "rgb(255, 23, 68)"},
                ],
                "params": {"layout": "horizontal"},
            },
        }

    return_results(data)


if __name__ in ["__main__", "builtin", "builtins"]:
    main()