Beispiel #1
0
 def create_db(self):
     self.db = DBSqlite("/usr/local/shinken/var/merlindb.sqlite",
                        table_prefix='')
Beispiel #2
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)