Snippets

Jesse Almanrode Click Callbacks

Created by Jesse Almanrode last modified
import click
from hostlist import expand_hostlist # pip install python-hostlist

def validate_hostlist_expr(ctx, param, value):
    """ Click callback for validating hostlist expressions

    :param ctx: Click context
    :param param: Click parameter
    :param value: Hostlist expression
    :return: List of hosts
    :raises: click.UsageError
    """
    if value is None:
        return value
    try:
        value = expand_hostlist(value)
    except Exception as err:
        raise click.UsageError(err)
    return value
import click
from IPy import IP


def validate_ipv4(ctx, param, value):
    """ Click callback for validating IPv4 addresses

    :param ctx: Click context
    :param param: Click parameter
    :param value: IPv4 Address to validate as a IPv4 address
    :return: IPv4 Address
    :raises: click.UsageError
    """
    if value is None:
        return value
    try:
        IP(value, ipversion=4)
    except ValueError:
        raise click.UsageError('Invalid IPv4 Address')
import click
from IPy import IP


def validate_ipv6(ctx, param, value):
    """ Click callback for validating IPv6 addresses

    :param ctx: Click context
    :param param: Click parameter
    :param value: IPv4 Address to validate as a IPv6 address
    :return: IPv6 Address
    :raises: click.UsageError
    """
    if value is None:
        return value
    try:
        IP(value, ipversion=6)
    except ValueError:
        raise click.UsageError('Invalid IPv6 Address')
import click
from IPy import IP


def validate_multicast_ip(ctx, param, value):
    """ Click callback for validating multicast IPs

    :param ctx: Click context
    :param param: Click parameter
    :param value: IPv4 Address to validate as a multicast address
    :return: IPv4 Multicast Address
    :raises: click.UsageError
    """
    if value is None:
        return value
    try:
        IP(value, ipversion=4)
    except ValueError:
        raise click.UsageError('Invalid multicast IP')
    if value in IP('224.0.0.0/4'):
        return value
    else:
        raise click.UsageError('Invalid multicast IP')

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.