Esempio n. 1
0
def main():
    auth = cobra.mit.session.LoginSession(URL, LOGIN, PASSWORD)
    session = cobra.mit.access.MoDirectory(auth)
    session.login()

    root = cobra.model.pol.Uni('')

    tenant_snv = cobra.model.fv.Tenant(root, 'SnV')
    vrf_snv = cobra.model.fv.Ctx(tenant_snv, name='Superverse')
    bd_snv = cobra.model.fv.BD(tenant_snv, name='antigravity')
    bd_snv_vrf = cobra.model.fv.RsCtx(bd_snv, tnFvCtxName='Superverse')
    bd_snv_subnet = cobra.model.fv.Subnet(bd_snv, ip='10.2.10.1/23')

    contracts = (('web', 'http', 'tcp', '80', 'context'),
                 ('database', 'sql', 'tcp', '1433', 'application-profile'))
    for contract in contracts:
        create_contract(tenant_snv, contract[1], contract[2], contract[3],
                        contract[0], contract[4])

    app_names = (('Evolution_X', 'vlan-121',
                  'vlan-122'), ('Rescue', 'vlan-123', 'vlan-124'),
                 ('Chaos', 'vlan-125', 'vlan-126'), ('Power_Up', 'vlan-127',
                                                     'vlan-128'))
    for app in app_names:
        create_app(tenant_snv, app[0], bd_snv, app[1], app[2])

    config_request = cobra.mit.request.ConfigRequest()
    config_request.addMo(tenant_snv)
    session.commit(config_request)
Esempio n. 2
0
def main():
    """
    This function creates the new Tenant with a VRF, Bridge Domain and Subnet.
    """
    # create a session and define the root
    requests.packages.urllib3.disable_warnings()
    auth = cobra.mit.session.LoginSession("https://apic","admin","password")
    session = cobra.mit.access.MoDirectory(auth)
    session.login()

    root = cobra.model.pol.Uni('')

    # test if tenant name is already in use
    test_tenant(TENANT, session)

    # model new tenant configuration
    tenant = cobra.model.fv.Tenant(root, name=TENANT)
    vrf = cobra.model.fv.Ctx(tenant, name=VRF)
    bridge_domain = cobra.model.fv.BD(tenant, name=BRIDGEDOMAIN)
    attached_vrf = cobra.model.fv.RsCtx(bridge_domain, tnFvCtxName=VRF)
    subnet = cobra.model.fv.Subnet(bridge_domain, ip=GATEWAY, scope=SCOPE, name=SUBNETNAME)

    #submit the configuration to the apic and print a success message
    config_request = cobra.mit.request.ConfigRequest()
    config_request.addMo(tenant)
    session.commit(config_request)

    print("\nNew Tenant, {}, has been created:\n\n{}\n".format(TENANT, config_request.data))
Esempio n. 3
0
def aci_login(APIC, USER, PASS):
    urllib3.disable_warnings()
    login = cobra.mit.session.LoginSession(APIC,
                                           USER,
                                           PASS,
                                           secure=False,
                                           timeout=180)
    session = cobra.mit.access.MoDirectory(login)
    session.login()
    logger.info('Connected to APIC successfully...')
    return session
Esempio n. 4
0
def toolkit_login(admin_info):
    session = ACI.Session(admin_info['ip_addr'], admin_info['user'],
                          admin_info['password'])
    response = session.login()

    if not response.ok:
        error_message(
            [1, 'There was an error with the connection to the APIC.', -1])
        return False

    decoded_response = json.loads(response.text)

    if (response.status_code != 200):
        if (response.status_code == 401):
            connection_status = 'Username/Password incorrect'
            return False
        else:
            error_message([
                decoded_response['imdata'][0]['error']['attributes']['code'],
                decoded_response['imdata'][0]['error']['attributes']['text'],
                -1
            ])
            return False

    elif (response.status_code == 200):
        refresh = decoded_response['imdata'][0]['aaaLogin']['attributes'][
            'refreshTimeoutSeconds']
        cookie = response.cookies['APIC-cookie']
        return session
    else:
        return False

    return False
