def get_faults(app_name): session = aci_login() fault_query = cobra.mit.request.DnQuery( 'uni/tn-SnV/ap-{}'.format(app_name)) fault_query.queryTarget = 'subtree' fault_query.subtreeInclude = 'faults,no-scoped' fault_query.orderBy = 'faultInfo.severity|desc' fault_query.page = 0 fault_query.pageSize = 15 faults = session.query(fault_query) faults_dict = {'faults': []} for fault in faults: if fault.lc == 'retaining': fault_dict = { 'Acknowledged': fault.ack, 'Affected': 'Issue No Longer Exists', 'Description': fault.descr, 'Time': fault.created, 'Life Cycle': fault.lc } else: fault_dict = { 'Acknowledged': fault.ack, 'Affected': fault.affected, 'Description': fault.descr, 'Time': fault.created, 'Life Cycle': fault.lc } faults_dict['faults'].append(fault_dict) return faults_dict
def DeploymentQuery(session, mydict, epg): port_list = [] defquery1 = cobra.mit.request.DeploymentQuery(epg) defquery1.targetPath = 'EPgToNwIf' defquery1.targetNode = 'all' testquery = session.query(defquery1)[0] for i in testquery.children: for j in i.children: tenant_name, epg_name, node_name, port_list = extractinfo( str(j.dn), port_list) return mydict
def get_healthscore(): session = aci_login() app_query = cobra.mit.request.DnQuery('uni/tn-' + TENANT) app_query.queryTarget = 'children' app_query.classFilter = 'fvAp' app_query.subtreeInclude = 'health' apps = session.query(app_query) health_dict = {} for app in apps: for health in app.children: health_dict[app.name] = int(health.cur) return health_dict
def main(): auth = cobra.mit.session.LoginSession(URL, LOGIN, PASSWORD, secure=False) session = cobra.mit.access.MoDirectory(auth) session.login() parser = argparse.ArgumentParser() parser.add_argument('-t', '--tenant') parser.add_argument('-e', '--epg') parser.add_argument('-d', '--debug') args = parser.parse_args() tenant_input_filter = args.tenant epg_input_filter = args.epg debug_input_filter = args.debug epg_query_def = cobra.mit.request.ClassQuery('fvAEPg') # Bulding argparse filters if debug_input_filter is not None: read_ext_file() else: if tenant_input_filter and epg_input_filter is not None: epg_query_def.propFilter = 'and(wcard(fvAEPg.dn, "{}")wcard(fvAEPg.dn,"{}"))'.format( 'tn-' + tenant_input_filter, 'epg-' + epg_input_filter) elif tenant_input_filter is not None: epg_query_def.propFilter = 'wcard(fvAEPg.dn, "{}")'.format( 'tn-' + tenant_input_filter) elif epg_input_filter is not None: epg_query_def.propFilter = 'wcard(fvAEPg.dn, "{}")'.format( 'epg-' + epg_input_filter) epg_query = session.query(epg_query_def) for epg in epg_query: DeploymentQuery(session, mydict, epg.dn) # pd_mydict = pd.DataFrame.from_dict(mydict, orient='index') # pd_mydict.to_excel('results.xlsx') result_read(mydict)
def mo_query(): form = QueryACI() searchitem = request.args.get('mosearch') if form.validate_on_submit() or searchitem: if form.validate_on_submit(): searchitem = form.search.data try: auth = cobra.mit.session.LoginSession(URL, LOGIN, PASSWORD) session = cobra.mit.access.MoDirectory(auth) session.login() tenant_query = cobra.mit.request.ClassQuery(searchitem) #tenant_query.subtree = 'full' ## tenant_query.subtreeInclude = 'faults' tenant_query.subtreeInclude = 'health' print(tenant_query.options) tenant = session.query(tenant_query) print(dir(tenant_query)) #tenant = tenant.sort() return render_template('mo_query.html', tenant=tenant, searchitem=searchitem, form=form) except Exception as error: # print(str(error)) return render_template('mo_query.html', error=error, form=form) else: return render_template('mo_query.html', form=form)
import cobra.mit.access import cobra.mit.request import cobra.model.pol import cobra.model.fv if __name__ == '__main__': """ Main function """ requests.packages.urllib3.disable_warnings() #pylint: disable=no-member url = apicdc['address'] passwd = apicdc['password'] user = apicdc['username'] auth = cobra.mit.session.LoginSession(url, user, passwd) session = cobra.mit.access.MoDirectory(auth) session.login() tenant_query = cobra.mit.request.DnQuery("uni/tn-TenantName") tenant = session.query(tenant_query) uni = cobra.model.pol.Uni('') new_tenant = cobra.model.fv.Tenant(uni, "NewTenant") new_app = cobra.model.fv.Ap(new_tenant, "NewApp") new_epg = cobra.model.fv.AEPg(new_app, "NewEPG") config_request = cobra.mit.request.ConfigRequest() config_request.addMo(new_epg) session.commit(config_request)