• Stars
    star
    134
  • Rank 270,967 (Top 6 %)
  • Language
    C++
  • License
    Apache License 2.0
  • Created over 8 years ago
  • Updated 7 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Generate model-driven APIs from YANG models

Codacy Badge License Build Status codecov Docker Automated build

ydk-logo-128

YANG Development Kit

Table of Contents

Overview

The YANG Development Kit (YDK) is a software development tool, which provides API for building applications based on YANG models. The YDK allows generate YANG model API and provides services to apply generated API over various communication protocols. Currently implemented protocols are: Netconf, Restconf, OpenDaylight and gNMI. YDK provides CRUD and protocol specific services over above protocols. YDK also provides codec services to translate API models to/from XML and JSON encoded strings.

The YDK is a multi-language software. Currently supported languages are Python, Go, and C++.

Other tools and libraries are used to deliver YDK functionality:

  • YANG model analysis and code generation is implemented using APIs from the pyang library
  • Documentation is generated using Sphinx
  • Runtime YANG model analysis is done using libyang
  • C++ to python bindings are created using pybind11
  • C++ uses catch and spdlog for tests and logging respectively

The output of ydk-gen is either a core package, that defines main services and providers, or add-on service package like gNMI Service, or a module bundle, consisting of programming language APIs derived from YANG models. Each module bundle is generated using a bundle profile and the ydk-gen tool. Developers can either use pre-packaged generated bundles (e.g. ydk-py), or define their own bundle, consisting of a set of YANG models, using a bundle profile (e.g. ietf_0_1_5.json). This gives the developer an ability to customize scope of their bundle based on their requirements.

Backward Compatibility

The YDK-0.8.6 core is backward compatible with all previously generated model bundles starting from release of YDK-0.7.3. However the YDK-0.8.6 generates different code and model API comparing to YDK-0.8.4. The YDK-0.8.6 generated code is not compatible with YDK-0.7.2 and earlier bundle packages due to changes in modeling and handling of YList objects.

NOTE. Starting from release 0.8.6 the YDK does not support Python2 interpreter as it was deprecated.

Docker

A docker image is automatically built with the latest ydk-gen commit. This docker can be used to run ydk-gen without installing anything natively on your platform.

To use the docker image, install docker on your system and run the below command. See the docker documentation for more details.

docker run -it ydksolutions/ydk-gen:0.8.6.4

System Requirements

The YDK is currently supported on the following platforms including native installations, virtual machines, and docker images:

  • Linux Ubuntu Xenial (16.04 LTS), Bionic (18.04 LTS), and Focal (20.04 LTS)
  • Linux CentOS versions 7 and Centos Stream 8 (Centos 8.x has been EOL as of December 31 of 2021)
  • Linux RHEL version 7.x and 8.x
  • MacOS up to 11.6.2 (Big Sur)

On Windows 10 the Linux virtual machine can run using Windows Subsystem for Linux (WSL); check this for virtual machine installation procedure. The YDK has been tested in such environment on Ubuntu Bionic (18.04 LTS) and Focal (20.04 LTS) images obtained from Microsoft Store.

On supported platforms the YDK can be installed using installation script. On other platforms the YDK should be installed manually from source. For both the methods the user must install git package prior to the installation procedure.

All YDK core components are based on C and C++ code. These components compiled using default compilers for the supported platform. Corresponding binaries, libraries, and header files are installed in default locations, which are /usr/local/bin, /usr/local/lib, and /usr/local/include. The user must have sudo access in order to install YDK core components to these locations. Make sure the sudo package is installed on your platform prior to the YDK installation procedure.

Core Installation

Installation script

For YDK installation it is recommended to use script install_ydk.sh from ydk-gen git repository. The script detects platform OS, installs all the dependencies and builds complete set of YDK components for specified language.

If the script installs any YDK component, it also creates an environment activation file '.env' in the 'ydk-gen' directory, which can be used to activate YDK runtime environment identical to the installation environment. To activate YDK runtime environment simply run this command once in bash shell:

cd ydk-gen
source .env

The YDK extensively uses Python scripts for building its components and model API packages (bundles). In order to isolate YDK Python environment from system installation, the script can build Python3 virtual environment. If built, the user must manually activate virtual environment when generating model bundles and/or running YDK based application. By default the Python virtual environment is installed under $HOME/venv directory. For different location the PYTHON_VENV environment variable should be set to that location.

