The Designing and Implementing Cisco Network Programmability (NPDESI) v1.0 is a 5-day instructor-led course that introduces learners to the evolving role of network engineers towards more programmability, automation and orchestration, enabling them to leverage the powerful level of abstraction provided by controller-based architectures to create real added value. The course provides knowledge and skills related to network programmability fundamentals, application programming interfaces (APIs) and automation protocols, data models, operations, and controllers.
The goal of this course is to provide learners with a foundation to get started with network programmability by learning how to minimize the amount of manual interactions (command-line interface [CLI]) with the network, and increase the use of scripts and automation tools to drive down operational inefficiencies. Within these goals, learners review network programmability fundamentals such as using Linux and Python, common automation protocols such as network configuration protocol (NETCONF) and representational state transfer (REST), how they relate to YANG data models, software-defined networking (SDN) controller northbound and southbound APIs, how to use device APIs on various Cisco platforms, and how to get started using automation tools such as Ansible and Puppet.

The course is aligned with the topics covered by the 300-550 NPDESI exam leading to the Cisco Network Programmability Design and Implementation Specialist certification.


Upon completing this course, the learner will be able to meet these overall objectives:
  • Understand fundamentals of network programmability, Linux and Python
  • Describe APIs and automation protocols
  • Define data models
  • Use SDN controllers
  • Manage network operations


The course contains these components:
  • Network Programmability Fundamentals
    • Introduction to Network Programmability
    • Linux Primer for Network Engineers
    • Lab: Using the Linux Command Line
    • Linux Networking
    • Lab: Linux Networking
    • Python Foundations for Network Engineers
    • Lab: Python Foundations
    • Writing and Troubleshooting Python Scripts
    • Lab: Writing and Troubleshooting Python Scripts
    • Python Libraries
    • Lab: Custom Python Libraries
  • APIs and Automation Protocols
    • Introduction to Network APIs and Protocols
    • Lab: Working with JSON Objects in Python
    • Lab: Using XML in Python
    • Lab: NETCONF Capabilities Exchange
    • Cisco ASA REST API
    • Lab: Interacting with Cisco ASA REST API
    • NX-OS Programmability
    • Consume NX-API with Python
    • Lab: Consuming NETCONF on Nexus
    • Lab: Using Python on the Nexus Switch
    • Cisco IOS XE APIs
    • Lab: Interacting with the Cisco IOS XE RESTCONF API
    • Lab: Interacting with the Cisco IOS XE NETCONF API
    • Cisco IOS XR APIs
    • Lab: Interacting with the Cisco IOS XR NETCONF API
    • Securing the Management Plane
    • Lab: Securing the Management Plane
  • Data Models
    • YANG Data Modeling
    • YANG Tools
    • Lab: Validating YANG Models Using yangvalidator
    • Lab: Writing a Custom YANG Model
    • Lab: Viewing and Validating YANG Models with pyang
    • Lab: BGP Configuration Change using ydk-py (with OC BGP models)
    • Lab: Generate Python Bindings with ydk-gen
    • Lab: Navigating YANG-Explorer
  • SDN Controllers
    • Introduction to Controller Networking
    • OpenDaylight
    • Cisco APIC-EM
    • Lab: Network Discovery Configuration
    • Lab: APIC-EM Network Discovery and RBAC
    • Lab: Consuming the APIC-EM API
    • Cisco Application Centric Infrastructure
    • Lab: ACI Fabric Discovery
    • Lab: Creating Objects with APIC GUI
    • Lab: Navigating the Object Model
    • Lab: Using API Inspector
    • Lab: Using ARYA
    • Lab: CLI Emulation
    • Lab: ACI Diagram Tool
    • Lab: ACI Toolkit — Lint
    • Lab: Using the APIC REST API
    • Cisco Element and Domain Managers
  • Network Operations
    • Software Development Methodologies
    • Introduction to DevOps
    • Version Control
    • Lab: GitHub Pull Request
    • Lab: Working with Git
    • Automated Testing
    • Lab: DevNet Sandbox
    • Lab: DevNet Learning Labs
    • Lab: DevNet GitHub
    • Lab: Integration Testing
    • Continuous Integration
    • Configuration Management and Automation Tools
    • Lab: Compliance Checks with Ansible
    • Lab: Tenant Provisioning with Ansible

Prerequisite Knowledge

The knowledge and skills that a learner should possess before attending this course are as follows:
  • Baseline Python knowledge
  • Cisco CCNA and CCNP level network background