GetCiscoISEActiveInstance

Determines which configured Cisco ISE instance is in active/primary state and returns the name of the instance.

python · IoT 3rd Party Integrations by Palo Alto Networks (Deprecated)

Source

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


def get_cisco_ise_active_instance_or_err_msg():
    """
    Get ise node details for all configured instances and determine
    which on is active/primary. All gather error messages if possible
    for nodes that are not in active state or have connnectivity issues.
    """
    err_msg = []
    active_instance = None
    # run common on all configured Cisco ISE nodes
    response = demisto.executeCommand("cisco-ise-get-nodes", {})
    for resp in response:
        local_instance = resp["ModuleName"]
        if isError(resp):
            err = resp["Contents"]
            err_msg.append(f'{err.split("-")[0]} , instance name = {local_instance}')
        else:
            # Check if the output has any node that matches the local instance
            # and is also a primary or is in standalone mode
            for node_data in resp["Contents"]["CiscoISE.NodesData"]:
                if (
                    node_data["isLocalIstance"]
                    and node_data["inDeployment"] is False
                    or (node_data["inDeployment"] is True and node_data["primaryPapNode"] is True)
                ):
                    active_instance = local_instance

    return active_instance, err_msg


def main():
    try:
        active_instance, err_msg = get_cisco_ise_active_instance_or_err_msg()
    except Exception as ex:
        return_error(str(ex))

    if active_instance is None:
        readable_status = f"No Primary/Active Cisco ISE node found = {err_msg}"
        results = CommandResults(
            readable_output=readable_status, outputs_prefix="PaloAltoIoTIntegrationBase.NodeErrorStatus", outputs=readable_status
        )
        # Write data to context and display result in war room
        return_results(results)
        # Also return error, so we can detect it in the playbook
        return_error(err_msg)
    else:
        readable_status = f"Found active Cisco ISE node = {active_instance}"
        results = CommandResults(
            readable_output=readable_status,
            outputs_prefix="PaloAltoIoTIntegrationBase.ActiveNodeInstance",
            outputs=active_instance,
        )
        return_results(results)


if __name__ in ("__main__", "__builtin__", "builtins"):
    main()

README

Determines which configured Cisco ISE instance is in active/primary state and returns the name of the instance.

Script Data


Name Description
Script Type python3
Tags PANW IoT 3rd Party Integration, Cisco ISE
Cortex XSOAR Version 6.0.0

Used In


This script is used in the following playbooks and scripts.

  • Bulk Export to Cisco ISE - PANW IoT 3rd Party Integration
  • Un-quarantine Device in Cisco ISE - PANW IoT 3rd Party Integration
  • Quarantine Device in Cisco ISE - PANW IoT 3rd Party Integration
  • Incremental Export to Cisco ISE - PANW IoT 3rd Party Integration

Dependencies


This script uses the following commands and scripts.

  • cisco-ise-get-nodes

This Scripts uses the following commands:
‘cisco-ise-get-nodes’ - Gets data for all Cisco ISE nodes in the current deployment

Inputs


There are no inputs for this script.

Outputs


Path Description Type
PaloAltoIoTIntegrationBase.ActiveNodeInstance Returns instance name of the active Cisco ISE node. unknown
PaloAltoIoTIntegrationBase.NodeErrorStatus Returns the nodes error status if no active Cisco ISE nodes are found. unknown