def test_create_all(self):
        """
        Basic test for all Credentials qualifiers
        """
        creds = Credentials(['apic', 'mysql'])

        def return_empty_string(disp):
            """ Return an empty string """
            return ''

        creds._get_from_user = return_empty_string
        creds._get_password = return_empty_string
        self.assertTrue(isinstance(creds, Credentials))
        creds.get()
        creds.verify()
Example #2
0
def main():
    """
    Main execution path when run from the command line
    """
    # Get all the arguments
    description = "Search tool for APIC."
    creds = Credentials("apic", description)
    creds.add_argument(
        "-s", "--switch", type=str, default=None, help='Specify a particular switch id to perform search on, e.g. "102"'
    )
    creds.add_argument("-f", "--find", type=str, help="search string")
    creds.add_argument("--force", action="store_true", default=False, help="Force a rebuild of the search index")

    args = creds.get()
    print args
    try:
        sdb = SearchDb.load_db(args)
    except (LoginError, Timeout, ConnectionError):
        print "%% Could not login to APIC"
        sys.exit(0)

    results = sdb.search(args.find)
    count = 0
    for res in results:
        count += 1
        print res
Example #3
0
def main():
    """
    Main show Process routine
    :return: None
    """
    description = 'Simple application that logs on to the APIC and check cluster information for a fabric'
    creds = Credentials('apic', description)

    args = creds.get()

    session = ACI.Session(args.url, args.login, args.password)
    resp = session.login()
    if not resp.ok:
        print '%% Could not login to APIC'
        sys.exit(0)

    
    cluster = ACI_PHYS.Cluster('Cluster')
    cluster_info = cluster.get(session)

    if (cluster.config_size != cluster.cluster_size):
        print("*******************************************************")
        print ("WARNING, configured cluster size "), cluster.config_size
        print (":   not equal to the actual size "), cluster.cluster_size
        print "WARNING, desired stats collection might be lost"
        print("*******************************************************")
        print("APICs in the cluster"), cluster.name, (":")
        for apic in cluster.apics:
            print json.dumps(apic,indent=4, sort_keys = True)
    else:
        print("PASS")
Example #4
0
def main():
    """
    Main show Process routine
    :return: None
    """
    description = 'Simple application that logs on to the APIC and displays process information for a switch'
    creds = Credentials('apic', description)

    creds.add_argument('-s', '--switch',
                       type=str,
                       default=None,
                       help='Specify a particular switch id, e.g. "102"')
    args = creds.get()

    session = ACI.Session(args.url, args.login, args.password)
    resp = session.login()
    if not resp.ok:
        print '%% Could not login to APIC'
        sys.exit(0)

    switches = ACI.Node.get(session, '1', args.switch)
    for switch in switches:
        if switch.role != 'controller':
            processes = ACI.Process.get(session, switch)
            tables = ACI.Process.get_table(processes, 'Process list for Switch ' + switch.name + '::')
            for table in tables:
                print table.get_text(tablefmt='fancy_grid') + '\n'
Example #5
0
def main():
    """
    Main show Process routine
    :return: None
    """
    description = 'Simple application that logs on to the APIC and check cluster information for a fabric'
    creds = Credentials('apic', description)

    args = creds.get()

    session = ACI.Session(args.url, args.login, args.password)
    resp = session.login()
    if not resp.ok:
        print '%% Could not login to APIC'
        sys.exit(0)

    cluster = ACI.Cluster('Cluster')
    configured_size = cluster.get_config_size(session)
    cluster_size = cluster.get_cluster_size(session)
    cluster_info = cluster.get_cluster_info(session)

    if configured_size != cluster_size:
        print("*******************************************************")
        sys.stdout.write("WARNING, configured cluster size ")
        sys.stdout.write(configured_size)
        sys.stdout.write(" :not equal to the actual size ")
        print cluster_size
        print "WARNING, desired stats collection might be lost"
        print("*******************************************************")
        print("APICs in the cluster are:")
        for apic in cluster_info:
            print json.dumps(apic['infraCont']['attributes']['dn'], indent=4, sort_keys=True)
    else:
        print("PASS")
