Example #1
0
def del_vxlan_map_range(db, vxlan_name, vlan_start, vlan_end, vni_start):
    """Del Range of vlan-vni mappings"""
    ctx = click.get_current_context()
    if clicommon.is_vlanid_in_range(vlan_start) is False:
        ctx.fail(" Invalid Vlan Id , Valid Range : 1 to 4094 ")
    if clicommon.is_vlanid_in_range(vlan_end) is False:
        ctx.fail(" Invalid Vlan Id , Valid Range : 1 to 4094 ")
    if (vlan_start > vlan_end):
        ctx.fail("vlan_end should be greater or equal to vlan_start")
    if clicommon.vni_id_is_valid(vni_start) is False:
        ctx.fail(
            "Invalid VNI {}. Valid range [1 to 16777215].".format(vni_start))
    if clicommon.vni_id_is_valid(vni_start + vlan_end - vlan_start) is False:
        ctx.fail("Invalid VNI End {}. Valid range [1 to 16777215].".format(
            vni_start))

    if len(db.cfgdb.get_entry('VXLAN_TUNNEL', vxlan_name)) == 0:
        ctx.fail("VTEP {} not configured".format(vxlan_name))

    vlan_end = vlan_end + 1
    for vid in range(vlan_start, vlan_end):
        vlan_name = 'Vlan{}'.format(vid)
        vnid = vni_start + vid - vlan_start
        vni_name = '{}'.format(vnid)
        if clicommon.is_vni_vrf_mapped(db, vni_name) is False:
            print("Skipping Vlan {} VNI {} mapped delete. ".format(
                vlan_name, vni_name))
            continue

        mapname = vxlan_name + '|' + 'map_' + vni_name + '_' + vlan_name
        db.cfgdb.set_entry('VXLAN_TUNNEL_MAP', mapname, None)
Example #2
0
def del_vxlan_map(db, vxlan_name, vlan, vni):
    """Del VLAN-VNI map entry"""
    ctx = click.get_current_context()

    if not vlan.isdigit():
        ctx.fail("Invalid vlan {}. Only valid vlan is accepted".format(vni))
    if clicommon.is_vlanid_in_range(int(vlan)) is False:
        ctx.fail(" Invalid Vlan Id , Valid Range : 1 to 4094 ")
    if not vni.isdigit():
        ctx.fail("Invalid VNI {}. Only valid VNI is accepted".format(vni))
    if clicommon.vni_id_is_valid(int(vni)) is False:
        ctx.fail("Invalid VNI {}. Valid range [1 to 16777215].".format(vni))

    if len(db.cfgdb.get_entry('VXLAN_TUNNEL', vxlan_name)) == 0:
        ctx.fail("VTEP {} not configured".format(vxlan_name))
    found = 0
    vrf_table = db.cfgdb.get_table('VRF')
    vrf_keys = vrf_table.keys()
    if vrf_keys is not None:
        for vrf_key in vrf_keys:
            if ('vni' in vrf_table[vrf_key]
                    and vrf_table[vrf_key]['vni'] == vni):
                found = 1
                break

    if (found == 1):
        ctx.fail("VNI mapped to vrf {}, Please remove VRF VNI mapping".format(
            vrf_key))

    mapname = vxlan_name + '|' + 'map_' + vni + '_' + vlan
    db.cfgdb.set_entry('VXLAN_TUNNEL_MAP', mapname, None)
    mapname = vxlan_name + '|' + 'map_' + vni + '_Vlan' + vlan
    db.cfgdb.set_entry('VXLAN_TUNNEL_MAP', mapname, None)
