Esempio n. 1
0
    def init(self):
        print "I connect to NDO database"
        self.db = DBMysql(self.host,
                          self.user,
                          self.password,
                          self.database,
                          self.character_set,
                          table_prefix='nagios_')
        self.connect_database()

        #Cache for hosts and services
        #will be flushed when we got a net instance id
        #or something like that
        self.services_cache = {}
        self.hosts_cache = {}
Esempio n. 2
0
    def __init__(self, modconf, host=None, user=None, password=None, database=None, character_set=None, database_path=None):
        # Mapping for name of data, rename attributes and transform function
        self.mapping = {
           # Host
           'host_check_result': {
               'plugin_monitoring_services_id': {'transform': None},
               'event': {'transform': None},
               'perf_data': {'transform': None},
               'output': {'transform': None},
               'state': {'transform': None},
               'latency': {'transform': None},
               'execution_time': {'transform': None},
               'state_type': {'transform': None},
               },
           # Service
           'service_check_result': {
               'plugin_monitoring_services_id': {'transform': None},
               'plugin_monitoring_servicescatalogs_id': {'transform': None},
               'event': {'transform': None},
               'perf_data': {'transform': None},
               'output': {'transform': None},
               'state': {'transform': None},
               'latency': {'transform': None},
               'execution_time': {'transform': None},
               'state_type': {'transform': None},
               }
           }
        # Last state of check
        #self.checkstatus = {
        #    '0': None,
        #    }
        BaseModule.__init__(self, modconf)
        self.host = host
        self.user = user
        self.password = password
        self.database = database
        self.character_set = character_set
        self.database_path = database_path

        from shinken.db_mysql import DBMysql
        logger.info("[GLPIdb Broker] Creating a mysql backend")
        self.db_backend = DBMysql(host, user, password, database, character_set)
Esempio n. 3
0
    def init(self):
        logger.info("I connect to NDO database")
        self.db = DBMysql(self.host, self.user, self.password, self.database,
                          self.character_set, table_prefix=self.prefix,
                          port=self.port)
        self.connect_database()

        # Cache for hosts and services
        # The structure is as follow:
        # First the instance id then the host / (host,service desc)
        # to access the wanted data
        self.services_cache_sync = {}
        self.hosts_cache_sync = {}

        # We need to search for centreon_specific fields, like long_output
        query = u"select TABLE_NAME from information_schema.columns " \
                "where TABLE_SCHEMA='ndo' and " \
                "TABLE_NAME='%sservicestatus' and " \
                "COLUMN_NAME='long_output';" % self.prefix

        self.db.execute_query(query)
        row = self.db.fetchone()
        if row is None or len(row) < 1:
            self.centreon_version = False
        else:
            self.centreon_version = True
            logger.info("[MySQL/NDO] Using the centreon version")

        # Cache for database id
        # In order not to query the database every time
        self.database_id_cache = {}

        # Mapping service_id in Shinken and in database
        # Because can't acces host_name from a service everytime :(
        self.mapping_service_id = {}

        # Todo list to manage brok
        self.todo = []
Esempio n. 4
0
 def create_db(self):
     self.db = DBMysql(host='localhost',
                       user='******',
                       password='******',
                       database='merlin',
                       character_set='utf8')
