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)