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 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
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 ?
9. 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
10. Summary - Why Programmability?
11
More Flexibility More InnovationMore Speed More Repeatability
Fewer Mistakes
12. 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...”
13. 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.
18. 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
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 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
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
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.