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)
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))
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
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 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)
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)
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)
def aci_login(): auth = cobra.mit.session.LoginSession(URL, LOGIN, PASSWORD) session = cobra.mit.access.MoDirectory(auth) session.login() return session
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()
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)