Migrate from MysqlDB to pymysql

Change-Id: I61b7a35badaa4a3480a1c786152b07c17a99bf80
This commit is contained in:
Michal Zielonka 2015-10-06 08:56:11 +02:00 committed by Witold Bedyk
parent 51b0b28a05
commit 94f5bdbd62
5 changed files with 16 additions and 26 deletions

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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',

View File

@ -9,7 +9,7 @@ install_command = pip install -U {opts} {packages} --pre
whitelist_externals = find
deps = -r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt
MySQL-python
PyMySQL>=0.6.1
commands =
find . -type f -name "*.pyc" -delete
nosetests