Fix Hacking rule H302 (import only modules)

Change-Id: Id6407aac9e5a4bdbd730576433032d43dc89f934
This commit is contained in:
Angus Salkeld 2014-06-12 09:39:32 +10:00
parent 787c48aef0
commit 976ef6c702
10 changed files with 41 additions and 47 deletions

View File

@ -16,7 +16,7 @@
import json
import smtplib
from email.mime.text import MIMEText
from email.mime import text
import requests
@ -209,7 +209,7 @@ class SendEmailAction(base.Action):
self.smtp_server, self.body[:128]))
# TODO(dzimine): handle utf-8, http://stackoverflow.com/a/14506784
message = MIMEText(self.body)
message = text.MIMEText(self.body)
message['Subject'] = self.subject
message['From'] = self.sender
message['To'] = self.to

View File

@ -14,9 +14,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
from pecan import rest
from pecan import expose
from pecan import request
import pecan
from mistral.openstack.common import log as logging
from mistral.db import api as db_api
@ -27,9 +25,9 @@ from mistral.utils import rest_utils
LOG = logging.getLogger(__name__)
class WorkbookDefinitionController(rest.RestController):
class WorkbookDefinitionController(pecan.rest.RestController):
@rest_utils.wrap_pecan_controller_exception
@expose()
@pecan.expose()
def get(self, workbook_name):
"""Return the workbook definition."""
LOG.debug("Fetch workbook definition [workbook_name=%s]" %
@ -37,10 +35,10 @@ class WorkbookDefinitionController(rest.RestController):
return db_api.workbook_definition_get(workbook_name)
@rest_utils.wrap_pecan_controller_exception
@expose(content_type="text/plain")
@pecan.expose(content_type="text/plain")
def put(self, workbook_name):
"""Update the workbook's definition."""
text = request.text
text = pecan.request.text
LOG.debug("Update workbook definition [workbook_name=%s, text=%s]" %
(workbook_name, text))

View File

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
from pecan.hooks import PecanHook
from pecan import hooks
from mistral import engine
from mistral.openstack.common import log as logging
@ -21,7 +21,7 @@ from mistral.openstack.common import log as logging
LOG = logging.getLogger(__name__)
class EngineHook(PecanHook):
class EngineHook(hooks.PecanHook):
def __init__(self, transport=None):
self.transport = engine.get_transport(transport)

View File

@ -14,7 +14,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
from pecan.hooks import PecanHook
from pecan import hooks
import eventlet
@ -124,7 +124,7 @@ def context_from_headers(headers):
)
class ContextHook(PecanHook):
class ContextHook(hooks.PecanHook):
def before(self, state):
request_ctx = context_from_headers(state.request.headers).to_dict()
set_ctx(request_ctx)

View File

