def get_tenant(): with open("/Users/clakits/Documents/ACI/AppCenter/log/log.txt", "a") as log_file: log_file.write("==================================================" + "\n") log_file.write("Received API Request from Client. Sending Response" + "\n") log_file.write("==================================================" + "\n") tableList = [] row = ('Tenant') tableList.append(row) apicUrl = 'https://10.22.47.171/' #loginSession = createCertSession() loginSession = LoginSession(apicUrl, 'admin', 'ins3965!') moDir = MoDirectory(loginSession) moDir.login() #tenantMo = moDir.lookupByClass('fvTenant'); q = ClassQuery('fvTenant') q.subtree = 'children' tenantMo = moDir.query(q) moDir.logout() print tenantMo.totalCount for item in tenantMo: row = str(item.dn) print row tableList.append(row) #return respFormatJsonMos(tenantMo, tenantMo.totalCount) return render_template('result1.html', table=tableList)
def get_mo_for_interface(nodeid, portid): cq = ClassQuery('fabricPathEpCont') cq.propFilter = 'eq(fabricPathEpCont.nodeId, "{0}")'.format(nodeid) cq.subtree = 'children' cq.subtreeClassFilter = 'fabricPathEp' req = moDir.query(cq) for key in req[0].children: # children method applied to the query result will return a list of child objects # req[0] is fabricPathEpCont (leaf), children are fabricPathEp (ports) if key.name == portid: return format(key.dn)
def get_full_aci_config(apic, user, password, outfile): try: url = "https://" + apic ls = cobra.mit.session.LoginSession(url, "apic:ACS\\" + user, password, secure=False, timeout=30) md = cobra.mit.access.MoDirectory(ls) md.login() #Get tenant config cq = ClassQuery('fvTenant') cq.subtree = 'full' cq.propInclude= 'config-only' tenant_config = md.query(cq) #Infra config dq = DnQuery('uni/infra') dq.subtree = 'full' dq.propInclude = 'config-only' infra_config = md.query(dq) #Fabric config dq = DnQuery('uni/fabric') dq.subtree = 'full' dq.propInclude = 'config-only' fabric_config = md.query(dq) file = open(outfile, 'w+') file.write("# " + apic + " #") file.write("\n###########" + '\n') file.write("# TENANTS ") file.write("\n###########" + '\n') for tenant in tenant_config: file.write(toJSONStr(tenant, prettyPrint=True)) file.write("\n###########" + '\n') file.write("# Infra ") file.write("\n###########" + '\n') for infra in infra_config: file.write(toJSONStr(infra, prettyPrint=True)) file.write("\n###########" + '\n') file.write("# Fabric ") file.write("\n###########" + '\n') for fabric in fabric_config: file.write(toJSONStr(fabric, prettyPrint=True)) file.close() except: print "Error in get_full_aci_config() for %s: %s" % (apic, sys.exc_info()[0])
def home(): #apicUrl = 'https://10.29.198.36' # loginSession = LoginSession(apicUrl, 'admin', 'ins3965!') #loginSession = createCertSession() loginSession = cobra.mit.session.LoginSession('https://10.29.198.36', 'admin', 'ins3965!') moDir = MoDirectory(loginSession) moDir.login() tableList = [] row = ('TN', 'AP/L2OUT', 'EPG/InstP', 'CEP', 'IP', 'Type', 'PATH', 'PORT', 'POD', 'ENCAP', 'BD:CTX') tableList.append(row) q = ClassQuery('fvCEp') q.subtree = 'children' tenantMo = moDir.query(q) for mo in tenantMo: for child in mo.rscEpToPathEp: #print child.dn ip = mo.ip tn, ap, epg, cep, varPod, varStrPath, varStrPort = tDnToPath( child.dn) if 'protpaths' in child.tDn: portType = 'vPC' elif 'paths' in child.tDn and 'eth' in child.tDn: portType = '-' else: portType = 'PC' encap = (mo.encap).split('-')[1] #if args.macSearch: bd,ctx = getAncestorDnStrFromDnString(md, str(mo.dn), 1) #else: bd='-'; ctx='-' bd = '-' ctx = '-' row = (tn, ap, epg, cep, mo.ip, portType, varStrPath, varStrPort, varPod, encap, '%s:%s' % (bd, ctx)) tableList.append(row) moDir.logout() return render_template('home.html', table=tableList)
def get_Tenant_info(): tableList = [] row = ('Tenant') tableList.append(row) ls = cobra.mit.session.LoginSession('https://10.29.198.36/', 'admin', 'ins3965!') md = cobra.mit.access.MoDirectory(ls) md.login() q = ClassQuery('fvTenant') q.subtree = 'children' tenantMo = md.query(q) #tenantMo = md.lookupByClass('fvTenant') print tenantMo.totalCount for item in tenantMo: row = str(item.dn) print row tableList.append(row) md.logout() return render_template('result1.html', table=tableList)
if __name__ == '__main__': if len(sys.argv) != 5: print 'Usage: apic_show-mac-address.py <hostname> <username> <password> <mac-address>' sys.exit() else: hostname, username, password, macaddress = sys.argv[1:] url = 'https://' + hostname print "Logging on APIC..." try: # lls = LoginSession(url, username, password, secure=False) md = MoDirectory(lls) md.login() q = ClassQuery('fvCEp') q.subtree = 'children' q.subtreeClassFilter = 'fvRsCEpToPathEp' mos = md.query(q) #Other variables hasmacaddress = False epglists = {} i = -1 ## Verifying all mac address: for mo in mos: for child in mo.rscEpToPathEp: line = str(child.dn) i = i + 1 if (macaddress in line): hasmacaddress = True
def home(): with open("/home/app/data/logs.txt", "a") as log_file: log_file.write("==================================================" + "\n") log_file.write("Received API Request from Client. Sending Response" + "\n") log_file.write("==================================================" + "\n") reply = None try: apicUrl = 'https://172.17.0.1/' loginSession = createCertSession() #loginSession = cobra.mit.session.LoginSession('https://10.22.47.171', 'admin', 'ins3965!') moDir = MoDirectory(loginSession) moDir.login() tableList = [] #row = ('TN', 'AP/L2OUT', 'EPG/InstP', 'CEP', 'IP', 'Type', 'PATH', 'PORT', 'POD', 'ENCAP', 'BD:CTX') #tableList.append(row) try: row ={} q = ClassQuery('fvCEp') q.subtree = 'children' tenantMo = moDir.query(q) except cobra.mit.request.QueryError as e: log('Reason: ' + e.reason) log('Error: ' + e.error) log('HTTP code: ' + e.httpCode) log(traceback.format_exc()) data = {} for mo in tenantMo: for child in mo.rscEpToPathEp: #print child.dn ip = mo.ip tn, ap, epg, cep, varPod, varStrPath, varStrPort = tDnToPath(child.dn) if 'protpaths' in child.tDn: portType = 'vPC' elif 'paths' in child.tDn and 'eth' in child.tDn: portType = '-' else: portType = 'PC' encap = (mo.encap).split('-')[1] #if args.macSearch: bd,ctx = getAncestorDnStrFromDnString(md, str(mo.dn), 1) #else: bd='-'; ctx='-' bd='-'; ctx='-' #row = (tn,ap,epg,cep,mo.ip,portType,varStrPath,varStrPort,varPod,encap,'%s:%s' %(bd,ctx)) row = { "tn": tn, "ap/l2out":ap, "epg":epg, "cep":cep, "ip":mo.ip, "type":portType, "path":varStrPath, "port":varStrPort, "pod":varPod, "encap":encap, "bd":"-:-" } tableList.append(row) #data[child.tDn]= row moDir.logout() #print json.dumps(data) #return render_template('home.html', table=tableList) #return respFormatJsonMos(data, len(data)) log(tableList) reply = jsonify({'results': tableList}) except Exception as e: log(traceback.format_exc()) return reply