this presenter magic makes yaml.safe_dump
    work with the objects returned from
    boto.describe_alarms()

def _safe_dump(data):
    '''
    this presenter magic makes yaml.safe_dump
    work with the objects returned from
    boto.describe_alarms()
    '''
    custom_dumper = __utils__['yaml.get_dumper']('SafeOrderedDumper')

    def boto_listelement_presenter(dumper, data):
        return dumper.represent_list(list(data))

    yaml.add_representer(boto.ec2.cloudwatch.listelement.ListElement,
                         boto_listelement_presenter,
                         Dumper=custom_dumper)

    def dimension_presenter(dumper, data):
        return dumper.represent_dict(dict(data))

    yaml.add_representer(boto.ec2.cloudwatch.dimension.Dimension,
                         dimension_presenter, Dumper=custom_dumper)

    return __utils__['yaml.dump'](data, Dumper=custom_dumper)