ucs management apis a technical deep dive
TRANSCRIPT
UCS Management APIsA Technical Deep Dive
John McDonough – Technical Marketing EngineerDEVNET-3003
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
• Introduction – UCS Management APIs - A Technical Deep Dive• Structure / Features / Model / Flow / Success or Failure• Methods / Sessions / Queries & Filters / Configurations / Events &
Statistics • Tools - Embedded / External• Conclusion
Agenda
DEVNET-3003 2
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
Introduction – UCS ManagementA Technical Deep Dive
DEVNET-3003 3
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public 4
Introduction
• Underneath the Python SDK, PowerTool PowerShell Libraries, VMware, Microsoft, OpenStack and Puppet integrations there is the UCS XML API itself.
• This session will go deep into the API and explain how the SDK, Libraries and integrations actually communicate with UCS components.
• This session will cover API session management, methods, queries and query filters, configurations and event subscription.
• Understanding the low-level UCS APIs and Object Model will enable you to build your own programmatic interface into your UCS environments in the language you like on the platform of your choosing.
DEVNET-3003
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
Structure / Features / Model / FlowSuccess or Failure
DEVNET-3003 5
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public 6
• Files – 69 Thousand• Comments – 6.8 Million Lines• Actual Code – 32 Million Lines
• HTML, XML, XSD, CSS, XSLT, MXML, DAL, DTD, IDL, SQL• C/C++, Java, JavaScript, PHP, Python, Ruby, Perl, Pascal,
ASP.Net, Visual Basic• Ant, make, Cmake, Teamcenter def• awk, expect, lex, yacc, sed, Korn Shell, bash, DOS Batch, Tcl/Tk,
ActionScript
Lines of code & Languages – May 2016
Structure – UCS Manager
DEVNET-3003
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public 7
• Communicates over HTTP/HTTPS• XML Based• Standard HTTP/HTTPS Request / Response cycle• Role Based Authentication• Object Model Hierarchy• Built-in Object Browser• Published Schema• Transactional• High Availability – out of the box!• EventStream
UCS API Features
XML API
Structure – XML API Features
DEVNET-3003
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public 8
Root
sys org-root
Managed Object Tree
switch-Achassis-1
fabric
ls-prodsrv
org-prod
blade-1 slot-2
ether fc
port-5port-1
adaptor-1
eth0
compute board
fc0 temp stats
power stats
macPool
mac poolblock
lsPowerlsBinding
boot policy
bios policyLAN
cloudSAN cloud
vlan10 vsan10
Structure – XML API Model
DEVNET-3003
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco PublicApplication
DownDown
Admin Power State
Oper Power State
Up
Structure – XML API Flow
Up
1. Req. Turn On2. Queue Req.3. Mutate MO4. Transact5. Replicate6. Persist7. Reply8. Apply9. Instruct10. Reply11. Reply
DEVNET-3003 9
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
Methods / Sessions / Queries & Filters / Configurations / Events
DEVNET-3003 10
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
Methods – Sessions
DEVNET-3003 11
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public 12
Methods - Sessions
• aaaLogin – Get a cookie, start a session
• aaaRefresh – Get a new cookie, maintain the session
• aaaLogout – Deactivate the cookie, release the session resources
• aaaGetComputeAuthTokens – Get tokens for token based login (e.g. KVM)
• aaaTokenLogin – Get a cookie, start a session with tokens
• aaaTokenRefresh – Get a new cookie, maintain the session with tokens
• aaaChangeSelfPassword – Change the connected user’s password
DEVNET-3003
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
Session ManagementLogin - Get a Cookie<aaaLogin inName="admin" inPassword="cisco123" />
<aaaLogin cookie="" response="yes" outCookie="1316708245/442fcb48-51b5-4cd7-b51a-114ff0d9fb6d" outRefreshPeriod="600" outPriv="admin,read-
only" outDomains="" outChannel="noencssl" outEvtChannel="noencssl" outSessionId="web_5076_A" outVersion="1.4(3m)"/>
Stay Active - Refresh your Cookie<aaaRefresh inName="admin" inPassword="cisco123" inCookie="1316708245/442fcb48-51b5-4cd7-b51a-
114ff0d9fb6d" />
<aaaRefresh cookie="" response="yes" outCookie="1316708493/24b45597-4737-4cf2-aa57-b05e8c62df7a" outRefreshPeriod="600" outPriv="admin,read-only" outDomains="" outChannel="noencssl" outEvtChannel="noencssl">
</aaaRefresh>
Logout – Deactivate your Cookie<aaaLogout inCookie="1316708493/24b45597-4737-4cf2-aa57-b05e8c62df7a" />
<aaaLogout cookie="" response="yes" outStatus="success"></aaaLogout>
Methods – aaaLogin / aaaRefresh / aaaLogout
DEVNET-3003 13
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
Methods – Queries & Filters
DEVNET-3003 14
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public 15
Methods – Queries & Filters• configResolveDn / configResolveDns – query by distinguished name/s
• configResolveClass / configResolveClasses – query by classId/s
• configFindDnsByClassId – query for all Dns of a particular class
• configResolveChildren – query all children of an object or a specific child class
• configResolveParent – query an object’s parent
• configScope – query from a place in the tree
• Property Filters – eq, ne, gt, ge, lt, le, wcard, bw, anybit, allbits
• Composite Filters – and, or, xor
• Modifier Filter – not
DEVNET-3003
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
configResolveDns<configResolveDns cookie="1253731066/6e75af90-66c2-4f56-9c9f-fc7167d793bd" inHierarchical="false"> <inDns> <dn value="sys/chassis-1" /> <dn value="sys/chassis-1/blade-1/board/cpu-1" /> <dn value="sys/chassis-1/blade-1/board/t-stats" /> <dn value="sys/chassis-7/blade-8" /> </inDns></configResolveDns>
Methods – Queries – configResolveDns
DEVNET-3003 16
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
configResolveDns<configResolveDns cookie="1316708615/a86c94ad-9e03-44ae-8d6b-88d8c653610b" response="yes"><outConfigs> <processorUnit
arch="Xeon" cores="4" coresEnabled="4" dn="sys/chassis-1/blade-1/board/cpu-1...voltage="not-supported"/>
<equipmentChassisackProgressIndicator="ack-not-in-progress" adminState="acknowledged" configState="ok" ... thermal="ok" usrLbl="" vendor="Cisco Systems Inc" versionHolder="yes"/></outConfigs>
<outUnresolved> <dn value="sys/chassis-1/blade-1/board/t-stats"/> <-- Not a real dn <dn value="sys/chassis-7/blade-8"/> <-- This blade is not present </outUnresolved></configResolveDns>
Methods – Queries – configResolveDns - continued
DEVNET-3003 17
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
configResolveClass<configResolveClass classId="equipmentChassis" cookie="1237436975/f9f68f50-6d52-45b4-839c-1a905126c0af" inHierarchical="false"/>
<configResolveClass cookie="1316708615/a86c94ad-9e03-44ae-8d6b-88d8c653610b" response="yes" classId="equipmentChassis"><outConfigs> <equipmentChassisackProgressIndicator="ack-not-in-progress" adminState="acknowledged" configState="ok" connPath="A,B" connStatus="A,B" dn="sys/chassis-1" . . . thermal="ok" usrLbl="" vendor="Cisco Systems Inc" versionHolder="yes"/>
<equipmentChassisackProgressIndicator="ack-not-in-progress" adminState="acknowledged" configState="ok" connPath="A,B" connStatus="A,B" dn="sys/chassis-2" . . . thermal=”ok" usrLbl="" vendor="Cisco Systems Inc" versionHolder="yes"/>
</outConfigs></configResolveClass>
Methods – Queries – configResolveClass
DEVNET-3003 18
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
configResolveClasses<configResolveClasses cookie="1250544347/36ab394f-8680-44b5-ab5f-2fb037b39b72" inHierarchical="false"> <inIds> <classId value="computeBlade"/><classId value="equipmentChassis"/> </inIds></configResolveClasses>
<configResolveClasses cookie="1316708615/a86c94ad-9e03-44ae-8d6b-88d8c653610b" response="yes"><outConfigs> <computeBlade dn="sys/chassis-1/blade-1" . . . /> <computeBlade dn="sys/chassis-3/blade-8" . . . /> <equipmentChassis dn="sys/chassis-1" . . . /> <equipmentChassis dn="sys/chassis-2" . . . /> <equipmentChassis dn="sys/chassis-3" . . . /> </outConfigs></configResolveClasses>
Methods – Queries – configResolveClasses
DEVNET-3003 19
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
configScope<configScope dn="sys/chassis-1/blade-1/board" inClass="memoryUnit" cookie="1316708615/a86c94ad-9e03-44ae-8d6b-88d8c653610b" inHierarchical="false" />
<configScope dn="sys/chassis-1/blade-1/board" cookie="1316708615/a86c94ad-9e03-44ae-8d6b-88d8c653610b" response="yes"> <outConfigs> <memoryUnitbank="0" capacity="2048" clock="1067" dn="sys/chassis-1/blade-1/board/memarray-1/mem-12" . . . />
<memoryUnitbank="0" capacity="2048" clock="1067" dn="sys/chassis-1/blade-1/board/memarray-1/mem-11" . . . />
</outConfigs></configScope>
Methods – Queries – configScope
DEVNET-3003 20
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
Query Filters - <eq> <ne>Equal To <configResolveClass cookie="1254230563/fe98cf5c-7113-4d57-b208-e5d8141e72e8" inHierarchical="false" classId="lsServer">
<inFilter> <eq class="lsServer" property="assocState" value="associated" /> </inFilter></configResolveClass> Not Equal<configResolveClass cookie="1254230563/fe98cf5c-7113-4d57-b208-e5d8141e72e8" inHierarchical="false" classId="lsServer">
<inFilter> <ne class="lsServer" property="assocState” value="associated" /> </inFilter></configResolveClass>
Methods – Queries – Filters <eq> / <ne>
DEVNET-3003 21
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
Query Filters - <wcard> <bw>Wildcard<configResolveClass cookie="1254230563/fe98cf5c-7113-4d57-b208-e5d8141e72e8" inHierarchical="false" classId="adaptorUnit">
<inFilter> <wcard class="adaptorUnit" property="serial" value="QCI1*" /> </inFilter></configResolveClass> Between – This is inlcusive of the upper and lower bounds<configResolveClass cookie="1254230563/fe98cf5c-7113-4d57-b208-e5d8141e72e8" inHierarchical="false" classId="memoryArray">
<inFilter> <bw class="memoryArray" property="populated" firstValue="1” secondValue="6"/>
</inFilter></configResolveClass>
Methods – Queries – Filters <wcard> / <bw>
DEVNET-3003 22
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
Query Filters - <and> <or> <not>
And (Or Not)<configResolveClass inHierarchical="false" cookie="1254230563/fe98cf5c-7113-4d57-b208-e5d8141e72e8" classId="computeBlade">
<inFilter> <and> <or> <eq class="computeBlade" property="slotId" value="1"/> <eq class="computeBlade" property="slotId" value="8"/> </or> <not> <eq class="computeBlade" property="chassisId" value="5"/> </not> </and> </inFilter></configResolveClass>
Methods – Queries – Filters <and> / <or> / <not>
DEVNET-3003 23
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
Query Filters - <xor>
Exclusive Or<configResolveClass inHierarchical="false" cookie="1254230563/fe98cf5c-7113-4d57-b208-e5d8141e72e8" classId="computeBlade">
<inFilter> <xor> <eq class="computeBlade" property="slotId" value="6"/> <eq class="computeBlade" property="operPower" value="on"/> </xor> </inFilter></configResolveClass>
Methods – Queries – Filters <xor>
DEVNET-3003 24
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
Methods – Configurations
DEVNET-3003 25
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public 26
Methods – Configurations• configConfMo – manage a specific object
• configConfMos – manage multiple objects of the same or different type
• configConfMoGroup – manage multiple objects of the same type
• faultAckFault / faultAckFaults – acknowledge a single or multiple faults
• lsInstantiateTemplate – instantiate a service profile from a template
• lsInstantiateNTemplate – instantiate multiple service profiles from a template
• lsClone – clone a service profile or service profile template
• lsTemplatise – create a template from a service profile
• There are a few more… read the guide!
DEVNET-3003
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
<configConfMos cookie="1241537386/74c123ec-1659-4f39-b292-4316beb61dcd" inHierarchical="yes">
<inConfigs> <pair key="sys/user-ext/jomcdono_user"> <aaaUser descr="" dn="sys/user-ext/jomcdono_user" email="[email protected]" expires="no" name="jomcdono" firstName="John" lastName="McDonough" phone="212-555-1212" pwd="cisco!123" status="created"> <aaaSshAuth data="" strType="none"></aaaSshAuth> <aaaUserRole name="admin"></aaaUserRole> </aaaUser> </pair> <pair key="org-root/org-IT" > <orgOrg dn="org-root/org-IT" name="IT" status="created" /> </pair> </inConfigs></configConfMos>
Methods – configConfMos – User and Org
DEVNET-3003 27
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
<configConfMos cookie="1241537386/74c123ec-1659-4f39-b292-4316beb61dcd" inHierarchical="yes">
<inConfigs> <pair key="sys/user-ext/jomcdono_user"> <aaaUser descr="" dn="sys/user-ext/jomcdono_user" email="[email protected]" expires="no" name="jomcdono" firstName="John" lastName="McDonough" phone="212-555-1212" pwd="cisco!123" status="created"> <aaaSshAuth data="" strType="none"></aaaSshAuth> <aaaUserRole name="admin"></aaaUserRole> </aaaUser> </pair> <pair key="org-root/org-IT" > <orgOrg dn="org-root/org-IT" name="IT" status="created" /> </pair> </inConfigs></configConfMos>
Methods – configConfMos – User and Org
DEVNET-3003 28
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
<configConfMos cookie="1241537386/74c123ec-1659-4f39-b292-4316beb61dcd" inHierarchical="yes">
<inConfigs> <pair key="sys/user-ext/jomcdono_user"> <aaaUser descr="" dn="sys/user-ext/jomcdono_user" email="[email protected]" expires="no" name="jomcdono" firstName="John" lastName="McDonough" phone="212-555-1212" pwd="cisco!123" status="created"> <aaaSshAuth data="" strType="none"></aaaSshAuth> <aaaUserRole name="admin"></aaaUserRole> </aaaUser> </pair> <pair key="org-root/org-IT" > <orgOrg dn="org-root/org-IT" name="IT" status="created" /> </pair> </inConfigs></configConfMos>
Methods – configConfMos – User and Org
UCS Manager Transactions are ACID compliant
A – AtomicityC – ConsistencyI – IsolationD – Durability
These properties guarantee that UCSMdatabase transactions are processed reliably
DEVNET-3003 29
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
<configConfMoGroup cookie="1316718600/21cd19fe-1a95-4bb7-87b7-c2846c8ff700" inHierarchical="false">
<inDns> <dn value="sys/chassis-1/blade-1"/> <dn value="sys/chassis-1/blade-3"/> <dn value="sys/chassis-1/blade-5"/> <dn value="sys/chassis-1/blade-7"/> </inDns> <inConfig> <computeBlade usrLbl="jomcdono"/> </inConfig></configConfMoGroup>
Methods – configConfMoGroup – User Label
DEVNET-3003 30
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
<configConfMoGroup cookie="1316718600/21cd19fe-1a95-4bb7-87b7-c2846c8ff700" inHierarchical="false">
<inDns> <dn value="sys/chassis-1/blade-1"/> <dn value="sys/chassis-1/blade-3"/> <dn value="sys/chassis-1/blade-5"/> <dn value="sys/chassis-1/blade-7"/> </inDns> <inConfig> <computeBlade usrLbl="jomcdono"/> </inConfig></configConfMoGroup>
Methods – configConfMos – User Label
DEVNET-3003 31
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
Methods – Events and Statistics
DEVNET-3003 32
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public 33
Methods – Events and Statistics• The Event Stream is a stream of XML that comes from UCS Manager.
• Users / Applications can Subscribe to the Event Stream
• Every Object Instantiation / Mutation / Deletion is in the event stream• Except Statistics – UCSM statistics need to be queried.• Stats Objects in UCSM
• Many UCSM objects have statistics• Up to six statistical objects are maintained by UCSM, one current and five historical spaced at the
collection interval for the particular object type.• statsCurr object is a collection of all the current statistic objects in the system• statsHist object is a collection of all the historical statistic objects in the system, typicall five times
larger than statsCurr
• <configResolveClass cookie="1234" inHierarchical="false" classId="statsCurr"/>
DEVNET-3003
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public 34
Methods – Events and Statistics• The Event Stream is a stream of XML that comes from UCS Manager.
• Users / Applications can Subscribe to the Event Stream
• Every Object Instantiation / Mutation / Deletion is in the event stream• Except Statistics – UCSM statistics need to be queried.• Stats Objects in UCSM
• Many UCSM objects have statistics• Up to six statistical objects are maintained by UCSM, one current and five historical spaced at the
collection interval for the particular object type.• statsCurr object is a collection of all the current statistic objects in the system• statsHist object is a collection of all the historical statistic objects in the system, typicall five times
larger than statsCurr
• <configResolveClass cookie="1234" inHierarchical="false" classId="statsCurr"/>
DEVNET-3003
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public 35
Methods – Events and Statistics• The Event Stream is a stream of XML that comes from UCS Manager.
• Users / Applications can Subscribe to the Event Stream
• Every Object Instantiation / Mutation / Deletion is in the event stream• Except Statistics – UCSM statistics need to be queried.• Stats Objects in UCSM
• Many UCSM objects have statistics• Up to six statistical objects are maintained by UCSM, one current and five historical spaced at the
collection interval for the particular object type.• statsCurr object is a collection of all the current statistic objects in the system• statsHist object is a collection of all the historical statistic objects in the system, typicall five times
larger than statsCurr
• <configResolveClass cookie="1234" inHierarchical="false" classId="statsCurr"/>
<etherRxStats broadcastPackets="136484562" broadcastPacketsDelta="54" broadcastPacketsDeltaAvg="54" broadcastPacketsDeltaMax="55" broadcastPacketsDeltaMin="54" childAction="deleteNonPresent" intervals="58982460" jumboPackets="214285182580" jumboPacketsDelta="33" jumboPacketsDeltaAvg="31" jumboPacketsDeltaMax="33" jumboPacketsDeltaMin="31" multicastPackets="37946767" multicastPacketsDelta="17" multicastPacketsDeltaAvg="17" multicastPacketsDeltaMax="21" multicastPacketsDeltaMin="17" rn="rx-stats" suspect="no" thresholded="" timeCollected="2016-06-01T13:21:03.079" totalBytes="463402286303635" totalBytesDelta="98446" totalBytesDeltaAvg="90473" totalBytesDeltaMax="98446" totalBytesDeltaMin="86701" totalPackets="299056720849" totalPacketsDelta="184" totalPacketsDeltaAvg="165" totalPacketsDeltaMax="184" totalPacketsDeltaMin="155" unicastPackets="298882289520" unicastPacketsDelta="113" unicastPacketsDeltaAvg="93" unicastPacketsDeltaMax="113" unicastPacketsDeltaMin="83" update="131080"></etherRxStats>
DEVNET-3003
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public 36
Methods – Subscribe to the Event Stream• <eventSubscribe cookie="1237436975/f9f68f50-6d52-45b4-839c-1a905126c0af" />
• The very first thing UCSM GUI does when it starts is subscribe to the event stream. This is why configurations that happen in another UCS session GUI, CLI or API will immediately appear in every other session.
DEVNET-3003
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public 37
Methods – Subscribe to the Event Stream• <eventSubscribe cookie="1237436975/f9f68f50-6d52-45b4-839c-1a905126c0af" />
• The very first thing UCSM GUI does when it starts is subscribe to the event stream. This is why configurations that happen in another UCS session GUI, CLI or API will immediately appear in every other session.
DEVNET-3003
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public 38
<methodVessel cookie=""> <inStimuli> <configMoChangeEvent cookie="" inEid="1787883"><inConfig> <aaaModLR affected="sys/user-ext/user-jomcdono4" cause="65537" created="2009-03-09T22:44:36" descr="user jomcdono4
modified" dn="aaa-log/394229" id="394229" ind="modification" severity="info" status="created" trig="admin" txId="2032198" user="admin"/></inConfig>
</configMoChangeEvent> <configMoChangeEvent cookie="" inEid="1787884"><inConfig> <eventRecord affected="sys/user-ext" cause="65537" created="2009-03-09T22:44:36" descr="[FSM:BEGIN]: user
configuration(FSM:sam:dme:AaaUserEpUpdateUserEp)" dn="event-log/394230" id="394230" ind="state-transition" severity="info" status="created" trig="special" txId="2032198" user="admin"/></inConfig>
</configMoChangeEvent> <configMoChangeEvent cookie="" inEid="1787885"><inConfig> <eventRecord affected="sys/user-ext" cause="65537" created="2009-03-09T22:44:36" descr="[FSM:STAGE:END]: (FSM-
STAGE:sam:dme:AaaUserEpUpdateUserEp:begin)" dn="event-log/394231" id="394231" ind="state-transition" severity="info" status="created" trig="special" txId="2032198" user="admin"/></inConfig>
</configMoChangeEvent> <configMoChangeEvent cookie="" inEid="1787886"><inConfig> <eventRecord affected="sys/user-ext" cause="65537" created="2009-03-09T22:44:36" descr="[FSM:STAGE:ASYNC]: user
configuration to primary(FSM-STAGE:sam:dme:AaaUserEpUpdateUserEp:SetUserLocal)" dn="event-log/394232" id="394232" ind="state-transition" severity="info" status="created" trig="special" txId="2032198" user="admin"/></inConfig>
</configMoChangeEvent> </inStimuli></methodVessel>
Methods – Listen to the Event Stream
DEVNET-3003
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
Tools – Embedded / External
DEVNET-3003 39
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public 40
Tools – Embedded – Object Browser (Visore)• Search By Class
• Search By Dn
• Create single action filters
• View the query XML code
• Navigate the Object Model Tree
• View ***UNCHANGED*** object attribute values
• http/https://<ucs-manger-ip>/visore.html
DEVNET-3003
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public 41
Tools – Embedded – Object Browser (Visore)• Search By Class
• Search By Dn
• Create single action filters
• View the query XML code
• Navigate the Object Model Tree
• View ***UNCHANGED*** object attribute values
• http/https://<ucs-manger-ip>/visore.html
DEVNET-3003
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public 42
Tools – Embedded – Object Browser (Visore)• Search By Class
• Search By Dn
• Create single action filters
• View the query XML code
• Navigate the Object Model Tree
• View ***UNCHANGED*** object attribute values
• http/https://<ucs-manger-ip>/visore.html
DEVNET-3003
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public 43
Tools – Embedded – Object Browser (Visore)• Search By Class
• Search By Dn
• Create single action filters
• View the query XML code
• Navigate the Object Model Tree
• View ***UNCHANGED*** object attribute values
• http/https://<ucs-manger-ip>/visore.html
DEVNET-3003
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public 44
Tools – External• UCS Platform Emulator
• Latest hardware / import from live UCS / export and import saved configurations• Program against UCS PE as if it were a real UCS• Object Model Documentation / XML Schema Download
• UCS PowerTool• Cmdlets to manage every user/admin manageable object and operation in UCS• PowerTool Code creation from UCS GUI• XML and Metadata Inspection
• UCS Python SDK• Classes to manage every user/admin manageable object and operation in UCS• Python Code creation from UCS GUI• XML and Metadata Inspection
DEVNET-3003
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
Conclusion
DEVNET-3003 45
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
Complete Your Online Session Evaluation
Don’t forget: Cisco Live sessions will be available for viewing on-demand after the event at CiscoLive.com/Online
• Give us your feedback to be entered into a Daily Survey Drawing. A daily winner will receive a $750 Amazon gift card.
• Complete your session surveys through the Cisco Live mobile app or from the Session Catalog on CiscoLive.com/us.
46DEVNET-3003
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public 47
Opportunities for Follow-up• SDK, API, Sample code downloads
• Blog, Forum, or Social media feed to follow
• YouTube video to view
• Learning Labs and Sandbox available on DevNet
• Upcoming trainings, hackathons, events
DEVNET-2002
Become a DevNet Community member:www.developer.cisco.com
DEVNET-3003
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public 48
Continue Your Education in the DevNet Zone• Take the DevNet « Coding Track »
• DEVNET-1001: Coding 101, Introduction to REST APIs • DEVNET-1060: Intro to API Authentication Types (Oauth, token HTTP Basic)• DEVNET-1080: Introduction to Git• DEVNET-2002: Coding 102, REST API Basics using Spark• DEVNET-2003: Coding 102, REST API Basics using APIC-EM• DEVNET-2006: Coding 103, Deep Dive on JSON & more Python
• UCS Programmability in DEVNET• UCS PowerTool Learning Labs• UCS Python SDK Learning Labs• UCS Python and PowerTool Workbench Sessions
• Meet the Experts at the Demo Pods
DEVNET-2002DEVNET-3003
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public 49
Continue Your Education• Demos in the Cisco campus
• Walk-in Self-Paced Labs
• Lunch & Learn
• Meet the Engineer 1:1 meetings
• Related sessions
DEVNET-3003
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
Please join us for the Service Provider Innovation Talk featuring:
Yvette Kanouff | Senior Vice President and General Manager, SP BusinessJoe Cozzolino | Senior Vice President, Cisco Services
Thursday, July 14th, 201611:30 am - 12:30 pm, In the Oceanside A room
What to expect from this innovation talk• Insights on market trends and forecasts• Preview of key technologies and capabilities • Innovative demonstrations of the latest and greatest products• Better understanding of how Cisco can help you succeed
Register to attend the session live now or watch the broadcast on cisco.com
DEVNET-3003 50
Thank you
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco PublicDEVNET-3003 51
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public 53
Data Center / Virtualization Cisco Education OfferingsCourse Description Cisco Certification
Introducing Cisco Data Center Networking (DCICN); Introducing Cisco Data Center Technologies (DCICT)
Learn basic data center technologies and skills to build a data center infrastructure.
CCNA® Data Center
Implementing Cisco Data Center Unified Fabric (DCUFI);Implementing Cisco Data Center Unified Computing (DCUCI)Designing Cisco Data Center Unified Computing (DCUDC)Designing Cisco Data Center Unified Fabric (DCUFD)Troubleshooting Cisco Data Center Unified Computing (DCUCT)Troubleshooting Cisco Data Center Unified Fabric (DCUFT)
Obtain professional level skills to design, configure, implement, troubleshoot data center network infrastructure.
CCNP® Data Center
Product Training Portfolio: DCNMM, DCAC9K, DCINX9K, DCMDS, DCUCS, DCNX1K, DCNX5K, DCNX7K
Gain hands-on skills using Cisco solutions to configure, deploy, manage and troubleshoot unified computing, policy-driven and virtualized data center network infrastructure.
Designing the FlexPod® Solution (FPDESIGN); Implementing and Administering the FlexPod® Solution (FPIMPADM)
Learn how to design, implement and administer FlexPod solutions
Cisco and NetApp Certified FlexPod® Specialist
For more details, please visit: http://learningnetwork.cisco.comQuestions? Visit the Learning@Cisco Booth or contact [email protected]
DEVNET-3003
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
Appendix
DEVNET-3003 54
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
configResolveDn<configResolveDn dn="sys/chassis-1" cookie="1237436975/f9f68f50-6d52-45b4-839c-1a905126c0af" inHierarchical="false"/>
Response<configResolveDn dn="sys/chassis-1" cookie="1316708615/a86c94ad-9e03-44ae-8d6b-88d8c653610b" response="yes"><outConfig> <equipmentChassis
ackProgressIndicator="ack-not-in-progress" adminState="acknowledged" configState="ok" connPath="A,B" connStatus="A,B" dn="sys/chassis-1" fabricEpDn="fabric/server/chassis-1" fltAggr="0" fsmDescr="" fsmPrev="PsuPolicyConfigSuccess" fsmProgr="100" fsmRmtInvErrCode="none" fsmRmtInvErrDescr="" fsmRmtInvRslt="" fsmStageDescr="" fsmStamp="2011-05-03T15:26:19.431" fsmStatus="nop" fsmTry="0" id="1" lcTs="1969-12-31T19:00:00.000" licGP="0" licState="license-ok" managingInst="A" model="N20-C6508" operQualifier="fan-perf" operState="operable" operability="operable" power="ok" presence="unknown" revision="0" seepromOperState="operable" serial="FOX1327G4VY" thermal="ok" usrLbl="" vendor="Cisco Systems Inc" versionHolder="yes"/>
</outConfig></configResolveDn>
What if inHierarchical="true" ? Lots of information
Methods – Queries - configResolveDn
DEVNET-3003 55
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
configResolveDns<configResolveDns cookie="1253731066/6e75af90-66c2-4f56-9c9f-fc7167d793bd" inHierarchical="false"> <inDns> <dn value="sys/chassis-1" /> <dn value="sys/chassis-1/blade-1/board/cpu-1" /> <dn value="sys/chassis-1/blade-1/board/t-stats" /> <dn value="sys/chassis-7/blade-8" /> </inDns></configResolveDns>
Methods – Queries – configResolveDns
DEVNET-3003 56
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
configResolveDns<configResolveDns cookie="1316708615/a86c94ad-9e03-44ae-8d6b-88d8c653610b" response="yes"><outConfigs> <processorUnit
arch="Xeon" cores="4" coresEnabled="4" dn="sys/chassis-1/blade-1/board/cpu-1...voltage="not-supported"/>
<equipmentChassisackProgressIndicator="ack-not-in-progress" adminState="acknowledged" configState="ok" ... thermal="ok" usrLbl="" vendor="Cisco Systems Inc" versionHolder="yes"/></outConfigs>
<outUnresolved> <dn value="sys/chassis-1/blade-1/board/t-stats"/> <-- Not a real dn <dn value="sys/chassis-7/blade-8"/> <-- This blade is not present </outUnresolved></configResolveDns>
Methods – Queries – configResolveDns - continued
DEVNET-3003 57
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
configResolveClass<configResolveClass classId="equipmentChassis" cookie="1237436975/f9f68f50-6d52-45b4-839c-1a905126c0af" inHierarchical="false"/>
<configResolveClass cookie="1316708615/a86c94ad-9e03-44ae-8d6b-88d8c653610b" response="yes" classId="equipmentChassis"><outConfigs> <equipmentChassisackProgressIndicator="ack-not-in-progress" adminState="acknowledged" configState="ok" connPath="A,B" connStatus="A,B" dn="sys/chassis-1" . . . thermal="ok" usrLbl="" vendor="Cisco Systems Inc" versionHolder="yes"/>
<equipmentChassisackProgressIndicator="ack-not-in-progress" adminState="acknowledged" configState="ok" connPath="A,B" connStatus="A,B" dn="sys/chassis-2" . . . thermal=”ok" usrLbl="" vendor="Cisco Systems Inc" versionHolder="yes"/>
</outConfigs></configResolveClass>
Methods – Queries – configResolveClass
DEVNET-3003 58
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
configResolveClasses<configResolveClasses cookie="1250544347/36ab394f-8680-44b5-ab5f-2fb037b39b72" inHierarchical="false"> <inIds> <classId value="computeBlade"/><classId value="equipmentChassis"/> </inIds></configResolveClasses>
<configResolveClasses cookie="1316708615/a86c94ad-9e03-44ae-8d6b-88d8c653610b" response="yes"><outConfigs> <computeBlade dn="sys/chassis-1/blade-1" . . . /> <computeBlade dn="sys/chassis-3/blade-8" . . . /> <equipmentChassis dn="sys/chassis-1" . . . /> <equipmentChassis dn="sys/chassis-2" . . . /> <equipmentChassis dn="sys/chassis-3" . . . /> </outConfigs></configResolveClasses>
Methods – Queries – configResolveClasses
DEVNET-3003 59
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
configFindDnsByClassId
<configFindDnsByClassId classId="computeBlade" cookie="1250701677/6c33eda7-f74e-4b5e-a545-ff5d4deb9f6e"/>
<configFindDnsByClassId cookie="1316708615/a86c94ad-9e03-44ae-8d6b-88d8c653610b" response="yes" classId="computeBlade"> <outDns> <dn value="sys/chassis-1/blade-8"/> <dn value="sys/chassis-2/blade-8"/> <dn value="sys/chassis-1/blade-7"/> <dn value="sys/chassis-2/blade-7"/> <dn value="sys/chassis-1/blade-4"/> <dn value="sys/chassis-3/blade-4"/> </outDns></configFindDnsByClassId>
**** Notice no inHierarchical attribute *****
Methods – Queries – configFindDnsByClassId
DEVNET-3003 60
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
configResolveChildren
<configResolveChildren classId="adaptorExtEthIf" inDn="sys/chassis-1/blade-1/adaptor-1” cookie="1237436975/f9f68f50-6d52-45b4-839c-1a905126c0af" inHierarchical="false" />
<configResolveChildren cookie="1316708615/a86c94ad-9e03-44ae-8d6b-88d8c653610b" response="yes" classId="adaptorExtEthIf"><outConfigs>
<adaptorExtEthIfadapterId="1" adminState="enabled" chassisId="N/A" discovery="absent" dn="sys/chassis-1/blade-1/adaptor-1/ext-eth-2" epDn="" fsmDescr="" . . . type=""/>
<adaptorExtEthIfadapterId="1" adminState="enabled" chassisId="N/A" discovery="absent" dn="sys/chassis-1/blade-1/adaptor-1/ext-eth-1" epDn="" fsmDescr="" . . . type=""/>
</outConfigs></configResolveChildren>
Methods – Queries – configResolveChildren – Class
DEVNET-3003 61
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
configResolveChildren
<configResolveChildren inDn="sys/chassis-1/blade-1/adaptor-1” cookie="1237436975/f9f68f50-6d52-45b4-839c-1a905126c0af" inHierarchical="false" />
<configResolveChildren cookie="1316708615/a86c94ad-9e03-44ae-8d6b-88d8c653610b" response="yes" classId="adaptorExtEthIf">
<outConfigs> <all children objects /> </outConfigs></configResolveChildren>
Methods – Queries – configResolveChildren
DEVNET-3003 62
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
configResolveParent<configResolveParent dn="sys/chassis-1/blade-1/adaptor-1" cookie="1237436975/f9f68f50-6d52-45b4-839c-1a905126c0af" inHierarchical="false"/>
<configResolveParent dn="sys/chassis-1/blade-1/adaptor-1" cookie="1316708615/a86c94ad-9e03-44ae-8d6b-88d8c653610b" response="yes"> <outConfig> <computeBlade parent object /> </outConfig></configResolveParent>
Methods – Queries – configResolveParent
DEVNET-3003 63
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
configScope<configScope dn="sys/chassis-1/blade-1/board" inClass="memoryUnit" cookie="1316708615/a86c94ad-9e03-44ae-8d6b-88d8c653610b" inHierarchical="false" />
<configScope dn="sys/chassis-1/blade-1/board" cookie="1316708615/a86c94ad-9e03-44ae-8d6b-88d8c653610b" response="yes"> <outConfigs> <memoryUnitbank="0" capacity="2048" clock="1067" dn="sys/chassis-1/blade-1/board/memarray-1/mem-12" . . . />
<memoryUnitbank="0" capacity="2048" clock="1067" dn="sys/chassis-1/blade-1/board/memarray-1/mem-11" . . . />
</outConfigs></configScope>
Methods – Queries – configScope
DEVNET-3003 64
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
Query Filters - <gt> <ge>Greater Than <configResolveClass cookie="1254230563/fe98cf5c-7113-4d57-b208-e5d8141e72e8" inHierarchical="false" classId="memoryArray">
<inFilter> <gt class="memoryArray" property="currCapacity" value="1024" /> </inFilter></configResolveClass>
Greater Than or Equal<configResolveClass cookie="1254230563/fe98cf5c-7113-4d57-b208-e5d8141e72e8" inHierarchical="false" classId="memoryArray">
<inFilter> <ge class="memoryArray" property="currCapacity" value="2048" /> </inFilter></configResolveClass>
Methods – Queries – Filters <gt> / <ge>
DEVNET-3003 65
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
Query Filters - <lt> <le>Less Than <configResolveClass cookie="1254230563/fe98cf5c-7113-4d57-b208-e5d8141e72e8" inHierarchical="false"
classId="memoryArray"> <inFilter> <lt class="memoryArray" property="currCapacity" value="12288" /> </inFilter></configResolveClass> Less Than or Equal<configResolveClass cookie="1254230563/fe98cf5c-7113-4d57-b208-e5d8141e72e8" inHierarchical="false" classId="memoryArray">
<inFilter> <le class="memoryArray" property="currCapacity" value="12288" /> </inFilter></configResolveClass>
Methods – Queries – Filters <lt> / <le>
DEVNET-3003 66
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
Query Filters - <eq> <ne>Equal To <configResolveClass cookie="1254230563/fe98cf5c-7113-4d57-b208-e5d8141e72e8" inHierarchical="false" classId="lsServer">
<inFilter> <eq class="lsServer" property="assocState" value="associated" /> </inFilter></configResolveClass> Not Equal<configResolveClass cookie="1254230563/fe98cf5c-7113-4d57-b208-e5d8141e72e8" inHierarchical="false" classId="lsServer">
<inFilter> <ne class="lsServer" property="assocState” value="associated" /> </inFilter></configResolveClass>
Methods – Queries – Filters <eq> / <ne>
DEVNET-3003 67
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
Query Filters - <wcard> <bw>Wildcard<configResolveClass cookie="1254230563/fe98cf5c-7113-4d57-b208-e5d8141e72e8" inHierarchical="false" classId="adaptorUnit">
<inFilter> <wcard class="adaptorUnit" property="serial" value="QCI1*" /> </inFilter></configResolveClass> Between – This is inlcusive of the upper and lower bounds<configResolveClass cookie="1254230563/fe98cf5c-7113-4d57-b208-e5d8141e72e8" inHierarchical="false" classId="memoryArray">
<inFilter> <bw class="memoryArray" property="populated" firstValue="1” secondValue="6"/>
</inFilter></configResolveClass>
Methods – Queries – Filters <wcard> / <bw>
DEVNET-3003 68
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
Query Filters - <anybit> <allbits>
Anybit<configResolveClass cookie="1254230563/fe98cf5c-7113-4d57-b208-e5d8141e72e8" inHierarchical="false" classId="computeBlade">
<inFilter> <anybit class="computeBlade" property="connStatus" value="A,B" /> </inFilter></configResolveClass> Allbits<configResolveClass cookie="1254230563/fe98cf5c-7113-4d57-b208-e5d8141e72e8" inHierarchical="false" classId="lsServer">
<inFilter> <allbits class="lsServer" property="configQualifier” value="vnic-capacity,vhba-capacity" />
</inFilter></configResolveClass>
Methods – Queries – Filters <wcard> / <bw>
DEVNET-3003 69
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
Query Filters - <and> <or> <not>
And (Or Not)<configResolveClass inHierarchical="false" cookie="1254230563/fe98cf5c-7113-4d57-b208-e5d8141e72e8" classId="computeBlade">
<inFilter> <and> <or> <eq class="computeBlade" property="slotId" value="1"/> <eq class="computeBlade" property="slotId" value="8"/> </or> <not> <eq class="computeBlade" property="chassisId" value="5"/> </not> </and> </inFilter></configResolveClass>
Methods – Queries – Filters <and> / <or> / <not>
DEVNET-3003 70
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
Query Filters - <xor>
Exclusive Or<configResolveClass inHierarchical="false" cookie="1254230563/fe98cf5c-7113-4d57-b208-e5d8141e72e8" classId="computeBlade">
<inFilter> <xor> <eq class="computeBlade" property="slotId" value="6"/> <eq class="computeBlade" property="operPower" value="on"/> </xor> </inFilter></configResolveClass>
Methods – Queries – Filters <xor>
DEVNET-3003 71
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
<configConfMos cookie="1241537386/74c123ec-1659-4f39-b292-4316beb61dcd" inHierarchical="yes">
<inConfigs> <pair key="sys/user-ext/jomcdono_user"> <aaaUser descr="" dn="sys/user-ext/jomcdono_user" email="[email protected]" expires="no" name="jomcdono" firstName="John" lastName="McDonough" phone="212-555-1212" pwd="cisco!123" status="created"> <aaaSshAuth data="" strType="none"></aaaSshAuth> <aaaUserRole name="admin"></aaaUserRole> </aaaUser> </pair> <pair key="org-root/org-IT" > <orgOrg dn="org-root/org-IT" name="IT" status="created" /> </pair> </inConfigs></configConfMos>
Methods – configConfMos – User and Org
DEVNET-3003 72
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
<configConfMoGroup cookie="1316718600/21cd19fe-1a95-4bb7-87b7-c2846c8ff700" inHierarchical="false">
<inDns> <dn value="sys/chassis-1/blade-1"/> <dn value="sys/chassis-1/blade-3"/> <dn value="sys/chassis-1/blade-5"/> <dn value="sys/chassis-1/blade-7"/> </inDns> <inConfig> <computeBlade usrLbl="jomcdono"/> </inConfig></configConfMoGroup>
Methods – configConfMoGroup – User Label
DEVNET-3003 73
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
Ack a Single fault<faultAckFault inHierarchical="false" cookie="1316718600/21cd19fe-1a95-4bb7-87b7-c2846c8ff700" inId="10120" />
Ack Multiple faults<faultAckFaults cookie="1316718600/21cd19fe-1a95-4bb7-87b7-c2846c8ff700"> <inIds> <id value="10656"/> <id value="10660"/> </inIds></faultAckFaults>
Methods – faultAckFault /faultAckFaults
DEVNET-3003 74
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
Instantiate a template<lsInstantiateTemplate dn="org-root/ls-service-templ-001" cookie="1316718600/21cd19fe-1a95-4bb7-87b7-c2846c8ff700" inTargetOrg="org-root" inServerName="SP1" inHierarchical="no"></lsInstantiateTemplate>
Instantiate several templates<lsInstantiateNTemplate dn="org-root/ls-service-templ-001" cookie=" 1316718600/21cd19fe-1a95-4bb7-87b7-c2846c8ff700"
inTargetOrg="org-root" inServerNamePrefixOrEmpty="SP" inNumberOf="2" inHierarchical="no"></lsInstantiateNTemplate>
Methods – lsInstantiateTemplate & lsInstantiateNTemplate
DEVNET-3003 75
© 2016 Cisco and/or its affiliates. All rights reserved. Cisco Public
Clone a service profile or service profile template<lsClone dn="org-root/ls-SP1" cookie="1316718600/21cd19fe-1a95-4bb7-87b7-c2846c8ff700"
inTargetOrg="org-root" inServerName="CP-1" inHierarchical="no"></lsClone>
Create a template from a Service Profile<lsTemplatise dn="org-root/ls-SP1" cookie="1316718600/21cd19fe-1a95-4bb7-87b7-c2846c8ff700"
inTargetOrg="org-root" inTemplateName="tempate-2" inTemplateType="initial-template" inHierarchical="no"></lsTemplatise>
Methods – lsClone & lsTemplatise
DEVNET-3003 76