Example #1
0
    def create(self, req, body):
        """Creates a new trigger."""

        LOG.debug('Create trigger start')

        LOG.debug('Create a trigger, request body: %s', body)

        context = req.environ['karbor.context']
        context.can(trigger_policy.CREATE_POLICY)
        trigger_info = body['trigger_info']

        trigger_name = trigger_info.get("name", None)
        trigger_type = trigger_info.get("type", None)
        trigger_property = trigger_info.get("properties", None)

        trigger_property.setdefault('start_time',
                                    datetime.utcnow().replace(microsecond=0))
        trigger_definition = {
            'id': uuidutils.generate_uuid(),
            'name': trigger_name,
            'project_id': context.project_id,
            'type': trigger_type,
            'properties': trigger_property,
        }
        try:
            trigger = objects.Trigger(context=context, **trigger_definition)
            self.operationengine_api.verify_trigger(context, trigger)
            self.operationengine_api.create_trigger(context, trigger)
            trigger.create()
        except exception.Invalid as ex:
            raise exc.HTTPBadRequest(explanation=ex.msg)
        except Exception as ex:
            self._raise_unknown_exception(ex)

        return self._view_builder.detail(req, trigger)
Example #2
0
 def _create_trigger(self):
     trigger_info = {
         'name': 'daily',
         'project_id': '123',
         'type': 'time',
         'properties': {}
     }
     trigger = objects.Trigger(self.context, **trigger_info)
     trigger.create()
     return trigger
Example #3
0
 def _create_one_trigger(self):
     trigger_info = {
         'project_id': "123",
         "name": "123",
         "type": "time",
         "properties": {
             "format": "crontab",
             "pattern": "* * * * *"
         },
     }
     trigger = objects.Trigger(self.ctxt, **trigger_info)
     trigger.create()
     return trigger
Example #4
0
    def create(self, req, body):
        """Creates a new trigger."""

        LOG.debug('Create trigger start')

        if not self.is_valid_body(body, 'trigger_info'):
            raise exc.HTTPUnprocessableEntity()
        LOG.debug('Create a trigger, request body: %s', body)

        context = req.environ['karbor.context']
        context.can(trigger_policy.CREATE_POLICY)
        trigger_info = body['trigger_info']

        trigger_name = trigger_info.get("name", None)
        trigger_type = trigger_info.get("type", None)
        trigger_property = trigger_info.get("properties", None)
        if not trigger_name or not trigger_type or not trigger_property:
            msg = _("Trigger name or type or property is not provided.")
            raise exc.HTTPBadRequest(explanation=msg)
        self.validate_name_and_description(trigger_info)

        trigger_format = trigger_property.get('format', None)
        if trigger_format != CONF.time_format:
            msg = _("Trigger format(%s) is invalid.") % trigger_format
            raise exc.HTTPBadRequest(explanation=msg)
        trigger_pattern = trigger_property.get('pattern', None)
        if CONF.time_format == 'calendar':
            utils.validate_calendar_time_format(trigger_pattern)
        if CONF.time_format == 'crontab':
            utils.validate_crontab_time_format(trigger_pattern)

        trigger_property.setdefault('start_time',
                                    datetime.utcnow().replace(microsecond=0))
        trigger_definition = {
            'id': uuidutils.generate_uuid(),
            'name': trigger_name,
            'project_id': context.project_id,
            'type': trigger_type,
            'properties': trigger_property,
        }
        try:
            trigger = objects.Trigger(context=context, **trigger_definition)
            self.operationengine_api.create_trigger(context, trigger)
            trigger.create()
        except exception.Invalid as ex:
            raise exc.HTTPBadRequest(explanation=ex.msg)
        except Exception as ex:
            self._raise_unknown_exception(ex)

        return self._view_builder.detail(req, trigger)
Example #5
0
    def _from_db_object(context, op, db_op, expected_attrs=[]):
        special_fields = set(['operation_definition'] +
                             op.INSTANCE_OPTIONAL_JOINED_FIELDS)

        normal_fields = set(op.fields) - special_fields
        for name in normal_fields:
            op[name] = db_op.get(name)

        op_definition = db_op['operation_definition']
        if op_definition:
            op['operation_definition'] = jsonutils.loads(op_definition)

        if 'trigger' in expected_attrs:
            if db_op.get('trigger', None) is None:
                op.trigger = None
            else:
                if not op.obj_attr_is_set('trigger'):
                    op.trigger = objects.Trigger(context)
                op.trigger._from_db_object(context, op.trigger,
                                           db_op['trigger'])

        op._context = context
        op.obj_reset_changes()
        return op