예제 #1
0
def verify_vlan_range(vlan_range):
    """Raise an exception for invalid tags or malformed range."""
    for vlan_tag in vlan_range:
        if not is_valid_vlan_tag(vlan_tag):
            raise_invalid_tag(str(vlan_tag), vlan_range)
    if vlan_range[1] < vlan_range[0]:
        raise n_exc.NetworkVlanRangeError(
            vlan_range=vlan_range,
            error=_("End of VLAN range is less than start of VLAN range"))
예제 #2
0
def parse_network_vlan_range(network_vlan_range):
    """Interpret a string as network[:vlan_begin:vlan_end]."""
    entry = network_vlan_range.strip()
    if ':' in entry:
        try:
            network, vlan_min, vlan_max = entry.split(':')
            vlan_range = (int(vlan_min), int(vlan_max))
        except ValueError as ex:
            raise n_exc.NetworkVlanRangeError(vlan_range=entry, error=ex)
        verify_vlan_range(vlan_range)
        return network, vlan_range
    else:
        return entry, None
예제 #3
0
def raise_invalid_tag(vlan_str, vlan_range):
    """Raise an exception for invalid tag."""
    raise n_exc.NetworkVlanRangeError(vlan_range=vlan_range,
                                      error=_("%s is not a valid VLAN tag") %
                                      vlan_str)