Example #3
0
def add_vxlan_map(db, vxlan_name, vlan, vni):
    """Add VLAN-VNI map entry"""
    ctx = click.get_current_context()

    if not vlan.isdigit():
        ctx.fail("Invalid vlan {}. Only valid vlan is accepted".format(vni))
    if clicommon.is_vlanid_in_range(int(vlan)) is False:
        ctx.fail(" Invalid Vlan Id , Valid Range : 1 to 4094 ")
    if not vni.isdigit():
        ctx.fail("Invalid VNI {}. Only valid VNI is accepted".format(vni))
    if clicommon.vni_id_is_valid(int(vni)) is False:
        ctx.fail("Invalid VNI {}. Valid range [1 to 16777215].".format(vni))

    vlan_name = "Vlan" + vlan

    if len(db.cfgdb.get_entry('VXLAN_TUNNEL', vxlan_name)) == 0:
        ctx.fail("VTEP {} not configured".format(vxlan_name))

    if len(db.cfgdb.get_entry('VLAN', vlan_name)) == 0:
        ctx.fail("{} not configured".format(vlan_name))

    vxlan_table = db.cfgdb.get_table('VXLAN_TUNNEL_MAP')
    vxlan_keys = vxlan_table.keys()
    if vxlan_keys is not None:
        for key in vxlan_keys:
            if (vxlan_table[key]['vlan'] == vlan_name):
                ctx.fail(" Vlan Id already mapped ")
            if (vxlan_table[key]['vni'] == vni):
                ctx.fail(" VNI Id already mapped ")

    fvs = {'vni': vni, 'vlan': vlan_name}
    mapname = vxlan_name + '|' + 'map_' + vni + '_' + vlan_name
    db.cfgdb.set_entry('VXLAN_TUNNEL_MAP', mapname, fvs)
Example #4
0
def add_vxlan_map_range(db, vxlan_name, vlan_start, vlan_end, vni_start):
    """Add Range of vlan-vni mappings"""
    ctx = click.get_current_context()
    if clicommon.is_vlanid_in_range(vlan_start) is False:
        ctx.fail(" Invalid Vlan Id , Valid Range : 1 to 4094 ")
    if clicommon.is_vlanid_in_range(vlan_end) is False:
        ctx.fail(" Invalid Vlan Id , Valid Range : 1 to 4094 ")
    if (vlan_start > vlan_end):
        ctx.fail("vlan_end should be greater or equal to vlan_start")
    if clicommon.vni_id_is_valid(vni_start) is False:
        ctx.fail(
            "Invalid VNI {}. Valid range [1 to 16777215].".format(vni_start))
    if clicommon.vni_id_is_valid(vni_start + vlan_end - vlan_start) is False:
        ctx.fail("Invalid VNI End {}. Valid range [1 to 16777215].".format(
            vni_start))

    if len(db.cfgdb.get_entry('VXLAN_TUNNEL', vxlan_name)) == 0:
        ctx.fail("VTEP {} not configured".format(vxlan_name))
    vlan_end = vlan_end + 1
    vxlan_table = db.cfgdb.get_table('VXLAN_TUNNEL_MAP')
    vxlan_keys = vxlan_table.keys()

    for vid in range(vlan_start, vlan_end):
        vlan_name = 'Vlan{}'.format(vid)
        vnid = vni_start + vid - vlan_start
        vni_name = '{}'.format(vnid)
        match_found = 'no'
        if len(db.cfgdb.get_entry('VLAN', vlan_name)) == 0:
            click.echo("{} not configured".format(vlan_name))
            continue
        if vxlan_keys is not None:
            for key in vxlan_keys:
                if (vxlan_table[key]['vlan'] == vlan_name):
                    print(vlan_name + " already mapped")
                    match_found = 'yes'
                    break
                if (vxlan_table[key]['vni'] == vni_name):
                    print("VNI:" + vni_name + " already mapped ")
                    match_found = 'yes'
                    break
        if (match_found == 'yes'):
            continue
        fvs = {'vni': vni_name, 'vlan': vlan_name}
        mapname = vxlan_name + '|' + 'map_' + vni_name + '_' + vlan_name
        db.cfgdb.set_entry('VXLAN_TUNNEL_MAP', mapname, fvs)