def createVpcInterfacePolGroup(name, cdpPolName, lldpPolName, linkLevelPolName, lacpPolName, aaepDn): infraInfra = aciInfra.Infra(aciPol.Uni('')) infraFuncP = aciInfra.FuncP(infraInfra) infraAccBndlGrp = aciInfra.AccBndlGrp(infraFuncP, name="{}_PolGrp".format(name), lagT=u'node') # aciInfra.RsL2IfPol(infraAccBndlGrp, tnL2IfPolName=u'') # aciInfra.RsQosPfcIfPol(infraAccBndlGrp, tnQosPfcIfPolName=u'') aciInfra.RsHIfPol(infraAccBndlGrp, tnFabricHIfPolName=linkLevelPolName) # aciInfra.RsL2PortSecurityPol(infraAccBndlGrp, # tnL2PortSecurityPolName=u'') # aciInfra.RsMonIfInfraPol(infraAccBndlGrp, tnMonInfraPolName=u'') # aciInfra.RsStpIfPol(infraAccBndlGrp, tnStpIfPolName=u'') # aciInfra.RsQosSdIfPol(infraAccBndlGrp, tnQosSdIfPolName=u'') aciInfra.RsAttEntP(infraAccBndlGrp, tDn=aaepDn) # aciInfra.RsMcpIfPol(infraAccBndlGrp, tnMcpIfPolName=u'') aciInfra.RsLacpPol(infraAccBndlGrp, tnLacpLagPolName=lacpPolName) # aciInfra.RsQosDppIfPol(infraAccBndlGrp, tnQosDppPolName=u'') # aciInfra.RsQosIngressDppIfPol(infraAccBndlGrp, tnQosDppPolName=u'') # aciInfra.RsStormctrlIfPol(infraAccBndlGrp, tnStormctrlIfPolName=u'') # aciInfra.RsQosEgressDppIfPol(infraAccBndlGrp, tnQosDppPolName=u'') # aciInfra.RsFcIfPol(infraAccBndlGrp, tnFcIfPolName=u'') aciInfra.RsLldpIfPol(infraAccBndlGrp, tnLldpIfPolName=lldpPolName) aciInfra.RsCdpIfPol(infraAccBndlGrp, tnCdpIfPolName=cdpPolName) return infraInfra
def createLldpPolicy(): infraInfra = aciInfra.Infra(aciPol.Uni('')) lldp.IfPol(infraInfra, name='LLDP_Enable', adminTxSt='enabled', adminRxSt='enabled') lldp.IfPol(infraInfra, name='LLDP_Disable', adminTxSt='disabled', adminRxSt='disabled') return infraInfra
def create_leaf_intf_profile(apic, fabricNodes): """ "Core out of the box" setup method. No user input required. """ # Create new object if needed mo = aciInfra.Infra(aciPol.Uni('')) # Query APIC for leaf switches leafs = dict([n.name, n] for n in fabricNodes if n.role == 'leaf') # Loop over each leaf for name, node in leafs.items(): # Create Leaf Switch Interface Profile accPortP = aciInfra.AccPortP(mo, name='{0}-IntProf'.format(name)) nodeDn = str(node.dn) # Generate list of all interfaces (leaf type) interfaces = apic.lookupByClass('l1PhysIf', parentDn=nodeDn) intfName = [i.id for i in interfaces if i.portT == 'leaf'] for i, intf in enumerate(intfName): card, port = intf[3:].split('/') blockName = 'block{}'.format(i + 1) ifSelName = 'Eth{0}-{1}'.format(card, port) hPortS = aciInfra.HPortS(accPortP, name=ifSelName, type='range') aciInfra.PortBlk(hPortS, name=blockName, fromCard=card, toCard=card, fromPort=port, toPort=port) return mo
def createVlanPool(name, startVlan, endVlan, allocMode='static'): infraInfra = aciInfra.Infra(aciPol.Uni('')) fvnsVlanInstP = aciFvns.VlanInstP(infraInfra, name="{}_vlans".format(name), allocMode=allocMode) aciFvns.EncapBlk(fvnsVlanInstP, to="vlan-{}".format(endVlan), from_="vlan-{}".format(startVlan), name='encap') return fvnsVlanInstP
def createLinkLevelPolicy(linkLevelPolicyList): infraInfra = aciInfra.Infra(aciPol.Uni('')) for linkLevelPolicy in linkLevelPolicyList: aciFabric.HIfPol(infraInfra, name=linkLevelPolicy['name'], fecMode='inherit', autoNeg=linkLevelPolicy['autoNeg'], speed=linkLevelPolicy['speed'], linkDebounce='100') return infraInfra
def createSpineInterfacePolGroup(name, cdpPolName, linkLevelPolName, aaepDn): infraInfra = aciInfra.Infra(aciPol.Uni('')) infraFuncP = aciInfra.FuncP(infraInfra) infraSpAccPortGrp = aciInfra.SpAccPortGrp(infraFuncP, name=name) aciInfra.RsCdpIfPol(infraSpAccPortGrp, tnCdpIfPolName=cdpPolName) aciInfra.RsAttEntP(infraSpAccPortGrp, tDn=aaepDn) aciInfra.RsHIfPol(infraSpAccPortGrp, tnFabricHIfPolName=linkLevelPolName) return infraInfra
def create_mcp_policy(mo, policy): # Validate input required_attributes(mcp_attributes, list(policy.keys())) # Create new object if needed if mo is None: mo = aciInfra.Infra(aciPol.Uni('')) mcp.IfPol(mo, name=policy['name'], adminSt=policy['adminSt']) return mo
def create_attachable_aep(apic, policies): infraInfra = aciInfra.Infra(aciPol.Uni('')) physDomP = apic.lookupByClass('physDomP') doms = dict([d.name, str(d.dn)] for d in physDomP) for policy in policies: infraAttEntityP = aciInfra.AttEntityP(infraInfra, name=policy['name']) tDN = doms[policy['domain']] aciInfra.RsDomP(infraAttEntityP, tDn=tDN) return infraInfra
def create_wide_policy(mo, policy): # Validate input required_attributes(fabric_wide_attributes, list(policy.keys())) # Create new object if needed if mo is None: mo = aciInfra.Infra(aciPol.Uni('')) aciInfra.SetPol(mo, name=policy['name'], domainValidation=policy['domainValidation'], enforceSubnetCheck=policy['enforceSubnetCheck']) return mo
def createSpineSwitchProfile(fabricNodes, intProfileDn): infraInfra = aciInfra.Infra(aciPol.Uni('')) infraSpineProfile = aciInfra.SpineP(infraInfra, name='Spines') for podId, nodes in fabricNodes['pods'].iteritems(): infraSpineS = aciInfra.SpineS(infraSpineProfile, type='range', name="Spines_pod{}".format(podId)) for node in nodes: if 'l3Out' in node: aciInfra.NodeBlk(infraSpineS, from_=node['nodeId'], name=node['name'], to_=node['nodeId']) aciInfra.RsSpAccPortP(infraSpineProfile, tDn=intProfileDn) return infraInfra
def create_vlan_pool_policies(policies): infraInfra = aciInfra.Infra(aciPol.Uni('')) for policy in policies: fvnsVlanInstP = aciFvns.VlanInstP(infraInfra, name=policy['name'], allocMode=policy['allocMode']) aciFvns.EncapBlk(fvnsVlanInstP, name='encap', role=policy['role'], from_="vlan-{}".format(policy['start']), to="vlan-{}".format(policy['end'])) return fvnsVlanInstP
def createLacpPolicy(): infraInfra = aciInfra.Infra(aciPol.Uni('')) lacp.LagPol(infraInfra, name='LACP_Active', minLinks='1', ctrl='fast-sel-hot-stdby,graceful-conv,susp-individual', maxLinks='16', mode='active') lacp.LagPol(infraInfra, name='LACP_Passive', minLinks='1', ctrl='fast-sel-hot-stdby,graceful-conv,susp-individual', maxLinks='16', mode='passive') lacp.LagPol(infraInfra, name='LACP_On', minLinks='1', ctrl='fast-sel-hot-stdby,graceful-conv,susp-individual', maxLinks='16', mode='off') return infraInfra
def create_rogue_policy(mo, policy): # Validate input required_attributes(rogue_endpoint_attributes, list(policy.keys())) # Create new object if needed if mo is None: mo = aciInfra.Infra(aciPol.Uni('')) aciEp.ControlP(mo, name=policy['name'], adminSt=policy['adminSt'], holdIntvl=policy['holdIntvl'], rogueEpDetectIntvl=policy['rogueEpDetectIntvl'], rogueEpDetectMult=policy['rogueEpDetectMult']) return mo
def create_link_level_policy(mo, policy): # Validate input required_attributes(link_level_attributes, list(policy.keys())) # Create new object if needed if mo is None: mo = aciInfra.Infra(aciPol.Uni('')) aciFabric.HIfPol(mo, name=policy['name'], autoNeg=policy['autoNeg'], speed=policy['speed'], fecMode=policy['fecMode'], linkDebounce=policy['linkDebounce']) return mo
def createLeafInterfaceProfile(name, interfaceList): polGroupDn = getLeafVpcIntPolGroupDnFromName("{}_PolGrp".format(name)) infraInfra = aciInfra.Infra(aciPol.Uni('')) infraAccPortP = aciInfra.AccPortP(infraInfra, name="{}_IntProfile".format(name)) infraHPortS = aciInfra.HPortS(infraAccPortP, type=u'range', name="{}_IfSel".format(name)) aciInfra.RsAccBaseGrp(infraHPortS, fexId=u'101', tDn=polGroupDn) i = 1 for interface in interfaceList: (intCard, intPort) = interface['name'][3:].split('/') blockName = "block{}".format(i) aciInfra.PortBlk(infraHPortS, name=blockName, fromPort=str(intPort), fromCard=str(intCard), toPort=str(intPort), toCard=str(intCard)) i += 1 return infraAccPortP
def createSpineInterfaceProfile(name, polGroupName, interfaceList): polGroupDn = getSpineIntPolGroupDnFromName(polGroupName) infraInfra = aciInfra.Infra(aciPol.Uni('')) infraSpAccPortP = aciInfra.SpAccPortP(infraInfra, name=name) infraSHPortS = aciInfra.SHPortS(infraSpAccPortP, type='range', name='Interface') i = 1 for interface in interfaceList: (intCard, intPort) = interface['name'][3:].split('/') blockName = "block{}".format(i) aciInfra.PortBlk(infraSHPortS, name=blockName, fromPort=str(intPort), fromCard=str(intCard), toPort=str(intPort), toCard=str(intCard)) i += 1 aciInfra.RsSpAccGrp(infraSHPortS, tDn=polGroupDn) return infraInfra
def createLeafSwitchProfile(leafIds, intProfileNameList): infraInfra = aciInfra.Infra(aciPol.Uni('')) leafIdString = "-".join(map(str, leafIds)) name = "Leaf{}_Profile".format(leafIdString) infraNodeP = aciInfra.NodeP(infraInfra, name=name) infraLeafS = aciInfra.LeafS(infraNodeP, type=u'range', name="{}_selector".format(name)) count = 0 for leafId in leafIds: aciInfra.NodeBlk(infraLeafS, from_=leafId, name="single{}".format(count), to_=leafId) count += 1 for intProfileName in intProfileNameList: intProfileDn = getLeafIntProfileDnFromName(intProfileName) aciInfra.RsAccPortP(infraNodeP, tDn=intProfileDn) return infraInfra
def create_leaf_switch_profile(fabricNodes): """ "Core out of the box" setup method. No user input required. """ # Create new object if needed mo = aciInfra.Infra(aciPol.Uni('')) # Query APIC for leaf switches leafs = dict([n.name, n] for n in fabricNodes if n.role == 'leaf') for name, node in leafs.items(): infraNodeP = aciInfra.NodeP(mo, name=name) # Bind node to interface profile accPortDN = 'uni/infra/accportprof-{0}-IntProf'.format(name) aciInfra.RsAccPortP(infraNodeP, tDn=accPortDN) # Bind actual leaf to leaf switch policy infraLeafS = aciInfra.LeafS(infraNodeP, name=name, type='range') aciInfra.NodeBlk(infraLeafS, name=name, to_=node.id, from_=node.id) return mo
def createAAEP(name, domainDn): infraInfra = aciInfra.Infra(aciPol.Uni('')) infraAAEP = aciInfra.AttEntityP(infraInfra, name="{}_AAEP".format(name)) aciInfra.RsDomP(infraAAEP, tDn=domainDn) return infraAAEP
def createCdpPolicy(): infraInfra = aciInfra.Infra(aciPol.Uni('')) cdp.IfPol(infraInfra, name='CDP_Enable', adminSt='enabled') cdp.IfPol(infraInfra, name='CDP_Disable', adminSt='disabled') return infraInfra