Overview

Programmability Overview

The Cisco NX-OS software running on the Cisco Nexus 9000 Series switches is as follows:

  • Resilient

    Provides critical business-class availability.

  • Modular

    Has extensions that accommodate business needs.

  • Highly Programmatic

    Allows for rapid automation and orchestration through Application Programming Interfaces (APIs).

  • Secure

    Protects and preserves data and operations.

  • Flexible

    Integrates and enables new technologies.

  • Scalable

    Accommodates and grows with the business and its requirements.

  • Easy to use

    Reduces the amount of learning required, simplifies deployment, and provides ease of manageability.

With the Cisco NX-OS operating system, the device functions in the unified fabric mode to provide network connectivity with programmatic automation functions.

Cisco NX-OS contains Open Source Software (OSS) and commercial technologies that provide automation, orchestration, programmability, monitoring, and compliance support.

For more information on Open NX-OS, see https://developer.cisco.com/site/nx-os/.

Supported Platforms

Starting with Cisco NX-OS release 7.0(3)I7(1), use the Nexus Switch Platform Support Matrix to know from which Cisco NX-OS releases various Cisco Nexus 9000 and 3000 switches support a selected feature.

Standard Network Manageability Features

  • SNMP (V1, V2, V3)

  • Syslog

  • RMON

  • NETCONF

  • CLI and CLI scripting

Advanced Automation Features

The enhanced Cisco NX-OS on the device supports automation. The platform includes support for Power On Auto Provisioning (POAP).

The enhanced Cisco NX-OS on the device supports automation. The platform includes the features that support automation.

Programmability Support

Cisco NX-OS software on switches support several capabilities to aid programmability.

NX-API Support

Cisco NX-API allows for HTTP-based programmatic access to the switches. This support is delivered by NX-API, an open source webserver. NX-API provides the configuration and management capabilities of the Cisco NX-OS CLI with web-based APIs. The device can be set to publish the output of the API calls in XML or JSON format. This API enables rapid development on the switches.

Python Scripting

Cisco NX-OS supports Python v2.7.5 in both interactive and noninteractive (script) modes.

Beginning in Cisco NX-OS Release 9.3(5), Python 3 is also supported.

The Python scripting capability on the devices provides programmatic access to the switch CLI to perform various tasks, and to Power-On Auto Provisioning (POAP) and Embedded Event Manager (EEM) actions. Responses to Python calls that invoke the Cisco NX-OS CLI return text or JSON output.

The Python interpreter is included in the Cisco NX-OS software.

Tcl Scripting

Cisco Nexus 9000 Series switches support Tcl (Tool Command Language). Tcl is a scripting language that enables greater flexibility with CLI commands on the switch. You can use Tcl to extract certain values in the output of a show command, perform switch configurations, run Cisco NX-OS commands in a loop, or define EEM policies in a script.

Broadcom Shell

The Cisco Nexus 9000 Series switch front panel and fabric module line cards contain Broadcom Network Forwarding Engine (NFE). You can access the Broadcom command-line shell (bcm-shell) from these NFEs.

Bash

Cisco Nexus switches support direct Bourne-Again Shell (Bash) access. With Bash, you can access the underlying Linux system on the device and manage the system.

Bash Shell Access and Linux Container Support

Cisco Nexus switches support direct Linux shell access and Linux containers. With Linux shell access, you can access the underlying Linux system on the switch and manage the underlying system. You can also use Linux containers to securely install your own software and to enhance the capabilities of the Cisco Nexus switch. For example, you can install bare-metal provisioning tools like Cobbler on a Cisco Nexus switch to enable automatic provisioning of bare-metal servers from the top-of-rack switch.

Guest Shell

The Cisco Nexus 9000 Series switches support a guest shell that provides Bash access into a Linux execution space on the host system that is decoupled from the host Cisco Nexus 9000 NX-OS software. With the guest shell, you can add software packages and update libraries as needed without impacting the host system software.

Container Tracker Support

Cisco NX-OS is configured to communicate with the Kubernetes API Server to understand the capabilities of the containers behind a given switch port.

The following commands communicate with the Kubernetes API Server:

  • The show containers kubernetes command obtains data from kube-apiserver using API calls over HTTP.

  • The kubernetes watch resource command uses a daemon to subscribe to requested resources and process streaming data from kube-apiserver.

  • The action assigned in the watch command is performed on pre-defined triggers. (For example, Add or Delete of a Pod.)

Perl Modules

In order to support more applications, the following Perl modules have been added:

  • bytes.pm

  • feature.pm

  • hostname.pl

  • lib.pm

  • overload.pm

  • Carp.pm

  • Class/Struct.pm

  • Data/Dumper.pm

  • DynaLoader.pm

  • Exporter/Heavy.pm

  • FileHandle.pm

  • File/Basename.pm

  • File/Glob.pm

  • File/Spec.pm

  • File/Spec/Unix.pm

  • File/stat.pm

  • Getopt/Std.pm

  • IO.pm

  • IO/File.pm

  • IO/Handle.pm

  • IO/Seekable.pm

  • IO/Select.pm

  • List/Util.pm

  • MIME/Base64.pm

  • SelectSaver.pm

  • Socket.pm

  • Symbol.pm

  • Sys/Hostname.pm

  • Time/HiRes.pm

  • auto/Data/Dumper/Dumper.so

  • auto/File/Glob/Glob.so

  • auto/IO/IO.so

  • auto/List/Util/Util.so

  • auto/MIME/Base64/Base64.so

  • auto/Socket/Socket.so

  • auto/Sys/Hostname/Hostname.so

  • auto/Time/HiRes/HiRes.so