Rename 'events' to 'triggers'

* "events" are renamed to "triggers"
 * triggers moved out of workflow section

Implements: blueprint mistral-rename-event-to-trigger

Change-Id: I5b76e9c063a3ce9eec5d485bb5db5e22ac7981d4
This commit is contained in:
Nikolay Mahotkin 2014-03-05 18:22:27 +04:00
parent 0884cd0ff0
commit 7e01958c95
14 changed files with 134 additions and 134 deletions

View File

@ -49,7 +49,7 @@ def setup_app(config=None):
db_api.setup_db()
engine.load_engine()
##TODO(akuznetsov) move this to event scheduling to separate process
##TODO(akuznetsov) move this to trigger scheduling to separate process
periodic.setup()
app = pecan.make_app(

View File

@ -42,6 +42,6 @@ class WorkbookDefinitionController(rest.RestController):
(workbook_name, text))
wb = db_api.workbook_definition_put(workbook_name, text)
scheduler.create_associated_events(wb)
scheduler.create_associated_triggers(wb)
return wb['definition']

View File

@ -156,19 +156,19 @@ def listeners_get(workbook_name):
return [{}]
# Events
# Triggers
def event_create(values):
return IMPL.event_create(values)
def trigger_create(values):
return IMPL.trigger_create(values)
def events_get(**kwargs):
return IMPL.events_get_all(**kwargs)
def triggers_get(**kwargs):
return IMPL.triggers_get_all(**kwargs)
def event_update(event_id, values):
return IMPL.event_update(event_id, values)
def trigger_update(trigger_id, values):
return IMPL.trigger_update(trigger_id, values)
def get_next_events(time):
return IMPL.get_next_events(time)
def get_next_triggers(time):
return IMPL.get_next_triggers(time)

View File

@ -41,7 +41,7 @@ def get_backend():
def setup_db():
try:
engine = db_session.get_engine(sqlite_fk=True)
m.Event.metadata.create_all(engine)
m.Trigger.metadata.create_all(engine)
except sa.exc.OperationalError as e:
LOG.exception("Database registration exception: %s", e)
return False
@ -51,7 +51,7 @@ def setup_db():
def drop_db():
try:
engine = db_session.get_engine(sqlite_fk=True)
m.Event.metadata.drop_all(engine)
m.Trigger.metadata.drop_all(engine)
except Exception as e:
LOG.exception("Database shutdown exception: %s", e)
return False
@ -190,64 +190,64 @@ def model_query(model, session=None):
return session.query(model)
# Events.
# Triggers.
@to_dict
@session_aware()
def event_create(values, session=None):
event = m.Event()
event.update(values.copy())
def trigger_create(values, session=None):
trigger = m.Trigger()
trigger.update(values.copy())
try:
event.save(session)
trigger.save(session)
except db_exc.DBDuplicateEntry as e:
raise exc.DBDuplicateEntry("Duplicate entry for Event: %s"
raise exc.DBDuplicateEntry("Duplicate entry for Trigger: %s"
% e.columns)
return event
return trigger
@to_dict
@session_aware()
def event_update(event_id, values, session=None):
event = _event_get(event_id)
if event is None:
raise exc.DataAccessException("Event not found [event_id=%s]" %
event_id)
def trigger_update(trigger_id, values, session=None):
trigger = _trigger_get(trigger_id)
if trigger is None:
raise exc.DataAccessException("Trigger not found [trigger_id=%s]" %
trigger_id)
event.update(values.copy())
trigger.update(values.copy())
return event
return trigger
@to_dict
@session_aware()
def get_next_events(time, session=None):
query = model_query(m.Event)
query = query.filter(m.Event.next_execution_time < time)
query = query.order_by(m.Event.next_execution_time)
def get_next_triggers(time, session=None):
query = model_query(m.Trigger)
query = query.filter(m.Trigger.next_execution_time < time)
query = query.order_by(m.Trigger.next_execution_time)
return query.all()
@session_aware()
def _event_get(event_id, session=None):
query = model_query(m.Event)
return query.filter_by(id=event_id).first()
def _trigger_get(trigger_id, session=None):
query = model_query(m.Trigger)
return query.filter_by(id=trigger_id).first()
@to_dict
def event_get(event_id):
return _event_get(event_id)
def trigger_get(trigger_id):
return _trigger_get(trigger_id)
def _events_get_all(**kwargs):
query = model_query(m.Event)
def _triggers_get_all(**kwargs):
query = model_query(m.Trigger)
return query.filter_by(**kwargs).all()
@to_dict
def events_get_all(**kwargs):
return _events_get_all(**kwargs)
def triggers_get_all(**kwargs):
return _triggers_get_all(**kwargs)
# Workbooks.

View File

@ -33,10 +33,10 @@ def _id_column():
default=_generate_unicode_uuid)
class Event(mb.MistralBase):
"""Contains all info about event."""
class Trigger(mb.MistralBase):
"""Contains all info about trigger."""
__tablename__ = 'events'
__tablename__ = 'triggers'
__table_args__ = (
sa.UniqueConstraint('name'),

View File

@ -30,19 +30,19 @@ LOG = log.getLogger(__name__)
class MistralPeriodicTasks(periodic_task.PeriodicTasks):
@periodic_task.periodic_task(spacing=1, run_immediately=True)
def scheduler_events(self, ctx):
LOG.debug('Processing next Scheduler events.')
def scheduler_triggers(self, ctx):
LOG.debug('Processing next Scheduler triggers.')
for event in sched.get_next_events():
wb = db_api.workbook_get(event['workbook_name'])
for trigger in sched.get_next_triggers():
wb = db_api.workbook_get(trigger['workbook_name'])
context.set_ctx(trusts.create_context(wb))
try:
task = parser.get_workbook(
wb['definition']).get_event_task_name(event['name'])
wb['definition']).get_trigger_task_name(trigger['name'])
engine.start_workflow_execution(wb['name'], task)
finally:
sched.set_next_execution_time(event)
sched.set_next_execution_time(trigger)
context.set_ctx(None)

