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)
Exemple #5
0
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)