NOTE. It is strongly recommended to use Python virtual environment on Centos/RHEL and Mac platforms.

When installing YDK for Python or Go programming languages, the third party dependencies and C++ packages must be installed first. This step requires sudo/root access to the installation platform. Here is simple example of core YDK installation for Python programming language and Python virtual environment:

git clone https://github.com/ygorelik/ydk-gen.git
cd ydk-gen
export YDKGEN_HOME=`pwd`  # optional
export PYTHON_VENV=$HOME/ydk_vne  # optional
./install_ydk.sh --cpp --core --venv   # This step requires sudo access!
./install_ydk.sh --py --core --venv

The script also allows installing individual components like dependencies, core, and service packages for specified programming language or for all supported languages. Full set of script capabilities could be viewed like this:

./install_ydk.sh --help
usage: install_ydk [ {--cpp|--py|--go|--all} ] [-c] [-s gnmi] [-h] [-n] [-v]
Options and arguments:
  --cpp                 install YDK for C++ programming language;
                        requires sudo access for dependencies and libraries installation
  --go                  install YDK for Go programming language
  --py|--python         install YDK for Python programming language
  --all                 install YDK for all available programming languages;
                        requires sudo access for dependencies and libraries installation
  -v|--venv             create python virtual environment
  -c|--core             install YDK core package
  -s|--service gnmi     install gNMI service package
  -n|--no-deps          skip installation of dependencies;
                        applicable only with --cpp and --all options
  -h|--help             print this help message and exit

Environment variables:
YDKGEN_HOME         specifies location of ydk-gen git repository;
                    if not set, $HOME/ydk-gen is assumed
PYTHON_VENV         specifies location of python virtual environment;
                    if not set, $HOME/venv is assumed
GOROOT              specifies installation directory of go software;
                    if not set, /usr/local/go is assumed
GOPATH              specifies location of go source directory;
                    if not set, $HOME/go is assumed
C_INCLUDE_PATH      location of C include files;
                    if not set, /usr/local/include is assumed
CPLUS_INCLUDE_PATH  location of C++ include files;
                    if not set, /usr/local/include is assumed
CMAKE_LIBRARY_PATH  Location of Python shared libraries;
                    if not set, default system library location is assumed

If user environment is different from the default one (different Python installation or different location of libraries) then building from source method should be used.

Building from source

Environment variables

In some OS configurations during YDK package installation the cmake fails to find C/C++ headers for previously installed YDK libraries. In this case the header files location must be specified explicitly (in below commands the default location is shown):

  export C_INCLUDE_PATH=/usr/local/include
  export CPLUS_INCLUDE_PATH=/usr/local/include

When non-standard Python installation is used or there are multiple installations of Python on the platform, the PATH and CMAKE_LIBRARY_PATH environment variables must be set accordingly in order for the installation scripts to pick up correct Python binaries and shared libraries.

Installing third party dependencies

If user platform is supported one, it is recommended to use ydk-gen/install_ydk.sh script. The script will also install Python virtual environment in default or specified location, when '--venv' is specified.

# Clone ydk-gen from GitHub
git clone https://github.com/ygorelik/ydk-gen.git
cd ydk-gen

# Define optional environment variables and install dependencies
export YDKGEN_HOME=`pwd`  
export PYTHON_VENV=$HOME/ydk_venv
./install_ydk.sh -v   # also builds Python virtual environment

For unsupported platforms it is recommended to follow logic of ydk-gen/test/dependencies-* scripts.

Installing core components

# If created, activate YDK runtime environment
source .env

# Generate and install YDK core library
python3 generate.py -is --core --cpp

# For Python programming language add
python3 generate.py -i --core --py

# For Go programming language add
python3 generate.py -i --core --go

Adding gNMI service

In order to enable YDK support for gNMI protocol, which is optional, the user need install third party software and YDK gNMI service package.

gNMI service installation

Here is simple example how gNMI service package for Python virtual environment could be added:

cd ydk-gen
./install_ydk.sh --cpp --service gnmi -v  # requires sudo access
./install_ydk.sh --py --service gnmi -v

