# Path: vitrageclient/common/utils.py
# def args_to_dict(args, attrs):
# def list2cols(cols, objs):
# def list2cols_with_rename(names_and_keys, objs):
# def get_client(obj):
# def wait_for_action_to_end(timeout, func, **kwargs):
# def find_template_with_uuid(uuid, templates):
# 
# Path: vitrageclient/exceptions.py
# class CommandError(Exception):
# class ClientException(Exception):
#     def __init__(self, code, message=None, request_id=None,
#                  url=None, method=None):
#     def __str__(self):
# def from_response(resp, url, method):


from cliff import lister
from cliff import show
from vitrageclient.common import utils
from vitrageclient import exceptions as exc

        parser.add_argument('--limit',
                            dest='limit',
                            help='Maximal number of alarms to show. Default '
                                 'is 1000')

        parser.add_argument('--marker',
                            dest='marker',
                            help='Marker for the next page')

        parser.add_argument('--start',
                            dest='start',
                            help='list alarm from this date')

        parser.add_argument('--end',
                            dest='end',
                            help='list alarm until this date')

        return parser

    def take_action(self, parsed_args):
        all_tenants = parsed_args.all_tenants
        limit = parsed_args.limit
        marker = parsed_args.marker
        start = parsed_args.start
        end = parsed_args.end

        if end and not start:
            raise exc.CommandError("--end argument must be used with --start")


# Path: vitrageclient/common/utils.py
# def args_to_dict(args, attrs):
# def list2cols(cols, objs):
# def list2cols_with_rename(names_and_keys, objs):
# def get_client(obj):
# def wait_for_action_to_end(timeout, func, **kwargs):
# def find_template_with_uuid(uuid, templates):
# 
# Path: vitrageclient/exceptions.py
# class CommandError(Exception):
# class ClientException(Exception):
#     def __init__(self, code, message=None, request_id=None,
#                  url=None, method=None):
#     def __str__(self):
# def from_response(resp, url, method):


# Path: vitrageclient/v1/cli/alarm.py
from cliff import lister
from cliff import show
from vitrageclient.common import utils
from vitrageclient import exceptions as exc


        parser.add_argument('--limit',
                            dest='limit',
                            help='Maximal number of alarms to show. Default '
                                 'is 1000')

        parser.add_argument('--marker',
                            dest='marker',
                            help='Marker for the next page')

        parser.add_argument('--start',
                            dest='start',
                            help='list alarm from this date')

        parser.add_argument('--end',
                            dest='end',
                            help='list alarm until this date')

        return parser

    def take_action(self, parsed_args):
        all_tenants = parsed_args.all_tenants
        limit = parsed_args.limit
        marker = parsed_args.marker
        start = parsed_args.start
        end = parsed_args.end

        if end and not start:
            raise exc.CommandError("--end argument must be used with --start")


        alarms = utils.get_client(self).alarm.history(limit=limit,