Esempio n. 5
0
def toolkit_login(admin_info):
    session = ACI.Session(admin_info['ip_addr'], admin_info['user'], admin_info['password'])
    response = session.login()
 
    if not response.ok:
        error_message ([1,'There was an error with the connection to the APIC.', -1])
        return False

    decoded_response = json.loads(response.text)

    if (response.status_code != 200):
        if (response.status_code == 401):
            connection_status = 'Username/Password incorrect'
            return False
        else:
            error_message ([decoded_response['imdata'][0]['error']['attributes']['code'], decoded_response['imdata'][0]['error']['attributes']['text'], -1])
            return False
    
    elif (response.status_code == 200):
        refresh = decoded_response['imdata'][0]['aaaLogin']['attributes']['refreshTimeoutSeconds']
        cookie = response.cookies['APIC-cookie']
        return session
    else:
        return False

    return False
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)
Esempio n. 7
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)
Esempio n. 8
0
from credentials import *
import cobra.mit.access
import cobra.mit.request
import cobra.mit.session
import cobra.model.fv
import cobra.model.pol

# connect to the apic
auth = cobra.mit.session.LoginSession(URL, LOGIN, PASSWORD)
session = cobra.mit.access.MoDirectory(auth)
session.login()

# Create a Variable for your Tenant Name
# Use your initials in the name
# Example: "tenant_name = "js_Toolkit_Tenant""
tenant_name = "INITIALS_Cobra_Tenant"
# create a new tenant
root = cobra.model.pol.Uni('')
new_tenant = cobra.model.fv.Tenant(root, tenant_name)

# commit the new configuration
 config_request = cobra.mit.request.ConfigRequest()
 config_request.addMo(new_tenant)
session.commit(config_request)
Esempio n. 9
0
def aci_login():
    auth = cobra.mit.session.LoginSession(URL, LOGIN, PASSWORD)
    session = cobra.mit.access.MoDirectory(auth)
    session.login()

    return session
Esempio n. 10
0
import json
import cobra.model.fv
import cobra.mit.access
import cobra.mit.session
from cobra.mit.request import ConfigRequest
from cobra.internal.codec.jsoncodec import toJSONStr
import creds


def commit(md, mo):
    """
    Helper function to commit changes to a mo
    :param md: MoDirectory instance
    :param mo: Cobra object to be committed
    :return:
    """
    c = ConfigRequest()
    c.addMo(mo)
    return md.commit(c)

# Create a login session with APIC IP / credentials
ls = cobra.mit.session.LoginSession(creds.APIC_URL, creds.APIC_USER, creds.APIC_PASSWORD)
md = cobra.mit.access.MoDirectory(ls)
md.login()

session = aci.Session(creds.APIC_URL, creds.APIC_USER, creds.APIC_PASSWORD)
session.login()



Esempio n. 11
0
from credentials import *
import cobra.mit.access
import cobra.mit.request
import cobra.mit.session
import cobra.model.fv
import cobra.model.pol

#Connection to the APIC
auth = cobra.mit.session.LoginSession(URL, LOGIN, PASSWORD)
session = cobra.mit.access.MoDirectory(auth)
connect = session.login()

#Define the name of the new Tenant with user input.
tenant_cobra = "_Cobra_Tenant"
tenant_input = input("Input a name for the new Tenant here: ")
tenant_name = str(tenant_input + tenant_cobra)


#Creating the Tenant configuration
root = cobra.model.pol.Uni("")
new_tenant = cobra.model.fv.Tenant(root, tenant_name)

#Commiting the new Tenant to the APIC
config_request = cobra.mit.request.ConfigRequest()
config_request.addMo(new_tenant)
commit = session.commit(config_request)
print ("Attempting to add the new Tenant to: ", URL)
print (commit)