Example #6
0
def main():
    """
    Main execution path when run from the command line
    """
    # Get all the arguments
    description = 'Search tool for APIC.'
    creds = Credentials('apic', description)
    creds.add_argument(
        '-s',
        '--switch',
        type=str,
        default=None,
        help='Specify a particular switch id to perform search on, e.g. "102"')
    creds.add_argument('-f', '--find', type=str, help='search string')
    creds.add_argument('--force',
                       action="store_true",
                       default=False,
                       help='Force a rebuild of the search index')

    args = creds.get()
    print args
    sdb = SearchDb()
    sdb.set_login_credentials(args)
    try:
        sdb.load_db(args.force)
    except (LoginError, Timeout, ConnectionError):
        print '%% Could not login to APIC'
        sys.exit(0)

    results = sdb.search(args.find)
    count = 0
    for res in results:
        count += 1
        print 'score', res['pscore'], res['sscore'], res['terms'], res[
            'title'], res['path']
        tables = res['primary'].get_table([
            res['primary'],
        ])
        for table in tables:
            if table.data:
                print table.get_text()
        if count > 10:
            print 'Showing 10 of', len(results), 'results'
            break
Example #7
0
def main():
    """
    Main execution path when run from the command line
    """
    # Get all the arguments
    description = 'Connection Search tool for APIC.'
    creds = Credentials('apic', description)

    creds.add_argument('-tenant', type=str, default='*', help='Tenant name (wildcards, "*", accepted), default "*"')
    creds.add_argument('-context', type=str, default='*', help='Tenant name (wildcards, "*", accepted), default "*"')
    creds.add_argument('-sip', type=str, default='0/0', help='Source IP or subnet - e.g. 1.2.3.4/24, default: "0/0"')
    creds.add_argument('-dip', type=str, default='0/0',
                       help='Destination IP or subnet - e.g. 1.2.3.4/24, default: "0/0"')
    creds.add_argument('-dport', type=str, default='any',
                       help='Destination L4 Port value or range, e.g. 20-25 or 80. Default: "any"')
    creds.add_argument('-sport', type=str, default='any',
                       help='Source L4 Port value or range, e.g. 20-25 or 80. Default: "any"')
    creds.add_argument('-etherT', type=str, default='any', help='EtherType, e.g. "ip", "arp", "icmp". Default: "any"')
    creds.add_argument('-prot', type=str, default='any', help='Protocol, e.g. "tcp", "udp". Default: "any"')
    creds.add_argument('-arpOpc', type=str, default='any', help='ARP Opcode, e.g. "req", "ack". Default: "any"')
    creds.add_argument('-applyToFrag', type=str, default='any',
                       help='Apply to fragment, e.g. "yes", "no". Default: "any"')
    creds.add_argument('-tcpRules', type=str, default='any', help='TCP rules, e.g. "syn", "fin". Default: "any"')

    args = creds.get()

    flow_spec = build_flow_spec_from_args(args)
    # todo: verify that a dash can be used in port range.

    # Login to APIC
    session = Session(args.url, args.login, args.password)
    resp = session.login()
    if not resp.ok:
        print '%% Could not login to APIC'
        sys.exit(0)

    sdb = SearchDb(session)
    sdb.build()
    results = sorted(sdb.search(flow_spec))
    for result in results:
        print result
Example #8
0
def main():
    """
    Main execution path when run from the command line
    """
    # Get all the arguments
    description = 'Search tool for APIC.'
    creds = Credentials('apic', description)
    creds.add_argument('-s', '--switch',
                       type=str,
                       default=None,
                       help='Specify a particular switch id to perform search on, e.g. "102"')
    creds.add_argument('-f', '--find',
                       type=str,
                       help='search string')
    creds.add_argument('--force',
                       action="store_true",
                       default=False,
                       help='Force a rebuild of the search index')

    args = creds.get()
    print args
    sdb = SearchDb()
    sdb.set_login_credentials(args)
    try:
        sdb.load_db(args.force)
    except (LoginError, Timeout, ConnectionError):
        print '%% Could not login to APIC'
        sys.exit(0)

    results = sdb.search(args.find)
    count = 0
    for res in results:
        count += 1
        print 'score', res['pscore'], res['sscore'], res['terms'], res['title'], res['path']
        tables = res['primary'].get_table([res['primary'], ])
        for table in tables:
            if table.data != []:
                print table.get_text()
        if count > 10:
            print 'Showing 10 of', len(results), 'results'
            break
Example #9
0
def main():
    """
    Main execution path when run from the command line
    """
    # Get all the arguments
    description = 'Search tool for APIC.'
    creds = Credentials('apic', description)
    creds.add_argument('--force',
                       action="store_true",
                       default=False,
                       help='Force a rebuild of the search index')

    args = creds.get()
    print(args)
    # load all objects
    session = SearchSession(args)
    try:
        fabric = Fabric.get(session.session)[0]
    except (LoginError, Timeout, ConnectionError):
        print('%% Could not login to APIC')
        sys.exit(0)

    fabric.populate_children(deep=True, include_concrete=True)

    index = SearchIndexLookup()
    store = SearchObjectStore()

    index.add_atk_objects(fabric)
    store.add_atk_objects(fabric)

    uids = index.search(args.find)
    result = store.get_by_uids_short(uids)

    count = 0
    for res in result:
        count += 1
        print(res)
