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
Beispiel #3
0
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
Beispiel #7
0
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
Beispiel #8
0
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
Beispiel #9
0
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
Beispiel #11
0
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
Beispiel #13
0
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
Beispiel #14
0
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
Beispiel #18
0
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