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():
|
||||
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:
|
||||
# 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
|
||||
# remaining_executions if relevant.
|
||||
modified = advance_cron_trigger(trigger)
|
||||
|
@ -85,7 +85,15 @@ def delete_trust(trust_id):
|
||||
if not trust_id:
|
||||
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:
|
||||
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)
|
||||
trust_id = trigger.trust_id
|
||||
|
||||
security.delete_trust(trust_id)
|
||||
return db_api.delete_cron_trigger(name)
|
||||
modified_count = 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,
|
||||
|
@ -60,7 +60,7 @@ TRIGGER_DB.update(trigger_values)
|
||||
MOCK_WF = mock.MagicMock(return_value=WF)
|
||||
MOCK_TRIGGER = 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_NOT_FOUND = mock.MagicMock(side_effect=exc.DBEntityNotFoundError())
|
||||
MOCK_DUPLICATE = mock.MagicMock(side_effect=exc.DBDuplicateEntryError())
|
||||
|
@ -227,14 +227,15 @@ class TriggerServiceV2Test(base.DbTestCase):
|
||||
|
||||
@mock.patch.object(security, 'create_trust',
|
||||
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(
|
||||
'mistral.services.periodic.advance_cron_trigger',
|
||||
mock.MagicMock(side_effect=new_advance_cron_trigger)
|
||||
)
|
||||
@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')
|
||||
trigger_thread = periodic.setup()
|
||||
self.addCleanup(trigger_thread.stop)
|
||||
|
Loading…
x
Reference in New Issue
Block a user