Digital Readiness Model
A Journey
What is Changing?
1. Automation
Model T
1908 - $850 ($21,075 today)
1925 - $250 ($3,367)
12.5 Hours to 90 minutes
Automation in networking is inevitable
Time IT spends on operations
CEOs are worried about IT strategy not
supporting business growth80% 57%
0
100%
Source: Forrester
CAPEX OPEX
33% 67%
0 10 100 1000
Computing Networking
Seconds
Source: Open Compute Project
“…While other components of the IT infrastructure have become more programmable and allow for faster, automated provisioning, installing
network circuits is still a painstakingly manual process...”
—Andrew Lerner, Gartner Research
Network Expenses Deployment Speed
Digital Business Demands
Operational Efficiency and Agility
DATA SEGMENT
NUM1 DB ?
NUM2 DB ?
RESULT DB ?
MSG1 DB 10,13,"ENTER FIRST NUMBER TO ADD : $"
MSG2 DB 10,13,"ENTER SECOND NUMBER TO ADD : $"
MSG3 DB 10,13,"RESULT OF ADDITION IS : $"
ENDS
CODE SEGMENT
ASSUME DS:DATA CS:CODE
START:
MOV AX,DATA
MOV DS,AX
LEA DX,MSG1
MOV AH,9
INT 21H
MOV AH,1
INT 21H
SUB AL,30H
MOV NUM1,AL
LEA DX,MSG2
MOV AH,9
INT 21H
MOV AH,1
INT 21H
SUB AL,30H
MOV NUM2,AL
# This program adds two numbers
# Numbers are provided by the user
# Store input numbers
num1 = input('Enter first number: ')
num2 = input('Enter second number: ')
# Add two numbers
sum = float(num1) + float(num2)
# Display the sum
print('The sum of {0} and {1} is {2}'.format(num1,num2,sum))
2. Operational Simplicity
x86 Assembler
Any High Level Language
Is IOS CLI quickly becoming the Network version of Assembly
Language ?
• Which way would you prefer to configure your network ?
3. Network Disaggregation
DevOps
Applications
Business
OperationsDevelopment
4. DevOps is driving Speed and Agility
Developer
Pulls From
Trunk
Version control
system
Make incremental
changes on local
environment
Continuous
Integration
Server
CI monitors repository
for changes
Developer
pushes
commits
Changes Kick
off test Build
Test Instance
Run Tests:
Unit
Integration
Smoke
Production
Report back
test results
If tests pass:
Deploy code to
artifact
repository
CI notifies of
pass / fail
1
2
3
4
5
6
7
8
Artifact
Repository
9
Pushing to repo
could just mean
changing the reverse
proxy server
DevOps in Action
Summary - Why Programmability?
11
More Flexibility More InnovationMore Speed More Repeatability
Fewer Mistakes
Programmability in
Action
Questions to ask before automating a task:
• Will automating this task save time?
• Will automating this task save money?
• Is the task prone to errors?
When is a task worth Automating ?
“Not all tasks are to be automated...”
What are we doing ?
Note: The difference between automation and orchestration is that automation deals with a single element or single
device, and orchestration assembles multiple elements or multiple devices to accomplish a task.
Example of Automated WorkFlows
DC Programmability Demo
Demo Deeper Dive
Ways to Manage Network Components
18
#!/usr/bin/env python
print('Hello World!')
1-On Box:
#!/usr/bin/env python
print('Hello World!')
2-Off Box:
Controller
3-Via a Controller
What's an Application Programming Interface (API)?
19
1. A set of routines, protocols, and tools for
building modular or distributed applications
2. A set of interface definitions for operations,
inputs, outputs, and underlying types.
3. A means through which network elements and
applications can be programmatically controlled
•What is to be acted
upon?
•How is data to be
formatted?
•What action is to be
taken?
•How is the API
invoked?
Methods Actions
ObjectsFormats
What is REST?
20
• Stands for “REpresentational State Transfer”
• An architectural style for designing scalable networked applications
• Uses HTTP or HTTPS to transmit calls between entities
• Operates on resource representations, each uniquely identified by a URL
• Term was first used by Roy T Fielding in 2000
 Author of HTTP 1.0
 Alternative to Simple Object Access Protocol (SOAP) and Web Services Description Language