Esempio n. 5
0
    def __init__(self, modconf, backend, host=None, user=None, password=None, database=None, character_set=None, database_path=None):
        # Mapping for name of data, rename attributes and transform function
        self.mapping = {
            # Program status
            'program_status': {'program_start': {'transform': None},
                                'pid': {'transform': None},
                                'last_alive': {'transform': None},
                                'is_running': {'transform': None},
                                'instance_id': {'transform': None},
                                },
            # Program status update (every 10s)
            'update_program_status': {'program_start': {'transform': None},
                                'pid': {'transform': None},
                                'last_alive': {'transform': None},
                                'is_running': {'transform': None},
                                'instance_id': {'transform': None},
                                },
            # Host
            'initial_host_status': {
                'id': {'transform': None},
                'instance_id': {'transform': None},
                'host_name': {'transform': None},
                'alias': {'transform': None},
                'display_name': {'transform': None},
                'address': {'transform': None},
                'contact_groups': {'transform': None},
                'contacts': {'transform': None},
                'initial_state': {'transform': None},
                'max_check_attempts': {'transform': None},
                'check_interval': {'transform': None},
                'retry_interval': {'transform': None},
                'active_checks_enabled': {'transform': None},
                'passive_checks_enabled': {'transform': None},
                'obsess_over_host': {'transform': None},
                'check_freshness': {'transform': None},
                'freshness_threshold': {'transform': None},
                'event_handler_enabled': {'transform': None},
                'low_flap_threshold': {'transform': None},
                'high_flap_threshold': {'transform': None},
                'flap_detection_enabled': {'transform': None},
                'process_perf_data': {'transform': None},
                'notification_interval': {'transform': None},
                'first_notification_delay': {'transform': None},
                'notifications_enabled': {'transform': None},
                'notes': {'transform': None},
                'notes_url': {'transform': None},
                'action_url': {'transform': None},
                'last_chk': {'transform': None, 'name': 'last_check'},
                'next_chk': {'transform': None, 'name': 'next_check'},
                'attempt': {'transform': None, 'name': 'current_attempt'},
                'state_id': {'transform': None, 'name': 'current_state'},
                'state_type_id': {'transform': None, 'name': 'state_type'},
                'current_event_id': {'transform': None},
                'last_event_id': {'transform': None},
                'last_state_id': {'transform': None, 'name': 'last_state'},
                'last_state_change': {'transform': None},
                'last_hard_state_change': {'transform': None},
                'last_hard_state': {'transform': last_hard_state_to_int},
                'is_flapping': {'transform': None},
                'flapping_comment_id': {'transform': None},
                'percent_state_change': {'transform': None},
                'problem_has_been_acknowledged': {'transform': None},
                'acknowledgement_type': {'transform': None},
                'check_type': {'transform': None},
                'has_been_checked': {'transform': None},
                'should_be_scheduled': {'transform': None},
                'last_problem_id': {'transform': None},
                'current_problem_id': {'transform': None},
                'execution_time': {'transform': None},
                'last_notification': {'transform': None},
                'current_notification_number': {'transform': None},
                'current_notification_id': {'transform': None},
                'check_flapping_recovery_notification': {'transform': None},
                'scheduled_downtime_depth': {'transform': None},
                'pending_flex_downtime': {'transform': None},
                },
            'update_host_status': {
                'id': {'transform': None},
                'instance_id': {'transform': None},
                'host_name': {'transform': None},
                'alias': {'transform': None},
                'display_name': {'transform': None},
                'address': {'transform': None},
                'initial_state': {'transform': None},
                'max_check_attempts': {'transform': None},
                'check_interval': {'transform': None},
                'retry_interval': {'transform': None},
                'active_checks_enabled': {'transform': None},
                'passive_checks_enabled': {'transform': None},
                'obsess_over_host': {'transform': None},
                'check_freshness': {'transform': None},
                'freshness_threshold': {'transform': None},
                'event_handler_enabled': {'transform': None},
                'low_flap_threshold': {'transform': None},
                'high_flap_threshold': {'transform': None},
                'flap_detection_enabled': {'transform': None},
                'process_perf_data': {'transform': None},
                'notification_interval': {'transform': None},
                'first_notification_delay': {'transform': None},
                'notifications_enabled': {'transform': None},
                'notes': {'transform': None},
                'notes_url': {'transform': None},
                'action_url': {'transform': None},
                'last_chk': {'transform': None, 'name': 'last_check'},
                'next_chk': {'transform': None, 'name': 'next_check'},
                'attempt': {'transform': None, 'name': 'current_attempt'},
                'state_id': {'transform': None, 'name': 'current_state'},
                'state_type_id': {'transform': None, 'name': 'state_type'},
                'current_event_id': {'transform': None},
                'last_event_id': {'transform': None},
                'last_state_id': {'transform': None, 'name': 'last_state'},
                'last_state_change': {'transform': None},
                'last_hard_state_change': {'transform': None},
                'last_hard_state': {'transform': last_hard_state_to_int},
                'is_flapping': {'transform': None},
                'flapping_comment_id': {'transform': None},
                'percent_state_change': {'transform': None},
                'problem_has_been_acknowledged': {'transform': None},
                'acknowledgement_type': {'transform': None},
                'check_type': {'transform': None},
                'has_been_checked': {'transform': None},
                'should_be_scheduled': {'transform': None},
                'last_problem_id': {'transform': None},
                'current_problem_id': {'transform': None},
                'execution_time': {'transform': None},
                'last_notification': {'transform': None},
                'current_notification_number': {'transform': None},
                'current_notification_id': {'transform': None},
                'check_flapping_recovery_notification': {'transform': None},
                'scheduled_downtime_depth': {'transform': None},
                'pending_flex_downtime': {'transform': None},
                },
            'host_check_result': {
                'latency': {'transform': None},
                'last_time_unreachable': {'transform': None},
                'attempt': {'transform': None, 'name': 'current_attempt'},
                'check_type': {'transform': None},
                'state_type_id': {'transform': None, 'name': 'state_type'},
                'execution_time': {'transform': None},
                'start_time': {'transform': None},
                'acknowledgement_type': {'transform': None},
                'return_code': {'transform': None},
                'last_time_down': {'transform': None},
                'instance_id': {'transform': None},
                'long_output': {'transform': None},
                'end_time': {'transform': None},
                'last_chk': {'transform': None, 'name': 'last_check'},
                'timeout': {'transform': None},
                'output': {'transform': None},
                'state_id': {'transform': None, 'name': 'current_state'},
                'last_time_up': {'transform': None},
                'early_timeout': {'transform': None},
                'perf_data': {'transform': None},
                'host_name': {'transform': None},
                },
            'host_next_schedule': {
                'instance_id': {'transform': None},
                'next_chk': {'transform': None, 'name': 'next_check'},
                'host_name': {'transform': None},
                },
            # Service
            'initial_service_status': {
                'id': {'transform': None},
                'instance_id': {'transform': None},
                'host_name': {'transform': None},
                'service_description': {'transform': None},
                'display_name': {'transform': None},
                'is_volatile': {'transform': None},
                'initial_state': {'transform': None},
                'max_check_attempts': {'transform': None},
                'check_interval': {'transform': None},
                'retry_interval': {'transform': None},
                'active_checks_enabled': {'transform': None},
                'passive_checks_enabled': {'transform': None},
                'obsess_over_service': {'transform': None},
                'check_freshness': {'transform': None},
                'freshness_threshold': {'transform': None},
                'event_handler_enabled': {'transform': None},
                'low_flap_threshold': {'transform': None},
                'high_flap_threshold': {'transform': None},
                'flap_detection_enabled': {'transform': None},
                'process_perf_data': {'transform': None},
                'notification_interval': {'transform': None},
                'first_notification_delay': {'transform': None},
                'notifications_enabled': {'transform': None},
                'notes': {'transform': None},
                'notes_url': {'transform': None},
                'action_url': {'transform': None},
                'last_chk': {'transform': None, 'name': 'last_check'},
                'next_chk': {'transform': None, 'name': 'next_check'},
                'attempt': {'transform': None, 'name': 'current_attempt'},
                'state_id': {'transform': None, 'name': 'current_state'},
                'current_event_id': {'transform': None},
                'last_event_id': {'transform': None},
                'last_state_id': {'transform': None, 'name': 'last_state'},
                'last_state_change': {'transform': None},
                'last_hard_state_change': {'transform': None},
                'last_hard_state': {'transform': last_hard_state_to_int},
                'state_type_id': {'transform': None, 'name': 'state_type'},
                'is_flapping': {'transform': None},
                'flapping_comment_id': {'transform': None},
                'percent_state_change': {'transform': None},
                'problem_has_been_acknowledged': {'transform': None},
                'acknowledgement_type': {'transform': None},
                'check_type': {'transform': None},
                'has_been_checked': {'transform': None},
                'should_be_scheduled': {'transform': None},
                'last_problem_id': {'transform': None},
                'current_problem_id': {'transform': None},
                'execution_time': {'transform': None},
                'last_notification': {'transform': None},
                'current_notification_number': {'transform': None},
                'current_notification_id': {'transform': None},
                'check_flapping_recovery_notification': {'transform': None},
                'scheduled_downtime_depth': {'transform': None},
                'pending_flex_downtime': {'transform': None},
                },
            'update_service_status': {
                'id': {'transform': None},
                'instance_id': {'transform': None},
                'host_name': {'transform': None},
                'service_description': {'transform': None},
                'display_name': {'transform': None},
                'is_volatile': {'transform': None},
                'initial_state': {'transform': None},
                'max_check_attempts': {'transform': None},
                'check_interval': {'transform': None},
                'retry_interval': {'transform': None},
                'active_checks_enabled': {'transform': None},
                'passive_checks_enabled': {'transform': None},
                'obsess_over_service': {'transform': None},
                'check_freshness': {'transform': None},
                'freshness_threshold': {'transform': None},
                'event_handler_enabled': {'transform': None},
                'low_flap_threshold': {'transform': None},
                'high_flap_threshold': {'transform': None},
                'flap_detection_enabled': {'transform': None},
                'process_perf_data': {'transform': None},
                'notification_interval': {'transform': None},
                'first_notification_delay': {'transform': None},
                'notifications_enabled': {'transform': None},
                'notes': {'transform': None},
                'notes_url': {'transform': None},
                'action_url': {'transform': None},
                'last_chk': {'transform': None, 'name': 'last_check'},
                'next_chk': {'transform': None, 'name': 'next_check'},
                'attempt': {'transform': None, 'name': 'current_attempt'},
                'state_id': {'transform': None, 'name': 'current_state'},
                'current_event_id': {'transform': None},
                'last_event_id': {'transform': None},
                'last_state_id': {'transform': None, 'name': 'last_state'},
                'last_state_change': {'transform': None},
                'last_hard_state_change': {'transform': None},
                'last_hard_state': {'transform': last_hard_state_to_int},
                'state_type_id': {'transform': None, 'name': 'current_state'},
                'is_flapping': {'transform': None},
                'flapping_comment_id': {'transform': None},
                'percent_state_change': {'transform': None},
                'problem_has_been_acknowledged': {'transform': None},
                'acknowledgement_type': {'transform': None},
                'check_type': {'transform': None},
                'has_been_checked': {'transform': None},
                'should_be_scheduled': {'transform': None},
                'last_problem_id': {'transform': None},
                'current_problem_id': {'transform': None},
                'execution_time': {'transform': None},
                'last_notification': {'transform': None},
                'current_notification_number': {'transform': None},
                'current_notification_id': {'transform': None},
                'check_flapping_recovery_notification': {'transform': None},
                'scheduled_downtime_depth': {'transform': None},
                'pending_flex_downtime': {'transform': None},
                },
            'service_check_result': {
                'check_type': {'transform': None},
                'last_time_critical': {'transform': None},
                'last_time_warning': {'transform': None},
                'latency': {'transform': None},
                'last_chk': {'transform': None, 'name': 'last_check'},
                'last_time_ok': {'transform': None},
                'end_time': {'transform': None},
                'last_time_unknown': {'transform': None},
                'execution_time': {'transform': None},
                'start_time': {'transform': None},
                'return_code': {'transform': None},
                'output': {'transform': None},
                'service_description': {'transform': None},
                'early_timeout': {'transform': None},
                'attempt': {'transform': None, 'name': 'current_attempt'},
                'state_type_id': {'transform': None, 'name': 'state_type'},
                'acknowledgement_type': {'transform': None},
                'instance_id': {'transform': None},
                'long_output': {'transform': None},
                'host_name': {'transform': None},
                'timeout': {'transform': None},
                'state_id': {'transform': None, 'name': 'current_state'},
                'perf_data': {'transform': None},
                },
            'service_next_schedule': {
                'next_chk': {'transform': None, 'name': 'next_check'},
                'service_description': {'transform': None},
                'instance_id': {'transform': None},
                'host_name': {'transform': None},
                },

            # Contact
            'initial_contact_status': {
                'service_notifications_enabled': {'transform': None},
                'can_submit_commands': {'transform': None},
                'contact_name': {'transform': None},
                'id': {'transform': None},
                'retain_status_information': {'transform': None},
                'address1': {'transform': None},
                'address2': {'transform': None},
                'address3': {'transform': None},
                'address4': {'transform': None},
                'address5': {'transform': None},
                'address6': {'transform': None},
                #'service_notification_commands': {'transform': get_objs_names},
                'pager': {'transform': None},
                #'host_notification_period': {'transform': get_obj_name},
                'host_notifications_enabled': {'transform': None},
                #'host_notification_commands': {'transform': get_objs_names},
                #'service_notification_period': {'transform': get_obj_name},
                'email': {'transform': None},
                'alias': {'transform': None},
                'host_notification_options': {'transform': list_to_comma},
                'service_notification_options': {'transform': list_to_comma},
                },
            # Contact group
            'initial_contactgroup_status': {
                'contactgroup_name': {'transform': None},
                'alias': {'transform': None},
                'instance_id': {'transform': None},
                'id': {'transform': None},
                'members': {'transform': None},
                },
            # Host group
            'initial_hostgroup_status': {
                'hostgroup_name': {'transform': None},
                'notes': {'transform': None},
                'instance_id': {'transform': None},
                'action_url': {'transform': None},
                'notes_url': {'transform': None},
                'members': {'transform': None},
                'id': {'transform': None},
                }
            }
        BaseModule.__init__(self, modconf)
        self.backend = backend
        self.host = host
        self.user = user
        self.password = password
        self.database = database
        self.character_set = character_set
        self.database_path = database_path


        # Now get a backend_db of our backend type
        if backend == 'mysql':
            #from mysql_backend import Mysql_backend
            from shinken.db_mysql import DBMysql
            print "Creating a mysql backend"
            self.db_backend = DBMysql(host, user, password, database, character_set)

        if backend == 'sqlite':
            #from sqlite_backend import Sqlite_backend
            from shinken.db_sqlite import DBSqlite
            print "Creating a sqlite backend"
            self.db_backend = DBSqlite(self.database_path)