View File

@ -21,15 +21,15 @@ from mistral.db import api as db_api
from mistral import dsl_parser as parser
def get_next_events():
return db_api.get_next_events(datetime.now() + timedelta(0, 2))
def get_next_triggers():
return db_api.get_next_triggers(datetime.now() + timedelta(0, 2))
def set_next_execution_time(event):
base = event['next_execution_time']
cron = croniter(event['pattern'], base)
def set_next_execution_time(trigger):
base = trigger['next_execution_time']
cron = croniter(trigger['pattern'], base)
return db_api.event_update(event['id'], {
return db_api.trigger_update(trigger['id'], {
'next_execution_time': cron.get_next(datetime)
})
@ -38,11 +38,11 @@ def _get_next_execution_time(pattern, start_time):
return croniter(pattern, start_time).get_next(datetime)
def create_event(name, pattern, workbook_name, start_time=None):
def create_trigger(name, pattern, workbook_name, start_time=None):
if not start_time:
start_time = datetime.now()
return db_api.event_create({
return db_api.trigger_create({
"name": name,
"pattern": pattern,
"next_execution_time": _get_next_execution_time(pattern, start_time),
@ -50,14 +50,14 @@ def create_event(name, pattern, workbook_name, start_time=None):
})
def create_associated_events(db_workbook):
def create_associated_triggers(db_workbook):
if not db_workbook['definition']:
return
workbook = parser.get_workbook(db_workbook['definition'])
triggers = workbook.get_triggers()
# Prepare all events data in advance to make db transaction shorter.
# Prepare all triggers data in advance to make db transaction shorter.
db_triggers = []
for e in triggers:
@ -74,7 +74,7 @@ def create_associated_events(db_workbook):
try:
for e in db_triggers:
db_api.event_create(e)
db_api.trigger_create(e)
db_api.commit_tx()
finally:

View File

@ -27,6 +27,6 @@ def create_workbook(values):
workbook = trusts.create_trust(workbook)
##TODO(akuznetsov) filter fields
##TODO(akuznetsov) create events
##TODO(akuznetsov) create triggers
return workbook

View File

@ -67,9 +67,9 @@ class TestWorkbookDefinitionController(base.FunctionalTest):
self.assertEqual(resp.status_int, 200)
self.assertEqual(NEW_DEFINITION, resp.body)
# Check that associated events have been created in DB.
events = db_api.events_get(workbook_name='my_workbook')
# Check that associated triggers have been created in DB.
triggers = db_api.triggers_get(workbook_name='my_workbook')
self.assertEqual(events[0]['name'], 'create-vms')
self.assertEqual(events[0]['pattern'], '* * * * *')
self.assertEqual(events[0]['workbook_name'], 'my_workbook')
self.assertEqual(triggers[0]['name'], 'create-vms')
self.assertEqual(triggers[0]['pattern'], '* * * * *')
self.assertEqual(triggers[0]['workbook_name'], 'my_workbook')

View File

@ -49,9 +49,9 @@ Workflow:
action: MyRest:task4
parameters:
events:
task4:
type: periodic
tasks: task4
parameters:
cron-pattern: "*/1 * * * *"
triggers:
task4:
type: periodic
tasks: task4
parameters:
cron-pattern: "*/1 * * * *"

View File

@ -20,10 +20,10 @@ from mistral.db.sqlalchemy import api as db_api
from mistral.tests import base as test_base
EVENTS = [
TRIGGERS = [
{
'id': '1',
'name': 'test_event1',
'name': 'test_trigger1',
'workbook_name': 'wb_name',
'pattern': '* *',
'next_execution_time': timeutils.utcnow(),
@ -31,7 +31,7 @@ EVENTS = [
},
{
'id': '2',
'name': 'test_event2',
'name': 'test_trigger2',
'workbook_name': 'wb_name',
'pattern': '* * *',
'next_execution_time': timeutils.utcnow(),
@ -41,30 +41,30 @@ EVENTS = [
class EventTest(test_base.DbTestCase):
def test_event_create_and_get(self):
created = db_api.event_create(EVENTS[0])
def test_trigger_create_and_get(self):
created = db_api.trigger_create(TRIGGERS[0])
self.assertIsInstance(created, dict)
fetched = db_api.event_get(created['id'])
fetched = db_api.trigger_get(created['id'])
self.assertIsInstance(fetched, dict)
self.assertDictEqual(created, fetched)
def test_event_update(self):
created = db_api.event_create(EVENTS[0])
def test_trigger_update(self):
created = db_api.trigger_create(TRIGGERS[0])
self.assertIsInstance(created, dict)
updated = db_api.event_update(created['id'], {'pattern': '0 * *'})
updated = db_api.trigger_update(created['id'], {'pattern': '0 * *'})
self.assertIsInstance(updated, dict)
self.assertEqual('0 * *', updated['pattern'])
fetched = db_api.event_get(created['id'])
fetched = db_api.trigger_get(created['id'])
self.assertDictEqual(updated, fetched)
def test_event_list(self):
created0 = db_api.event_create(EVENTS[0])
created1 = db_api.event_create(EVENTS[1])
def test_trigger_list(self):
created0 = db_api.trigger_create(TRIGGERS[0])
created1 = db_api.trigger_create(TRIGGERS[1])
fetched = db_api.events_get_all()
fetched = db_api.triggers_get_all()
self.assertEqual(2, len(fetched))
self.assertDictEqual(created0, fetched[0])
@ -324,10 +324,10 @@ class TXTest(test_base.DbTestCase):
db_api.start_tx()
try:
created = db_api.event_create(EVENTS[0])
created = db_api.trigger_create(TRIGGERS[0])
self.assertIsInstance(created, dict)
fetched = db_api.event_get(created['id'])
fetched = db_api.trigger_get(created['id'])
self.assertIsInstance(fetched, dict)
self.assertDictEqual(created, fetched)
@ -339,7 +339,7 @@ class TXTest(test_base.DbTestCase):
self.assertFalse(self.is_db_session_open())
fetched = db_api.event_get(created['id'])
fetched = db_api.trigger_get(created['id'])
self.assertIsNone(fetched)
self.assertFalse(self.is_db_session_open())
@ -348,10 +348,10 @@ class TXTest(test_base.DbTestCase):
db_api.start_tx()
try:
created = db_api.event_create(EVENTS[0])
created = db_api.trigger_create(TRIGGERS[0])
self.assertIsInstance(created, dict)
fetched = db_api.event_get(created['id'])
fetched = db_api.trigger_get(created['id'])
self.assertIsInstance(fetched, dict)
self.assertDictEqual(created, fetched)
@ -363,7 +363,7 @@ class TXTest(test_base.DbTestCase):
self.assertFalse(self.is_db_session_open())
fetched = db_api.event_get(created['id'])
fetched = db_api.trigger_get(created['id'])
self.assertIsInstance(fetched, dict)
self.assertDictEqual(created, fetched)
@ -373,12 +373,12 @@ class TXTest(test_base.DbTestCase):
db_api.start_tx()
try:
created_event = db_api.event_create(EVENTS[0])
self.assertIsInstance(created_event, dict)
created_trigger = db_api.trigger_create(TRIGGERS[0])
self.assertIsInstance(created_trigger, dict)
fetched_event = db_api.event_get(created_event['id'])
self.assertIsInstance(fetched_event, dict)
self.assertDictEqual(created_event, fetched_event)
fetched_trigger = db_api.trigger_get(created_trigger['id'])
self.assertIsInstance(fetched_trigger, dict)
self.assertDictEqual(created_trigger, fetched_trigger)
created_workbook = db_api.workbook_create(WORKBOOKS[0])
self.assertIsInstance(created_workbook, dict)
@ -395,8 +395,8 @@ class TXTest(test_base.DbTestCase):
self.assertFalse(self.is_db_session_open())
fetched_event = db_api.event_get(created_event['id'])
self.assertIsNone(fetched_event)
fetched_trigger = db_api.trigger_get(created_trigger['id'])
self.assertIsNone(fetched_trigger)
fetched_workbook = db_api.workbook_get(created_workbook['name'])
self.assertIsNone(fetched_workbook)
@ -407,12 +407,12 @@ class TXTest(test_base.DbTestCase):
db_api.start_tx()
try:
created_event = db_api.event_create(EVENTS[0])
self.assertIsInstance(created_event, dict)
created_trigger = db_api.trigger_create(TRIGGERS[0])
self.assertIsInstance(created_trigger, dict)
fetched_event = db_api.event_get(created_event['id'])
self.assertIsInstance(fetched_event, dict)
self.assertDictEqual(created_event, fetched_event)
fetched_trigger = db_api.trigger_get(created_trigger['id'])
self.assertIsInstance(fetched_trigger, dict)
self.assertDictEqual(created_trigger, fetched_trigger)
created_workbook = db_api.workbook_create(WORKBOOKS[0])
self.assertIsInstance(created_workbook, dict)
@ -429,9 +429,9 @@ class TXTest(test_base.DbTestCase):
self.assertFalse(self.is_db_session_open())
fetched_event = db_api.event_get(created_event['id'])
self.assertIsInstance(fetched_event, dict)
self.assertDictEqual(created_event, fetched_event)
fetched_trigger = db_api.trigger_get(created_trigger['id'])
self.assertIsInstance(fetched_trigger, dict)
self.assertDictEqual(created_trigger, fetched_trigger)
fetched_workbook = db_api.workbook_get(created_workbook['name'])
self.assertIsInstance(fetched_workbook, dict)

View File

@ -22,23 +22,23 @@ from mistral import version
from mistral.services import scheduler
class EventsTest(base.DbTestCase):
class TriggersTest(base.DbTestCase):
def setUp(self):
super(EventsTest, self).setUp()
super(TriggersTest, self).setUp()
self.doc = open(pkg.resource_filename(
version.version_info.package,
"tests/resources/test_rest.yaml")).read()
def test_create_associated_events(self):
def test_create_associated_triggers(self):
workbook = {
'name': 'my_workbook',
'definition': self.doc
}
scheduler.create_associated_events(workbook)
scheduler.create_associated_triggers(workbook)
events = db_api.events_get(workbook_name='my_workbook')
triggers = db_api.triggers_get(workbook_name='my_workbook')
self.assertEqual(events[0]['name'], 'create-vms')
self.assertEqual(events[0]['pattern'], '* * * * *')
self.assertEqual(events[0]['workbook_name'], 'my_workbook')
self.assertEqual(triggers[0]['name'], 'create-vms')
self.assertEqual(triggers[0]['pattern'], '* * * * *')
self.assertEqual(triggers[0]['workbook_name'], 'my_workbook')

View File

@ -23,9 +23,9 @@ from mistral.services import scheduler as s
from mistral.tests import base as test_base
SAMPLE_EVENT = {
SAMPLE_TRIGGER = {
"id": "123",
"name": "test_event",
"name": "test_trigger",
"patter": "* *",
"next_execution_time": timeutils.utcnow(),
"workbook_name": "My workbook"
@ -37,25 +37,25 @@ class SchedulerTest(test_base.DbTestCase):
super(SchedulerTest, self).setUp()
self.wb_name = "My workbook"
def test_event_create_and_update(self):
def test_trigger_create_and_update(self):
base = datetime(2010, 8, 25)
next_event = datetime(2010, 8, 25, 0, 5)
event = s.create_event("test", "*/5 * * * *", self.wb_name, base)
self.assertEqual(event['next_execution_time'], next_event)
next_trigger = datetime(2010, 8, 25, 0, 5)
trigger = s.create_trigger("test", "*/5 * * * *", self.wb_name, base)
self.assertEqual(trigger['next_execution_time'], next_trigger)
event = s.set_next_execution_time(event)
next_event = datetime(2010, 8, 25, 0, 10)
self.assertEqual(event['next_execution_time'], next_event)
trigger = s.set_next_execution_time(trigger)
next_trigger = datetime(2010, 8, 25, 0, 10)
self.assertEqual(trigger['next_execution_time'], next_trigger)
def test_get_event_in_correct_orders(self):
def test_get_trigger_in_correct_orders(self):
base = datetime(2010, 8, 25)
s.create_event("test1", "*/5 * * * *", self.wb_name, base)
s.create_trigger("test1", "*/5 * * * *", self.wb_name, base)
base = datetime(2010, 8, 22)
s.create_event("test2", "*/5 * * * *", self.wb_name, base)
s.create_trigger("test2", "*/5 * * * *", self.wb_name, base)
base = datetime(2010, 9, 21)
s.create_event("test3", "*/5 * * * *", self.wb_name, base)
s.create_trigger("test3", "*/5 * * * *", self.wb_name, base)
base = datetime.now() + timedelta(0, 50)
s.create_event("test4", "*/5 * * * *", self.wb_name, base)
eventsName = [e['name'] for e in s.get_next_events()]
s.create_trigger("test4", "*/5 * * * *", self.wb_name, base)
triggersName = [e['name'] for e in s.get_next_triggers()]
self.assertEqual(eventsName, ["test2", "test1", "test3"])
self.assertEqual(triggersName, ["test2", "test1", "test3"])

View File

@ -51,6 +51,6 @@ class WorkbookSpec(base.BaseSpec):
def get_actions(self, service_name):
return self.services.get(service_name).actions
def get_event_task_name(self, event_name):
event = self._data["Workflow"]["events"].get(event_name)
return event.get('tasks') if event else ""
def get_trigger_task_name(self, trigger_name):
trigger = self._data["triggers"].get(trigger_name)
return trigger.get('tasks') if trigger else ""