@ -15,14 +15,14 @@
# limitations under the License.
from croniter import croniter
from datetime import datetime
from datetime import timedelta
import datetime
from mistral.db import api as db_api
from mistral import dsl_parser as parser
def get_next_triggers():
return db_api.get_next_triggers(datetime.now() + timedelta(0, 2))
return db_api.get_next_triggers(datetime.datetime.now() +
datetime.timedelta(0, 2))
def set_next_execution_time(trigger):
@ -30,17 +30,17 @@ def set_next_execution_time(trigger):
cron = croniter(trigger['pattern'], base)
return db_api.trigger_update(trigger['id'], {
'next_execution_time': cron.get_next(datetime)
'next_execution_time': cron.get_next(datetime.datetime)
})
def _get_next_execution_time(pattern, start_time):
return croniter(pattern, start_time).get_next(datetime)
return croniter(pattern, start_time).get_next(datetime.datetime)
def create_trigger(name, pattern, workbook_name, start_time=None):
if not start_time:
start_time = datetime.now()
start_time = datetime.datetime.now()
return db_api.trigger_create({
"name": name,
@ -62,7 +62,7 @@ def create_associated_triggers(db_workbook):
for e in triggers:
pattern = e['parameters']['cron-pattern']
next_time = _get_next_execution_time(pattern, datetime.now())
next_time = _get_next_execution_time(pattern, datetime.datetime.now())
db_triggers.append({
"name": e['name'],
"pattern": pattern,

View File

@ -16,7 +16,7 @@
import pecan
import pecan.testing
from webtest.app import AppError
from webtest import app as webtest_app
from oslo.config import cfg
@ -56,7 +56,7 @@ class FunctionalTest(base.DbTestCase):
def assertNotFound(self, url):
try:
self.app.get(url, headers={'Accept': 'application/json'})
except AppError as error:
except webtest_app.AppError as error:
self.assertIn('Bad response: 404 Not Found', str(error))
return
self.fail('Expected 404 Not found but got OK')
@ -64,7 +64,7 @@ class FunctionalTest(base.DbTestCase):
def assertUnauthorized(self, url):
try:
self.app.get(url, headers={'Accept': 'application/json'})
except AppError as error:
except webtest_app.AppError as error:
self.assertIn('Bad response: 401 Unauthorized', str(error))
return
self.fail('Expected 401 Unauthorized but got OK')

View File

@ -18,7 +18,7 @@ import mock
import json
from mistral import exceptions as ex
from webtest.app import AppError
from webtest import app as webtest_app
from mistral.tests.api import base
from mistral.db import api as db_api
from mistral import engine
@ -130,7 +130,7 @@ class TestExecutionsController(base.FunctionalTest):
@mock.patch.object(engine.EngineClient, 'start_workflow_execution',
mock.MagicMock(side_effect=ex.MistralException))
def test_post_throws_exception(self):
context = self.assertRaises(AppError, self.app.post_json,
context = self.assertRaises(webtest_app.AppError, self.app.post_json,
'/v1/workbooks/my_workbook/executions',
EXECS[0])
self.assertIn('Bad response: 400', context.message)

View File

@ -14,12 +14,9 @@
# See the License for the specific language governing permissions and
# limitations under the License.
from email import parser
import mock
import testtools
from mock import call
from mock import patch
from email.parser import Parser
from mistral.actions import std_actions as std
from mistral import exceptions as exc
@ -81,7 +78,7 @@ class SendEmailActionTest(base.BaseTest):
action.run()
@patch('smtplib.SMTP')
@mock.patch('smtplib.SMTP')
def test_send_email(self, smtp):
action = std.SendEmailAction(self.params, self.settings)
@ -97,14 +94,14 @@ class SendEmailActionTest(base.BaseTest):
self.assertEqual(
sendmail.call_args[1]['to_addrs'], self.to_addrs)
message = Parser().parsestr(sendmail.call_args[1]['msg'])
message = parser.Parser().parsestr(sendmail.call_args[1]['msg'])
self.assertEqual(self.settings['from'], message['from'])
self.assertEqual(self.to_addrs, message['to'])
self.assertEqual(self.params['subject'], message['subject'])
self.assertEqual(self.params['body'], message.get_payload())
@patch('smtplib.SMTP')
@mock.patch('smtplib.SMTP')
def test_with_password(self, smtp):
self.settings['password'] = "secret"
@ -113,13 +110,14 @@ class SendEmailActionTest(base.BaseTest):
action.run()
smtpmock = smtp.return_value
calls = [call.ehlo(), call.starttls(), call.ehlo(),
call.login(self.settings['from'], self.settings['password'])]
calls = [mock.call.ehlo(), mock.call.starttls(), mock.call.ehlo(),
mock.call.login(self.settings['from'],
self.settings['password'])]
smtpmock.assert_has_calls(calls)
self.assertTrue(smtpmock.sendmail.called, "should call sendmail")
@patch('mistral.actions.std_actions.LOG')
@mock.patch('mistral.actions.std_actions.LOG')
def test_exception(self, log):
self.params['smtp_server'] = "wrong host"

View File

@ -14,11 +14,9 @@
# See the License for the specific language governing permissions and
# limitations under the License.
from datetime import datetime
from datetime import timedelta
import datetime
from mistral.openstack.common import timeutils
from mistral.services import scheduler as s
from mistral.tests import base
@ -38,23 +36,23 @@ class SchedulerTest(base.DbTestCase):
self.wb_name = "My workbook"
def test_trigger_create_and_update(self):
base = datetime(2010, 8, 25)
next_trigger = datetime(2010, 8, 25, 0, 5)
base = datetime.datetime(2010, 8, 25)
next_trigger = datetime.datetime(2010, 8, 25, 0, 5)
trigger = s.create_trigger("test", "*/5 * * * *", self.wb_name, base)
self.assertEqual(trigger['next_execution_time'], next_trigger)
trigger = s.set_next_execution_time(trigger)
next_trigger = datetime(2010, 8, 25, 0, 10)
next_trigger = datetime.datetime(2010, 8, 25, 0, 10)
self.assertEqual(trigger['next_execution_time'], next_trigger)
def test_get_trigger_in_correct_orders(self):
base = datetime(2010, 8, 25)
base = datetime.datetime(2010, 8, 25)
s.create_trigger("test1", "*/5 * * * *", self.wb_name, base)
base = datetime(2010, 8, 22)
base = datetime.datetime(2010, 8, 22)
s.create_trigger("test2", "*/5 * * * *", self.wb_name, base)
base = datetime(2010, 9, 21)
base = datetime.datetime(2010, 9, 21)
s.create_trigger("test3", "*/5 * * * *", self.wb_name, base)
base = datetime.now() + timedelta(0, 50)
base = datetime.datetime.now() + datetime.timedelta(0, 50)
s.create_trigger("test4", "*/5 * * * *", self.wb_name, base)
triggersName = [e['name'] for e in s.get_next_triggers()]

View File

@ -39,6 +39,6 @@ commands = bash tools/lintstack.sh
[flake8]
show-source = true
ignore = H302,H306,H803,H305,H405,H307,H904,H236
ignore = H306,H803,H305,H405,H307,H904,H236
builtins = _
exclude=.venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,tools