Runtime environment

When YDK is installed using 'install_ydk.sh' script, the runtime environment is set by running 'source .env' in bash shell. The below information is applicable only when YDK is installed manually, which is not recommended.

There is an open issue with gRPC on Centos/RHEL, which requires an extra step before running any YDK gNMI application. See this issue on GRPC GitHub for details. As a workaround, the YDK based application runtime environment must include setting of LD_LIBRARY_PATH variable:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:/usr/local/lib64

Generate YDK components

All the YDK components/packages can be generated by using Python script generate.py. To get all of its options run:

cd ydk-gen
source .env
python3 generate.py --help
usage: generate.py [-h] [-l] [--core] [--service SERVICE] [--bundle BUNDLE]
                   [--adhoc-bundle-name ADHOC_BUNDLE_NAME]
                   [--adhoc-bundle ADHOC_BUNDLE [ADHOC_BUNDLE ...]]
                   [--generate-meta] [--generate-doc] [--generate-tests]
                   [--output-directory OUTPUT_DIRECTORY] [--cached-output-dir]
                   [-p] [-c] [-g] [-v] [-o]

Generate YDK artifacts:

optional arguments:
  -h, --help            show this help message and exit
  -l, --libydk          Generate libydk core package
  --core                Generate and/or install core library
  --service SERVICE     Location of service profile JSON file
  --bundle BUNDLE       Location of bundle profile JSON file
  --adhoc-bundle-name ADHOC_BUNDLE_NAME
                        Name of the adhoc bundle
  --adhoc-bundle ADHOC_BUNDLE [ADHOC_BUNDLE ...]
                        Generate an SDK from a specified list of files
  --generate-meta       Generate meta-data for Python bundle
  --generate-doc        Generate documentation
  --generate-tests      Generate tests
  --output-directory OUTPUT_DIRECTORY
                        The output directory where the sdk will get created.
  --cached-output-dir   The output directory specified with --output-directory
                        includes a cache of previously generated gen-
                        api/<language> files under a directory called 'cache'.
                        To be used to generate docs for --core
  -p, --python          Generate Python SDK
  -c, --cpp             Generate C++ SDK
  -g, --go              Generate Go SDK
  -v, --verbose         Verbose mode
  -o, --one-class-per-module
                        Generate separate modules for each python class
                        corresponding to YANG containers or lists.

The below steps specify how to use generate.py to generate YDK core, model bundle, and service packages. In all the examples the script is executed from ydk-gen directory. It is assumed that Python virtual environment is activated. All the packages are available for Python, Go and C++ in corresponding github repositories: ydk-py, ydk-go and ydk-cpp.

The script create_ydk_sdk_for_github.sh can be used to generate the ydk-py, ydk-cpp and ydk-go repositories after having generated all the bundles and core packages using generate.py.

Build model bundle profile

The first step in using ydk-gen is either using one of the already built bundle profiles or constructing your own bundle profile, consisting of the YANG models you are interested to include into the bundle:

Construct a bundle profile file, such as ietf_0_1_5.json and specify its dependencies.

A sample bundle profile file is described below. The file is in a JSON format. The profile must define the "name", "version" and "description" of the bundle, and then the "core_version", which refers to the version of the ydk core package that you want to use with this bundle. The "name" of the bundle will form part of the installation path of the bundle. All other attributes, like "author" and "copyright", are optional and will not affect the bundle generation.

