def searchedit(self, app, action, row, column, **params): row = int(row) column = int(column) dashboard = Dashboard.get(params.get('id')) dashboard_panel = DashboardPanel(None, (row, column), dashboard=dashboard) saved_searches = SavedSearch.all().filter_by_app(app) saved_search_id = params.get('saved_search_id') owner = splunk.auth.getCurrentUser()['name'] inline_search = SavedSearch(app, owner, None) ui_search_mode = dashboard_panel.panel_model.searchMode # set the saved_search object if saved_search_id: saved_search = SavedSearch.get(saved_search_id) ui_search_mode = 'saved' # otherwise defer to the first saved search item if it exists or an empty one else: saved_search_query = SavedSearch.all() if len(saved_search_query) > 0: saved_search = saved_search_query[0] else: saved_search = SavedSearch(app, owner, None) # based on search mode pre-populate an active saved_search and the inline_search accordingly if dashboard_panel.panel_model.searchMode == 'saved' and not saved_search_id: saved_search_query = SavedSearch.all().filter_by_app(None).search( 'name=%s' % util.fieldListToString( [dashboard_panel.panel_model.searchCommand])) if len(saved_search_query) > 0: saved_search = saved_search_query[0] # invalid/non-existant saved search reference, revert to empty saved search model else: saved_search.search = dashboard_panel.panel_model.searchCommand saved_search.dispatch.earliest_time = dashboard_panel.panel_model.searchEarliestTime saved_search.dispatch.latest_time = dashboard_panel.panel_model.searchLatestTime elif dashboard_panel.panel_model.searchMode == 'string': inline_search.search = dashboard_panel.panel_model.searchCommand inline_search.dispatch.earliest_time = dashboard_panel.panel_model.searchEarliestTime inline_search.dispatch.latest_time = dashboard_panel.panel_model.searchLatestTime template_args = dict(app=app, dashboard=dashboard, dashboard_panel=dashboard_panel, saved_searches=saved_searches, saved_search=saved_search, ui_search_mode=ui_search_mode, inline_search=inline_search) return self.render_template('paneleditor/searchedit.html', template_args)
def list(self, app, action, **kwargs): ''' provides list of saved searches for backfill lister''' host_app = cherrypy.request.path_info.split('/')[3] user = cherrypy.session['user']['name'] searches = SavedSearch.all() searches = searches.filter_by_app(app) searches = searches.search('action.summary_index=1') return self.render_template('/%s:/templates/backfill_select.html' % host_app, dict(app=app, searches=searches))
def searchedit(self, app, action, row, column, **params): row = int(row) column = int(column) dashboard = Dashboard.get(params.get('id')) dashboard_panel = DashboardPanel(None, (row, column), dashboard=dashboard) saved_searches = SavedSearch.all().filter_by_app(app) saved_search_id = params.get('saved_search_id') owner = splunk.auth.getCurrentUser()['name'] inline_search = SavedSearch(app, owner, None) ui_search_mode = dashboard_panel.panel_model.searchMode # set the saved_search object if saved_search_id: saved_search = SavedSearch.get(saved_search_id) ui_search_mode = 'saved' # otherwise defer to the first saved search item if it exists or an empty one else: saved_search_query = SavedSearch.all() if len(saved_search_query)>0: saved_search = saved_search_query[0] else: saved_search = SavedSearch(app, owner, None) # based on search mode pre-populate an active saved_search and the inline_search accordingly if dashboard_panel.panel_model.searchMode=='saved' and not saved_search_id: saved_search_query = SavedSearch.all().filter_by_app(None).search('name=%s' % util.fieldListToString([dashboard_panel.panel_model.searchCommand])) if len(saved_search_query)>0: saved_search = saved_search_query[0] # invalid/non-existant saved search reference, revert to empty saved search model else: saved_search.search = dashboard_panel.panel_model.searchCommand saved_search.dispatch.earliest_time = dashboard_panel.panel_model.searchEarliestTime saved_search.dispatch.latest_time = dashboard_panel.panel_model.searchLatestTime elif dashboard_panel.panel_model.searchMode=='string': inline_search.search = dashboard_panel.panel_model.searchCommand inline_search.dispatch.earliest_time = dashboard_panel.panel_model.searchEarliestTime inline_search.dispatch.latest_time = dashboard_panel.panel_model.searchLatestTime template_args = dict(app=app, dashboard=dashboard, dashboard_panel=dashboard_panel, saved_searches=saved_searches, saved_search=saved_search, ui_search_mode=ui_search_mode, inline_search=inline_search) return self.render_template('paneleditor/searchedit.html', template_args)
def list(self, app, action, **kwargs): ''' provides list of saved searches for backfill lister''' host_app = cherrypy.request.path_info.split('/')[3] user = cherrypy.session['user']['name'] searches = SavedSearch.all() searches = searches.filter_by_app(app) searches = searches.search('action.summary_index=1') return self.render_template( '/%s:/templates/backfill_select.html' % host_app, dict(app=app, searches=searches))
def save(self, app, action, **params): ''' save the posted headline ''' user = cherrypy.session['user']['name'] host_app = cherrypy.request.path_info.split('/')[3] key = params.get('name') try: if key == '_new': headline = Headlines(app, user, uuid4()) else: headline = Headlines.get(Headlines.build_id(key, app, user)) except: headline = Headlines(app, user, uuid4()) headline.label = params.get('label') if not headline.label: headline.errors = ['label cannot be blank'] else: headline.message = params.get('message') headline.description = params.get('description') headline.alert_name = params.get('alert_name') headline.metadata.sharing = 'app' if headline.errors or not headline.passive_save(): logger.error('Error saving headline %s: %s' % (headline.name, headline.errors[0])) alerts = SavedSearch.all() alerts = alerts.filter_by_app(app) alerts = alerts.search('is_scheduled=True') if key != '_new': return self.render_template( '/%s:/templates/unixHeadlines/headlines_detail.html' % host_app, dict(host_app=host_app, app=app, headline=headline, alerts=alerts)) else: headline.name = key return self.render_template( '/%s:/templates/unixHeadlines/headlines_new.html' % host_app, dict(host_app=host_app, app=app, headline=headline, alerts=alerts)) else: raise cherrypy.HTTPRedirect( self._redirect(host_app, app, 'success'), 303)
def new(self, app, action, **kwargs): ''' render the _new template ''' user = cherrypy.session['user']['name'] host_app = cherrypy.request.path_info.split('/')[3] headline = Headlines(app, user, '_new') alerts = SavedSearch.all() alerts = alerts.filter_by_app(app) alerts = alerts.search('is_scheduled=True') return self.render_template('/%s:/templates/unixHeadlines/headlines_new.html' \ % host_app, dict(host_app=host_app, app=app, headline=headline, alerts=alerts))
def new(self, app, action, **kwargs): ''' render the _new template ''' user = cherrypy.session['user']['name'] host_app = cherrypy.request.path_info.split('/')[3] headline = Headlines(app, user, '_new') alerts = SavedSearch.all() alerts = alerts.filter_by_app(app) alerts = alerts.search('is_scheduled=True') return self.render_template('/%s:/templates/headlines_new.html' \ % host_app, dict(app=app, headline=headline, alerts=alerts))
def save(self, app, action, **params): ''' save the posted headline ''' user = cherrypy.session['user']['name'] host_app = cherrypy.request.path_info.split('/')[3] key = params.get('name') try: if key == '_new': headline = Headlines(app, user, uuid4()) else: headline = Headlines.get(Headlines.build_id(key, app, user)) except: headline = Headlines(app, user, uuid4()) headline.label = params.get('label') if not headline.label: headline.errors = ['label cannot be blank'] else: headline.message = params.get('message') headline.description = params.get('description') headline.alert_name = params.get('alert_name') headline.metadata.sharing = 'app' if headline.errors or not headline.passive_save(): logger.error('Error saving headline %s: %s' % (headline.name, headline.errors[0])) alerts = SavedSearch.all() alerts = alerts.filter_by_app(app) alerts = alerts.search('is_scheduled=True') if key != '_new': return self.render_template('/%s:/templates/headlines_detail.html' % host_app, dict(app=app, headline=headline, alerts=alerts)) else: headline.name = key return self.render_template('/%s:/templates/headlines_new.html' % host_app, dict(app=app, headline=headline, alerts=alerts)) else: raise cherrypy.HTTPRedirect(self._redirect(host_app, app, 'success'), 303)
class unixHeadlines(controllers.BaseController): '''unixHeadlines Controller''' @route('/:app/:action=manage') @expose_page(must_login=True, methods=['GET']) def manage(self, app, action, **kwargs): ''' return the headlines management template''' user = cherrypy.session['user']['name'] host_app = cherrypy.request.path_info.split('/')[3] headlines = Headlines.all() headlines = headlines.filter_by_app(app) return self.render_template( '/%s:/templates/unixHeadlines/headlines_manage.html' % host_app, dict(host_app=host_app, headlines=headlines, app=app)) @route('/:app/:action=delete') @expose_page(must_login=True, trim_spaces=True, methods=['POST']) def delete(self, app, action, **params): ''' delete the provided headline ''' user = cherrypy.session['user']['name'] host_app = cherrypy.request.path_info.split('/')[3] id = params.get('name') if not id: logger.error('on delete, no identifier was provided') return self.render_json({ 'success': 'false', 'error': 'internal server error' }) try: headline = Headlines.get(Headlines.build_id(id, app, user)) except: logger.error('Failed to load headline %s' % id) return self.render_json({ 'success': 'false', 'error': 'failed to load headline' }) if not headline.delete(): logger.error('failed to delete headline %s' % headline.label) return self.render_json({ 'success': 'false', 'error': 'failed to delete headline' }) logger.info('successfully deleted headline %s' % headline.label) return self.render_json({ 'success': 'true', 'error': 'headline %s deleted' % headline.label }) @route('/:app/:action=id/:id') @expose_page(must_login=True, methods=['GET']) def id(self, app, action, id, **kwargs): ''' return details for a specific headline''' headline = None output = None user = cherrypy.session['user']['name'] host_app = cherrypy.request.path_info.split('/')[3] try: headline = Headlines.get(Headlines.build_id(id, app, 'nobody')) #if headline is not None: # output = self.get_headlines_detail(list(headline), host_app, user, 1, None) except Exception, ex: logger.exception(ex) logger.warn('problem retreiving headline %s' % id) raise cherrypy.HTTPRedirect( self._redirect(host_app, app, 'headline_not_found'), 303) alerts = SavedSearch.all() alerts = alerts.filter_by_app(app) alerts = alerts.search('is_scheduled=True') return self.render_template( '/%s:/templates/unixHeadlines/headlines_detail.html' % host_app, dict(headline=headline, host_app=host_app, app=app, alerts=alerts))