def _post_new_alarm(request): ''' further process new alarm data, and post to ceilometer_api :param (Django request object) request :return: JSON ''' alarm_data = BaseMethods.qdict_to_dict(request.POST) alarm_data.pop('next_step') alarm_data.pop('cur_step') 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) q = [{}] try: q[0] = {} q[0]['value'] = kwargs.pop('resource_id') q[0]['field'] = 'resource_id' q[0]['op'] = 'eq' except NameError: q[0] = {} finally: kwargs['q'] = q token_id = request.session['token'].id return openstack_api.ceilometer_api.post_threshold_alarm(token_id, **kwargs)
def create_alarm(request): ''' Create new alarm through ceilometer alarm-create api ''' if request.method == 'GET': return render( request, 'alarms/create_alarm/create_threshold_alarm_basis.html', { 'page_type': 'create_alarm', 'title': 'Create-alarm', 'threshold_step_html': 'alarms/threshold_alarm_basis/_threshold_alarm_step_1.html', 'step': '1', 'alarm_data': { 'machine_type': 'vm', }, }) if request.method == 'POST': # Invalid inputs for step will be served with 404 page step = request.POST.get('next_step', '1') if step is None or step not in ['1', '2', '3', '4', 'post']: raise Http404('Invalid value of "step"') # alarm_data passes alarm data between alarm-create pages. alarm_data = BaseMethods.qdict_to_dict(request.POST) if step == 'post': return_data = _post_new_alarm(request) new_message = [], {} if return_data['status'] == 'success': messages.success( request, return_data['data']['name'] + " has been created") else: messages.error(request, return_data['error_msg']) return HttpResponseRedirect('/monitor/alarms/') else: return render( request, 'alarms/create_alarm/create_threshold_alarm_basis.html', { 'page_type': 'create_alarm', 'threshold_step_html': 'alarms/threshold_alarm_basis/_threshold_alarm_step_' + step + '.html', 'step': step, 'alarm_data': alarm_data, }) raise Http404('Unknown method')
def _post_new_alarm(request): ''' further process new alarm data, and post to ceilometer_api :param (Django request object) request :return: JSON ''' alarm_data = BaseMethods.qdict_to_dict(request.POST) alarm_data.pop('next_step') alarm_data.pop('cur_step') 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) q = [{}] try: q[0] = {} q[0]['value'] = kwargs.pop('resource_id') q[0]['field'] = 'resource_id' q[0]['op'] = 'eq' except NameError: q[0] = {} finally: kwargs['q'] = q token_id = request.session['token'].id return openstack_api.ceilometer_api.post_threshold_alarm( token_id, **kwargs)
def create_alarm(request): ''' Create new alarm through ceilometer alarm-create api ''' if request.method == 'GET': return render(request, 'alarms/create_alarm/create_threshold_alarm_basis.html', { 'page_type': 'create_alarm', 'title': 'Create-alarm', 'threshold_step_html': 'alarms/threshold_alarm_basis/_threshold_alarm_step_1.html', 'step': '1', 'alarm_data': { 'machine_type': 'vm', }, }) if request.method == 'POST': # Invalid inputs for step will be served with 404 page step = request.POST.get('next_step', '1') if step is None or step not in ['1', '2', '3', '4', 'post']: raise Http404('Invalid value of "step"') # alarm_data passes alarm data between alarm-create pages. alarm_data = BaseMethods.qdict_to_dict(request.POST) if step == 'post': return_data = _post_new_alarm(request) new_message = [], {} if return_data['status'] == 'success': messages.success(request, return_data['data']['name'] + " has been created") else: messages.error(request, return_data['error_msg']) return HttpResponseRedirect('/monitor/alarms/') else: return render(request, 'alarms/create_alarm/create_threshold_alarm_basis.html', { 'page_type': 'create_alarm', 'threshold_step_html': 'alarms/threshold_alarm_basis/_threshold_alarm_step_' + step + '.html', 'step': step, 'alarm_data': alarm_data, }) raise Http404('Unknown method')
if request.method == 'GET': return render( request, 'alarms/edit_alarm/edit_threshold_alarm_basis.html', { 'page_type': 'edit_alarm', 'title': 'Edit Alarm', 'threshold_step_html': 'alarms/threshold_alarm_basis/_threshold_alarm_step_2.html', 'step': 2, 'alarm_data': alarm_data }) if request.method == 'POST': # Invalid inputs for step will be served with 404 page step = request.POST.get('next_step', '2') if step is None or step not in ['2', '3', '4', 'post']: raise Http404('Invalid value of "step"') edited_data = BaseMethods.qdict_to_dict(request.POST) edited_data.update( original_data) # Overwrite keys that are not allowed to modify if step == 'post': return_data = _post_edited_alarm(token_id, edited_data, alarm_id) new_message = [], {} if return_data['status'] == 'success': messages.success( request, return_data['data']['name'] + " has been modified") else: messages.error(request, return_data['error_msg']) return HttpResponseRedirect('/monitor/alarms/') return render(
if request.method == 'GET': return render(request, 'alarms/edit_alarm/edit_threshold_alarm_basis.html', { 'page_type': 'edit_alarm', 'title': 'Edit Alarm', 'threshold_step_html': 'alarms/threshold_alarm_basis/_threshold_alarm_step_2.html', 'step': 2, 'alarm_data': alarm_data }) if request.method == 'POST': # Invalid inputs for step will be served with 404 page step = request.POST.get('next_step', '2') if step is None or step not in ['2', '3', '4', 'post']: raise Http404('Invalid value of "step"') edited_data = BaseMethods.qdict_to_dict(request.POST) edited_data.update(original_data) # Overwrite keys that are not allowed to modify if step == 'post': return_data = _post_edited_alarm(token_id, edited_data, alarm_id) new_message = [], {} if return_data['status'] == 'success': messages.success(request, return_data['data']['name'] + " has been modified") else: messages.error(request, return_data['error_msg']) return HttpResponseRedirect('/monitor/alarms/') return render(request, 'alarms/edit_alarm/edit_threshold_alarm_basis.html', { 'page_type': 'edit_alarm', 'threshold_step_html':