Migrate from MysqlDB to pymysql
Change-Id: I61b7a35badaa4a3480a1c786152b07c17a99bf80
This commit is contained in:
parent
51b0b28a05
commit
94f5bdbd62
|
@ -12,7 +12,7 @@
|
|||
# the License.
|
||||
|
||||
import logging
|
||||
import MySQLdb
|
||||
import pymysql
|
||||
|
||||
from monasca_notification.common.repositories.base.base_repo import BaseRepo
|
||||
from monasca_notification.common.repositories import exceptions as exc
|
||||
|
@ -37,7 +37,7 @@ class MysqlRepo(BaseRepo):
|
|||
def _connect_to_mysql(self):
|
||||
self._mysql = None
|
||||
try:
|
||||
self._mysql = MySQLdb.connect(host=self._mysql_host,
|
||||
self._mysql = pymysql.connect(host=self._mysql_host,
|
||||
user=self._mysql_user,
|
||||
passwd=unicode(self._mysql_passwd).encode('utf-8'),
|
||||
db=self._mysql_dbname,
|
||||
|
@ -45,7 +45,7 @@ class MysqlRepo(BaseRepo):
|
|||
use_unicode=True,
|
||||
charset="utf8")
|
||||
self._mysql.autocommit(True)
|
||||
except MySQLdb.Error as e:
|
||||
except pymysql.Error as e:
|
||||
log.exception('MySQL connect failed %s', e)
|
||||
raise
|
||||
|
||||
|
@ -59,7 +59,7 @@ class MysqlRepo(BaseRepo):
|
|||
|
||||
for row in cur:
|
||||
yield (row[1].lower(), row[0], row[2])
|
||||
except MySQLdb.Error as e:
|
||||
except pymysql.Error as e:
|
||||
self._mysql = None
|
||||
log.exception("Couldn't fetch alarms actions %s", e)
|
||||
raise exc.DatabaseException(e)
|
||||
|
|
|
@ -38,25 +38,15 @@ class OrmRepo(object):
|
|||
|
||||
self._orm = None
|
||||
|
||||
def _connect_to_orm(self):
|
||||
self._orm = None
|
||||
try:
|
||||
self._orm = self._orm_engine.connect()
|
||||
except DatabaseError as e:
|
||||
log.exception('Orm connect failed %s', e)
|
||||
raise
|
||||
|
||||
def fetch_notification(self, alarm):
|
||||
try:
|
||||
if self._orm is None:
|
||||
self._connect_to_orm()
|
||||
log.debug('Orm query {%s}', str(self._orm_query))
|
||||
notifcations = self._orm.execute(self._orm_query,
|
||||
alarm_definition_id=alarm['alarmDefinitionId'],
|
||||
alarm_state=alarm['newState'])
|
||||
with self._orm_engine.connect() as conn:
|
||||
log.debug('Orm query {%s}', str(self._orm_query))
|
||||
notifcations = conn.execute(self._orm_query,
|
||||
alarm_definition_id=alarm['alarmDefinitionId'],
|
||||
alarm_state=alarm['newState'])
|
||||
|
||||
for row in notifcations:
|
||||
yield (row[1].lower(), row[0], row[2])
|
||||
return [(row[1].lower(), row[0], row[2]) for row in notifcations]
|
||||
except DatabaseError as e:
|
||||
log.exception("Couldn't fetch alarms actions %s", e)
|
||||
raise exc.DatabaseException(e)
|
||||
|
|
|
@ -39,7 +39,7 @@ class TestAlarmProcessor(unittest.TestCase):
|
|||
msg_tuple = message_tuple(json_msg)
|
||||
return [partition, alarm_tuple(offset, msg_tuple)]
|
||||
|
||||
@mock.patch('MySQLdb.connect')
|
||||
@mock.patch('pymysql.connect')
|
||||
@mock.patch('monasca_notification.processors.alarm_processor.log')
|
||||
def _run_alarm_processor(self, alarm, sql_response, mock_log, mock_mysql):
|
||||
"""Runs a mocked alarm processor reading from queue while running, returns (queue_message, log_message)
|
||||
|
|
|
@ -16,21 +16,21 @@
|
|||
import mock
|
||||
import unittest
|
||||
|
||||
import MySQLdb
|
||||
import pymysql
|
||||
|
||||
from monasca_notification.common.repositories import exceptions as exc
|
||||
from monasca_notification.common.repositories.mysql import mysql_repo
|
||||
|
||||
|
||||
class TestMySqlRepo(unittest.TestCase):
|
||||
@mock.patch('monasca_notification.common.repositories.mysql.mysql_repo.MySQLdb')
|
||||
@mock.patch('monasca_notification.common.repositories.mysql.mysql_repo.pymysql')
|
||||
def testReconnect(self, mock_mysql):
|
||||
m = mock.MagicMock()
|
||||
|
||||
m.cursor.side_effect = MySQLdb.Error
|
||||
m.cursor.side_effect = pymysql.Error
|
||||
|
||||
mock_mysql.connect.return_value = m
|
||||
mock_mysql.Error = MySQLdb.Error
|
||||
mock_mysql.Error = pymysql.Error
|
||||
|
||||
config = {'mysql': {'host': 'foo',
|
||||
'user': 'bar',
|
||||
|
|
Loading…
Reference in New Issue