def connect(self,frm,leaf_1,leaf_2): flag = 0 self.mo = cobra.mit.access apicurl = 'http://10.124.4.101' self.mo_dir = mo.MoDirectory(session.LoginSession(apicurl, 'admin', 'Cisco123')) self.mo_dir.login() self.clAcPath = cobra.mit.access.ClassQuery('fabricTrail') self.dbgAcPathA_objlist = self.mo_dir.query(self.clAcPath) self.dbgAclist_spine = [] self.dbgAclist_leaf = [] self.dbgAclist_trail = [] for m in self.dbgAcPathA_objlist: # 根据用户选定特定的leaf的值 if leaf_1 in str(m.rn) and leaf_2 in str(m.rn): self.dbgAclist_leaf.append(str(m.n1)) self.dbgAclist_spine.append(str(m.transit)) self.dbgAclist_trail.append(str(m.rn)) else: flag += 1 """当flag和长度相等时,说明没有找到对应路径""" if flag != len(self.dbgAcPathA_objlist): self.dbgAclist_spine = list(set(self.dbgAclist_spine)) """数组中重复的去除,如201-102只能画一次""" self.dbgAclist_leaf = list(set(self.dbgAclist_leaf)) return self.dbgAclist_spine, self.dbgAclist_leaf, self.dbgAclist_trail else: showerror("Answer", "Sorry, there is no trail bwtween the two leafs!")
def main(): mo = cobra.mit.access apicurl = 'http://10.124.4.101' mo_dir = mo.MoDirectory(session.LoginSession(apicurl, 'admin', 'Cisco123')) mo_dir.login() for i in range(1, 30): if i <= 30: time.sleep(2) y = i + 1 topology(i, mo_dir) table(i, mo_dir) table_1(i, mo_dir)
def getMoDirectoryFromApic(apic): "Login to APIC, get a Mo Directory then login and return the mo object." ls = aciSession.LoginSession(apic['url'], apic['user'], apic['password']) md = aciAccess.MoDirectory(ls) md.login() return md