Basic Clear ANC Endpoint Policy Notification Example

This sample registers and outputs messages received for Cisco Adaptive Network Control (ANC) clear endpoint policy notifications via DXL and Cisco pxGrid.

Prerequisites

Running

To run this sample execute the sample/basic/basic_anc_clear_endpoint_policy_notification_example.py script as follows:

python sample/basic/basic_anc_clear_endpoint_policy_notification_example.py

After the example starts up, the initial output should appear similar to the following:

Waiting for clear policy events...

To generate a clear endpoint policy by IP address notification, run through the steps in the Basic Clear ANC Endpoint Policy by IP Address Example in a separate terminal command window. Assuming that a policy is successfully cleared, the following message should appear in the output of the notification example:

{
    "ipAddress": "192.168.1.1"
}

To generate a clear endpoint policy by MAC address notification, run through the steps in the Basic Clear ANC Endpoint Policy by MAC Address Example in a separate terminal command window. Assuming that a policy is successfully cleared, the following message should appear in the output of the notification example:

{
    "macAddress": "00:11:22:33:44:55"
}

Note that if the clear endpoint policy calls encounter any errors -- for example, due to no policy already having been applied -- no corresponding event notification will be generated.

Details

The majority of the sample code is shown below:

# Create the client
with DxlClient(config) as dxl_client:

    # Connect to the fabric
    dxl_client.connect()

    logger.info("Connected to DXL fabric.")

    # Create client wrapper
    client = CiscoPxGridClient(dxl_client)

    class MyAncClearEndpointPolicyCallback(AncClearEndpointPolicyCallback):
        def on_clear_endpoint_policy(self, clear_dict):
            print("on_clear_endpoint_policy\n" +
                  MessageUtils.dict_to_json(clear_dict, pretty_print=True))

    # Attach callback for 'clear policy' events
    client.anc.add_clear_endpoint_policy_callback(
        MyAncClearEndpointPolicyCallback())

    # Wait forever
    print("Waiting for clear policy events...")
    while True:
        time.sleep(60)

Once a connection is established to the DXL fabric, a dxlciscopxgridclient.client.CiscoPxGridClient instance is created which will be used to communicate with Cisco pxGrid.

Next, the dxlciscopxgridclient.client.AncClientCategory.add_clear_endpoint_policy_callback() method is invoked to register a callback for clear policy event notifications.

When a clear endpoint policy event occurs, the on_clear_endpoint_policy method in the MyAncClearEndpointPolicyCallback class is invoked. The clear_dict parameter passed into the callback, a dictionary (dict) which contains the content of the event notification, is displayed.