Ciscoisesdk Save

Cisco Identity Services Engine Platform SDK for Python

Project README

============= ciscoisesdk

ciscoisesdk is a community developed Python library for working with the Identity Services Engine APIs. Our goal is to make working with Cisco Identity Services Engine in Python a native and natural experience!

.. code-block:: python

from ciscoisesdk import IdentityServicesEngineAPI
from ciscoisesdk.exceptions import ApiError

# Create a IdentityServicesEngineAPI connection object;
# it uses ISE custom URL, username, and password, with ISE API version 3.3_patch_1
# and its API Gateway enabled,
# verify=True to verify the server's TLS certificate
# with debug logs disabled
# and without using the CSRF token
api = IdentityServicesEngineAPI(username='admin',
                                password='C1sco12345',
                                uses_api_gateway=True,
                                base_url='https://198.18.133.27',
                                version='3.3_patch_1',
                                verify=True,
                                debug=False,
                                uses_csrf_token=False)
# NOTE: This collection assumes that the ERS APIs and OpenAPIs are enabled.

# Get allowed protocols (first page)
search_result = api.allowed_protocols.get_all().response.SearchResult
if search_result and search_result.resources:
  for resource in search_result.resources:
    resource_detail = api.allowed_protocols.get_by_id(
                        resource.id
                      ).response.AllowedProtocols
    print("Id {}\nName {}\nallowChap {}\n".format(resource_detail.id,
                                                  resource_detail.name,
                                                  resource_detail.allowChap))
print("----------")

# Handle pagination with a generator
allowed_protols_gen = api.allowed_protocols.get_all_generator()
for allowed_protocols_page_resp in allowed_protols_gen:
  allowed_protols_result = allowed_protocols_page_resp.response.SearchResult
  for resource in allowed_protols_result.resources:
    resource_detail = api.allowed_protocols.get_by_id(
                        resource.id
                      ).response.AllowedProtocols
    print("Id {}\nName {}\nallowChap {}\n".format(resource_detail.id,
                                                  resource_detail.name,
                                                  resource_detail.allowChap))

# Create network device
try:
    network_device_response = api.network_device.create(
                                name='ISE_EST_Local_Host_19',
                                network_device_iplist=[{"ipaddress": "127.35.0.1", "mask": 32}])
    print("Created, new Location {}".format(network_device_response.headers.Location))
except ApiError as e:
    print(e)

# Filter network device
device_list_response = api.network_device.get_all(filter='name.EQ.ISE_EST_Local_Host_19')
device_responses = device_list_response.response.SearchResult.resources
if len(device_responses) > 0:
    device_response = device_responses[0]

    # Get network device detail
    device_response_detail = api.network_device.get_by_id(device_response.id).response.NetworkDevice

# Advance usage example using Custom Caller functions
## Define a Custom caller named function
## Call them with:
##    get_created_result(network_device_response.headers.Location)
def get_created_result(location):
    return api.custom_caller.call_api('GET', location)

## Define the get_created_result function
## under the custom_caller wrapper.
## Call them with:
##    api.custom_caller.get_created_result(network_device_response.headers.Location)
def setup_custom():
    api.custom_caller.add_api('get_created_result',
                                lambda location:
                                api.custom_caller.call_api('GET', location)
                              )

# Add the custom API calls to the connection object under the custom_caller wrapper
setup_custom()

# Call the newly added functions
created_device_1 = get_created_result(network_device_response.headers.Location)
created_device_2 = api.custom_caller.get_created_result(network_device_response.headers.Location)
print(created_device_1.response == created_device_2.response)

if len(device_responses) > 0:
    device_response = device_responses[0]

    # Delete network device
    delete_device = api.network_device.delete_by_id(device_response.id)

Introduction_

Installation

Installing and upgrading ciscoisesdk is easy:

Install via PIP

.. code-block:: bash

$ pip install ciscoisesdk

Upgrading to the latest Version

.. code-block:: bash

$ pip install ciscoisesdk --upgrade

Compatibility matrix

The following table shows the supported versions.

.. list-table:: :widths: 50 50 :header-rows: 1

    • Cisco ISE version
    • Python "ciscoisesdk" version
    • 3.1.0
    • 1.2.0
    • 3.1_Patch_1
    • 2.0.12
    • 3.2_beta
    • 2.1.2
    • 3.3_patch_1
    • 2.2.0

If your SDK is older please consider updating it first.

Documentation

Excellent documentation is now available at: https://ciscoisesdk.readthedocs.io

Check out the Quickstart_ to dive in and begin using ciscoisesdk.

Release Notes

Please see the releases_ page for release notes on the incremental functionality and bug fixes incorporated into the published releases.

Questions, Support & Discussion

ciscoisesdk is a community developed and community supported project. If you experience any issues using this package, please report them using the issues_ page.

Contribution

ciscoisesdk_ is a community development projects. Feedback, thoughts, ideas, and code contributions are welcome! Please see the Contributing_ guide for more information.

Inspiration

This library is inspired by the webexteamssdk_ library

Change log

All notable changes to this project will be documented in the CHANGELOG_ file.

The development team may make additional name changes as the library evolves with the ISE APIs.

Copyright (c) 2021 Cisco and/or its affiliates.

.. _Introduction: https://ciscoisesdk.readthedocs.io/en/latest/api/intro.html .. _ciscoisesdk.readthedocs.io: https://ciscoisesdk.readthedocs.io .. _Quickstart: https://ciscoisesdk.readthedocs.io/en/latest/api/quickstart.html .. _ciscoisesdk: https://github.com/CiscoISE/ciscoisesdk .. _issues: https://github.com/CiscoISE/ciscoisesdk/issues .. _pull requests: https://github.com/CiscoISE/ciscoisesdk/pulls .. _releases: https://github.com/CiscoISE/ciscoisesdk/releases .. the repository: ciscoisesdk .. pull request: pull requests .. _Contributing: https://github.com/CiscoISE/ciscoisesdk/blob/master/docs/contributing.rst .. _webexteamssdk: https://github.com/CiscoDevNet/webexteamssdk .. _CHANGELOG: https://github.com/CiscoISE/ciscoisesdk/blob/main/CHANGELOG.md

Open Source Agenda is not affiliated with "Ciscoisesdk" Project. README Source: CiscoISE/ciscoisesdk
Stars
54
Open Issues
12
Last Commit
3 weeks ago
License
MIT

Open Source Agenda Badge

Open Source Agenda Rating