(WSDL)
• Developed by the W3C TAG
Client Server
Client requests object state
Server returns object state
Client specifies desired state
Server returns resultant state
Method Description
GET List the URIs in a collection, or a
representation of an individual member
POST Create a new entry in a collection. The new
entry's URI is assigned automatically and
returned by the operation
PUT Replace an entire collection with a
collection, or individual member with
another. If a member doesn't exist create
it
DELETE Delete an entire collection or an individual
member
What is XML?
23
• Extensible Markup Language
• Similar to HTML but designed to convey data (HTML is focused on data
visualization)
• Tags are self-defined rather than standardized
• Designed to be self-descriptive
<?xml version="1.0"?>
<ins_api>
<version>1.0</version>
<type>cli_show</type>
<chunk>0</chunk>
<sid>sid</sid>
<input>sho ver</input>
<output_format>xml</output_format>
</ins_api>
Request
Root Element
Each element has a starting and
closing tag
<?xml version="1.0" encoding="UTF-8"?>
<ins_api>
<type>cli_show</type>
<version>1.0</version>
<sid>eoc</sid>
<outputs>
<output>
<body>
<header_str>Cisco Nexus Operating System (NX-OS) Software
TAC support: http://www.cisco.com/tac
Copyright (C) 2002-2014, Cisco and/or its affiliates.
All rights reserved
http://www.gnu.org/licenses/old-licenses/library.txt.
</header_str>
<bios_ver_str>07.11</bios_ver_str>
<kickstart_ver_str>6.1(2)I2(2a)</kickstart_ver_str>
<bios_cmpl_time>05/28/2014</bios_cmpl_time>
<kick_file_name>bootflash:///n9000-dk9.6.1.2.I2.2a.bin</kick_file_name>
<manufacturer>Cisco Systems, Inc.</manufacturer>
<TABLE_smu_list>
<ROW_smu_list>
<install_smu_id>n9000-dk9.6.1.2.I2.2a.CSCup81353.bin</install_smu_id>
</ROW_smu_list>
</TABLE_smu_list>
</body>
<input>sho ver</input>
<msg>Success</msg>
<code>200</code>
</output>
</outputs>
</ins_api>
Response
What is JSON?
24
• JavaScript Object Notation
• Focused on being more human-readable
• Uses attribute–value pairs
• Easy for machines to parse and generate
• Built on two structures:
Request
{
"ins_api": {
"version": "1.0",
"type": "cli_show",
"chunk": "0",
"sid": "1",
"input": "sho ver",
"output_format": "json"
}
}
Response
"ins_api": {
"type": "cli_show",
"version": "1.0",
"sid": "eoc",
"outputs": {
"output": {
"input": "sho ver",
"msg": "Success",
"code": "200",
"body": {
"header_str": "Cisco Nexus Operating System (NX-OS)
"kickstart_ver_str": "6.1(2)I2(2a)",
"bios_cmpl_time": "05/28/2014",
"kick_file_name": "bootflash:///n9000-dk9.6.1.2.I2.2a.bin",
"rr_reason": "Reset Requested by CLI command reload",
"rr_sys_ver": "6.1(2)I2(2a)",
"rr_service": "",
"manufacturer": "Cisco Systems, Inc.",
"TABLE_smu_list": {
"ROW_smu_list": {
"install_smu_id": "n9000-dk9.6.1.2.I2.2a.CSCup81353.bin"
}
}
}
}
}
}
}
 a collection of
name/value pairs
 an ordered list of values
Software Development Kits (SDKs)
A collection of tools that support the creation of applications for certain software packages,
frameworks, or hardware platforms.
Tools that help developers rapidly and effectively develop applications atop (Cisco) network
infrastructures.
An SDK normally consists of;
 Set of APIs
 Sample Code
 Technical Notes
 Debugging Facilities
Cisco Examples of SDK
 APIC Python SDK
 UCS SDK
 Cisco IP Phone
