def _post_edited_alarm(token, alarm_data, alarm_id=None):
    '''
    Post edited alarm to ceilometer api
    :param request: (Django Request Object) request
    :return: (Dict) success or error message
    '''

    if 'enabled' in alarm_data:
        alarm_data[
            'enabled'] = False if alarm_data['enabled'] == 'False' else True
    if 'repeat_actions' in alarm_data:
        alarm_data['repeat_actions'] = False if alarm_data[
            'repeat_actions'] == 'False' else True
    for action_type in [
            'alarm_actions', 'ok_actions', 'insufficient_data_actions'
    ]:
        if action_type in alarm_data:
            for i in range(0, len(alarm_data[action_type])):
                alarm_data[action_type][i] = \
                    'http://%s/notification/notify/?op=%s' % (settings.THIS_ADDR, alarm_data[action_type][i])
    kwargs = {}
    kwargs.update(alarm_data)

    # Threshold alarms
    threshold_alarm_capabilities = BaseMethods.add_list_unique(
        APICapabilities.ALARM_CAPABILITIES,
        APICapabilities.THRESHOLD_ALARM_CAPABILITIES,
        APICapabilities.QUERY_CAPABILITIES)
    kwargs = BaseMethods.sanitize_arguments(kwargs,
                                            threshold_alarm_capabilities)

    query_obj = []
    for query_para in APICapabilities.QUERY_CAPABILITIES:
        if query_para in kwargs:
            query_obj.append({
                'field': query_para,
                'value': kwargs.pop(query_para)
            })
    threshold_rule_obj = {'query': query_obj}

    for threshold_rule_para in APICapabilities.THRESHOLD_ALARM_CAPABILITIES:
        if threshold_rule_para in kwargs:
            threshold_rule_obj[threshold_rule_para] = kwargs.pop(
                threshold_rule_para)
    alarm_obj = {'threshold_rule': threshold_rule_obj}

    for alarm_para in APICapabilities.ALARM_CAPABILITIES:
        if alarm_para in kwargs:
            alarm_obj[alarm_para] = kwargs.pop(alarm_para)

    return openstack_api.ceilometer_api.update_threshold_alarm(
        token, alarm_id=alarm_id, alarm_body=alarm_obj)
def _post_edited_alarm(token, alarm_data, alarm_id=None):
    '''
    Post edited alarm to ceilometer api
    :param request: (Django Request Object) request
    :return: (Dict) success or error message
    '''

    if 'enabled' in alarm_data:
        alarm_data['enabled'] = False if alarm_data['enabled'] == 'False' else True
    if 'repeat_actions' in alarm_data:
        alarm_data['repeat_actions'] = False if alarm_data['repeat_actions'] == 'False' else True
    for action_type in ['alarm_actions', 'ok_actions', 'insufficient_data_actions']:
        if action_type in alarm_data:
            for i in range(0, len(alarm_data[action_type])):
                alarm_data[action_type][i] = \
                    'http://%s/notification/notify/?op=%s' % (settings.THIS_ADDR, alarm_data[action_type][i])
    kwargs = {}
    kwargs.update(alarm_data)

    # Threshold alarms
    threshold_alarm_capabilities = BaseMethods.add_list_unique(
        APICapabilities.ALARM_CAPABILITIES,
        APICapabilities.THRESHOLD_ALARM_CAPABILITIES,
        APICapabilities.QUERY_CAPABILITIES
    )
    kwargs = BaseMethods.sanitize_arguments(kwargs, threshold_alarm_capabilities)

    query_obj = []
    for query_para in APICapabilities.QUERY_CAPABILITIES:
        if query_para in kwargs:
            query_obj.append({'field': query_para, 'value': kwargs.pop(query_para)})
    threshold_rule_obj = {'query': query_obj}

    for threshold_rule_para in APICapabilities.THRESHOLD_ALARM_CAPABILITIES:
        if threshold_rule_para in kwargs:
            threshold_rule_obj[threshold_rule_para] = kwargs.pop(threshold_rule_para)
    alarm_obj = {'threshold_rule': threshold_rule_obj}

    for alarm_para in APICapabilities.ALARM_CAPABILITIES:
        if alarm_para in kwargs:
            alarm_obj[alarm_para] = kwargs.pop(alarm_para)

    return openstack_api.ceilometer_api.update_threshold_alarm(token,
                                                               alarm_id=alarm_id,
                                                               alarm_body=alarm_obj)