Fix Hacking rule H302 (import only modules)
Change-Id: Id6407aac9e5a4bdbd730576433032d43dc89f934
This commit is contained in:
parent
787c48aef0
commit
976ef6c702
|
@ -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
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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')
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
|
|
@ -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()]
|
||||
|
||||
|
|
Loading…
Reference in New Issue