26
# python
Python 2.7.2 (default, Mar 6 2012, 15:51:12)
[GCC 3.4.3 (MontaVista 3.4.3-25.0.143.0800417 2008-02-22)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Loaded cisco NxOS lib!
>>>
Interactive Python Shell
# python bootflash:showBuffer.py
Mon Jan 30 19:26:36 UTC 2012
|------------------------------------------------------------|
Total Instant Usage 0
Remaining Instant Usage 46080
Max Cell Usage 0
Switch Cell Count 46080
|------------------------------------------------------------|
Mon Jan 30 19:26:38 UTC 2012
#
Run Python Script
Integrated Development Environment (IDE)
A software application that facilitates coding and software development
An IDE normally consists of
A source code editor
Build automation tools
A debugger
Intelligent code completion
28
What Does This
Mean for You?
1. Automation and
orchestration in the DC are
key building blocks for
success.
2. LOBs and Developers are
key influencers and decision
makers when it comes to next
generation modern data center
architecture deployments.
3. Follow the
programmability journey
and participate in new Cisco
trainings and services that
help you understand the
transition.
Expanding your impact with programmability in the data center

Expanding your impact with programmability in the data center

  • 2.
  • 3.
  • 4.
    1. Automation Model T 1908- $850 ($21,075 today) 1925 - $250 ($3,367) 12.5 Hours to 90 minutes Automation in networking is inevitable
  • 5.
    Time IT spendson operations CEOs are worried about IT strategy not supporting business growth80% 57% 0 100% Source: Forrester CAPEX OPEX 33% 67% 0 10 100 1000 Computing Networking Seconds Source: Open Compute Project “…While other components of the IT infrastructure have become more programmable and allow for faster, automated provisioning, installing network circuits is still a painstakingly manual process...” —Andrew Lerner, Gartner Research Network Expenses Deployment Speed Digital Business Demands Operational Efficiency and Agility
  • 6.
    DATA SEGMENT NUM1 DB? NUM2 DB ? RESULT DB ? MSG1 DB 10,13,"ENTER FIRST NUMBER TO ADD : $" MSG2 DB 10,13,"ENTER SECOND NUMBER TO ADD : $" MSG3 DB 10,13,"RESULT OF ADDITION IS : $" ENDS CODE SEGMENT ASSUME DS:DATA CS:CODE START: MOV AX,DATA MOV DS,AX LEA DX,MSG1 MOV AH,9 INT 21H MOV AH,1 INT 21H SUB AL,30H MOV NUM1,AL LEA DX,MSG2 MOV AH,9 INT 21H MOV AH,1 INT 21H SUB AL,30H MOV NUM2,AL # This program adds two numbers # Numbers are provided by the user # Store input numbers num1 = input('Enter first number: ') num2 = input('Enter second number: ') # Add two numbers sum = float(num1) + float(num2) # Display the sum print('The sum of {0} and {1} is {2}'.format(num1,num2,sum)) 2. Operational Simplicity x86 Assembler Any High Level Language Is IOS CLI quickly becoming the Network version of Assembly Language ? • Which way would you prefer to configure your network ?
  • 7.
  • 8.
  • 9.
    Developer Pulls From Trunk Version control system Makeincremental changes on local environment Continuous Integration Server CI monitors repository for changes Developer pushes commits Changes Kick off test Build Test Instance Run Tests: Unit Integration Smoke Production Report back test results If tests pass: Deploy code to artifact repository CI notifies of pass / fail 1 2 3 4 5 6 7 8 Artifact Repository 9 Pushing to repo could just mean changing the reverse proxy server DevOps in Action
  • 10.
    Summary - WhyProgrammability? 11 More Flexibility More InnovationMore Speed More Repeatability Fewer Mistakes
  • 11.
  • 12.
    Questions to askbefore automating a task: • Will automating this task save time? • Will automating this task save money? • Is the task prone to errors? When is a task worth Automating ? “Not all tasks are to be automated...”
  • 13.
    What are wedoing ? Note: The difference between automation and orchestration is that automation deals with a single element or single device, and orchestration assembles multiple elements or multiple devices to accomplish a task.
  • 14.
  • 15.
  • 16.
  • 17.
    Ways to ManageNetwork Components 18 #!/usr/bin/env python print('Hello World!') 1-On Box: #!/usr/bin/env python print('Hello World!') 2-Off Box: Controller 3-Via a Controller
  • 18.
    What's an ApplicationProgramming Interface (API)? 19 1. A set of routines, protocols, and tools for building modular or distributed applications 2. A set of interface definitions for operations, inputs, outputs, and underlying types. 3. A means through which network elements and applications can be programmatically controlled •What is to be acted upon? •How is data to be formatted? •What action is to be taken? •How is the API invoked? Methods Actions ObjectsFormats
  • 19.
    What is REST? 20 •Stands for “REpresentational State Transfer” • An architectural style for designing scalable networked applications • Uses HTTP or HTTPS to transmit calls between entities • Operates on resource representations, each uniquely identified by a URL • Term was first used by Roy T Fielding in 2000  Author of HTTP 1.0  Alternative to Simple Object Access Protocol (SOAP) and Web Services Description Language (WSDL) • Developed by the W3C TAG
  • 20.
    Client Server Client requestsobject state Server returns object state Client specifies desired state Server returns resultant state Method Description GET List the URIs in a collection, or a representation of an individual member POST Create a new entry in a collection. The new entry's URI is assigned automatically and returned by the operation PUT Replace an entire collection with a collection, or individual member with another. If a member doesn't exist create it DELETE Delete an entire collection or an individual member
  • 21.
    What is XML? 23 •Extensible Markup Language • Similar to HTML but designed to convey data (HTML is focused on data visualization) • Tags are self-defined rather than standardized • Designed to be self-descriptive <?xml version="1.0"?> <ins_api> <version>1.0</version> <type>cli_show</type> <chunk>0</chunk> <sid>sid</sid> <input>sho ver</input> <output_format>xml</output_format> </ins_api> Request Root Element Each element has a starting and closing tag <?xml version="1.0" encoding="UTF-8"?> <ins_api> <type>cli_show</type> <version>1.0</version> <sid>eoc</sid> <outputs> <output> <body> <header_str>Cisco Nexus Operating System (NX-OS) Software TAC support: http://www.cisco.com/tac Copyright (C) 2002-2014, Cisco and/or its affiliates. All rights reserved http://www.gnu.org/licenses/old-licenses/library.txt. </header_str> <bios_ver_str>07.11</bios_ver_str> <kickstart_ver_str>6.1(2)I2(2a)</kickstart_ver_str> <bios_cmpl_time>05/28/2014</bios_cmpl_time> <kick_file_name>bootflash:///n9000-dk9.6.1.2.I2.2a.bin</kick_file_name> <manufacturer>Cisco Systems, Inc.</manufacturer> <TABLE_smu_list> <ROW_smu_list> <install_smu_id>n9000-dk9.6.1.2.I2.2a.CSCup81353.bin</install_smu_id> </ROW_smu_list> </TABLE_smu_list> </body> <input>sho ver</input> <msg>Success</msg> <code>200</code> </output> </outputs> </ins_api> Response
  • 22.
    What is JSON? 24 •JavaScript Object Notation • Focused on being more human-readable • Uses attribute–value pairs • Easy for machines to parse and generate • Built on two structures: Request { "ins_api": { "version": "1.0", "type": "cli_show", "chunk": "0", "sid": "1", "input": "sho ver", "output_format": "json" } } Response "ins_api": { "type": "cli_show", "version": "1.0", "sid": "eoc", "outputs": { "output": { "input": "sho ver", "msg": "Success", "code": "200", "body": { "header_str": "Cisco Nexus Operating System (NX-OS) "kickstart_ver_str": "6.1(2)I2(2a)", "bios_cmpl_time": "05/28/2014", "kick_file_name": "bootflash:///n9000-dk9.6.1.2.I2.2a.bin", "rr_reason": "Reset Requested by CLI command reload", "rr_sys_ver": "6.1(2)I2(2a)", "rr_service": "", "manufacturer": "Cisco Systems, Inc.", "TABLE_smu_list": { "ROW_smu_list": { "install_smu_id": "n9000-dk9.6.1.2.I2.2a.CSCup81353.bin" } } } } } } }  a collection of name/value pairs  an ordered list of values
  • 23.
    Software Development Kits(SDKs) A collection of tools that support the creation of applications for certain software packages, frameworks, or hardware platforms. Tools that help developers rapidly and effectively develop applications atop (Cisco) network infrastructures. An SDK normally consists of;  Set of APIs  Sample Code  Technical Notes  Debugging Facilities Cisco Examples of SDK  APIC Python SDK  UCS SDK  Cisco IP Phone 26
  • 24.
    # python Python 2.7.2(default, Mar 6 2012, 15:51:12) [GCC 3.4.3 (MontaVista 3.4.3-25.0.143.0800417 2008-02-22)] on linux2 Type "help", "copyright", "credits" or "license" for more information. Loaded cisco NxOS lib! >>> Interactive Python Shell # python bootflash:showBuffer.py Mon Jan 30 19:26:36 UTC 2012 |------------------------------------------------------------| Total Instant Usage 0 Remaining Instant Usage 46080 Max Cell Usage 0 Switch Cell Count 46080 |------------------------------------------------------------| Mon Jan 30 19:26:38 UTC 2012 # Run Python Script
  • 25.
    Integrated Development Environment(IDE) A software application that facilitates coding and software development An IDE normally consists of A source code editor Build automation tools A debugger Intelligent code completion 28
  • 26.
    What Does This Meanfor You? 1. Automation and orchestration in the DC are key building blocks for success. 2. LOBs and Developers are key influencers and decision makers when it comes to next generation modern data center architecture deployments. 3. Follow the programmability journey and participate in new Cisco trainings and services that help you understand the transition.