Merge "Fixing deleting cron-trigger trusts"
This commit is contained in:
commit
6d6b8e5b61
@ -38,14 +38,15 @@ class MistralPeriodicTasks(periodic_task.PeriodicTasks):
|
|||||||
for trigger in triggers.get_next_cron_triggers():
|
for trigger in triggers.get_next_cron_triggers():
|
||||||
LOG.debug("Processing cron trigger: %s" % trigger)
|
LOG.debug("Processing cron trigger: %s" % trigger)
|
||||||
|
|
||||||
# Setup admin context before schedule triggers.
|
|
||||||
ctx = security.create_context(trigger.trust_id, trigger.project_id)
|
|
||||||
|
|
||||||
auth_ctx.set_ctx(ctx)
|
|
||||||
|
|
||||||
LOG.debug("Cron trigger security context: %s" % ctx)
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
# Setup admin context before schedule triggers.
|
||||||
|
ctx = security.create_context(
|
||||||
|
trigger.trust_id, trigger.project_id
|
||||||
|
)
|
||||||
|
|
||||||
|
auth_ctx.set_ctx(ctx)
|
||||||
|
LOG.debug("Cron trigger security context: %s" % ctx)
|
||||||
|
|
||||||
# Try to advance the cron trigger next_execution_time and
|
# Try to advance the cron trigger next_execution_time and
|
||||||
# remaining_executions if relevant.
|
# remaining_executions if relevant.
|
||||||
modified = advance_cron_trigger(trigger)
|
modified = advance_cron_trigger(trigger)
|
||||||
|
@ -85,7 +85,15 @@ def delete_trust(trust_id):
|
|||||||
if not trust_id:
|
if not trust_id:
|
||||||
return
|
return
|
||||||
|
|
||||||
keystone_client = keystone.client_for_trusts(trust_id)
|
ctx = auth_ctx.ctx()
|
||||||
|
|
||||||
|
# If this trust is already in the context then it means that
|
||||||
|
# context already has trust scoped token from exactly this trust_id.
|
||||||
|
# So we don't need request the token from the trust one more time.
|
||||||
|
if ctx.is_trust_scoped and ctx.trust_id == trust_id:
|
||||||
|
keystone_client = keystone.client()
|
||||||
|
else:
|
||||||
|
keystone_client = keystone.client_for_trusts(trust_id)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
keystone_client.trusts.delete(trust_id)
|
keystone_client.trusts.delete(trust_id)
|
||||||
|
@ -138,8 +138,12 @@ def delete_cron_trigger(name, trust_id=None):
|
|||||||
trigger = db_api.get_cron_trigger(name)
|
trigger = db_api.get_cron_trigger(name)
|
||||||
trust_id = trigger.trust_id
|
trust_id = trigger.trust_id
|
||||||
|
|
||||||
security.delete_trust(trust_id)
|
modified_count = db_api.delete_cron_trigger(name)
|
||||||
return db_api.delete_cron_trigger(name)
|
if modified_count:
|
||||||
|
# Delete trust only together with deleting trigger.
|
||||||
|
security.delete_trust(trust_id)
|
||||||
|
|
||||||
|
return modified_count
|
||||||
|
|
||||||
|
|
||||||
def create_event_trigger(name, exchange, topic, event, workflow_id,
|
def create_event_trigger(name, exchange, topic, event, workflow_id,
|
||||||
|
@ -60,7 +60,7 @@ TRIGGER_DB.update(trigger_values)
|
|||||||
MOCK_WF = mock.MagicMock(return_value=WF)
|
MOCK_WF = mock.MagicMock(return_value=WF)
|
||||||
MOCK_TRIGGER = mock.MagicMock(return_value=TRIGGER_DB)
|
MOCK_TRIGGER = mock.MagicMock(return_value=TRIGGER_DB)
|
||||||
MOCK_TRIGGERS = mock.MagicMock(return_value=[TRIGGER_DB])
|
MOCK_TRIGGERS = mock.MagicMock(return_value=[TRIGGER_DB])
|
||||||
MOCK_DELETE = mock.MagicMock(return_value=None)
|
MOCK_DELETE = mock.MagicMock(return_value=1)
|
||||||
MOCK_EMPTY = mock.MagicMock(return_value=[])
|
MOCK_EMPTY = mock.MagicMock(return_value=[])
|
||||||
MOCK_NOT_FOUND = mock.MagicMock(side_effect=exc.DBEntityNotFoundError())
|
MOCK_NOT_FOUND = mock.MagicMock(side_effect=exc.DBEntityNotFoundError())
|
||||||
MOCK_DUPLICATE = mock.MagicMock(side_effect=exc.DBDuplicateEntryError())
|
MOCK_DUPLICATE = mock.MagicMock(side_effect=exc.DBDuplicateEntryError())
|
||||||
|
@ -227,14 +227,15 @@ class TriggerServiceV2Test(base.DbTestCase):
|
|||||||
|
|
||||||
@mock.patch.object(security, 'create_trust',
|
@mock.patch.object(security, 'create_trust',
|
||||||
type('trust', (object,), {'id': 'my_trust_id'}))
|
type('trust', (object,), {'id': 'my_trust_id'}))
|
||||||
@mock.patch.object(security, 'create_context', mock.Mock())
|
@mock.patch.object(security, 'create_context')
|
||||||
@mock.patch.object(rpc.EngineClient, 'start_workflow', mock.Mock())
|
@mock.patch.object(rpc.EngineClient, 'start_workflow', mock.Mock())
|
||||||
@mock.patch(
|
@mock.patch(
|
||||||
'mistral.services.periodic.advance_cron_trigger',
|
'mistral.services.periodic.advance_cron_trigger',
|
||||||
mock.MagicMock(side_effect=new_advance_cron_trigger)
|
mock.MagicMock(side_effect=new_advance_cron_trigger)
|
||||||
)
|
)
|
||||||
@mock.patch.object(security, 'delete_trust')
|
@mock.patch.object(security, 'delete_trust')
|
||||||
def test_create_delete_trust_in_trigger(self, delete_trust):
|
def test_create_delete_trust_in_trigger(self, create_ctx, delete_trust):
|
||||||
|
create_ctx.return_value = self.ctx
|
||||||
cfg.CONF.set_default('auth_enable', True, group='pecan')
|
cfg.CONF.set_default('auth_enable', True, group='pecan')
|
||||||
trigger_thread = periodic.setup()
|
trigger_thread = periodic.setup()
|
||||||
self.addCleanup(trigger_thread.stop)
|
self.addCleanup(trigger_thread.stop)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user