Skip to content

Commit e43df8d

Browse files
committed
Added error handling to global QoS method, added specific QoS policy methods
1 parent ab87716 commit e43df8d

File tree

2 files changed

+111
-84
lines changed

2 files changed

+111
-84
lines changed

functions/newfunctions_ucs.py

Lines changed: 107 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -287,87 +287,111 @@ def setChassisDiscoveryPolicy(self, links):
287287
print "Error setting Chassis Discovery policy"
288288

289289
def setGlobalQosPolicy(self, qosconfig):
290-
291-
#Pull MTU for default/best-effort class
292-
defmtu = str(qosconfig['defaultmtu'])
293-
294-
#We want to send "normal" to UCS, not "1500".
295-
#Both will work, but "1500" will generate an annoying warning.
296-
if defmtu == "1500":
297-
defmtu = "normal"
298-
299-
#Position ourselves properly within the MO tree
300-
obj = self.handle.GetManagedObject(None, None, {"Dn":"fabric/lan"})
301-
mo = self.handle.AddManagedObject(obj, "qosclassDefinition",
302-
{
303-
"PolicyOwner":"local",
304-
"Dn":"fabric/lan/classes",
305-
"Descr":""
306-
}, True)
290+
try:
307291

308-
#Set params for Platinum class
309-
self.handle.AddManagedObject(mo, "qosclassEthClassified",
310-
{
311-
"Priority":"platinum",
312-
"Mtu":"9126",
313-
"Name":"",
314-
"Dn":"fabric/lan/classes/class-platinum",
315-
"Weight":"10",
316-
"AdminState":"disabled",
317-
"Cos":"5",
318-
"Drop":"drop",
319-
"MulticastOptimize":"no"
320-
}, True)
321-
322-
#Set params for Gold class
323-
self.handle.AddManagedObject(mo, "qosclassEthClassified",
324-
{
325-
"Priority":"gold",
326-
"Mtu":"9126",
327-
"Name":"",
328-
"Dn":"fabric/lan/classes/class-gold",
329-
"Weight":"9",
330-
"AdminState":"enabled",
331-
"Cos":"4",
332-
"Drop":"drop",
333-
"MulticastOptimize":"no"
334-
}, True)
335-
336-
#Set params for Silver class
337-
self.handle.AddManagedObject(mo, "qosclassEthClassified",
338-
{
339-
"Priority":"silver",
340-
"Mtu":"9126",
341-
"Name":"",
342-
"Dn":"fabric/lan/classes/class-silver",
343-
"Weight":"8",
344-
"AdminState":"enabled",
345-
"Cos":"2",
346-
"Drop":"drop",
347-
"MulticastOptimize":"no"
348-
}, True)
349-
350-
#Set params for Bronze class
351-
self.handle.AddManagedObject(mo, "qosclassEthClassified",
352-
{
353-
"Priority":"bronze",
354-
"Mtu":"9126",
355-
"Name":"",
356-
"Dn":"fabric/lan/classes/class-bronze",
357-
"Weight":"7",
358-
"AdminState":"enabled",
359-
"Cos":"1",
360-
"Drop":"drop",
361-
"MulticastOptimize":"no"
362-
}, True)
363-
364-
#Set params for Best-Effort class
365-
self.handle.AddManagedObject(mo, "qosclassEthBE",
366-
{
367-
"Name":"",
368-
"MulticastOptimize":"no",
369-
"Mtu":defmtu,
370-
"Dn":"fabric/lan/classes/class-best-effort",
371-
"Weight":"5"
372-
},
373-
True)
292+
#Pull MTU for default/best-effort class
293+
defmtu = str(qosconfig['defaultmtu'])
294+
295+
#We want to send "normal" to UCS, not "1500".
296+
#Both will work, but "1500" will generate an annoying warning.
297+
if defmtu == "1500":
298+
defmtu = "normal"
299+
300+
#Position ourselves properly within the MO tree
301+
obj = self.handle.GetManagedObject(None, None, {"Dn":"fabric/lan"})
302+
mo = self.handle.AddManagedObject(obj, "qosclassDefinition",
303+
{
304+
"PolicyOwner":"local",
305+
"Dn":"fabric/lan/classes",
306+
"Descr":""
307+
}, True)
308+
309+
#Set params for Platinum class
310+
self.handle.AddManagedObject(mo, "qosclassEthClassified",
311+
{
312+
"Priority":"platinum",
313+
"Mtu":"9126",
314+
"Name":"",
315+
"Dn":"fabric/lan/classes/class-platinum",
316+
"Weight":"10",
317+
"AdminState":"disabled",
318+
"Cos":"5",
319+
"Drop":"drop",
320+
"MulticastOptimize":"no"
321+
}, True)
322+
323+
#Set params for Gold class
324+
self.handle.AddManagedObject(mo, "qosclassEthClassified",
325+
{
326+
"Priority":"gold",
327+
"Mtu":"9126",
328+
"Name":"",
329+
"Dn":"fabric/lan/classes/class-gold",
330+
"Weight":"9",
331+
"AdminState":"enabled",
332+
"Cos":"4",
333+
"Drop":"drop",
334+
"MulticastOptimize":"no"
335+
}, True)
336+
337+
#Set params for Silver class
338+
self.handle.AddManagedObject(mo, "qosclassEthClassified",
339+
{
340+
"Priority":"silver",
341+
"Mtu":"9126",
342+
"Name":"",
343+
"Dn":"fabric/lan/classes/class-silver",
344+
"Weight":"8",
345+
"AdminState":"enabled",
346+
"Cos":"2",
347+
"Drop":"drop",
348+
"MulticastOptimize":"no"
349+
}, True)
350+
351+
#Set params for Bronze class
352+
self.handle.AddManagedObject(mo, "qosclassEthClassified",
353+
{
354+
"Priority":"bronze",
355+
"Mtu":"9126",
356+
"Name":"",
357+
"Dn":"fabric/lan/classes/class-bronze",
358+
"Weight":"7",
359+
"AdminState":"enabled",
360+
"Cos":"1",
361+
"Drop":"drop",
362+
"MulticastOptimize":"no"
363+
}, True)
364+
365+
#Set params for Best-Effort class
366+
self.handle.AddManagedObject(mo, "qosclassEthBE",
367+
{
368+
"Name":"",
369+
"MulticastOptimize":"no",
370+
"Mtu":defmtu,
371+
"Dn":"fabric/lan/classes/class-best-effort",
372+
"Weight":"5"
373+
},
374+
True)
375+
except UcsException:
376+
print "Error setting Global QoS Policy"
377+
378+
def createQosPolicy(self, classname, hostcontrol):
379+
try:
380+
mo = self.handle.AddManagedObject(self.org, "epqosDefinition",
381+
{
382+
"Name":classname,
383+
"Dn":self.orgNameDN + "ep-qos-" + classname,
384+
"PolicyOwner":"local",
385+
"Descr":classname + " QoS Policy"
386+
})
387+
self.handle.AddManagedObject(mo, "epqosEgress",
388+
{
389+
"Name":"",
390+
"Burst":"10240",
391+
"HostControl":hostcontrol,
392+
"Prio":classname.lower(),
393+
"Dn":self.orgNameDN + "ep-qos-" + classname + "/egress",
394+
"Rate":"line-rate"
395+
}, True)
396+
except UcsException:
397+
print "QoS Policy already exists"

workers/ucs.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,4 +96,7 @@ def startworker(self):
9696

9797
newfxns.setPowerPolicy("grid")
9898
newfxns.setChassisDiscoveryPolicy(str(self.config['ucs']['links']))
99-
newfxns.setGlobalQosPolicy(self.config['qos'])
99+
newfxns.setGlobalQosPolicy(self.config['qos'])
100+
101+
for classname, hostcontrol in self.config['qos']['classes'].iteritems():
102+
newfxns.createQosPolicy(classname, hostcontrol)

0 commit comments

Comments
 (0)