All Projects → CiscoISE → ciscoisesdk

CiscoISE / ciscoisesdk

Licence: MIT License
Cisco Identity Services Engine Platform SDK for Python

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to ciscoisesdk

ise-automation-ansible
Ansible playbooks to configure a freshly installed Cisco Identity Services Engine (ISE) for simple operations; specifically, a Cisco Software-Defined Access lab environment.
Stars: ✭ 16 (-52.94%)
Mutual labels:  cisco, ise
netascode
This repo contains an example of the virtual network of a fictitious company which you can use to play and to learn network automation. Public repository for Network as Code. NaC model.
Stars: ✭ 36 (+5.88%)
Mutual labels:  cisco
pathman-sr
Pathman SR is an open-source app to compute paths and deploy routes in Segment Routing-enabled network.
Stars: ✭ 79 (+132.35%)
Mutual labels:  cisco
devnet-express-code-samples
Archived: This repository holds code samples for DevNet Express DNA Track
Stars: ✭ 46 (+35.29%)
Mutual labels:  cisco
pyats-sample-scripts
Various pyATS-based Test Automation Scripts
Stars: ✭ 79 (+132.35%)
Mutual labels:  cisco
telemetry collector
build telemetry software stack for Cisco nx-os, support both telemetry dial-out and gNMI dial-in
Stars: ✭ 39 (+14.71%)
Mutual labels:  cisco
easyucs
EasyUCS is a toolbox to help deploy, manage and document Cisco UCS devices
Stars: ✭ 28 (-17.65%)
Mutual labels:  cisco
vrnetlab
Run virtual routers with docker
Stars: ✭ 879 (+2485.29%)
Mutual labels:  cisco
netconf-examples
NETCONF examples for learning labs
Stars: ✭ 59 (+73.53%)
Mutual labels:  cisco
PacketTracer-AppImage
AppImage for Cisco Packet Tracer
Stars: ✭ 70 (+105.88%)
Mutual labels:  cisco
gomiko
multi-vendor networking SDK.
Stars: ✭ 46 (+35.29%)
Mutual labels:  cisco
yang
NETCONF/YANG related test framework
Stars: ✭ 15 (-55.88%)
Mutual labels:  cisco
restconf-examples
RESTconf examples for learning labs and sample code
Stars: ✭ 41 (+20.59%)
Mutual labels:  cisco
cisco-cheatsheet
A Cisco Cheatsheet: Commands and Snippets for bootstrapping, boilerplate, configuration, and hardening of Cisco routers and switches.
Stars: ✭ 66 (+94.12%)
Mutual labels:  cisco
keycloak-radius-plugin
Make the radius server as part of keycloak SSO
Stars: ✭ 102 (+200%)
Mutual labels:  cisco
node-meraki-dashboard
A modern node.js client library for using the Meraki Dashboard API.
Stars: ✭ 20 (-41.18%)
Mutual labels:  cisco
TacoTaco
Some scripts for attacks on Tacacs+ protocol
Stars: ✭ 59 (+73.53%)
Mutual labels:  cisco
crassh
Cisco Remote Automation via SSH
Stars: ✭ 39 (+14.71%)
Mutual labels:  cisco
panoptes-stream
A cloud native distributed streaming network telemetry.
Stars: ✭ 34 (+0%)
Mutual labels:  cisco
aci-learning-labs-code-samples
No description or website provided.
Stars: ✭ 21 (-38.24%)
Mutual labels:  cisco

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!

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.1.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.1.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

$ pip install ciscoisesdk

Upgrading to the latest Version

$ pip install ciscoisesdk --upgrade

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].