{
    "name":"cisco-ios-xr",
    "version": "6.5.3",
    "core_version": "0.8.6",
    "author": "Cisco",
    "copyright": "Cisco",
    "description": "Cisco IOS-XR Native Models From Git",

The "models" section of the profile describes sources of YANG models. It could contain combination of elements:

  • "dir" - list of relative directory paths containing YANG files
  • "file" - list of relative YANG file paths
  • "git" - git repository, where YANG files are located

The sample below shows the use of git sources only. Other examples can be found in profiles directory README.md.

Each "git" source must specify "url" - git repository URL, and "commits" list. The specified URL must allow the repository to be cloned without user intervention. Each element in "commits" list can specify:

  • "commitid" - optional specification of a commit ID in string format. If not specified the HEAD revision is assumed. The further specified directories and files will be copied from the context of this commit.
  • "dir" - optional list of relative directory paths within the git repository. All *.yang files in specified directory and any sub-directories will be pulled into the generated bundle.
  • "file" - optional list of relative *.yang file paths within the git repository.

Only directory examples are shown in this example.

    "models": {
        "git": [
            {
                "url": "https://github.com/YangModels/yang.git",
                "commits": [
                  {
                    "dir": [
                        "vendor/cisco/xr/653"
                    ]
                  }
                ]
            },
            {
                "url": "https://github.com/YangModels/yang.git",
                "commits": [
                  {
                    "commitid": "f6b4e2d59d4eedf31ae8b2fa3119468e4c38259c",
                    "dir": [
                        "experimental/openconfig/bgp",
                        "experimental/openconfig/policy"
                    ]
                  }
                ]
            }
        ]
    },

Generate and install model bundle

Generate model bundle using a bundle profile and install it. YDK runtime environment must be activated prior to these procedures.

For Python

If applicable, the Python virtual environment must be activated prior to these procedures

python3 generate.py --python --bundle profiles/bundles/<name-of-profile>.json -i

Check Python packages installed:

pip list | grep ydk
ydk (0.8.6.4)
ydk-models-<name-of-bundle> (0.5.1)
...

For Go

python3 generate.py --go --bundle profiles/bundles/<name-of-profile>.json -i

For C++

python3 generate.py --cpp --bundle profiles/bundles/<name-of-profile>.json -is

Writing your first app

Now, you can start creating apps based on the models in your bundle. Assuming you have generated a python bundle, the models will be available for importing in your app under ydk.models.<name-of-your-bundle>. For examples, see ydk-py-samples and C++ samples. Also refer to the documentation for python, Go and C++.

Generating Documentation

In order to generate YDK core and bundles documentation, the --generate-doc option of generate.py script is used, while generating core package. Therefore the user should generate all the bundles without the --generate-doc option prior to the documentation generation. For example, the below sequence of commands will generate the documentation for the three python bundles and the python core (for C++, use --cpp; for Go, use --go).

python3 generate.py --python --bundle profiles/bundles/ietf_0_1_1.json
python3 generate.py --python --bundle profiles/bundles/openconfig_0_1_1.json
python3 generate.py --python --bundle profiles/bundles/cisco_ios_xr_6_1_1.json
python3 generate.py --python --core --generate-doc

Note. The documentation generation for bundles can take few hours due to their size. If you have previously generated documentation using the --cached-output-dir --output-directory <dir> option, the add-on documentation generation time can be reduced. Adding cisco-ios-xr documentation as an example:

mkdir gen-api/cache
mv gen-api/python gen-api/cache

python3 generate.py --python --bundle profiles/bundles/cisco_ios_xr_6_6_3.json
python3 generate.py --python --core --generate-doc --output-directory gen-api --cached-output-dir

Generating an "Adhoc" YDK-Py Bundle

When YANG models available on the hard drive, there is capability to generate small model bundles, which include just few models. It is called an "adhoc" bundle. Such a bundle generated without profile directly from command line. Here is simple example:

python3 generate.py -i --adhoc-bundle-name test --adhoc-bundle \
    /opt/git-repos/clean-yang/vendor/cisco/xr/621/Cisco-IOS-XR-ipv4-bgp-oper*.yang \
    /opt/git-repos/clean-yang/vendor/cisco/xr/621/Cisco-IOS-XR-types.yang
    /opt/git-repos/clean-yang/vendor/cisco/xr/621/Cisco-IOS-XR-ipv4-bgp-datatypes.yang

This will generate a bundle that contains files specified in the --adhoc-bundle option and create Python package ydk-models-test-0.1.0.tar.gz, which has dependency on the base IETF bundle. Note that all dependencies for the bundle must be listed. It is expected that this option will be typically used for generating point model bundles for specific testing. The --verbose option is automatically enabled to quickly and easily let the user see if dependencies have been satisfied.

Notes

Python requirements

Starting from release 0.8.5 YDK supports only Python3 version. At least Python 3.5 along with corresponding pip3 utility must be installed on your system. It is also required for Python installation to include corresponding shared library. As example:

  • python3.6m - /usr/lib/x86_64-linux-gnu/libpython3.6m.so

It is recommended to follow Core Installation procedure to ensure presence of shared Python libraries.

NOTE. Due to GitHub issue #1050 YDK is not supported with Python 3.9.x.

C++ requirements

In some OS configurations during YDK package installation the cmake fails to find C/C++ headers for installed YDK libraries. In this case the header location must be specified explicitly:

export C_INCLUDE_PATH=/usr/local/include
export CPLUS_INCLUDE_PATH=/usr/local/include

Directory structure

gen-api         - generated code and packages for core and bundles
                    - python (Python SDK)
                    - go (Go SDK)
                    - cpp (C++ SDK)

3d_party        - suplemental code for third party software
profiles        - profile files used during generation
sdk             - sdk core and stubs for python, go and cpp
test            - dependencies and unit test shell scripts
yang            - some YANG models used for testing
ydkgen          - python code to extend generate.py script 

create_ydk_sdk_for_github.sh - convenience script to generate language specific repositories
generate_bundles.sh          - convinience script to generate core and bundle packages for deployment

generate.py     - script used to generate SDK for YANG models
install_ydk.sh  - YDK core components installation script
requirements.txt- python dependencies used during installation
README.md       - installation and usage notes

Troubleshooting

Sometimes, developers using ydk-gen may run across errors when generating a YDK bundle using generate.py with some yang models. If there are issues with the profile file being used, such JSON formatting errors will be evident. Other times, when the problem is not so evident, it is recommended to try running the script with the [--verbose|-v] flag, which may reveal syntax problems with the YANG models being used. For example:

python3 generate.py --python --bundle profiles/bundles/ietf_0_1_1.json --verbose

Also, it may be a good idea to obtain a local copy of the YANG models and compile them using pyang to ensure the validity of the models and completeness of the model package:

cd /path/to/yang/models
pyang *.yang

Running Unit Tests

The repository includes complete set of unit tests for all supported languages. To invoke the test for specific language, simply get to 'ydk-gen' directory, activate runtime environment, if it was not done previously, and run language specific script. The script will install core and bundle packages and then perform the unit tests.

C++

```
cd ydk-gen
source .env  # if previously not run
./test/run_cpp_tests
```

Python

```
cd ydk-gen
source .env  # if previously not run
./test/run_py_tests
```

Go

```
cd ydk-gen
source .env  # if previously not run
./test/run_go_tests
```

Documentation and Support

Release Notes

The current YDK release version is 0.8.6.4.

YDK-Gen is licensed under the Apache 2.0 License.

More Repositories

1

netprog_basics

Code, Examples, and Resources for the Network Programmability Basics Video Course
Python
738
star
2

python_code_samples_network

A collection of Python Code Samples for Network Management. Includes samples to run on-box and off-box.
Python
609
star
3

yang-explorer

An open-source Yang Browser and RPC Builder Application
Python
439
star
4

awesome-webex

A curated list of Cisco Webex resources for developers
239
star
5

yangsuite

Cisco YANG Suite provides a set of tools and plugins to learn, test, and adopt YANG programmable interfaces such as NETCONF, RESTCONF, gNMI and more.
Shell
237
star
6

coding-skills-sample-code

Sample code for the Cisco DevNet Coding Skills Learning Labs
Python
220
star
7

cml-community

Community Contributed Content and Resources for Cisco Modeling Labs
Shell
188
star
8

ydk-py

This project has been archived and the repository will no longer be updated. Python SDK generated from YANG data models.
Python
184
star
9

roomdevices-macros-samples

Macros samples for Cisco CE Video Endpoints
JavaScript
166
star
10

bigmuddy-network-telemetry-pipeline

bigmuddy-network-telemetry-pipeline
162
star
11

dne-dna-code

Provides code examples for DevNet Test Drive Catalyst (DNA) series
Python
161
star
12

virlutils

A collection of utilities for interacting with Cisco VIRL / Cisco Modeling Labs (CML)
Python
151
star
13

ansible-aci

Cisco ACI Ansible Collection
Python
138
star
14

CiscoUIKit

The Cisco Brand-approved user interface kit. A modern, lightweight, responsive and programmable presentation layer that can be used to style HTML primitive elements and UI-framework independent.
CSS
125
star
15

api-design-guide

Guidelines for designing REST APIs at Cisco
109
star
16

ydk-py-samples

Sample apps for YDK-Py
Python
101
star
17

python-viptela

Cisco Viptela vManage Python CLI/SDK
Python
96
star
18

pathman-sr

Pathman SR is an open-source app to compute paths and deploy routes in Segment Routing-enabled network.
Python
96
star
19

terraform-provider-aci

Terraform Cisco ACI provider
Go
88
star
20

finesse-sample-code

Sample Gadgets and code for use with Finesse
83
star
21

pyats-sample-scripts

Various pyATS-based Test Automation Scripts
Python
82
star
22

sdwan-devops

SD-WAN DevOps Tools
Jinja
79
star
23

Getting-started-with-Cisco-SD-WAN-REST-APIs

Getting started with Cisco SD-WAN REST APIs
Python
72
star
24

cvd-config-templates

Contains Cisco Validated Design (CVD) Configuration Management Templates
Python
69
star
25

OpenDaylight-Openflow-App

JavaScript
68
star
26

ncc

ncclient scripts and helpers
Jupyter Notebook
67
star
27

sastre

Cisco-SDWAN Automation Toolset
Python
67
star
28

awesome-xapi

A curated list of developer resources to integrate with Webex Devices
63
star
29

meraki-code

Code for All Meraki Labs
Python
63
star
30

netconf-examples

NETCONF examples for learning labs
Python
61
star
31

axl-python-zeep-samples

Python
61
star
32

opendaylight-sample-apps

Sample applications for use with OpenDaylight (https://www.opendaylight.org/)
HTML
59
star
33

cloud-security

Python
57
star
34

postman-xapi

Postman collections for Webex Devices
57
star
35

ansible-meraki

Cisco Meraki Ansible Collection
Python
57
star
36

virl2-client

Client library for the Cisco VIRL 2 Network Simulation Platform
Python
57
star
37

terraform-provider-iosxe

Terraform Cisco IOS-XE Provider
Go
56
star
38

apic-em-samples-aradford

This is a collection of sample scripts and tools for APIC-EM
Python
53
star
39

appdynamics-docker-images

Build repository for AppDynamics certified Docker Store images
Dockerfile
53
star
40

devasc-code-examples

Provides the example Python and Ansible code and dependencies configuration for the Cisco DevNet Associate Fundamentals course.
Python
50
star
41

bigmuddy-network-telemetry-stacks

A batteries-included docker-based collection of demo stacks adapting network streaming telemetry to common consumer formats.
49
star
42

devnet-express-code-samples

Archived: This repository holds code samples for DevNet Express DNA Track
JavaScript
47
star
43

ansible-pyats

Python
46
star
44

botkit-template

Botkit template for Webex Teams
JavaScript
46
star
45

pyats-coding-101

pyATS Coding 101 - Python & automation tutorial
Python
46
star
46

restconf-examples

RESTconf examples for learning labs and sample code
Python
45
star
47

uniq

A Python API client library for Cisco's Application Policy Infrastructure Controller Enterprise Module (APIC-EM) Northbound APIs.
Python
45
star
48

xapi-samples

Examples of UI Extensions, Macros and Node.js scripts for Webex devices and Cisco Collaboration Endpoints
HTML
45
star
49

botkit-webex-samples

Chatbot samples for Webex Teams built with Botkit
JavaScript
45
star
50

bigmuddy-network-telemetry-collector

44
star
51

NeXt

Mirror of the OpenDaylight NeXt UI Toolkit gerrit project
JavaScript
44
star
52

merakibeat

Elastic Beat input plugin for Meraki health and location metrics collection
Python
41
star
53

catalyst9k-network-automation

Sample python scripts for automation workflows for feature sets present in Catalyst Switching using openly available YANG data models
Python
40
star
54

aci-learning-labs-code-samples

JavaScript
39
star
55

netdevops-live-0213

Sample Scripts from NETDEVOPS LIVE! S02E13 - Container Networking
Shell
39
star
56

BRKDEV-1368

Code used for the Cisco Live Session BRKDEV-1368
HTML
38
star
57

FTDAnsible

FTD Ansible module
Python
37
star
58

NX-SDK

NX-OS SDK
C++
37
star
59

g2p_seq2seq_pytorch

Grapheme to phoneme model for PyTorch
Python
37
star
60

ansible-dcnm

Python
37
star
61

Opendaylight-BGP-Pathman-apps

BGP and PCEP apps for Opendaylight, with the backend written in Python and the UI in JavaScript for NeXt
Python
37
star
62

DNAC-AURA

Python
36
star
63

code-exchange-repo-template

Template for creating a repo for software related to Cisco technologies to be shared with the DevNet community via Code Exchange
35
star
64

grpc-getting-started

Guide to get started with gRPC in Cisco IOS XR
Protocol Buffer
35
star
65

wcae

WCAE Troubleshooting tool
34
star
66

ppe-detection

Python
33
star
67

catalystwan

Cisco Catalyst WAN SDK
Python
32
star
68

dne-security-code

Python
32
star
69

sd-wan-ansible-pipeline-code

SD-WAN Ansible CI/CD pipeline Code
Python
31
star
70

fmc-rest-api

Learning labs for firepower management center REST APIs
HTML
30
star
71

ciscodevnet.github.io

Source for https://ciscodevnet.github.io
JavaScript
30
star
72

thousandeyes-kubernetes-operator

A Kubernetes operator to manage ThousandEyes tests
Go
30
star
73

secure-firewall

This is a place for various teamplates and automation resources for Cisco Secure Firewall
HCL
30
star
74

openconfig-getting-started

Getting started guides for OpenConfig in Cisco IOS XR
30
star
75

awesome-merakiapis

Collection point for all the awesome Meraki APIs.
29
star
76

DNAC-onboarding-tools

Cisco DNA Center PnP-BulkConfig app allows uploading of "predefined" rules to onboard network devices.
Python
28
star
77

iOAM

Java
28
star
78

Postman-for-Cisco-SD-WAN

Postman environment and collection for Cisco SD-WAN powered by Viptela
28
star
79

ContainerLabs

JavaScript
28
star
80

Hyperflex-Hypercheck

Perform pro-active self checks on your Hyperflex cluster to ensure stability and resiliency
Python
26
star
81

DNAC-Top5

Simple scripts to get started with Cisco DNA Center API.
Python
26
star
82

pyats-ios-sample

pyATS Example script for Cisco IOS Testbed
Python
25
star
83

ansible-mso

Cisco MSO Ansible Collection
Python
25
star
84

webex-contact-center-widget-starter

WebEx Contact Center widget starter
JavaScript
25
star
85

uccx-sample-code

Sample code for use with Unified Contact Center Express
Java
24
star
86

node-sparkbot

Build Webex ChatBots in JavaScript
JavaScript
24
star
87

devnet-express-cloud-collab-code-samples

Public repo that contains code samples for the DevNet Express Cloud Collaboration tracks
JavaScript
24
star
88

socialminer-sample-code

Sample code using Cisco SocialMiner APIs
JavaScript
23
star
89

webex-integration-sample

Node.js example of OAuth Integration for Webex Teams
JavaScript
23
star
90

webex-meetings-python-samples

This project contains sample scripts demonstrating usage of the Webex Meetings API, using Python
Python
23
star
91

ydk-go

This project has been archived and the repository will no longer be updated. Go SDK generated from YANG data models.
Go
23
star
92

bigmuddy-network-telemetry-proto

22
star
93

ansible-viptela

An Ansible Role for automating a Viptela Overlay Network
Python
22
star
94

iPSK-Manager

Identity PSK (IPSK) Manager for Cisco ISE provides an example of how to manage the full Life Cycle of Wi-Fi Pre Shared Keys for supported Hardware/Software through Cisco ISE.
PHP
22
star
95

logstash-codec-bigmuddy-network-telemetry-gpb

Logstash codec used to receive protobuf encoded network telemetry over UDP and produce logstash events.
22
star
96

dnac-apis-with-python-sample-codes

Python code to go with DNAC learning labs
Python
21
star
97

appdynamics-charts

Helm charts for AppDynamics
Mustache
21
star
98

node-sparkbot-samples

Chatbot samples leveraging the node-sparkbot library for Webex Teams
JavaScript
21
star
99

DNAC-TemplateProgrammer

Python
20
star
100

terraform-sdwan

HCL
20
star