Ejemplo n.º 1
0
    def put(self, id, event_trigger):
        """Updates an existing event trigger.

        The exchange, topic and event can not be updated. The right way to
        change them is to delete the event trigger first, then create a new
        event trigger with new params.
        """
        acl.enforce('event_trigger:update', auth_ctx.ctx())

        values = event_trigger.to_dict()

        for field in UPDATE_NOT_ALLOWED:
            if values.get(field, None):
                raise exc.EventTriggerException(
                    "Can not update fields %s of event trigger." %
                    UPDATE_NOT_ALLOWED
                )

        LOG.info('Update event trigger: [id=%s, values=%s]', id, values)

        with db_api.transaction():
            db_api.ensure_event_trigger_exists(id)

            db_model = triggers.update_event_trigger(id, values)

        return resources.EventTrigger.from_dict(db_model.to_dict())
Ejemplo n.º 2
0
    def put(self, id, event_trigger):
        """Updates an existing event trigger.

        The exchange, topic and event can not be updated. The right way to
        change them is to delete the event trigger first, then create a new
        event trigger with new params.
        """
        acl.enforce('event_triggers:update', auth_ctx.ctx())

        values = event_trigger.to_dict()

        for field in UPDATE_NOT_ALLOWED:
            if values.get(field):
                raise exc.EventTriggerException(
                    "Can not update fields %s of event trigger." %
                    UPDATE_NOT_ALLOWED)

        LOG.debug('Update event trigger: [id=%s, values=%s]', id, values)

        @rest_utils.rest_retry_on_db_error
        def _update_event_trigger():
            with db_api.transaction():
                # ensure that event trigger exists
                db_api.get_event_trigger(id)

                return triggers.update_event_trigger(id, values)

        db_model = _update_event_trigger()

        return resources.EventTrigger.from_db_model(db_model)
Ejemplo n.º 3
0
    def post(self, event_trigger):
        """Creates a new event trigger."""
        acl.enforce('event_trigger:create', auth_ctx.ctx())

        values = event_trigger.to_dict()
        input_keys = [k for k in values if values[k]]

        if CREATE_MANDATORY - set(input_keys):
            raise exc.EventTriggerException(
                "Params %s must be provided for creating event trigger." %
                CREATE_MANDATORY
            )

        LOG.info('Create event trigger: %s', values)

        db_model = triggers.create_event_trigger(
            values.get('name', ''),
            values.get('exchange'),
            values.get('topic'),
            values.get('event'),
            values.get('workflow_id'),
            workflow_input=values.get('workflow_input'),
            workflow_params=values.get('workflow_params'),
        )

        return resources.EventTrigger.from_dict(db_model.to_dict())
Ejemplo n.º 4
0
    def post(self, event_trigger):
        """Creates a new event trigger."""
        acl.enforce('event_triggers:create', auth_ctx.ctx())

        values = event_trigger.to_dict()
        input_keys = [k for k in values if values[k]]

        if CREATE_MANDATORY - set(input_keys):
            raise exc.EventTriggerException(
                "Params %s must be provided for creating event trigger." %
                CREATE_MANDATORY)

        if values.get('scope') == 'public':
            acl.enforce('event_triggers:create:public', auth_ctx.ctx())

        LOG.debug('Create event trigger: %s', values)

        db_model = rest_utils.rest_retry_on_db_error(
            triggers.create_event_trigger)(
                name=values.get('name', ''),
                exchange=values.get('exchange'),
                topic=values.get('topic'),
                event=values.get('event'),
                workflow_id=values.get('workflow_id'),
                scope=values.get('scope'),
                workflow_input=values.get('workflow_input'),
                workflow_params=values.get('workflow_params'),
            )

        return resources.EventTrigger.from_db_model(db_model)