# You should have received a copy of the GNU General Public License # along with Sageo. If not, see <http://www.gnu.org/licenses/> from sqlalchemy import * from sqlalchemy.orm import * from app.db_model.base import Base from flask.ext.babelex import lazy_gettext, gettext, ngettext, Babel from app import babel, app from flask import Flask from app.db_model.view import View from app.model.columns.builtin import get_columns_pairs from app.model.columns.builtin import get_columns_name import ast _ = lazy_gettext column_choices = get_columns_pairs() column_names = get_columns_name() enum_col = Enum(*column_names) class ViewGrouper(Base): __tablename__ = 'view_grouper' id = Column(Integer, primary_key=True) column = Column(enum_col, info={ 'choices': column_choices, 'label': _(u'Column') }) parent_id = Column(Integer, ForeignKey(View.id), nullable=False) view = relationship(View, backref='view_grouper')
def create_default_views(): ####################### # All hosts view filters = ViewFilters() setattr(filters, 'host_regex_option', 'show') setattr(filters, 'host_option', 'show') setattr(filters, 'host_state_option', 'show') db_session.add(filters) db_session.commit() filters = ViewFilters.query.first() view = View() view.title = 'All hosts' view.link_name = 'allhosts' view.description = 'Overall state of allhosts, with counts of services in the various states.' view.datasource = 'hosts' view.filters_id = filters.id view.layout_number_columns = 2 db_session.add(view) db_session.commit() view = (View.query.filter_by(link_name=view.link_name).first()) __add_column('host_name', view, 'host') __add_column('host_state', view) __add_column('last_check', view) ####################### # All services view filters = ViewFilters() setattr(filters, 'host_regex_option', 'show') setattr(filters, 'host_option', 'show') setattr(filters, 'host_state_option', 'show') setattr(filters, 'service_state_option', 'show') db_session.add(filters) db_session.commit() filters = ViewFilters.query.all()[1] view = View() view.title = 'All services' view.link_name = 'allservices' view.description = _('All services grouped\r\nby hosts.') view.datasource = 'services' view.layout_number_columns = 1 view.filters_id = filters.id db_session.add(view) db_session.commit() __add_column('service_description', view, 'service') __add_column('service_state', view) __add_group_by('site', view) __add_group_by('host_name', view) ########################## # Host view filters = ViewFilters() setattr(filters, 'host_option', 'hide') setattr(filters, 'site_option', 'hide') db_session.add(filters) db_session.commit() filters = ViewFilters.query.all()[2] view = View() view.title = 'Services of Host' view.link_name = 'host' view.datasource = 'services' view.description = _('All services of a given host.') view.link_title = _('Services') view.layout_number_columns = 1 view.basic_layout = 'table' view.filters_id = filters.id db_session.add(view) db_session.commit() __add_column('service_state', view) __add_column('service_description', view) __add_column('service_plugin_output', view) __add_column('check_command', view) ########################## # Service view filters = ViewFilters() setattr(filters, 'service_option', 'hide') setattr(filters, 'host_option', 'hide') setattr(filters, 'site_option', 'hide') db_session.add(filters) db_session.commit() filters = ViewFilters.query.all()[3] view = View() view.title = 'Service' view.link_name = 'service' view.link_title = 'Service details' view.datasource = 'services' view.description = 'Status of a single service, to be used for linking' view.layout_number_columns = 1 view.basic_layout = 'single' view.filters_id = filters.id db_session.add(view) db_session.commit() # add all columns for a service for column in get_columns_name('services'): if column: __add_column(column, view) ########################################## # CRIT Services of host filters = ViewFilters() setattr(filters, 'service_state_option', 'hard') setattr(filters, 'service_state_ok', False) setattr(filters, 'service_state_warning', False) setattr(filters, 'service_state_critical', True) setattr(filters, 'service_state_unknown', False) setattr(filters, 'site_option', 'hide') setattr(filters, 'host_option', 'hide') db_session.add(filters) db_session.commit() filters = ViewFilters.query.all()[4] view = View() view.title = 'CRIT Services of host' view.link_name = 'host_crit' view.link_title = 'Services: CRIT' view.datasource = 'services' view.description = 'All services of a given host that are in state CRIT' view.layout_number_columns = 2 view.filters_id = filters.id db_session.add(view) db_session.commit() __add_column('service_state', view) __add_column('service_description', view) __add_column('service_plugin_output', view) __add_column('last_check', view) ########################################## # Host problems filters = ViewFilters() setattr(filters, 'host_regex_option', 'show') setattr(filters, 'host_state_option', 'hard') setattr(filters, 'host_state_up', False) setattr(filters, 'host_state_down', True) setattr(filters, 'host_state_unreach', True) setattr(filters, 'host_state_pending', False) setattr(filters, 'is_host_scheduled_downtime_depth_option', 'hard') setattr(filters, 'is_host_scheduled_downtime_depth', '0') setattr(filters, 'is_host_acknowledged_option', 'show') setattr(filters, 'is_summary_host_option', 'show') setattr(filters, 'is_summary_host', '0') setattr(filters, 'is_host_in_notification_period_option', 'show') db_session.add(filters) db_session.commit() filters = ViewFilters.query.all()[5] view = View() view.title = 'Host problems' view.link_name = 'hostproblems' view.datasource = 'hosts' view.description = 'A complete list of all host problems with a search form for selecting handled and unhandled' view.layout_number_columns = 1 view.filters_id = filters.id db_session.add(view) db_session.commit() __add_column('host_name', view, 'host') __add_column('host_state', view) __add_column('plugin_output', view) __add_column('num_services_ok', view) __add_column('num_services_warn', view) __add_column('num_services_crit', view) __add_column('num_services_unknown', view) __add_column('num_services_pending', view) ########################################## # Services problems filters = ViewFilters() setattr(filters, 'host_regex_option', 'show') setattr(filters, 'host_state_option', 'show') setattr(filters, 'host_state_up', True) setattr(filters, 'host_state_down', False) setattr(filters, 'host_state_unreach', False) setattr(filters, 'host_state_pending', True) setattr(filters, 'service_state_option', 'hard') setattr(filters, 'service_state_ok', False) setattr(filters, 'service_state_warning', True) setattr(filters, 'service_state_critical', True) setattr(filters, 'service_state_unknown', True) setattr(filters, 'service_state_pending', False) setattr(filters, 'is_host_scheduled_downtime_depth_option', 'hard') setattr(filters, 'is_host_scheduled_downtime_depth', '0') setattr(filters, 'is_service_acknowledged_option', 'show') setattr(filters, 'is_service_acknowledged', '-1') setattr(filters, 'is_summary_host_option', 'show') setattr(filters, 'is_summary_host', '0') setattr(filters, 'is_service_in_notification_period_option', 'show') db_session.add(filters) db_session.commit() filters = ViewFilters.query.all()[6] view = View() view.title = _('Service problems') view.link_name = 'svcproblems' view.datasource = 'services' view.description = 'All problems of services not currently in a downtime.' view.layout_number_columns = 1 view.filters_id = filters.id db_session.add(view) db_session.commit() __add_column('host_name', view, 'host') __add_column('service_description', view, 'service') __add_column('service_plugin_output', view) __add_column('last_check', view)
from sqlalchemy import * from sqlalchemy.orm import * from app.db_model.base import Base from flask.ext.babelex import lazy_gettext, gettext, ngettext, Babel from app import babel, app from flask import Flask from app.db_model.view import View from app.model.columns.builtin import get_columns_pairs from app.model.columns.builtin import get_columns_name import ast _ = lazy_gettext sort_option = {'0': 'Ascending', '1': 'Descending'} column_choices = get_columns_pairs() column_names = get_columns_name() enum_col = Enum(*column_names) enum_sorter_options = Enum(*sort_option.keys()) class ViewSorter(Base): __tablename__ = 'view_sorter' id = Column(Integer, primary_key=True) column = Column(enum_col, info={'choices':column_choices} ) sorter_option = Column(enum_sorter_options, info={'choices':sorted(sort_option.items())}) parent_id = Column(Integer, ForeignKey(View.id), nullable=False) view = relationship( View, backref = 'view_sorter' )