Python wrapper sql cleanup (#11628)

* Clean up wrapp mysql connect a bit

* fix typo
This commit is contained in:
Tony Murray 2020-05-19 10:14:09 -05:00 committed by GitHub
parent 3985ce74ce
commit 0b68c70a97
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 9 additions and 108 deletions

View File

@ -134,68 +134,13 @@ def get_config_data(install_dir):
def db_open(db_socket, db_server, db_port, db_username, db_password, db_dbname):
try:
options = dict(host=db_server, port=int(db_port), user=db_username, passwd=db_password, db=db_dbname)
if db_socket:
database = MySQLdb.connect(host=db_server, unix_socket=db_socket, user=db_username, passwd=db_password,
db=db_dbname)
else:
database = MySQLdb.connect(host=db_server, port=db_port, user=db_username, passwd=db_password, db=db_dbname)
return database
options['unix_socket'] = db_socket
return MySQLdb.connect(**options)
except Exception as dbexc:
print('ERROR: Could not connect to MySQL database!')
print('ERROR: %s' % dbexc)
sys.exit(2)
class DB:
conn = None
def __init__(self, db_socket, db_server, db_port, db_username, db_password, db_dbname):
self.db_socket = db_socket
self.db_server = db_server
self.db_port = db_port
self.db_username = db_username
self.db_password = db_password
self.db_dbname = db_dbname
self.in_use = threading.Lock()
self.connect()
def connect(self):
self.in_use.acquire(True)
while True:
try:
self.conn.close()
except:
pass
try:
if self.db_port == 0:
self.conn = MySQLdb.connect(host=self.db_server, user=self.db_username, passwd=self.db_password, db=self.db_dbname)
else:
self.conn = MySQLdb.connect(host=self.db_server, port=self.db_port, user=self.db_username, passwd=self.db_password,
db=self.db_dbname)
break
except (AttributeError, MySQLdb.OperationalError):
logger.warning('WARNING: MySQL Error, reconnecting.')
time.sleep(.5)
self.conn.autocommit(True)
self.conn.ping(True)
self.in_use.release()
def query(self, sql):
self.in_use.acquire(True)
while True:
try:
cursor = self.conn.cursor()
cursor.execute(sql)
ret = cursor.fetchall()
cursor.close()
self.in_use.release()
return ret
except (AttributeError, MySQLdb.OperationalError):
logger.warning('WARNING: MySQL Operational Error during query, reconnecting.')
self.in_use.release()
self.connect()
except (AttributeError, MySQLdb.ProgrammingError):
logger.warning('WARNING: MySQL Programming Error during query, attempting query again.')
cursor.close()

View File

@ -191,20 +191,6 @@ if __name__ == '__main__':
discovery_path = config['install_dir'] + '/discovery.php'
log_dir = config['log_dir']
# TODO: Use LibreNMS.DB
db_username = config['db_user']
db_password = config['db_pass']
db_port = int(config['db_port'])
if config['db_socket']:
db_server = config['db_host']
db_socket = config['db_socket']
else:
db_server = config['db_host']
db_socket = None
db_dbname = config['db_name']
# (c) 2015, GPLv3, Daniel Preussker <f0o@devilcode.org> <<<EOC1
if 'distributed_poller_group' in config:
discovery_group = str(config['distributed_poller_group'])
@ -288,7 +274,7 @@ if __name__ == '__main__':
query = "select device_id from devices where disabled = 0 order by last_polled_timetaken desc"
# EOC2
db = LNMS.db_open(db_socket, db_server, db_port, db_username, db_password, db_dbname)
db = LNMS.db_open(config['db_socket'], config['db_host'], int(config['db_port']), config['db_user'], config['db_pass'], config['db_name'])
cursor = db.cursor()
cursor.execute(query)
devices = cursor.fetchall()

View File

@ -183,20 +183,6 @@ if __name__ == '__main__':
poller_path = config['install_dir'] + '/poller.php'
log_dir = config['log_dir']
# TODO: Use LibreNMS.DB
db_username = config['db_user']
db_password = config['db_pass']
db_port = int(config['db_port'])
if config['db_socket']:
db_server = config['db_host']
db_socket = config['db_socket']
else:
db_server = config['db_host']
db_socket = None
db_dbname = config['db_name']
if 'rrd' in config and 'step' in config['rrd']:
step = config['rrd']['step']
else:
@ -292,7 +278,7 @@ if __name__ == '__main__':
query = 'select device_id from devices where disabled = 0 order by last_polled_timetaken desc'
# EOC2
db = LNMS.db_open(db_socket, db_server, db_port, db_username, db_password, db_dbname)
db = LNMS.db_open(config['db_socket'], config['db_host'], config['db_port'], config['db_user'], config['db_pass'], config['db_name'])
cursor = db.cursor()
cursor.execute(query)
devices = cursor.fetchall()
@ -366,7 +352,7 @@ if __name__ == '__main__':
show_stopper = False
db = LNMS.db_open(db_socket, db_server, db_port, db_username, db_password, db_dbname)
db = LNMS.db_open(config['db_socket'], config['db_host'], config['db_port'], config['db_user'], config['db_pass'], config['db_name'])
cursor = db.cursor()
query = "update pollers set last_polled=NOW(), devices='%d', time_taken='%d' where poller_name='%s'" % (
polled_devices,

View File

@ -198,21 +198,6 @@ if __name__ == '__main__':
service_path = config['install_dir'] + '/check-services.php'
log_dir = config['log_dir']
# TODO: Use LibreNMS.DB
db_username = config['db_user']
db_password = config['db_pass']
db_port = int(config['db_port'])
if config['db_socket']:
db_server = config['db_host']
db_socket = config['db_socket']
else:
db_server = config['db_host']
db_socket = None
db_dbname = config['db_name']
# (c) 2015, GPLv3, Daniel Preussker <f0o@devilcode.org> <<<EOC1
if 'distributed_poller_group' in config:
service_group = str(config['distributed_poller_group'])
@ -290,8 +275,7 @@ if __name__ == '__main__':
query = "SELECT DISTINCT(`services`.`device_id`) FROM `services` LEFT JOIN `devices` ON `services`.`device_id` = `devices`.`device_id` WHERE `devices`.`disabled` = 0"
# EOC2
db = LNMS.db_open(db_socket, db_server, db_port, db_username, db_password, db_dbname)
db = LNMS.db_open(config['db_socket'], config['db_host'], config['db_port'], config['db_user'], config['db_pass'], config['db_name'])
cursor = db.cursor()
cursor.execute(query)
devices = cursor.fetchall()