Example #10
0
def main():
    """
    Main execution path when run from the command line
    """
    # Get all the arguments
    description = 'Search tool for APIC.'
    creds = Credentials('apic', description)
    creds.add_argument('--force',
                       action="store_true",
                       default=False,
                       help='Force a rebuild of the search index')

    args = creds.get()
    print args
    # load all objects
    session = SearchSession(args)
    try:
        fabric = Fabric.get(session.session)[0]
    except (LoginError, Timeout, ConnectionError):
        print '%% Could not login to APIC'
        sys.exit(0)

    fabric.populate_children(deep=True, include_concrete=True)

    index = SearchIndexLookup()
    store = SearchObjectStore()

    index.add_atk_objects(fabric)
    store.add_atk_objects(fabric)

    uids = index.search(args.find)
    result = store.get_by_uids_short(uids)

    count = 0
    for res in result:
        count += 1
        print res
Example #11
0
def main():
    """
    Main show Process routine
    :return: None
    """
    description = 'Simple application that logs on to the APIC and check cluster information for a fabric'
    creds = Credentials('apic', description)

    args = creds.get()

    session = ACI.Session(args.url, args.login, args.password)
    resp = session.login()
    if not resp.ok:
        print '%% Could not login to APIC'
        sys.exit(0)

    cluster = ACI.Cluster('Cluster')
    configured_size = cluster.get_config_size(session)
    cluster_size = cluster.get_cluster_size(session)
    cluster_info = cluster.get_cluster_info(session)

    if configured_size != cluster_size:
        print("*******************************************************")
        sys.stdout.write("WARNING, configured cluster size ")
        sys.stdout.write(configured_size)
        sys.stdout.write(" :not equal to the actual size ")
        print cluster_size
        print "WARNING, desired stats collection might be lost"
        print("*******************************************************")
        print("APICs in the cluster are:")
        for apic in cluster_info:
            print json.dumps(apic['infraCont']['attributes']['dn'],
                             indent=4,
                             sort_keys=True)
    else:
        print("PASS")
Example #12
0
    result = sdb.search(flow_spec)
    t2 = datetime.datetime.now()
    print "Search time:", t2 - t1
    return jsonify(result=prep_results(result))


@app.route("/load_data")
def load_data():
    if BaseConnSearchView.load_db():
        return jsonify(result='done')
    else:
        return jsonify(result='fail')

        # return redirect(url_for('credentialsview.index'))

        # return jsonify(result='done')


def initialize_db():
    sdb.build()


if __name__ == '__main__':
    description = 'ACI Connection Search Tool.'
    creds = Credentials('server', description)
    args = creds.get()

    # Start app
    # app.run(debug=True, host=args.ip, port=int(args.port))
    app.run(debug=True, use_reloader=False, host=args.ip, port=5001)
Example #13
0
                   help='Show all detailed information')
creds.add_argument('-basic', action="store_true", help='Show basic tenant info')
creds.add_argument('-context', action="store_true", help='Show Context info')
creds.add_argument('-bridgedomain', action="store_true", help='Show Bridge Domain info')
creds.add_argument('-contract', action="store_true", help='Show Contract info')
creds.add_argument('-taboo', action="store_true", help='Show Taboo (Deny) info')
creds.add_argument('-filter', action="store_true", help='Show Filter info')
creds.add_argument('-app_profile', action="store_true", help='Show Application Profile info')
creds.add_argument('-epg', action="store_true", help='Show Endpoint Group info')
# creds.add_argument('-svi', action="store_true", help='Show SVI info')
# creds.add_argument('-accessrule', action="store_true", help='Show Access Rule and Filter info')
creds.add_argument('-endpoint', action="store_true", help='Show End Point info')
# creds.add_argument('-portchannel', action="store_true", help='Show Port Channel and Virtual Port Channel info')
# creds.add_argument('-overlay', action="store_true", help='Show Overlay info')

args = creds.get()

# Login to APIC
session = ACI.Session(args.url, args.login, args.password)
resp = session.login()
if not resp.ok:
    print '%% Could not login to APIC'
    sys.exit(0)


def show_tenant_short(tenant_id):
    """
    Setup template and display header information for summary version of tenant info

    :param tenant_id: Optional tenant name to select a specific tenant.  If ommitted, will be all tenants.
    """