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 = {}
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)
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 = []
def create_db(self): self.db = DBMysql(host='localhost', user='******', password='******', database='merlin', character_set='utf8')
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)