def do_stream_definition_list(mc, args):
    """Show list of stream definitions."""
    fields = {}
    if args.limit:
        fields['limit'] = args.limit
    if args.offset:
        fields['offset'] = args.offset
    try:
        definitions = mc.stream_definitions.list(**fields)
    except exc.HTTPException as he:
        raise exc.CommandError(
            'HTTPException code=%s message=%s' %
            (he.code, he.message))
    if args.json:
        print(utils.json_formatter(definitions))
        return
    cols = ['id', 'name', 'description', 'select', 'group_by',
            'fire_criteria', 'expiration', 'fire_actions', 'expire_actions']
    formatters = {
        'id': lambda x: x['id'],
        'name': lambda x: x['name'],
        'description': lambda x: x['description'],
        'select': lambda x: utils.format_dictlist(x['select']),
        'group_by': lambda x: x['group_by'],
        'fire_criteria': lambda x: utils.format_dictlist(x['fire_criteria']),
        'expiration': lambda x: x['expiration'],
        'fire_actions': lambda x: x['fire_actions'],
        'expire_actions': lambda x: x['expire_actions'],
    }
    utils.print_list(definitions, cols, formatters=formatters)
def do_stream_definition_get(mc, args):
    """Get specific stream definition."""
    fields = {'definition_id': args.id}
    try:
        definition = mc.stream_definitions.get(**fields)
    except exc.HTTPException as he:
        raise exc.CommandError(
            'HTTPException code=%s message=%s' %
            (he.code, he.message))
    if args.json:
        print(utils.json_formatter(definition))
        return
    cols = ['id', 'name', 'description', 'select', 'group_by',
            'fire_criteria', 'expiration', 'fire_actions', 'expire_actions']
    formatters = {
        'id': lambda x: x['id'],
        'name': lambda x: x['name'],
        'description': lambda x: x['description'],
        'select': lambda x: utils.format_dictlist(x['select']),
        'group_by': lambda x: x['group_by'],
        'fire_criteria': lambda x: utils.format_dictlist(x['fire_criteria']),
        'expiration': lambda x: x['expiration'],
        'fire_actions': lambda x: x['fire_actions'],
        'expire_actions': lambda x: x['expire_actions'],
    }
    # add to list so print_list will work
    definition_list = list()
    definition_list.append(definition)
    utils.print_list(definition_list, cols, formatters=formatters)