def reissue_notification_ticket(id): """ Create another (re-issue) redmine ticket as a part of notification process (for alerts only) """ debug = False # development debug #log = False # used in except blocks result = None try: if debug: print '\n \t(debug) entered reissue_notification_ticket, id: ', id # Get alert, definition and notification to update redmine ticket alert, definition, notification = get_redmine_info_from_alert(id) if alert is None or definition is None or notification is None: message = 'Failed to retrieve alert, definition or notification for update_notification_ticket. (id: %d)' % id current_app.logger.exception('[update_notification_ticket] %s ' % message) raise Exception(message) # Populate required fields to create a redmine ticket project = current_app.config['REDMINE_PROJECT_ID'] if debug: print '\n \t(debug) -- Reissue redmine ticket (project: %s), get ticket_id...' % project print '\n \t(debug) -- Current ticket id: ', alert.ticket_id # Get current redmine ticket redmine_ticket = get_redmine_ticket_for_notification(alert.ticket_id) if debug: print '\n \t(debug) -- Current redmine ticket: ', redmine_ticket # Set assigned id to reflect update to user currently assigned to alert.ticket_id #assigned_id = redmine_ticket['assigned_to'] if 'assigned_to' in redmine_ticket: assigned_id = redmine_ticket['assigned_to'] else: # Use user_event_notification for determining assigned user's redmine id redmine_id = 1 name = None assigned_user = User.query.get(notification.user_id) if assigned_user is not None: name = assigned_user.first_name + ' ' + assigned_user.last_name tmp_id = get_user_redmine_id(project, name) if tmp_id is not None: redmine_id = tmp_id else: # todo issue - assigned_user is None message = "Invalid User ID, User record not found." #if log: print '\n message: ', message return bad_request(message) assigned_id = redmine_id # Update description to indicate previously issued ticket id for this alert. update_info = '\n* Associated with previously issued ticket: %d' % alert.ticket_id if debug: print '\n \t(debug) -- New reissued ticket update_info: ', update_info # Create new redmine ticket prefix = (alert.event_type).upper() + '*: ' subject = prefix + alert.event_response description = alert.event_response + update_info priority = definition.severity if debug: print '\n \t(debug) New ticket subject: ', subject if debug: print '\n \t(debug) New ticket description: ', description ticket_id = create_redmine_ticket_for_notification( project, subject, description, priority, assigned_id) if ticket_id is None: message = 'Failed to reissue (create another new)_redmine_ticket.' current_app.logger.exception('[reissue_notification_ticket] %s ' % message) return result # update escalate fields if successful creating the redmine ticket escalated = True ts_escalated = dt.datetime.strftime( dt.datetime.now(), "%Y-%m-%dT%H:%M:%S") # should this be event_time? SystemEvent.update_alert_alarm_escalation(id=alert.id, ticket_id=ticket_id, escalated=escalated, ts_escalated=ts_escalated) if debug: print '\n \t(debug) reissue_notification_ticket -- updated alert_alarm: ', alert.to_json( ) ticket_link_id = TicketSystemEventLink.insert_ticket_link( system_event_id=alert.id, ticket_id=ticket_id) if debug: print '\n \t(debug) -- (notifications) ticket_link_id: ', ticket_link_id ''' # debug - view contents of alert_alarm escalation fields; verify changes have been persisted escalated_alert_alarm = SystemEvent.query.get(alert_alarm.id) print '\n (debug) *** escalated alert_alarm.to_json(): ', escalated_alert_alarm.to_json() ''' result = ticket_id if debug: print '\n \treissue_notification_ticket - ticket_id: ', ticket_id except Exception as err: message = err.message current_app.logger.exception('[reissue_notification_ticket] %s ' % message) finally: return result
def reissue_notification_ticket(id): """ Create another (re-issue) redmine ticket as a part of notification process (for alerts only) """ debug = False # development debug #log = False # used in except blocks result = None try: if debug: print '\n \t(debug) entered reissue_notification_ticket, id: ', id # Get alert, definition and notification to update redmine ticket alert, definition, notification = get_redmine_info_from_alert(id) if alert is None or definition is None or notification is None: message = 'Failed to retrieve alert, definition or notification for update_notification_ticket. (id: %d)' % id current_app.logger.exception('[update_notification_ticket] %s ' % message) raise Exception(message) # Populate required fields to create a redmine ticket project = current_app.config['REDMINE_PROJECT_ID'] if debug: print '\n \t(debug) -- Reissue redmine ticket (project: %s), get ticket_id...' % project print'\n \t(debug) -- Current ticket id: ', alert.ticket_id # Get current redmine ticket redmine_ticket = get_redmine_ticket_for_notification(alert.ticket_id) if debug: print '\n \t(debug) -- Current redmine ticket: ', redmine_ticket # Set assigned id to reflect update to user currently assigned to alert.ticket_id #assigned_id = redmine_ticket['assigned_to'] if 'assigned_to' in redmine_ticket: assigned_id = redmine_ticket['assigned_to'] else: # Use user_event_notification for determining assigned user's redmine id redmine_id = 1 name = None assigned_user = User.query.get(notification.user_id) if assigned_user is not None: name = assigned_user.first_name + ' ' + assigned_user.last_name tmp_id = get_user_redmine_id(project, name) if tmp_id is not None: redmine_id = tmp_id else: # todo issue - assigned_user is None message = "Invalid User ID, User record not found." #if log: print '\n message: ', message return bad_request(message) assigned_id = redmine_id # Update description to indicate previously issued ticket id for this alert. update_info = '\n* Associated with previously issued ticket: %d' % alert.ticket_id if debug: print '\n \t(debug) -- New reissued ticket update_info: ', update_info # Create new redmine ticket prefix = (alert.event_type).upper() + '*: ' subject = prefix + alert.event_response description = alert.event_response + update_info priority = definition.severity if debug: print '\n \t(debug) New ticket subject: ', subject if debug: print '\n \t(debug) New ticket description: ', description ticket_id = create_redmine_ticket_for_notification(project, subject, description, priority, assigned_id) if ticket_id is None: message = 'Failed to reissue (create another new)_redmine_ticket.' current_app.logger.exception('[reissue_notification_ticket] %s ' % message) return result # update escalate fields if successful creating the redmine ticket escalated = True ts_escalated = dt.datetime.strftime(dt.datetime.now(), "%Y-%m-%dT%H:%M:%S") # should this be event_time? SystemEvent.update_alert_alarm_escalation(id=alert.id, ticket_id=ticket_id, escalated=escalated, ts_escalated=ts_escalated) if debug: print '\n \t(debug) reissue_notification_ticket -- updated alert_alarm: ', alert.to_json() ticket_link_id = TicketSystemEventLink.insert_ticket_link(system_event_id=alert.id, ticket_id=ticket_id) if debug: print '\n \t(debug) -- (notifications) ticket_link_id: ', ticket_link_id ''' # debug - view contents of alert_alarm escalation fields; verify changes have been persisted escalated_alert_alarm = SystemEvent.query.get(alert_alarm.id) print '\n (debug) *** escalated alert_alarm.to_json(): ', escalated_alert_alarm.to_json() ''' result = ticket_id if debug: print '\n \treissue_notification_ticket - ticket_id: ', ticket_id except Exception as err: message = err.message current_app.logger.exception('[reissue_notification_ticket] %s ' % message) finally: return result
def begin_notification_process(id): """ Initiate the escalation process for an alert or an alarm (id provided) Process: - Get alert_alarm - Get alert_alarm_definition - Get user_event_notification information * Create initial [red mine] ticket, get ticket id - if successful creating ticket, then: alert_alarm.escalated =True; alert_alarms_escalated = dt.datetime.strftime(dt.datetime.now(), "%Y-%m-%dT%H:%M:%S") alert_alarm.ticket_id = ticket_id persist escalation field changes with update_alert_alarm """ debug = False #log = False result = None try: # Get alert_alarm, alert_alarm_definition and user_event_notification to update redmine ticket alert_alarm, alert_alarm_definition, user_event_notification = get_redmine_info_from_alert( id) if alert_alarm is None or alert_alarm_definition is None or user_event_notification is None: message = 'Failed to retrieve alert, definition or notification for update_notification_ticket. (id: %d)' % id current_app.logger.exception('[update_notification_ticket] %s ' % message) raise Exception(message) # Populate required fields to create a redmine ticket project = current_app.config['REDMINE_PROJECT_ID'] if debug: print '\n \t(debug) ---- Get targeted user for redmine assignment using user_event_notification...' # Use user_event_notification for determining assigned user's redmine id redmine_id = 1 # this assumes Redmine ADmin is assigned to redmine user id 1; should lookup 'Redmine Admin' todo name = None assigned_user = User.query.get(user_event_notification.user_id) if assigned_user is not None: name = assigned_user.first_name + ' ' + assigned_user.last_name tmp_id = get_user_redmine_id(project, name) if tmp_id is not None: redmine_id = tmp_id if debug: print '\n \t(debug) -- Creating redmine ticket for \'%s\' (project: %s), get ticket_id...' % \ (name, project) # Create redmine ticket prefix = (alert_alarm.event_type).upper() + ': ' subject = prefix + alert_alarm.event_response description = alert_alarm.event_response priority = alert_alarm_definition.severity ticket_id = create_redmine_ticket_for_notification( project, subject, description, priority, redmine_id) if ticket_id is None: message = 'Failed to create_redmine_ticket.' print '\n \t-- message: ', message current_app.logger.exception('[begin_notification_process] %s ' % message) return result # If successful creating redmine ticket, update escalate fields escalated = True ts_escalated = dt.datetime.strftime( dt.datetime.now(), "%Y-%m-%dT%H:%M:%S") # should this be event_time? SystemEvent.update_alert_alarm_escalation(id=alert_alarm.id, ticket_id=ticket_id, escalated=escalated, ts_escalated=ts_escalated) if debug: print '\n \t(debug) -- updated alert_alarm: ', alert_alarm.to_json( ) ticket_link_id = TicketSystemEventLink.insert_ticket_link( system_event_id=alert_alarm.id, ticket_id=ticket_id) if debug: print '\n \t(debug) -- [begin_notification_process] \'%s\' has been escalated!' % alert_alarm.event_type if debug: print '\n \tbegin_notification_process - ticket_id: ', ticket_id result = ticket_id except Exception as err: current_app.logger.exception('[begin_notification_process] %s ' % err.message) finally: return result
def begin_notification_process(id): """ Initiate the escalation process for an alert or an alarm (id provided) Process: - Get alert_alarm - Get alert_alarm_definition - Get user_event_notification information * Create initial [red mine] ticket, get ticket id - if successful creating ticket, then: alert_alarm.escalated =True; alert_alarms_escalated = dt.datetime.strftime(dt.datetime.now(), "%Y-%m-%dT%H:%M:%S") alert_alarm.ticket_id = ticket_id persist escalation field changes with update_alert_alarm """ debug = False #log = False result = None try: # Get alert_alarm, alert_alarm_definition and user_event_notification to update redmine ticket alert_alarm, alert_alarm_definition, user_event_notification = get_redmine_info_from_alert(id) if alert_alarm is None or alert_alarm_definition is None or user_event_notification is None: message = 'Failed to retrieve alert, definition or notification for update_notification_ticket. (id: %d)' % id current_app.logger.exception('[update_notification_ticket] %s ' % message) raise Exception(message) # Populate required fields to create a redmine ticket project = current_app.config['REDMINE_PROJECT_ID'] if debug: print '\n \t(debug) ---- Get targeted user for redmine assignment using user_event_notification...' # Use user_event_notification for determining assigned user's redmine id redmine_id = 1 # this assumes Redmine ADmin is assigned to redmine user id 1; should lookup 'Redmine Admin' todo name = None assigned_user = User.query.get(user_event_notification.user_id) if assigned_user is not None: name = assigned_user.first_name + ' ' + assigned_user.last_name tmp_id = get_user_redmine_id(project, name) if tmp_id is not None: redmine_id = tmp_id if debug: print '\n \t(debug) -- Creating redmine ticket for \'%s\' (project: %s), get ticket_id...' % \ (name, project) # Create redmine ticket prefix = (alert_alarm.event_type).upper() + ': ' subject = prefix + alert_alarm.event_response description = alert_alarm.event_response priority = alert_alarm_definition.severity ticket_id = create_redmine_ticket_for_notification(project, subject, description, priority, redmine_id) if ticket_id is None: message = 'Failed to create_redmine_ticket.' print'\n \t-- message: ', message current_app.logger.exception('[begin_notification_process] %s ' % message) return result # If successful creating redmine ticket, update escalate fields escalated = True ts_escalated = dt.datetime.strftime(dt.datetime.now(), "%Y-%m-%dT%H:%M:%S") # should this be event_time? SystemEvent.update_alert_alarm_escalation(id=alert_alarm.id, ticket_id=ticket_id, escalated=escalated, ts_escalated=ts_escalated) if debug: print '\n \t(debug) -- updated alert_alarm: ', alert_alarm.to_json() ticket_link_id = TicketSystemEventLink.insert_ticket_link(system_event_id=alert_alarm.id, ticket_id=ticket_id) if debug: print '\n \t(debug) -- [begin_notification_process] \'%s\' has been escalated!' % alert_alarm.event_type if debug: print '\n \tbegin_notification_process - ticket_id: ', ticket_id result = ticket_id except Exception as err: current_app.logger.exception('[begin_notification_process] %s ' % err.message) finally: return result